SuperAPI AI 工具集

ifcos-core-runtime

测试与质量

查看项目

更新于 10-15 22:17

技能介绍

用途:面向使用 IfcOpenShell Python 运行时的开发者,帮助排查崩溃、实体引用错误和性能问题,并规避常见陷阱。

主要能力与要点:

  1. 实体比较必须用 ==,不要用 is;同一实体的两次查询会返回不同的 Python 包装对象。也可用 id() 比较 STEP ID。
  2. 调用 model.remove() 后必须把实体引用置为 None,因为 C++ 对象会立即释放,与 Python 引用计数无关。删除产品优先用 ifcopenshell.api.run("root.remove_product", model, product=entity) 以清理关系。
  3. 使用实体期间必须保持 ifcopenshell.file 对象存活,否则文件被回收后实体包装会变成悬空指针导致段错误。
  4. 禁止多线程写同一个 ifcopenshell.file,C++ 后端无锁;可每个线程打开独立文件实例。
  5. 按类型查询用 model.by_type(),其内部索引比手动遍历快 10-100 倍;返回 tuple,首次调用建索引较慢。
  6. 避免在大模型上用 get_info(recursive=True);读取属性用命名属性(如 wall.Name)而非位置索引,并先检查 model.schema。
  7. 大模型可用 ifcopenshell.open(path, should_stream=True) 流式打开(仅顺序访问);释放内存用 del model 加 gc.collect()。

安装:pip install ifcopenshell;或 conda install -c conda-forge ifcopenshell。Blender 的 Bonsai 插件已内置,无需单独安装。

限制:资料未提供具体版本兼容范围之外的收费、平台支持细节或性能基准数据。