我想将 IFC 文件转换为图形数据库,以提取 IFC 模型中空间的邻接和可访问性。 我想使用Neo4j,作为这项工作的一部分,我需要从IFC文件中提取密码代码。 我找到了这段代码,但是当我运行它时,我遇到了以下错误:
AttributeError Traceback (most recent call last)
<ipython-input-1-b13704b3ee10> in <module>
20 typeDict = IfcTypeDict()
21
---> 22 assert typeDict['IfcWall'] == ('GlobalId', 'OwnerHistory', 'Name', 'Description', 'ObjectType', 'ObjectPlacement', 'Representation', 'Tag')
23
24 nodes = []
<ipython-input-1-b13704b3ee10> in __missing__(self, key)
15 class IfcTypeDict(dict):
16 def __missing__(self, key):
---> 17 value = self[key] = ifcopenshell.create_entity(key).wrapped_data.get_attribute_names()
18 return value
19
AttributeError: 'str' object has no attribute 'get_attribute_names'
谁能帮我解决这个问题?或者关于我如何执行这项任务的任何其他想法? 任何帮助将不胜感激。
问候。
当您使用 IfcOpenShellv0.6 时,这个脚本似乎是为 IFC2x3 编译的 IfcOpenShell v0.5 创建的,不幸的是,它不向后兼容。您可以尝试使用 v0.5 或将脚本更新到 v0.6 API。
如果使用 v0.5,请注意此版本是为特定 IFC 版本编译的。我相信已发布的软件包适用于 IFC2x3,因此它不适用于 IFC4 文件。不过,您可以针对 IFC4 进行编译,但随后会失去对 IFC2x3 的支持。该断言将不再有效,因为IFC4墙还有一个属性PredefinedType
:
assert typeDict["IfcWall"] == ('GlobalId', 'OwnerHistory', 'Name', 'Description', 'ObjectType', 'ObjectPlacement', 'Representation', 'Tag', 'PredefinedType')
或者,如果使用 v0.6,则必须在脚本中进行更多更改。也许就像这个更新的要点一样。再往下还有一个问题,您可能会遇到更多问题。如有疑问,请尝试联系原作者或使用脚本作为灵感来编写自己的转换。