DesignSeries00276.png数据映射示例

强制和默认值

文件交换场景通常要求某些数据字段不能为空,或者每个数据字段必须有一个默认值。为确保强制数据字段总包含值,在数据映射公式的末尾包含一个常量。

公式:

=FIRSTNONEMPTY(Style.'Function', 'NOTDEFINED')

=FIRSTNONEMPTY(OBJECTDATA('General Name'), Style.'Name', 'Roof')

如果所有数据字段都需要默认值,但您需要某些对象的特定值,则创建一个记录格式,并为将作为数据源的字段设置一个默认值。然后,将该记录仅附加到具有特定值的对象,这样您就可以根据需要更改附加记录中的默认值。没有附加记录的对象将获得默认值。

公式:

=FIRSTNONEMPTY('Pricing Details'.'Discount', FORMATFIELD('Pricing Details','Discount'))

组合字段和常量

可以使用数据映射公式来提高易读性,添加所需的前缀或后缀,或者组合或计算来自多个数据源的数据。

在本例中,我们需要对自动扶梯进行更好的说明,包括关于制造商和台阶宽度的重要信息。还可以添加一些文字来提高易读性。

oip_EscalatorEx.png 

公式:

=CONCAT('Escalator: ', 'Escalator'.'Type', ' Width: ', 'Escalator'.'Step width')

结果:

