# geometry-measure 打包说明 这个目录只负责打包,不存放数据集;仅包含已接入统一 CLI 的必要归档工作流。 ## 本地开发安装 在项目根目录执行: ```bash python packaging/build_package.py pip install -e packaging/build geometry-measure --help ``` 也可以进入 `packaging/` 后执行: ```bash python build_package.py pip install -e build geometry-measure --help ``` ## 构建 wheel 需要先安装构建工具: ```bash pip install build ``` 然后执行: ```bash python packaging/build_package.py python -m build packaging/build ``` 构建产物会出现在: ```text packaging/build/dist/ ``` ## 运行示例 从项目根目录运行: ```bash geometry-measure contour --pointcloud datasets/PointCloud/11.ply --cad datasets/CAD/11.step --no-visualize geometry-measure contour --cad datasets/CAD/11.step --pointcloud datasets/Noise_PointCloud/11_noisy.ply --save vis/11_contour.ply --excel-output --no-visualize geometry-measure registration --pointcloud datasets/Noise_PointCloud/11_noisy.ply --mesh datasets/Mesh/11.stl --no-visualize geometry-measure denoise --pointcloud datasets/PointCloud/11.ply --noise-std 4 --no-visualize ``` `contour` 是轮廓/平整度/平面度评估的统一入口,本质上是点云到 STEP CAD 或 Mesh 的距离计算。需要保存距离热力图时传 `--save`,需要保存 Excel 时传 `--excel-output`。如需单独指定网格,可显式传入 `--mesh datasets/Mesh/11.stl`。 `contour --excel-output` 不带值时会保存 `excel/contour.xlsx`;只传文件名时会自动放到 `excel/` 文件夹。Excel 默认读取 `excel/测量结果.xlsx` 模板,按任务号迁移对应行,表头保持模板一致,只写入本次 `测量结果` 和 `测量结论`。可用 `--result-template` 指定其它模板。 `contour` 也支持批量运行:`--tasks 13,31,40` 执行指定任务,其中 `13` 会自动匹配 `13_1`、`13_2` 等样本;`--tasks 13_1` 只运行单个样本。`--all` 优先执行 `datasets/Mesh` 下全部样本,没有 Mesh 时退回 `datasets/CAD` 下全部 STEP;批量模式用 `--pointcloud-kind noise|clean` 选择加噪点云或干净点云。所有成功热力图会按原始坐标额外保存成一个合并 PLY:未传 `--save` 时为 `vis/combined_contour.ply`,`--save vis/contour` 时为 `vis/contour/combined_contour.ply`。合并点云默认加入 `datasets/train/train_2_10M.ply`,可用 `--combined-context-pointcloud` 切换为 `train_2_100M.ply` 或 `train_2_1T.ply`。未传 `--no-visualize` 时,合并结果也会按原始坐标在一个 Open3D 窗口展示。 使用配置文件: ```bash geometry-measure --config config.yaml full --no-visualize ``` 如果使用打包生成的默认配置,构建脚本会把默认路径改为: ```text datasets/CAD/11.step datasets/Mesh/11.stl datasets/PointCloud/11.ply datasets/Noise_PointCloud/11_noisy.ply ``` ## 数据要求 wheel 不包含 `datasets/`,运行时需要自己提供数据路径。建议保持以下结构: ```text datasets/ CAD/ # STEP CAD,例如 11.step Mesh/ # STL/OBJ/PLY Mesh,例如 11.stl PointCloud/ # 原始点云 PLY,例如 11.ply Noise_PointCloud/ # 加噪或待配准点云 PLY,例如 11_noisy.ply ``` CAD、Mesh 和点云需要处在同一坐标系和同一单位下。示例数据按毫米量级处理。`contour` 默认认为输入点云已经与参考模型对齐。 大规模点云可能运行较慢。可以通过配置文件调整: ```yaml evaluation: chunk_size: 2048 triangle_chunk_size: 4096 cad_mesh_deflection: 0.1 ``` `chunk_size` 控制点云分块,`triangle_chunk_size` 控制三角面分块,`cad_mesh_deflection` 控制 STEP 三角化精度。 ## 输出建议 建议把日志和可视化产物放到项目根目录的 `vis/`: ```bash mkdir -p vis geometry-measure curvature --pointcloud datasets/PointCloud/11.ply --save vis/11_curvature.ply --no-visualize geometry-measure contour --cad datasets/CAD/11.step --pointcloud datasets/Noise_PointCloud/11_noisy.ply --save vis/11_contour.ply --excel-output 11_contour.xlsx --no-visualize geometry-measure contour --tasks 13,31,40 --data-root datasets --pointcloud-kind noise --save vis/contour --excel-output selected_contour.xlsx --no-visualize ``` 如果需要保存命令行指标,可以使用重定向: ```bash geometry-measure contour --pointcloud datasets/PointCloud/11.ply --cad datasets/CAD/11.step --no-visualize > vis/contour.log 2>&1 ``` ## CAD 转换依赖 基础安装不强制安装 CAD 转换依赖。需要使用 `cad2mesh` 时,建议使用项目根目录的 `environment.yml` 创建或更新独立 Python 3.10 环境: ```bash conda env create -f environment.yml conda activate point-porj pip install -r requirements.txt ``` 如果环境已存在,则执行: ```bash conda env update -n point-porj -f environment.yml pip install git+https://github.com/AutodeskAILab/occwl ``` `pythonocc-core` 在很多平台无法通过 pip 安装,请使用 conda 方式。`pythonocc-core=7.5.1` 不支持 Python 3.12,如果 base 环境被固定为 Python 3.12,请新建 Python 3.10 环境。 ## 说明 - `datasets/` 不会打进 wheel,请通过命令行参数或配置文件指定本地数据路径。 - 只有 `translate-align` 依赖的归档脚本会打进 wheel,其他 `archive/` 实验脚本不会打包。 - 根目录源码保持原样;`packaging/build_package.py` 会生成临时标准包 `geometry_measure`。