ConfigureSupport Method - Intergraph Smart 3D - Reference Data

Intergraph Smart 3D Hangers and Supports Reference Data

Language
English
Product
Intergraph Smart 3D
Subproduct
Hangers and Supports
Search by Category
Reference Data
Smart 3D Version
12.1 (2019)

The ConfigureSupport method of the CustomSupportDefinition class provides the joints required to assemble the support parts. The method is defined as:

public override void ConfigureSupport(Collection<SupportComponent> oSupCompColl)

{ }

The method should add a collection of joints using JointHelper. The following example code shows a sample implementation of this method for the hanger support assembly shown in Figure 1.

public override void ConfigureSupport(Collection<SupportComponent> oSupCompColl)

{

Dictionary<string, SupportComponent> componentDictionary = SupportHelper.SupportComponentDictionary;

JointHelper.CreateRigidJoint(PIPECLAMP, "Route", "-1", "Route", Plane.XY, Plane.XY, Axis.X, Axis.X, 0, 0, 0);

JointHelper.CreateRevoluteJoint(BOTEYENUT, "Eye", PIPECLAMP, "Wing", Axis.Y, Axis.Y);

JointHelper.CreateRigidJoint(BOTROD, "RodEnd1", BOTEYENUT, "RodEnd", Plane.XY, Plane.XY, Axis.X, Axis.X, 0, 0, 0);

JointHelper.CreateGlobalAxesAlignedJoint(BOTROD, "RodEnd1", Axis.Z, Axis.Z);

JointHelper.CreatePrismaticJoint(BOTROD, "RodEnd1", BOTROD, "RodEnd2", Plane.YZ, Plane.YZ, Axis.Z, Axis.NegativeZ,0,0);

if (includeTurnbuckle)

{

JointHelper.CreateRigidJoint(TURNBUCKLE, "RodEnd1", BOTROD, "RodEnd2", Plane.XY, Plane.XY, Axis.X, Axis.X, 0, 0, 0);

JointHelper.CreateRigidJoint(TOPROD, "RodEnd1", TURNBUCKLE, "RodEnd2", Plane.XY, Plane.XY, Axis.X, Axis.X, 0, 0, 0);

if (Configuration == 1)

JointHelper.CreateRigidJoint(TOPEYENUT, "RodEnd", TOPROD, "RodEnd2", Plane.XY, Plane.XY, Axis.X, Axis.X, 0, 0, 0);

else

JointHelper.CreateRigidJoint(TOPEYENUT, "RodEnd", TOPROD, "RodEnd2", Plane.XY, Plane.XY, Axis.X, Axis.NegativeY, 0, 0, 0);

componentDictionary[TOPROD].SetPropertyValue(0.324, "IJOAHgrOccLength", "Length");

}

else

{

if (Configuration == 1)

JointHelper.CreateRigidJoint(TOPEYENUT, "RodEnd", BOTROD, "RodEnd2", Plane.XY, Plane.XY, Axis.X, Axis.X, 0, 0, 0);

else

JointHelper.CreateRigidJoint(TOPEYENUT, "RodEnd", BOTROD, "RodEnd2", Plane.XY, Plane.XY, Axis.X, Axis.NegativeY, 0, 0, 0);

}

JointHelper.CreateRevoluteJoint(WBA, "Pin", TOPEYENUT, "Eye", Axis.Y, Axis.Y);

JointHelper.CreatePlanarJoint(WBA, "Structure", "-1", "Structure", Plane.XY, Plane.XY, 0);

}

A collection of SupportComponent is passed as input to the method. The part occurrences (collection of SupportComponent) in this collection are listed in the same order as the catalog parts returned by the Parts() method. Therefore, the first part occurrence corresponds to the first catalog part, the second part occurrence corresponds to the second catalog part, and so on. The part occurrences are provided to allow the CSD an opportunity to set inputs on the part occurrences' associated symbol. You can retrieve the Collection of SupportComponent using the Dictionary of SupportComponent. In the above mentioned example, the Length input is set on the rod using the component dictionary.

