From 0915b2b6dcaa2bd7cc1e5d9f7edf7dfdd609f49a Mon Sep 17 00:00:00 2001 From: Alex Selimov Date: Fri, 4 Sep 2026 06:53:32 -0400 Subject: [PATCH] Init repo with first model and README --- README.md | 20 ++++++++++++++++++++ img/laptop_holder.png | Bin 0 -> 20135 bytes laptop_holder.py | 37 +++++++++++++++++++++++++++++++++++++ laptop_holder.stl | Bin 0 -> 117484 bytes 4 files changed, 57 insertions(+) create mode 100644 README.md create mode 100644 img/laptop_holder.png create mode 100644 laptop_holder.py create mode 100644 laptop_holder.stl diff --git a/README.md b/README.md new file mode 100644 index 0000000..9e06d51 --- /dev/null +++ b/README.md @@ -0,0 +1,20 @@ +# CAD Models + +This repo contains a collection of random CAD models I've created mainly using build123d. + +## How to run + + +``` +uv run +``` + +## Model descriptions + +### Laptop Holder + +![Vertical Laptop holder with 4 slots](./img/laptop_holder.png) + +I needed a laptop holder that could hold 4 laptops (work, personal macbook, personal linux laptop, wife's laptop when she didn't need it). +This is my first real model created with build123d. + diff --git a/img/laptop_holder.png b/img/laptop_holder.png new file mode 100644 index 0000000000000000000000000000000000000000..9db04a07c25bb94ac59cb152269219cdca42f320 GIT binary patch literal 20135 zcmX6^bzD^M(_Ivl5CtR`q$Q=hyQHNXq`Q`G1YGHkr8}1HMnR;z`zyU5tSr6MyZ+vP z`CRrs&&=GJbLPx^(@;~u#Rg&n003MiMcGdPz%yC^01bxu0`-?ZPrdH|fSQYvtdzEI z&dCN2$ao?5;I7XK$EeZrd-9**n=m$vSQ^1^=Mm`7xqi>^q6>#fKBEuIEHOCVTxiQ$ zn{#xzo>=b{<9W!mvbnU<<(vu=g-kZR#Ke;pPLvcD6YQqoY_|U5%sJf1MQzk*ZKU<2 zC0?qfP+m1zDV)$VbsOABI8yq_fI@HKHn->LuCKh#pvgv>8me29e0jWt14x?TE1o=< z%=g090Kt8SL`v%F)J+4=l8wHk_l*L@g9 z(1Wdqgh+Y|K8`q$0RED}sYn2d&*^9Z&s4X@*Pe&&a?w63w$mh?Sx9E{#cnMV{&9P<9VhP+`?%T3}L0+yf^?rNdmP8y576*C11u~ ze;nF>jTTzM#rGTl;FiHl@@N7A7p)SCEC39j`OF$IX#wU;8_#i8ioxOr^I$*)cW-QM z6<}5dFN{mS$Le)w)iXsLI6o)$c|Abm13JFNke-$X=PQ*WNdh@3JT$;_drTUzmHKlF zGqe1;J>n7bg;=*eG=QWoDL$IUAgoGQQBMZ|GnYjN0IZ^@X?dYs7$U~cIB}gZl85GB z0Z0{b=!u{sjf2G0BbKu0l4)m;?m!5dBCZtrFY`+R0O1=cbigaw9>VCNzfuu32NO~= zoEpwnR)T4rnG)+ytF$l7JF7NW!iIq}Hg9r|ww0ZWW#bcF~}> z$pT_b#!O;277EJixjfa1u|+w*T{;e%-08lsY!QyHosGw^?6!@bh>p}PP^^CU1^4YU2UQV2d(4?3 zhxs3zOw~Wh92~?`xcUa67N^ zN;R(kRl^sE4#meOm5~9HV;*6A;iTiYC@V<4i-O~_UxvqBUsn-1HNN6|bZhWFSsh(E zUaW!oWgl;F^cYQ=26*pHZQbt+RxgUw~1JG%}-!U!pI3o9OpVveI_oCwc3+3(W z&z2_VvH2~e;H7;LYb4a6Le^Gu~?yYwnCyjC5~ z=)1ROj4%#3X-Uh!y(pJB34H7)>D3_O-Ji2j87T+V03hGsNH|k=SspmfJb0$drwheEiJ@JFQfYVgXm^#%v$aq#Jo%2abF-zN~ zzvJGqWrEn^ZQ$KWo1V*DVsXMb^0-dVcNP&2d$iRd`Hc5YAJFt#5(dHFZdb*u3dzl?$68DulsR0ay-^B zNQ|jXOiU&#UO{%ue!ti?D2&nBU{wppL=3;H)If^nb6G~cdh=$fJHc_kl4ox@cWCr( z^IE(E-g{RjdfFd}lbcu!+G51zm73#3E+fwkFOCMWh+C)s)=uf^9=?Z~V8=6(A`ZWY zJ=Y28-Hv9>!7I{YK!t{fOV^*qF&3>4dZvD*=YE6v)rk$Zzj6e&cH%`QJ0^@m{WrXp zglKlFptZ@R${E5myW24w>1L0Jj7i>UTk&(UgJ5A=ZgFw(_Yw1}GIG!3p6I})qP`N# zDH!!;zZGN&_3VbBd3lt#-(QMTUvGu_0gj*4BcYk8UB;s!k0Bvd2! zSqxg8vPAFy4y3{DhXr?Hd2;OY3WjFvDR3o(kBYQ--iY6rD{Jwz=u%-g$Kml7!QOBq z^&jtUsm8h-a5Q4UC10p%(eb~x+|_xHtxIIF`h9Y|)XXXT_2lak#>vRpg)cj+dH7l9 z8JMi`v?nYOdby71dvxrfx{2{0PeVWvFG`eGC9p z@nSy%+V#&b+t*{gb+{1Uyoo6cO|wFBJpH-d~5L|97D^+)w-F1NfF;E6M_aH)W`&AKy72q zmjCY5LEWETOFZ>zv^>Uh(n;`Bg8^<7#@-sjFGSEKc`cqxrpA3B$HHcHN1Zbv13erQ z0C@4u6Pv{e*HokYcLB3>Nd3$f-ys~#ZK!of-7i{A#sqv3YSo?l*DkKr409WoKTaAK zRT0hcuD)}B$@|_R2st{z8|-3HsdvxcIeBIkTeCjFxv4J01Aw^?P{M^dpXpHoG*n{2 z06^$CAwT#~)M>hrp#)Xy%#+o0kX?Sy{B#fT@ynhAGUa3LeO*UUW%E;C`fCSSfZ+d% zMjZ9Cf+9tp4?v`R%&amr%?Wa&G z=Hy-oVK1`*e8*e;FCnFXtX*IA4b&!)xol({WeHmyzzWI>sN3Vo0#GFnTZkCCHpwdN zZE_{4ij-W!m+=AzDkmVr`1q{#tGSmOPk&|s;;g%6`$f$}m=Ayx&SM z0HH$IB(l5_c(UUK6WPu35g~5?O#iznK-dtvHr0e7*NVC<)nL`|t2rwhQWRdYN_Y{% z#3C;Xm^L7iv_atw03eHb-8ymd2Mf^NI$>WG0QhBz_8nkMkrfuRaPj{LNUNQ?h?NhZ z;vo!mDQjXWxS-(T=B8CtrzyAbO-4gqy+00Y*F?Q|WUF2$+}y+hC|LgIr{{-@=PK`P z6Hvd?;K1o9fQCs0advh ze~M^)1QG5w>oo1H&-tW18}5y|Ub<_)o|^)y@Ft4(2LHsO2LN`Zeusl62g){Pv=pRx zBi7vp`R&umRgfe;VMOpbq2w>%x4c@v#h8s(xV{~sAjTD!*s=xD#i1n~YWWn8Cv1Qim-8C?Vn5OFB-tQ(T! z(uV{cf9l5sSXFD_PVmAUnjp;|OggobON!Z`>J-G}_Ie8y6WQBLNH2TRj*GX&-=4@< zozx76i z>AtIRawU~C-o!hsX_=8kOc&R^l?U)fQYSy3f}3griO5ESNR=F-q222~QG{`eYdJpt zj+gu???Oq4_+xJzZNuZyXmBfPG^9{eW9l|XS8s|J`%VpVmvis-SIfiRUR!pBK)#6o zm50DfmGC@8+X)D(9Ae}=V{p+*9cJmg>RsftTrU+}^hwXt@T3#+!`URQ?pW3G-xum1 z|KApEP%M~!nC*}9s?w0S9wpJp8Q}!O6uGcr$~>>0W?B2iGZ{T2dw{)YjZRQb%kRxM zR1gJ|xF48wFxGj*M#Y$%YMX8Qy?j|Qt;mpnZk@BqZIkmY5zaVjdmnLvc6TNn-ol945eLMVtv%EOp~k>qN-Fvd!?L z#_mWMB|1}wb~0tDvR_hhEY7;ODQ%V>#4dKLFLwfW6$--@AtpLaiWjYfwMRN%CkNzj zuN9HImC<;zv%aSLXM(!O<)5OE5-$crJU6crlX@0{hhW~4oYji$**TI$uiV5%%uF9e=m*DxE6*SvdVRVW-tM2!anxta{ zw<|Mme4dnN#1cqF-{4TGI1`WZ5sx>Y6MjcDL)}lP%G<-^lfKEBf%#usiLDuJF-`5` z?2d~cUtd>mD}i)3ixKyICL0-|%)y~-6X!?v;_-VQ*AOr#RJ)sw?H?o$K+onD^LsJF zi8zEpb2XDPyuC)o2D~|fR2?BuOu2@=r(aeIvIv`rXtCs7dEDnQ3VXJFNygEv5$%|C zx2bkz6y07`GOx4GzWB1z}~H6*G86KNy@Ol62)AM?KF*@5sC+V%HD@{g+6id`baymhs_kqXX&^EMoE*FhlmGX>(kh)~q zt=f|x?LwH?{2%t)c0y`84=_uhiDNzk5kUBXVNvYjPgV82xXr&C{R>3O-s$0B>Il)7 z_&%~$)R9Dre)apiVvQCzK^`90=cN*tACnOmIbCIh(&<<6BXo5a>FmFfv*)*qXe6-b zrd0-{Kh3cs+fNlBK-Kq$72w%NT9R%KUy!^)&^j~Q)4c8sC*Ruy(Hx2k+0_NUG1%1H zTGkeWv->Q5iKE)qK1Ek6e^PNkayG#tjI0cJ{w2yr=s<1e@Nl@>Pb>_>bd#BhsH{~U zV_^v$BTM(W;VrIhAAQXd7A>Pv-o){C3GkNzmt?VpigW~ZnSyU8W>D{y_?ZU#og@dE^vb@BjMsaxj9TsB_ z-Vxkwiy}EkZMyTtb=%~*&f@ImABS`&kE>{b-BK=}kMdRrb_qEhf*qD^_E5DZN@61v z;4d!4qs_xht}o&LQ4%T3Pl~UkVaPZozrNSKCpo*mV6seNm-)SjMwY5>ChxV2ewL7D z8GX(5aC2;LrOOI!2NxID?;MKtP@UdRbq}tpjf<_P)b}TdKW?4H3ZDDp4IV;Ort62J zw6^pm7ky?aEy|VO3k$mALzBlA0HSz>8}&5w_D`@HP*zI?sH zdB6EF%mFgGwz)R5Hi%2(qFJRi+?8nmp*adaDS|!-;Uu@HM^NU)esT3?#^ToRT$kKP zP~WlHX0_RVQW1Py6vLj3qT$5|TN5sx<~pO~5)o-fMGpn%i|bd|k7Wysc40@Gt%G|Z zcR-9PrM|qLuo>+X8d(-rO9Y|xY_I-cNk4iLJvqesM*vZRuRUjjJ@TWYVeeU-tDu<= z2qYM`n{MQiR9njqJ2^=c*a~d&*m{iUsycFX@@)^~UV;@;Z`v~nr1Clog2a0}qsAV|ybsaD_#0d<~lf&%F?DW6HQD$hRchl6t zab|dA9ZOG4v(^cHwlXVde#%?mjN$j8Y*4Rf;m&!>(%T(z?KKkJyL^ewKia1dvTedv zUPLQlb}zO6_xHdg)6BG;&j524B9FO?fy8ByLJe~VmiuHA zQp`>5f2eCh~IVYQ|BA&(FvUnb^loJFnUdb@x!d zdC1Hpb?%J|7`Kp>Q7nGs({ywMMh3UF{vtQ_hHtXL%`O_pIWU%T*?3tzg`uOF^rhXq zS=UM3)L{MM&O$x>+HL$d?{I(63uLwgMpEr)tLFUf)@-OBqjCb#TU{bdJU(9Is3qF9 z7##s{C-4ZQe(J-#2>7z{cxO*X5D3mY{oO3_a^8ptGF*3lET@Z4<5DzG$`l@Dn%&*g zxHNg|{NSZGgCI=@N78S6dKTfsRXWg5jwL$ce*8Qn`A#>>_TNo;%5+K{3(eIJY?#A6 zWOy88wf_VZ@d^ol9^H2q2BHdzdd+cq6`axHXc7b*?Gux(K?0>!k)-$|#+`IjuWV_V zzZjilwIzHaC#d|}{cR?x8Wo?Bb7x}3y57oho@Puv`U`iFl{NMZ^GxBY_0s70=Z}R( zI8<_-(F%_DkyU#PS|bzh@j!z|m5_GbU#SXaKFXhxflAnKor(x?zmnBptqwP)nOoAy z%YKrXP~aJ5oP9_pep^XLA~e~FNUXg@3t4g)P4w}Tv!LAws&29C{?3}DA`B0gSuf@j zHrXQ~bn0IFz~m$3uOEp?Yms7~!|?U{L?H@>^(If#*K#~dIgpJJ>oK1x4NNH_tP+mQ zuHg@ZzLg)%4SIvqsM9PQ*N(ayZzj4}uf%eD!W0-B>C_v&MAB{l?o|LzW7vN=F1dPd zL|mzYQh%lrQOj4Q!1u?q=wxJMl8N}!$M-+;srSb&R-mwniFs*Jj_3?fY-Akn;8p36 z9YMBHtigvaW9zVEJZXGd1)+H6`iLiM&Re^vLcpF_fVM?5e+w!Y#-zpKyxi^Z9PcHf zQPSJGtE*M1DCRQDUIugE4>_5K1f;+J=9yYPyZNfvLWpDaYjHF?%WiBfKnmCRH@O-Ic3RGCEzz=I^Z2#2M5MP$$XVOKFJH94kZ=#y4 zirI3FJ=GFO1O7R_YcXkovzBqqcppU^At2PAY#NQtv+Io99E?hT5x~mZG2I$$m~B9N~%0%`q>>gsA;jCB9XpBKPW~SYtuETkX6QPwHpirJJVp z!}h{EGRKqAOd??@@l;&&fXy|Hb; z90%H=vZ$`7L+!3I@m;@LX*Ke8GY!kEr39;`ZsIeIhQk zjk+2j)lW6g*mch3ww~F=;~0KTM@#&x~{ReGw!I1)+VnnFO^K2JrLta3@1Y=QWKq-Vaa~niNk7$n3%+& z-?J5F*#?KaC<$0qbbU7+-~p?4chzdJud!A-J%wAI|Emp{#OlT4i(CXSpSk+I6j!*gxWw%nDis*f7 zF(84ho=zIbc0tPjX_r8Yhif*a{2T6s)5fOwiRCSV)71lz*t(to&TQXtByOY>Uh>mV zL3SL1p5abJzaM2H?;;X#4V|n4Gc8HcyGEL~=8H0qj+IM6fsoQBEOWZ-R_`-^PIMCJ zO0hh;e35(!-{X#e`C+3+$|c9-b(&ZmS7tah0iEgcRbxwhSsriQBN=;});b&f{6<(B zff7~BkFTzjOb6F^a{Y0 zAEwkR<#%CmZ8$J8GESd654)GN`treK47E7k0;rBH_k*>@J?t9p)v zTzQ<_?R@!+3&EXLMOd+5{gVIrs3q5@=BNsIa;X)7VJvD9v3>Ff7FlIlPiy4l|8hrz zil7elJi~Wfx(Sk_Sp&X+Cfg|nJYXn(Qs&>H*6cWpp1ASj)%W&HS8g3Wa@G88&m?>Q z#oAF?IqLk3ejglF89AR~_or`E>`f*l`|FHMi*Hkpsf$c>&bj~C%o%r^p=3w*^ZFj1 z4&aC63cB=}j3NU0P#aCU&-mHudE)~%JC{LXjS%a-cqTC(h>>`$1-t+!s)$@@ciOqD<2|EtuN9j4y2tdPC{G$(DMd0H`2C>mPN-8!;+|6r|Yd zqYT<&m)WuGG;P4wSs3JQvaOVe!{7ecdGSUsEr3}o0RO=wPrx?W85ka z-N;VaP<2h*UQcLDWmcxfJrPyBwd2Lj1S%RMnAt?mfM1kQ@8)WNRyDc@+B!Uv3NSoG znM(DDI&H19=$%~^3@@oQKMPgz=(%$-bwj97GHMt28S3%WGyV6BwoDU$^ZEHi6@Jpy zmA6pfja$WCCq}Y=$b(Sbw{KX-K#+I^;%#@c)RG;H}h5jNuQ5{l%x6{YQG++G+-@zqEe=k<0TE9VB966I9Oe3Y> zNGX1=<|o&gBk7KkR7Dc@o>s_sY=-%kjJ2@dpQgq?#s;h%9#(it^qjnuxRKhk<%=-( zTF^oKB6k&}8Kwdya^$EawN{r~|ND4H=L{?_;j*MsfZQ~@+gId-pUc*XY38eqJ3iS2 zA9f>f6`l=vPKg}^+L_%pI^m^ZQ78K?dP~Z zTYYA&&TIRkn>thL3}zDD#-{e!@83w=*Prurx!zSZd#Ma3?D=+_Pm1gvLF-W56Is^X zb)tH3-FIBu#WE*kFju&qH#spITdm%Rr020`Z%wnb&qmP(q(y!AX7HCu5V5lJ`Dlf5 zkS%B*R#VC`idNFqWpvtmcUpBP${F;n`>b$GHuyYyRLQ$(+`E4W#XU#8=u4-I-kqQJ zJq0tW+^@uNj4m%{R_83UO}%zWP6)Z*K_oaU?+#Gi*59AF_R^^T5&7kpGvIu}4bK_d zg;ODUU@jumAt8r`2i~|sEoDg{pu^Wg-q+{7!EO~J6{CmyN zDj?>ZK})1&QaeZ01w|o=(gndtdLCV@X>XU~5_`uzVl1~#0+Ey;SWNLzK`34vX(x2| zrzuyWE3#7IotL)tuI$rJGvM;aODa&A`NgsA>i%e2e%C10hogBd^|Yt?pjxN9<%P69 zPuOfJqUFsdQ~pWMtWXjQu8^Vf&Xb#?MKow|kJ1*Nf4PGiM$oyQtE^Y%=+R!RHrP>t z+SkNyUQPP+YKh;iOpT(XZ)kMbyp?@ zZKD2-bqgiU=SVyq>GgR$=JMwF#(eW)zPwyAGwWbGv8N!%@hAW0G3!ip$v5LZK3*{Q z>k;3`YM_b>Q9wy6^&okHRpyv-sk9&O;ES=bSXELddPm=x+k0|iWPnu~Ind>!9>s<$ z*w^#mSXwuFEhcw0tXYc251%^XjV1rYOW3)-#_zJulz?)|g7cK3`6c8o);88Bhu2A-gwl<>k?{&!5?S01eeO2S? zu!(>B{d9exInoFLVlJp)T{TTkXjY8^=1$HgrF`u>%ivy~F={bXlAxO7XU_xIRoZ_bBeaFdb=I*TvnhaWsW6s{3f~z&-&qT~xt7*z#Wn zHuB8R;S8H}a|~rdT5O~5Dj?nnn8!s-AJqRIRw@hn{d1nRQQ~x&ev8bp9v!bxC^F-P z8d=%NP2S()w9Z$T;}Lhuhv1Xx=|n=)2+bsVdA5zywc+$R9F@=)oBqdawNvWsQwyR*#IemgsRPG{EHxaFQ6NM6;PRL-XmoSj28J7Lx&0er>U7zWxM%9*2`DfFhOC3MN z2xD$i+Dl5`f=|Ue!Da)a?|jyO2j+U~EnLRj$(iEW5~Xr?jJfHbYq98-w*FGP&(})o1%)@>XaFPNXkM4I$2Y6h=&agh!{@2WsVi*yKfQK>#b$ z|K+v_ia>=;bc{NPEwxMPK@lc<+~D0BP1S_b!8C?bPRMRUY}c4u@tT@*fQ;JZ#+5m9 zG{yBgIrn35m~0<%355~m9f`{T=c-fqv0!R0Bzm!|v{_pCWc zM$N%-mirK-8|V5(j_tKT;eJVodyIPfi(*>$gg^d9qSPX%LgCc2wEIRoDT58M(D+}n zO5T_Yx_dyD*7=GWEMSeM!TjR*aWp?Rf1;c10uD#FMxO6BmMs*kP3@yz$pdQq$1A$G zr|n@*;vpr+YtdlRc{T1P9EZKazq;?PtIw1F6x~T4Z=|8y*)_p!-|IxU@wZ9i1&fz* z%_@YrtRURQwYAkIK&fTY{cp^P4GBj#x9Qu!NudMn%Vo_@?h}*>;T1jbbZPdq z(BXV{buxL~qFLZ#P$-fh@K!pu$M<7{uI!x(m!V_4@r$HppFmaQXp;edt;6uPej}1j zq)d*kM#KVJ-0|_Ai)m4&w!$^`j;G9z8s;Dv0ePpjgUEGr>R=0V>&X@>50jUD&3r zfwrm}@;Bcb5%-w+`}^mxdT(&uZ$4e+?=BSY3)4||s`jHw`nuZyuFem7N5lUD7K=(a zs9)nCP^=Nh4I!&t2R}|)V7|8EN>Y=#@OF6<6k^NlfW2YoGxExBWG+MjS7nPMAw#;0 z-7n;7#Wq)Z{>kwdafkcoTCGH+#@f_wPCVaa5Qp;`L;1-3Y4vXh$NiX@XYz8}lr8I> zUeLMYiv2nb;Z2teJNls>ebu@!88yvnAPROK&k9F%mT)I%87c|P2kc|GcVaq9>Nk~9 zu&lqUhNoIj+P<4vc=KQ=kPW)FpMA(S{_?gdmm%=+jYLh&SqOz#x7q%y16$TeR3rF+ zH0X~d6?8R9x=;M!V(z)m%cn0AH_tmxJCAd=&9Cou|9s*d2-&g?%Z3;hStm!Ab;eMA#|ru z4j(qe&#gkDM#1!ibm9I>T{%-gg7vlLWxa&1wp#hN!uEf7t8RnyZ1cLe4Z-7iFzF>8 zax*|xyMA@ElOV#H(cC%|utw5%BUiroa)J&_TDv}8-f?tVU8g_C4s?-CuvWLdJi@`& zNh&Lt?6=75mQeK*W?jKghgvngYSvM25UZKfC|yaD@wxA~|C)l_J3TN<>CNR3#uy8r z>Qi5@FN^GZgaFylujWc;Yj4lT=JcNKr=E;ECc3`(_N?LMtzB^YNYN+6IXInEe{3rF zlbQjarAdYLR&G1N^D5|yX}^@>fD1oW++6Oh9UmXvMlD8>WZ-iOXjrB76I0v_*)#LXRXrn;UhNb0^u&d$l=e>qy6 zV+ffptDR;SM$w#ke%d+y2M#jh#-Fzhbkv1)yr&)mloN#ZMXwG8TvOBLMxRdDeOh8O1Trq+he_$N8mcKpJkG;~A$!!5nnJ#eAOavj>IW%=kz44IS$)lp<5qX>&r`n^X?|+X%u?#W9Y#uI*;GfhZ z0)ah75T0!x>_;}g+|#&O=O z%j1F~bJri00c%?7V(--@9-7ZvqR4PXkUpJTPeUR1Lv)cpQ>3V4*as$1(_z;!tjmYP zDa057dL+3akGE+%t03fnC7YMo(c^uFLh^B`dL?NHY?xRQ+etI8kelt?C4SrFM#78aGjyJ$)v zFj-Uy*^&OU;{95v>|2Lsn;l=+Q@U@j$nE87FA+j_t&TkS|ETXCtMZUIpzqMDuW&Q(4;S_XE}30zqANBlWvg&!pkskKQqsTiv+Vzd1fb4)UsGw5c_`U?DaNUW6hsUZ}< zo;J`K9ikikv``#i_ud7fx+a|UVw|~0--|;ZiL6!I=SyszyM0RC~9J9l$YT# zuQJBK@4;4Y(o_ZNk+!N)*%bp>=9;8z7aE!BrV4{b@-Hg(TX~C;VYp7Ps)t{($s->7!zmtpcJQZol`ty`m(uc1{vd~s88`b z#r7r^t%_R(JbTUATvEP3yT5KY8u=lXa^R*Quo*DZ`)aFD4M6VNKNAIW+)l&x#PYHqO2cF% z)PxbXuAIzEX-@cShkw12i)kZx3A5C;CXQDbLhU_ts*l)$M`G#+tJIjX?s9S({!9AE zrj)K*V@L#hWX))M50nPoo}PEn9m+8UGn3pgBpzHz0Cu2C!1$G3)_|sHOvA57F5`mBQkb=`d+i-3pC#uz znwySYGef;v;m`9sS-q=WOT93t|9-hPUH=G;Fs`e!^N49Xp!KutPq)p_^GuBt=`J>w zb)M?#f zP|44#9P&CD$?y=$)S~8s-kr~Oc22*oaF$CK1`>Grtpmg;K2I}HnIU|O9ypzDeWH=b z`IA2>@&VU&{O_lA_)bpODkhA0$HD*Jf$mReru@Zjp_1IM9# zODL3W$5~FN^bq4$TjU%rzconZ@%NzeDAa~Djpudb%wS@d4v*iT>MF*ggM6dk)ksXJ&%Rpu z)n_|9MU^rsEAul-B}kstDdlkuZ|GQ4iF!qA9KHR28p01nVKT?`>xmwVMP|bJe2MgO z#}1$cl|@FKXq2_m;fDWpf5N*R+maXgmR@%=;o_9G-yADkW{Zex7Y({Zg#=3BnQR`< zIo&M>fI#*GFSs`0-nqLGZ`v+<$c6727}ov2ZX~1QMln$E2;&?CkmF_VIXEy(#QWKs znN<6m1(X!&1kD*V&}a8z1O)|6D$ogk_8cHud(ZaRZ)Q|h2V`zLrDV?qb!lbo&+gbE z7g`>JZQ1YB-ioW825;WFsVWKuwo}>j@r)VS>fri6kNE?c9JRc5Cclk|BEz?rg2;tU z#71X|iWM_PD@$-O*w0$FPx5q?4k?7ZSvx4a-0}@xnnV2gi`8g6E5xTQJYa`BT={;PR-v70at9DvlH1Ln-@=sEDOkxfP%jIY$VYblv_Z=JrjSf>6F;1PU zg~-kFi{GItk~(FdC^|l$CUPt1w04$Pl6wxv6nJ=woZA za6bKeAeryM)l26qPHrzGbJq4}P3c)Yla9oq6PlqMUIRD}@Oao@CkI`X0x|7r;=l8T z3fx!H(4WlUW$=i3(vN3R%=gc}J)Pau^b2xL$O%vr-mp)DMNa!0_w&I$7#uwMK9^C9 zk7~7C_RA6OQKw8Clint01CyE$%$gu{KDyJg6+|;B&cIydf!Q7J)v6V>iqY`Lp3S{! z;Jk{kxF!r9>~W1#3Y~kaC6;w`K0Pm-v`S<3dGrZXzFizJdkY^%`odD9quz+|YYJDZ z&EIG|zrdGz<*{VI2fvW*^c}pnv!LHgsqxmS(aGus!Di>L(kchZ_nqL3Ma4AsM3u-a z<9dIOYfmjph3_lc3t?z0HT3s- zg@vqwoNm5g&TU#>R3f=}6Wh6k8@vK+`u?b)pbG^vPjr=tDxr<3<>bCGGB4_1TjR%?}+|v~osNwT#c$x?goAWk=zgOlB`+ z7aEa#9yRU`i5~k!?SV+X8kd)u?|2b~|KKAkZf@Xx>32EYtOB!w>^F@03qu901aV}Z z8v}>pC#wd(gTaH%FNfmosW9KkPwM{#du}Vp0af`UhzV?7sZc;7HTo!!ok@SYr4=}PV1==<+$Gm?@Y%Vef=X}N?e zYLYL=;?hyEM&jqvDjnm_{KVTvsLf>R&Ko7neXqXgI)dlf$h1>4#6`Ck)2vdJEnbA* zm731jDx6a#Kmd3}4-Os0` z1Mh-+M@)jx^bcq7aq0ZG;~cBx)n6bR_6KCtI2%iqQrRwPPy15xWL0r|4Z%4JT%Ki= z>CKT27v)dC4897!llpk9FT}@Fs!96|mh*T|eia|}{lg|Rcevu@A-PlP41UnLINU_N zSyXs?G5r4S$+GXPm|AL`vuJ4iC+BAmOwCh5RpO!Qz(!mW>5DDF-W=AcW9nQr^k6j#MFDU*=EXw#hGV+1V!G@H50m?9gO8?)3K^M z_-vXVPzGr@l@2*cnPuPaenUI(9T(|TjT-XjF_X6Q$8^V~SV{A7GtzSyQb~w=0h1?h z$U+T~CX1`#kg%sFP+Wsxm+z*w8iEgA?rwW-s-5r!PjT!I=ZOWN-!_^52(KD^kNTug z8&%xg+{qvDgpMkTW8cuSKfL2hq}UKq&RZ4#FCw`Xc4xKq!$3>=8@VF!xSv+M|B!o{ zWYJTP3zPf6*E|47@KL=sU_c0M&${k)P|5KbZ0bQ@;X;|~6~kpU zCWz&f+=dtUHOhjIH#^o#>}BbV`)0o(*{X1$b2G8PS}QKc*GR;tDOID4kuM2eWAUGC z)_9D?4Fr`b#V)3LaOAwNE=K<*!QT0}_?pl3&RX^``R!3cUs7gs9ESuf3$4K1eNXoc zDxEL(7uPbyu?b4<@4Qj7`5$d8MFlXAK`OOvZVXnyWRB~d-{Ztj#0{Sq3Xyi?qOk=De`E^rxUIv^2eeZ5|l|HkmQ3ut7I zdz$gYUi(vwDd*0?^Bp(AFhz&m+IY-3!kUgz0ZmE|G^3}HhWvm(z6E@~jCzw4h>pi` z-JToJN!ezd^jv8kuziI&vW?wqusKs~GXNGzE}Os(uw2$$#q~7sIgQhrxuR>rqN7!v zW_|NcSm8{2Y4vbKC;z2$VdyP-#Sxvl z)vpOE1BYkE0iC&X;M2nyfyYNe##mW0`?($M*A59EDG;R6+W2h%uB1iJtINxg7!I{w zT`XG3lyFDqkNIt03y)cHT{vPyx?+vITSB`2vkPz9;Bp;q{=9#G9-*4GQ3->kb+)^`<=32UhV`^y0Wh=tGfrg7VWgGP2hN0D}dJw^nA3*t6*lQ42|F zS)txheV>23y7T+nfRj_nT2l%W;%1wxD35mb;`?IM zGRd+D#NT)!i=%5Glu}br^xGI6KiwK_SmcQ?{i=1P**O?ivH=4r>AI9#d8w%Tu`t5D z`0AaCmF=v&%B5V=+kfjwq><7K_p>v2C};pi;sF5LDKYp-1wxDf zKx!VASl`iSazM$#ny?50^$QgHJNnT zh;=9aZBXr^tV7gCFQ+##J^c!B#06E8EkA`-LwXG522QH^QOiaKS({5s0`Cja<2Vn4 z?lB6b0=m)pSkVB~u_)$g4L6;nk>eKoXa7cgLHQ z1dmav4}2#HYT=eW)ZqbQ_D6(sUIHziM|~^i+ncPq!(d8<;q0N7OVhUc{+lc1^zdPh z{R@<&Gi2nZ3Duhx5=`0avXD{DoPjX$vAbhrqX8j>q2d7>s)!zu^05v_-q?E?7=@=K zfc!9^v-c}ce_l-i+B54QD*SgxGmLsQPm*=*<%OX|9rx!?CZ~6gaURI8?97o#RH-gP zOp-Y-a-(d}qi72g6afOuz7ha1g}5jUNib4kOp83~qaIo*C+!?Mz!0?tjyF;$^L6hn z$vp1wp90V+J0u=?`hs~^6m1zg8p z6j!wvQSKeRilbzTObX#J@)^g2-M0hEW|5NEI!)zr15!9DsO_%l=C;jEGi!zwHQ0+p}vn6&tZI93BuxQ*6h zAN+=|#X|5MYl;@r#=gX~^`oN(9#vZR_BId)A?{808%vL z2`$F^t9s_(vGgN}uCUT9^WruPjP%FQ@6z>Bv$Y)v8ARLD*%KjIkUl``P^aB{;q}@y z!ANBbh6=m9tW#}NEs=Tui|ko|DiJQ@k3t*y@6K9q5{6|?T#UY_n+4@vR!5GMtC=Te z54SFWq`u0;t_o{0A4_0;<%2EBoW@|oRVQm{(3X$f>l4BPgY4E%6^63t`196C-c;J< zlHUb^=Y7UHw{z(kQM+}IV_(uF`Y!j$XT@Yf(>1FNQPib`;hR0v<#g)*HF4(QP_=y= zKXzlwH1;K9c~RLiLos5kDU*0fQZbX=kdn156JjD;55-UqCdx7yrIHrgYwNLZ*;N|5 zl${~(J$jz&dj31tb*{7A=f2PV{ho9GzMtXDxP;L$xxX?VXk=|)Z&GcYJ(o6eHDLfl~`*}xpXBf?o`*tH5b$Uck6fW zU3xp78loN^4;6MvnN$^flsR{4DJqa}8@BjHm7@ejYx6F38{S9>-|_!tITpUG$rx}= z7W0-CM@m?Q+DaR9mP<-X!qW?m2r}M}GN*pJPjr{Rq0YWCE6fx6poSWbIyk;5x9j3v z;YMwqMzL31?s?VTy(=ds!f(t;#}44B@@|26`$+?XC$nqEp5ztBv_0x>T7Ou!CElU2 zvpfHB=V_TSYDJHhO+C1%O6;sCdwWaDPBZw0KKUC#A8KY_)zQk5)(7Pxm)0Y%_)(-U z+S`mGYn5+q`JbPwbdoh&F~S*jtEHN0Rf&m7kH*1O)?@org=53UL4qZPYS#o3_)*zg zS|C~94Lq{x3_j{usNTbAq+OFnWcb)=Qx~UfE zjGF@bz>^zxHR?H0GvmOZ$134Wbqf_mty?>%OJb zJ`1WCiqNHQ}LkHO|!M~qH=sx$llVHI8};b@yx`XsPxi z9G+0yns)*7X?RRhm11#8DNU#yG3jNGZtWFts(WMvk(}yU@iwJ=-)c6rft1k^Kutl; z7>FX2DtWjmVDxLVEGC%ux%m+Zo1{;%lE=j2A7~!F&yzK_0j6XJOWfUfVv>6lw(W!kH?# zgIxb=I!lJ3ta5F#4bqz%99#U8qQx@>L&YAH^7zgE(7uV}$!Rano+;&1byyi}s6y5u z1R&Bj-Upyw+#0KpCPy;$Dq`HI$zj;EX`;yqzch8wa$Y+$E{WHvZZc+2+C^6b;7{lU zpb!+v9YV6! zg$~6qC$vl%8(kn;yBdRm=>np5nd_ z1^_Nh?Pzc4A`j@78g;)P+T>PbOaP=NU?%xE#ENZNTjuaSA&oDPha#1N>CLCJIf z;1)PKun|L!qj2$y*|U?GC{AgS4C}VLk5GrMU!f>M%9@ceV~Yf3SLFxq<#U~pp{sr8 zOpn*zJ5cT|;xoczgGfWAL@zO2Mw}pEedKLN`P1+df;xl~#F6n7e2j+|K&Q|p8Ef(z z99SAwIC!DTD9{ZKCoMLm#YH)IPQv5rn>GB;fY?)C#ihsTv4YW<=q zBg7{!H2^l+vAb;TfG=EzpcO*xRw;KU{f@dNE?PFJt%=HJ=?i58x+_ggo2+Dqfw6IAdVz9QuW8$`BNFU7y8TZ}!-^{T#S_ ze%<9$OO76+(1Vqbv*XWCDY8R39R`9%Md~k16huvN>@z?@siGwbXAg3lKB}y($3#4j z+KqhDIKirWc&3U@1x0|(tYW;)2T_|34%T{i1l@G&@9=C9Bwl%XH+*Gn?PL2x%oE&{ zOvFl8_xQNx8N9(0x8gI-ZSEzCY+Jan40Pqws#D!HxD{VYE9k^n00@Evc?&6nH zpDtu)PY>!p!d{(TfA$+PbOq&q4fkgIf0&7dFZxMY0$7MMOj+M)VwX3+$L3cGQp$H* z4*KlgMkar_HIsdLfDlllT$Ny+cqYR-1AGuSz?81wB@P_8FSq@fr+r7GYFfc_#e_e| zWpnoMl0VNbZ6uPpkRhu5eZpX=SuvwXX8jtdY5j&7-?Z-YD|SA9DwVFNLYVWQ(8`Kd z*YhhS;N?Icv|^JZy*huaZFLq&s^e&9ZK_z1k$EG^r9PC|laTcFYZb4_h7O*do(x^u zk*?|&B_&qR#XRX(}m`e3ppYnwNcdGSR+V50-k`ft3wI>}px@zg0; zh>F|djuWlSmNWaCBT8YvJBKWUHPqo_`z|z;)Gq!#A=%^p4Q3P%nB}U^Y4)nJE(aoV zr9oE*jb|k0g`qa02xoq*l&H=?Z+6^Lq)`V|hxO&Ck*O8ntjSwhePIM7izAZOnJ*LK z&JOMEgakxA>36CWifx}>TkP?%iXeh@5bm`At)^*;?bP+D4t=h{%Tyf^TiQ&)(?qKw zE>gyx6nH=(8QeDLYcG3M_Vj#DkbI~23Q6J~4d(4+~$uhpfUM1w4?N8@BvP1R=166wj=C{fB5nu}DnTL@dJk^GA*! zou6Vu{uFYHS&r4q7XvdGyQ3FN4^HoQFH#`+pn=o+#}^5k3By+9fp4J9Fx?xJUWmoa z1lQS{d8W|XZ~2H=Qsig*mn|(&n5F+Na66I#d}1jY$?jO}nhG}OPb9H!#3{Q*+Xn;x zt&+S7wy#Ajv{w>L`QzDem*>Jzz~+D@&Jzn@>5CVi$MQv#+^m8GsQC900C2NsP+}W} z(ZG^$+R(E4tQvXXd`fL5;wN*Z%3y%W^c}pAJ+ZI_@IgrKzquQ}72F_bx@U{P zGlZJ&{+xL0wDBAiWa~>vk@5+97p~;0zwr$Fit>+5nT+E2*sB}jl2j7~0Cdnvb8E9_ ICiv+81G{V@6951J literal 0 HcmV?d00001 diff --git a/laptop_holder.py b/laptop_holder.py new file mode 100644 index 0000000..7186dbd --- /dev/null +++ b/laptop_holder.py @@ -0,0 +1,37 @@ +# /// script +# requires-python = ">=3.14" +# dependencies = ["ocp_vscode", "build123d"] +# /// + +from build123d import * +from ocp_vscode import * + +### USER INPUTS ### +base_thickness = 25.4 * MM +wall_thickness = 9 * MM +slots = [i * MM for i in [22, 22, 20, 20]] +slot_height = 60 * MM +width = 355.7 / 3 * MM # width of macbook pro +################### + +with BuildPart() as holder: # noqa: SIM117 + with BuildSketch() as sketch: + length = wall_thickness * (len(slots) + 1) + sum(slots) + height = slot_height + base_thickness + Rectangle(length, height) + + offset = wall_thickness + for slot in slots: + with Locations((offset - length / 2, base_thickness - height / 2)): + Rectangle( + slot, slot_height, mode=Mode.SUBTRACT, align=(Align.MIN, Align.MIN) + ) + Circle(slot / 2, mode=Mode.SUBTRACT, align=(Align.MIN, Align.CENTER)) + offset += wall_thickness + slot + extrude(amount=width) + fillet( + holder.edges().group_by(Axis.Y)[-1].filter_by(Axis.Z), + radius=wall_thickness / 2.5, + ) + show(holder) +export_stl(holder.part, "laptop_holder.stl") diff --git a/laptop_holder.stl b/laptop_holder.stl new file mode 100644 index 0000000000000000000000000000000000000000..efc082ebdceae83fb3e3e2d97d85d7b5d9dfce9a GIT binary patch literal 117484 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

t(k>_4@^dMu>j#dafft_-&z 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 literal 0 HcmV?d00001