discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Re: [OpenSCAD] Weird overcomplication

U
ufomorace
Tue, Aug 25, 2015 6:17 AM

did you see the minkowski sum option.

--
View this message in context: http://forum.openscad.org/Weird-overcomplication-tp13603p13604.html
Sent from the OpenSCAD mailing list archive at Nabble.com.

did you see the minkowski sum option. -- View this message in context: http://forum.openscad.org/Weird-overcomplication-tp13603p13604.html Sent from the OpenSCAD mailing list archive at Nabble.com.
TP
Torsten Paul
Tue, Aug 25, 2015 6:23 PM

For whatever reason, edgeRails3(); is the only one that manages to
chamfer the edges. The other ones look the same (or at least REALLY
similar) when I use # or % before the chamfeuring edges, and then
don't actually work.  edgeRails1(); is the most efficient, so I want
to use it. What's going on?

Cases 1 and 2 can't work as they do a union of two objects like:

+----
|   
+------\

and

/----+
/    |
/------+

which results in a cube again.

One option would be to push the n loop into the difference so only
two base cubes are generated and for each one two cuts are produced:

module edgeRails1() {
for(i = [1,-1]) {
translate([(railDist+(midRailX+edgeX)/2)i,0,(edgeZ+mountZ)/2]) {
difference() {
cube([edgeX,edgeY,edgeZ], center=true); //edge rails
for (n = [1, -1]) {
translate([0,edgeY/2
in,0]) rotate([0,0,30n]) cube([edgeX*2, edgeChamferSize, edgeZ], center=true);
}
}
}
}
}

In the end, that's essentially the same as case 3 (note that the n
loop can be removed from the first for() there too).

ciao,
Torsten.

> For whatever reason, edgeRails3(); is the only one that manages to > chamfer the edges. The other ones look the same (or at least REALLY > similar) when I use # or % before the chamfeuring edges, and then > don't actually work. edgeRails1(); is the most efficient, so I want > to use it. What's going on? > Cases 1 and 2 can't work as they do a union of two objects like: +----\ | \ +------\ and /----+ / | /------+ which results in a cube again. One option would be to push the n loop into the difference so only two base cubes are generated and for each one two cuts are produced: module edgeRails1() { for(i = [1,-1]) { translate([(railDist+(midRailX+edgeX)/2)*i,0,(edgeZ+mountZ)/2]) { difference() { cube([edgeX,edgeY,edgeZ], center=true); //edge rails for (n = [1, -1]) { translate([0,edgeY/2*i*n,0]) rotate([0,0,30*n]) cube([edgeX*2, edgeChamferSize, edgeZ], center=true); } } } } } In the end, that's essentially the same as case 3 (note that the n loop can be removed from the first for() there too). ciao, Torsten.