Valve - Angle
AV**

1,2
Valve - Angle Pressure Reducing
AX**

1,2
Valve - Angle Relief/Vent
AR**

1,2
Valve - Ball
VB**

1,2
Valve - Basic
VV**

1,2
Valve - Butterfly
VY**

1,2
Valve - Check
VC**

1,2
Valve - Check
CK**

1,2
Valve - Cock
VK**

1,2
Valve - Diaphragm
VD**

1,2
Valve - Gate
VT**

1,2
Valve - Globe
VG**

1,2
Valve - Needle
VN**

1,2
Valve - Plug
VP**

1,2
Valve - Pressure Reducing
VX**

1,2
Valve - Relief/Vent
VR**

1,2
Valve - Slide
VS**

1,2
Note:
1
Replace the ** characters in the symbol key with one of the following end condition identifiers:
BW for butt weld
CP for compression
SW for socket weld
FL for flanged
SC for screwed
PL for plain
2
If an orientation p-point is present in the point set, then ISODRAFT will output the orientation of this p-point unless it is oriented in a primary direction (X, Y, Z etc.)
1
Replace the ** characters in the symbol key with one of the following end condition identifiers:
BW for butt weld
CP for compression
SW for socket weld
FL for flanged
SC for screwed
PL for plain
2
If an orientation p-point is present in the point set, then ISODRAFT will output the orientation of this p-point unless it is oriented in a primary direction (X, Y, Z etc.)

Component Description
SKEY
Plotted Symbol
P-points
Note
Valve - Angle
AV**
1,2
Valve - Angle Pressure Reducing
AX**
1,2
Valve - Angle Relief/Vent
AR**
1,2
Valve - Ball
VB**
1,2
Valve - Basic
VV**
1,2
Valve - Butterfly
VY**
1,2
Valve - Check
VC**
1,2
Valve - Check
CK**
1,2
Valve - Cock
VK**
1,2
Valve - Diaphragm
VD**
1,2
Valve - Gate
VT**
1,2
Valve - Globe
VG**
1,2
Valve - Needle
VN**
1,2
Valve - Plug
VP**
1,2
Valve - Pressure Reducing
VX**
1,2
Valve - Relief/Vent
VR**
1,2
Valve - Slide
VS**
1,2
1
Replace the ** characters in the symbol key with one of the following end condition identifiers:
BW for butt weld
CP for compression
SW for socket weld
FL for flanged
SC for screwed
PL for plain
2
If an orientation p-point is present in the point set, then ISODRAFT will output the orientation of this p-point unless it is oriented in a primary direction (X, Y, Z etc.)

Note


Rupture Disk
RD

Component Description
SKEY
Plotted Symbol
Points
Note
Rupture Disk
RD


Valve - 4 Way
V4**

1,2
Notes:
1
Replace the ** characters in the symbol key with one of the following end condition identifiers:
BW for butt weld
CP for compression
SW for socket weld
FL for flanged
SC for screwed
PL for plain
2
If an orientation p-point (P5) is present in the point set, the orientation of that p-point will be shown on the isometric.
1
Replace the ** characters in the symbol key with one of the following end condition identifiers:
BW for butt weld
CP for compression
SW for socket weld
FL for flanged
SC for screwed
PL for plain
2
If an orientation p-point (P5) is present in the point set, the orientation of that p-point will be shown on the isometric.

Component Description
SKEY
Plotted Symbol
P-points
Note
Valve - 4 Way
V4**
1,2
1
Replace the ** characters in the symbol key with one of the following end condition identifiers:
BW for butt weld
CP for compression
SW for socket weld
FL for flanged
SC for screwed
PL for plain
2
If an orientation p-point (P5) is present in the point set, the orientation of that p-point will be shown on the isometric.

Notes


Component Description
SKEY
Plotted Symbol
P-points
Note
Valve - 3 Way
V3**
1,2
Component Description
SKEY
Plotted Symbol
P-points
Note
Valve - 3 Way
V3**

1,2
Notes:
1
Replace the ** characters in the symbol key with one of the following end condition identifiers:
BW for butt weld
CP for compression
SW for socket weld
FL for flanged
SC for screwed
PL for plain
2
If an orientation p-point (P5) is present in the point set, the orientation of that p-point will be shown on the isometric.
1
Replace the ** characters in the symbol key with one of the following end condition identifiers:
BW for butt weld
CP for compression
SW for socket weld
FL for flanged
SC for screwed
PL for plain
2
If an orientation p-point (P5) is present in the point set, the orientation of that p-point will be shown on the isometric.

Component Description
SKEY
Plotted Symbol
P-points
Note
Valve - 3 Way
V3**
1,2
1
Replace the ** characters in the symbol key with one of the following end condition identifiers:
BW for butt weld
CP for compression
SW for socket weld
FL for flanged
SC for screwed
PL for plain
2
If an orientation p-point (P5) is present in the point set, the orientation of that p-point will be shown on the isometric.

Notes


Weld - Site
WS

Weld - Field Fitted
WF

Weld - Shop
WW

Component Description
SKEY
Plotted Symbol
P-points
Note
Weld - Site
WS
Weld - Field Fitted
WF
Weld - Shop
WW


Component Description
SKEY
Plotted Symbol
Note
Pipe passing through floor
FLOR
1,2,3
Component Description
SKEY
Plotted Symbol

Note
Pipe passing through floor
FLOR

1,2,3
Notes:
1
Same rules apply as those used for positioning the FLOW ARROW symbol (refer to In-line Components, Including Straight-through Valves in the ISODRAFT User Guide).
2
Must only be positioned in vertical sections of pipeline.
3
ISODRAFT will automatically orientate the fitting shape to suit the up/down direction of the pipeline.
1
Same rules apply as those used for positioning the FLOW ARROW symbol (refer to In-line Components, Including Straight-through Valves in the ISODRAFT User Guide).
2
Must only be positioned in vertical sections of pipeline.
3
ISODRAFT will automatically orientate the fitting shape to suit the up/down direction of the pipeline.

Component Description
SKEY
Plotted Symbol
Note
Pipe passing through floor
FLOR
1,2,3
1
Same rules apply as those used for positioning the FLOW ARROW symbol (refer to In-line Components, Including Straight-through Valves in the ISODRAFT User Guide).
2
Must only be positioned in vertical sections of pipeline.
3
ISODRAFT will automatically orientate the fitting shape to suit the up/down direction of the pipeline.

Notes


Welded Circular Lug
WLC

Welded Rectangular Lug
WLR

Component Description
SKEY
Plotted Symbol
P-points
Note
Welded Circular Lug
WLC
Welded Rectangular Lug
WLR


