PCF compliance - shtirlitsDva/Revit-PCF-Exporter GitHub Wiki

The add-in implements parts of the PCF file specification to create a valid PCF file to be imported in other software which can read this format. The ultimate goal is to implement 100% of the format specification. The following discusses the parts that are currently implemented.

It is strongly recommended to acquaint yourself with the PCF file format specification. It can be found here.

PCF Header

PCF keyword Value used Note
ISOGEN-FILES ISOGEN.FLS Default spec
UNITS-BORE INCH, MM User defined, interface
UNITS-CO-ORDS INCH, MM User defined, interface
UNITS-BOLT-DIA MM Bolts not implemented
UNITS-BOLT-LENGTH MM Bolts not implemented
UNITS-ROTATION --- Not implemented
UNITS-STIFFNESS --- Not implemented
UNITS-WEIGHT KGS, LBS User defined, interface
UNITS-WEIGHT-LENGTH METER, FEET User defined, interface

Pipeline Header Information

Parameter PCF keyword
Piping System: Abbreviation PIPELINE-REFERENCE
PCF_PIPL_SPEC PIPING-SPEC
PCF_PIPL_TRACING TRACING-SPEC
PCF_PIPL_INSUL INSULATION-SPEC
PCF_PIPL_PAINT PAINTING-SPEC
PCF_PIPL_MISC1 -- MISC5 MISC-SPEC1 -- SPEC5
PCF_PIPL_JACKET JACKET-SPEC
PCF_PIPL_REV REVISION
PCF_PIPL_PROJID PROJECT-IDENTIFIER
PCF_PIPL_AREA AREA
PCF_PIPL_DATE DATE-DMY
PCF_PIPL_NOMCLASS NOMINAL-CLASS
Not implemented BEND-RADIUS
Not implemented ITEM-ATTRIBUTE0 -- 9
PCF_PIPL_TEMP PIPELINE-TEMP
PCF_PIPL_TYPE PIPELINE-TYPE
PCF_PIPL_GRAV SPECIFIC-GRAVITY
PCF_PIPL_PREFIX SPOOL-PREFIX
Not implemented ATTRIBUTE0 -- 199
Not implemented WELD-PREFIX-GENERAL
Not implemented WELD-PREFIX-FABRICATION
Not implemented WELD-PREFIX-ERECTION
Not implemented WELD-PREFIX-OFFSHORE
Not implemented SUPPORT-WELD-PREFIX-FABRICATION
Not implemented SUPPORT-WELD-PREFIX-ERECTION
Not implemented SUPPORT-WELD-PREFIX-OFFSHORE
Not implemented START-CO-ORDS
Not implemented HIGHEST-PART-NUMBER
Not implemented HIGHEST-UNIQUE-IDENTIFIER
Not implemented HIGHEST-SPOOL-NUMBER
Not implemented HIGHEST-WELD-NUMBER
Not implemented HIGHEST-WELD-SUPPORT-NUMBER
Not implemented HIGHEST-ASSEMBLY-NUMBER
Not implemented OFFSET-IMPERIAL, OFFSET-METRIC

Component attributes

Component type

PCF_ELEM_TYPE contains the component type specification such as ELBOW, VALVE, FLANGE, PIPE etc. This field is MANDATORY and in fact is the most important field for elements. NOTE: Elements with empty PCF_ELEM_TYPE are ignored when exporting data to PCF file.

Currently, the types in the following table are implemented. Please do not hesitate to request implementation of not yet implemented types.

Implemented Element Type Keywords
PIPE
ELBOW
TEE
REDUCER-CONCENTRIC
REDUCER-ECCENTRIC
FLANGE
FLANGE-BLIND
CAP
OLET
FILTER
INSTRUMENT
VALVE
VALVE-ANGLE
INSTRUMENT-DIAL

SKEY

PCF_ELEM_SKEY contains the PCF component keyword SKEY. See PCF reference guide for information about valid SKEY values. This field is MANDATORY except for pipes for which it is blank. This field is second most important element attribute.

Coordinates