Add the joints using JointHelper class. Methods to create each joint type using JointHelper are given below:

public void CreateAngularRigidJoint (

string partKeyToBeRotated, string sPortNameToBeRotated, string partKey_Fixed, string sPortName_Fixed,

Vector XYZOffset, Vector XYZRotate)

public void CreateCylindricalJoint( string partKeyA, string sPortNameA, string partKeyB, string sPortNameB,

Axis eAxisOfPartA, Axis eAxisOfPartB, double dAxisOffset)

public void CreateGlobalAxisAlignedJoint(string partKey, string sPortName, Axis eAxis, Axis eGlobalAxisToAlignTo)

public void CreatePlanarJoint(string partKeyA, string sPortNameA, string partKeyB, string sPortNameB,

Plane ePlaneOfPartA, Plane ePlaneOfPartB, double dPlaneOffset)

public void CreatePlanarSlotJoint(string partKeyA, string sPortNameA, string partKeyB, string sPortNameB,

Plane ePlaneOfPartA, Plane ePlaneOfPartB, Axis eAxisInPlaneA, double dPlaneOffset, double dAxisOffset)

public void CreatePointOnAxisJoint(string partKeyA, string sPortNameA, string partKeyB, string sPortNameB, Axis eAxisOfPartA)

public void CreatePointOnPlaneJoint(string partKeyA, string sPortNameA, string partKeyB, string sPortNameB,

Plane ePlaneOfPartA)

public void CreatePrismaticJoint(string partKeyA, string sPortNameA, string partKeyB, string sPortNameB,

Plane ePlaneOfPartA, Plane ePlaneOfPartB, Axis eAxisInPlaneA, Axis eAxisInPlaneB,

double dPlaneOffset, double dAxisOffset)

public void CreateRevoluteJoint(string partKeyA, string sPortNameA, string partKeyB, string sPortNameB,

Axis eAxisOfPartA, Axis eAxisOfPartB)

public void CreateRigidJoint(string partKeyA, string sPortNameA, string partKeyB, string sPortNameB,

Plane ePlaneOfPartA, Plane ePlaneOfPartB, Axis eAxisInPlaneA, Axis eAxisInPlaneB,

double dPlaneOffset, double dAxisOffset, double dOriginOffset)

public void CreateSphericalJoint(string partKeyA, string sPortNameA, string partKeyB, string sPortNameB)

public void CreateTranslationalJoint(string partKeyA, string sPortNameA, string partKeyB, string sPortNameB,

Plane ePlaneOfPartA, Plane ePlaneOfPartB, Axis eAxisInPlaneA, Axis eAxisInPlaneB,

double dPlaneOffset)

These methods create Joint objects. The joint object retains sufficient information to define the constraints implementing any joint. Member data for the Joint object includes the following:

Part Key (2): Specifies the symbols indicated as indices (Unique string) in the catalog part list and are provided as output to Parts() method. These are the partKeyA and partKeyB arguments within the CreateXXXJoint () method prototypes. The reference port index is -1.

Port Names (2): Specifies the output of the symbol to use when constructing the joint. These are the PortNameA and PortNameB arguments within the CreateXXXJoint () method prototypes.

Plane(2): Specifies the joint type required to define a set of port geometries. For example, the prismatic joint requires a plane and axis to be specified for each of the two participating ports. Since the geometry associated with each port is limited (3 planes and 3 axes), the plane data has to be specified in the Plane argument of CreateXXXJoint () method.

Axis(2): Specifies the joint type required to define a set of port geometries. For example, the prismatic joint requires a plane and axis be specified for each of the two participating ports. Because the geometry associated with each port is limited (3 planes and 3 axes), the Axis data has to be specified in Axis argument of CreateXXXJoint () method.

Offsets (3): Defines the offset for the joint types that permit the specification of offsets between their defining geometries. For the most complex case, three offsets are allowed. Offsets are represented using three doubles. These are the PlaneOffset, AxisOffset and OriginOffset arguments within the CreateXXXJoint () method prototypes.