1
0
mirror of https://github.com/nophead/NopSCADlib.git synced 2025-09-04 20:56:07 +02:00

Compare commits

...

9 Commits

Author SHA1 Message Date
Chris Palmer
9699a70cf5 Merge branch 'martinbudden-rounded_right_triangle' 2020-12-22 13:02:14 +00:00
Chris Palmer
6d79e587aa Updated readme and image for rounded_right_triangle. 2020-12-22 13:00:49 +00:00
Chris Palmer
15b3b3a8c2 Merge branch 'rounded_right_triangle' of https://github.com/martinbudden/NopSCADlib into martinbudden-rounded_right_triangle 2020-12-22 12:39:17 +00:00
Chris Palmer
ec891c8013 Merge branch 'martinbudden-dogbone_xy' 2020-12-22 12:35:35 +00:00
Chris Palmer
c7811f21e0 dogbone_rectangle_x() and dogbone_rectangle_y() added. 2020-12-22 12:34:08 +00:00
Martin Budden
782deccf6b Simplified dogbone rectangles. 2020-12-22 10:34:45 +00:00
Martin Budden
69da4c1c23 Added offset parameters to dogbone_square. 2020-12-22 10:09:43 +00:00
Martin Budden
dad2bccbaa Added a rounded right triangle. 2020-12-22 00:02:00 +00:00
Martin Budden
0a00f244e4 Added dogbones with circles offset in x and y directions. 2020-12-21 23:28:39 +00:00
8 changed files with 130 additions and 12 deletions

View File

@@ -90,6 +90,7 @@ use <utils/gears.scad>
use <utils/hanging_hole.scad>
use <utils/fillet.scad>
use <utils/rounded_polygon.scad>
use <utils/rounded_right_triangle.scad>
use <utils/layout.scad>
use <utils/round.scad>
use <utils/offset.scad>

View File

