From ea06783e66b6480eb07feddd3b719d80579de771 Mon Sep 17 00:00:00 2001 From: Roberto Alsina Date: Sat, 15 Apr 2023 19:41:26 -0300 Subject: [PATCH] Make screen_pillars more parametric --- notebook_nueva/components/screen_pillars.py | 17 +++++++++++++---- notebook_nueva/dimensions.py | 9 ++++++++- notebook_nueva/hinged_lid.stl | Bin 1188184 -> 1188184 bytes notebook_nueva/hinged_lid_left.stl | Bin 600484 -> 600484 bytes notebook_nueva/hinged_lid_right.stl | Bin 615384 -> 615384 bytes notebook_nueva/tandy_lid.stl | Bin 268284 -> 268284 bytes notebook_nueva/tandy_lid_left.stl | Bin 144484 -> 144484 bytes notebook_nueva/tandy_lid_right.stl | Bin 151084 -> 151084 bytes 8 files changed, 21 insertions(+), 5 deletions(-) diff --git a/notebook_nueva/components/screen_pillars.py b/notebook_nueva/components/screen_pillars.py index 11f861a..eef5cdf 100644 --- a/notebook_nueva/components/screen_pillars.py +++ b/notebook_nueva/components/screen_pillars.py @@ -4,6 +4,13 @@ import cadquery as cq elements = None bottom_holes = None +# These are set from dimensions.py +pillar_width = 0 +pillar_height = 0 +screw_head_radius = 0 +screw_head_depth = 0 +screw_radius = 0 + def init(positions, thickness): """Because these need to match in multiple models, we create the @@ -13,7 +20,9 @@ def init(positions, thickness): { "x": 0, "y": 0, - "shape": cq.Sketch().push(positions).trapezoid(12, 12, 90, mode="a"), + "shape": cq.Sketch() + .push(positions) + .trapezoid(pillar_width, pillar_height, 90, mode="a"), "height": thickness, } ] @@ -22,13 +31,13 @@ def init(positions, thickness): { "x": 0, "y": 0, - "shape": cq.Sketch().push(positions).circle(3, mode="a"), - "depth": thickness - 13, # (screw thread length - threaded insert depth) + "shape": cq.Sketch().push(positions).circle(screw_head_radius, mode="a"), + "depth": screw_head_depth }, { "x": 0, "y": 0, - "shape": cq.Sketch().push(positions).circle(1.8, mode="a"), + "shape": cq.Sketch().push(positions).circle(screw_radius, mode="a"), "depth": 100, }, ] diff --git a/notebook_nueva/dimensions.py b/notebook_nueva/dimensions.py index 71fb19c..3e830fd 100644 --- a/notebook_nueva/dimensions.py +++ b/notebook_nueva/dimensions.py @@ -3,6 +3,7 @@ import math import components.audio_plug as audio_plug import components.usb_hub as usb_hub import components.keyboard as keyboard +import components.screen_pillars as screen_pillars ## Standard things (TODO move to separate file) @@ -19,7 +20,6 @@ m3_hn_thickness = 2.5 m4_top = 9 m4_bottom = 4 - ## Keyboard dimensions keyboard.kbd_height = 95.5 keyboard.kbd_width = 305 @@ -135,3 +135,10 @@ sl_height = ( ) sl_thickness = shell_t sl_front_lip = 8 + +## Dimensions for pillars that connect base and lids +screen_pillars.pillar_width = 12 +screen_pillars.pillar_height = 12 +screen_pillars.screw_head_radius = 3 +screen_pillars.screw_radius = 1.8 +screen_pillars.screw_head_depth = base_thickness - 13, # (screw thread length - threaded insert depth) diff --git a/notebook_nueva/hinged_lid.stl b/notebook_nueva/hinged_lid.stl index 6311f011734385e864aa2ecb0d45c40e8cfa152e..b6288b1f040c5b2b9bd76515115f001bc4af243b 100644 GIT binary patch delta 116 zcmca{$m7N#kA@b;7N!>F7M2#)7Pc1l7LFFq7OocV7M>Q~EqvB2({ow)QWzPgFJR#l zpB~J@r#}523!mzAQ&zr|>CCKr#?#NR@)=E^#mZ+lor?`9k;n$*>a+0~w@+c?17dz4 P764+w?NiuF7M2#)7Pc1l7LFFq7OocV7M>Q~EqvB2)917B*-!Ui;R~OB zk%iA_dO9ng@pKkezU1krS%DJESozeZ|6}DdoSw)AlrUfevNYNGc-t4S@c}VE5DNgY L;PwSF7M3ln+{>ohE@Mq$WSCyCj8$~H;xbmv>FbuUs!nHJ&YCj) w@-kNA>2sE|8coky&T2RP)^ebP;R+!4|8iF2_LLQ@K+Fcj?AudTa5yvq0F{{}EC2ui delta 91 zcmZ2-S!Ky(m4+6^7N!>F7M3ln+{>otFJrZzF0qU?eEPy=tVYw#m$MpAzp{)qdHU?- tK#8*DtZLKGEoU{HZn%Qgc-jgeF7M2#)Eo|x@(<43DQl_hWu-Q*P<-w*pUC|TBeec0$Jbi~J no6+<(Pd2;h-#md5zFt7Cv=^IkdxIAn5VHd@$Myy<&Im~Wj~X5! delta 94 zcmca{T=m9r)rJF7M2#)Eo|x@)4M&`?5CS}u!T=o_h93le#(PQb$YNToALAy u9&E|ew|fF*Cwa1|O@HOdW;or~3n(Gu#b(%E@5Khh>_E)1z21v6QW5|k=pUN^ diff --git a/notebook_nueva/tandy_lid.stl b/notebook_nueva/tandy_lid.stl index aa3b9d1de7e48becca1895943a39c1c389df4acb..a21f752a195b98ae246218895b06204b992517e9 100644 GIT binary patch delta 3244 zcmYM1dt8lq9>;rr(}QeF>s8j8cD6}Vu@ypQ>6~XYJA|l7NRf6VUBzMwUkJxpK(^@AX?tjeyRes1$;KVYT6e_a7=7*{K(=u`q-~_V9!Q9w zMIK_ZrpiP3Nzz_2^AwZi*+t&kHqCrbVI$G8MJQU&80H0BgOY-2rWew@X11Lvp>1wK5!*04WTAKo)bCXwT7`CBlBlwm&M)Ik(ASsj!oMr_Io2 zQ48FZuoSsIjHe78!_pf)A9_RWVr9MzC|d?IiZR*;xW~%XM>La*FO&%&|LpugyMPLP z(RCv`ulpi=WjRzf!*B%<#BgF9S|OU{n5Ns>SM)DG?8FfJP1;;q!*a*k6WU%n2&sAL zCkkZh3_w8+W5{aElCc^p1V{@MX>^$_C`Wo7h+s1-zco`)OWXzDkx+t;FXI;%iH)A|jzloG;V`!H+)jV_GS zw{C##3TTQp2x~!x;jpi4g6$M8yahem47-7`k72b1i+QvKs+Qrg75Ioz!Pp6CdbWzQ z65ZGiJ0H*(?+|^0?4raJdJ~BQ=of{^Sw<4$Im0^|ux7+X<1WPRgz{uOU{o>2#sCov zH%2MLG#0qSYBQ_ZfTkdpFWyyP;Yc4tszUhCkyR!*(z5f|bu+ zd@oEFMApYrd>qb+jw6t{ykihOs} z8yIxEP=uctO)vKeV?*`QIYl%hQCLymJ~7;oGbu9>(ON%YOcN530-piKh_UeSLwMAx(6l+2Pc+? z<*BNohQTHw+aKx^#&gc&vvG%i(mOZ}>fiiaL9OUVZb^fK8jwRW1}#n!V+OAV(~3$F zEk>beC=5*BDrMKy#N!mtD2gOR#9)jQd5V~5kvN#O%v5IBo$#}r1 zVvNlYK~grwWT4@l3^+;wIYip1c+j7YV1*+xVJ~rAtDL6pBUoWg;#$R!{+TIO8a98q~F_j}-Edk1I zYRkq?TM{&3a`#fy@2kmJKnT@Dhxa-l2%`OkZnD=`$G zi%up~my0a(V{q@a^i{m+3EKMbCpKQ z%Evv^Sh^~AXe}gtbrSJOjEngwO=b0xae*{&14=dx}1VoZF|+HoO@4dojW{pk$l=iHbXID#0k(>m8JQ z`W%vSO7MuxC`Hnzr6M5hG{j|C^6WM%

