IFC实体类型名称是否区分大小写?

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

任何人都可以帮助了解IFC实体类型名称是区分大小写还是不区分大小写。

例如:我们可以用* .ifc文件中的IFCPERSON(camel case)或IfcPerson(small)替换ifcperson吗?

autodesk-forge revit ifc bim freecad
3个回答
1
投票

如何在每个上下文中应用以下约定:

简单地假设它们区分大小写并相应地工作。

如果你总是这样做,你永远不会有问题。

如果您看到不同的外壳示例,并且所有这些示例都有效,则可以假设它不区分大小写。

否则,如果您只是遵循您看到并经过验证的案例约定,您将始终处于安全的一面。

此外,您应该始终为每个功能实现单元测试。

如果您对区分大小写有疑问,请执行单元测试以证明您的假设是正确的。


0
投票

您可能需要查看定义STEP数据格式(.ifc文件的文件格式)的an online version of ISO10303-p21

第5.4章定义了实体名称所属的令牌格式,只包含大写字母和数字。所以基本上它们区分大小写,这意味着它们可能只包含大写字母。


0
投票

让我们看一下如何在EXPRESS(用于指定模式)和STEP物理文件(用于实际* .ifc文件)的标准中定义案例。

Entity type names in the schema definition

根据ISO10303-11的说法,在EXPRESS中,实体名称不区分大小写。语法仅提及实体标识符的小写字母(第7.4节标识符和7.1.2字母),为EXPRESS保留字保留大写字母,例如ENTITY

entity_head = ENTITY entity_id subsuper ";" .
entity_id = simple_id .
simple_id = letter { letter | digit | '_' }
letter = 'a' | 'b' | 'c' | ... | 'x' | 'y' | 'z'

因此,模式无法定义两种不同的实体类型,这些实体类型仅因其大小写而异。此外,该标准明确规定了不区分大小写:

EXPRESS使用英文字母的大写和小写字母[..]字母的大小写仅在显式字符串文字中有意义。注 - EXPRESS可以使用大写,小写或混合大小写字母[..]编写。

因此,您在IFC-EXPRESS定义(例如IFC4)和相应的BuildingSMART documentation中看到的驼峰案例并不重要,只是为了便于阅读而选择。

Entity type names in the instance encoding

当谈到STEP物理文件编码(ISO10303-21)和实际的实例文件时,语法仅提到实体类型的大写字符:

SIMPLE_ENTITY_INSTANCE  = ENTITY_INSTANCE_NAME "=" SIMPLE_RECORD ";" .
SIMPLE_RECORD = KEYWORD "(" [ PARAMETER_LIST ] ")" .
KEYWORD = USER_DEFINED_KEYWORD | STANDARD_KEYWORD .
STANDARD_KEYWORD  = UPPER { UPPER | DIGIT } .
UPPER = "A" | "B" | "C" | .. | "X" | "Y" | "Z" | "_" .

ISO10303-21进一步规定了如何将模式定义映射到实际的IFC文件(第12.2节)。关于实体类型名称的编码,它声明STEP文件应该只使用大写字符。

[..]在任何一种情况下,任何小写字母都应转换为相应的大写字母,即编码不得包含任何小写字母。

这也确保了不区分大小写,但与EXPRESS不同。

Case sensitivity in STEP parsers

回到最初的问题,IFCPERSON是否可以用IfcPerson取代。如果你在哪里编写标准,你可以使用你喜欢的任何情况,因为实体类型名称不区分大小写。

ENTITY IfcPerson;

如果您正在编写IFC-STEP文件,则严格解释标准将需要以大写形式编写实体类型名称。

#1 = IFCPERSON('ID', 'Last', 'First', $, $, $, $, $));

实际上,解析器无论如何都必须依赖于模式的大小写不敏感。因此,它们将对模式定义的实体类型名称执行不区分大小写的比较。他们很可能会接受* .ifc文件中的混合或小写实体类型名称。

但是解析器也可以拒绝具有混合大小写实体类型名称的IFC文件,因为它不符合标准,或者只是忽略非全部资本的实体。想象一下只是将模式定义转换为大写的实现,然后对实体实例类型进行区分大小写的查找。这完全符合标准。

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