
    ^jQ                        d dl mZ d dlZd dlmZ d dlmZ d dlmZ d Z	ddZ
ddZdd	Zdd
ZddZdddZedk(  r e e             y)    )annotationsN)Sequence)StepImportOptions)normalize_mesh_numericc                     ddl m}  || i |S )Nr   )generate_step_targets)cadpy.generationr   )argskwargsgenerates      5/opt/ringagent/.agents/skills/cad/scripts/step/cli.pyr   r   
   s    BT$V$$    c                    ddl m}  ||       S )Nr   )targets_include_output_pairs)r	   r   )targetsincludes_pairss     r   r   r      s    O'""r   c               ~    	 t        | |      S # t        $ r$}|j                  t        |             Y d }~y d }~ww xY w)N)
field_name)r   
ValueErrorerrorstr)valuer   parserexcs       r   _normalize_cli_numericr      s:    %e
CC SXs    	<7<c                   | j                  ddd       | j                  ddd       | j                  d	d
dd       | j                  ddd       | j                  dddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  dt        d       | j                  d t        d!       | j                  d"dd#       y )$Nr   +zYExplicit Python generator, STEP/STP file path, or SOURCE.py=OUTPUT.step pair to generate.)nargshelpz--kind)partassemblyzZRequired for direct STEP/STP targets. Generated Python targets infer kind from gen_step().)choicesr   z-oz--outputPATHz^Write the generated STEP file to this path. Valid only with one plain generated Python target.)metavarr   z--stlOUTPUTz1Export an STL sidecar to this relative .stl path.z--3mfthree_mfz0Export a 3MF sidecar to this relative .3mf path.)destr$   r   z--glbz<Export a native Y-up GLB sidecar to this relative .glb path.z--skip-step-write
store_truez^For Python gen_step() targets, generate the hidden GLB/topology artifact without writing STEP.)actionr   z--forcez]Regenerate STEP and hidden CAD Viewer GLB/topology outputs even when current artifacts match.z--mesh-tolerancez\Positive shared mesh linear deflection for GLB/topology, native GLB, STL, and 3MF artifacts.)typer   z--mesh-angular-tolerancez]Positive shared mesh angular deflection for GLB/topology, native GLB, STL, and 3MF artifacts.z	--verbosez.Show detailed progress and timing information.)add_argumentfloatr   s    r   _add_step_argumentsr.      sP   
h  
 $i  
 m	   @  
 ?	   K  
 m  
 l  
 k  
 "l  
 =  r   c                   t        | j                  | j                  | j                  t	        | j
                  d|      t	        | j                  d|            S )Nmesh_tolerance)r   r   mesh_angular_tolerance)stlr&   glbr0   r1   )r   r2   r&   r3   r   r0   r1   )r
   r   s     r   _step_import_options_from_argsr4   Z   sT    HHHH-'

  6''/ 
 r   c                 J    t        j                  dd      } t        |        | S )Nzscripts/stepzBGenerate explicit CAD STEP targets and their CAD Viewer artifacts.)progdescription)argparseArgumentParserr.   r-   s    r   build_parserr:   l   s'    $$XF Mr   c                   t               }|j                  | t        |       nd       }|j                  Ot	        |j
                        r|j                  d       t        |j
                        dk7  r|j                  d       t        |j
                  |j                  t        ||      |j                  t        |j                        t        |j                        t        |j                              S )Nz6--output cannot be combined with SOURCE=OUTPUT targets   z1--output can only be used with exactly one targetr-   )direct_step_kindstep_optionsoutputskip_step_writeforceverbose)r:   
parse_argslistr?   r   r   r   lenr   kindr4   boolr@   rA   rB   )argvr   r
   s      r   mainrI   u   s    ^F4+;T$ZFD{{'5LLQRt||!LLLM 3DH{{T1124::T\\" r   __main__)returnrG   )r   objectr   r   r   argparse.ArgumentParserrK   zfloat | None)r   rM   rK   None)r
   zargparse.Namespacer   rM   rK   r   )rK   rM   )N)rH   zSequence[str] | NonerK   int)
__future__r   r8   collections.abcr   cadpy.catalogr   cadpy.metadatar   r   r   r   r.   r4   r:   rI   __name__
SystemExit r   r   <module>rW      sT    "  $ + 1%#9x$& z
TV
 r   