This section lists all available symbol keys (SKEYs) in alphabetic order. Cross-references are given to the generic component types (GTYPEs) under which the user will find them described in the preceding sections of this appendix (if appropriate).
Each SKEY has an indication of whether or not it may be redefined, as explained in the ISODRAFT User Guide, Section 11.1, The Basic Principles. For components which include spindles, the standard spindle type associated with the predefined SKEY is indicated, refer to ISODRAFT User Guide Section 11.3, Special Keys, for illustrations of these spindle types.
SKEY
GTYPE
COMPONENT
USER DEFINABLE?
SPINDLE TYPE
AR**
VALV
Angled Pressure Reducing Valve
Yes
09SP
AV**
VALV
Angled Valve
Yes
01SP
AX**
VALV
Angled Relief Valve or Vent
Yes
02SP
BA**
PCOM
Angle Block
Yes
BEFL
BEND
Flanged Bend
No
BO**
PCOM
Offset Block
Yes
BR**
PCOM
Return Block
Yes
BTFL
BEND
Flanged Bend with Tee
No
BU+D
BEND
Pulled Return Bend
No
BUFL
BEND
Flanged Return Bend
No
C3**
INST
3-Way Control Valve
No
13SP
C4**
INST
4-Way Control Valve
No
13SP
CA**
INST
Angled Control Valve
Yes
13SP
CEBW
COUP
Butt Weld Elbolet
Yes
CESC
COUP
Screwed Fitting Elbolet
Yes
CESW
COUP
Socket Weld Elbolet
Yes
CFSC
COUP
Half Coupling - Screwed
Yes
CFSW
COUP
Half Coupling - Socket Screwed
Yes
CH**
PCOM
Hose Coupling
Yes
CK**
VALV
Check Valve
Yes
COCP
COUP
Compression Fitting Coupling
Yes
COSC
COUP
Screwed Fitting Coupling
Yes
COSW
COUP
Socket Weld Coupling
Yes
CPBW
REDU
Butt Weld Concentric Reducer
Yes
CPCF
COUP
Centre Flange
Yes
CPFL
REDU
Flanged Concentric Reducer
Yes
CPWP
COUP
Watertight Bulkhead and Deck
Yes
CPWT
COUP
Welded Sleeve thru Pipe
Yes
CPWW
COUP
Welded Sleeve thru Pipe
Yes
CRBW
CROS
Butt Weld Cross
No
CRCP
CROS
Compression Fitting Cross
No
CRFL
CROS
Flanged Cross
No
CRRF
CROS
Set On Reinforced Cross
No
CRSC
CROS
Screwed Fitting Cross
No
CRSO
CROS
Set On Cross
No
CRSW
CROS
Socket Weld Cross
No
CSBW
REDU
Butt Weld Concentric Reducer
Yes
CSFL
REDU
Flanged Concentric Reducer
Yes
CTBW
REDU
Butt Weld Concentric Reducer with Tee
Yes
CTFL
REDU
Flanged Concentric Reducer with Tee
Yes
CTSC
REDU
Screwed Fitting Concentric with Tee
Yes
CTSW
REDU
Socket Weld Concentric Reducer with Tee
Yes
CV**
INST
Control Valve
Yes
13SP
CXBW
REDU
Butt Weld Concentric Reducer with Tee
Yes
CXFL
REDU
Flanged Concentric Reducer with Tee
Yes
CZBW
REDU
Butt Weld Concentric Reducer with Tee
Yes
CZFL
REDU
Flanged Concentric Reducer with Tee
Yes
DR
INST
Rupture Disc
Yes
EBSC
ELBO
Screwed Fitting (Male) Elbow
No
ELBW
ELBO
Butt Weld Elbow
No
ELCP
ELBO
Compression Fitting Elbow
No
ELSC
ELBO
Screwed Fitting Elbow
No
ELSW
ELBO
Socket Weld Elbow
No
EPBW
REDU
Butt Weld Eccentric Reducer
Yes
EPFL
REDU
Flanged Eccentric Reducer
Yes
ER**
ELBO
Reducing Elbow
No
ESBW
REDU
Butt Weld Eccentric Reducer
Yes
ESFL
REDU
Flanged Eccentric Reducer
Yes
ETBW
ELBO
Butt Weld Elbow with Tee
No
ETCP
ELBO
Compression Fitting Elbow with Tee
No
ETSC
ELBO
Screwed Fitting Elbow with Tee
No
ETSW
ELBO
Socket Weld Elbow with Tee
No
EUBW
ELBO
Butt Weld Return Elbow
No
EX**
PCOM
Expansion Bellows
Yes
EXBW
REDU
Butt Weld Eccentric Reducer with Tee
Yes
EXFL
REDU
Flanged Eccentric Reducer with Tee
Yes
EZBW
REDU
Butt Weld Eccentric Reducer with Tee
Yes
EZFL
REDU
Flanged Eccentric Reducer with Tee
Yes
FA**
FILT
Angled Filter
Yes
FI**
FILT
Straight-Through (In-Line) Filter
Yes
FLBL
FLAN
Blind or Blanking Flange
Yes
FLBL
FBLI
Blind or Blanking Flange
Yes
FLFL
FLAN
Flared Flange
Yes
FLLB
FLAN
Loose Backing Flange
Yes
FLOR
ATTA
Floor Penetration Type ATTA
Yes
FLOW
Flow Arrow
Yes
FLRC
FLAN
Reducing Flange
Yes
FLRC
FBLI
Reducing Flange
Yes
FLRE
FLAN
Eccentric Reducing Flange
Yes
FLRE
FBLI
Eccentric Reducing Flange
Yes
FLRG
LJSE
Lap Joint Ring
No
FLSC
FLAN
Screwed Fitting Flange
Yes
FLSE
LJSE
Lap Joint Stub End
No
FLSJ
FLAN
Slip-on J-Type Welded Flange
Yes
FLSO
FLAN
Slip-on Flange
Yes
FLSW
FLAN
Socket Weld Flange
Yes
FLWN
FLAN
Weld Neck Flange
Yes
FO**
FILT
Offset Filter
Yes
FOSO
FLAN
Slip-on Flange with Orifice
Yes
FOWN
FLAN
Weld Neck Flange with Orifice
Yes
FPFL
FTUB
Fixed Length Pipe with Flanged Ends
No
FPPL
FTUB
Fixed Length Pipe with Plain Ends
Yes
FR**
FILT
Return Filter
No
FT**
PCOM
Flame Trap
Yes
FX**
PCOM
Flexible Hose
Yes
FY**
FILT
‘Y’-type Filter/Strainer
Yes
H3**
INST
3-Way Control Valve
No
12SP
H4**
INST
4-Way Control Valve
No
12SP
HA**
INST
Angled Control Valve
Yes
12SP
HC**
OLET
Screwed Half Coupling
Yes
HC**
OLET
Socket Weld Half Coupling
Yes
HV**
INST
Control Valve
Yes
12SP
IA**
INST
Angled Instrument
Yes
IDFL
INST
Flanged Instrument with Dial
No
IDPL
INST
Instrument with Dial
No
II**
INST
Instrument
Yes
IO**
INST
Offset Instrument
Yes
IR**
INST
Return Instrument
No
ITFL
OLET
Flanged Instrument Tee
No
JA**
INST
Two-Level Multiport Valve
No
JB**
INST
Two-Level Multiport Valve
No
JC**
INST
Two-Level Multiport Valve
No
JE**
INST
Two-Level Multiport Valve
No
JG**
INST
Three-Level Multiport Valve
No
JK**
INST
Two-Level Multiport Valve
No
JL**
INST
One-Level Multiport Valve
No
JM**
INST
Three-Level Multiport Valve
No
JN**
INST
Three-Level Multiport Valve
No
JO**
INST
Two-Level Multiport Valve
No
JP**
INST
Two-Level Multiport Valve
No
JT**
INST
One-Level Multiport Valve
No
JU**
INST
Three-Level Multiport Valve
No
JV**
INST
Two-Level Multiport Valve
No
JW**
INST
Three-Level Multiport Valve
No
JX**
INST
Three-Level Multiport Valve
No
JY**
INST
Three-Level Multiport Valve
No
JZ**
INST
Three-Level Multiport Valve
No
KABW
CAP
Butt Weld Cap
Yes
KACP
CAP
Compression Fitting Cap
Yes
KASC
CAP
Screwed Fitting Cap
Yes
KASW
CAP
Socket Weld Cap
Yes
L@BW
BEND
Butt Weld Lobster Back Bend
No
L@FL
BEND
Flanged Lobster Back Bend
No
LA**
OLET
Butt Weld Latrolet
Yes
LA**
OLET
Screwed Fitting Latrolet
Yes
LA**
OLET
Socket Weld Latrolet
Yes
LG**
INST
Level Gauge
No
M3**
INST
3-Way Motorised Valve
No
11SP
M4**
INST
4-Way Motorised Valve
No
MA**
INST
Angled Control Valve
Yes
11SP
MIBW
BEND
Butt Weld Mitred Bend
No
MIFL
BEND
Flanged Mitred Bend
No
MTBW
BEND
Butt Weld Mitred Bend with Tee
No
MTFL
BEND
Flanged Mitred Bend with Tee
No
MV**
INST
Motorised Valve
Yes
11SP
NBSC
COUP
Screwed Nipple
Yes
NC**
PCOM
Non-Category Item
Yes
NC**
SHU
Non-Category Item
Yes
NI**
OLET
Plain End Nipolet
Yes
NI**
OLET
Screwed Fitting Nipolet
Yes
NRSC
COUP
Screwed Fitting Nipple
Yes
OP
INST
Orifice Plate
Yes
OTBW
REDU
Butt Weld Eccentric Reducer with Tee
Yes
OTFL
REDU
Flanged Eccentric Reducer with Tee
Yes
OTSC
REDU
Screwed Fitting Eccentric Reducer with Tee
Yes
PB+D
BEND
Pulled Bend
No
PF
CLOS
Fixed Length Pipe Block
Yes
PL
PCOM
Plug
Yes
PR
INST
Restrictor Plate
Yes
PV
CLOS
Variable Length Pipe Block
Yes
RA**
INST
Angled Relief Valve
Yes
02SP
RBSC
REDU
Screwed Fitting Concentric Reducing Bush
Yes
RBSW
REDU
Socket Weld Concentric Reducing Bush
Yes
RCBW
REDU
Butt Weld Concentric Reducer
Yes
RCCP
REDU
Compression Fitting Concentric Reducer
Yes
RCFL
REDU
Flanged Concentric Reducer
Yes
RCSC
REDU
Screwed Fitting Concentric Reducer
Yes
RCSW
REDU
Socket Weld Concentric Reducer
Yes
RD
VENT
Rupture Disc
Yes
REBW
REDU
Butt Weld Eccentric Reducer
Yes
REFL
REDU
Flanged Eccentric Reducer
Yes
RESC
REDU
Screwed Fitting Eccentric Reducer
Yes
RF
REDU
Special Reducing Flange
Yes
RNSC
REDU
Nipple Fitting Concentric Reducer
Yes
RP
PCOM
Restrictor Plate
Yes
RV**
INST
Relief Valve
Yes
S3**
INST
3-Way Control Valve with Square Indicator
No
10SP
S4**
INST
4-Way Control Valve with Square Indicator
No
10SP
SA**
INST
Angled Control Valve with Square Indicator
Yes
10SP
SB
PCOM
Spectacle Blind
Yes
SG**
PCOM
Sight Glass
Yes
SK**
OLET
Socket Weld Sockolet
Yes
SP
PCOM
Slip Plate
Yes
SR
PCOM
Slip Ring
Yes
SV**
INST
Control Valve with Square Indicator
Yes
10SP
SW**
OLET
Butt Weld Sweepolet
Yes
T@BW
BEND
Butt Weld Lobster Back Bend with Tee
No
T@FL
BEND
Flanged Lobster Back Bend with Tee
No
TA**
TRAP
Angled Trap
Yes
TB+D
BEND
Pulled Bend with Tee
No
TEBW
TEE
Butt Weld Tee
No
TECP
TEE
Compression Fitting Tee
No
TEFL
TEE
Flanged Tee
No
TERF
TEE
Reinforced Tee
No
TESC
TEE
Screwed Fitting Tee
No
TESI
TEE
Reserved for pipe tappings
No
TESO
TEE
Set On Tee
No
TESW
TEE
Socket Weld Tee
No
TH**
OLET
Screwed Fitting Thredolet
Yes
TI**
TRAP
In-line Trap
Yes
TO**
TRAP
Offset Trap
Yes
TPUL
TEE
Pulled Tee
No
TR**
TRAP
Return Trap
No
TSBW
TEE
Butt Weld Swept Tee
No
TSCP
TEE
Compression Fitting Swept Tee
No
TSFL
TEE
Flanged Swept Tee
No
TSSW
TEE
Socket Weld Swept Tee
No
TU**
PCOM
Tundish or Funnel
Yes
UNBW
UNIO
Union - Butt Weld
Yes
UNIV
PCOM
Universal Skey for special fittings
Yes Refer to
ISODRAFT User Guide
UNSC
UNIO
Screwed Fitting Union
Yes
UNSW
UNIO
Butt or Socket Weld Union
Yes
V3**
VTWA
3-Way Valve
No
01SP
V4**
VFWA
4-Way Valve
No
01SP
VB**
VALV
Ball Valve
Yes
03SP
VC**
VALV
Check Valve
Yes
VD**
VALV
Diaphragm Valve
Yes
01SP
VG**
VALV
Globe Valve
Yes
01SP
VK**
VALV
Cock Valve
Yes
03SP
VN**
VALV
Needle Valve
Yes
06SP
VP**
VALV
Plug Valve
Yes
07SP
VR**
VALV
Relief Valve
Yes
02SP
VS**
VALV
Slide Valve
Yes
08SP
VT**
VALV
Gate Valve
Yes
05SP
VV**
VALV
Basic Valve
Yes
01SP
VX**
VALV
Pressure Reducing Valve
Yes
09SP
VY**
VALV
Butterfly Valve
Yes
03SP
WF
WELD
Field Fitted Weld
No
WLC
OLET
Welded Circular Lug
Yes
WLR
OLET
Welded Rectangular Lug
Yes
WS
WELD
Site Weld
No
WTBW
OLET
Butt Weld Weldolet
Yes
WW
WELD
Shop Weld
No
X@**
CROS
Generic Y-type Cross with user-definable out- and off- legs
Yes
XA**
INST
Angled Pressure Reducing Valve
Yes
09SP
XV**
INST
Pressure Reducing Valve
Yes
09SP
Y@**
TEE
Generic Y-type Tee with user-definable out- and off- legs
Yes
01HG
Hanger (As a basis for user-defined hangers; refer to ISODRAFT User Guide, Section 10.4, Defining a New Hanger)
Yes
SKEY
GTYPE
COMPONENT
USER DEFINABLE?
SPINDLE TYPE
AR**
VALV
Angled Pressure Reducing Valve
Yes
09SP
AV**
VALV
Angled Valve
Yes
01SP
AX**
VALV
Angled Relief Valve or Vent
Yes
02SP
BA**
PCOM
Angle Block
Yes

BEFL
BEND
Flanged Bend
No

BO**
PCOM
Offset Block
Yes

BR**
PCOM
Return Block
Yes

BTFL
BEND
Flanged Bend with Tee
No

BU+D
BEND
Pulled Return Bend
No

BUFL
BEND
Flanged Return Bend
No

C3**
INST
3-Way Control Valve
No
13SP
C4**
INST
4-Way Control Valve
No
13SP
CA**
INST
Angled Control Valve
Yes
13SP
CEBW
COUP
Butt Weld Elbolet
Yes

CESC
COUP
Screwed Fitting Elbolet
Yes

CESW
COUP
Socket Weld Elbolet
Yes

CFSC
COUP
Half Coupling - Screwed
Yes

CFSW
COUP
Half Coupling - Socket Screwed
Yes

CH**
PCOM
Hose Coupling
Yes

CK**
VALV
Check Valve
Yes

COCP
COUP
Compression Fitting Coupling
Yes

COSC
COUP
Screwed Fitting Coupling
Yes

COSW
COUP
Socket Weld Coupling
Yes

CPBW
REDU
Butt Weld Concentric Reducer
Yes

CPCF
COUP
Centre Flange
Yes

CPFL
REDU
Flanged Concentric Reducer
Yes

CPWP
COUP
Watertight Bulkhead and Deck
Yes

CPWT
COUP
Welded Sleeve thru Pipe
Yes

CPWW
COUP
Welded Sleeve thru Pipe
Yes

CRBW
CROS
Butt Weld Cross
No

CRCP
CROS
Compression Fitting Cross
No

CRFL
CROS
Flanged Cross
No

CRRF
CROS
Set On Reinforced Cross
No

CRSC
CROS
Screwed Fitting Cross
No

CRSO
CROS
Set On Cross
No

CRSW
CROS
Socket Weld Cross
No

CSBW
REDU
Butt Weld Concentric Reducer
Yes

CSFL
REDU
Flanged Concentric Reducer
Yes

CTBW
REDU
Butt Weld Concentric Reducer with Tee
Yes

CTFL
REDU
Flanged Concentric Reducer with Tee
Yes

CTSC
REDU
Screwed Fitting Concentric with Tee
Yes

CTSW
REDU
Socket Weld Concentric Reducer with Tee
Yes

CV**
INST
Control Valve
Yes
13SP
CXBW
REDU
Butt Weld Concentric Reducer with Tee
Yes

CXFL
REDU
Flanged Concentric Reducer with Tee
Yes

CZBW
REDU
Butt Weld Concentric Reducer with Tee
Yes

CZFL
REDU
Flanged Concentric Reducer with Tee
Yes

DR
INST
Rupture Disc
Yes

EBSC
ELBO
Screwed Fitting (Male) Elbow
No

ELBW
ELBO
Butt Weld Elbow
No

ELCP
ELBO
Compression Fitting Elbow
No

