MDL definitions

MDL models can be constructed using the following definitions. The numbers and partcodes in a definition must be in the correct position, but the order of sub-definitions within a definition is free as they are identified by their keyword.

In each definition description, the definitions are presented using either example values or descriptive strings as arguments, with the understanding that the numbers and codes shown will be replaced by other values. In particular, note that some definitions require integer (whole) numbers while others can use decimal fractions. When the argument to a definition is another definition (which in turn has its own arguments), only the definition name is shown to make the definitions easier to read.

ABRV ADT AIRD AL AMA AMI
AS GDL AT ATTR AU AV BRANCH
C_ACCEPT_BY C_ACCEPT_TI C_OLD_ROUTE C_ROUTE_STA C_ROUTED_BY C_ROUTED_TI
CABLE CBLLEN CBLSTAT CBTP CNPART CNPFLAGS
CNPTYPE CSLEN CT CTPF CTPT CUT1
D DEVC ELEN EPDL EPENLEN FL
GROUP GRT H H2 HULLNORFH HVAC
HVDI HVDT HVMC HVSP HVST ISN
MIG MT NATTR NAT NAV NI
NO NP NS P PC PIPE
PR R RORG SD SN SPACE
ST STDC STEL STRC SYSCOL SYSID
SYSTEM TAGS W W2    

ABRV(mdlobjs,g27)

Defines an abbreviation for a name. The second name can be used as an abbreviation for the first name. Abbreviations are used to give groups and attributes short temporary names. This way group membership declarations and attribute value assignments take less space and name lookups are faster.

ADT(1)

Defines the type of an air duct component:

  • 0 - straight duct
  • 1 - curve
  • 2 - transition piece
  • 3 - half curve

