国际金融公司所需的数据

问题描述 投票:1回答:1

我正在开发一个项目,我需要生成一个IFC文件,并且给出的信息不是几何(我可以访问材料的密度和导热性,以及对象的基本标签)。

到目前为止,我只能找到IFC可以存储的内容,而不是IFC需要存储的内容。

我需要在IFC文件中包含哪些内容以使其正常运行? 除了基本几何外,IFC文件还需要什么?

data-conversion ifc
1个回答
2
投票

免责声明:我没有阅读(或购买)该标准。我的知识主要源于使用IFC文件和尝试不同的东西。并阅读buildingSMART文档。所以我不能给你一个很难的保证,但我相信我的信息是正确/可用的。

作为购买官方标准文件的替代方案,您可以通过buildingsmart查看official documentation。 (另请查看here以获取更多一般信息和其他/更现代版本的可用性)。

现在假设您熟悉基本的STEP文件布局(标题和数据段),让我们跳转到IFC文件必须包含的内容以便被认为是正确的(据我所知的文档;可能有解析器/加载器可以加载不正确/不完整的文件,但我们不是针对他们)。另请注意,我正在为IFC 4.0构建此示例。这对于当前的IFC 4.1标准应该是正确的,但可能不适用于较旧的IFC2X3标准(IFC4X3中的IFC4有一些松弛)。此外,我正在跳过名称和描述 - 您可以设置这些字段以进行测试,以便在查看器中识别您的结构(比比较GUID更容易)。

IfcProject

所有元素的根源是IfcProject。它还包含所有其他元素的大多数基本属性和定义。此实体上每个文档所需的属性仅为唯一ID。但是对于一个工作示例,您通常还需要一个最小的单位分配和表示上下文。

#20= IFCPROJECT('344O7vICcwH8qAEnwJDjSU',$,$,$,$,$,$,(#19),#13);

unit assignment中,您可以定义所需的单位,从几何单位开始到货币,热量等。最小值是长度,面积和角度,以有意义地定义几何项目。因此,对于我们的示例,我们仅包括:米长度,平方米面积和弧度角度。如果你需要英尺或英寸或度数,你可以将它们定义为派生单位。

#10= IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.);
#11= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.);
#12= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);
#13= IFCUNITASSIGNMENT((#10,#11,#12));

representation context为给定的一类表示(=几何/参数描述)定义了基本坐标系。因此,简单的情况是零点处的三维右手系统。 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);

Spatial container for elements

元素无法直接添加到IfcProject中 - 它们需要放置在项目中包含的空间元素中。有三种可能的选择:IfcSite,IfcBuilding和IfcSpatialZone(请参阅IfcProject page上的空间分解部分)。 IfcSpatialZone被定义为非分层空间元素 - 它的用法与其他两个元素略有不同(元素是使用不同的关系添加的)。

空间容器就足够了一个站点。向它添加所有元素可能是模糊的(大多数栅栏直接添加到它,其他元素通常在建筑物内)但不是不正确。 (国际金融公司不在乎你的花园里是否有电器)。由于几乎IfcSite的所有属性都是可选的,我们可以跳过这些。但请注意:如果您为网站提供表示(=某些几何形状),则需要为其添加展示位置。该网站将汇总到与其相关的项目中。

#30= IFCSITE('20FpTZCqJy2vhVJYtjuIce',$,$,$,$,$,$,$,.ELEMENT.,$,$,$,$,$);
#31= IFCRELAGGREGATES('0Du7$nzQXCktKlPUTLFSAT',$,$,$,#20,(#30));

Elements

实际上,这就是绝对最小结构所需要的一切。现在你可以添加你的元素 - 从IfcProduct派生的某种类型的实体。由于所有这些元素都附加了某种含义,您需要选择与您拥有的对象紧密匹配的元素,或者您可能希望使用IfcBuildingElementProxy,这是最“无意义”(或更好:没有专门的语义)对象类型。以下代码放置一个没有几何的代理。该位置引用了相同的坐标系定义,该定义用于创建坐标系统,因为它不会变换或移动任何东西。您的几何体将通过具有形状方面的产品定义形状添加,最后添加一些几何项目。建筑智能文档有一些带有指定几何的示例。

#40= IFCLOCALPLACEMENT($,#17);
#41= IFCBUILDINGELEMENTPROXY('3W29Drc$H6CxK3FGIxjJNl',$,$,$,$,#40,$,$,.NOTDEFINED.);
#42= IFCRELCONTAINEDINSPATIALSTRUCTURE('04ldtj6cp2dME6CiP80Bzh',#12,$,$,(#41),#30);

结论

所以没有太多需要添加元素:

  • 一个专案
  • 基本单位定义
  • 一个空间容器

完整的示例文件将是:

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;

请注意,加载此项不会显示任何内容,因为它不包含任何几何体。另请注意,我还没有验证它是否没有错误 - 我目前没有我的IFC工具(如果你想验证你的文件看看stepcode,它可以检查你的文件在语法上是否正确 - 它不会检查构建智能文档中提到的概念的语义或执行。)

另外要知道的是,引用/ id(如#20)的顺序可以自由排列 - 你可以引用稍后在文件中添加的元素,引用只需要对这个文件是唯一的。这意味着示例文件的行可以被洗牌并且它仍然是一个有效的文件 - 解析器通常使用两步apporach来创建内存表示(1.解析到IFC类,2。解析引用)。

© www.soinside.com 2019 - 2024. All rights reserved.