Coordinates for such PCF keywords as END_POINT, BRANCH1_POINT, CENTRE_POINT etc. are obtained from Revit connector and element geometry. Nominal size of element ends is read from connector information. The coordinates and sizes are written in the units specified on the config tab of the interface. The keywords END_POINT will get appended (after the coordinates) anything stored in PCF_ELEM_END1 (primary connector) and PCF_ELEM_END2 (secondary connector). Keyword BRANCH1_POINT will get appended from PCF_ELEM_BP1. For more information see "External Keypoints" in PCF Reference Guide. NOTE: Please be aware, that for pipe elements, the Revit API does not reliably return connectors in a certain order. Thus you may notice that pipe ends switch places when comparing two consecutive exported PCF files. This is true for any elements actually, that's why pipe accessories and fittings implement primary, secondary and tertiary classification of end points -- to be able to reliable discern between end points.

Allowable Attributes

Please note that there are a many more attributes that are listed in Component Information Sheets in PCF Reference Guide. If they do not appear in the following table it means that they are not implemented.

Parameter PCF keyword
PCF_ELEM_CATEGORY CATEGORY
PCF_ELEM_STATUS STATUS
PCF_ELEM_SPEC PIPING-SPEC
PCF_ELEM_TRACING_SPEC TRACING-SPEC
PCF_ELEM_INSUL_SPEC INSULATION-SPEC
PCF_ELEM_PAINT_SPEC PAINTING-SPEC
PCF_ELEM_MISC1 -- MISC5 MISC-SPEC1 -- SPEC5
Not implemented INSULATION
Not implemented TRACING
Not implemented FLOW
Read from Revit UNIQUE-COMPONENT-IDENTIFIER
Not implemented MATERIAL-LIST

COMPONENT-IDENTIFIER

Every element is assigned a number by the program upon the exportation of PCF data. This number is stored in the PCF_ELEM_COMPID and is used in conjunction with PCF keyword COMPONENT-IDENTIFIER.

Associated Components

Not implemented.

Information Items

Messages

Not implemented.

Reference Dimensions

Not implemented.

Thickness Measurement Location

Not implemented

Other Information Items

Not implemented

Material Attributes

Material data

According to recommendation in PCF Reference Guide, every component must have an informative description. This information is stored in PCF_MAT_DESCR. This field is MANDATORY and is used in conjunction with PCF keyword DESCRIPTION. This data is then used to create a material list. Values for PCF keyword MATERIAL-IDENTIFIER is determined by the program and is stored in the parameter PCF_MAT_ID. Keyword ITEM-CODE is not implemented.

Additional Material Attributes

Not implemented.

Extraction Techniques

No parts implemented except:

Tap Connections

See TAP Connections.

Supports

Only basic support for pipe supports implemented -- just enough to get Isogen based products (fx. Spoolgen) to accept those.

Pipe supports implement following PCF keywords with corresponding Revit parameters:

Revit parameter PCF keyword Note
PCF_ELEM_TYPE Element declaration Must contain "SUPPORT"
PCF_ELEM_COMPID COMPONENT-IDENTIFIER Programatically determined
CO-ORDS Read from Revit geometry
PCF_ELEM_SKEY SKEY User input
PCF_ELEM_CATEGORY CATEGORY User input
PCF_MAT_ID MATERIAL-IDENTIFIER Programatically determined
PCF_ELEM_SUPPORT_NAME NAME Support specific keyword to facilitate export to Caesar II, must contain a valid name from PCF_RES_MAP.TXT. Must be empty for all other elements.
UNIQUE-COMPONENT-IDENTIFIER Programatically determined
PCF_MAT_DESCR DESCRIPTION Mandatory description of the support.

See Pipe supports for how to implement supports in Revit so that application parses them correctly.

System Isometrics

Not implemented

End Connection and Position Types

Not implemented

Equipment Isometrics

Not implemented

Special Types of Joint

The special types of joint may be achieved through manipulating the SKEY and end data. Experiment by setting up a few different types with different settings as described in the corresponding chapter in PCF Reference Guide.

Use PCF_ELEM_END1 and PCF_ELEM_END2 to specify needed end data.