[OpenSCAD] avoiding assertion violation

nop head nop.head at gmail.com
Wed Jul 17 12:19:49 EDT 2019


You don't get a shell, you get a 3D solid who's cross section is the 2D
shape. The problem is if that 2D shape only touches the Y axis at a single
point then the 3D shape has a pinch point there where it has zero thickness
in the Z direction.

If you want to make a shell then the 2D shape should be the cross section
of a shell and yes that is faster made in 2D before the extrude than in 3D
with a differences after.

On Wed, 17 Jul 2019 at 16:58, Dan Shriver <tabbydan at gmail.com> wrote:

> Ok, I guess I made multiple errors.
> For some reason I assumed that (if I input a curve or a line) I'd get the
> whole volume from the y axis out to the points.
> Obviously, what I actually get is just a shell of zero thickness for that
> curve or line.
>
> Is it better for me to get a full volume by adding one point to the
> polygon [0.0001, 0] and then if I want a non-zero thickness shell doing
> subtract with an offset of the solid.  Or is it better for me to make the
> polygon with twice as many points (each point has a corresponding double
> that is offset by the thickness)?  I ask because elsewhere it seemed like
> difference() {} might be something one wants to avoid in OpenSCAD for
> performance reasons.
>
>
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=icon> Virus-free.
> www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail&utm_term=link>
> <#m_2910737154312055855_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>
> On Wed, Jul 17, 2019 at 11:19 AM Parkinbot <rudolf at digitaldocument.de>
> wrote:
>
>> So your problem is clear. You try to rotate around a single vertex and
>> get a
>> singularity.
>>
>> The following modification avoids this problem by introducing another
>> point
>> on the y axis and creating an edge on the y axis.
>>
>> function coshPolygon(multiplier, power, domain, flip, steps) =
>>     let (flipValue = flip ? cosh( ( multiplier *(pow(domain,power))) ) :
>> 0)
>>     let (result = [for(i = [0.0001: (domain / steps) : domain]) [i,
>> flipValue - cosh(  ( multiplier *(pow(i,power)))  )] ])
>>         concat(result, [[0, result[len(result)-1][1]]]);
>>
>>
>>
>>
>> --
>> Sent from: http://forum.openscad.org/
>>
>> _______________________________________________
>> OpenSCAD mailing list
>> Discuss at lists.openscad.org
>> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>>
> _______________________________________________
> OpenSCAD mailing list
> Discuss at lists.openscad.org
> http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscad.org/pipermail/discuss_lists.openscad.org/attachments/20190717/d721621b/attachment.html>


More information about the Discuss mailing list