![]() |
1
4
免责声明:我没有阅读(或购买)标准。我的知识主要来源于使用IFC文件和尝试不同的东西。以及阅读buildingSMART文档。所以我不能给你一个硬性的保证,但我很有信心我的信息是正确的/有用的。 作为购买官方标准文件的替代方案,您可以查看 official documentation 通过建造集市。(也看看 here 以获取更多的一般信息和其他/更现代版本的可用性)。 现在假设您熟悉基本的STEP文件布局(头和数据段),让我们跳到IFC文件必须包含哪些内容才能被认为是正确的(就我所理解的文档而言;可能有解析器/加载器可以加载不正确/不完整的文件,但我们并不针对它们)。另外请注意,我正在为IFC 4.0构建这个示例。这对于当前的IFC4.1标准应该是正确的,但对于较老的IFC2X3标准可能不是这样(IFC2X3的IFC4中有一些松弛)。另外,我跳过了名称和描述-您可以设置这些字段进行测试,以便在查看器中识别您的结构(这比比较guid更容易)。 IFC项目所有元素的根是 IfcProject . 它还包含所有其他元素的大多数基本属性和定义。此实体上每个文档所需的属性仅为唯一id。但对于工作示例,通常还需要最小的单元分配和表示上下文。
在 unit assignment 您可以定义所需的单位,从几何单位到货币、热量等。最小值是长度、面积和角度,以便有意义地定义几何项。所以在我们的例子中,我们只包括:米作为长度,平方米作为面积,弧度作为角度。如果需要英尺、英寸或度数,可以将其定义为派生单位。
这个 representation context 为给定的表示类(=几何/参数描述)定义基本坐标系。所以简单的例子是在零点的一个三维右手系统。IFC正在使用Z轴指向-这可能是重要的,如果您正在使用来自3D /OpenGL应用程序的模型/文件,这些应用程序通常假定Y轴指向上。您还需要一个精度值-我在这里使用的是1.0e-5,但如果您可以少用或多用,您可能需要测试一下。在组合几何图形时(在构造实体几何图形步骤中)比较点/边时,通常应用精度。如果有错误,请尝试其他精度值。 表示上下文的第二个属性是上下文类型。这是一个字符串,标识应用此上下文的表示形式。文档说明,值基于“实现者协议”(implementers agreement)——这意味着AFAIK“看看其他人在使用什么”。从我使用“模型”的经验来看,它适用于三维几何。对二维平面图和草图使用“平面图”也应该有效。
元素的空间容器元素不能直接添加到IfcProject中-它们需要放置到包含在项目中的空间元素中。有三种可能的选择:IfcSite、IfcBuilding和IfcSpatialZone(参见 IfcProject page ). 这个 IfcSpatialZone 被定义为非层次空间元素-其用法与其他两个稍有不同(元素是使用不同的关系添加的)。 一个站点就足够作为空间容器。将所有元素添加到其中可能在语义上是模糊的(主要是直接将栅栏添加到其中,其他元素通常位于建筑内部),但这并不错误。(国际金融公司不在乎你的花园里是否有电器)。几乎所有的属性 IfcSite 是可选的我们可以跳过这些。但是要注意:如果你给你的网站一个表示(一些几何图形),你需要包括一个位置。网站将聚合到与之相关的项目中。
元素实际上,这就是作为绝对最小结构所需要的全部。现在可以添加元素-从 IfcProduct . 因为所有这些元素都有某种附加的含义,所以您要么需要选择那些与您拥有的对象非常匹配的元素,要么可能需要使用 IfcBuildingElementProxy 这是最“无意义”(或更好的:没有专门的语义)的对象类型。下面的代码将放置一个不带几何体的代理。放置引用的坐标系定义与创建坐标系时使用的坐标系定义相同,因为它不会转换或移动任何内容。您的几何图形将通过产品定义形状添加,该形状包含形状方面,最后是一些几何图形项。建筑智能文档中有一些指定几何图形的示例。
结论因此,作为最基本的元素,添加元素并不需要太多:
完整的示例文件将是:
请注意,加载此项不会显示任何内容,因为它不包含任何几何体。另外请注意,我还没有验证它是否是无错误的-我目前没有我的IFC工具在手(如果你想验证你的文件看看 stepcode 它可以检查您的文件语法是否正确-它不会检查构建智能文档中提到的概念的语义或强制执行。) 另一个好消息是,引用/id(如#20)的顺序可以自由排列-您可以引用稍后在文件中添加的元素,并且引用只需要对此文件唯一。这意味着示例文件的行可以被洗牌,它仍然是一个有效的文件解析器,通常使用两步并行来创建内存表示(1)。解析为IFC类,2。解析引用)。 |
![]() |
Cristian M · 将24位2的补码转换为int? 7 年前 |
![]() |
Rares Dima · 以3的签名权限计数 7 年前 |
![]() |
i'mlaguiar · 将一个字符串中的多个值转换为浮点[重复] 7 年前 |
![]() |
kurp · SAS:将字符转换为数字变量-逗号作为十进制分隔符 7 年前 |
![]() |
SwapnilP · 在python中将字符串转换为datetime 7 年前 |
![]() |
Vtik · 将稀疏矩阵从特征::稀疏矩阵转换为尖点::hyb_矩阵 7 年前 |