
    :j                        d Z ddlmZmZmZmZmZmZmZm	Z	m
Z
mZmZ dZdZdZdZdZdZd	Zd
ZdZdZdZdZddZd Zedk(  rddlZ eej<                        dkD  r eej<                  d         ndZ dej<                  vZ! ee e!      Z" ee"ddd        e#de  d e$e"jJ                  d       d e&e"jO                         jP                        D  cg c]  }  e$| d       c}         yyc c} w )a)  
Mature parametric robot CONNECTOR (build123d), in the style of the text-to-cad benchmarks.

A real bracket linking one servo's output horn to the next servo's holder:
  - horn flange (z=0): 4-hole bolt circle (R7, the real ST3215 horn pattern) + center bore
  - structural beam of parametric length, with lightening holes
  - holder flange (z=L): 4 mounting holes on a rectangle
  - filleted junctions

Built canonically along +Z from 0..L (mm). Length is the free parameter.
Run with the build123d venv. __main__ exports a sample STEP+STL for review.
    )	BuildPartBuildSketchPlane	LocationsRectangleRoundedCircleextrudefilletModeAxis
export_stlg      @@)g      H@g      <@g      @)g      6@g      *@g      @g333333@g      "@)g      A@g      2@g333333@g       @       @g      8@c           
      <	   t        |       }t        |dt        z  z
  d      }t               5 }t	        t
        j                        5  t        t        t        d       d d d        t        t               t	        t
        j                  j                  t                    5  t        g t        d  d d d        t        |       t	        t
        j                  j                  |t        z
              5  t        g t        d  d d d        t        t               |r|j                         j                  t
        j                  j                  t                    |j                         j                  t
        j                  j                  |t        z
              z   }|rt        |t                t	        t
        j                        5  t#        t$        dft$         dfdt$        fdt$         f      5  t'        t(        dz         d d d        t'        t*        dz         d d d        t        t        dz   t,        j.                         t0        \  }}t	        t
        j                  j                  |t        z
  d	z
              5  t#        |dz  |dz  f| dz  |dz  f|dz  | dz  f| dz  | dz  f      5  t'        t2        dz         d d d        d d d        t        t        dz   t,        j.                         |r|t4        kD  rt7        |d
z
  t4        z        }	|	dkD  rt        ||	dz
  t4        z  z
  dz  z   nt        |dz  z   }
t9        t        |	d            D ]  }|
|t4        z  z   }t        dz   |cxk  r|t        z
  dz
  k  s,n /t	        t
        j:                        5  t#        d|f      5  t'        t<        dz         d d d        d d d        t        t        d   dt,        j.                          d d d        |j>                  S # 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   )xY w# 1 sw Y   1xY w# 1 sw Y   $xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   j>                  S xY w)N   r      )amount   r      )r   modeg      ?      T)r   bothr   ) floatmaxFL_Tr   r   r   XYr   HORN_FLr	   offsetBEAM	HOLDER_FLedges	filter_byr
   JUNC_FILLETr   HORN_BOLT_Rr   HORN_BOLT_D	HORN_BOREr   SUBTRACTHOLDER_BOLTHOLDER_BOLT_DLIGHTEN_PITCHintrangeXZ	LIGHTEN_Dpart)lengthfilletslightenLbeam_lenpjedhxhynz0izs                9/data/cameron/repos/smith300_para_stuff/connector_part.pymake_connectorr>   !   sq   fA1q4x<%H	"Wgq1 #t./&d&A& 0x T23+i++ 4t 779&&uxxt'<=WWY((T)BCDCsK( "K+{lA->K@PSTWbVbRcd{Q' e9q=! # 	taxdmm4 BTC89BFBF+rcAgrAv->a"q@QUWTWZ[T[^`]`cd]dSef}q() g : 	taxdmm4 x-/X]}45ADEEQUm$;;q@@tV^abVbObB3q!9%]**!8a.!d(Q,.$UXX.&1v."9q=1 / / 47DMMJ &K 
X 66MU #" 0/ 43 ed #" gf :9 /. /.Q 
X 66Ms   RPAR P!2AR5P.C	R)Q9P;Q&A%R3Q">QQ"B4RR*Q;8Q/	Q;-RP	R!P+	&R.P8	3R;Q QQ	RQQ""Q,	'R/Q84Q;;R RRc                      t        d      S )zREntry point for the text-to-cad `cad` skill (scripts/step). Default-length sample.      ^@)r>        r=   gen_steprC   S   s    %  rB   __main__Nr   r@   nofillet)r1   zconnector_sample.stlg?F)	toleranceascii_formatzmade connector L=z  volume_mm3=z
  bbox_mm=)TT))__doc__	build123dr   r   r   r   r   r   r	   r
   r   r   r   r   r    r   r   r$   r%   r&   r(   r)   r.   r#   r*   r>   rC   __name__syslenargvr   r3   filr/   printroundvolumetuplebounding_boxsize)xs   0r=   <module>rV      sK      	
		/d!
 z!#((ma/chhqkUA
CHH
$C!S)Dt+t%P	aSeDKK.B-C:chimizizi|  jB  jB  dC  OD  dC^_uUVWXz  dC  OD  NE  F  G  ODs   C,