NM
Nick Moore
Wed, Jul 19, 2023 12:21 PM
G'day all,
I know how to expand a 3D structure a little bit with minkowski(), but what if I want to shrink it a little bit?
What I'd really like is the 3D version of the 2D offset() function.
It'd be handy for 3D printing because the shrunk version would give you an inner core, and by subtracting the shrunk version from the original you'd end up with a contiguous hollow 'shell' (like, uh, shell in AutoCAD)
It seems like this shouldn't be too hard with NEF polyhedra, but ... in that case it seems weird that there isn't some CGAL function to do this already?
Do I just not know the right name for this operation? Is it worth implementing? What am I missing?
-----Nick
G'day all,
I know how to expand a 3D structure a little bit with minkowski(), but what if I want to shrink it a little bit?
What I'd really like is the 3D version of the 2D offset() function.
It'd be handy for 3D printing because the shrunk version would give you an inner core, and by subtracting the shrunk version from the original you'd end up with a contiguous hollow 'shell' (like, uh, shell in AutoCAD)
It seems like this shouldn't be *too* hard with NEF polyhedra, but ... in that case it seems weird that there isn't some CGAL function to do this already?
Do I just not know the right name for this operation? Is it worth implementing? What am I missing?
-----Nick
NM
Nick Moore
Wed, Jul 19, 2023 12:42 PM
Apologies, I'd had a look for issues, but somehow I'd missed PR #4516 ...
which looks like exactly what I was after ... I'll give it a go!
-----Nick
Apologies, I'd had a look for issues, but somehow I'd missed PR #4516 ...
which looks like exactly what I was after ... I'll give it a go!
-----Nick
GH
gene heskett
Wed, Jul 19, 2023 1:26 PM
On 7/19/23 08:22, Nick Moore wrote:
G'day all,
I know how to expand a 3D structure a little bit with minkowski(), but what if I want to shrink it a little bit?
What I'd really like is the 3D version of the 2D offset() function.
It'd be handy for 3D printing because the shrunk version would give you an inner core, and by subtracting the shrunk version from the original you'd end up with a contiguous hollow 'shell' (like, uh, shell in AutoCAD)
It seems like this shouldn't be too hard with NEF polyhedra, but ... in that case it seems weird that there isn't some CGAL function to do this already?
Do I just not know the right name for this operation? Is it worth implementing? What am I missing?
-----Nick
You s/b able to put the minkowski() as the 2nd or later line in a
difference construct, with inside curves the result. You should be able
to use a minkowski() as the outside and the inside.
Cheers, Gene Heskett.
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author, 1940)
If we desire respect for the law, we must first make the law respectable.
On 7/19/23 08:22, Nick Moore wrote:
> G'day all,
>
> I know how to expand a 3D structure a little bit with minkowski(), but what if I want to shrink it a little bit?
> What I'd really like is the 3D version of the 2D offset() function.
>
> It'd be handy for 3D printing because the shrunk version would give you an inner core, and by subtracting the shrunk version from the original you'd end up with a contiguous hollow 'shell' (like, uh, shell in AutoCAD)
> It seems like this shouldn't be *too* hard with NEF polyhedra, but ... in that case it seems weird that there isn't some CGAL function to do this already?
>
> Do I just not know the right name for this operation? Is it worth implementing? What am I missing?
>
> -----Nick
You s/b able to put the minkowski() as the 2nd or later line in a
difference construct, with inside curves the result. You should be able
to use a minkowski() as the outside and the inside.
Cheers, Gene Heskett.
--
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author, 1940)
If we desire respect for the law, we must first make the law respectable.
- Louis D. Brandeis
Genes Web page <http://geneslinuxbox.net:6309/>
NM
Nick Moore
Wed, Jul 19, 2023 10:22 PM
On Wed, 19 Jul 2023, at 23:26, gene heskett wrote:
You s/b able to put the minkowski() as the 2nd or later line in a
difference construct, with inside curves the result. You should be able
to use a minkowski() as the outside and the inside.
Oh yeah, I tried that, but it mostly just resulted in a lot of hot air from the CPU ;-)
Perhaps it will work if we get GPU support in OpenSCAD :-) :-) :-)
I'm trying out the https://github.com/gsohler/openscad/tree/offset branch to
see how that goes ...
-----N
On Wed, 19 Jul 2023, at 23:26, gene heskett wrote:
>
> You s/b able to put the minkowski() as the 2nd or later line in a
> difference construct, with inside curves the result. You should be able
> to use a minkowski() as the outside and the inside.
Oh yeah, I tried that, but it mostly just resulted in a lot of hot air from the CPU ;-)
Perhaps it will work if we get GPU support in OpenSCAD :-) :-) :-)
I'm trying out the https://github.com/gsohler/openscad/tree/offset branch to
see how that goes ...
-----N
GH
gene heskett
Thu, Jul 20, 2023 3:19 AM
On 7/19/23 18:23, Nick Moore wrote:
On Wed, 19 Jul 2023, at 23:26, gene heskett wrote:
You s/b able to put the minkowski() as the 2nd or later line in a
difference construct, with inside curves the result. You should be able
to use a minkowski() as the outside and the inside.
Oh yeah, I tried that, but it mostly just resulted in a lot of hot air from the CPU ;-)
Perhaps it will work if we get GPU support in OpenSCAD :-) :-) :-)
In that case it makes sense to break your code up into smaller
self-contained modules which then are cached when called again. By
careful organization you can usually cut execution time by 90% or more.
Cheers, Gene Heskett.
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author, 1940)
If we desire respect for the law, we must first make the law respectable.
On 7/19/23 18:23, Nick Moore wrote:
> On Wed, 19 Jul 2023, at 23:26, gene heskett wrote:
>>
>> You s/b able to put the minkowski() as the 2nd or later line in a
>> difference construct, with inside curves the result. You should be able
>> to use a minkowski() as the outside and the inside.
>
> Oh yeah, I tried that, but it mostly just resulted in a lot of hot air from the CPU ;-)
> Perhaps it will work if we get GPU support in OpenSCAD :-) :-) :-)
>
In that case it makes sense to break your code up into smaller
self-contained modules which then are cached when called again. By
careful organization you can usually cut execution time by 90% or more.
Cheers, Gene Heskett.
--
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author, 1940)
If we desire respect for the law, we must first make the law respectable.
- Louis D. Brandeis
Genes Web page <http://geneslinuxbox.net:6309/>
AM
Adrian Mariano
Thu, Jul 20, 2023 10:32 AM
Gene, don't offer false promises. It's very unlikely that "careful
organization" is going to make minkowski 10 times faster. And if he's
running minkowski on the whole model he can't break it into subparts unless
those parts are disjoint, which is presumably not the case. Presumably a
completely different approach is necessary to model his object, but I never
saw anything about what the object is to be able to comment.
On Wed, Jul 19, 2023 at 11:20 PM gene heskett gheskett@shentel.net wrote:
On 7/19/23 18:23, Nick Moore wrote:
On Wed, 19 Jul 2023, at 23:26, gene heskett wrote:
You s/b able to put the minkowski() as the 2nd or later line in a
difference construct, with inside curves the result. You should be able
to use a minkowski() as the outside and the inside.
Oh yeah, I tried that, but it mostly just resulted in a lot of hot air
Perhaps it will work if we get GPU support in OpenSCAD :-) :-) :-)
In that case it makes sense to break your code up into smaller
self-contained modules which then are cached when called again. By
careful organization you can usually cut execution time by 90% or more.
Cheers, Gene Heskett.
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author, 1940)
If we desire respect for the law, we must first make the law respectable.
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
Gene, don't offer false promises. It's very unlikely that "careful
organization" is going to make minkowski 10 times faster. And if he's
running minkowski on the whole model he can't break it into subparts unless
those parts are disjoint, which is presumably not the case. Presumably a
completely different approach is necessary to model his object, but I never
saw anything about what the object is to be able to comment.
On Wed, Jul 19, 2023 at 11:20 PM gene heskett <gheskett@shentel.net> wrote:
> On 7/19/23 18:23, Nick Moore wrote:
> > On Wed, 19 Jul 2023, at 23:26, gene heskett wrote:
> >>
> >> You s/b able to put the minkowski() as the 2nd or later line in a
> >> difference construct, with inside curves the result. You should be able
> >> to use a minkowski() as the outside and the inside.
> >
> > Oh yeah, I tried that, but it mostly just resulted in a lot of hot air
> from the CPU ;-)
> > Perhaps it will work if we get GPU support in OpenSCAD :-) :-) :-)
> >
> In that case it makes sense to break your code up into smaller
> self-contained modules which then are cached when called again. By
> careful organization you can usually cut execution time by 90% or more.
>
> Cheers, Gene Heskett.
> --
> "There are four boxes to be used in defense of liberty:
> soap, ballot, jury, and ammo. Please use in that order."
> -Ed Howdershelt (Author, 1940)
> If we desire respect for the law, we must first make the law respectable.
> - Louis D. Brandeis
> Genes Web page <http://geneslinuxbox.net:6309/>
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
>
GH
gene heskett
Thu, Jul 20, 2023 4:29 PM
On 7/20/23 06:33, Adrian Mariano wrote:
Gene, don't offer false promises. It's very unlikely that "careful
organization" is going to make minkowski 10 times faster. And if he's
running minkowski on the whole model he can't break it into subparts unless
those parts are disjoint, which is presumably not the case. Presumably a
completely different approach is necessary to model his object, but I never
saw anything about what the object is to be able to comment.
Which matches my experience with minkowski, its watching grass grow
slow. I was letting my imagination out o play w/o a chaperone so I've
only used it to make something both purty and easy on the hand gripping
it. Not to make the part rounded as a general rule. Some of my stuff is
complex enough to be several minutes for an F6 render, and into tomorrow
for an F5. I'm carving a buttress thread, 2 start, in a 2x2x22 inch
stick of hard maple, then doing the nut by duping the bolt in openscad
but a nozzle oversize, and then subtracting the bolt from a block to
make the half nut, which I then print to fit the individual stick.
And because I'm working in PETG, I've a house & back porch full of
printers that PETG temps have destroyed in short order but am in the
process of rebuilding 3 of them with better, faster stuff, making much
of it with OpenSCAD. An Ender 5+ is getting a cf tube for its X axis,
with a 9mm linear bearing on both the top and bottom of that 20mm square
tube, torsional rigidity being the driving thought. Not done with the
attached png as its not yet grown a mount for an orbiter v2 ejector on
top of the hotend, which will be an E3V6 clone in volcano flavor with a
70 watt heater. Waiting on parts to fill it before I print the final
version.
The smaller, about 8mm hole is for a prox switch for z home and bed mesh
surveys, cooled by the hotend fan and closer to the nozzle than any I've
seen yet. That distance translates to a piece of the bed you can't
survey for bed leveling mesh data. The problem is the heat radiated
from the hot block so it needs active cooling it doesn't get in any
other design I've seen yet. Will it work? DIIK, but I have to try.
There is a certain ring of truth to 3d printers being a black hole you
throw money into.
Take care & stay well, Adrian.
Cheers, Gene Heskett.
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author, 1940)
If we desire respect for the law, we must first make the law respectable.
On 7/20/23 06:33, Adrian Mariano wrote:
> Gene, don't offer false promises. It's very unlikely that "careful
> organization" is going to make minkowski 10 times faster. And if he's
> running minkowski on the whole model he can't break it into subparts unless
> those parts are disjoint, which is presumably not the case. Presumably a
> completely different approach is necessary to model his object, but I never
> saw anything about what the object is to be able to comment.
>
Which matches my experience with minkowski, its watching grass grow
slow. I was letting my imagination out o play w/o a chaperone so I've
only used it to make something both purty and easy on the hand gripping
it. Not to make the part rounded as a general rule. Some of my stuff is
complex enough to be several minutes for an F6 render, and into tomorrow
for an F5. I'm carving a buttress thread, 2 start, in a 2x2x22 inch
stick of hard maple, then doing the nut by duping the bolt in openscad
but a nozzle oversize, and then subtracting the bolt from a block to
make the half nut, which I then print to fit the individual stick.
And because I'm working in PETG, I've a house & back porch full of
printers that PETG temps have destroyed in short order but am in the
process of rebuilding 3 of them with better, faster stuff, making much
of it with OpenSCAD. An Ender 5+ is getting a cf tube for its X axis,
with a 9mm linear bearing on both the top and bottom of that 20mm square
tube, torsional rigidity being the driving thought. Not done with the
attached png as its not yet grown a mount for an orbiter v2 ejector on
top of the hotend, which will be an E3V6 clone in volcano flavor with a
70 watt heater. Waiting on parts to fill it before I print the final
version.
The smaller, about 8mm hole is for a prox switch for z home and bed mesh
surveys, cooled by the hotend fan and closer to the nozzle than any I've
seen yet. That distance translates to a piece of the bed you can't
survey for bed leveling mesh data. The problem is the heat radiated
from the hot block so it needs active cooling it doesn't get in any
other design I've seen yet. Will it work? DIIK, but I have to try.
There is a certain ring of truth to 3d printers being a black hole you
throw money into.
Take care & stay well, Adrian.
Cheers, Gene Heskett.
--
"There are four boxes to be used in defense of liberty:
soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author, 1940)
If we desire respect for the law, we must first make the law respectable.
- Louis D. Brandeis
Genes Web page <http://geneslinuxbox.net:6309/>