@@ -46,6 +46,7 @@ module pin() {
|
||||
}
|
||||
}
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJx9Uk1rhDAQvfsrcughsm7XD3qSXAqFHnooZaGHIiXVcQ21cZto6VL87x2/stGVFSSZzHuT9yZzk0sWhbFzFD9V/cIz0Wh2FzsfXMO+EOmnBK1ZNBy8iqwuWIDpQsgDPIE8YBz5HVuO3L6U3PMjKObfhohNS+CKyxS6eKQ+8jJ/+K1Vk01VrIq7cGs4O2Q4X1XWlEB6yD3qeFZVLkqgLvlzCKkRqEteA32zTHi+5ydulydEfzdcYdp48Gb2EjdGWOu0i5uq7NTpHK8phURN7zCopus2xgurPNdQ08AdN9vQNUcDYibb92bCE4MhJBUKe0GtfC+2+9pxndzZNax9YgiX/RsyrTP8aw6v2wrc9Zp2L3EaLh9q7ni9l1Mb0hMKy0DRxZBsrCHxiAqYGUKMwnO0mebxLG3xvv3I4vIPjiMA/w==)**
|
||||
|
||||
We've done something new here, we've defined a variable with other variables and some arithmetic with `hingeHalfExtrudeLength=hingeLength/2-clearance/2;`.
|
||||
This variable is then used both in `hingeBodyHalf` and `pin`.
|
||||
@@ -56,12 +57,13 @@ Much better
|
||||
|
||||
<Image img={clearancePivot} style={{backgroundSize: 'contain'}} className="pb-8" />
|
||||
|
||||
We still have more work to do on the pin though. We want to re-use the pin to "subtract" its shape from the other half of the hinge, basically we can use our current pint to make a hole.
|
||||
We still have more work to do on the pin though.
|
||||
We want to re-use the pin to "subtract" its shape from the other half of the hinge, basically we can use our current pint to make a hole.
|
||||
Lets make a temporary new module called `pin2`. In this new module and we're going to introduce a new function `rotate` to re-orientate the pin
|
||||
|
||||
```cpp
|
||||
module pin2() {
|
||||
translate([0,pivotRadius,hingeHalfExtrudeLength+tiny]){
|
||||
translate([0,pivotRadius,hingeHalfExtrudeLength]){
|
||||
// highlight-next-line
|
||||
rotate([0,45,0]){
|
||||
cylinder(h=hingeLength/2+clearance/2, r1=pinRadius, r2=pinRadius+pinTaper);
|
||||
@@ -72,6 +74,7 @@ module pin2() {
|
||||
hingeBodyHalf();
|
||||
pin2();
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJytU8FOhDAQvfcrevAAWVaguCfCxcTEgwdjNvFgiKlQlkYsa1uMG8O/O0DBwhIvSkLa6cybeW86vShEEpEYHflHrR9ozhuV7GL0QhXblzx7FUypJBoOHnmuyyQEd8nFgd0xcQA7Cjq0MNg+ldjTI5NJcEkgNqsYlVRkrLMN9JZWxc2nlk0+ZrEy+mQ7YXxAoLc6byqG+5Br4HEv64JXzHHxF8JYQ6CqqGbOkyXCC7wgdTs/xuq9oRLckwZvJi91YwhrUbuoVOenjqcpU3EBnJ7ZwNpZl2EK1kWhmHZC12y2xJ2OhogZ7cCbEU+nGIwzLqEXjuXvyXZfa9ZRnZ3D2qcT4Lx/g6dFw7+m8HdZobue0+4lTMP5Rc0Vr/dybEN2AmI5k85iSDbWkHhYhsk0hGCRH2szzuMaNfI3brLWBnO1sy/ufzmPVwTMF5MZI98fOtw/O9Kt3+efP8E=)**
|
||||
|
||||
<Image img={rotate} className="mb-8 bg-contain rounded-md overflow-hidden" />
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@ offset(1){
|
||||
}
|
||||
}
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJxTScuzNTay5irILMsvCUpMySwttjW15kpKLE4NychMzs5LLS62NYYIhGemlGTYGgKlufLT0opTSzQMNau5FBRKihLzinMSS1I1og10kAzSMYgFyysoJGcWJeekaiDJaVoDJWqBuLiwNLEIqBNZHxI7FqwQyQYU8xE2wIyBu1MHxQuxUPtqAYDXUD0=)**
|
||||
|
||||
<Image img={offset1} className="mb-8 bg-contain rounded-md overflow-hidden" />
|
||||
|
||||
@@ -41,6 +42,7 @@ offset(-1)offset(1){
|
||||
// ... hinge profile
|
||||
}
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJxTScuzNTay5irILMsvCUpMySwttjW15kpKLE4NychMzs5LLS62NYYIhGemlGTYGgKlufLT0opTSzR0DTWhLEPNai4FhZKixLzinMSSVI1oAx0kI3UMYsHyCgrJmUXJOakaSHKa1kCJWiAuLixNLALqRNaHxI4FK0SyAcV8hA0wY+Au1kHxTCzUvloAmONTcw==)**
|
||||
|
||||
<Image img={offset2} className="mb-8 bg-contain rounded-md overflow-hidden" />
|
||||
|
||||
@@ -51,3 +53,10 @@ It gets even better, we can double our negative value and apply a third offset t
|
||||
<Image img={offset3} className="mb-8 bg-contain rounded-md overflow-hidden" />
|
||||
|
||||
In essence we over expand, then under expand before finally expanding back to the original dimensions, but we have gained fillets in the process, it's like kneading bread, the more you do it the better the bread . . . not really stick to 3 max.
|
||||
|
||||
```cpp
|
||||
offset(1)offset(-2)offset(1){
|
||||
// ... hinge profile
|
||||
}
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJxTScuzNTay5irILMsvCUpMySwttjW15kpKLE4NychMzs5LLS62NYYIhGemlGTYGgKlufLT0opTSzQMNaEMXSNNuFA1l4JCSVFiXnFOYkmqRrSBDpLZOgaxYHkFheTMouScVA0kOU1roEQtEBcXliYWAXUi60Nix4IVItmAYj7CBpgxcKfroPgqFmpfLQCaj1Z9)**
|
||||
|
||||
@@ -29,6 +29,7 @@ linear_extrude(hingeLength){
|
||||
}
|
||||
}
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJxVkM8KwjAMxu99ih48tDBhf/BU+gaeRPAgQ+qWbcXRadOJIHt355wju4Tw/ZJ8STaV01mq2N0+u3Awpe1R7xS7GoRjY4ubA0Sd/YSTLUOjkxGzxroa9uDqUchixVrrwPgLvILvSxAEyzfjvKsqhCASOSfbVC7Sl3MevHHYmgDiHEdkmSjO5wrOC+uLFgShUk1omCI+euPHftpN8nwuJk4rH+r0H7VcHa0ekhPfgQ0f/hxptA==)**
|
||||
|
||||
<Image img={extrude} className="mb-8 bg-contain rounded-md overflow-hidden" />
|
||||
|
||||
@@ -60,6 +61,7 @@ linear_extrude(hingeLength){
|
||||
}
|
||||
// highlight-end
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJyNkE0KwjAQhfc5RRYuEqjYH1yF3sCVCC6kSGynNlhSTVIRpHc31lqmIOomTOabyXsvs1KnSSzIWV0bt5aFam26FOQgLWwqlZ80WJsmr8ZWFa5KI48rpY+wAn309yQUhNRKgzR7uDnTFsAQX8T8TihtytKCYxEfinnMx9aTU+qM1LaWDtguDJCdIMyGCUpzZfIaGKJc9KjrT3tppfH7eBvV2TCMlCY6WOn91Jg7mHxJhnQ70n3J/zl9xH+b+MuCF38AQqCVGw==)**
|
||||
|
||||
<Image img={extrude2} className="mb-8 bg-contain rounded-md overflow-hidden" />
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ module plateHoles() {
|
||||
// hingeHalfMale();
|
||||
plateHoles();
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJx9VF2r1DAQfe+vyINC63bvpl0vKCUvgnIfFEUuiMhyie10N9ibrmkrLrL/3Uk/cidtdaFsk8ycOed0Js9KLfZpFpzVr7r9LAvVNeI2C77LBu5PKv+hoWnEftj4oor2JBI8Pil9hPegj7jec5utx9weSt/LMxjBb1KMzSuQRuoc7HpMvZNV+fZ3a7piQiGIu3TrcnaY0Sp9wVzOEeyx7jSuj3d1BWPF5Ab38aDoKmA9zBvk+snUpaogjNifgLEWwZpKthB+I0JjHvNDZM8Za3520uCx0xl7FhyiDMOuwXVWqS4uVstYplIaeT/AoCxclzoWrMuygTZMovFlm0Zua4jwaPPYI35wMYzlyqBfITnvydrfdfyf1FEM8n5wCUv/hpNrMDxrCv8vK4nWMamX2DGhqVsU+jVmpqf0sU9ffD3fhnWDN7ZhJoMGWJs4FUDv2GRefkFBBZjQmTnrxA3pxNgFmUS4jt9QviQkJSHTRHixY6hn8Ky9rLR38ChdHxeqLMEA0gknEbM+HNCIoSJ5xX1ThdO03tQW6INcmx2cl5jY44x8MtkWowavsvP5zdnxfzhythzs3DdLYm5q8YvRBtl6Q/w0NhPh7WtOLwHSEEYsr5r4JDy8Fy/nVJ8vPlsW7HZzW/GKJFqy4C+o/cLo)**
|
||||
|
||||
<Image img={hole1} className="mb-8 bg-contain rounded-md overflow-hidden" />
|
||||
|
||||
@@ -61,6 +62,7 @@ module plateHoles() {
|
||||
}
|
||||
}
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJx9VO+r0zAU/d6/IjwUWte9pZ2CWvJFUN4HRZEHIo8hsb3dgl0601Qcsv/93bRpTLrqYGzt/XXOybl5Uku2zYvoJH61+jOvRN+xF0X0nXdwfxDlDwldx7bjiy+i0geWYfgg5B7eg9zj85aaamlrh1bynp9AMXqbY27ZAFdclmCebekdb+q3v7Xqq6mL13GTr13NBiu0kGespRSbHdte4vP+rm3ATsxu8T0Gqr4BMrR5g1g/qbYWDcQJ+RMRorFZ13AN8YNHNKUp3SUmTkj3s+cKw45nGkiwSwpMu0SX2aS2OhsudkwjJOL+BiOzeJmqHdjWdQc6zhL7Z50n7tWYEcCmaQB853IIKYVCvWIvPoA1n4v9ndj5Pbz/O1dwrd8YuUTjd4nh/2llyXJPX0t0TKxajUS/pkQNkD4O5VenF8qwLPDKGGYSaGxrCqcBqB2ZxCvPSKgCFTsxZ05ceU5MXZLKmHP8ysfrpeReyrQRQa5NDQSe2ctQewdH7nxciboGBQgnnkjMfDh28wRl2Usaisocp2VTm0Yf+NLu4L6knjxOyL8im2G+wIvoQnxzdPQfipwMBrP3nQVWtyoWslRwBKnZA32dT4cO5aGNb1yMiI6UvULddHO+SYkL2EkeQ7f+ePS+09bBbeDv38R9/Yr690ngLsWu7630wIKez57Pttbxf3rlhSLabOZnhfeuJ1ARPQKVU9x1)**
|
||||
|
||||
The reason we're using `[0:2]` and not `[0:3]` is because `0` counts so the code still runs 3 times.
|
||||
I've also introduced another function `echo`, this function can be used to display text to the console, we've added it as a temporary measure to help demonstrate that the code in the `for` loop is run multiple times.
|
||||
@@ -89,6 +91,7 @@ module plateHoles() {
|
||||
}
|
||||
}
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJx9VFGL1DAQfu+vyINCe9u9TbsnqCUvgnIPiiIHIscisZ3uBrvpmrbiIvvfnbRJLulWF8o2zcw33/dlJs9qybZ5EZ3Er7b/zCsxdOxFEX3nHTwcRPlDQtex7fThi6j6A8tw+yDkHt6D3ON6S3W2NLkjlHzgJ1CM3uYYWzbAFZcl6LVJvedN/fZ3r4bKoniIm3ztcjaY0Qt5xlxKEezYDhLX+/u2AVMxu8XvuFENDZAR5g1y/aTaWjQQJ+RPREiPYF3De4gfPaEpTeku0fuEdD8HrnDb6UwDC3ZJgWGX6DKr1FZnrcWUaYRE3t9gUhYvSzUF27ruoI+zxLys88R9miIC2jQNiO9cDCGlUOhX7O2PZPXvYv6tOh/De9+5hGv/pp1LND1LCv8vK0uWMX0vsWNi1fYo9GtK1Ejp45h+dXqhDcsGr3TDWIMmWJ1oC6B3xJpXnlFQBSp2Zs46ceV1YuqCVMZcx698vl5I7oXYiQhiTWhg8Ky9tLR3cOSujytR16AA6cRWxKwPJzTPUJa9pKGpzGlabmoN9IEvzQ7OS+rZ44x8MlkX8w1eZBfym7Oj/3DkpDnoue8MsbpVsZClgiPInj3S17k9dI+ym2c8S7911sF4pw7nJvNmy+pav6L+XRF0jmLXd1J6YAH8zd1sIp2251fnXESbzfwc8E71xBfRX/N90MI=)**
|
||||
|
||||
<Image img={hole2} className="mb-8 bg-contain rounded-md overflow-hidden" />
|
||||
|
||||
@@ -116,6 +119,7 @@ module plateHoles() {
|
||||
}
|
||||
}
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJx9lG2L1DAQx9/3U+SFQnrb3qa7CmrJG0U5wUORA5FjkdhOd4PddE3bw0X2uzvpQy5pey6UbZN5+M8vM3lWKL7dpMFJPlTNV5HLtuYv0+CnqOHuILNfCuqab/uFbzJvDjzB7YNUe/gEao/fW2a81eDbhVJ34gSas+sN2mYlCC1UBuZ7cL0RZfH+T6PbfIziRFxvYuuzRo9GqjP6MobBjlWr8Ht/U5UwZEyuJ+vvzLvR7C7eVg/wUWUajoCbbjY6842TMA3QO29LIJ3pW6z+i64KWQINyd+AkAbl1aVogN476CIWsV1o9gmpf7dC47YlF3lQd5iDkEtwmWSq8rOhM6QppUISP6BnRZfhDQmroqihoUk4vMSb0C71Fp5sFnnCd9aGkExqPAHq7Hdize8y/I/VuTGc9511mPPrdy5B/yxV+P+yknA5pssSe5DqqsFCv0dEd5I+d+6z0/MxLANemRYcAfVhjeOYANmREV52xoJy0NTCnPT2yuntyBrphNsZWrl6HZONYzLOmGc7mHqAJ+1lSvsAR2H7OJdFARpQDh2LmPRhH80BypNXzIfKbU3LTW0C3Yql2cF5iRw8FuQjZJPMBbyoztc3VceeIHIyGszU14OwotJU8nv2ZuFKGI/fEW8nG0/VbaLYG/RIXj15ET0O3Vhw/Jq5l4jXUprPr7/owL1sVy8mo2qLfj5rgDRYr6cHhNe3QyUN/gHJXvnH)**
|
||||
|
||||
<Image img={hole3} className="mb-8 bg-contain rounded-md overflow-hidden" />
|
||||
|
||||
@@ -145,6 +149,7 @@ module plateHoles() {
|
||||
}
|
||||
}
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJx9VG1r2zAQ/jz/Cn3YQE7sWnY62Gb0ZaOjg5WNUSilhOHZ50TMkTPZLgsl/32n2FYlx13ARC93zz333J1el5KvktTbi8e6/ZEVomv429T7lTVwuxX5bwlNw1f9wZ0o2i2P8Xor5Aa+gtzgfsW0txx8T1DyNtuD4uwiQdu8gkxlMge9H1yvs6q8+tuqrhhRLMQoCY1PhB6tkAf0ZQzBdnUncb+5risYIsYXk/NPeq0524dXxQa+lWUDLb90b27qR/gicwU7QDdqEQmTxTyEH3mv6FnIMPZTD6GLrgJygvmIon1XdSkqoD558ghpMaumylqgD5biAQvY2tf3hDR/ukzhtRE8cGqxxhiEHL3jJFJdHLSoQ5hKSBTwJ/QS03nNh4D1KSUa+8MiTHxz1Fs4tFngEF8bG0JyobBw1Lo/kdW/4/A/ZmdjWOu1cTjXr785ev03l+H/04r9eUxbS2xdquoWE70PiDpRGio+rZ4rw7zAS925o0A9rHYcA6B2ZBQvP2BCBShqxJyMxNIaicAYqZib0VvafC2TxDIZR9OxHUwdgSftpVP7DLvM9HEhyhIUIB06JjHpwx7NEpTH75grKjc5zTe1BrrJ5mYH5yWw5DFCPousg9kCz7Jz+U3ZsRcU2WsOeuqbgVhZKyr4A/sw8ySM5bfIm8nGqtpNFDqDHojFi6/U89CNCYfvmf2IOC2l+PmrGWy5E21xORlVk/SbswZIvSiaFghffUuV1PsH4gQNIw==)**
|
||||
|
||||
<Image img={hole5} className="mb-8 bg-contain rounded-md overflow-hidden" />
|
||||
|
||||
@@ -166,6 +171,7 @@ module plateHoles() {
|
||||
}
|
||||
}
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJx9VVFr2zAQfp5/hR42kBO7lp0Otnl62ejoYGWjFMooYWi2nIg5ciY7ZWHkv+9ky6rkuAuE2Lq777777k55WUm6yvJgLx6b7paV4tDS13nwk7X8biuKX5K3LV0NB/ei7LY0BfNWyA3/wuUG3ldER0sT20PJO7bnipKLDHyLmjPFZMH1uwm9ZnV19adTh3JEcRCTLLYxCUR0Qh4hlhAA2zUHCe+b66bmJmN6MTn/qJ81Z/fwqtzwr1XV8o5e+pab5pF/loXiOw5h2CESZ4t5iDAJXuCzlHEa5gFAl4eaox7mA4j2TTWVqDkO0d8AoQ6qamvWcfzgKB6RiKxDbUeo/X1gCsxW8MjrxRpyIHQKTpNMTXnUopo0tZAg4A8+SIznNTcJm74knIbmIc5CezR4eLRJ5BFfWx+ECqGgcdix92T152R+x+pcDOd5bQPO9Rssp2D4zlX4/7LScB7T1RJGF6umg0K/R0j1lEzHp93zZZgXeKkndxRogNWBYwLQDo3iFUcoqOQKWzEnK7F0ViKyTiqldvWWLl/HJXNcxtX0fI2rJ/BkvHRpn/iO2TkuRVVxxYEOHouYzOGA5ghK0zfEF5XamuaHWgPdsLndgX2JHHmskE8i62SuwLPsfH5TduQZRfaag9761hCrGoUFfSDvZq6Esf0OeZPaLjg0150lY469tR9PxeLZq2s5f1ehJEHv4xixsjQ70UM97e2oWfyWuPeQN5WKnl+80ZZ6FBeXk223ur06m6E8AFaTHsMfhyNsHvwDoz0eLw==)**
|
||||
|
||||
<Image img={hole6} className="mb-8 bg-contain rounded-md overflow-hidden" />
|
||||
|
||||
@@ -200,6 +206,7 @@ module hingeBodyHalf() {
|
||||
hingeHalfFemale();
|
||||
hingeHalfMale();
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJyFVU2P0zAQPZNf4QMHp022TrpIQPEFtGiRqEBoJYRWFTKJ01qkTnGSFRXqf8dObNdOXeihssczb2befOR5xfEyX0UH9tR0X0jJ+ha/WEU/SEsfdqz4yWnb4uUo+MrKbocz+bxjfEs/Ur6V9yVS1lzbDlD8gRyowOgml7pFTYkgvKDqrk3vSV3d/e5EXxoUB3GRp9ZmIS06xo/SFiEJtm96Lu/b+6am2mN2M5G/U2cVsyu8K7f0U1W1tMO3/su6eaIfeCHonkoz6ASS5rMwRLyInsELl2kWryIJXfY1BQPMW0naZ9FUrKYwBn8iADqZVVuTjsJHh/EEJWgTq3cA2l89EfLZEp54tdhIHwCcotPEU1MeFanaTcmqigoqCdQCAHrOGm5vANSMS46/07EKMFyW2GgD0AyZwyzWhzSPreis5WWIEi/HjacHQMGErDN0dIbczO/knA0pLp5z3niGl9SfXw3o6R8s/D/1LL7uY0Qe/w+KB9UfLbwom5wSKJpOKnxLgBjS0M01bRSfxnCh5mpIDMEjrDI0DiT3tvDFUSZdUgFtfpPpmzvTl1glkWE75XM3Xkcld1TMFvB0taom6xTqZJXae7ondmQCvTxp+RHNIRRnL5FPKrY5hedHAa1JaEzlaCYOPZbIM8nKmUtwMDo/vml06AojbgMN+FUjIMOP6HVg+5jyO8Fr13aXyOK6vaSfU2/DGCmbXd2S8/BaBIsFeJOmgJSlnpkB6jz3hrP0FXJXnteVAl/u+GSHvRBnt4FxG3i7aCHng7PWgr/XjS66)**
|
||||
|
||||
We're using `difference` here as planned, but we've also introduced a new operation `union`.
|
||||
`union` allows us to combine shapes into one, which is important here since `difference` works by subtracting the second child from the first and because both of the `linear_extrudes` are children `union` lets us combine them into a single child so that we can subtract `plateHoles`.
|
||||
|
||||
@@ -12,7 +12,7 @@ The reason we're using `rotate` here is because we want to re-orientate our `pin
|
||||
|
||||
```cpp
|
||||
module pin2() {
|
||||
translate([0,pivotRadius,hingeHalfExtrudeLength+tiny]){
|
||||
translate([0,pivotRadius,hingeHalfExtrudeLength]){
|
||||
rotate([0,175,0]){
|
||||
cylinder(h=hingeLength/2+clearance/2, r1=pinRadius, r2=pinRadius+pinTaper);
|
||||
}
|
||||
@@ -22,6 +22,7 @@ module pin2() {
|
||||
%hingeBodyHalf();
|
||||
pin2();
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJytU8FqhDAQvecrcmhBWbdqlqUH8VIo9NBDKQs9FCmpxjXUxm0SS5fiv3fU6EZXemkFSSYzb+a9yeQiF/GGROjAPyv9SDNeq3gboVeq2K7g6ZtgSsWb/uCJZ7qIQ3AXXOzZPRN7sDdBixYG26USO3pgMg6uCMSmJaOSipS1toHe0TK//dKyzoYsVkafrEeMDwj0XmV1yXAXcgM8HmSV85I5Lv5GGGsIVCXVzHm2RHiBFyRu68dYfdRUgnvU4E3kJW4EYQ1qZpWq7NjyNGVKLoDTC+tZO8syTMEqzxXTTuiazZq441EfMaEdeBPiyRiDccol9MKx/B3Z9mvMOqizc1j7ZASc96/3NKj/lxT+Lit0l3PavYRpOL+oqeLlXg5tSI9ALGPSmQ3JyhoSD8swHocQLHKyVsM8LlEjf+MmK20w4fXWvrn/JT3cEVC/nM1mhHy/73H38Ei7/gBVCEAa)**
|
||||
|
||||
<Image img={transparentRotate} className="mb-8 bg-contain rounded-md overflow-hidden" />
|
||||
|
||||
@@ -51,6 +52,7 @@ difference() {
|
||||
pin2();
|
||||
}
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJytUk1LxDAQvedX5OChZbv2YxEWSi+C4MGDyIIHKRLb6W6wpmuSiov0vzvdpDXdLV60EJrJvDd5bzIXlchWSUr2/KPRD6zkrcquUvLCFGx2vHgVoFS2MgePvNS7LMb0jost3IHYYryKeraw3GMpsWF7kFl0mSC2qIFJJgroY0u9ZXV186llWw5VnIphshw5ITLIW1O2NdAj5Bp13Mum4jV4Pv0ilGoEqppp8J4cE0EURLnf5ylV7y2TmB49BBN7uZ8irCPdyU1Neeh12mtqLlDTMxjV3rwNe2FTVQq0F/t2s0z88cggJrKjYCI8HzGUFlxiLzwnfxTbf539D+7cGs4+Hwnn/TOZjpg15/B3W7E/X9PtJU7D+UNNHc/3cmhDcUBhJUjvZEgWzpAEVMbZOIQYJT/RYpjHOWnJ37TJRltOvI7cl/tf0cMbofSSVxVIwAJW+cms9nDjK0V4GJr+p+Qbr+pF+Q==)**
|
||||
|
||||
<Image img={difference} className="mb-8 bg-contain rounded-md overflow-hidden" />
|
||||
|
||||
@@ -64,6 +66,7 @@ module pin2() {
|
||||
translate([0,pivotRadius,hingeHalfExtrudeLength+tiny]){
|
||||
//
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJytUsFqhDAQvfsVOfSgrFujS2FBvBQKPfRQykIPRUqq426ojdskli7Ff+9kjTbuSg+lgphx3pu8NzMXlchWSert+UejH1jJW5Vdpd4LU7DZ8eJVgFLZqv/xyEu9y2JM77jYwh2ILcYratjCco+lxIbtQWb0MkFsUQOTTBRgYku9ZXV186llWw5VnIpRshw5ETI0FwfkUorFvLembGsgR/g1arqXTcVr8APy5RGikaRqpsF/cgyFNKR5YPKEqPeWSUyPfsKJ1TxIEdZ53clNTXkwmu01NReo7xl6B/68JXthU1UKtB8H9rBMgvFXj5jIpuFEeD5iCCm4xL74Tv4o1jyd/Q7u3BrOOR8J5/3rM53Xv3MOf7cVB/M13V7iZpwPaup4vpdDG4oDCitB+icLs3AWJiQyzsaFxCj5iRbDbs5JS/6mbWH2cxAoG22J8Zq64/tf5cOgUH/JqwokYAEr/2RhDbw3lyI8ivohpN43qVRLIQ==)**
|
||||
|
||||
Fixed!
|
||||
|
||||
|
||||
@@ -67,6 +67,7 @@ pin(0);
|
||||
pin(45);
|
||||
pin(120);
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJxtkMFrwyAUxu/+FR52MCRdjVlPweNgh51GoYzRg4uvjdSaoma0jP7veyZpF8YEwe/p93vP72HnZCVqcjJfXXxT2vRBrmryqQKsW9McHIQgq7GwMTq2ssTr1rg9vILbo654crvJO6DcWp3AS/4o8G1jQXnlGkh6sr4ou3s+R9/rG2VGXIrF3bNERzTugl7OEUaOne4tUOzBfBdVhPeMfhNKIz4PFjX74MXsM8X//fIE3WbJSekISsYJWfDtSE2ruVjjNHj2Z8h8NmRBfSnvIaASvyq/5ZHVA/FK0r6SlBPj2ZAXe1pNh1KkEvkBqMmEYw==)**
|
||||
|
||||
<Image img={multiRotate} className="mb-8 bg-contain rounded-md overflow-hidden" />
|
||||
|
||||
@@ -92,6 +93,7 @@ difference() {
|
||||
pin(rotateY=180);
|
||||
}
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJx9Ul1Lw0AQfDa/YilCE5raJEUQSl4EQcEHkYKIFLkmm/bwelfvLmqR/Hc3nya1GAi5vd2Z3ZnseSbjebRw9vxD2UeW8tzElwtnzQwutzx5k2hMPK8vnnhqt3FI6S2XG7xHuaF4HpRo2WArKrlke9RxcBFRbSKQaSYTLOMGestEdvNldZ62LD3GWTTtMDNCWC4PhA0CInN2Ks0FQlV+TTM9aJVxga4H3w6AJZARzKL70hPkB36w8so8gHnPmaZ0p8cfSF15CyornOKok0oP5cxNG8ElzfeKtQL3tKSmocoyg9YNveYwjbzuqq4YjB34g8FXXQ1AwjX54vby1bDlUzTfVl2fo3dedYC//tWZwqnfUwr/lxV6pzn7XtJmuFpZEvr8538NhZ+2dFKuQmtJTVQCG8rSLWjtSg4kIUXtHq3WpLdaPugw7laXoug3mrRbPDCGpKQ8y1AjETTLcLQgC+dsNoM7+FS5SOXYQqJyaSG8CoAZYDDasQ1PQOa7NepRVWw4sQG3YwPIzAGsAotC1DeZ0oTaEjfYXEtq2HMxJlrqWDg/WYc6OQ==)**
|
||||
|
||||
And now we can use the pin as both the hole and the shaft, above is code for the hole, and both together are below:
|
||||
|
||||
@@ -147,6 +149,7 @@ module hingeHalfMale() {
|
||||
%hingeHalfFemale(); // make female hinge transparent
|
||||
hingeHalfMale();
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJx9U9FKwzAUfe9X5EGhZZ1LOwSh9EVQfFAUGYjIkNjebmFdOtNMHLJ/96ZpY9oVB2Vt7rn3nnN6elaIdB4n3o5/VeqZ5Xxfp5eJ98FqWKx5thFQ1+ncHLzwXK3TCMtrLlZwD2KFz3Oqu0Xb24wSC7YDmdKLGLFZCUwykYF+blvvWFncfCu5z7spzsRZPLU9M+xQXBywl1Ic5m2rfF8CaeDXyOlJVgUvwQ/Ij0eIwqa6ZAr8N0dQSEO6DHSdkPpzzySWrZ6wJ3UZJAg7esfBpio/aM7tmpIL5PcORoE/LqldWBVFDcqPgvZmGgf2yCB6tGnYI760GEIyLtEX36k3ZPXv2P536twZzv3SNpz6ZypHz1xjCv+XFQXjM10vMRm+rBQKfQ2JbCg9Nu0nb69vw7jBEx2MziAzVjd2C9A70pmXHVBQDtK3Zg4SN3ESF1qQjFKb7InL14HEDqRLfg/bQnsGD+Klpd3Cltkc57woQALS8TsRgxyaaY6haXRF+6amVtN4qPWgBzb27eD3Ejr2WCP/TNbLXINH2fX5DdnRoSPnJ14kZDYjW7YBUjQnZo1husOgC+UNlCS/dQCJfw==)**
|
||||
|
||||
<Image img={transparentAssembly} className="mb-8 bg-contain rounded-md overflow-hidden" />
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ linear_extrude(hingeLength){
|
||||
offset(1)offset(-1)hingeBaseProfile(); // <- and here
|
||||
}
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJx1kE2LwjAQhu/5FXPYQwOVfuEp28uePYgIHqRIbKY22E138yGC9L8ba5XIrrfJ+07eeWY+GlUWOSM/8tTbFRfSmXLOyJ4bXLeyPio0pizuwkYK25aZt1upDrhAdfDvImWEfPfCdQij/uVbl7pvZIcRhQsBsJor03GL0TaYE6dxWtGbD2B+Hdfefo6JXwgqynzbQAZCOqmQ6x2erXYCo4AkycewvmkM2iijUzHL6VO6Dwtw0vgF6IEDUEtde/7AHRFuECFv+Duoq6n57z0YJAl8zsAZFNCixmmv92v9v1RG32dzNUUPV0ZqnRE=)**
|
||||
|
||||
## Module Syntax
|
||||
|
||||
@@ -65,6 +66,7 @@ module hingeBodyHalf() {
|
||||
|
||||
hingeBodyHalf();
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJx1UD1vwyAU3PkVDB2M5Cr+UCbkpVOGDFFVqUNlRcQ8YlQCKeCqVeX/XmI7Fk4bJMTj3cHdvQehq7Kg6Cw/jX9mXHauWlN0YA5eWtm8a3CuKsfGq+S+rfIAt1IfYQv6GO5lRhE6Gd4pwEP/KVB31gipICH4B2HsLdNOMQ/JW6STZmlWkwuOsfvomA3wLJMuHNSEBlqP+hslw783TIlJRkkNzO7hy9uOQxKZXBWTjhHCgU9yMhWPBZlbI2PhNksXfuuZg3EjbRMCRvjg8bL66byGiv+I6np+8HdsI9Kjcd8Pdi9WTv7/cxjhzezoL4pYpkI=)**
|
||||
|
||||
## 3D Primitives
|
||||
|
||||
@@ -88,6 +90,7 @@ module pin() {
|
||||
hingeBodyHalf();
|
||||
pin();
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJx1UktPhDAQvvdX9OCBRlQe8UR68eTBgzGbeDDEVDosjVjWthg3hv9ugcK2+yAh7fSbx/fNzFUtaZ4VaCd+OvPCuOg1vS/QB9OwaUT1KUFrms8Pr4KbhqYWboTcwhPIrbXzZIyWLnZKJTdsB4omt5n1RV8d71vAU8yDTfOsulq0EBH8hzA2ikndMgPRm8chTuKkJCOOsf7umbLwSiEO2JWksG4DGo4qdXz/yNralWmFBKbe4deonkPkCbjLXJ2urjWYKCXucpOR9Wn2CNgmccC3XH0wroSqrEAPnziO3+DORZSfw7uXa8Bp22ZkQPN/WdglWSk5n9NvoZ3h6XxCxUELF/XV3vLhoKKGBniMVUrXLbFWdrCul4U5sDia4LRT9vgH5jHd2w==)**
|
||||
|
||||
<Image img={pivot} className="mb-8 bg-contain rounded-md overflow-hidden" />
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ We can see at the very least some circles and rectangles will be of use, so lets
|
||||
circle(5);
|
||||
square([15,3]);
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJxLzixKzknVMNW05iouLE0sStWINjTVMY7VtAYAcmwH2A==)**
|
||||
|
||||
`circle(5);` gives us a circle with a radius of `5` and `square` is the 2d version of `cube`.
|
||||
Here we've given it dimensions of 15 and 3 for x and y respectively (or width and height if you prefer).
|
||||
@@ -40,6 +41,8 @@ translate([0,5,0]){
|
||||
square([15,3]);
|
||||
```
|
||||
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJwrKUrMK85JLEnViDbQMdUxiNWs5lJQSM4sSs5J1TDVtOaq5SouLE0sAsobmuoYx2paAwCRsA7o)**
|
||||
|
||||
<Image img={translate} className="mb-8 bg-contain rounded-md overflow-hidden" />
|
||||
|
||||
`translate` is a little different to the modules we've seen so far in that instead of ending with a semicolon `;` it ends with `{ children }`. In the case above it has one child, the `circle`. `translate` shifts its children around, we're using it to shift it up by `5`. We put `5` in the second position in the square braces because we want to shift it along the Y axis. If you're ever not sure which axis you need to shift something, just try each until you find the one you're after.
|
||||
@@ -57,6 +60,7 @@ translate([5,0,0]){
|
||||
square([11,2]);
|
||||
}
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJwrKUrMK85JLEnViDbQMdUxiNWs5lJQSM4sSs5J1TDVtOaq5SouLE0sAsqb6pjGAgVKEDqA6mE6YIoMDXWMQKpqAc2BGmg=)**
|
||||
|
||||
<Image img={unroundedProfile} className="mb-8 bg-contain rounded-md overflow-hidden" />
|
||||
|
||||
@@ -85,6 +89,7 @@ translate([pivotRadius,0,0]){
|
||||
square([11,2]);
|
||||
}
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJwryCzLLwlKTMksLbY1teYqKUrMK85JLEnViDbQKUDI6RjEalZzKSgkZxYl56RqIMloWnPVchUXliYWAfUg60Bix2qimIxiLsxkmBGGhjpGIPW1AMDeNbI=)**
|
||||
|
||||
The first line `pivotRadius=5;` is where the variable is assigned, that is the value of `5` is assigned to the name `pivotRadius`, Then we can use it everywhere we need that value.
|
||||
The beauty of this is two fold,
|
||||
@@ -108,5 +113,6 @@ translate([pivotRadius,0,0]){
|
||||
square([baseWidth,baseThickness]);
|
||||
}
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJwryCzLLwlKTMksLbY1teZKSixODcnITM7OSy0utjWGCIRnppRk2BoCpUuKEvOKcxJLUjWiDXQKEFp1DGI1q7kUFJIzi5JzUjWQZDStuWq5igtLE4uAepB1ILFjNVFMRjEXZjLMCLh7dFCcCjKiFgD+/Uh/)**
|
||||
|
||||
There are some exceptions to the "magic number" rule, for example above `0` isn't a "magic number" since this conveys "no value for this axis" quite well.
|
||||
|
||||
@@ -98,6 +98,7 @@ module plateHoles() {
|
||||
hingeHalfFemale();
|
||||
hingeHalfMale();
|
||||
```
|
||||
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJyFVU2P0zAQPZNf4QMHp022TrpIQPEFtGiRqEBoJYRWFTKJ01qkTnGSFRXqf8dObNdOXeihssczb2befOR5xfEyX0UH9tR0X0jJ+ha/WEU/SEsfdqz4yWnb4uUo+MrKbocz+bxjfEs/Ur6V9yVS1lzbDlD8gRyowOgml7pFTYkgvKDqrk3vSV3d/e5EXxoUB3GRp9ZmIS06xo/SFiEJtm96Lu/b+6am2mN2M5G/U2cVsyu8K7f0U1W1tMO3/su6eaIfeCHonkoz6ASS5rMwRLyInsELl2kWryIJXfY1BQPMW0naZ9FUrKYwBn8iADqZVVuTjsJHh/EEJWgTq3cA2l89EfLZEp54tdhIHwCcotPEU1MeFanaTcmqigoqCdQCAHrOGm5vANSMS46/07EKMFyW2GgD0AyZwyzWhzSPreis5WWIEi/HjacHQMGErDN0dIbczO/knA0pLp5z3niGl9SfXw3o6R8s/D/1LL7uY0Qe/w+KB9UfLbwom5wSKJpOKnxLgBjS0M01bRSfxnCh5mpIDMEjrDI0DiT3tvDFUSZdUgFtfpPpmzvTl1glkWE75XM3Xkcld1TMFvB0taom6xTqZJXae7ondmQCvTxp+RHNIRRnL5FPKrY5hedHAa1JaEzlaCYOPZbIM8nKmUtwMDo/vml06AojbgMN+FUjIMOP6HVg+5jyO8Fr13aXyOK6vaSfU2/DGCmbXd2S8/BaBIsFeJOmgJSlnpkB6jz3hrP0FXJXnteVAl/u+GSHvRBnt4FxG3i7aCHng7PWgr/XjS66)**
|
||||
|
||||
Lets reflect on what you've achieved
|
||||
|
||||
|
||||
Reference in New Issue
Block a user