da-truely/cc-ransac-reconstruction-step

GitHub: da-truely/cc-ransac-reconstruction-step

一套将CloudCompare的RANSAC形状基元自动转换为对齐STEP几何体的Python工具,用于点云逆向工程。

Stars: 0 | Forks: 0

# cc-ransac-reconstruction-step 用于从 CloudCompare 提取 RANSAC 基元并将其重建为对齐的 STEP 几何体以进行逆向工程的 Python 工具。 # CloudCompare RANSAC 到 STEP 重建 ![重建预览](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/3f1de0c598221747.jpg) 本项目将 CloudCompare 的 RANSAC 基元转换为可编辑的 STEP 几何体。 它旨在作为一个紧凑的点云逆向工程 pipeline:在 CloudCompare 中重建检测到的形状,将其导出为 JSON,然后将其重建为独立的 STEP 实体或面,同时保留位置和方向。 ## 功能说明 工作流程分为两个脚本: - `cc_ransac_to_json.py` 在 CloudCompare 的 Python 插件中运行。它递归遍历选定的实体树,查找受支持的重建形状,读取其参数和变换历史,并生成一个 JSON 导出文件。 - `json_to_step.py` 从命令行运行。它读取导出的 JSON 并将每个形状重建为独立的 STEP 实体,以便随后可以在下游的 CAD 软件中单独隐藏或检查各个部件。 当前的 pipeline 保留了来自 CloudCompare 的对象方向和位置。对于平面基元,脚本会构建一个矩形面而不是数学上的无限平面,因为 STEP 导出必须是有限的。 ## 快速开始 1. 在 CloudCompare 中打开您的点云。 2. 选择重建的根对象或包含 RANSAC 结果的父节点。 3. 通过 CloudCompare 的 Python 脚本接口运行 `cc_ransac_to_json.py`。 4. 在 CMD 中使用 `json_to_step.py` 将 JSON 转换为 STEP。 5. 在您的 CAD 工具中打开生成的 STEP 文件。 如果您只记住一条规则:**选择顶层节点,而不是手动选择每个子节点**。导出器会递归遍历所有后代。 ## 环境要求 - 启用了 Python 插件的 CloudCompare - 用于 STEP 转换器的 Python - 在用于 STEP 脚本的同一 Python 环境中安装 `cadquery-ocp` 推荐的 Python 版本范围: - Python 3.10 到 3.12 - Python 3.11 是一个稳妥的默认选择,并在工作环境中被使用过 推荐的 STEP 后端: - `cadquery` - `cadquery-ocp` 如果您希望获得可复现的安装环境,请**不要**依赖全局 Python 安装。请使用虚拟环境。 ## 建议的环境设置 ### 1. 创建虚拟环境 ``` py -3.11 -m venv C:\Users\Main\ocp_clean ``` ### 2. 激活环境 ``` C:\Users\Main\ocp_clean\Scripts\activate ``` ### 3. 更新 pip ``` python -m pip install --upgrade pip ``` ### 4. 安装 CAD 后端 ``` pip install cadquery cadquery-ocp ``` 如果您想要不带 VTK 的轻量安装: ``` pip install cadquery-ocp-novtk ``` ### 5. 验证后端 ``` python -c "import cadquery; import OCP; print('OK')" ``` ## CloudCompare 脚本安装 将脚本复制到 CloudCompare 插件使用的 Python 脚本位置,或者如果您的构建版本提供了脚本选择器,则从插件 UI 中加载它们。 文件: - `cc_ransac_to_json.py` - `json_to_step.py` ## 1) 从 CloudCompare 导出:`cc_ransac_to_json.py` ### 输入 - 带有 RANSAC 检测到的基元的 CloudCompare 场景 - 选定的根对象或选定的重建分支 ### 行为 - 递归遍历选定的实体 - 同时处理后代节点 - 仅导出受支持的基元: - Cone(圆锥) - Cylinder(圆柱) - Plane(平面) - Sphere(球体) - Torus(圆环) - 写入一个 JSON 文件 ### 输出 - 仅生成一个 JSON 文件 - 输出路径由脚本头部控制 - 如果配置的目录缺失或无效,脚本将回退到桌面 ### 注意事项 - 导出器通过使用 CloudCompare 的变换历史 / OpenGL 变换数据来保留位置和方向。 - 如果不想,不必手动展开每个分支。选择重建的根节点即可。 ## 2) 从 JSON 重建 STEP:`json_to_step.py` 从 CMD 运行此脚本: ``` C:\Users\Main\ocp_clean\Scripts\python.exe json_to_step.py cc_ransac_export.json ``` ### 输入 - 一个由 `cc_ransac_to_json.py` 导出的 JSON 文件 - 或一个包含 JSON 文件的文件夹 ### 输出规则 未提供输出参数时的默认行为: - `json_to_step_reconstruction.step` 示例: ``` C:\Users\Main\ocp_clean\Scripts\python.exe json_to_step.py cc_ransac_export.json ``` 在当前工作目录旁创建默认的 STEP 文件。 ``` C:\Users\Main\ocp_clean\Scripts\python.exe json_to_step.py cc_ransac_export.json output ``` 创建: ``` .\output\json_to_step_reconstruction.step ``` ``` C:\Users\Main\ocp_clean\Scripts\python.exe json_to_step.py cc_ransac_export.json output.step ``` 创建: ``` .\output.step ``` ``` C:\Users\Main\ocp_clean\Scripts\python.exe json_to_step.py cc_ransac_export.json "E:\Projekte\CAD - Projekte\output\test.step" ``` 创建指定的文件。 ``` C:\Users\Main\ocp_clean\Scripts\python.exe json_to_step.py cc_ransac_export.json "E:\Projekte\CAD - Projekte\output" ``` 创建: ``` E:\Projekte\CAD - Projekte\output\cc_ransac_from_json.step ``` ### 路径处理 - 绝对路径保持为绝对路径 - 纯名称将成为当前 CMD 目录中的文件 - 带有反斜杠但没有驱动器号的路径被视为相对于当前 CMD 目录的相对路径 - 支持带空格的引号路径 ### 结果 每个导出的基元都被写入为一个独立的 STEP 实体,以便 CAD 软件可以独立地隐藏或检查元素。 ## 几何体重建方式 ### 支持的基元 - `Cone` - `Cylinder` - `Plane` - `Sphere` - `Torus` ### 参数使用 - **Cone** 高度、底部半径、顶部半径、顶点 / 位置,如果需要还包括半角 - **Cylinder** 高度、半径、位置 / 轴线 - **Sphere** 半径和中心 - **Torus** 从导出的名称或存储的参数中解析出的内半径和外半径 - **Plane** 使用局部包围盒尺寸来构建一个矩形面,而不是一个无限平面 ### 变换 来自 CloudCompare 的对象矩阵用于: - 位置 - 旋转 - 局部方向 这是整个 pipeline 的关键点:重建的 STEP 几何体与原始的 CloudCompare 结果保持对齐。 ## 典型工作流程 1. 在 CloudCompare 中加载点云。 2. 对选定的数据运行 RANSAC。 3. 选择重建的结果节点。 4. 使用 `cc_ransac_to_json.py` 导出 JSON。 5. 使用 `json_to_step.py` 将 JSON 转换为 STEP。 6. 在您的 CAD 应用程序中打开 STEP 文件。 7. 将几何体与源点云进行比较,并根据需要进行调整。 ## 故障排除 ### `cloudComPy` 导入失败 请使用 CloudCompare 的 Python 运行时,而不是随意的外部 Python 会话。导出器旨在 CloudCompare 内部运行。 ### `json_to_step.py` 中 `OCP` / `OCC` 导入失败 请在运行脚本的同一虚拟环境中安装 CAD 后端: ``` C:\Users\Main\ocp_clean\Scripts\activate pip install cadquery cadquery-ocp ``` ### 无法安装 `pythonocc-core` 在某些安装环境中这是正常的。请改用 `cadquery-ocp`。 ### 未创建 STEP 文件 请检查: - 当前工作目录 - 写入权限 - 输出路径拼写 - JSON 文件是否包含可导出的基元 ### CAD 查看器中缺少名称 某些 STEP 查看器能比其他的更好地保留对象名称。脚本会将名称写入 STEP 结构中,但显示行为仍然取决于目标应用程序。 ## 仓库布局 ``` . ├── cc_ransac_to_json.py ├── json_to_step.py ├── screenshot.jpg └── README.md ``` ## 实用说明 - 保持两个脚本与 JSON 模式同步。 - 除非必要,否则不要更改变换 pipeline。 - 为获得最佳效果,请在 CloudCompare 中选择最高层级的重建父节点,并让导出器递归进入所有子节点。 ## 许可证 在此处添加您首选的许可证。
标签:3D重建, CAD, cadquery-ocp, CAD模型转换, CloudCompare, Python, RANSAC, STEP格式, 三维几何, 云资产清单, 形状检测, 数字取证, 数据导出, 无后门, 点云分割, 点云处理, 自动化脚本, 逆向工具, 逆向工程