massive refactor toDrop cascadeStudio and add CadQuery + OpenSCAD

resolves #400
This commit is contained in:
Kurt Hutten
2021-07-08 21:17:07 +10:00
parent 477a557eb8
commit 8e558d2342
158 changed files with 2335 additions and 2300 deletions

View File

@@ -46,7 +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==)**
**[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`.
@@ -74,7 +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=)**
**[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" />

View File

@@ -29,7 +29,7 @@ offset(1){
}
}
```
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJxTScuzNTay5irILMsvCUpMySwttjW15kpKLE4NychMzs5LLS62NYYIhGemlGTYGgKlufLT0opTSzQMNau5FBRKihLzinMSS1I1og10kAzSMYgFyysoJGcWJeekaiDJaVoDJWqBuLiwNLEIqBNZHxI7FqwQyQYU8xE2wIyBu1MHxQuxUPtqAYDXUD0=)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#encoded_script_v2=eJxTScuzNTay5irILMsvCUpMySwttjW15kpKLE4NychMzs5LLS62NYYIhGemlGTYGgKlufLT0opTSzQMNau5FBRKihLzinMSS1I1og10kAzSMYgFyysoJGcWJeekaiDJaVoDJWqBuLiwNLEIqBNZHxI7FqwQyQYU8xE2wIyBu1MHxQuxUPtqAYDXUD0=)**
<Image img={offset1} className="mb-8 bg-contain rounded-md overflow-hidden" />
@@ -42,7 +42,7 @@ offset(-1)offset(1){
// ... hinge profile
}
```
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJxTScuzNTay5irILMsvCUpMySwttjW15kpKLE4NychMzs5LLS62NYYIhGemlGTYGgKlufLT0opTSzR0DTWhLEPNai4FhZKixLzinMSSVI1oAx0kI3UMYsHyCgrJmUXJOakaSHKa1kCJWiAuLixNLALqRNaHxI4FK0SyAcV8hA0wY+Au1kHxTCzUvloAmONTcw==)**
**[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" />
@@ -59,4 +59,4 @@ offset(1)offset(-2)offset(1){
// ... hinge profile
}
```
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJxTScuzNTay5irILMsvCUpMySwttjW15kpKLE4NychMzs5LLS62NYYIhGemlGTYGgKlufLT0opTSzQMNaEMXSNNuFA1l4JCSVFiXnFOYkmqRrSBDpLZOgaxYHkFheTMouScVA0kOU1roEQtEBcXliYWAXUi60Nix4IVItmAYj7CBpgxcKfroPgqFmpfLQCaj1Z9)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#encoded_script_v2=eJxTScuzNTay5irILMsvCUpMySwttjW15kpKLE4NychMzs5LLS62NYYIhGemlGTYGgKlufLT0opTSzQMNaEMXSNNuFA1l4JCSVFiXnFOYkmqRrSBDpLZOgaxYHkFheTMouScVA0kOU1roEQtEBcXliYWAXUi60Nix4IVItmAYj7CBpgxcKfroPgqFmpfLQCaj1Z9)**

View File

