75 lines
2.5 KiB
Python
75 lines
2.5 KiB
Python
"""Command-line entry point for the wired3d viewer package.
|
|
|
|
Usage:
|
|
python -m wired3d_viewer view <file.nc> # write a standalone NC viewer
|
|
python -m wired3d_viewer serve [port] # NC drag-and-drop server
|
|
python -m wired3d_viewer view-stl <file.stl> # write a standalone STL viewer
|
|
python -m wired3d_viewer serve-stl [port] # STL drag-and-drop server (port 8766)
|
|
|
|
After ``pip install -e .`` the same commands are available as::
|
|
|
|
wired3d view <file.nc>
|
|
wired3d serve [port]
|
|
wired3d view-stl <file.stl>
|
|
wired3d serve-stl [port]
|
|
|
|
Submodules are imported lazily inside each handler so that ``view``/``serve``
|
|
only pull in plotly/numpy when actually used.
|
|
"""
|
|
|
|
import argparse
|
|
|
|
|
|
def main(argv: list[str] | None = None) -> None:
|
|
"""Parse argv and dispatch to the viewer or server.
|
|
|
|
Inputs:
|
|
argv -- optional argument list (defaults to ``sys.argv[1:]``).
|
|
Output:
|
|
None. Runs the chosen subcommand.
|
|
"""
|
|
parser = argparse.ArgumentParser(
|
|
prog="wired3d_viewer",
|
|
description="Interactive 3D viewer for Beckhoff 5-axis DED NC toolpaths.",
|
|
)
|
|
sub = parser.add_subparsers(dest="command", required=True)
|
|
|
|
p_view = sub.add_parser(
|
|
"view", help="render an NC file to a standalone HTML viewer")
|
|
p_view.add_argument("nc_file", help="path to the .nc file to visualise")
|
|
|
|
p_serve = sub.add_parser(
|
|
"serve", help="start the NC drag-and-drop web server")
|
|
p_serve.add_argument(
|
|
"port", nargs="?", type=int, default=8765,
|
|
help="TCP port to listen on (default 8765)")
|
|
|
|
p_view_stl = sub.add_parser(
|
|
"view-stl", help="render an STL mesh to a standalone HTML viewer")
|
|
p_view_stl.add_argument("stl_file", help="path to the .stl file to visualise")
|
|
|
|
p_serve_stl = sub.add_parser(
|
|
"serve-stl", help="start the STL drag-and-drop web server")
|
|
p_serve_stl.add_argument(
|
|
"port", nargs="?", type=int, default=8766,
|
|
help="TCP port to listen on (default 8766)")
|
|
|
|
args = parser.parse_args(argv)
|
|
|
|
if args.command == "view":
|
|
from .viewer import main as view_main
|
|
view_main(args.nc_file)
|
|
elif args.command == "serve":
|
|
from .server import main as serve_main
|
|
serve_main(args.port)
|
|
elif args.command == "view-stl":
|
|
from .stl_viewer import main as view_stl_main
|
|
view_stl_main(args.stl_file)
|
|
elif args.command == "serve-stl":
|
|
from .server2 import main as serve_stl_main
|
|
serve_stl_main(args.port)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|