ble*_*aky 4 data-conversion ifc
我正在开展一个项目,需要生成 IFC 文件,并且除了几何形状之外,我所获得的信息并不多(我可以访问材料的密度和导热率,以及对象的基本标签)。
到目前为止,我只能找到 IFC可以存储的内容,而找不到 IFC需要存储的内容。
我需要在 IFC 文件中包含哪些内容才能正常运行?
除了基本几何图形之外,IFC 文件还需要什么?
免责声明:我尚未阅读(或购买)该标准。我的知识主要来源于使用 IFC 文件并尝试不同的事情。并阅读 BuildingSMART 文档。所以我不能给你一个硬性保证,但我相当有信心我的信息是正确/可用的。
作为购买官方标准文件的替代方法,您可以查看buildingsmart 的官方文档。(另请参阅此处以获取更多一般信息以及其他/更现代版本的可用性)。
现在假设您熟悉基本的 STEP 文件布局(标头和数据段),让我们跳到 IFC 文件绝对必须包含的内容才能被认为是正确的(据我了解文档;可能有解析器/加载器可以加载不正确/不完整的文件,但我们的目标不是它们)。另请注意,我正在为 IFC 4.0 构建此示例。这对于当前的 IFC 4.1 标准应该是正确的,但对于旧的 IFC2X3 标准可能不正确(IFC4 相对于 IFC2X3 有一些放宽)。另外,我会跳过名称和描述 - 您可以设置这些字段进行测试,以在查看器中识别您的结构(这比比较 GUID 更容易)。
所有元素的根是IfcProject。它还包含所有其他元素的最基本属性和定义。该实体的每个文档所需的属性只是唯一的 ID。但对于一个工作示例,您通常还需要一个最小的单元分配和表示上下文。
#20= IFCPROJECT('344O7vICcwH8qAEnwJDjSU',$,$,$,$,$,$,(#19),#13);
Run Code Online (Sandbox Code Playgroud)
在单位分配中,您可以定义所需的单位,从几何单位到货币单位、热量单位等。最小单位是长度、面积和角度,以有意义地定义几何项目。因此,在我们的示例中,我们仅包含以下内容:长度为米、面积为平方米、角度为弧度。如果您需要英尺、英寸或度,您可以将它们定义为派生单位。
#10= IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.);
#11= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.);
#12= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);
#13= IFCUNITASSIGNMENT((#10,#11,#12));
Run Code Online (Sandbox Code Playgroud)
表示上下文为给定类别的表示(=几何/参数描述)定义基本坐标系。因此,简单的情况是零点处的 3 维右手系统。IFC 使用 z 轴朝上 - 如果您正在处理源自 3D/OpenGl 应用程序(通常假设 y 轴朝上)的模型/文件,这可能很重要。您还需要一个精度值 - 我在这里使用 1.0e-5,但您可能想测试一下您是否可以使用更少的值或需要更多的值。组合几何时(在构造实体几何步骤期间)比较点/边时通常会应用精度。如果出现错误,请尝试不同的精度值。
表示上下文的第二个属性是上下文类型。这是一个字符串,用于标识应应用此上下文的表示形式。该文档指出,这些值基于“实现者协议”——这意味着 AFAIK“看看其他人正在使用什么”。根据我的经验,使用“模型”适用于 3D 几何。对 2D 计划和草图使用“计划”也应该有效。
#14= IFCDIRECTION((1.,0.,0.));
#15= IFCDIRECTION((0.,0.,1.));
#16= IFCCARTESIANPOINT((0.,0.,0.));
#17= IFCAXIS2PLACEMENT3D(#16,#15,#14);
#18= IFCDIRECTION((0.,1.));
#19= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.0E-5,#17,#18);
Run Code Online (Sandbox Code Playgroud)
元素不能直接添加到 IfcProject - 它们需要放置到项目中包含的空间元素中。共有三种可能的选择:IfcSite、IfcBuilding 和 IfcSpatialZone(请参阅IfcProject 页面上的空间分解部分)。IfcSpatialZone被定义为非分层空间元素 - 它的用法与其他两个略有不同(使用不同的关系添加元素)。
单个站点足以作为空间容器。将所有元素添加到其中可能在语义上模糊(大多数栅栏直接添加到其中,其他元素通常位于建筑物内),但并非不正确。(国际金融公司不关心你的花园里是否有电器)。由于IfcSite的几乎所有属性都是可选的,我们可以跳过这些属性。但要注意:如果您为您的网站提供了一种表示形式(=某种几何形状),您将需要为其添加一个展示位置。该站点将被聚合到与其相关的项目中。
#30= IFCSITE('20FpTZCqJy2vhVJYtjuIce',$,$,$,$,$,$,$,.ELEMENT.,$,$,$,$,$);
#31= IFCRELAGGREGATES('0Du7$nzQXCktKlPUTLFSAT',$,$,$,#20,(#30));
Run Code Online (Sandbox Code Playgroud)
实际上,这就是绝对最小结构所需的全部内容。现在您可以添加元素 - 从IfcProduct派生的某种类型的实体。由于所有这些元素都具有某种附加的含义,您要么需要选择那些与您拥有的对象密切匹配的元素,要么您可能想要使用IfcBuildingElementProxy这是最“无意义”(或更好:没有专门的语义含义)的对象类型。以下代码放置一个没有几何图形的代理。出于方便起见,放置引用了用于创建坐标系的相同坐标系定义,因为它不会变换或移动任何内容。您的几何图形将通过产品定义形状添加,该产品定义形状具有形状方面,最后还有一些几何图形项目。建筑智能文档有一些带有指定几何形状的示例。
#40= IFCLOCALPLACEMENT($,#17);
#41= IFCBUILDINGELEMENTPROXY('3W29Drc$H6CxK3FGIxjJNl',$,$,$,$,#40,$,$,.NOTDEFINED.);
#42= IFCRELCONTAINEDINSPATIALSTRUCTURE('04ldtj6cp2dME6CiP80Bzh',#12,$,$,(#41),#30);
Run Code Online (Sandbox Code Playgroud)
因此,添加元素不需要太多:
完整的示例文件是:
ISO-10303-21;
HEADER;FILE_DESCRIPTION(('IFC4'),'2;1');
FILE_NAME('example.ifc','2018-08-8',(''),(''),'','','');
FILE_SCHEMA(('IFC4'));
ENDSEC;
DATA;
#10= IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.);
#11= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.);
#12= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);
#13= IFCUNITASSIGNMENT((#10,#11,#12));
#14= IFCDIRECTION((1.,0.,0.));
#15= IFCDIRECTION((0.,0.,1.));
#16= IFCCARTESIANPOINT((0.,0.,0.));
#17= IFCAXIS2PLACEMENT3D(#16,#15,#14);
#18= IFCDIRECTION((0.,1.));
#19= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.0E-5,#17,#18);
#20= IFCPROJECT('344O7vICcwH8qAEnwJDjSU',$,$,$,$,$,$,(#19),#13);
#30= IFCSITE('20FpTZCqJy2vhVJYtjuIce',$,$,$,$,$,$,$,.ELEMENT.,$,$,$,$,$);
#31= IFCRELAGGREGATES('0Du7$nzQXCktKlPUTLFSAT',$,$,$,#20,(#30));
#40= IFCLOCALPLACEMENT($,#17);
#41= IFCBUILDINGELEMENTPROXY('3W29Drc$H6CxK3FGIxjJNl',$,$,$,$,#40,$,$,.NOTDEFINED.);
#42= IFCRELCONTAINEDINSPATIALSTRUCTURE('04ldtj6cp2dME6CiP80Bzh',$,$,$,(#41),#30);
ENDSEC;
END-ISO-10303-21;
Run Code Online (Sandbox Code Playgroud)
请注意,加载此文件不会显示任何内容,因为它不包含任何几何图形。另请注意,我尚未验证它是否没有错误 - 我目前手边没有 IFC 工具(如果您想验证您的文件,请查看步骤代码,它可以检查您的文件在语法上是否正确 -它不会检查构建智能文档中提到的概念的语义或执行情况。)
另外值得一提的是,引用/ID 的顺序(如 #20)可以自由排列 - 您可以引用稍后在文件中添加的元素,并且引用只需对于该文件是唯一的。这意味着示例文件的行可以被打乱,并且它仍然是一个有效的文件 - 解析器通常使用两步方法来创建内存中表示(1. 解析为 IFC 类,2. 解析引用)。
| 归档时间: |
|
| 查看次数: |
880 次 |
| 最近记录: |