自动扶梯:Otis 510 M 宽度: 1000 (3' 3")

在另一个例子中,我们需要设置来自 Vectorworks 名称的窗对象的名称。如果没有 Vectorworks 名称,可以组合 ID 前缀、ID 标签和 ID 后缀字段。如果所有这些参数都为空,可以使用文字“窗户”来标识窗户。

oip_Window_ex.png 

公式:

=FIRSTNONEMPTY(OBJECTDATA('General Name'), CONCAT('Window'.'IDPrefix', 'Window'.'IDLabel', 'Window'.'IDSuffix'), 'Window')

没有 Vectorworks 名称的结果:

W-01A1

记录格式映射

在添加自定义记录和数据到绘图时,要将他们自动附加到 Vectorworks 插件对象,使用所需的数据字段创建记录格式,然后将字段映射到该对象的适当常量值、参数或样式。这样,可以更容易地使用报告对象数据(例如工作表、数据标记和数据可视化)的各种 Vectorworks 功能。

在本例中,“柜子计算”记录格式已创建,并将其添加为“底柜”插件对象的数据集。

data_mapping_1.png 

工作台面长度:映射到柜子的长度参数(工作台面的线性测量)

工作台面面积:我们在工作台面上添加 50 毫米的悬垂并计算面积,然后除以 1000*1000 以将结果从平方毫米转换为平方米(长度/深度单位为毫米)

公式: =('BaseCabinet'.'Length' * ('Base Cabinet'.'Depth' + 50)) / 1000000

邻墙:未映射;在“对象信息”面板的“数据”选项卡中,用户定义橱柜是否与墙相邻,从而确定是否需要后挡板

后挡板面积:如果需要后挡板,面积为 0.6 米(后挡板面板宽度) * 工作台面长度/1000(将米换算为毫米)。注意,此公式涉及到同一记录中的其他两个字段。

公式: =IF(FIRSTNONEMPTY('Cabinet Calculations'.'Adjacent to Wall', FORMATFIELD('Cabinet Calculations', 'Adjacent to Wall')), (0.6*FIRSTNONEMPTY('Cabinet Calculations'.'Countertop Length', FORMATFIELD('Cabinet Calculations', 'Countertop Length'))/1000, 0)

如果从映射中删除记录格式,则记录将从绘图中的所有底柜实例中分离。

当将底柜放置在绘图中时,“对象信息”面板的“数据”选项卡将显示已自动附加的记录数据。对于每个映射字段,通过映射列控制如何编辑该字段。

 

函数

在本例中,我们希望根据窗口对象的设置来计算IfcWindow.OverallHeight

oip_window_ex2.png 

Window_ex3.png 

只要窗户没有窗台,高度参数包含正确的值,如果有窗台,那就是一个 Brick 窗台类别。在任何其他情况下,窗台高度 (4)的值需要添加至窗户高度

公式:

='Window'.'OverallHeight' + IF('Window'.'IncludeSill' & 'Window'.'SillStyle' != 'Brick'), 'Window'.'SillHeight', 0)

结果,当没有窗台,或者窗台类型为砖(将高度值增加 0):

2000.0

结果,当有一个窗台,且不是砖(将高度值增加 150.0):

2150.0

使用选择器函数映射数据源

IFC 数据需要许多“枚举”类型的数据字段,例如 PredefinedTypeOperationTypeShapeType,等等。有时,没有一一对应的关系,当前设置与 IFC 不同,不能直接映射有效的数据源,或者值是以其他语言编写。

在本例中,我们将使用一个选择器函数将窗框操作列表从窗户映射至所需的 IFC 窗户面板数据集的 OperationType

DataManager00279.png 

公式:

=FIRSTNONEMPTY(IFS('Window'.'SashOperation' = 'Opening', 'FIXEDCASEMENT',
'Window'.'SashOperation' = 'Cased Opening', 'FIXEDCASEMENT',
'Window'.'SashOperation' = 'Fixed Glass', 'FIXEDCASEMENT',
'Window'.'SashOperation' = 'Fixed Glass - No Sash', 'FIXEDCASEMENT',
'Window'.'SashOperation' = 'Single Hung', 'SLIDINGVERTICAL',
'Window'.'SashOperation' = 'Double Hung', 'SLIDINGVERTICAL',
'Window'.'SashOperation' = 'Casement', 'SIDEHUNGLEFTHAND',
'Window'.'SashOperation' = 'Bi-parting Casement', 'SIDEHUNGLEFTHAND',
'Window'.'SashOperation' = 'Horizontal Slider', 'SLIDINGHORIZONTAL',
'Window'.'SashOperation' = 'Awning', 'TOPHUNG',
'Window'.'SashOperation' = 'Hopper', 'BOTTOMHUNG',
'Window'.'SashOperation' = 'Tilt/Turn', 'TILTANDTURNLEFTHAND',
'Window'.'SashOperation' = 'Vertical Pivot', 'PIVOTVERTICAL'), NOTDEFINED')

条件

条件可让您处理更复杂的情况,更精确地控制 IFC 数据布局。

将墙样式映射到不同实体的条件

例如,你可能有一个包含四种墙样式的文件:ExternWall、InteriorWall、Footing 和 VirtualWall。在墙插件对象的数据映射中,我们添加两个新的主要实体:IfcCovering 和 IfcFooting。使用条件字段,我们设置一个规则,按墙样式映射适当的 IFC 实体。

公式:

=IF(Style.'Name'='ExternWall', 'IfcWallStandardCase', IF(Style.'Name'='InteriorWall', 'IfcCovering', IF(Style.'Name'='Footing', 'IfcFooting', 'No-Export')))

结果:

导出的文件将包含具有三个 IFC 实体之一的墙,具体取决于墙样式。具有 VirtualWall 墙样式的墙不会被映射到任何东西,也不会被导出。

用于楼板对象的 Pset 条件

公式:

=(FIND('Structural', Style.'Name')=0)

结果:

如果楼板对象的样式名称以 “Structural” 开头,则分类 Pset 将附加到楼板上。

IFC_condition_ex2.png

将对象导出为多个实体的条件

将单个对象导出为单独的实体时,可以使用条件。这是一个具有多个组件的墙。使用墙样式中的“功能”字段,可以在导出期间将不同的 IFC 实体映射到每个组件。

公式:

=IF(OBJECTDATA('Component', 'Function', T=INDEX)='Load-Bearing', 'IfcWallStandardCase', IF(OBJECTDATA('Component', 'Function', T=INDEX)='Inner Finish', 'IfcCovering', IF(OBJECTDATA('Component', 'Function', T=INDEX)='Outer Finish', 'IfcCovering', IF(OBJECTDATA('Component', 'Function', T=INDEX)='OTHER', 'IfcBuildingElementProxy', 'NoExport'))))

结果:

在 IFC 文件中,墙用三种不同的实体表示:两个 IfcCovering、IfcWallStandardCase 和 IfcBuildingElementProxy。标记为“气隙”功能的组件不导出。

因为有可能存在没有核心组件的墙,并且“对象信息”面板上的数据窗格只允许可视化一个实体,所以可视化的实体总是被映射到第一个组件的实体。在这种情况下,不会影响导出。

符号和自定义几何图形

符号和自定义几何图形必须附加或映射 IFC 数据才能导出。它们的 IFC 数据映射基于其指定的 IFC 实体类型的设置。

在“数据管理器”对话框中,我们添加 Pset_ColumnCommon 并将“参照”字段映射到对象的类名称。也可以为 IsExternal 和 LoadBearing 添加固定值 TRUE。

symbol_ex1.png 

可以在“对象信息”面板的“数据”选项卡中看到默认的映射。

oip_symbol_1.png 

对于符号,可以基于符号的 IFC 名称或符号定义的名称创建映射。在“数据管理器”中,我们可以选择符号定义,然后单击添加数据集以定义我们想导出的所需的 IFC 数据集。例如,我们添加 Pset_ManufacturerTypeInformation,然后将所有字段映射到固定值,因为它们对于此符号的所有实例都相同。

symbol_4.png 

现在,甚至不需要将 IFC 数据附加到符号定义或任何符号实例上,该符号就可被导出为带有 Pset_ManufacturerTypeInformation 的 IfcFurnishingElement。可以在“对象信息”面板的“数据”选项卡中看到默认的映射。

oip_symbol_5.png 

主要和次要实体:

对于聚合对象,主要实体和次要实体可以实现更精确的 IFC 数据布局。在本例中,幕墙的主要实体集为 IfcCurtainWall。次要实体是 IfcMember (框架)和 IfcPlate (面板)。通过关闭、替换或完全删除次要实体,可以控制框架和面板的导出。

数据映射表达式

创建或编辑映射公式

使用数据管理器

 

这个页面有帮助吗?