discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Making strange objects

JW
Joe Weinpert
Thu, Feb 2, 2023 3:18 AM

The goal is to make a single object from two strange shapes.

Imagine the bottom object being a strange abnormal shape like an odd shaped
pond from a bird's eye point of view.

Now imagine the top object in the same manner but having a completely
different shape.

Keep each of them centered on the X and Y axis and separated on the Z axis.

A single object can be created by wrapping these two top and bottom objects
within hull().

Works fine ... except the shape of the top and bottom of the final object
is not the same as the original objects because hull() uses straight line
perimeters on the original shapes.

What am I missing?

When the final object is "hulled" I would like the top and bottom to match
closely the shapes of the original top and bottom objects.

Should I somehow place the same number of points around each object's
perimeter and use them to hull() both objects?  If so ... how?

Or is there a simpler method?

The goal is to make a single object from two strange shapes. Imagine the bottom object being a strange abnormal shape like an odd shaped pond from a bird's eye point of view. Now imagine the top object in the same manner but having a completely different shape. Keep each of them centered on the X and Y axis and separated on the Z axis. A single object can be created by wrapping these two top and bottom objects within hull(). Works fine ... except the shape of the top and bottom of the final object is not the same as the original objects because hull() uses straight line perimeters on the original shapes. What am I missing? When the final object is "hulled" I would like the top and bottom to match closely the shapes of the original top and bottom objects. Should I somehow place the same number of points around each object's perimeter and use them to hull() both objects? If so ... how? Or is there a simpler method?
DP
David Phillip Oster
Thu, Feb 2, 2023 3:20 AM

see: https://www.instructables.com/Loft-in-OpenSCAD/

On Wed, Feb 1, 2023 at 7:18 PM Joe Weinpert joe.weinpert@gmail.com wrote:

The goal is to make a single object from two strange shapes.

Imagine the bottom object being a strange abnormal shape like an odd
shaped pond from a bird's eye point of view.

Now imagine the top object in the same manner but having a completely
different shape.

Keep each of them centered on the X and Y axis and separated on the Z axis.

A single object can be created by wrapping these two top and bottom
objects within hull().

Works fine ... except the shape of the top and bottom of the final object
is not the same as the original objects because hull() uses straight line
perimeters on the original shapes.

What am I missing?

When the final object is "hulled" I would like the top and bottom to match
closely the shapes of the original top and bottom objects.

Should I somehow place the same number of points around each object's
perimeter and use them to hull() both objects?  If so ... how?

Or is there a simpler method?


OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org

see: https://www.instructables.com/Loft-in-OpenSCAD/ On Wed, Feb 1, 2023 at 7:18 PM Joe Weinpert <joe.weinpert@gmail.com> wrote: > The goal is to make a single object from two strange shapes. > > Imagine the bottom object being a strange abnormal shape like an odd > shaped pond from a bird's eye point of view. > > Now imagine the top object in the same manner but having a completely > different shape. > > Keep each of them centered on the X and Y axis and separated on the Z axis. > > A single object can be created by wrapping these two top and bottom > objects within hull(). > > Works fine ... except the shape of the top and bottom of the final object > is not the same as the original objects because hull() uses straight line > perimeters on the original shapes. > > What am I missing? > > When the final object is "hulled" I would like the top and bottom to match > closely the shapes of the original top and bottom objects. > > Should I somehow place the same number of points around each object's > perimeter and use them to hull() both objects? If so ... how? > > Or is there a simpler method? > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >
AM
Adrian Mariano
Thu, Feb 2, 2023 3:32 AM

Hull is short for "convex hull".  If you start with concave objects they
will be wrapped to become convex.  Maybe not what you want?  If you're
trying to connect two arbitrary objects into a 3d shape that's a difficult
problem that may not have an easy solution, depending on your shapes.
There may be several solutions, all perhaps equally valid.

You might take a look at skin() from BOSL2.

https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-skin

There was just a very long thread on the list about this sort of thing

On Wed, Feb 1, 2023 at 10:18 PM Joe Weinpert joe.weinpert@gmail.com wrote:

The goal is to make a single object from two strange shapes.