AIRD(plate, ADT(), D(), ST(), MT(), H(), W(), RD(),

Obsolete. Used in older CADMATIC versions to define an air duct part. Newer CADMATIC versions use HVAC.

AL(8)

Defines the maximum length of values for a string type attribute.

AMA(999.0)

Defines the maximum value for values for a number type attribute. This definition accepts decimal fractions.

AMI(0.0)

Defines the minimum value for values for a number type attribute. This definition accepts decimal fractions.

AS(id_of_other_object, order, type, value)

Defines an association between the owner of a definition and another object. 'id_of_other_object' identifies the object in the association. 'order' is 1 if the owner of AS is the first object in the associated object pair. The type and value of the association are also given.

AT(2)

Defines the type of values for an attribute:

  • 0 - flag
  • 1 - number
  • 2 - string

name = ATTR(ab, ST(), MT(), AT(), AU )

name = ATTR(ab, ST(), MT(), AT(), AU(), AL(), AMI(), AMA)

Defines an attribute into the computer model. Attribute definition must precede any attribute value assignments involving this attribute.

The assigned name must be given. The first argument contains the abbreviation for the attribute.

The ST and MT definitions define object status and modification time.

The AT definition specifies the type of values that will be assigned to the attribute.

The AU definition specifies whether the attribute values need to be unique or not.

The AL, AMI, and AMA definitions are optional; their presence depends on the value of the AT definition.

AU(0)

Defines whether attribute values must be unique:

  • 0 - values need not be unique
  • 1 - values must be unique

AV(abb)

AV(abb,123.456)

AV(abb,SOMETHING)

Defines an attribute assignment. "abb" contains the abbreviation for the name of the attribute. The second argument is omitted for flag type attributes, but must be present for numeric attributes or string type attributes.

BRANCH(objid, x, y, z [connection_sub_type])

Definition that UndoManager uses in its MDL files to create branch anchors to pipes and HVAC parts.

The first value is object identification (hex number without 0x). Next three numbers specify point where the branch anchor should be located. An optional connection subtype for the connection point can be given.

C_ACCEPT_BY

The ID of the user who has accepted this cable.

C_ACCEPT_TI

When this cable was accepted.

C_OLD_ROUTE

Old route of the cable, list of node locations.

C_ROUTE_STA

Route status of the cable.

  • 0 OK

  • 1 Changed

  • 2 Not routed

  • 3 Broken

  • 4 Directly routed, OK

  • 5 Directly routed, length changed

  • 6 Rerouted

  • 255 Not defined

C_ROUTED_BY

The ID of the user who has accepted this cable.

C_ROUTED_TI

When this cable was routed.

CABLE(partid, route_signature, ST(), CBLLEN(), CBLSTAT(), P(), ELEN(), EPENLEN(), P(), ELEN(), EPENLEN())

Defines a cable into model.

The first argument defines the part id of the cable material.

The second argument must be an integer value that defines route signature calculated from the cable router points. Should be 0 if cable does not have route defined.

First P() argument defines cable head location and second defines cable tail location.

CBLLEN

Value of definition is one floating point number that gives cable total length in millimeters.

CBLSTAT

Value of definition is one integer number that defines the following things:

  • Bit 1 Cable status. Not approved / approved. Approved if bit is set.
  • Bits [2,4] Unused, must be set to 0.
  • Bits [5,9] Interference class of the cable.
  • Bit 10 Set if cable head is associated to equipment.
  • Bit 11 Set if cable tail is associated to equipment.

CBTP(partid,SD(),ST(),CTPT(),CTPF(),RORG()[,CUT1()],MT(),D(),D(),NO(),MIG(),AV(),AS())

Defines a cable tray part into model.

Orientation is specified by two unit vectors that give direction of local-x and local-y.

Origin point for the instantiated model is located at the connection point NO(1,...).

CNPART

Object type is Cable Network Part.

CNPFLAGS

Value of definition is one integer that specifies flags for cable network parts that are part of the cable routing network.

Flags for a node type (5) cable network part:

  • Bits [1,4] Node type as a value:
    • 1 End of cable way run.

    • 2 Branch point of a branch part.

    • 3 Change of direction.

    • 4 Branch point that the program adds as a branch "anchor" node to a straight cable tray part. May also be a user-defined branch point node.

    • 5 Penetration component.

    • 6 User-defined node.

    • 7 Split point that the program adds when segment is too long. The node ID is always generated.

    • 8 Combined node, indicates that there are at least two nodes in the same location.

  • Bit 5 Set if user defined node.
  • Bit 6 Set if node is disabled from cable routing.
  • Bit 7 Set if node ID is defined manually.

Flags for a segment type (6) cable network part:

  • Bits [1,4] Segment type as a value:

    • 1 Segment along cable tray
    • 2 Segment is air jump
    • 3 Segment is branch jump
    • 4 Segment is user defined
    • 5 Segment along penetration
    • 6 Unused
    • 7 Segment along cable conduit
  • Bit 5 Set if user defined segment.

  • Bit 6 Set if segment is disabled from cable routing.

  • Bit 7 Set if segment is blocked.

CNPTYPE

Part type (node 0, segment 1).

CSLEN

Value of definition is one floating point number that gives length of 3D space that models a Cable Way Space.

CT(301)

Defines the face type of a connection point, as primary type * 100 + subtype. In other words the primary type (3 in the example) followed by the subtype as the last two digits (1 in the example). Codes for primary type and subtype and SDE face codes are documented in the manual: Datamatic SDE. Values greater than 9 are coded as A = 10; B = 11; etc.

CTPF

Value of definition is one integer that specifies flags for cable tray parts that are part of the cable routing network.

Flags for a node type (5) cable tray part:

  • Bits [1,4] Unused and should be set to 0.
  • Bit 5 Set if user defined node.
  • Bit 6 Set if node is disabled from cable routing.
  • Bit 7 Set if node id is defined manually.

Flags for a segment type (6) cable tray part:

  • Bits [1,4] Segment type as a value:

    • 1 Segment along cable tray
    • 2 Segment is air jump
    • 3 Segment is branch jump
    • 4 Segment is user defined
    • 5 Segment along penetration
    • 6 Unused
    • 7 Segment along cable conduit
  • Bit 5 Set if user defined segment.

  • Bit 6 Set if segment is disabled from cable routing.

CTPT

Value of definition is one integer that specifies type of cable tray part.

  • 0 - used as manufactured
  • 1 - straight, may have end cuts
  • 2 - bent in plane, may have end cuts
  • 3 - bent up, may have end cuts
  • 4 - bent down, may have end cuts
  • 5 - models a node in network that cable router builds
  • 6 - models a segment between two nodes

CUT1

Value of definition is one floating point number that specifies how much of the original straight cable tray part was cut at the first end. Location at node 1 is this much offset from the actual local origin of the component model that models the full length straight cable tray.

D(1.0, 0.0, 0.0)

Defines the Cartesian components of a unit vector. If the MDL file is read in as a module then the components of the vector are transformed as specified by the module transformation matrix.

name = DEVC([model][GDL()], P(), D(), D(), ST(), MT(), NO(), ... MIG(),...AV(), ...AS(),...)

Defines a piece of equipment into the computer model. The assignment to a name is optional; if it is given then the name is used as the position id.

Component model to be instantiated is obtained as with STRC().

A point definition specifies the location of the local origin of the component model within the global coordinate system. Two unit vector definitions specify the directions of local x and y-axis of the component model in the global coordinate system. ST and MT definitions define object status and modification time.

Node (NO) definitions specify the status of connection points when the MDL file was generated. When the MDL file is read in these are used only to check if any changes have taken place with respect to the connection points defined in the component model. Connection point data from the component model is used when the object is entered into the computer model. Differences between the new connection points and the old ones are reported when the MDL file is read in.

MIG, AV, and AS values can be appended to the model (same as for component models).

ELEN

Value of definition is one floating point number that gives the length of cable head length or tail length. The first entry gives head length.

EPDL("OidA")[,EPDL("OidB")]

Value of definition is a COS Object ID string that defines a COS object of type "Externally Provided P&I Data" or a COS object of type "External Data Management", or both (if present).

EPENLEN

Value of definition is one floating point number that gives length from cable head or tail equipment to the penetration object. The first entry gives length from head equipment to first penetration.

FL(1)

Defines the direction of flow in a connection point:

  • 0 - don't care
  • 1 - in
  • 2 - out

GDL("text for the GDL from which component model is built")

Defines embedded GDL for an DEVC(), STDC(), STRC(), or SPACE() definition.

name = GROUP(ST(), MT(), GRT(), MIG() ... ,AV() ...,TAGS() )

Defines a group into the component model. Group definition must precede any membership (MIG) declarations directed to this group. The name assignment must be given. The ST and MT definitions define object status and modification time. The GRT definition specifies the group type. The TAGS definition specifies the attributes of a line definition represented by the group

A variable number of MIG definitions are used to declare memberships into groups in higher hierarchy level. A variable number of AV definitions are used to assign attribute values.

The TAGS definition is used only if the MDL is of type "FMT" and the group represents a line definition.

GRT(5)

Defines the group type of a group. This group number must match the group type number in one of the group type entries loaded from the group type definition file.

H(250.0)

Defines the height of an air duct component or height in an air duct type connection face. This definition accepts decimal fractions.

H2(330.0)

Defines the second height of a transition type air duct component. This definition accepts decimal fractions.

HULLNORFH

A hull construction part that has this set to 1 does not allow hole requests.

HVAC(partid,ST(),HVMC(),RORG(),HVDT(),W(),H(),SD(),[HVST(),][HVDI(),]{HVSP(),NO(),AV(),MIG(),AS())

Defines an HVAC part.

HVDI

Value of definition is one integer that specifies the type of dimensioning used for the width and height of a duct part.

  • 0 – Inner dimensioning. Plate thickness is excluded from width/height.

  • 1 – Outer dimensioning. Plate thickness is included to width/height.

Only used for duct parts where the modeling category HVMC is set to either "straight duct" or "shape".

HVDT

Value of definition is one integer that specifies cross-section type for straight HVAC part.

  • Rectangular
  • Round
  • Oval

HVMC

Value of definition is one integer that specifies modeling category for HVAC part. Bit 1 specifies if straight duct is to be modeled as hollow. Bits 2-3 specify what kind of HVAC part it is:

  • Straight duct (model stores end points and end normals)
  • Shape (model stores parameters and transformation)
  • Component (model is instantiated from catalog size object)

HVSP

Value of definition is one string that specifies parameters for HVAC part that is modeled using an internal shape. For available parameters for each shape please see Duct Part Design Rules using Shapes. For example, for a T-piece this value is ".mr=250 .ms=200 .nB=300 .nC=300 .nD=50 .nE=50 dw2=400 .nA=300". Meaning of tags can be found in script header file include/pm_core_tags.h.

HVST

Value of definition is one integer that specifies internal shape type for a HVAC part that is modeled using shapes.

The following shape types are supported:

  • 1 - Rectangular bend
  • 2 - Rectangular asymmetric curve
  • 3 - Rectangular transition
  • 4 - Rectangular branch
  • 5 - Rectangular to round transition
  • 6 - Lateral radius Y
  • 8 - Unequal circular radius lateral Y
  • 9 - Rectangular end cap
  • 10 - Rectangular rounded boot

ISN(1,isc)

Defines a specification number and short code of insulation for a standard component, pipe part or a HVAC part.

MIG(g27)

Defines a membership declaration in a group. String contains the abbreviation for the name of the target group.

MT(612573047)

Defines the last modification time of an object. It is represented as integer seconds since January 1 1970. If the MDL file is read in as a module, then this value will be set to the current time.

name = NATTR("tag",NAT())

Defines an attribute for a connection node. 'name' is the name for the node attribute and 'tag' is the node attribute tag.

NAT(type)

Defines node attribute type as one of the following values:

  • 0 = integer

  • 1 = number

  • 3 = string

  • 4 = time

  • 5 = coded integer

  • 6 = enumerated string

NAV(abb, 123)

NAV(abb, 123.456)

NAV(abb,"a string")

Defines the value for a node attribute. 'abb' is the name of the abbreviation for the node attribute.

NI(125)

Defines the node id number of a connection point. The number must be in the range 1–255.

NO(NI(), P(), D(), CT(), D(), W(), H(), FL)

NO(NI(), P(), D(), CT(), D(), NS(), NP(), NAV(), FL)

Defines a connection point. The first four arguments are necessary, the rest are optional. All arguments are sub-definitions.

The NI definition gives the node ID number. A point definition defines the location of the connection point. The first unit vector definition gives the direction that points out of the face and is normal to it. A CT definition defines the face type in the connection point.

If a second unit vector definition is present then it specifies a face type specific secondary direction. For air duct faces this gives the direction of width.

The rest of the definitions are face type specific. Definition pairs (W,H) and (NS,NP) are mutually exclusive, both cannot be present at the same time. NAV defines an attribute for the node. If FL is not present then the direction of flow is set to "don't care".

Node NO() definitions present in object definitions can have a sub-definition that specifies how a node in the object is connected to another object/node.

CONNECT(obj_node, connect_to_oid, connect_to_node)

The definition expects to have these three values:

  1. A positive number that identifies the node in the object definition.
  2. A quoted string that specifies the object identification of the object to be connected to.
  3. A positive number that identifies the target node in the object to be connected to.

The object definition of a piping part depends on the type of the part:

PPART(partid, PPARTMC(1), PPARTSL(axis-length), D(axis-dir), ST(), MT(), [SD()(),] [ISN(),] [PPARTPREF(),] NO(), ... MIG(),... AV(), ...AS(),...)

Defines a straight pipe piece.

PPART(partid, PPARTMC(2), PPARTFLXA(curve-angle), D(x-dir),D(y-dir), ST(), MT(), [SD()(),] [ISN(),] NO(), ... MIG(),... AV(), ...AS(),...)

Defines a flexible curve.

PPART(partid,PPARTMC(3),PPARTBNDA(bend-angle), PPARTBNDM(oid_bending_machine), D(x-dir),D(y-dir), ST(), MT(), [SD()(),] [ISN(),] [PPARTPREF(),]NO(), ... MIG(),... AV(), ...AS(),...

Defines a machine bend.

PPART(partid,PPARTMC(4),PPARTBNDA(bend-angle), PPARTBNDR(bend-radius),D(x-dir),D(y-dir),ST(),MT(),[SD()(),][ISN(),] [PPARTPREF(),]NO(), ... MIG(),... AV(), ...AS(),...)

Defines a free-radius bend.

PPART(partid, PPARTMC(5), D(x-dir),D(y-dir), ST(), MT(), [SD()(),] [ISN(),] NO(), ... MIG(),... AV(), ...AS(),...)

Defines a fixed-type component.

PPARTMC

The value of the definition is an integer that specifies the modeling category for the piping part:

  1. Straight pipe
  2. Flexible elbow
  3. Machine bend
  4. Free bend
  5. Fixed-type component such as flange, reducer etc.

PPARTSL

The value of the definition is one floating point number that specifies the length of a straight pipe part measured along its center line. The second node of the part is the end point. The directions at the nodes give the end cut directions. If this sub-definition is present, then it is expected that one direction sub-definition specifies the direction of the center line from node 1 to node 2. When the part is created, the second node will be placed at this distance from the 1st node, along the center line direction.

PPARTFLXA

The value of the definition is one floating point number that specifies the curve angle for a flexible elbow in degrees. The angle is measured from the local x-axis towards the local y-axis. Two directions are expected where the first one is the local x-axis of the curve and the second direction defines the plane in which the elbow is located. When the part is created, the nodes will be instantiated based on this angle and directions. The location of the 1st node is taken as the local origin.

PPARTBNDA

The value of the definition is one floating point number that specifies the bending angle for a bend in degrees. The angle is measured from the local x-axis towards the local y-axis. Two directions are expected where the first one is the local x-axis of the curve and the second direction defines the plane in which the elbow is located. When the part is created, the nodes will be instantiated based on this angle and directions. The location of the 1st node is taken as the local origin.

PPARTBNDM

The value of the definition is one quoted string that specifies object identification of the bending machine object that gives bending parameters such as bending radius.

PPARTBNDR

The value of the definition is a floating point number that specifies the radius for free-radius bends.

PPARTBPREF

The value of the definition is an integer number specifying flag bits for prefabricated pipe information.

For straight pipes the flag bits are:

0x1 No prefabricated pipe boundary at start of straight pipe piece even though there is another straight connected
0x2 No prefabricated pipe boundary at end of straight pipe piece even though there is another straight connected

For bent pipe parts the flag bits are:

0x1 Prefabricated pipe boundary at start of bend
0x2 Prefabricated pipe boundary at end of bend
0x4 Show seam in bend at start even though connected part belongs to same prefabricated pipe
0x8 Show seam in bend at end even though connected part belongs to same prefabricated pipe

For flanges the flag bits are:

0x1 Flange welded before bending

NP(300.0)

Defines the nominal pressure of a connection point. This definition accepts decimal fractions.

NS(87.5)

Defines the nominal size of a connection point. This definition accepts decimal fractions.

P(100.0, 200.0, 300.0)

Defines the Cartesian (x, y, and z) coordinates for a point. If the MDL file is read in as a module then the coordinates of the point are transformed as specified by the module transformation matrix.

PC(partid, 3, BND, SD(), SN(), PR(), P(), AV()..., AS()... )

Defines the next in-line component in a pipe. The first entry contains the part identification of the part in the corporate catalog. The next argument is an integer that specifies the geometry point (1-5) that is located at the endpoint.

The remaining entries are optional; they are all sub-definitions. If the BND is present then the component is recognized to be a bent pipe. If an SD definition is present then it gives the short code and spec from which that part was input. Otherwise the part is considered to be an "out of spec part".

If SN definition exists, it specifies the insulation specification 1, 2 or 3.

If a PR definition is present then that specifies the rotation around centerline; otherwise rotation is set to 0. The last entry gives the endpoint; it must be a definition of type P. It specifies the location to which this component advances the pipe.

AV() definitions assign attributes to the pipe part. AS() definitions associate the pipe part with other objects or pipe parts.

PIPE(ST(), MT(), NO(), NO(), ... PC(), ... MIG(), ... AV(), ...AS(),..)

Defines a pipe into the computer model. ST and MT definitions define object status and modification time. There must be at least two node definitions which define the endpoints of the pipe. Additional nodes are used to define points where outlets, stub-ins or supports are connected to the pipe.

There must be at least one pipe component definition (PC). Pipe components are assembled in the order in which they are encountered. It is assumed that the end point of the last component is at the same location as the second node.

MIG, AV, and AS definitions can be added freely (same as for component definitions).

PR(45)

Defines the rotation angle for certain pipe components from their default angular orientation.

The integer must be from 0 to 360, representing the rotation angle in degrees. This value is used only with components that are not rotationally symmetric but have all points in the centerline of the pipe such as outlets or saddles.

R(150.0)

Defines the radius of a curved air duct component measured from the center of curvature to the center of the cross-section. This definition accepts decimal fractions.

RORG

Value of definition is one integer that specifies routing referenced point for cable ways and HVAC parts. Numbers below indicate location of reference point as seen when viewing along routing direction.

1 2 3
4 5 6
7 8 9

SD(1,f)

Defines a specification number and short code for a standard component or a pipe component.

SN

Defines insulation specification number 1, 2 or 3.

SPACE(type_of_3Dspace,[model][GDL()],P(),[CSLEN(),]D(),D(),ST(),MT(),MIG(),... AV(),..AS(),...)

Defines a 3D Space object into the model.

The first argument must be an integer value that specifies type of the 3D Space. 3D Spaces are categorized as follows, based on their type:

  • 3D Spaces for which containment evaluation is always via spatial location. Model objects that model these 3D Spaces do not participate in normal collision control.

    Type of 3D Space Description
    1 Compartment
    2 Fire Zone
    3 Flooded Volume
  • 3D Spaces that model soft space that is in use. These never participate in containment hierarchies. Model objects that model these 3D Spaces do participate in normal collision control and generate soft collisions.

    Type of 3D Space Description
    10 Passage
    11 Insulation (can be used to model insulation for bulkheads, decks etc.)
    12 Service Space
    13 Cable Space associated with a Cable Way
  • 3D Spaces that are used to build a logistic hierarchy tree of model objects. Model objects that model these 3D Spaces do not participate in collision control. There is a separate configuration object (Containment Setup) that specifies what kind of hierarchy these 3D Spaces are expected to build.

    Type of 3D Space Description
    20 Outfit Area
    21 Super Block
    22 Block
    23 Sub-block

If a GDL() definition ("embedded GDL") is present, then the component model for the 3D Space is built from the text contained in it.

Otherwise the second argument defines a reference to a GDL object in COS. The notation is $< COS Object ID>.

The component model geometry is instantiated from those primitives of the GDL which are marked as 'service space'.

A point definition specifies the location of the local origin of the component model within the global coordinate system. Two unit vector definitions specify the directions of local x- and y-axis of the component model in the global coordinate system. ST and MT definitions define object status and modification time.

MIG definitions can be used to declare memberships into groups. Also AV definitions and AS() definitions can be used to assign attribute values or build associations with other objects. An arbitrary number of these kind of definitions can be set for a component.

Service Spaces have a dependency association to the host object to which they are linked to.

3D Spaces that form a hierarchy in logistics containment have a containment association that binds the 3D Space to its parent 3D Space in the hierarchy.

An example where the type of the space is Service Space and it references a GDL in COS for the component model:

SPACE(12,$+U9V45hLaJv2YdqPR1b5kzW,ST(1,3c,2586,0,0,"aJ3Yz5EAJUwODma2aRSIL0"),MT(1538735715),P(78775.52,-5955.81,57353),D(1,0,0),D(0,1,0))

ST(owner, objectID, systemID, modAcc, [visLev], [oid], [flags], [coordSys])

Defines object status.

"owner" is the ID of the Plant Modeller area that is to own the object. If the MDL file is read in as module, then this value is set according to the current owner.

"objectID" should be set to zero for now. If the MDL file is read in as module, then this value is reset. The last digit in this number must be the same as the object type number. See description of object data tag "obt".

"systemID" is the ID of the System to which the object belongs. The number must match one of the System entries in the System table.

"modAcc" defines modeling accuracy. This is reserved for future use.

"visLev" (optional) is the visualization level for the object. This is reserved for future use.

"oid" (optional) is the COS Object ID string of the object or group.

"flags" (optional) is a combination of various flags, and it should be set to zero for now.

"coordSys" (optional) is the COS Object ID string of the object's coordinate system. In MDL import, if the argument is missing or the argument has an empty value, the object is assigned to the active coordinate system. In MDL export, if an object does not have a coordinate system reference, the Project coordinate system is added to the export data.

STDC(partid, [GDL(),] P(), D(), D(), INS(), ST(), MT(), SD()(), NO(), ... MIV(),... AV(), ...AS(),...)

Defines a standard component into the computer model. The first argument must contain the part identification of the component in the corporate catalog. Local origin for the component is taken from the first connection point. Two unit vector definitions specify the directions of local x and y-axis of the component model in the global coordinate system.

If a GDL() definition is present, then the component model is built from the text it contains: GDL("GDL source"). The created object will use embedded GDL.

If INS definition exists, it specifies the insulation specification 1, 2 or 3.

ST and MT definitions define object status and modification time. Remaining arguments are optional. If an SD definition is present then the component is considered to be part of a piping system.

Node (NO) definitions specify the status of connection points when the MDL file was generated. When the MDL file is read in these are used only to check if any changes have taken place with respect to the connection points defined in the component model. Connection point data from the component model is used when the object is entered into the computer model. Differences between the new connection points and the old ones are reported when the MDL file is read in.

MGI, AV, and AS definitions can be appended in the same way as for component models.

STEL(partid, P(), P(), D(), D(), D(), ST(), MT(), MIG(), ... AV(), ... AS(),..)

Defines a beam into the computer model. The first argument must contain the part identification of the profile in the corporate catalog. ST and MT definitions define object status and modification time. Two point definitions define the locations of endpoints. The origin point of the profile cross-section will be located in these points.

The first unit vector definition gives the direction of the local u-axis of the beam's cross-section in global coordinates. The second and third unit vector definitions specify the directions of end normals of end planes.

MIG, AV, and AS definitions can be included for the steel (same as for components).

name = STRC([model][GDL()], P(), D(), D(), ST(), MT(), MIG(),... AV(),..AS(),...)

Defines a structural component into the computer model. The assignment to a name is optional; if it is given then the name is used as the position id.

If GDL() definition is present then component model is built from text contained in it. The created object will use embedded GDL.

Otherwise the first argument must contain the name of the component model from which the object will be instantiated. In MDLs originating from 4.x versions this name is the SDE-name by which the component was known. In this case Plant Modeller will search COS databases for object with this name. In 5.x versions this name is the OID string of the corresponding COS object.

If the name begins with a # mark then a so called reference GDL is used. Plant Modeller will expect GDL from file site/pm/refgdl and make the object to use embedded GDL obtained from the referenced GDL file. After MDL is loaded these reference GDL files are removed. Currently this method is used when 3DDump files are imported.

A point definition specifies the location of the local origin of the component model within the global coordinate system. Two unit vector definitions specify the directions of local x and y-axis of the component model in the global coordinate system. ST and MT definitions define object status and modification time.

MIG definitions can be used to declare memberships into groups. Also AV definitions and AS() definitions can be used to assign attribute values or build associations with other objects. An arbitrary number of these kinds of definitions can be set for a component.

SYSCOL(6)

Defines the color of a system. Value is an index into the used color palette.

SYSID(2)

Defines a system id.

name = SYSTEM(SYSID(), SYSCOL(), TAGS())

This definition is only used if MDL type is "FMT". This definition is ignored for other MDL types.

Defines a system. The system definition must precede any model object (STRC, DEVC, …) definitions. The SYSID definition specifies the system id. Model object definitions in the MDL are linked to a SYSTEM definition using the system id. The SYSCOL definition specifies the system color. The TAGS definition specifies the attributes of the system.

The SYSTEM definition is used to assign model objects generated from the MDL file to systems in the target environment. Model objects in the MDL file that are members of system XYZ are made members of system XYZ in the target environment, if a system named XYZ exists in the target environment.

TAGS("tag record string")

Stores a data record in string format.

W(450.0)

Defines the width of an air duct component or a width in an air duct type connection face. This definition accepts decimal fractions.

W2(200.0)

Defines the second width of a transition type air duct component. This definition accepts decimal fractions.

W2(), H2(), NO(), NO(), MIG(), ... AV(), ...AS(),.. )

Defines an air duct component into the computer model. The first argument contains the part identification of the plate from which the component will be manufactured. Node definitions (NO) define the location of endpoints and directions of end normals. A unit vector definition defines the direction of width. For curved components this is also the normal to the plane in which the centerline of the curve lies. The second dimensions RD, W2, and H2 are optional.

ST and MT definitions define object status and modification time.

MIG, AV, and AS definitions can be freely added, as for component definitions.