3zMv5al5pj~b=@L8a%HVj-UcWLl4*i3L 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 diff --git a/notebook_nueva/tandy_lid_left.stl b/notebook_nueva/tandy_lid_left.stl index 2245bae2221d4b711d6b3f08e28f08bc8b7aae72..2a1762e2d18c603f47bf849ff98d42fd28138317 100644 GIT binary patch delta 1418 zcmY+@e@v8h90zbe7Z1P2gcOW9bA)!LLIVV2265bxB13EDnoDAi-3+i;wIJk<;{-%K zn+X!12AFhBfxHe1&xaom9Cw+qve+CgX8)ig!xVys-g?=5*8l&!sqmJs zJo3Mb26kB7Y=PgB&HA%xY2?F`^!!6MC332fqPW&bEBF;7MFb9@=MW=pW4n=-a)FV; z1I=C@H)5mWDvIC{tf4?-@gn<~O#dD}5M#K?L@ByiKf6uXc%O-axWzLnB1 zOQm{NE2)u)EeCP?X}ld@992ar>^ewh`k75tw7_K+G%|n^H!-5!h zF%~2gTgj}f%Wc)Zp#l9r(BhMl3I%@y zjj?tF$pMt#GiJ0M{Nzz=Iw#FtM=_j#3~8lc6K)8-LbQX%l)A5{v;}_tIDV?&#B%Ku zzV1M*expQM@QKO_uNoCDQ z8A3-hj&kJ#q*md9P%IR+fF$9v&@60Va9`31Nd-V1Wpe1)-HJM|61q(C)$A%sOhI=`fq1Y`+=(OAia)lPSp88?RC-~9lw4S^%fyi_~)RN))p zL*eO8@E4N0uao@5ySq`x1GS->=5&0{MVq+Xg%@zrg^`TUK)6sQTopQmAUB@E12@tY zp{NHW3C+TN;j*xy7n~3ZgnPm$P}hDgm(T0N1BmTI^X3=8-G^gWTtLbZx`YT1xF+d2 zNlxKSVZwv|Mf8puZ#^q2UX=8UXtoQb!uNt%1t~&{N@HPvzF_m7AN36<@!$QlJ}e}z z#+&OoFkHglqU4kPm{%z12Qazvs?}RD8ZmN!*9>8F*B}Psgt-AwKZv8|57A~i!gWLR W8d|r9@WOdtJ+D2XKCaQW%6|Y;h6|Jc delta 1409 zcmXZae^69a6bJA<8>^s9G71bjNVFg&vJD_IhN~>Q6hu^JKgLmGiXkL2GDity1>~26 z42j~NLQH}H!3`*ZC$O;W&P0q^7Eu#AHr4kq?H`}_J@1}--+g!A#H8!Q zq-%Z$&8%T<2!->^8hTPm3n7nX?%A0d>uB%Ne(UxFc0LkKEBM=J@}N;}izcs?Dpii> zj6;33)1gw`a4w#`=?Gigg?xMJrMdzhkET$yYX0iQ+YIFE6T3aJFS#|(uEOtD&vnNO z>!kaJlPe75tw~F|{BbP5YoGuQHqatXWYO@cRBkp<7^U)M1L-u8dz}wk_?;N?Vr>lh zXkOd)f35S*ikqvyd#!up8@F=jmtUK7&9QF@Z;l~f%?AH??Om>qp@1dn<|#+{YI*99 z_gTA&e~7`d`g_y$tN3vv#j&rEd|V!V;43Ys8!3?ejM#_lwv8_u@zk{avMGhF*%VF_Y}!wMaYhbi>j53-?{g?j<2TZ8`-K~F zNXL<8jJXJDW=f$v{@09#!1!vLlfN^QP6<6gNkrxRelG4uS-0B0R=&ukM~MCMG3k09 zD3G)n(A(UZFY9l(*xSO>`B*>UAjW)zR>3Tc9mEDR3y@-k(}H^;xP+w1UKeE>;-*3z zZP3#%+s?BIaY6C&Xg!T{W+8>}f+F;e$b@uB>xG&ktQlTRDVAbXAcaFpkmjU3A}L95 zme3H}4k48Z{-t=}@A^sG^Zdsl>~>2jh7;ez$O<7>xGJ;@o@F$oS+3h>`-GPr#`bo< z)nuFICnT1BIcA&V@iH9Pp2O6l;b$u`!B@zy#9q9QB27qnMN<4xvarW7q(;Gb3@twi z8C59tLTwec^3QRkY9URyAS7Ers4ys03Be3zB~?h;0h9rzGBum4v1&p!ZZ16m#*mcQ z6ZlJc!AaC3HJ}bC>rYDiol~ftKnbd)AT{UKp-u!!dmU|6^R5QeQG%=RQ3Kv1wGk;o zI4^u4Jk|vMMp9mFA}8^S&8W3NDQTvgYHqZm-fN|`JZi-!tN#?`A|XQ<7HS2TRyl=M zqzgiF8weGugjr!w2yO=z!VclKFaVUm&*bsuv#1kbCvaQnpJ$Kne6uf& zKRidP-R?h^Yqt(K`oef8N)GBqb5RePw+Q}1R}Wd-vWCs}%mMfQU3{+_eTlskNu^xa XOFMC3)4llK23|R1(<&=%6qofMmQ^3; diff --git a/notebook_nueva/tandy_lid_right.stl b/notebook_nueva/tandy_lid_right.stl index e894ab988b33498781097207809ca26bae7b939a..301cc97d1ea70d5d0fe9e79acab4abab05cf48e0 100644 GIT binary patch delta 2144 zcmXw1e^iuJ8lFq@0fQ5a{FwMLAPyri$nfJsVAo~7E1b4WJ;f<|sb}|S zf(tW{(y_RU@4ESGT{BbS$k9MdlsRUQr$kz9-OZDs32Itm3Wx;zT!;PRKKFUw_j#ZD z-tW6j+YL?I4Tt_(tv_1mZW3eFHgTxh7^bVb_(|}Irh+$5>U4d1Q$~LDq)%xT2dks> zI-RacEUPh#@2bOPphIAbom6;aLRaN1SkUoubLFGn!DF{PFJy{2H5RY>(;8d+FaNpi z8H;b7RQr9O_etx7SH0=IA3P~p-inyxGJAUxT{dx`#u%#8y{F7_Hg$TntJdH2)Z2x> zYtp$Msz8^~2P55anT0tbP;77ocpdJzY>{65 zd+ZhBZ|=$YEVVYV)BR|^s#jl;5WpDq5EQNSQTf6Rl~Wn>v`D7loKYAJz^IP zBgJCbh$@CgveB?oD(5@rZ0ZPZ{57*Te#VNG&EciIpO!P`pd`jr zx(iT3-(AJiNHA7Jbv{TgmS6)Y7d|iMwRF;lrL!g)^g&ntW2~5B9)sYBgm68eA54kL zE#wPnqaK=hGTE$$@JR(M7@$Pgy~wL+odPEleWXBT^hNqDYXSc~U6!#X&2hyq8|{L;Y8N@Hz|def#Mpe4>^1__1VC{h7KIi;DeOiBEqYo%LsF?0K5- zN6R|~%#dtgS!@TbFdz{h0OdUcj6>gfhM%G>0nDMaS?BUAR0vAXPeDCa!tnsK)<||; zLaT&GBP(I^sM?52tZe(($P$=R{;ZR4rI0{0UwRyxIf1O3W(R@!OV|lep1YaGAE$~S zXwC(}_75h&EECFSz?6i+RQ?>ToQhF)zn;SPQwAtCOl4cCJ{Y3JV94)Cb^@S0)nns3 zXh{e()(|A!A-G>3b;yJz6p5QM`)nwjOQ**2V{{`F&OV!`a}Tvidef4?6R0H&`nh3{ zngPlHMe?;&DU;vIWS$vdlCatgr`QW&`~U?#f$~L}{OSqxbe33nBE2t@uOg-#30dI) zJwR!3KGbg0u5gq~WO7_4J57GPn|hH{g1bz7h%zJC3RXqiBJlc>A|V@zfGj0X&j)FF zB)+tpL?kR0N14yE5n};67KN)9(O?wnb+VLiVa2S41}rRHF@Jem`y;hmaMHbl zI=+aaqnQJp^P^cK1;;@BT{K{=WKRN=^y&faJbe^{GZ|fuVU27ft(gYv^V1;NBf&Qo z2HRsHKD@6-OQqLh;of}Yvi1}y(?K^IuV{PdU&xX=9sh51I-0sABwO)zvZ>Ju_hZy$ zWnFA7ZHZ%5z<9Tsp4hP_>M&%wXM0`|q}B zChChvd>|fmYu`V#Yzj$$eHi^V0bj*G5ng)}0JA0gTC#Is$|=)f?Kf1B2#t>&uXW6h zp_;kPV_6&p&n{#`4((9^MwvXhvdmd-@?r%8ZB$%Z7WpNWUDcl{#mC?zE0 z@|835wRXBc6ZDJG4O%iSNyapn+cqb&pBa0TDpL@irj`^|q&y5Q)y_~@D(>G*^HW&? zTSXtFvTbaba?>E|qc`N%M(@kbkN%y8f9Frx=`5Y}={Wogfb!*!{W&XWS2|8yZQ1S& zqB2k#m-Uxb)F0#yI)iDOih4!EkaGuRg3<^|?7!5d!Ye5Qyq$i|z=L_ct2d{EPG>;< z;ng+Hd1Rjj^@|yJV;_=0nr_X4>DMpxIB!t_YD)4?z0P}dQqs@b?M@TDEjwZ|(GfMl>LSJvM@mT$?tQn(KFe|;8$j2 nyk@kwt<7fV{a78%=j;`hL5De-I|~mUx7J?ctnC{2c{=ca>`K~` delta 2236 zcmYjRZB$g(6`hOofB^!?$3$U3z)=`v_;?7mF6KR9*=p3KWNCDX5QAcZpjlc!(nbPA zU@(Ey;4PeJsDWyYZ3Ybs1W5#(8pT=@)QW9d8Q~&twJ^Rz?BBRm#ln;LKy?tqt zh*wEfW*%E=)Q_ht9K{W<-%R_mWvr-^dz2Zx-~afoJvLdWcQ}g8{Iya&KV0gqA2)eY zlig4w&9vA~qTJj2&zY$W&O2?E^@Goc$t&o$SDN_#GK2Pd zW~!NIlo>^7a&<&_!?b2EC40|1&&Ei6^^Sd;&+{>U%F9w6_D6lk&{$JMxS4m98TI37 z?$9(mnwp|y9Nf{#_gM|zE|Gn9QeOIb!A!BQifelFV-MA4a;^8s7S3HMc#L`TVCjT#w!NN11dRa=c1l`4f1`S&dIB@^^JB8^LG&hd|D5;R z{i}b^Oj6tKjjB|g#8y|IVL6n^m@HLH%2)d+jxnH+vMS0GXX(%~^#WPknA!D% zc`H>-D_wSDF;t5j$?i<9!J-^@mg}PJrElC>JX=a*?(qFk$CBB8>e7M7=+Mt}4=5k% z;Mp26U%f%QJ;WP)_>yX;EKmybgy_Byoe)s!32+E#5fJ3Xa@j&E@xlB7>@PZF6_{bM*rZ3nzfK>OZSoKp{ zHxaEw4#uhJln6?DCbAmJ@PjDI5Ap#49Rim5!}pinMzxkA{UNmaW5`}=7u*m4K|chv zH~`Kr72)b%=uQBf^CyO>>!}r#-VQ{5K0xZDAoVS33`D-)5UEB{FerT|@@aa2uYj$3 z^x*L#L&G(qy)l717?w_ynVaP&Panx!5$VIzZV$cK7=d&Hrq+LbPsydb24-fT(=h`}kRE=fQCCn%2qJ4~VF;@xzfh>J zhXA$V# za)6|8jCiE^nlg|6E>dzhe!r1$6rB|i6M=8%=Tsd5_h#yfU|sAj+C7yeu{t_El?{@^ z2vrL}dYENXdg?qJd>-zFu64n!fnL1bJ^?5y-|&@QEvSTy|4nV780t=Xr% z+0)(rHhmn;OcWc9hj&IpoiPItCEzP@tek@-7|6{CxiehoRM2)d*wKNitul$Vy<1l{%EsSHU*n0Xjj_qYmN{ts)v_)*k z>5pR5(LdtRU2+1GnHxz7_(``KYAxP$F#(r-egAgK8u|p3a-pD6fV6p!(^5x!Wd!48 zoQG2fExz;y&g|dxSY`=y24RX$1UyK@XLNu}Ghw!+>tf0Y;)&2TQdS~v`qO{6Sze;k zh)7qKc3bYz2SRtI&1CVXK|y1FxM&%oPEcAt6Lz6VunVA9@SiJf-h0?$q$SCa`Bxsc zWYfEXRzC2uIOr|})SQHhxwA0XW;&XTS(C_r7H-|tc{AlU-GaJx`z(h4yK-8nvNs@Z WQsK~<_1TH=@>?ovy`{R$^Zq}&MJRv(