Imagine the bottom object being a strange abnormal shape like an odd
shaped pond from a bird's eye point of view.

Now imagine the top object in the same manner but having a completely
different shape.

Keep each of them centered on the X and Y axis and separated on the Z axis.

A single object can be created by wrapping these two top and bottom
objects within hull().

Works fine ... except the shape of the top and bottom of the final object
is not the same as the original objects because hull() uses straight line
perimeters on the original shapes.

What am I missing?

When the final object is "hulled" I would like the top and bottom to match
closely the shapes of the original top and bottom objects.

Should I somehow place the same number of points around each object's
perimeter and use them to hull() both objects?  If so ... how?

Or is there a simpler method?


OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org

Hull is short for "convex hull". If you start with concave objects they will be wrapped to become convex. Maybe not what you want? If you're trying to connect two arbitrary objects into a 3d shape that's a difficult problem that may not have an easy solution, depending on your shapes. There may be several solutions, all perhaps equally valid. You might take a look at skin() from BOSL2. https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-skin There was just a very long thread on the list about this sort of thing On Wed, Feb 1, 2023 at 10:18 PM Joe Weinpert <joe.weinpert@gmail.com> wrote: > The goal is to make a single object from two strange shapes. > > Imagine the bottom object being a strange abnormal shape like an odd > shaped pond from a bird's eye point of view. > > Now imagine the top object in the same manner but having a completely > different shape. > > Keep each of them centered on the X and Y axis and separated on the Z axis. > > A single object can be created by wrapping these two top and bottom > objects within hull(). > > Works fine ... except the shape of the top and bottom of the final object > is not the same as the original objects because hull() uses straight line > perimeters on the original shapes. > > What am I missing? > > When the final object is "hulled" I would like the top and bottom to match > closely the shapes of the original top and bottom objects. > > Should I somehow place the same number of points around each object's > perimeter and use them to hull() both objects? If so ... how? > > Or is there a simpler method? > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >
DP
Dan Perry
Thu, Feb 2, 2023 4:32 AM

Newbie myself here ....  For one of my first OpenSCAD efforts, I combined
hull() and projection() and the original shape to create a hole in a cube()
that fit my shape.

Depending on your shapes you could do something like:
union(){
shape_a;
shape_b;
hull(){
translate([0,0,zcoord of shape_a]) projection() shape_a;
translate([0,0,zcoord of shape_b]) projection() shape_b;
}
}

Dan

On Wed, Feb 1, 2023 at 7:18 PM Joe Weinpert joe.weinpert@gmail.com wrote:

The goal is to make a single object from two strange shapes.

Imagine the bottom object being a strange abnormal shape like an odd
shaped pond from a bird's eye point of view.

Now imagine the top object in the same manner but having a completely
different shape.

Keep each of them centered on the X and Y axis and separated on the Z axis.

A single object can be created by wrapping these two top and bottom
objects within hull().

Works fine ... except the shape of the top and bottom of the final object
is not the same as the original objects because hull() uses straight line
perimeters on the original shapes.

What am I missing?

When the final object is "hulled" I would like the top and bottom to match
closely the shapes of the original top and bottom objects.

Should I somehow place the same number of points around each object's
perimeter and use them to hull() both objects?  If so ... how?

Or is there a simpler method?


OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org

Newbie myself here .... For one of my first OpenSCAD efforts, I combined hull() and projection() and the original shape to create a hole in a cube() that fit my shape. Depending on your shapes you could do something like: union(){ shape_a; shape_b; hull(){ translate([0,0,zcoord of shape_a]) projection() shape_a; translate([0,0,zcoord of shape_b]) projection() shape_b; } } Dan On Wed, Feb 1, 2023 at 7:18 PM Joe Weinpert <joe.weinpert@gmail.com> wrote: > The goal is to make a single object from two strange shapes. > > Imagine the bottom object being a strange abnormal shape like an odd > shaped pond from a bird's eye point of view. > > Now imagine the top object in the same manner but having a completely > different shape. > > Keep each of them centered on the X and Y axis and separated on the Z axis. > > A single object can be created by wrapping these two top and bottom > objects within hull(). > > Works fine ... except the shape of the top and bottom of the final object > is not the same as the original objects because hull() uses straight line > perimeters on the original shapes. > > What am I missing? > > When the final object is "hulled" I would like the top and bottom to match > closely the shapes of the original top and bottom objects. > > Should I somehow place the same number of points around each object's > perimeter and use them to hull() both objects? If so ... how? > > Or is there a simpler method? > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >
DP
David Phillip Oster
Thu, Feb 2, 2023 4:47 AM