ELSC
ELBO
Screwed Fitting Elbow
No

ELSW
ELBO
Socket Weld Elbow
No

EPBW
REDU
Butt Weld Eccentric Reducer
Yes

EPFL
REDU
Flanged Eccentric Reducer
Yes

ER**
ELBO
Reducing Elbow
No

ESBW
REDU
Butt Weld Eccentric Reducer
Yes

ESFL
REDU
Flanged Eccentric Reducer
Yes

ETBW
ELBO
Butt Weld Elbow with Tee
No

ETCP
ELBO
Compression Fitting Elbow with Tee
No

ETSC
ELBO
Screwed Fitting Elbow with Tee
No

ETSW
ELBO
Socket Weld Elbow with Tee
No

EUBW
ELBO
Butt Weld Return Elbow
No

EX**
PCOM
Expansion Bellows
Yes

EXBW
REDU
Butt Weld Eccentric Reducer with Tee
Yes

EXFL
REDU
Flanged Eccentric Reducer with Tee
Yes

EZBW
REDU
Butt Weld Eccentric Reducer with Tee
Yes

EZFL
REDU
Flanged Eccentric Reducer with Tee
Yes

FA**
FILT
Angled Filter
Yes

FI**
FILT
Straight-Through (In-Line) Filter
Yes

FLBL
FLAN
Blind or Blanking Flange
Yes

FLBL
FBLI
Blind or Blanking Flange
Yes

FLFL
FLAN
Flared Flange
Yes

FLLB
FLAN
Loose Backing Flange
Yes

FLOR
ATTA
Floor Penetration Type ATTA
Yes

FLOW

Flow Arrow
Yes

FLRC
FLAN
Reducing Flange
Yes

FLRC
FBLI
Reducing Flange
Yes

FLRE
FLAN
Eccentric Reducing Flange
Yes

FLRE
FBLI
Eccentric Reducing Flange
Yes

FLRG
LJSE
Lap Joint Ring
No

FLSC
FLAN
Screwed Fitting Flange
Yes

FLSE
LJSE
Lap Joint Stub End
No

FLSJ
FLAN
Slip-on J-Type Welded Flange
Yes

FLSO
FLAN
Slip-on Flange
Yes

FLSW
FLAN
Socket Weld Flange
Yes

FLWN
FLAN
Weld Neck Flange
Yes

FO**
FILT
Offset Filter
Yes

FOSO
FLAN
Slip-on Flange with Orifice
Yes

FOWN
FLAN
Weld Neck Flange with Orifice
Yes

FPFL
FTUB
Fixed Length Pipe with Flanged Ends
No

FPPL
FTUB
Fixed Length Pipe with Plain Ends
Yes

FR**
FILT
Return Filter
No

FT**
PCOM
Flame Trap
Yes

FX**
PCOM
Flexible Hose
Yes

FY**
FILT
‘Y’-type Filter/Strainer
Yes

H3**
INST
3-Way Control Valve
No
12SP
H4**
INST
4-Way Control Valve
No
12SP
HA**
INST
Angled Control Valve
Yes
12SP
HC**
OLET
Screwed Half Coupling
Yes

HC**
OLET
Socket Weld Half Coupling
Yes

HV**
INST
Control Valve
Yes
12SP
IA**
INST
Angled Instrument
Yes

IDFL
INST
Flanged Instrument with Dial
No

IDPL
INST
Instrument with Dial
No

II**
INST
Instrument
Yes

IO**
INST
Offset Instrument
Yes

IR**
INST
Return Instrument
No

ITFL
OLET
Flanged Instrument Tee
No

JA**
INST
Two-Level Multiport Valve
No

JB**
INST
Two-Level Multiport Valve
No

JC**
INST
Two-Level Multiport Valve
No

JE**
INST
Two-Level Multiport Valve
No

JG**
INST
Three-Level Multiport Valve
No

JK**
INST
Two-Level Multiport Valve
No

JL**
INST
One-Level Multiport Valve
No

JM**
INST
Three-Level Multiport Valve
No

JN**
INST
Three-Level Multiport Valve
No

JO**
INST
Two-Level Multiport Valve
No

JP**
INST
Two-Level Multiport Valve
No

JT**
INST
One-Level Multiport Valve
No

JU**
INST
Three-Level Multiport Valve
No

JV**
INST
Two-Level Multiport Valve
No

JW**
INST
Three-Level Multiport Valve
No

JX**
INST
Three-Level Multiport Valve
No

JY**
INST
Three-Level Multiport Valve
No

JZ**
INST
Three-Level Multiport Valve
No

KABW
CAP
Butt Weld Cap
Yes

KACP
CAP
Compression Fitting Cap
Yes

KASC
CAP
Screwed Fitting Cap
Yes

KASW
CAP
Socket Weld Cap
Yes

L@BW
BEND
Butt Weld Lobster Back Bend
No

L@FL
BEND
Flanged Lobster Back Bend
No

LA**
OLET
Butt Weld Latrolet
Yes

LA**
OLET
Screwed Fitting Latrolet
Yes

LA**
OLET
Socket Weld Latrolet
Yes

LG**
INST
Level Gauge
No

M3**
INST
3-Way Motorised Valve
No
11SP
M4**
INST
4-Way Motorised Valve
No

MA**
INST
Angled Control Valve
Yes
11SP
MIBW
BEND
Butt Weld Mitred Bend
No

MIFL
BEND
Flanged Mitred Bend
No

MTBW
BEND
Butt Weld Mitred Bend with Tee
No

MTFL
BEND
Flanged Mitred Bend with Tee
No

MV**
INST
Motorised Valve
Yes
11SP
NBSC
COUP
Screwed Nipple
Yes

NC**
PCOM
Non-Category Item
Yes

NC**
SHU
Non-Category Item
Yes

NI**
OLET
Plain End Nipolet
Yes

NI**
OLET
Screwed Fitting Nipolet
Yes

NRSC
COUP
Screwed Fitting Nipple
Yes

OP
INST
Orifice Plate
Yes

OTBW
REDU
Butt Weld Eccentric Reducer with Tee
Yes

OTFL
REDU
Flanged Eccentric Reducer with Tee
Yes

OTSC
REDU
Screwed Fitting Eccentric Reducer with Tee
Yes

PB+D
BEND
Pulled Bend
No

PF
CLOS
Fixed Length Pipe Block
Yes

PL
PCOM
Plug
Yes

PR
INST
Restrictor Plate
Yes

PV
CLOS
Variable Length Pipe Block
Yes

RA**
INST
Angled Relief Valve
Yes
02SP
RBSC
REDU
Screwed Fitting Concentric Reducing Bush
Yes

RBSW
REDU
Socket Weld Concentric Reducing Bush
Yes

RCBW
REDU
Butt Weld Concentric Reducer
Yes

RCCP
REDU
Compression Fitting Concentric Reducer
Yes

RCFL
REDU
Flanged Concentric Reducer
Yes

RCSC
REDU
Screwed Fitting Concentric Reducer
Yes

RCSW
REDU
Socket Weld Concentric Reducer
Yes

RD
VENT
Rupture Disc
Yes

REBW
REDU
Butt Weld Eccentric Reducer
Yes

REFL
REDU
Flanged Eccentric Reducer
Yes

RESC
REDU
Screwed Fitting Eccentric Reducer
Yes

RF
REDU
Special Reducing Flange
Yes

RNSC
REDU
Nipple Fitting Concentric Reducer
Yes

RP
PCOM
Restrictor Plate
Yes

RV**
INST
Relief Valve
Yes

S3**
INST
3-Way Control Valve with Square Indicator
No
10SP
S4**
INST
4-Way Control Valve with Square Indicator
No
10SP
SA**
INST
Angled Control Valve with Square Indicator
Yes
10SP
SB
PCOM
Spectacle Blind
Yes

SG**
PCOM
Sight Glass
Yes

SK**
OLET
Socket Weld Sockolet
Yes

SP
PCOM
Slip Plate
Yes

SR
PCOM
Slip Ring
Yes

SV**
INST
Control Valve with Square Indicator
Yes
10SP
SW**
OLET
Butt Weld Sweepolet
Yes

T@BW
BEND
Butt Weld Lobster Back Bend with Tee
No

T@FL
BEND
Flanged Lobster Back Bend with Tee
No

TA**
TRAP
Angled Trap
Yes

TB+D
BEND
Pulled Bend with Tee
No

TEBW
TEE
Butt Weld Tee
No

TECP
TEE
Compression Fitting Tee
No

TEFL
TEE
Flanged Tee
No

TERF
TEE
Reinforced Tee
No

TESC
TEE
Screwed Fitting Tee
No

TESI
TEE
Reserved for pipe tappings
No

TESO
TEE
Set On Tee
No

TESW
TEE
Socket Weld Tee
No

TH**
OLET
Screwed Fitting Thredolet
Yes

TI**
TRAP
In-line Trap
Yes

TO**
TRAP
Offset Trap
Yes

TPUL
TEE
Pulled Tee
No

TR**
TRAP
Return Trap
No

TSBW
TEE
Butt Weld Swept Tee
No

TSCP
TEE
Compression Fitting Swept Tee
No

TSFL
TEE
Flanged Swept Tee
No

TSSW
TEE
Socket Weld Swept Tee
No

TU**
PCOM
Tundish or Funnel
Yes

UNBW
UNIO
Union - Butt Weld
Yes

UNIV
PCOM
Universal Skey for special fittings
Yes Refer to
ISODRAFT User Guide

UNSC
UNIO
Screwed Fitting Union
Yes

UNSW
UNIO
Butt or Socket Weld Union
Yes

V3**
VTWA
3-Way Valve
No
01SP
V4**
VFWA
4-Way Valve
No
01SP
VB**
VALV
Ball Valve
Yes
03SP
VC**
VALV
Check Valve
Yes

VD**
VALV
Diaphragm Valve
Yes
01SP
VG**
VALV
Globe Valve
Yes
01SP
VK**
VALV
Cock Valve
Yes
03SP
VN**
VALV
Needle Valve
Yes
06SP
VP**
VALV
Plug Valve
Yes
07SP
VR**
VALV
Relief Valve
Yes
02SP
VS**
VALV
Slide Valve
Yes
08SP
VT**
VALV
Gate Valve
Yes
05SP
VV**
VALV
Basic Valve
Yes
01SP
VX**
VALV
Pressure Reducing Valve
Yes
09SP
VY**
VALV
Butterfly Valve
Yes
03SP
WF
WELD
Field Fitted Weld
No

WLC
OLET
Welded Circular Lug
Yes

WLR
OLET
Welded Rectangular Lug
Yes

WS
WELD
Site Weld
No

WTBW
OLET
Butt Weld Weldolet
Yes

WW
WELD
Shop Weld
No

X@**
CROS
Generic Y-type Cross with user-definable out- and off- legs
Yes

XA**
INST
Angled Pressure Reducing Valve
Yes
09SP
XV**
INST
Pressure Reducing Valve
Yes
09SP
Y@**
TEE
Generic Y-type Tee with user-definable out- and off- legs
Yes

01HG

Hanger (As a basis for user-defined hangers; refer to ISODRAFT User Guide, Section 10.4, Defining a New Hanger)
Yes

@
in Bends, denotes the number of bend segments (range 1‑9)
in X-type and Y-type Crosses/Tees, replaced by an integer in the range 1 to 4, 1
indicating the largest bore, 4 indicating the smallest bore.
+
denotes the ratio of the bend radius to the pipe bore (range 1‑9)