@@ -29,7 +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==)**
**[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" />
@@ -61,7 +61,7 @@ linear_extrude(hingeLength){
}
// highlight-end
```
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJyNkE0KwjAQhfc5RRYuEqjYH1yF3sCVCC6kSGynNlhSTVIRpHc31lqmIOomTOabyXsvs1KnSSzIWV0bt5aFam26FOQgLWwqlZ80WJsmr8ZWFa5KI48rpY+wAn309yQUhNRKgzR7uDnTFsAQX8T8TihtytKCYxEfinnMx9aTU+qM1LaWDtguDJCdIMyGCUpzZfIaGKJc9KjrT3tppfH7eBvV2TCMlCY6WOn91Jg7mHxJhnQ70n3J/zl9xH+b+MuCF38AQqCVGw==)**
**[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" />

View File

@@ -34,7 +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)**
**[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" />
@@ -62,7 +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)**
**[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.
@@ -91,7 +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=)**
**[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" />
@@ -119,7 +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)**
**[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" />
@@ -149,7 +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==)**
**[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" />
@@ -171,7 +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==)**
**[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" />
@@ -206,7 +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)**
**[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`.

View File

@@ -22,7 +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)**
**[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" />
@@ -52,7 +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==)**
**[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" />
@@ -66,7 +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==)**
**[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!

View File

@@ -67,7 +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==)**
**[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" />
@@ -93,7 +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==)**
**[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:
@@ -149,7 +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==)**
**[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" />

View File

@@ -32,7 +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=)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#encoded_script_v2=eJx1kE2LwjAQhu/5FXPYQwOVfuEp28uePYgIHqRIbKY22E138yGC9L8ba5XIrrfJ+07eeWY+GlUWOSM/8tTbFRfSmXLOyJ4bXLeyPio0pizuwkYK25aZt1upDrhAdfDvImWEfPfCdQij/uVbl7pvZIcRhQsBsJor03GL0TaYE6dxWtGbD2B+Hdfefo6JXwgqynzbQAZCOqmQ6x2erXYCo4AkycewvmkM2iijUzHL6VO6Dwtw0vgF6IEDUEtde/7AHRFuECFv+Duoq6n57z0YJAl8zsAZFNCixmmv92v9v1RG32dzNUUPV0ZqnRE=)**
## Module Syntax
@@ -66,7 +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=)**
**[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
@@ -90,7 +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==)**
**[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" />

View File

@@ -22,7 +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==)**
**[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).
@@ -41,7 +41,7 @@ translate([0,5,0]){
square([15,3]);
```
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJwrKUrMK85JLEnViDbQMdUxiNWs5lJQSM4sSs5J1TDVtOaq5SouLE0sAsobmuoYx2paAwCRsA7o)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#encoded_script_v2=eJwrKUrMK85JLEnViDbQMdUxiNWs5lJQSM4sSs5J1TDVtOaq5SouLE0sAsobmuoYx2paAwCRsA7o)**
<Image img={translate} className="mb-8 bg-contain rounded-md overflow-hidden" />
@@ -60,7 +60,7 @@ translate([5,0,0]){
square([11,2]);
}
```
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJwrKUrMK85JLEnViDbQMdUxiNWs5lJQSM4sSs5J1TDVtOaq5SouLE0sAsqb6pjGAgVKEDqA6mE6YIoMDXWMQKpqAc2BGmg=)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#encoded_script_v2=eJwrKUrMK85JLEnViDbQMdUxiNWs5lJQSM4sSs5J1TDVtOaq5SouLE0sAsqb6pjGAgVKEDqA6mE6YIoMDXWMQKpqAc2BGmg=)**
<Image img={unroundedProfile} className="mb-8 bg-contain rounded-md overflow-hidden" />
@@ -89,7 +89,7 @@ translate([pivotRadius,0,0]){
square([11,2]);
}
```
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJwryCzLLwlKTMksLbY1teYqKUrMK85JLEnViDbQKUDI6RjEalZzKSgkZxYl56RqIMloWnPVchUXliYWAfUg60Bix2qimIxiLsxkmBGGhjpGIPW1AMDeNbI=)**
**[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,
@@ -113,6 +113,6 @@ translate([pivotRadius,0,0]){
square([baseWidth,baseThickness]);
}
```
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#encoded_script_v2=eJwryCzLLwlKTMksLbY1teZKSixODcnITM7OSy0utjWGCIRnppRk2BoCpUuKEvOKcxJLUjWiDXQKEFp1DGI1q7kUFJIzi5JzUjWQZDStuWq5igtLE4uAepB1ILFjNVFMRjEXZjLMCLh7dFCcCjKiFgD+/Uh/)**
**[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.

View File

@@ -98,7 +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)**
**[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

View File

@@ -23,12 +23,12 @@ We're going to learn:
<Image img={hinge} className="mb-8 bg-contain rounded-md overflow-hidden" />
**[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)**
**[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)**
This tutorial makes no assumption about previous knowledge, which means it's fine you you haven't done any programming before, we'll walk you through it.
If you came here from "[getting started](/docs)" then you would have already got a shape on screen with `cube([10,10,10]);`.
If you came from elsewhere, open the OpenSCAD desktop app or go to our [online editor](https://cadhub.xyz/dev-ide/openScad), and add `cube([10,10,10]);` to get the following cube:
If you came from elsewhere, open the OpenSCAD desktop app or go to our [online editor](https://cadhub.xyz/dev-ide/openscad), and add `cube([10,10,10]);` to get the following cube:
<Image img={plainCube} className="mb-8 bg-contain rounded-md overflow-hidden" />

View File

@@ -34,4 +34,4 @@ Paste in the Github URL.
From there you can copy the generated URL, or "copy and Render" to check the script is working as intended.
Here's the [URL](http://cadhub.xyz/dev-ide/cadQuery#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2Ftoastedice%2Frandom_openscad_creations_I_made%2Fmain%2Fdonut%2Fspacedonut.scad) from this example.
Here's the [URL](http://cadhub.xyz/dev-ide/cadquery#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2Ftoastedice%2Frandom_openscad_creations_I_made%2Fmain%2Fdonut%2Fspacedonut.scad) from this example.

View File

@@ -15,7 +15,7 @@ To get started click the "+" button on the top right of [CadHub](https://cadhub.
<Image img={plus} style={{backgroundSize: 'contain', paddingBottom: '2rem', width: '400px', margin: '0 auto'}} />
Then select OpenSCAD. Note that [CadQuery](https://cadquery.readthedocs.io/en/latest/) is available too, but [OpenSCAD](https://cadhub.xyz/dev-ide/openScad) is recomended and the rest of this tutorial is based on OpenSCAD.
Then select OpenSCAD. Note that [CadQuery](https://cadquery.readthedocs.io/en/latest/) is available too, but [OpenSCAD](https://cadhub.xyz/dev-ide/openscad) is recomended and the rest of this tutorial is based on OpenSCAD.
<Image img={openscadSelect} style={{backgroundSize: 'contain', paddingBottom: '2rem', width: '300px', margin: '0 auto'}} size={300} />

View File

@@ -39,7 +39,7 @@ Arguments are:
- Debugging mode, print reduced radii to the console.
- Radii conflict resolution disabled.
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2Fpolyround.scad)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2Fpolyround.scad)**
<Image img={polyroundApi} className="mb-8 bg-contain rounded-md overflow-hidden" />
@@ -53,7 +53,7 @@ polygon(
By default `polyRound` will reduce radii to stop any two subsequent radii from conflicting.
To further understand how the radii conflict resolution works here's an example of that.
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2Fradii-conflict.scad)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2Fradii-conflict.scad)**
<Image img={conflictApi} className="mb-8 bg-contain rounded-md overflow-hidden" />
@@ -92,7 +92,7 @@ Use: `polyRoundExtrude(radiiPoints,length,r1,r2,fn,convexity)`
This module is similar to `extrudeWithRadius` in purpose, though by using radiiPoints directly instead of a generic 2d child it's able to offer smoother curves in a more preformant manner.
It is recommended over `extrudeWithRadius` where possible.
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FpolyRoundExtrude.scad)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FpolyRoundExtrude.scad)**
<Image img={polyroundExtrudeApi} className="mb-8 bg-contain rounded-md overflow-hidden" />
@@ -104,7 +104,7 @@ polyRoundExtrude(radiiPoints,2,0.5,-0.8,fn=50);
Negative fillets on the end of extrusions can be useful when:
- An extrusion needs to mate with flat surface
- Creating [holes with transitioning fillets](https://cadhub.xyz/dev-ide/openScad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2Fnegative-polyRoundExtrude.scad).
- Creating [holes with transitioning fillets](https://cadhub.xyz/dev-ide/openscad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2Fnegative-polyRoundExtrude.scad).
### `translateRadiiPoints`
Function for moving radii points, to aid in their reuse.
@@ -119,7 +119,7 @@ Because the function returns radiiPoints, they need to be used with `polyRound`
`translateRadiiPoints` is typically employed to re-use points multiple times in one part.
In order to make this work, several series of points are combined `concat`.
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FtranslateRadiiPoints.scad)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FtranslateRadiiPoints.scad)**
<Image img={translatePointsApi} className="mb-8 bg-contain rounded-md overflow-hidden" />
@@ -173,7 +173,7 @@ where:
Here's a simple example.
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2Fshell2d.scad)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2Fshell2d.scad)**
<Image img={shell2dApi} className="mb-8 bg-contain rounded-md overflow-hidden" />
@@ -208,7 +208,7 @@ Because it returns a new list of radiiPoints, it can safetly used with `polyRoun
The following shows how a series of points can form the bean chain, how radii are added and defining the thickness of the beams
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FbeamChain-1.scad)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FbeamChain-1.scad)**
<Image img={beamchainApi} className="mb-8 bg-contain rounded-md overflow-hidden" />
@@ -239,7 +239,7 @@ translate([0,-7*2,0]){
The next example shows adding a angle and filleting radius to the end of the beams
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FbeamChain-2.scad)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FbeamChain-2.scad)**
<Image img={beamchainApi2} className="mb-8 bg-contain rounded-md overflow-hidden" />
@@ -262,7 +262,7 @@ translate([0,-7*4,0]){
Lastly the following shows how seperating the beams polygong path into forward and return paths allows extra polgon points at the ends of the beam.
The advantage of this over regular union is adding a transitioning radius between the beam and the extra points.
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FbeamChain-3.scad)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FbeamChain-3.scad)**
<Image img={beamchainApi3} className="mb-8 bg-contain rounded-md overflow-hidden" />
@@ -314,7 +314,7 @@ use: `mirroredRadiiPoints = mirrorPoints(radiiPoints, rot, endAttenuation)`
- `rot`: angle of rotation.
- `endAttenuation`: [start, end]. Amount of points to be removed from the start and end of the radiiPoints. Its purpose is to remove single points from the ends if they lie right on the mirror axis and would cause two points on top of each other.
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FmirrorPoints.scad)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FmirrorPoints.scad)**
<Image img={mirrorpointsApi} className="mb-8 bg-contain rounded-md overflow-hidden" />
@@ -342,7 +342,7 @@ extrudeWithRadius(length,r1=0,r2=0,fn=30){
- `r1`, `r2`: Start and end radii.
- `fn`: How much the radii are subdivided.
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FextrudeWithRadius.scad)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FextrudeWithRadius.scad)**
<Image img={extrudeWithRadiusApi} className="mb-8 bg-contain rounded-md overflow-hidden" />

View File

@@ -43,7 +43,7 @@ A video version of this article can be [found here](https://www.youtube.com/watc
### `polyRound`
It's like polygon, but upgraded to allow rounding of any of the points.
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2Fpolyround.scad)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2Fpolyround.scad)**
<Image img={polyroundDemo} className="mb-8 bg-contain rounded-md overflow-hidden" />
@@ -51,7 +51,7 @@ It's like polygon, but upgraded to allow rounding of any of the points.
Piggy backs on [`polyRound`](/docs/round-anything/overview#polyround), Allowing fillets on the ends of `polyRound` extrutions.
A negative vaule will flare the end out for a transition to flat, useful for creating [filleted negatives](https://github.com/Irev-Dev/Round-Anything/discussions/25#discussioncomment-795765) for use with difference.
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FpolyRoundExtrude.scad)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FpolyRoundExtrude.scad)**
<Image img={polyroundExtrude} className="mb-8 bg-contain rounded-md overflow-hidden" />
@@ -59,21 +59,21 @@ A negative vaule will flare the end out for a transition to flat, useful for cre
By default, fillets are automatically scaled to remove any give pair of subsequent fillets from conflicting (if they are too big and too close together).
The feature can be opted out of.
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2Fradii-conflict.scad)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2Fradii-conflict.scad)**
<Image img={conflictResolution} className="mb-8 bg-contain rounded-md overflow-hidden" />
### `translateRadiiPoints` - Point translation helpers
Aids in the reuse of polygon of points. To keep a single source of truth and for editing them together.
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FtranslateRadiiPoints.scad)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FtranslateRadiiPoints.scad)**
<Image img={pointTranslation} className="mb-8 bg-contain rounded-md overflow-hidden" />
### `shell2d`
Self-explanatory, when combined with poly round, it gives a nice smooth transitioning shell.
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2Fshell2d.scad)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2Fshell2d.scad)**
<Image img={shell2d} className="mb-8 bg-contain rounded-md overflow-hidden" />
@@ -88,7 +88,7 @@ An offset from the normal gives beams their thickness.
### `mirrorPoints`
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FmirrorPoints.scad)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FmirrorPoints.scad)**
For mirroring a set of points.
The benefit of this over using the native OpenSCAD mirror transformation is the ability to put smooth radii along the mirrored plane.
@@ -101,7 +101,7 @@ Similar to [PolyRoundExtrude](http://localhost:3000/docs/round-anything/overview
It will work with any 2d shape, though uses a more hacky and less proformant method.
Use `polyRoundExtrude` instead if you can
**[Live Demo](https://cadhub.xyz/dev-ide/openScad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FextrudeWithRadius.scad)**
**[Live Demo](https://cadhub.xyz/dev-ide/openscad#fetch_text_v1=https%3A%2F%2Fraw.githubusercontent.com%2FIrev-Dev%2FRound-Anything%2Fmaster%2Fexamples%2FextrudeWithRadius.scad)**
<Image img={radiusExtrude} className="mb-8 bg-contain rounded-md overflow-hidden" />