feat: initial commit - massive-cloud point cloud processing system
This commit is contained in:
83
alg/delivery_v1.1/underframe_deflection/cli.py
Normal file
83
alg/delivery_v1.1/underframe_deflection/cli.py
Normal file
@@ -0,0 +1,83 @@
|
||||
"""Command-line entry point installed by ``pyproject.toml``.
|
||||
|
||||
This mirrors the project-root ``run_underframe_measurement.py`` script so
|
||||
that ``pip install`` exposes a console command (``underframe-measure``).
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
|
||||
from .pipeline import run_measurement_pipeline
|
||||
|
||||
|
||||
def parse_args() -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Measure underframe longitudinal beam deflection from a point cloud.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--input-cloud",
|
||||
required=True,
|
||||
help="Path to input scan point cloud (.ply or .xyz).",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--out-dir",
|
||||
required=True,
|
||||
help="Directory for report.json/.xlsx, CSV files, PLY overlays, and PNG plots.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--cad",
|
||||
default=None,
|
||||
help="Optional CAD reference (.ply/.xyz/.stl/.obj) used as the registration baseline.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--roi",
|
||||
default=None,
|
||||
help="Optional ROI JSON file holding an axis-aligned bbox in the CAD frame.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--config",
|
||||
default=None,
|
||||
help="Optional JSON config override file.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--profile",
|
||||
default="auto",
|
||||
choices=["auto", "M", "TC", "TP", "custom"],
|
||||
help="Optional profile for scale-related tuning.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--skip-registration",
|
||||
action="store_true",
|
||||
help="Bypass ICP even when --cad is supplied (useful for debugging).",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--no-bilateral",
|
||||
action="store_true",
|
||||
help="Disable the bilateral denoising step.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--skip-excel",
|
||||
action="store_true",
|
||||
help="Skip writing the .xlsx error report.",
|
||||
)
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def main() -> None:
|
||||
args = parse_args()
|
||||
run_measurement_pipeline(
|
||||
input_cloud=args.input_cloud,
|
||||
out_dir=args.out_dir,
|
||||
config_path=args.config,
|
||||
profile=args.profile,
|
||||
cad_path=args.cad,
|
||||
roi_path=args.roi,
|
||||
skip_registration=args.skip_registration,
|
||||
enable_bilateral=not args.no_bilateral,
|
||||
skip_excel=args.skip_excel,
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user