SKEY
GTYPE
COMPONENT
USER DEFINABLE?
SPINDLE TYPE
AR**
VALV
Angled Pressure Reducing Valve
Yes
09SP
AV**
VALV
Angled Valve
Yes
01SP
AX**
VALV
Angled Relief Valve or Vent
Yes
02SP
BA**
PCOM
Angle Block
Yes
BEFL
BEND
Flanged Bend
No
BO**
PCOM
Offset Block
Yes
BR**
PCOM
Return Block
Yes
BTFL
BEND
Flanged Bend with Tee
No
BU+D
BEND
Pulled Return Bend
No
BUFL
BEND
Flanged Return Bend
No
C3**
INST
3-Way Control Valve
No
13SP
C4**
INST
4-Way Control Valve
No
13SP
CA**
INST
Angled Control Valve
Yes
13SP
CEBW
COUP
Butt Weld Elbolet
Yes
CESC
COUP
Screwed Fitting Elbolet
Yes
CESW
COUP
Socket Weld Elbolet
Yes
CFSC
COUP
Half Coupling - Screwed
Yes
CFSW
COUP
Half Coupling - Socket Screwed
Yes
CH**
PCOM
Hose Coupling
Yes
CK**
VALV
Check Valve
Yes
COCP
COUP
Compression Fitting Coupling
Yes
COSC
COUP
Screwed Fitting Coupling
Yes
COSW
COUP
Socket Weld Coupling
Yes
CPBW
REDU
Butt Weld Concentric Reducer
Yes
CPCF
COUP
Centre Flange
Yes
CPFL
REDU
Flanged Concentric Reducer
Yes
CPWP
COUP
Watertight Bulkhead and Deck
Yes
CPWT
COUP
Welded Sleeve thru Pipe
Yes
CPWW
COUP
Welded Sleeve thru Pipe
Yes
CRBW
CROS
Butt Weld Cross
No
CRCP
CROS
Compression Fitting Cross
No
CRFL
CROS
Flanged Cross
No
CRRF
CROS
Set On Reinforced Cross
No
CRSC
CROS
Screwed Fitting Cross
No
CRSO
CROS
Set On Cross
No
CRSW
CROS
Socket Weld Cross
No
CSBW
REDU
Butt Weld Concentric Reducer
Yes
CSFL
REDU
Flanged Concentric Reducer
Yes
CTBW
REDU
Butt Weld Concentric Reducer with Tee
Yes
CTFL
REDU
Flanged Concentric Reducer with Tee
Yes
CTSC
REDU
Screwed Fitting Concentric with Tee
Yes
CTSW
REDU
Socket Weld Concentric Reducer with Tee
Yes
CV**
INST
Control Valve
Yes
13SP
CXBW
REDU
Butt Weld Concentric Reducer with Tee
Yes
CXFL
REDU
Flanged Concentric Reducer with Tee
Yes
CZBW
REDU
Butt Weld Concentric Reducer with Tee
Yes
CZFL
REDU
Flanged Concentric Reducer with Tee
Yes
DR
INST
Rupture Disc
Yes
EBSC
ELBO
Screwed Fitting (Male) Elbow
No
ELBW
ELBO
Butt Weld Elbow
No
ELCP
ELBO
Compression Fitting Elbow
No
ELSC
ELBO
Screwed Fitting Elbow
No
ELSW
ELBO
Socket Weld Elbow
No
EPBW
REDU
Butt Weld Eccentric Reducer
Yes
EPFL
REDU
Flanged Eccentric Reducer
Yes
ER**
ELBO
Reducing Elbow
No
ESBW
REDU
Butt Weld Eccentric Reducer
Yes
ESFL
REDU
Flanged Eccentric Reducer
Yes
ETBW
ELBO
Butt Weld Elbow with Tee
No
ETCP
ELBO
Compression Fitting Elbow with Tee
No
ETSC
ELBO
Screwed Fitting Elbow with Tee
No
ETSW
ELBO
Socket Weld Elbow with Tee
No
EUBW
ELBO
Butt Weld Return Elbow
No
EX**
PCOM
Expansion Bellows
Yes
EXBW
REDU
Butt Weld Eccentric Reducer with Tee
Yes
EXFL
REDU
Flanged Eccentric Reducer with Tee
Yes
EZBW
REDU
Butt Weld Eccentric Reducer with Tee
Yes
EZFL
REDU
Flanged Eccentric Reducer with Tee
Yes
FA**
FILT
Angled Filter
Yes
FI**
FILT
Straight-Through (In-Line) Filter
Yes
FLBL
FLAN
Blind or Blanking Flange
Yes
FLBL
FBLI
Blind or Blanking Flange
Yes
FLFL
FLAN
Flared Flange
Yes
FLLB
FLAN
Loose Backing Flange
Yes
FLOR
ATTA
Floor Penetration Type ATTA
Yes
FLOW
Flow Arrow
Yes
FLRC
FLAN
Reducing Flange
Yes
FLRC
FBLI
Reducing Flange
Yes
FLRE
FLAN
Eccentric Reducing Flange
Yes
FLRE
FBLI
Eccentric Reducing Flange
Yes
FLRG
LJSE
Lap Joint Ring
No
FLSC
FLAN
Screwed Fitting Flange
Yes
FLSE
LJSE
Lap Joint Stub End
No
FLSJ
FLAN
Slip-on J-Type Welded Flange
Yes
FLSO
FLAN
Slip-on Flange
Yes
FLSW
FLAN
Socket Weld Flange
Yes
FLWN
FLAN
Weld Neck Flange
Yes
FO**
FILT
Offset Filter
Yes
FOSO
FLAN
Slip-on Flange with Orifice
Yes
FOWN
FLAN
Weld Neck Flange with Orifice
Yes
FPFL
FTUB
Fixed Length Pipe with Flanged Ends
No
FPPL
FTUB
Fixed Length Pipe with Plain Ends
Yes
FR**
FILT
Return Filter
No
FT**
PCOM
Flame Trap
Yes
FX**
PCOM
Flexible Hose
Yes
FY**
FILT
‘Y’-type Filter/Strainer
Yes
H3**
INST
3-Way Control Valve
No
12SP
H4**
INST
4-Way Control Valve
No
12SP
HA**
INST
Angled Control Valve
Yes
12SP
HC**
OLET
Screwed Half Coupling
Yes
HC**
OLET
Socket Weld Half Coupling
Yes
HV**
INST
Control Valve
Yes
12SP
IA**
INST
Angled Instrument
Yes
IDFL
INST
Flanged Instrument with Dial
No
IDPL
INST
Instrument with Dial
No
II**
INST
Instrument
Yes
IO**
INST
Offset Instrument
Yes
IR**
INST
Return Instrument
No
ITFL
OLET
Flanged Instrument Tee
No
JA**
INST
Two-Level Multiport Valve
No
JB**
INST
Two-Level Multiport Valve
No
JC**
INST
Two-Level Multiport Valve
No
JE**
INST
Two-Level Multiport Valve
No
JG**
INST
Three-Level Multiport Valve
No
JK**
INST
Two-Level Multiport Valve
No
JL**
INST
One-Level Multiport Valve
No
JM**
INST
Three-Level Multiport Valve
No
JN**
INST
Three-Level Multiport Valve
No
JO**
INST
Two-Level Multiport Valve
No
JP**
INST
Two-Level Multiport Valve
No
JT**
INST
One-Level Multiport Valve
No
JU**
INST
Three-Level Multiport Valve
No
JV**
INST
Two-Level Multiport Valve
No
JW**
INST
Three-Level Multiport Valve
No
JX**
INST
Three-Level Multiport Valve
No
JY**
INST
Three-Level Multiport Valve
No
JZ**
INST
Three-Level Multiport Valve
No
KABW
CAP
Butt Weld Cap
Yes
KACP
CAP
Compression Fitting Cap
Yes
KASC
CAP
Screwed Fitting Cap
Yes
KASW
CAP
Socket Weld Cap
Yes
L@BW
BEND
Butt Weld Lobster Back Bend
No
L@FL
BEND
Flanged Lobster Back Bend
No
LA**
OLET
Butt Weld Latrolet
Yes
LA**
OLET
Screwed Fitting Latrolet
Yes
LA**
OLET
Socket Weld Latrolet
Yes
LG**
INST
Level Gauge
No
M3**
INST
3-Way Motorised Valve
No
11SP
M4**
INST
4-Way Motorised Valve
No
MA**
INST
Angled Control Valve
Yes
11SP
MIBW
BEND
Butt Weld Mitred Bend
No
MIFL
BEND
Flanged Mitred Bend
No
MTBW
BEND
Butt Weld Mitred Bend with Tee
No
MTFL
BEND
Flanged Mitred Bend with Tee
No
MV**
INST
Motorised Valve
Yes
11SP
NBSC
COUP
Screwed Nipple
Yes
NC**
PCOM
Non-Category Item
Yes
NC**
SHU
Non-Category Item
Yes
NI**
OLET
Plain End Nipolet
Yes
NI**
OLET
Screwed Fitting Nipolet
Yes
NRSC
COUP
Screwed Fitting Nipple
Yes
OP
INST
Orifice Plate
Yes
OTBW
REDU
Butt Weld Eccentric Reducer with Tee
Yes
OTFL
REDU
Flanged Eccentric Reducer with Tee
Yes
OTSC
REDU
Screwed Fitting Eccentric Reducer with Tee
Yes
PB+D
BEND
Pulled Bend
No
PF
CLOS
Fixed Length Pipe Block
Yes
PL
PCOM
Plug
Yes
PR
INST
Restrictor Plate
Yes
PV
CLOS
Variable Length Pipe Block
Yes
RA**
INST
Angled Relief Valve
Yes
02SP
RBSC
REDU
Screwed Fitting Concentric Reducing Bush
Yes
RBSW
REDU
Socket Weld Concentric Reducing Bush
Yes
RCBW
REDU
Butt Weld Concentric Reducer
Yes
RCCP
REDU
Compression Fitting Concentric Reducer
Yes
RCFL
REDU
Flanged Concentric Reducer
Yes
RCSC
REDU
Screwed Fitting Concentric Reducer
Yes
RCSW
REDU
Socket Weld Concentric Reducer
Yes
RD
VENT
Rupture Disc
Yes
REBW
REDU
Butt Weld Eccentric Reducer
Yes
REFL
REDU
Flanged Eccentric Reducer
Yes
RESC
REDU
Screwed Fitting Eccentric Reducer
Yes
RF
REDU
Special Reducing Flange
Yes
RNSC
REDU
Nipple Fitting Concentric Reducer
Yes
RP
PCOM
Restrictor Plate
Yes
RV**
INST
Relief Valve
Yes
S3**
INST
3-Way Control Valve with Square Indicator
No
10SP
S4**
INST
4-Way Control Valve with Square Indicator
No
10SP
SA**
INST
Angled Control Valve with Square Indicator
Yes
10SP
SB
PCOM
Spectacle Blind
Yes
SG**
PCOM
Sight Glass
Yes
SK**
OLET
Socket Weld Sockolet
Yes
SP
PCOM
Slip Plate
Yes
SR
PCOM
Slip Ring
Yes
SV**
INST
Control Valve with Square Indicator
Yes
10SP
SW**
OLET
Butt Weld Sweepolet
Yes
T@BW
BEND
Butt Weld Lobster Back Bend with Tee
No
T@FL
BEND
Flanged Lobster Back Bend with Tee
No
TA**
TRAP
Angled Trap
Yes
TB+D
BEND
Pulled Bend with Tee
No
TEBW
TEE
Butt Weld Tee
No
TECP
TEE
Compression Fitting Tee
No
TEFL
TEE
Flanged Tee
No
TERF
TEE
Reinforced Tee
No
TESC
TEE
Screwed Fitting Tee
No
TESI
TEE
Reserved for pipe tappings
No
TESO
TEE
Set On Tee
No
TESW
TEE
Socket Weld Tee
No
TH**
OLET
Screwed Fitting Thredolet
Yes
TI**
TRAP
In-line Trap
Yes
TO**
TRAP
Offset Trap
Yes
TPUL
TEE
Pulled Tee
No
TR**
TRAP
Return Trap
No
TSBW
TEE
Butt Weld Swept Tee
No
TSCP
TEE
Compression Fitting Swept Tee
No
TSFL
TEE
Flanged Swept Tee
No
TSSW
TEE
Socket Weld Swept Tee
No
TU**
PCOM
Tundish or Funnel
Yes
UNBW
UNIO
Union - Butt Weld
Yes
UNIV
PCOM
Universal Skey for special fittings
Yes Refer to
ISODRAFT User Guide
UNSC
UNIO
Screwed Fitting Union
Yes
UNSW
UNIO
Butt or Socket Weld Union
Yes
V3**
VTWA
3-Way Valve
No
01SP
V4**
VFWA
4-Way Valve
No
01SP
VB**
VALV
Ball Valve
Yes
03SP
VC**
VALV
Check Valve
Yes
VD**
VALV
Diaphragm Valve
Yes
01SP
VG**
VALV
Globe Valve
Yes
01SP
VK**
VALV
Cock Valve
Yes
03SP
VN**
VALV
Needle Valve
Yes
06SP
VP**
VALV
Plug Valve
Yes
07SP
VR**
VALV
Relief Valve
Yes
02SP
VS**
VALV
Slide Valve
Yes
08SP
VT**
VALV
Gate Valve
Yes
05SP
VV**
VALV
Basic Valve
Yes
01SP
VX**
VALV
Pressure Reducing Valve
Yes
09SP
VY**
VALV
Butterfly Valve
Yes
03SP
WF
WELD
Field Fitted Weld
No
WLC
OLET
Welded Circular Lug
Yes
WLR
OLET
Welded Rectangular Lug
Yes
WS
WELD
Site Weld
No
WTBW
OLET
Butt Weld Weldolet
Yes
WW
WELD
Shop Weld
No
X@**
CROS
Generic Y-type Cross with user-definable out- and off- legs
Yes
XA**
INST
Angled Pressure Reducing Valve
Yes
09SP
XV**
INST
Pressure Reducing Valve
Yes
09SP
Y@**
TEE
Generic Y-type Tee with user-definable out- and off- legs
Yes
01HG
Hanger (As a basis for user-defined hangers; refer to ISODRAFT User Guide, Section 10.4, Defining a New Hanger)
Yes
BW
Butt Weld
CP
Compression Fitting
FL
Flange
SC
Screwed Fitting
SW
Socket Weld
PL
Plain
@
in Bends, denotes the number of bend segments (range 1‑9)
in X-type and Y-type Crosses/Tees, replaced by an integer in the range 1 to 4, 1
indicating the largest bore, 4 indicating the smallest bore.
+
denotes the ratio of the bend radius to the pipe bore (range 1‑9)
Note: **   denotes any of the following connection types:
BW
Butt Weld
CP
Compression Fitting
FL
Flange
SC
Screwed Fitting
SW
Socket Weld
PL
Plain
@
in Bends, denotes the number of bend segments (range 1‑9)
in X-type and Y-type Crosses/Tees, replaced by an integer in the range 1 to 4, 1
indicating the largest bore, 4 indicating the smallest bore.
+
denotes the ratio of the bend radius to the pipe bore (range 1‑9)

