Files
massive-cloud/alg/delivery_v1.2/coupler_panel_release/examples/integrate_minimal.py
lipan cec0766e67 feat: 升级算法包 delivery_v1.1 → v1.2,新增任务级 CAD 与测距面板
- 算法包替换为 delivery_v1.2(coupler_panel 新增 autotune/layer_select,underframe_deflection 新增 single_beam 管线),删除 delivery_v1.1
- manifests/adapters 的 PYTHONPATH 与版本说明同步更新到 v1.2
- 新增任务级 CAD 文件支持(task_cad_files 表、上传/读取路由、TaskManager 全选与加载显示)
- 新增 train-measurement 自定义前端面板(YAML 编辑器 + 可视化 ROI 配置 + 3D 取点)
- PointCloudViewer 支持 PLY 叠加层渲染与 ROI 拾取
- Dockerfile 改用 Miniforge 安装 pythonocc-core,修复 libgomp/libstdc++ 依赖
2026-06-11 02:30:04 +00:00

59 lines
1.7 KiB
Python

"""Minimal integration example for software developers.
This script shows the *only* code path a production caller needs:
load a clean, registered point cloud → call the API → use the result
Run::
python examples/integrate_minimal.py path/to/scan.ply
"""
from __future__ import annotations
import logging
import sys
from pathlib import Path
from coupler_panel import (
CouplerError,
compute_coupler_measurement,
load_point_cloud,
)
def main(input_path: Path) -> int:
logging.basicConfig(level=logging.INFO, format="%(levelname)s %(name)s: %(message)s")
log = logging.getLogger("integrate_minimal")
points = load_point_cloud(input_path)
log.info("loaded %d points from %s", points.shape[0], input_path)
try:
result = compute_coupler_measurement(
points,
progress=lambda s, f: log.info("[%5.1f%%] %s", f * 100, s),
)
except CouplerError as exc:
log.error("measurement failed: %s", exc)
return 2
print(f"theta_right_deg = {result.theta_right_deg:+.4f}")
print(f"theta_ref_deg = {result.theta_ref_deg:+.4f}")
print(f"D_y_max_mm = {result.D_y_max_mm:.3f}")
print(f"D_z_max_mm = {result.D_z_max_mm:.3f}")
print(f"dx_y_max_mm = {result.dx_y_max_mm:.3f}")
print(f"dx_z_max_mm = {result.dx_z_max_mm:.3f}")
print(f"center_C = {tuple(round(c, 3) for c in result.center_C)}")
print(f"normal = {tuple(round(c, 6) for c in result.normal)}")
print(f"quality_flags = {result.quality_flags}")
return 0
if __name__ == "__main__":
if len(sys.argv) != 2:
print(__doc__.strip())
sys.exit(1)
sys.exit(main(Path(sys.argv[1])))