thank you, Adrian Mariano, skin() in BOSL2 was just what I needed: I was
making a funnel to pour into a non-convex opening, and skin() gave me a
much nicer blend than hull()

On Wed, Feb 1, 2023 at 7:33 PM Adrian Mariano avm4@cornell.edu wrote:

Hull is short for "convex hull".  If you start with concave objects they
will be wrapped to become convex.  Maybe not what you want?  If you're
trying to connect two arbitrary objects into a 3d shape that's a difficult
problem that may not have an easy solution, depending on your shapes.
There may be several solutions, all perhaps equally valid.

You might take a look at skin() from BOSL2.

https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-skin

There was just a very long thread on the list about this sort of thing

On Wed, Feb 1, 2023 at 10:18 PM Joe Weinpert joe.weinpert@gmail.com
wrote:

The goal is to make a single object from two strange shapes.

Imagine the bottom object being a strange abnormal shape like an odd
shaped pond from a bird's eye point of view.

Now imagine the top object in the same manner but having a completely
different shape.

Keep each of them centered on the X and Y axis and separated on the Z
axis.

A single object can be created by wrapping these two top and bottom
objects within hull().

Works fine ... except the shape of the top and bottom of the final object
is not the same as the original objects because hull() uses straight line
perimeters on the original shapes.

What am I missing?

When the final object is "hulled" I would like the top and bottom to
match closely the shapes of the original top and bottom objects.

Should I somehow place the same number of points around each object's
perimeter and use them to hull() both objects?  If so ... how?

Or is there a simpler method?


OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org


OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org

thank you, Adrian Mariano, skin() in BOSL2 was just what I needed: I was making a funnel to pour into a non-convex opening, and skin() gave me a much nicer blend than hull() On Wed, Feb 1, 2023 at 7:33 PM Adrian Mariano <avm4@cornell.edu> wrote: > Hull is short for "convex hull". If you start with concave objects they > will be wrapped to become convex. Maybe not what you want? If you're > trying to connect two arbitrary objects into a 3d shape that's a difficult > problem that may not have an easy solution, depending on your shapes. > There may be several solutions, all perhaps equally valid. > > You might take a look at skin() from BOSL2. > > https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-skin > > There was just a very long thread on the list about this sort of thing > > On Wed, Feb 1, 2023 at 10:18 PM Joe Weinpert <joe.weinpert@gmail.com> > wrote: > >> The goal is to make a single object from two strange shapes. >> >> Imagine the bottom object being a strange abnormal shape like an odd >> shaped pond from a bird's eye point of view. >> >> Now imagine the top object in the same manner but having a completely >> different shape. >> >> Keep each of them centered on the X and Y axis and separated on the Z >> axis. >> >> A single object can be created by wrapping these two top and bottom >> objects within hull(). >> >> Works fine ... except the shape of the top and bottom of the final object >> is not the same as the original objects because hull() uses straight line >> perimeters on the original shapes. >> >> What am I missing? >> >> When the final object is "hulled" I would like the top and bottom to >> match closely the shapes of the original top and bottom objects. >> >> Should I somehow place the same number of points around each object's >> perimeter and use them to hull() both objects? If so ... how? >> >> Or is there a simpler method? >> _______________________________________________ >> OpenSCAD mailing list >> To unsubscribe send an email to discuss-leave@lists.openscad.org >> > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >
JW
Joe Weinpert
Fri, Feb 3, 2023 6:33 PM

I worked with all the suggestions and decided that skin() was the best
choice.
Attached is an example scad, a pic of its rendering, and another pic via
meshMixer of how the rendered material will be used in a final product.
I can use this for many upcoming carving projects.

Thank you all!

