mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-10 16:54:23 +02:00
refactored
This commit is contained in:
@@ -11,15 +11,13 @@
|
|||||||
**/
|
**/
|
||||||
|
|
||||||
include <__private__/__frags.scad>;
|
include <__private__/__frags.scad>;
|
||||||
|
include <__private__/__nearest_multiple_of_4.scad>;
|
||||||
|
|
||||||
module line3d(p1, p2, thickness, p1Style = "CAP_CIRCLE", p2Style = "CAP_CIRCLE") {
|
module line3d(p1, p2, thickness, p1Style = "CAP_CIRCLE", p2Style = "CAP_CIRCLE") {
|
||||||
r = thickness / 2;
|
r = thickness / 2;
|
||||||
|
|
||||||
frags = __frags(r);
|
frags = __nearest_multiple_of_4(__frags(r));
|
||||||
|
half_fa = 180 / frags;
|
||||||
remain = frags % 4;
|
|
||||||
frags_of_4 = (remain / 4) > 0.5 ? frags - remain + 4 : frags - remain;
|
|
||||||
half_fa = 180 / frags_of_4;
|
|
||||||
|
|
||||||
dx = p2[0] - p1[0];
|
dx = p2[0] - p1[0];
|
||||||
dy = p2[1] - p1[1];
|
dy = p2[1] - p1[1];
|
||||||
@@ -35,7 +33,7 @@ module line3d(p1, p2, thickness, p1Style = "CAP_CIRCLE", p2Style = "CAP_CIRCLE")
|
|||||||
translate(p1)
|
translate(p1)
|
||||||
rotate([0, ay, az])
|
rotate([0, ay, az])
|
||||||
linear_extrude(length)
|
linear_extrude(length)
|
||||||
circle(r, $fn = frags_of_4);
|
circle(r, $fn = frags);
|
||||||
}
|
}
|
||||||
|
|
||||||
module capCircle(p) {
|
module capCircle(p) {
|
||||||
@@ -44,13 +42,13 @@ module line3d(p1, p2, thickness, p1Style = "CAP_CIRCLE", p2Style = "CAP_CIRCLE")
|
|||||||
rotate([0, ay, az])
|
rotate([0, ay, az])
|
||||||
translate([0, 0, -w])
|
translate([0, 0, -w])
|
||||||
linear_extrude(w * 2)
|
linear_extrude(w * 2)
|
||||||
circle(r, $fn = frags_of_4);
|
circle(r, $fn = frags);
|
||||||
}
|
}
|
||||||
|
|
||||||
module capSphere(p) {
|
module capSphere(p) {
|
||||||
translate(p)
|
translate(p)
|
||||||
rotate([0, ay, az])
|
rotate([0, ay, az])
|
||||||
sphere(r / cos(half_fa), $fn = frags_of_4);
|
sphere(r / cos(half_fa), $fn = frags);
|
||||||
}
|
}
|
||||||
|
|
||||||
module cap(p, style) {
|
module cap(p, style) {
|
||||||
|
Reference in New Issue
Block a user