in alphabetic order.
,
The Basic Principles
Special Keys,
ISODRAFT User Guide
ISODRAFT User Guide,
Defining a New Hanger
Note
:


This appendix explains the PML 1 expressions package. These facilities are needed within AVEVA products, for example, to define report templates in AVEVA E3D Design.
Expressions have types. For example, you can have numeric expressions, text expressions and logical expressions. All the elements in an expression must be of the correct type. For example, if you have two numbers, x and y, and two text strings text1 and text2, the following expression is meaningless:
x + text1
$
x + text1
$
However, both of the following expressions are valid:
x + y
$ adds the values of the numeric variables.
text1 + text2
$ concatenates the two text strings.
x + y
$ adds the values of the numeric variables.
text1 + text2
$ concatenates the two text strings.
The following types of expressions are available:
x + text1
$
x + y
$ adds the values of the numeric variables.
text1 + text2
$ concatenates the two text strings.
Logical Expressions
Logical Array Expressions
Numeric (Real) Expressions
Real Arrays
Text Expressions
Logical Expressions
Logical Expressions
Logical Array Expressions
Logical Array Expressions
Numeric (Real) Expressions
Numeric (Real) Expressions
Real Arrays
Real Arrays
Text Expressions
Text Expressions
Note:
Generally, all these facilities are compatible with PML 2.

Logical Expressions
Logical Array Expressions
Numeric (Real) Expressions
Real Arrays
Text Expressions
Note
:
x + text1
x + y
text1 + text2
Logical Expressions
Logical Array Expressions
Numeric (Real) Expressions
Real Arrays
Text Expressions


The format of an expression, for example the use of brackets, spaces and quotes, is important. If you do not follow the rules given below you will get error messages:
Text must be enclosed in quotes. For example:

There must be a space between each operator and operand. For example:

Use round brackets to control the order of evaluation of expressions and to enclose the argument of a function. For example:

In general, you do not need spaces before or after brackets, except when a name is followed by a bracket. If there is no space, the bracket will be read as part of the name. For example:

 ‘This is text’
x + y
SIN(30)
(NAME EQ /VESS1 )


Operators are evaluated in the order of the following list: the ones at the top of the list are evaluated first.
Operator
Comments
BRACKETS
Brackets can be used to control the order in which operators are evaluated, in the same way as in normal arithmetic.
FUNCTIONS
* /
+ -
EQ, NEQ, LT, LE, GE, GT
NOT
AND
OR
Operator
Comments
BRACKETS
Brackets can be used to control the order in which operators are evaluated, in the same way as in normal arithmetic.
FUNCTIONS

* /

+ -

EQ, NEQ, LT, LE, GE, GT

NOT

AND

OR

Operator
Comments
BRACKETS
Brackets can be used to control the order in which operators are evaluated, in the same way as in normal arithmetic.
FUNCTIONS
* /
+ -
EQ, NEQ, LT, LE, GE, GT
NOT
AND
OR

Operator
Comments


Expressions can be nested using brackets. For example:
 ( (SIN(!angleA) * 2)  /  SIN(!angleB) )
 ( (SIN(!angleA) * 2)  /  SIN(!angleB) )

 ( (SIN(!angleA) * 2)  /  SIN(!angleB) )

 ( (SIN(!angleA) * 2)  /  SIN(!angleB) )


Logical expressions can contain:
Attributes of type logical, for example, BUILT.
Logical constants. The constants available are: TRUE, ON, YES for true, and FALSE, OFF, NO for false.
Logical operators.
Logical functions.
Attributes of type logical, for example, BUILT.
Attributes of type logical, for example, BUILT.
Logical constants. The constants available are: TRUE, ON, YES for true, and FALSE, OFF, NO for false.
Logical constants. The constants available are: TRUE, ON, YES for true, and FALSE, OFF, NO for false.
Logical operators.
Logical operators.
Logical functions.
Logical functions.

TRUE
ON
YES
FALSE
OFF
NO


The logical operators available are:
Operator
Comments
AND
EQ, NE
The operators EQ and NE may be applied to any pair of values of the same type.
GT, GE, LE, LT
The operators GE, LE, GT, and LT may only be used with numbers and positions. Refer to Positions, Directions and Orientations in Expressions (AVEVA E3D Design only) for further information.
NOT
OR
Operator
Comments
AND

EQ, NE
The operators EQ and NE may be applied to any pair of values of the same type.
GT, GE, LE, LT
The operators GE, LE, GT, and LT may only be used with numbers and positions. Refer to Positions, Directions and Orientations in Expressions (AVEVA E3D Design only) for further information.
NOT

OR

AND
Synopsis
log1 AND log2
-> logical
Description
Perform the logical AND between two logical values. Treats unset values as FALSE.
Side Effects
If one of the values is undefined and the other one is FALSE, the result is FALSE.
Example
TRUE and FALSE -> FALSE
Synopsis
log1 AND log2
-> logical
Description
Perform the logical AND between two logical values. Treats unset values as FALSE.
Side Effects
If one of the values is undefined and the other one is FALSE, the result is FALSE.
Example
TRUE and FALSE -> FALSE
EQ and NE
Synopsis
( number1 EQual number2)
-> logical
( text1 EQual text2 )
-> logical
( log1 EQual log2 )
-> logical
( id1 EQual id2 )
-> logical
( pos1 EQual pos2 )
-> logical
( dir1 EQual dir2 )
-> logical
( ori1 EQual ori2 )
-> logical
( pp1 EQual pp2 )
-> logical
( number1 NEqual number2 )
-> logical
( text1 NEqual text2 )
-> logical
( log1 NEqual log2 )
-> logical
( id1 NEqual id2 )
-> logical
( pos1 NEqual pos2 )
-> logical
( dir1 NEqual dir2 )
-> logical
( ori1 NEqual ori2 )
-> logical
( pp1 NEqual pp2 )
-> logical
Description
Compare two values. A special feature is used for the positions, only the coordinates specified are compared. Refer to Comparing Positions for further information.
Unset values result in FALSE across EQ, TRUE across NE.
Side Effects
If two positions have no common coordinate, for example, ’N 10 ne U 10’, the result is undefined. Units are consolidated across comparisons.
Example
( 1.0 eq 2.0) -> FALSE
Errors
None.
Synopsis
( number1 EQual number2)
-> logical
( text1 EQual text2 )
-> logical
( log1 EQual log2 )
-> logical
( id1 EQual id2 )
-> logical
( pos1 EQual pos2 )
-> logical
( dir1 EQual dir2 )
-> logical
( ori1 EQual ori2 )
-> logical
( pp1 EQual pp2 )
-> logical
( number1 NEqual number2 )
-> logical
( text1 NEqual text2 )
-> logical
( log1 NEqual log2 )
-> logical
( id1 NEqual id2 )
-> logical
( pos1 NEqual pos2 )
-> logical
( dir1 NEqual dir2 )
-> logical
( ori1 NEqual ori2 )
-> logical
( pp1 NEqual pp2 )
-> logical
Description
Compare two values. A special feature is used for the positions, only the coordinates specified are compared. Refer to Comparing Positions for further information.
Unset values result in FALSE across EQ, TRUE across NE.
Side Effects
If two positions have no common coordinate, for example, ’N 10 ne U 10’, the result is undefined. Units are consolidated across comparisons.
Example
( 1.0 eq 2.0) -> FALSE
Errors
None.
GT, GE, LE and LT
Synopsis
( number1 GT number2 )
> logical
( pos1 GT pos2 )
> logical
( number1 GE number2 )
> logical
( pos1 GE pos2 )
> logical
( number1 LE number2 )
> logical
( pos1 LE pos2 )
> logical
( number1 LT number2 )
> logical
( pos1 LT pos2 )
> logical
Description
Compare two values. A special feature is used for positions: only the coordinates specified are compared. Refer to Comparing Positions for further information.
For positions, since comparisons may be performed on more than one value, LT (GT) is not the inverse of GE (LE). Unset values result in false.
Side Effects
If two positions have no common coordinate, the result is undefined. For example, ’N 10 gt U 10’.
Units are consolidated across comparisons.
Example
( 1.0 LT 2.0) -> TRUE
( N 0 E 10 GT N 10 E 0 ) -> FALSE
( N 0 E 10 GT N 10 E 0 ) -> FALSE
Errors
None.
Synopsis
( number1 GT number2 )
> logical
( pos1 GT pos2 )
> logical
( number1 GE number2 )
> logical
( pos1 GE pos2 )
> logical
( number1 LE number2 )
> logical
( pos1 LE pos2 )
> logical
( number1 LT number2 )
> logical
( pos1 LT pos2 )
> logical
Description
Compare two values. A special feature is used for positions: only the coordinates specified are compared. Refer to Comparing Positions for further information.
For positions, since comparisons may be performed on more than one value, LT (GT) is not the inverse of GE (LE). Unset values result in false.
Side Effects
If two positions have no common coordinate, the result is undefined. For example, ’N 10 gt U 10’.
Units are consolidated across comparisons.
Example
( 1.0 LT 2.0) -> TRUE
( N 0 E 10 GT N 10 E 0 ) -> FALSE
( N 0 E 10 GT N 10 E 0 ) -> FALSE
Errors
None.
NOT
Synopsis
NOT log1
-> logical
Description
Perform the logical NOT on a logical value.
Side Effects
None.
Example
not TRUE -> FALSE
Errors
None.
Synopsis
NOT log1
-> logical
Description
Perform the logical NOT on a logical value.
Side Effects
None.
Example
not TRUE -> FALSE
Errors
None.
OR
Synopsis
OR log2
-> logical
Description
Perform the logical inclusive OR between two logical values. (The exclusive OR is defined by using NE.)
Allows numbers instead of logical values.
Side Effects
If one of the values is undefined and the other one is TRUE, the result is TRUE.
Example
TRUE or FALSE -> TRUE
Errors
None.
Synopsis
OR log2
-> logical
Description
Perform the logical inclusive OR between two logical values. (The exclusive OR is defined by using NE.)
Allows numbers instead of logical values.
Side Effects
If one of the values is undefined and the other one is TRUE, the result is TRUE.
Example
TRUE or FALSE -> TRUE
Errors
None.

