问题标签 [ifc-open-shell]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何将新实体添加到 ifcopenshell 模块中?
为了解决我的问题,我尝试在 ifcopenshell 模块中添加一些 Etify 类型。我以前没有任何模块经验。我只是尝试:
我不明白这里的 schema_identifier 是什么,以及如何从其他 ifc Entify 获取 schema_identifier 的示例,例如 ifcwall?
python - IfcOpenShell Python,plt的墙的位置
我刚刚开始使用 Python 分析 IFC 文件。为此,我将 IfcOpenShell 用于 Python。
我已经设法确定了 x、y、z 的位置、墙的长度和厚度。不幸的是,我失败了,因为我只知道墙的起点。墙去的点我找不到或没有办法计算这个。
有人可以告诉我如何做到这一点的例子吗?
目标是我可以将最后来自 IFC 的数据转换为绘图输出。如果这很简单,也请告诉我。
这是我的代码:
谢谢你的帮助
彼得
python - 使用多处理使用 IfcOpenShell 解析 1 GB 大小的 IFC 文件时遇到问题
我正在使用 Python 的 IfcOpenShell 模块解析 IFC 文件(大小为 1 GB),以获取我将在图形数据库中插入的所有节点、关系和属性。
对于快速 IFC 文件解析,我在 python 中使用多处理。在使用多个进程时(在我的情况下为 8 个,因为我的 CPU 是 8 个内核)我将 IFC 文件数据划分为 8 个列表,然后启动 8 个进程并创建节点和边以用于图形数据库插入
以下是我在使用多处理时面临的问题:
- 我需要打开文件以在每个进程中读取,因为我们通过使用“ifcopenshell.open()”方法打开文件获得的文件对象是不可腌制的,因此不能作为参数传递给“multiprocessing.Process()”。
- 如果我尝试腌制文件对象,我会得到“无法腌制'SwigPyObject'对象”异常。
- 由于我需要打开文件以在每个进程中读取它正在消耗我机器的完整 RAM(32 GB)并导致 VS-Code 编辑器崩溃。
我也尝试过在单线程中运行它,但这需要大量时间。我曾尝试在 Python 中使用多线程选项,但后来发现由于全局解释器锁定,在 Python 中无法使用多线程。这是否有更好的解决方案或方法来解析 1 GB 大小的 IFC 文件并创建节点和边缘?
我一直在考虑以下解决方案:将大型 IFC 文件划分为多个较小文件并单独解析它们以获得最终数据
有可能这样做吗?如果是,如何?
如果您有其他好的方法/解决方案,请提出建议。
先感谢您。