This could be interesting...

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

This could be interesting...

Dan Zuras 3D


        Andrew,

        Your suggestion is interesting.  Indeed, my original code called
        for a 2D shape that coincided with the Y-axis & was rotate_extruded
        from there.  Marius said that the bug I triggered involved just
        that problem.  So I introduced the overlap (I believe) on his
        suggestion & here we are today.  I'm not quite sure I completely
        understand your code snippet but it may be a bit complex for my
        actual application.

        You see, the code snippets I have been showing here are greatly
        simplified from the actual code which involves differences with
        many circles.  I simplified it on the grounds that the simple
        code still exhibits the problem & is easier to read.

        However, I fear if I were to try your approach it would involve
        a great many ANDs, ORs, & differences, each of which would be
        far more involved than I had hoped.

        Still, your approach looks interesting.  I will cogitate on it
        to see if I can solve the original problem in a similar way.

        Thanks for the suggestion,


                                   Dan


> From: [hidden email]
> Subject: OpenSCAD Digest, Vol 24, Issue 4
> To: [hidden email]
> Date: Wed, 02 Nov 2011 16:18:15 +0100
>
> . . .
>
> Today's Topics:
>
>    1. . . .
>    2. . . .
>    3. . . .
>    4. . . .
>    5. . . .
>    6. . . .
>    7. Re: Still lost on my journey... (Andrew Plumb)
>    8. . . .
>    9. . . .
>
>
> ----------------------------------------------------------------------
>
> . . .
>
> Message: 7
> Date: Wed, 2 Nov 2011 10:51:55 -0400
> From: Andrew Plumb <[hidden email]>
> Subject: Re: [OpenSCAD] Still lost on my journey...
> To: [hidden email]
> Message-ID: <[hidden email]>
> Content-Type: text/plain; charset=us-ascii
>
> Hey Dan,
>
> You can work around the problem by intersection-masking the two parts of the 2D shape at the y-axis and unioning the rotate_extruded parts.  Here's how I'd tackle it with an "operator" module:
>
> --snip--
>
> module unitCircle() circle(1,$fn=400);
> module unitSquare() square([1,1],center=true);
>
> module rotate_extrude_masked(mask_window_l=4,convexity=1,fn=5) {
>   union() for(i=[0:$children-1]) {
>     rotate_extrude(convexity=convexity,$fn=fn) render() intersection() {
>       child(i);
>       translate([0,-mask_window_l/2]) square([mask_window_l,mask_window_l],center=false);
>     }
>     rotate_extrude(convexity=convexity,$fn=fn) render() intersection() {
>       child(i);
>       mirror([0,1]) translate([0,-mask_window_l/2]) square([mask_window_l,mask_window_l],center=false);
>     }
>   }
> }
>
> translate([0,0,25]) scale([25,25,25*sqrt(2)])
>   rotate_extrude_masked(mask_window_l=4,convexity=1,fn=5)
>     translate([1/2,0]) scale([2,sqrt(2)]) unitSquare();
>
> --end-snip--
>
> Just set the "mask_window_l" variable to be "sufficiently large" to enclose all your pre-extruded 2D shapes.
>
> Aside: Out of habit, I limit my 2D operations (like translate(), scale(), rotate(), etc) to 2D so I can keep track of when I'm in 2D vs 3D operation space.
>
> Andrew.
>

Reply | Threaded
Open this post in threaded view
|

Re: This could be interesting...

nophead
Can you start with an arbitrary large cube and create each facet by differencing another large cube positioned to slice it off?