Operator
Comments
AND
EQ, NE
The operators EQ and NE may be applied to any pair of values of the same type.
GT, GE, LE, LT
The operators GE, LE, GT, and LT may only be used with numbers and positions. Refer to Positions, Directions and Orientations in Expressions (AVEVA E3D Design only) for further information.
NOT
OR
Synopsis
log1 AND log2
-> logical
Description
Perform the logical AND between two logical values. Treats unset values as FALSE.
Side Effects
If one of the values is undefined and the other one is FALSE, the result is FALSE.
Example
TRUE and FALSE -> FALSE
Synopsis
( number1 EQual number2)
-> logical
( text1 EQual text2 )
-> logical
( log1 EQual log2 )
-> logical
( id1 EQual id2 )
-> logical
( pos1 EQual pos2 )
-> logical
( dir1 EQual dir2 )
-> logical
( ori1 EQual ori2 )
-> logical
( pp1 EQual pp2 )
-> logical
( number1 NEqual number2 )
-> logical
( text1 NEqual text2 )
-> logical
( log1 NEqual log2 )
-> logical
( id1 NEqual id2 )
-> logical
( pos1 NEqual pos2 )
-> logical
( dir1 NEqual dir2 )
-> logical
( ori1 NEqual ori2 )
-> logical
( pp1 NEqual pp2 )
-> logical
Description
Compare two values. A special feature is used for the positions, only the coordinates specified are compared. Refer to Comparing Positions for further information.
Unset values result in FALSE across EQ, TRUE across NE.
Side Effects
If two positions have no common coordinate, for example, ’N 10 ne U 10’, the result is undefined. Units are consolidated across comparisons.
Example
( 1.0 eq 2.0) -> FALSE
Errors
None.
Synopsis
( number1 GT number2 )
> logical
( pos1 GT pos2 )
> logical
( number1 GE number2 )
> logical
( pos1 GE pos2 )
> logical
( number1 LE number2 )
> logical
( pos1 LE pos2 )
> logical
( number1 LT number2 )
> logical
( pos1 LT pos2 )
> logical
Description
Compare two values. A special feature is used for positions: only the coordinates specified are compared. Refer to Comparing Positions for further information.
For positions, since comparisons may be performed on more than one value, LT (GT) is not the inverse of GE (LE). Unset values result in false.
Side Effects
If two positions have no common coordinate, the result is undefined. For example, ’N 10 gt U 10’.
Units are consolidated across comparisons.
Example
( 1.0 LT 2.0) -> TRUE
( N 0 E 10 GT N 10 E 0 ) -> FALSE
( N 0 E 10 GT N 10 E 0 ) -> FALSE
Errors
None.
Synopsis
NOT log1
-> logical
Description
Perform the logical NOT on a logical value.
Side Effects
None.
Example
not TRUE -> FALSE
Errors
None.
Synopsis
OR log2
-> logical
Description
Perform the logical inclusive OR between two logical values. (The exclusive OR is defined by using NE.)
Allows numbers instead of logical values.
Side Effects
If one of the values is undefined and the other one is TRUE, the result is TRUE.
Example
TRUE or FALSE -> TRUE
Errors
None.
Note:
The operators EQ, NE, LT, GT, LE, and GE are sometimes referred to as comparator or relational operators; NOT, AND, and OR are sometimes referred to as Boolean operators. Refer to Precision of Comparisons for tolerances in comparing numbers.

Positions, Directions and Orientations in Expressions (AVEVA E3D Design only)
Precision of Comparisons
Comparing Positions
Comparing Positions
Operator
Comments
AND
EQ, NE
EQ
NE
GT, GE, LE, LT
GE
LE
GT
LT
Positions, Directions and Orientations in Expressions (AVEVA E3D Design only)
NOT
OR
Note
:
EQ
NE
LT
GT
LE
GE
NOT
AND
OR
Precision of Comparisons
AND
Synopsis
log1 AND log2
-> logical
Description
AND
FALSE
Side Effects
FALSE
FALSE
Example
TRUE and FALSE -> FALSE
EQ and NE
Synopsis
( number1 EQual number2)
-> logical
( text1 EQual text2 )
-> logical
( log1 EQual log2 )
-> logical
( id1 EQual id2 )
-> logical
( pos1 EQual pos2 )
-> logical
( dir1 EQual dir2 )
-> logical
( ori1 EQual ori2 )
-> logical
( pp1 EQual pp2 )
-> logical
( number1 NEqual number2 )
-> logical
( text1 NEqual text2 )
-> logical
( log1 NEqual log2 )
-> logical
( id1 NEqual id2 )
-> logical
( pos1 NEqual pos2 )
-> logical
( dir1 NEqual dir2 )
-> logical
( ori1 NEqual ori2 )
-> logical
( pp1 NEqual pp2 )
-> logical
Description
Comparing Positions
FALSE
EQ
TRUE
NE
Side Effects
N 10 ne U 10
Example
( 1.0 eq 2.0) -> FALSE
Errors
GT, GE, LE and LT
Synopsis
( number1 GT number2 )
> logical
( pos1 GT pos2 )
> logical
( number1 GE number2 )
> logical
( pos1 GE pos2 )
> logical
( number1 LE number2 )
> logical
( pos1 LE pos2 )
> logical
( number1 LT number2 )
> logical
( pos1 LT pos2 )
> logical
Description
Comparing Positions
LT
GT
GE
LE
false
Side Effects
N 10 gt U 10
Example
( 1.0 LT 2.0) -> TRUE
( N 0 E 10 GT N 10 E 0 ) -> FALSE
( N 0 E 10 GT N 10 E 0 ) -> FALSE
Errors
NOT
Synopsis
NOT log1
-> logical
Description
NOT
Side Effects
Example
not TRUE -> FALSE
Errors
OR
Synopsis
OR log2
-> logical
Description
OR
OR
NE
Side Effects
TRUE
TRUE
Example
TRUE or FALSE -> TRUE
Errors


The logical functions available are:
Function
Comments
BADREF
DEFINED,UNDEFINED
CREATED
DELETED
EMPTY
MATCHWILD
MODIFIED
UNSET
VLOGICAL
Function
Comments
BADREF

DEFINED,UNDEFINED

CREATED

DELETED

EMPTY

MATCHWILD

MODIFIED

UNSET

VLOGICAL