@@ -35,11 +35,11 @@ See [usage](docs/usage.md) for requirements, installation instructions and a usa
<tr><td> <a href = "#D_connectors">D_connectors</a> </td><td> <a href = "#Modules">Modules</a> </td><td> <a href = "#Spades">Spades</a> </td><td> <a href = "#Foot">Foot</a> </td><td> <a href = "#Round">Round</a> </td><td></td></tr>
<tr><td> <a href = "#Displays">Displays</a> </td><td> <a href = "#Nuts">Nuts</a> </td><td> <a href = "#Spools">Spools</a> </td><td> <a href = "#Handle">Handle</a> </td><td> <a href = "#Rounded_cylinder">Rounded_cylinder</a> </td><td></td></tr>
<tr><td> <a href = "#Extrusion_brackets">Extrusion_brackets</a> </td><td> <a href = "#O_ring">O_ring</a> </td><td> <a href = "#Springs">Springs</a> </td><td> <a href = "#PCB_mount">PCB_mount</a> </td><td> <a href = "#Rounded_polygon">Rounded_polygon</a> </td><td></td></tr>
<tr><td> <a href = "#Extrusions">Extrusions</a> </td><td> <a href = "#Opengrab">Opengrab</a> </td><td> <a href = "#Stepper_motors">Stepper_motors</a> </td><td> <a href = "#PSU_shroud">PSU_shroud</a> </td><td> <a href = "#Sector">Sector</a> </td><td></td></tr>
<tr><td> <a href = "#Fans">Fans</a> </td><td> <a href = "#PCB">PCB</a> </td><td> <a href = "#Swiss_clips">Swiss_clips</a> </td><td> <a href = "#Press_fit">Press_fit</a> </td><td> <a href = "#Sweep">Sweep</a> </td><td></td></tr>
<tr><td> <a href = "#Fuseholder">Fuseholder</a> </td><td> <a href = "#PCBs">PCBs</a> </td><td> <a href = "#Toggles">Toggles</a> </td><td> <a href = "#Printed_box">Printed_box</a> </td><td> <a href = "#Thread">Thread</a> </td><td></td></tr>
<tr><td> <a href = "#Geared_steppers">Geared_steppers</a> </td><td> <a href = "#PSUs">PSUs</a> </td><td> <a href = "#Transformers">Transformers</a> </td><td> <a href = "#Ribbon_clamp">Ribbon_clamp</a> </td><td> <a href = "#Tube">Tube</a> </td><td></td></tr>
<tr><td> <a href = "#Green_terminals">Green_terminals</a> </td><td> <a href = "#Panel_meters">Panel_meters</a> </td><td> <a href = "#Tubings">Tubings</a> </td><td> <a href = "#SSR_shroud">SSR_shroud</a> </td><td></td><td></td></tr>
<tr><td> <a href = "#Extrusions">Extrusions</a> </td><td> <a href = "#Opengrab">Opengrab</a> </td><td> <a href = "#Stepper_motors">Stepper_motors</a> </td><td> <a href = "#PSU_shroud">PSU_shroud</a> </td><td> <a href = "#Rounded_right_triangle">Rounded_right_triangle</a> </td><td></td></tr>
<tr><td> <a href = "#Fans">Fans</a> </td><td> <a href = "#PCB">PCB</a> </td><td> <a href = "#Swiss_clips">Swiss_clips</a> </td><td> <a href = "#Press_fit">Press_fit</a> </td><td> <a href = "#Sector">Sector</a> </td><td></td></tr>
<tr><td> <a href = "#Fuseholder">Fuseholder</a> </td><td> <a href = "#PCBs">PCBs</a> </td><td> <a href = "#Toggles">Toggles</a> </td><td> <a href = "#Printed_box">Printed_box</a> </td><td> <a href = "#Sweep">Sweep</a> </td><td></td></tr>
<tr><td> <a href = "#Geared_steppers">Geared_steppers</a> </td><td> <a href = "#PSUs">PSUs</a> </td><td> <a href = "#Transformers">Transformers</a> </td><td> <a href = "#Ribbon_clamp">Ribbon_clamp</a> </td><td> <a href = "#Thread">Thread</a> </td><td></td></tr>
<tr><td> <a href = "#Green_terminals">Green_terminals</a> </td><td> <a href = "#Panel_meters">Panel_meters</a> </td><td> <a href = "#Tubings">Tubings</a> </td><td> <a href = "#SSR_shroud">SSR_shroud</a> </td><td> <a href = "#Tube">Tube</a> </td><td></td></tr>
<tr><td> <a href = "#Hot_ends">Hot_ends</a> </td><td> <a href = "#Pillars">Pillars</a> </td><td> <a href = "#Variacs">Variacs</a> </td><td> <a href = "#Screw_knob">Screw_knob</a> </td><td></td><td></td></tr>
<tr><td> <a href = "#Hygrometer">Hygrometer</a> </td><td> <a href = "#Pin_headers">Pin_headers</a> </td><td> <a href = "#Veroboard">Veroboard</a> </td><td> <a href = "#Socket_box">Socket_box</a> </td><td></td><td></td></tr>
<tr><td> <a href = "#IECs">IECs</a> </td><td> <a href = "#Pulleys">Pulleys</a> </td><td> <a href = "#Washers">Washers</a> </td><td> <a href = "#Strap_handle">Strap_handle</a> </td><td></td><td></td></tr>
@@ -5511,8 +5511,10 @@ a square cornered part fits in the hole then circles are placed in the corners m
### Modules
| Module | Description |
|:--- |:--- |
| ```dogbone_rectangle(size, r = cnc_bit_r, center = true, xy_center = true)``` | Rectangle with cylinders at the corners |
| ```dogbone_square(size, r = cnc_bit_r, center = true)``` | Square with circles at the corners |
| ```dogbone_rectangle(size, r = cnc_bit_r, center = true, xy_center = true, x_offset, y_offset)``` | Rectangle with cylinders at the corners |
| ```dogbone_rectangle_x(size, r = cnc_bit_r, center = true, xy_center = true)``` | Rectangle with cylinders at the corners, offset in the x direction |
| ```dogbone_rectangle_y(size, r = cnc_bit_r, center = true, xy_center = true)``` | Rectangle with cylinders at the corners, offset in the y direction |
| ```dogbone_square(size, r = cnc_bit_r, center = true, x_offset, y_offset)``` | Square with circles at the corners, with optional offsets |
![dogbones](tests/png/dogbones.png)
@@ -5833,6 +5835,26 @@ Because the tangents need to be calculated to find the length these can be calcu
![rounded_polygon](tests/png/rounded_polygon.png)
<a href="#top">Top</a>
---
<a name="Rounded_right_triangle"></a>
## Rounded_right_triangle
Draw a 3D right triangle with rounded edges. Intended to be embedded in other parts. Can be optionally offset by the filleted amount.
[utils/rounded_right_triangle.scad](utils/rounded_right_triangle.scad) Implementation.
[tests/rounded_right_triangle.scad](tests/rounded_right_triangle.scad) Code for this example.
### Modules
| Module | Description |
|:--- |:--- |
| ```rounded_right_triangle(x, y, z, fillet, center = true, offset = false)``` | Draw a 3D right triangle with rounded edges. |
![rounded_right_triangle](tests/png/rounded_right_triangle.png)
<a href="#top">Top</a>
---

View File

