mirror of
https://github.com/JustinSDK/dotSCAD.git
synced 2025-08-23 23:03:23 +02:00
improved solid sections performance
This commit is contained in:
@@ -14,7 +14,42 @@
|
|||||||
include <__private__/__triangles_radial.scad>;
|
include <__private__/__triangles_radial.scad>;
|
||||||
include <__private__/__triangles_tape.scad>;
|
include <__private__/__triangles_tape.scad>;
|
||||||
|
|
||||||
module polysections(sections, triangles = "RADIAL") {
|
module polysections(sections, triangles) {
|
||||||
|
module solid_sections() {
|
||||||
|
leng_sections = len(sections);
|
||||||
|
leng_pts_section = len(sections[0]);
|
||||||
|
|
||||||
|
side_idxes = [
|
||||||
|
for(j = [0:leng_pts_section:(leng_sections - 2) * leng_pts_section])
|
||||||
|
for(i = [0:leng_pts_section - 1])
|
||||||
|
[
|
||||||
|
j + i,
|
||||||
|
j + (i + 1) % leng_pts_section,
|
||||||
|
j + (i + 1) % leng_pts_section + leng_pts_section ,
|
||||||
|
j + i + leng_pts_section
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
first_idxes = [for(i = [0:leng_pts_section - 1]) i];
|
||||||
|
|
||||||
|
last_idxes = [
|
||||||
|
for(i = [0:leng_pts_section - 1])
|
||||||
|
i + leng_pts_section * (leng_sections - 1)
|
||||||
|
];
|
||||||
|
|
||||||
|
v_pts = [
|
||||||
|
for(section = sections)
|
||||||
|
for(pt = section)
|
||||||
|
pt
|
||||||
|
];
|
||||||
|
|
||||||
|
polyhedron(
|
||||||
|
v_pts,
|
||||||
|
concat([first_idxes], side_idxes, [last_idxes])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
module triangles_defined_sections() {
|
||||||
module tri_sections(tri1, tri2) {
|
module tri_sections(tri1, tri2) {
|
||||||
polyhedron(
|
polyhedron(
|
||||||
points = concat(tri1, tri2),
|
points = concat(tri1, tri2),
|
||||||
@@ -77,3 +112,11 @@ module polysections(sections, triangles = "RADIAL") {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if(triangles == undef) {
|
||||||
|
solid_sections();
|
||||||
|
} else {
|
||||||
|
triangles_defined_sections();
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user