BADREF
Synopsis
BADREF (id)
-> logical
Description
TRUE if id is invalid, otherwise FALSE.
Side Effects
None.
Example
BADREF(TREF) -> ’true’ if TREF=nulref
Errors
None.
Synopsis
BADREF (id)
-> logical
Description
TRUE if id is invalid, otherwise FALSE.
Side Effects
None.
Example
BADREF(TREF) -> ’true’ if TREF=nulref
Errors
None.
DEFINED and UNDEFINED
Synopsis
DEFined (variable_name)
-> logical
DEFined (variable_name,number)
-> logical
UNDEFined (variable_name)
-> logical
UNDEFined (variable_name , number)
-> logical
Description
With one argument, DEFINED is true only if the scalar variable, the array variable, or the array variable element exists.
With two arguments, DEFINED is true only if the first argument is an array variable, which has a value for the index, denoted by the second argument.
UNDEFINED( !foo ) is equivalent to NOT DEFINED( !foo ).
Side Effects
None.
Example
DEFINED ( !var ) -> TRUE
DEFINED ( !array ) -> TRUE
DEFINED ( !array[1] )) -> TRUE
DEFINED ( !array , 1 ) -> TRUE
DEFINED ( !var) -> FALSE
UNDEFINED ( !array) -> TRUE
DEFINED ( !array , 3 ) -> FALSE
Errors
None.
Synopsis
DEFined (variable_name)
-> logical
DEFined (variable_name,number)
-> logical
UNDEFined (variable_name)
-> logical
UNDEFined (variable_name , number)
-> logical
Description
With one argument, DEFINED is true only if the scalar variable, the array variable, or the array variable element exists.
With two arguments, DEFINED is true only if the first argument is an array variable, which has a value for the index, denoted by the second argument.
UNDEFINED( !foo ) is equivalent to NOT DEFINED( !foo ).
Side Effects
None.
Example
Errors
None.
CREATED
Synopsis
CREATED
-> logical
Description
Returns TRUE if the element has been created since the set date.
Side Effects
None.
Example
CREATED -> TRUE
Errors
None.
Synopsis
CREATED
-> logical
Description
Returns TRUE if the element has been created since the set date.
Side Effects
None.
Example
CREATED -> TRUE
Errors
None.
DELETED
Synopsis
DELETED
-> logical
Description
Returns TRUE if the element has been deleted since the set date.
Side Effects
None.
Example
DELETED -> TRUE
Errors
None.
Synopsis
DELETED
-> logical
Description
Returns TRUE if the element has been deleted since the set date.
Side Effects
None.
Example
DELETED -> TRUE
Errors
None.
EMPTY
Synopsis
EMPTY(text)
-> logical
Description
Returns TRUE if text is a zero length string, otherwise FALSE.
Side Effects
None.
Example
EMPTY(‘’) -> TRUE
EMPTY(‘not empty’) -> FALSE
Errors
None.
Synopsis
EMPTY(text)
-> logical
Description
Returns TRUE if text is a zero length string, otherwise FALSE.
Side Effects
None.
Example
EMPTY(‘’) -> TRUE
EMPTY(‘not empty’) -> FALSE
Errors
None.
MATCHWILD
Synopsis
MATCHW/ILD( text1, text2)
-> logical
MATCHW/ILD( text1, text2, text3)
-> logical
MATCHW/ILD( text1, text2, text3, text4)
-> logical
Description
Matches string text2 to string text1. If they are the same, then returns TRUE, otherwise FALSE. text2 may contain wildcard characters.
The defaults for wildcards are '*' for any number of characters, and '?' for a single character.
With three arguments, the multiple wildcard character '*' may be redefined by text3.
With four arguments the single wildcard character '?' may be redefined by text4.
Side Effects
None.
Example
MATCHW/ILD(’A big bottle of beer’,’*big*’) -> TRUE
MATCHW/ILD(’A big bottle of beer’,’??big*’) -> TRUE
MATCHW/ILD(’A big bottle of beer’,’???*big*’) -> FALSE
MATCHW/ILD(’A big bottle of beer’,’*big*beer’) -> TRUE
MATCHW/ILD(’** text’,’**!’,’!’) -> TRUE
Errors
None.
Synopsis
MATCHW/ILD( text1, text2)
-> logical
MATCHW/ILD( text1, text2, text3)
-> logical
MATCHW/ILD( text1, text2, text3, text4)
-> logical
Description
Matches string text2 to string text1. If they are the same, then returns TRUE, otherwise FALSE. text2 may contain wildcard characters.
The defaults for wildcards are '*' for any number of characters, and '?' for a single character.
With three arguments, the multiple wildcard character '*' may be redefined by text3.
With four arguments the single wildcard character '?' may be redefined by text4.
Side Effects
None.
Example
MATCHW/ILD(’A big bottle of beer’,’*big*’) -> TRUE
MATCHW/ILD(’A big bottle of beer’,’??big*’) -> TRUE
MATCHW/ILD(’A big bottle of beer’,’???*big*’) -> FALSE
MATCHW/ILD(’A big bottle of beer’,’*big*beer’) -> TRUE
MATCHW/ILD(’** text’,’**!’,’!’) -> TRUE
Errors
None.
MODIFIED
Synopsis
Description
For sophisticated queries relating to modifications. Returns TRUE if a modification has taken place.
Each attribute name may be followed by the following qualifying keywords:
OFFSPRING, to check this element and members.
SIGNIF, to check all elements for which this element represents the significant one.
PRIMARY, check all elements for which this element represents the primary one.
DESCENDANTS, this element and everything below (descendants).
The OF syntax may be used as for attributes.
The MODIFIED function or the GEOM, CATTEXT, and CATMOD pseudo-attributes can be used instead of the AFTERDATE function.Refer to Pseudo Attributes for further information.
The MODIFIED, DELETED, and CREATED functions may go anywhere within a PML1 expression, as in, after Q/VAR and within collections.
Side Effects
None.
Example
Q MODIFIED()
Returns TRUE if element has changed at all since the comparison date.
It will also return TRUE if the element has been created since the comparison date.
Q MODIFIED(POS,ORI)
Returns TRUE if POS or ORI modified since the comparison date.
Q MODIFIED(P1 POS)
Returns TRUE if the position of P1 has changed.
Q MODIFIED(GEOM DESCENDANTS
Returns TRUE if any geometry for item or any descendants has changed.
Q MODIFIED(PRIMARY)
Returns TRUE if any element for which this element is primary, has changed.
Q MODIFIED() OF /PIPE1
Returns TRUE if /PIPE1 has been modified since the comparison date.
Q (BUIL OR MODIFIED()OR ELECREC OF NEXT )
Errors
None.
Description
For sophisticated queries relating to modifications. Returns TRUE if a modification has taken place.
Each attribute name may be followed by the following qualifying keywords:
The OF syntax may be used as for attributes.
The MODIFIED function or the GEOM, CATTEXT, and CATMOD pseudo-attributes can be used instead of the AFTERDATE function.Refer to Pseudo Attributes for further information.

The MODIFIED, DELETED, and CREATED functions may go anywhere within a PML1 expression, as in, after Q/VAR and within collections.
Side Effects
None.
Example
Q MODIFIED()
Returns TRUE if element has changed at all since the comparison date.
It will also return TRUE if the element has been created since the comparison date.
Q MODIFIED(POS,ORI)
Returns TRUE if POS or ORI modified since the comparison date.
Q MODIFIED(P1 POS)
Returns TRUE if the position of P1 has changed.
Q MODIFIED(GEOM DESCENDANTS
Returns TRUE if any geometry for item or any descendants has changed.
Q MODIFIED(PRIMARY)
Returns TRUE if any element for which this element is primary, has changed.
Q MODIFIED() OF /PIPE1
Returns TRUE if /PIPE1 has been modified since the comparison date.
Q (BUIL OR MODIFIED()OR ELECREC OF NEXT )

Errors
None.
The MODIFIED, DELETED, and CREATED functions are not implemented within PML2 expressions.
UNSET
Synopsis
UNSET(value)
-> logical
Description
Returns TRUE if value is unset, otherwise FALSE. The value can be of any data type including ARRAYS. Normally, it will be a attribute.
Side Effects
None.
Example
UNSET( DESC )
TRUE where DESC is an unset text attribute.
UNSET(CRFA)
FALSE where CRFA contains unset reference attributes.
Errors
None.
Synopsis
UNSET(value)
-> logical
Description
Returns TRUE if value is unset, otherwise FALSE. The value can be of any data type including ARRAYS. Normally, it will be a attribute.
Side Effects
None.
Example
UNSET( DESC )
TRUE where DESC is an unset text attribute.
UNSET(CRFA)
FALSE where CRFA contains unset reference attributes.
Errors
None.
VLOGICAL
VLOGICAL is used for the late evaluation of variables.
Synopsis
VLOGICAL ( variable_name ))
-> logical
VLOGICAL ( variable_name , number)
-> logical
Description
With one argument, return the value of the scalar variable or the value of the array variable element as a logical.
With two arguments, return the value of the element corresponding to the index number as a logical.
The rules of conversion are:
TRUE for the strings 'T', 'TR', 'TRU' or 'TRUE' (case insensitive) or any numeric value not equal to zero.
FALSE for the strings 'F', 'FA', 'FAL', 'FALS' or 'FALSE' (case insensitive) or a numeric value equal to zero.
Scalar variables may not be indexed. For example, VTEXT(!var[1]) will return an error.
Array variables must have an index. For example, VTEXT (!array) will return an error.
The value cannot be translated into a logical.
See also VTEXT, used for late evaluation when a text result is required, and VVALUE, used for late evaluation when a numeric result is required.
Side Effects
If the scalar variable, the array variable, or the array variable element does not exist, the result is undefined.
Example
VLOG ( !array[1] ) -> TRUE
VLOG ( !array , 2 ) -> FALSE
Errors
None.
Synopsis
VLOGICAL ( variable_name ))
-> logical
VLOGICAL ( variable_name , number)
-> logical
Description
With one argument, return the value of the scalar variable or the value of the array variable element as a logical.
With two arguments, return the value of the element corresponding to the index number as a logical.
The rules of conversion are:
The value cannot be translated into a logical.
See also VTEXT, used for late evaluation when a text result is required, and VVALUE, used for late evaluation when a numeric result is required.
Side Effects
If the scalar variable, the array variable, or the array variable element does not exist, the result is undefined.
Example
VLOG ( !array[1] ) -> TRUE
VLOG ( !array , 2 ) -> FALSE
Errors
None.
Function
Comments
BADREF
DEFINED,UNDEFINED
CREATED
DELETED
EMPTY
MATCHWILD
MODIFIED
UNSET
VLOGICAL
Synopsis
BADREF (id)
-> logical
Description
TRUE if id is invalid, otherwise FALSE.
Side Effects
None.
Example
BADREF(TREF) -> ’true’ if TREF=nulref
Errors
None.
Synopsis
DEFined (variable_name)
-> logical
DEFined (variable_name,number)
-> logical
UNDEFined (variable_name)
-> logical
UNDEFined (variable_name , number)
-> logical
Description
With one argument, DEFINED is true only if the scalar variable, the array variable, or the array variable element exists.
With two arguments, DEFINED is true only if the first argument is an array variable, which has a value for the index, denoted by the second argument.
UNDEFINED( !foo ) is equivalent to NOT DEFINED( !foo ).
Side Effects
None.
Example
DEFINED ( !var ) -> TRUE
DEFINED ( !array ) -> TRUE
DEFINED ( !array[1] )) -> TRUE
DEFINED ( !array , 1 ) -> TRUE
DEFINED ( !var) -> FALSE
UNDEFINED ( !array) -> TRUE
DEFINED ( !array , 3 ) -> FALSE
Errors
None.
Synopsis
CREATED
-> logical
Description
Returns TRUE if the element has been created since the set date.
Side Effects
None.
Example
CREATED -> TRUE
Errors
None.
Synopsis
DELETED
-> logical
Description
Returns TRUE if the element has been deleted since the set date.
Side Effects
None.
Example
DELETED -> TRUE
Errors
None.
Synopsis
EMPTY(text)
-> logical
Description
Returns TRUE if text is a zero length string, otherwise FALSE.
Side Effects
None.
Example
EMPTY(‘’) -> TRUE
EMPTY(‘not empty’) -> FALSE
Errors
None.
Synopsis
MATCHW/ILD( text1, text2)
-> logical
MATCHW/ILD( text1, text2, text3)
-> logical
MATCHW/ILD( text1, text2, text3, text4)
-> logical
Description
Matches string text2 to string text1. If they are the same, then returns TRUE, otherwise FALSE. text2 may contain wildcard characters.
The defaults for wildcards are '*' for any number of characters, and '?' for a single character.
With three arguments, the multiple wildcard character '*' may be redefined by text3.
With four arguments the single wildcard character '?' may be redefined by text4.
Side Effects
None.
Example
MATCHW/ILD(’A big bottle of beer’,’*big*’) -> TRUE
MATCHW/ILD(’A big bottle of beer’,’??big*’) -> TRUE
MATCHW/ILD(’A big bottle of beer’,’???*big*’) -> FALSE
MATCHW/ILD(’A big bottle of beer’,’*big*beer’) -> TRUE
MATCHW/ILD(’** text’,’**!’,’!’) -> TRUE
Errors
None.
Description
For sophisticated queries relating to modifications. Returns TRUE if a modification has taken place.
Each attribute name may be followed by the following qualifying keywords:
OFFSPRING, to check this element and members.
SIGNIF, to check all elements for which this element represents the significant one.
PRIMARY, check all elements for which this element represents the primary one.
DESCENDANTS, this element and everything below (descendants).
The OF syntax may be used as for attributes.
The MODIFIED function or the GEOM, CATTEXT, and CATMOD pseudo-attributes can be used instead of the AFTERDATE function.Refer to Pseudo Attributes for further information.
The MODIFIED, DELETED, and CREATED functions may go anywhere within a PML1 expression, as in, after Q/VAR and within collections.
Side Effects
None.
Example
Q MODIFIED()
Returns TRUE if element has changed at all since the comparison date.
It will also return TRUE if the element has been created since the comparison date.
Q MODIFIED(POS,ORI)
Returns TRUE if POS or ORI modified since the comparison date.
Q MODIFIED(P1 POS)
Returns TRUE if the position of P1 has changed.
Q MODIFIED(GEOM DESCENDANTS
Returns TRUE if any geometry for item or any descendants has changed.
Q MODIFIED(PRIMARY)
Returns TRUE if any element for which this element is primary, has changed.
Q MODIFIED() OF /PIPE1
Returns TRUE if /PIPE1 has been modified since the comparison date.
Q (BUIL OR MODIFIED()OR ELECREC OF NEXT )
Errors
None.
Synopsis
UNSET(value)
-> logical
Description
Returns TRUE if value is unset, otherwise FALSE. The value can be of any data type including ARRAYS. Normally, it will be a attribute.
Side Effects
None.
Example
UNSET( DESC )
TRUE where DESC is an unset text attribute.
UNSET(CRFA)
FALSE where CRFA contains unset reference attributes.
Errors
None.
Synopsis
VLOGICAL ( variable_name ))
-> logical
VLOGICAL ( variable_name , number)
-> logical
Description
With one argument, return the value of the scalar variable or the value of the array variable element as a logical.
With two arguments, return the value of the element corresponding to the index number as a logical.
The rules of conversion are:
TRUE for the strings 'T', 'TR', 'TRU' or 'TRUE' (case insensitive) or any numeric value not equal to zero.
FALSE for the strings 'F', 'FA', 'FAL', 'FALS' or 'FALSE' (case insensitive) or a numeric value equal to zero.
Scalar variables may not be indexed. For example, VTEXT(!var[1]) will return an error.
Array variables must have an index. For example, VTEXT (!array) will return an error.
The value cannot be translated into a logical.
See also VTEXT, used for late evaluation when a text result is required, and VVALUE, used for late evaluation when a numeric result is required.
Side Effects
If the scalar variable, the array variable, or the array variable element does not exist, the result is undefined.
Example
VLOG ( !array[1] ) -> TRUE
VLOG ( !array , 2 ) -> FALSE
Errors
None.
                                  .-----------------------------------.
                                 /                                    |
>- MODIFIED-(-+- attname -------*- DESCENDANTS ‑-+-+-comma +-attname ‑’
              |                 |                | |
              |- DESCENDANTS -. |- SIGNIFICANT --| |
              |               | |                | |
              |- SIGNIFICANT--| |- PRIMARY ----- | |
              |               | |                | |
              |- PRIMARY -----| |- OFFSPRING-----| |
              |               | |                | |
              |- OFFSPRING ---| ‘----------------’ |
              |               |                    |
              |               |                    |
              |               |                    |
              ‘---------------+--------------------+--+-- ) - OF ‑ id
                                                      |
                                                      ‘-
OFFSPRING, to check this element and members.
SIGNIF, to check all elements for which this element represents the significant one.
PRIMARY, check all elements for which this element represents the primary one.
DESCENDANTS, this element and everything below (descendants).
OFFSPRING, to check this element and members.
OFFSPRING, to check this element and members.
SIGNIF, to check all elements for which this element represents the significant one.
SIGNIF, to check all elements for which this element represents the significant one.
PRIMARY, check all elements for which this element represents the primary one.
PRIMARY, check all elements for which this element represents the primary one.
DESCENDANTS, this element and everything below (descendants).
DESCENDANTS, this element and everything below (descendants).
TRUE for the strings 'T', 'TR', 'TRU' or 'TRUE' (case insensitive) or any numeric value not equal to zero.
FALSE for the strings 'F', 'FA', 'FAL', 'FALS' or 'FALSE' (case insensitive) or a numeric value equal to zero.
Scalar variables may not be indexed. For example, VTEXT(!var[1]) will return an error.
Array variables must have an index. For example, VTEXT (!array) will return an error.
TRUE for the strings 'T', 'TR', 'TRU' or 'TRUE' (case insensitive) or any numeric value not equal to zero.
TRUE for the strings 'T', 'TR', 'TRU' or 'TRUE' (case insensitive) or any numeric value not equal to zero.
FALSE for the strings 'F', 'FA', 'FAL', 'FALS' or 'FALSE' (case insensitive) or a numeric value equal to zero.
FALSE for the strings 'F', 'FA', 'FAL', 'FALS' or 'FALSE' (case insensitive) or a numeric value equal to zero.
Scalar variables may not be indexed. For example, VTEXT(!var[1]) will return an error.
Scalar variables may not be indexed. For example, VTEXT(!var[1]) will return an error.
Array variables must have an index. For example, VTEXT (!array) will return an error.
Array variables must have an index. For example, VTEXT (!array) will return an error.