@@ -26,6 +26,12 @@ module dogbones() {
#translate([15, 0])
dogbone_rectangle([10, 20, 5], center = false);
#translate([30, 0])
dogbone_rectangle_x([10, 20, 5], center = false);
#translate([45, 0])
dogbone_rectangle_y([10, 20, 5], center = false);
sq = 3;
translate([-5 + sq / 2 + eps, -10 + sq / 2 + eps])
%cube([sq, sq, 1], center = true);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

View File

@@ -0,0 +1,31 @@
//
// NopSCADlib Copyright Chris Palmer 2018
// nop.head@gmail.com
// hydraraptor.blogspot.com
//
// This file is part of NopSCADlib.
//
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
// GNU General Public License as published by the Free Software Foundation, either version 3 of
// the License, or (at your option) any later version.
//
// NopSCADlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>.
//
include <../global_defs.scad>
use <../utils/rounded_right_triangle.scad>
module rounded_right_triangles() {
rounded_right_triangle(10, 20, 5, 0.5);
translate([20, 0])
rounded_right_triangle(10, 20, 5, 0.5, offset = true);
}
rounded_right_triangles();

View File

@@ -23,24 +23,36 @@
//
include <../utils/core/core.scad>
module dogbone_square(size, r = cnc_bit_r, center = true) //! Square with circles at the corners
module dogbone_square(size, r = cnc_bit_r, center = true, x_offset, y_offset) //! Square with circles at the corners, with optional offsets
{
x_offset = is_undef(x_offset) ? r / sqrt(2) : x_offset;
y_offset = is_undef(y_offset) ? r / sqrt(2) : y_offset;
union() {
square(size, center = center);
if(r > 0) {
origin = center ? [0, 0] : size / 2;
offset = r / sqrt(2);
for(x = [-1, 1], y = [-1, 1])
translate(origin + [x * (size.x / 2 - offset), y * (size.y / 2 - offset)])
translate(origin + [x * (size.x / 2 - x_offset), y * (size.y / 2 - y_offset)])
drill(r, 0);
}
}
}
module dogbone_rectangle(size, r = cnc_bit_r, center = true, xy_center = true) //! Rectangle with cylinders at the corners
module dogbone_rectangle(size, r = cnc_bit_r, center = true, xy_center = true, x_offset, y_offset) //! Rectangle with cylinders at the corners
{
extrude_if(h = size.z, center = center)
dogbone_square([size.x, size.y], r, xy_center);
dogbone_square([size.x, size.y], r, xy_center, x_offset, y_offset);
}
module dogbone_rectangle_x(size, r = cnc_bit_r, center = true, xy_center = true) //! Rectangle with cylinders at the corners, offset in the x direction
{
dogbone_rectangle(size = size, r = r, center = center, x_offset = 0, y_offset = r);
}
module dogbone_rectangle_y(size, r = cnc_bit_r, center = true, xy_center = true) //! Rectangle with cylinders at the corners, offset in the y direction
{
dogbone_rectangle(size = size, r = r, center = center, x_offset = r, y_offset = 0);
}

View File

@@ -0,0 +1,46 @@
//
// NopSCADlib Copyright Chris Palmer 2018
// nop.head@gmail.com
// hydraraptor.blogspot.com
//
// This file is part of NopSCADlib.
//
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
// GNU General Public License as published by the Free Software Foundation, either version 3 of
// the License, or (at your option) any later version.
//
// NopSCADlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along with NopSCADlib.
// If not, see <https://www.gnu.org/licenses/>.
//
//
//! Draw a 3D right triangle with rounded edges. Intended to be embedded in other parts. Can be optionally offset by the filleted amount.
//
include <../utils/core/core.scad>
include <NopSCADlib/utils/core/rounded_rectangle.scad>
module rounded_right_triangle(x, y, z, fillet, center = true, offset = false) { //! Draw a 3D right triangle with rounded edges.
fillet = max(fillet, eps);
size = [x + (offset ? 2 * fillet : 0), y + (offset ? 2 * fillet : 0), z];
translate([offset ? -2 * fillet : 0, offset ? -2 * fillet : 0, center ? 0 : size.z / 2])
hull() {
translate([0, fillet, size.z / 2])
rotate([90, 90, 0])
rounded_rectangle([size.z, 2 * fillet, eps], fillet - eps, center = false, xy_center = false);
translate([0, size.y, size.z / 2])
rotate([90, 90, 0])
rounded_rectangle([size.z, 2 * fillet, eps], fillet - eps, center = false, xy_center = false);
translate([fillet, 0, size.z / 2])
rotate([0, 90, 0])
rounded_rectangle([size.z, 2 * fillet, eps], fillet - eps, center = false, xy_center = false);
translate([size.x, 0, size.z / 2])
rotate([0, 90, 0])
rounded_rectangle([size.z, 2 * fillet, eps], fillet - eps, center = false, xy_center = false);
}
}