Using custom IFC property sets
Property sets (Pset_XxxxXxxx) are used to assign groups of individual data fields, or properties, to IFC entities. Property sets can be very specific to an IFC entity, such as Pset_WallCommon to IfcWall, or more generally applied to any IFC entity, such as Pset_ManufacturerTypeInformation. Some property sets and their values are explicitly predefined and listed in the IFC specification; the naming convention Pset_Xxx applies to these officially specified property sets.
In addition to these specific predefined property sets that are part of the standard IFC schema, information can be attached to a symbol definition as a record format; this record format data can be used as a custom property set for IFC.
Due to the extensible nature of IFC, any user-defined data, even when not explicitly identified in the IFC specification, can still be captured and exchanged using custom property sets. Custom property sets must follow technical encoding conventions. They must have unique and allowable names; the names cannot duplicate specified property set names or begin with “Pset_.”
To make collaboration easier, the Vectorworks Software Developer’s Kit (SDK) has functions to create a custom property set either programmatically, or by importing an XML file that defines the property set. For detailed developer-oriented documentation related to the SDK, see developer.vectorworks.net.
Additionally, you can create custom IFC property sets in Vectorworks Design Suite products as described in the following topics.
Creating IFC-compatible record formats
To use a custom property set, first create the record format to define the data to be captured and exchanged in IFC format. The record format name becomes the name of the custom property set. Record formats designated for IFC export should be named with a VwPset_ or ePset_ prefix, or use a name that is defined by a specific Model View Definition (MVD) or documented model Exchange Requirement (ER). Record format names are case sensitive, and should not contain blank spaces (use an underscore if needed). For example, you might use a record format named “ePset_MyData.”
The record format can consist of any number of fields, designated by a Field Name and a Type; see Creating record formats. The field types are automatically converted to equivalent IFC value types. For example:
Field type |
IFC value type |
Integer |
IfcInteger |
Boolean |
IfcBoolean |
Text |
IfcText |
Number |
IfcReal |
To use more specific IFC value types, see "Using custom IFC value types" below.
Default field values are ignored when the record format is converted to an IFC property set. Therefore, leave the default value empty for Integer, Boolean, Text, and Pop-up field types; for Number field types, enter 0 (zero) as the default.
The record format displays in the Resource Manager, in the Record Format category. Like any resource, it can be shared between files using the export or import functionality of the Resource Manager.
Attaching a record format as an IFC custom property set
Once the custom record format has been created, convert it to an IFC property set and attach the data to an object, group, symbol definition, or symbol instance.
You can create a data mapping to automatically attach a custom Pset when a specific type of object is created; see Using the Data Manager.
In addition to custom record formats that you may have created, existing record formats containing Pset data, such as those attached to BIMobjects, can be selected for use.
To assign the custom IFC data:
Select the object, group, or symbol for assignment of IFC data.
From the Data tab of the Object Info palette, locate the attached IFC data (or click Attach IFC to attach it). When non-default IFC data is attached, click Custom pSets.
Alternatively, use the IFC Data command to specify the IFC object type as described in Assigning IFC data to objects. From the IFC Data dialog box, click Manage Custom Property Sets.
The Manage Custom Property Sets dialog box opens.
Click the Use column to select one or more record formats. Selected record formats display with a check mark.
Click OK to return to the Object Info palette or the IFC Data dialog box.
The selected custom record formats are listed as data sets in the IFC Entities/Psets list.
Select the custom Pset from the Data tab and click to give it a check mark (or if in the IFC Data dialog box, place a check mark in the Use column.) A check mark indicates that the Pset is enabled and attached to the object.
If you remove the check mark from a custom Pset, the record is not applied to the object, but the record remains in the object’s Psets list. To remove it, select it from the Data tab and click Detach. If you are in the IFC Data dialog box, click Manage Custom Property Sets, and remove the check mark from the Use column. When prompted, click OK to confirm that you want to delete the Pset from this object.
The bottom portion of the Object Info palette (or pane if in the IFC Data dialog box) displays the properties associated with the custom Pset. Select each property and assign a value to it.
Select the object for Viewing and editing IFC data from the Data tab of the Object Info palette.
The custom property set is saved in the current file. To use a custom property set in another file or project, export the record format to another file and repeat these steps to attach IFC data to objects.
Using custom IFC value types
If the IFC value types that are automatically assigned to your custom fields are not specific enough, you can pair each field in your custom record format with a field that identifies the IFC value (IfcValue) type for that field. Each pair must have the same field type.
For example, you might have three fields in a custom record format that contain the following information about a set of objects:
Product code (such as AB-124)
Whether the object is on the schedule (true or false)
Cost per unit (such as 75.00)
For each field that contains object data, create a companion field that indicates the IFC value type of the data. In this example, you would have a total of six fields in the record format:
Field pairs |
Type |
ProductCode IfcIdentifier |
Text Text |
OnSchedule IfcBoolean |
Boolean Boolean |
UnitCost IfcReal |
Number Number |
For simple fields (Text/Boolean/Number), if you specify a record without the companion fields, the Type is taken from the record field Type.
Choose an IFC value type and record format field type appropriate for the kind of information being captured by the field, such as a simple number, a TRUE/FALSE choice, a text string or simple label, or a measurement. In the Vectorworks program, allowable types include Integer, Boolean, Text, or Number. The Field Name identifying an IFC value type should be based on the IFC specification for the different defined types of values (IfcValue), as shown in the following list.
IFC value types |
Vectorworks record format field type and description |
IfcSimpleValue |
These are the most common and cover most user cases |
IfcInteger |
Integer: a simple whole number ranging from -32,768 to 32,767 |
IfcReal |
Number: General or Decimal |
IfcBoolean |
Boolean: also known as TRUE or FALSE |
IfcLogical |
Boolean: similar to Boolean, but can include a value of “UNKNOWN” |
IfcIdentifier |
Text: a simple text ID string, usually a mix of alphanumeric characters and symbols, up to 255 characters |
IfcLabel |
Text: a simple text name string, usually a mix of alphanumeric characters |
IfcText |
Text: a descriptive text field string |
IfcMeasureValue |
A complete list can be found in the IFC specification |
IfcAreaMeasure |
Number: Dimension Area |
IfcLengthMeasure |
Number: Dimension |
IfcMassMeasure |
Number: General or Decimal |
IfcThermodynamicTemperatureMeasure |
Number: General or Decimal |
IfcTimeMeasure |
Integer or Number: General |
IfcVolumeMeasure |
Number: Dimension Volume |
IfcDerivedMeasureValue |
A complete list can be found in the IFC specification |
IfcEnergyMeasure |
Number: General or Decimal |
IfcIlluminanceMeasure |
Number: General or Decimal |
IfcPowerMeasure |
Number: General or Decimal |
IfcThermalTransmittanceMeasure |
Number: General or Decimal |
IfcTimeStamp |
Integer or Number: General |
IfcLuminousIntensityDistributionMeasure |
Number: General or Decimal |