On 2 November 2011 15:44, Dan Zuras 3D <[hidden email]> wrote:


       Andrew,

       Your suggestion is interesting.  Indeed, my original code called
       for a 2D shape that coincided with the Y-axis & was rotate_extruded
       from there.  Marius said that the bug I triggered involved just
       that problem.  So I introduced the overlap (I believe) on his
       suggestion & here we are today.  I'm not quite sure I completely
       understand your code snippet but it may be a bit complex for my
       actual application.

       You see, the code snippets I have been showing here are greatly
       simplified from the actual code which involves differences with
       many circles.  I simplified it on the grounds that the simple
       code still exhibits the problem & is easier to read.

       However, I fear if I were to try your approach it would involve
       a great many ANDs, ORs, & differences, each of which would be
       far more involved than I had hoped.

       Still, your approach looks interesting.  I will cogitate on it
       to see if I can solve the original problem in a similar way.

       Thanks for the suggestion,


                                  Dan


> From: [hidden email]
> Subject: OpenSCAD Digest, Vol 24, Issue 4
> To: [hidden email]
> Date: Wed, 02 Nov 2011 16:18:15 +0100
>
> . . .
>
> Today's Topics:
>
>    1. . . .
>    2. . . .
>    3. . . .
>    4. . . .
>    5. . . .
>    6. . . .
>    7. Re: Still lost on my journey... (Andrew Plumb)
>    8. . . .
>    9. . . .
>
>
> ----------------------------------------------------------------------
>
> . . .
>
> Message: 7
> Date: Wed, 2 Nov 2011 10:51:55 -0400
> From: Andrew Plumb <[hidden email]>
> Subject: Re: [OpenSCAD] Still lost on my journey...
> To: [hidden email]
> Message-ID: <[hidden email]>
> Content-Type: text/plain; charset=us-ascii
>
> Hey Dan,
>
> You can work around the problem by intersection-masking the two parts of the 2D shape at the y-axis and unioning the rotate_extruded parts.  Here's how I'd tackle it with an "operator" module:
>
> --snip--
>
> module unitCircle() circle(1,$fn=400);
> module unitSquare() square([1,1],center=true);
>
> module rotate_extrude_masked(mask_window_l=4,convexity=1,fn=5) {
>   union() for(i=[0:$children-1]) {
>     rotate_extrude(convexity=convexity,$fn=fn) render() intersection() {
>       child(i);
>       translate([0,-mask_window_l/2]) square([mask_window_l,mask_window_l],center=false);
>     }
>     rotate_extrude(convexity=convexity,$fn=fn) render() intersection() {
>       child(i);
>       mirror([0,1]) translate([0,-mask_window_l/2]) square([mask_window_l,mask_window_l],center=false);
>     }
>   }
> }
>
> translate([0,0,25]) scale([25,25,25*sqrt(2)])
>   rotate_extrude_masked(mask_window_l=4,convexity=1,fn=5)
>     translate([1/2,0]) scale([2,sqrt(2)]) unitSquare();
>
> --end-snip--
>
> Just set the "mask_window_l" variable to be "sufficiently large" to enclose all your pre-extruded 2D shapes.
>
> Aside: Out of habit, I limit my 2D operations (like translate(), scale(), rotate(), etc) to 2D so I can keep track of when I'm in 2D vs 3D operation space.
>
> Andrew.
>
_______________________________________________
OpenSCAD mailing list
[hidden email]
http://rocklinux.net/mailman/listinfo/openscad

Reply | Threaded
Open this post in threaded view
|

Re: This could be interesting...

Dan Zuras 3D
> Date: Wed, 2 Nov 2011 15:52:35 +0000
> Subject: Re: [OpenSCAD] This could be interesting...
> From: nop head <[hidden email]>
> To: Dan Zuras 3D <[hidden email]>, [hidden email]
>
>
> Can you start with an arbitrary large cube and create each facet by
> differencing another large cube positioned to slice it off?
>

        No.  But I might be able to start off with a large sphere
        (of the correct number of facets) & bite off chunks made
        from tori (of the same number of facets) each of which
        has a circular cross section.  That way all the hard stuff
        takes place in 3D.  I can't do it right now as the rest
        of my life is interfering.  But that doesn't stop me from
        cogitating on the matter. :-)  I'll let all of you know
        what happens.  Thanks.  - Dan