Pseudo Attributes
Function
Comments
BADREF
DEFINED,UNDEFINED
CREATED
DELETED
EMPTY
MATCHWILD
MODIFIED
UNSET
VLOGICAL
BADREF
Synopsis
BADREF (id)
-> logical
Description
TRUE
id
FALSE
Side Effects
Example
BADREF(TREF) -> ’true’ if TREF=nulref
Errors
DEFINED and UNDEFINED
Synopsis
DEFined (variable_name)
-> logical
DEFined (variable_name,number)
-> logical
UNDEFined (variable_name)
-> logical
UNDEFined (variable_name , number)
-> logical
Description
DEFINED
true
DEFINED
true
UNDEFINED( !foo )
NOT DEFINED( !foo )
Side Effects
Example
Errors
CREATED
Synopsis
CREATED
-> logical
Description
TRUE
Side Effects
Example
CREATED -> TRUE
Errors
DELETED
Synopsis
DELETED
-> logical
Description
TRUE
Side Effects
Example
DELETED -> TRUE
Errors
EMPTY
Synopsis
EMPTY(text)
-> logical
Description
TRUE
FALSE
Side Effects
Example
EMPTY(‘’) -> TRUE
EMPTY(‘not empty’) -> FALSE
Errors
MATCHWILD
Synopsis
MATCHW/ILD( text1, text2)
-> logical
MATCHW/ILD( text1, text2, text3)
-> logical
MATCHW/ILD( text1, text2, text3, text4)
-> logical
Description
text2
text1
TRUE
FALSE
text2
*
?
*
text3
?
text4
Side Effects
Example
MATCHW/ILD(’A big bottle of beer’,’*big*’) -> TRUE
MATCHW/ILD(’A big bottle of beer’,’??big*’) -> TRUE
MATCHW/ILD(’A big bottle of beer’,’???*big*’) -> FALSE
MATCHW/ILD(’A big bottle of beer’,’*big*beer’) -> TRUE
MATCHW/ILD(’** text’,’**!’,’!’) -> TRUE
Errors
MODIFIED
Synopsis
                                  .-----------------------------------.
                                 /                                    |
>- MODIFIED-(-+- attname -------*- DESCENDANTS ‑-+-+-comma +-attname ‑’
              |                 |                | |
              |- DESCENDANTS -. |- SIGNIFICANT --| |
              |               | |                | |
              |- SIGNIFICANT--| |- PRIMARY ----- | |
              |               | |                | |
              |- PRIMARY -----| |- OFFSPRING-----| |
              |               | |                | |
              |- OFFSPRING ---| ‘----------------’ |
              |               |                    |
              |               |                    |
              |               |                    |
              ‘---------------+--------------------+--+-- ) - OF ‑ id
                                                      |
                                                      ‘-
Description
TRUE
OFFSPRING
SIGNIF
PRIMARY
DESCENDANTS
OF
MODIFIED
GEOM
CATTEXT
CATMOD
AFTERDATE
Pseudo Attributes
MODIFIED
DELETED
CREATED
Q/VAR
Side Effects
Example
Q MODIFIED()
TRUE
TRUE
Q MODIFIED(POS,ORI)
TRUE
POS
ORI
Q MODIFIED(P1 POS)
TRUE
P1
Q MODIFIED(GEOM DESCENDANTS
TRUE
Q MODIFIED(PRIMARY)
TRUE
Q MODIFIED() OF /PIPE1
TRUE
/PIPE1
Q (BUIL OR MODIFIED()OR ELECREC OF NEXT )
Errors
MODIFIED
DELETED
CREATED
UNSET
Synopsis
UNSET(value)
-> logical
Description
TRUE
value
FALSE
Side Effects
Example
UNSET( DESC )
TRUE
DESC
UNSET(CRFA)
FALSE
CRFA
Errors
VLOGICAL
VLOGICAL
Synopsis
VLOGICAL ( variable_name ))
-> logical
VLOGICAL ( variable_name , number)
-> logical
Description
TRUE
T
TR
TRU
TRUE
FALSE
F
FA
FAL
FALS
FALSE
VTEXT(!var[1])
VTEXT (!array)
VTEXT
VVALUE
Side Effects
Example
VLOG ( !array[1] ) -> TRUE
VLOG ( !array , 2 ) -> FALSE
Errors


Logical array expressions can contain:
AVEVA E3D Design attributes of type logical array. For example, LOGARR where 'LOGARR' is a UDA of type logical.
Logical constants. The constants available are: TRUE, ON, YES for true; and FALSE, OFF, NO for false.
Logical operators. Refer to Logical Operators for further information.
Logical functions. Refer to Logical Functions for further information.
AVEVA E3D Design attributes of type logical array. For example, LOGARR where 'LOGARR' is a UDA of type logical.
AVEVA E3D Design attributes of type logical array. For example, LOGARR where 'LOGARR' is a UDA of type logical.
Logical constants. The constants available are: TRUE, ON, YES for true; and FALSE, OFF, NO for false.
Logical constants. The constants available are: TRUE, ON, YES for true; and FALSE, OFF, NO for false.
Logical operators. Refer to Logical Operators for further information.
Logical operators. Refer to Logical Operators for further information.
Logical functions. Refer to Logical Functions for further information.
Logical functions. Refer to Logical Functions for further information.

Logical Operators
Logical Functions
LOGARR
TRUE
ON
YES
FALSE
OFF
NO
Logical Operators
.
Logical Functions
.


In expressions, integers are treated as reals; they are fully interchangeable. Numeric expressions can contain:
Numbers, for example, 32, 10.1, and so on.
Numbers can be given as as integer exponents, for example: 10 exp 5, and 5 E 6.
Numbers be qualified by unit names.
Attributes of type number, for example: XLEN.
Position, direction and orientation attributes which have a subscript to indicate which part of the array is required. For example, POS[2] means the second element of the POSITION attribute; that is, the northing. Note that position, direction and orientation attributes without subscripts can only be used in number array expressions.
The keyword PI (3.142).
Numeric operators.
Numeric functions.
Numbers, for example, 32, 10.1, and so on.
Numbers, for example, 32, 10.1, and so on.
Numbers can be given as as integer exponents, for example: 10 exp 5, and 5 E 6.
Numbers can be given as as integer exponents, for example: 10 exp 5, and 5 E 6.
Numbers be qualified by unit names.
Numbers be qualified by unit names.
Attributes of type number, for example: XLEN.
Attributes of type number, for example: XLEN.
Position, direction and orientation attributes which have a subscript to indicate which part of the array is required. For example, POS[2] means the second element of the POSITION attribute; that is, the northing. Note that position, direction and orientation attributes without subscripts can only be used in number array expressions.
Position, direction and orientation attributes which have a subscript to indicate which part of the array is required. For example, POS[2] means the second element of the POSITION attribute; that is, the northing. Note that position, direction and orientation attributes without subscripts can only be used in number array expressions.
The keyword PI (3.142).
The keyword PI (3.142).
Numeric operators.
Numeric operators.
Numeric functions.
Numeric functions.

POS[2]
POSITION


Numbers can be qualified by an appended unit string. Most common are the standard MM, M/etres, IN/ches, FT. However any of the standard units supported by the system (refer to Standard Units) can be used together with most combinations of them in compound unit strings. Feet and inches can also be shown as in 10'6.
Such values are always internally converted to internal database units so that any processing, comparison etc., done with these values is always done consistently and in the same units.
Function arguments if not purely numeric must be consistent with each other and the function itself. For example trigonometric functions (SIN, COS etc.) must have arguments defined in angle units (in any at all). General functions like MIN, MAX must have all arguments which have units consistent with the same physical quantity (e.g. units of length).
Arithmetic expressions must add and subtract unit consistent quantities.
Multiplication and division will generate reals of the same physical quantity (but scaled) if only one value has units, or a real of a new physical quantities if both have. For example there is a difference between (5 * 10inch) and (5mm * 10inch) which are 50inch and 1.9685 square inches respectively.
When numbers have units that are not consistent with each other, or the function or expression they are being used then warnings, and sometimes (for serious problems) errors are raised.

Standard Units
Standard Units
)


The numeric operators available are:
Operator
Comments
+
Addition.
-
Subtraction.
*
Multiplication.
/
Division.
Operator
Comments
+
Addition.
-
Subtraction.
*
Multiplication.
/
Division.

Operator
Comments
+
Addition.
-
Subtraction.
*
Multiplication.
/
Division.

Operator
Comments


Synopsis
number + number
-> number
number ‑ number
-> number
+ number
-> number
- number
-> number
Description
Add or subtract two numbers. They can also be used as unary operators at the beginning of a parenthesized sub-expression.
Side Effects
Units are consolidated across add and subtract.
Example
1 + 2 -> 3.0
1 ‑ 2 -> 1.0
+ 1 -> 1.0
- 1 -> -1.0
Errors
Floating point underflow.
Synopsis
number + number
-> number
number ‑ number
-> number
+ number
-> number
- number
-> number
Description
Add or subtract two numbers. They can also be used as unary operators at the beginning of a parenthesized sub-expression.
Side Effects
Units are consolidated across add and subtract.
Example
1 + 2 -> 3.0
1 ‑ 2 -> 1.0
+ 1 -> 1.0
- 1 -> -1.0
Errors
Floating point underflow.

Synopsis
number + number
-> number
number ‑ number
-> number
+ number
-> number
- number
-> number
Description
Add or subtract two numbers. They can also be used as unary operators at the beginning of a parenthesized sub-expression.
Side Effects
Units are consolidated across add and subtract.
Example
1 + 2 -> 3.0
1 ‑ 2 -> 1.0
+ 1 -> 1.0
- 1 -> -1.0
Errors
Floating point underflow.

Synopsis
number + number
-> number
number ‑ number
-> number
+ number
-> number
- number
-> number
Description
Side Effects
Example
1 + 2 -> 3.0
1 ‑ 2 -> 1.0
+ 1 -> 1.0
- 1 -> -1.0
Errors


Synopsis
number * number
-> number
number / number
-> number
Description
Multiply or divide two numbers.
They can also be used as unary operators at the beginning of a parenthesized sub-expression.
Numeric underflow is not considered to be an error and neither is it flagged as a warning. The result returned is zero.
Side Effects
Units are consolidated across Multiply and Divide.
The dimension of the result of the expression is determined from the combination of all the values being combined.
For example, '1kg / (1m * 1m *1m )' will give a density of '1kg/m3'.
Example
2 * 3 -> 6.0
2 / 3 -> 0.666666666
Errors
Divide by zero.
Synopsis
number * number
-> number
number / number
-> number
Description
Multiply or divide two numbers.
They can also be used as unary operators at the beginning of a parenthesized sub-expression.
Numeric underflow is not considered to be an error and neither is it flagged as a warning. The result returned is zero.
Side Effects
Units are consolidated across Multiply and Divide.
The dimension of the result of the expression is determined from the combination of all the values being combined.
For example, '1kg / (1m * 1m *1m )' will give a density of '1kg/m3'.
Example
2 * 3 -> 6.0
2 / 3 -> 0.666666666
Errors
Divide by zero.

Synopsis
number * number
-> number
number / number
-> number
Description
Multiply or divide two numbers.
They can also be used as unary operators at the beginning of a parenthesized sub-expression.
Numeric underflow is not considered to be an error and neither is it flagged as a warning. The result returned is zero.
Side Effects
Units are consolidated across Multiply and Divide.
The dimension of the result of the expression is determined from the combination of all the values being combined.
For example, '1kg / (1m * 1m *1m )' will give a density of '1kg/m3'.
Example
2 * 3 -> 6.0
2 / 3 -> 0.666666666
Errors
Divide by zero.

Synopsis
number * number
-> number
number / number
-> number
Description
zero
Side Effects
Example
2 * 3 -> 6.0
2 / 3 -> 0.666666666
Errors