On Wed, Feb 1, 2023 at 11:48 PM David Phillip Oster <
davidphilliposter@gmail.com> wrote:

thank you, Adrian Mariano, skin() in BOSL2 was just what I needed: I was
making a funnel to pour into a non-convex opening, and skin() gave me a
much nicer blend than hull()

On Wed, Feb 1, 2023 at 7:33 PM Adrian Mariano avm4@cornell.edu wrote:

Hull is short for "convex hull".  If you start with concave objects they
will be wrapped to become convex.  Maybe not what you want?  If you're
trying to connect two arbitrary objects into a 3d shape that's a difficult
problem that may not have an easy solution, depending on your shapes.
There may be several solutions, all perhaps equally valid.

You might take a look at skin() from BOSL2.

https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-skin

There was just a very long thread on the list about this sort of thing

On Wed, Feb 1, 2023 at 10:18 PM Joe Weinpert joe.weinpert@gmail.com
wrote:

The goal is to make a single object from two strange shapes.

Imagine the bottom object being a strange abnormal shape like an odd
shaped pond from a bird's eye point of view.

Now imagine the top object in the same manner but having a completely
different shape.

Keep each of them centered on the X and Y axis and separated on the Z
axis.

A single object can be created by wrapping these two top and bottom
objects within hull().

Works fine ... except the shape of the top and bottom of the final
object is not the same as the original objects because hull() uses straight
line perimeters on the original shapes.

What am I missing?

When the final object is "hulled" I would like the top and bottom to
match closely the shapes of the original top and bottom objects.

Should I somehow place the same number of points around each object's
perimeter and use them to hull() both objects?  If so ... how?

Or is there a simpler method?


OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org


OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org


OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org

I worked with all the suggestions and decided that skin() was the best choice. Attached is an example scad, a pic of its rendering, and another pic via meshMixer of how the rendered material will be used in a final product. I can use this for many upcoming carving projects. Thank you all! On Wed, Feb 1, 2023 at 11:48 PM David Phillip Oster < davidphilliposter@gmail.com> wrote: > thank you, Adrian Mariano, skin() in BOSL2 was just what I needed: I was > making a funnel to pour into a non-convex opening, and skin() gave me a > much nicer blend than hull() > > On Wed, Feb 1, 2023 at 7:33 PM Adrian Mariano <avm4@cornell.edu> wrote: > >> Hull is short for "convex hull". If you start with concave objects they >> will be wrapped to become convex. Maybe not what you want? If you're >> trying to connect two arbitrary objects into a 3d shape that's a difficult >> problem that may not have an easy solution, depending on your shapes. >> There may be several solutions, all perhaps equally valid. >> >> You might take a look at skin() from BOSL2. >> >> https://github.com/revarbat/BOSL2/wiki/skin.scad#functionmodule-skin >> >> There was just a very long thread on the list about this sort of thing >> >> On Wed, Feb 1, 2023 at 10:18 PM Joe Weinpert <joe.weinpert@gmail.com> >> wrote: >> >>> The goal is to make a single object from two strange shapes. >>> >>> Imagine the bottom object being a strange abnormal shape like an odd >>> shaped pond from a bird's eye point of view. >>> >>> Now imagine the top object in the same manner but having a completely >>> different shape. >>> >>> Keep each of them centered on the X and Y axis and separated on the Z >>> axis. >>> >>> A single object can be created by wrapping these two top and bottom >>> objects within hull(). >>> >>> Works fine ... except the shape of the top and bottom of the final >>> object is not the same as the original objects because hull() uses straight >>> line perimeters on the original shapes. >>> >>> What am I missing? >>> >>> When the final object is "hulled" I would like the top and bottom to >>> match closely the shapes of the original top and bottom objects. >>> >>> Should I somehow place the same number of points around each object's >>> perimeter and use them to hull() both objects? If so ... how? >>> >>> Or is there a simpler method? >>> _______________________________________________ >>> OpenSCAD mailing list >>> To unsubscribe send an email to discuss-leave@lists.openscad.org >>> >> _______________________________________________ >> OpenSCAD mailing list >> To unsubscribe send an email to discuss-leave@lists.openscad.org >> > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >