Creating 3D plywood statues from a model

Creating 3D plywood statues from a model

dongillett
Enthusiast Enthusiast
4,581 Views
35 Replies
Message 1 of 36

Creating 3D plywood statues from a model

dongillett
Enthusiast
Enthusiast

I'm trying to create a 3D plywood statue from a model where the pieces are offset sheets of plywood that fit together much like a 3D puzzle (see image below).  I've got a good start on this (thanks Jesse and Matt).  My problem comes in trying to create tool paths for the pieces.  I call the array of vertical sheets the ribs... and the pieces that stretch down the middle the stringers.  I created the ribs and the stringers (1 stringer in this instance) by creating a pattern of boards and then I do a combine/cut operation against the model.  I then split a copy of the stringer in half so I have a bottom half of the stringer to do a combine/cut opperation against the ribs.  This puts a notch in the bottom half of the ribs.  I then combine/cut the ribs with the notches against the stringer which puts an opposing notch in the stringer to mate with the ribs.  My problem comes in that the ribs and stringers have 3D edges on them as a result of the combine/cut againt the model.  At first I thought this was cool as it added more shape but then as I layed the parts out and tried to make a tool path I realized I didn't have a clean contour to select for a 2D cutout.  I don't want to get into a long running 3D carving of the edge which would be difficult as some time it is overhand and sometime it is underhang.  So the question is when and how should a square up the sides of the ribs.  I tried to extrude my parts out through another sheet of plywood.  That kind of worked but I think for the notching process to be correct I really need to square up the sides before combine/cut of the ribs and stringers.  Is there an operation which I can square up the profiles in one dimension or should I be switching to contours of the model earlier in my process?

 

.HorseStatue.png

0 Likes
4,582 Views
35 Replies
Replies (35)
Message 2 of 36

Anonymous
Not applicable

Hey again, probably the easiest approach I would take is to define a sketch onto a face of each of your boards, after you've got the notches you want in them.  After defining each sketch onto a board face, you can simply just finish sketch.  This is because you'll notice when turning off visibility of the board body, is just the simple act of defining a sketch on a body face will automatically cause the edge/outline of that face to be projected into the sketch.  So then when going to CAM operations, you can select this outline as the machining boundary, the contour or trace path, etc. 

Jesse

Message 3 of 36

Anonymous
Not applicable

By the way if you have issues how to use sketch curves in CAM operations, there are two great CAM forums:

 

http://forums.autodesk.com/t5/computer-aided-machining-cam/bd-p/2070

 

https://camforum.autodesk.com/

 

Jesse

 

 

0 Likes
Message 4 of 36

odolyte
Advocate
Advocate

Do you know : http://www.123dapp.com/make

 

It could simplify your process a lot.

Moebius Factory
Message 5 of 36

Anonymous
Not applicable

That 123D app is definitely interesting, not sure the process involved in generating milling tool paths with that.

 

I was also just thinking, would try 2D CAM operations in Fusion 360 on the boards, as is, in your model there Don.  2D operations may very well ignore the 3D aspect to the board edges, and perhaps just treat them as straight edges in some fashion. 

 

Jesse

0 Likes
Message 6 of 36

dongillett
Enthusiast
Enthusiast

123D Make is pretty cool.  Thanks for pointing that out.  I had used some of the other 123D apps in the past and this is the first time I've seen this one.  I would still want to be able to master the techniques in Fusion as I still want to incorporate this technique in more projects that will require the richer CAD elements, but this is great for simple statues like this horse I'm trying to do.  I ran the horse through it and got pretty good results after I found out you could slide the ribs around manually.  Now... how about generating GCode?  I can export as STL but then I lose all the work it did for me in layout.  I can also export as DXF but when I import that into Fusion it is grinding to a halt.  I'm assuming it should just give me a sketch and then I can do 2D operations on that.

 

Jesse, yes... I think using sketches in my original approach is going to help things.  When I first tried doing 2D cut operations on these parts I had difficulty picking a contour out of the 3D edge that would work.  I think that would be easier to do as a sketch first. The other problem is that the slots are made (via combine/cut) against edges that aren't perpendicular so if you do a 2D cut against one edge the slot gets larger and if you take the opposite edge the slot gets smaller.  So depending on which contours you take for non perpendicular edges they may not mate up correctly with the other parts.  If I model with perpedicular edges this problem goes away.  What you did make me realize is that I may be better off taking contours right off of the model as the first step (intersect the model with a series of parallel sketch planes to make curves rather than comine/cut against a series of boards).  

This will have a few benefits.

  • I can just use those sketches as the 2D tool path
  • I can extrude them to form a model of the ribs with perpendicular edges (like it will be cut in 2D) to use as an accurate notching template for the stringers.
  • The bodies for the boards that are formed by the combine/cut method seem to have terrible performance in Fusion.  I think that is because they get tons of little faces from the model.  I tried the technique of interesecting the model with a sketch and then extruding that and it produces a much better perfoming body for the ribs.  With all of the those bodies from the combine/cut method loading my project was getting rediculously long.
Message 7 of 36

Anonymous
Not applicable

Doing Intersect in series of sketches is a great idea.  It's kind of funny, but did something similar for multiprofile Tspline loft, as shown on this thread:

 

http://forums.autodesk.com/t5/design-and-documentation/foot-insole-modelling/m-p/5715117#M27775

 

And actually there's an idea to have this done automatically, because it's so powerful:

 

http://forums.autodesk.com/t5/fusion-360-ideastation-request-a/cross-section-curves/idi-p/5751250

 

Jesse

0 Likes
Message 8 of 36

dongillett
Enthusiast
Enthusiast

That's really a great thread.  Very relavant... thanks.

 

I feel like that whole process could probably get automated with a script. I don't know the maturity of the Fusion API but I briefly looked at it to import some curve data that I obtained using a probe on my CNC router table.  One of the built in samples met my needs so I didn't dig in deep enough to be proficient yet.  

 

For both of these problems creating repeating sketches is the first step.  I couldn't find a way to use the Create/Pattern/PatternOnPath command to create repeating planes or sketches (only repeating bodies)... but seams like a script could do that.  Then hopefully there is an API to trigger the command to create the intersection curve with mesh body.  Creating a spline using control points from that curve seems straight forward.

0 Likes
Message 9 of 36

daniel_lyall
Mentor
Mentor

try running it through autocad360 first you have free access to it, then you can save it out from there in a Autocad format it works ok just tested it.


Win10 pro | 16 GB ram | 4 GB graphics Quadro K2200 | Intel(R) 8Xeon(R) CPU E5-1620 v3 @ 3.50GHz 3.50 GHz

Daniel Lyall
The Big Boss
Mach3 User
My Websight, Daniels Wheelchair Customisations.
Facebook | Twitter | LinkedIn

0 Likes
Message 10 of 36

odolyte
Advocate
Advocate

@dongillett : I mentioned 123D Make, because it generates path to be milled or cut with a laser cutter.

 

DXF can be easily transformed to GCODE (the difficult part is to slice the model with the good parameters to achieve what you want, and that 123D Make can make it for you. I use it a lot to build small models for kids)) :

https://www.youtube.com/watch?v=RFBE2RuNCD8

http://opensourceecology.org/wiki/DXF_to_G-code_Conversion_Tutorial

 

Hope this will do 😉

 

Have fun !

Moebius Factory
Message 11 of 36

daniel_lyall
Mentor
Mentor

do it through 123D make, what gives you the Assembly sheet, and drawing if Fusion does not like it run it through autocad360, I had to do it my self for a .dxf fusion did not like. it work in fusion after I saved it as a autodesk dxf, then you have everything layed out, then do a press pull to material thickness (what you set in 123D make what makes the slot`s the correct size the important bit) then you can do your chamfur`s where you wont them and anything else.

 

then cam done boom.

 

or write a script to do it ever or 

 

Batman rules


Win10 pro | 16 GB ram | 4 GB graphics Quadro K2200 | Intel(R) 8Xeon(R) CPU E5-1620 v3 @ 3.50GHz 3.50 GHz

Daniel Lyall
The Big Boss
Mach3 User
My Websight, Daniels Wheelchair Customisations.
Facebook | Twitter | LinkedIn

Message 12 of 36

Anonymous
Not applicable

Yeah, successfully creating a script to make those cross section sketches would be amazing, especially for fitting Tspline meshes!   As part of that I know in the next upcoming Fusion 360 release patterning components will be possible, which should allow patterning of a sketch in a component.  As for getting the Intersect data from each sketch to auto create splines from, that sounds pretty tricky.  I know each sketch has option for Save as DXF, but beyond that it's getting way beyond my pay grade 😉

Jesse

 

 

0 Likes
Message 13 of 36

Anonymous
Not applicable

That sounds like a great idea Daniel.  Will be interesting to use that program and follow your workflow for pretty complex and awesome wood sculptures and what not.  Sounds like you have done some interesting stuff with it already.

Jesse

0 Likes
Message 14 of 36

daniel_lyall
Mentor
Mentor

just once last night to see if it worked for the 123D Make, .dxf through autocad 360 the other day just playing to get a .dxf to work I should do a rightup and a screen cast


Win10 pro | 16 GB ram | 4 GB graphics Quadro K2200 | Intel(R) 8Xeon(R) CPU E5-1620 v3 @ 3.50GHz 3.50 GHz

Daniel Lyall
The Big Boss
Mach3 User
My Websight, Daniels Wheelchair Customisations.
Facebook | Twitter | LinkedIn

Message 15 of 36

dongillett
Enthusiast
Enthusiast

A screencast would be great for showing how to get the dxf into Fusion.  I downloaded Autocad360 and can't figure out how to import and export a dxf file.  If I open the dxf file directly (from windows explorer | open with Autocad360) then I don't see how to export or even save it outside of autodesk online storage.  If I start a new drawing I see and export button but can't import the original dxf.  Thanks for any help you can offer on this.  Would be nice if Fusion just handled the import of this natively but would love a workaround.

0 Likes
Message 16 of 36

daniel_lyall
Mentor
Mentor

ill see what I can do latter 


Win10 pro | 16 GB ram | 4 GB graphics Quadro K2200 | Intel(R) 8Xeon(R) CPU E5-1620 v3 @ 3.50GHz 3.50 GHz

Daniel Lyall
The Big Boss
Mach3 User
My Websight, Daniels Wheelchair Customisations.
Facebook | Twitter | LinkedIn

0 Likes
Message 17 of 36

dongillett
Enthusiast
Enthusiast

Jesse,

I'm new to the Fusion API's but dug in and got pretty good results.  I made an extension which lets you select a Body and a Sketch.  It intersects the Body with the Sketch which creates a series of SketchLine's.  I then walk all of the SketchLines and sequence them (enpoints head to tail... unfortuantely the list didn't come sorted) and create a Spline with all of those points.  I can use this for the foundation of something which slices a model or it could be used to automate the process you where doing in the other thread.

 

I need to clean things up but thought I'd share.  The spline curve doesn't close off and it probably doesn't work for non-closed curves but shouldn't be too hard to clean up and generalize.

 

IntersectionToSpline.png

 

function IntersectSketchTool() {

    this.commandId = "dftIntersectSketchTool";
    this.commandName = "Intersect Sketch Tool";
    this.commandDescription = "Creates a curve at the intersection of a body with a sketch plane.";
    
    this.onCommandCreated = function(args) {
        try {
            var command = args.command;

            // Build up the Input UI
            var commandInputs = command.commandInputs;
            var bodySelectionInput = commandInputs.addSelectionInput('bodySelectionInput', 'Body', 'Select a Body');
            bodySelectionInput.selectionFilters = ['Bodies'];
            bodySelectionInput.setSelectionLimits = 1;

            var sketchSelectionInput = commandInputs.addSelectionInput('sketchSelectionInput', 'Sketch', 'Select a Sketch');
            sketchSelectionInput.selectionFilters = ['Sketches'];
            sketchSelectionInput.setSelectionLimits = 1;

            // Execute Handler
            command.execute.add( function(args) {
                try {
                    var app = adsk.core.Application.get();
                    var ui = app.userInterface;
                    var command = adsk.core.Command(args.firingEvent.sender);
                    var body = command.commandInputs.itemById('bodySelectionInput').selection(0).entity;
                    var sketch = command.commandInputs.itemById('sketchSelectionInput').selection(0).entity;
                    var entities = sketch.projectCutEdges(body);
                    
                    var points = adsk.core.ObjectCollection.create();
                    var sketchLines = adsk.core.ObjectCollection.create();

                    var sketchLine = entities.item(0);
                    var currentLineIndex = 0;
                    var currentPoint = sketchLine.geometry.startPoint;
                    var nextPoint = sketchLine.geometry.endPoint;
                    points.add(currentPoint);

                    for (var i = 1; i < entities.count; i++) {
                        for (var j = 0; j < entities.count; j++) {
                            var sketchLine = entities.item(j);
                            if (currentLineIndex == j) {
                                // skip this point... don't chain to yourself
                            }
                            else if (sketchLine.geometry.startPoint.isEqualTo(nextPoint))
                            {
                                currentLineIndex = j;
                                currentPoint = sketchLine.geometry.startPoint;
                                nextPoint = sketchLine.geometry.endPoint;
                                points.add(currentPoint);
                                break;
                            }
                            else if (sketchLine.geometry.endPoint.isEqualTo(nextPoint))
                            {
                                currentLineIndex = j;
                                currentPoint = sketchLine.geometry.endPoint;
                                nextPoint = sketchLine.geometry.startPoint;
                                points.add(currentPoint);
                                break;
                            }
                        }
                    }

                    var design = adsk.fusion.Design(app.activeProduct);
                    var root = design.rootComponent;
                    var newSketch = root.sketches.add(sketch.referencePlane);
                    newSketch.sketchCurves.sketchFittedSplines.add(points);
        
                } catch (e) {
                    showError('Failed to execute command: ', e);
                }
            });

            // Input Changed Handler
            command.inputChanged.add( function(args) {
                try {
                } catch (e) {
                }
            });


        } catch (e) {
            showError('Failed to create command: ', e);
        }
    }
}
Message 18 of 36

Anonymous
Not applicable

Don, fantastic work!  I haven't worked with modifying Fusion scripts at all, so going to look now at how to actually run this beauty, but sounds like you pretty much cracked what from my limited perspective seemed daunting.  This should prove extremely powerful for making perfect Tspline meshes from complex imported meshes (and of course awesome sliced statues 😉 )...going to try getting it working now.

Jesse

0 Likes
Message 19 of 36

dongillett
Enthusiast
Enthusiast

If you want to hack on this you'll want the rest of the code.  Attached is the whole project.  I'm no Javascript expert but I cleaned up some pretty rough samples and tried to make 'tools' conform to a bit more of a standard class/pattern.  It's a plugin... not just a script.  Let me know if you have any problems getting it to run.  I think your process of converting a mesh might be best done in a few steps like laying out where you want cross sections and multi-selecting them as inputs to the process.  If you spec out how you think the process should work I can help.

Message 20 of 36

daniel_lyall
Mentor
Mentor

Don you should do this 

http://forums.autodesk.com/t5/api-and-scripts/you-re-invited-to-the-fusion-360-hackathon/td-p/579356...

 

your sript you have done is well prety cool 


Win10 pro | 16 GB ram | 4 GB graphics Quadro K2200 | Intel(R) 8Xeon(R) CPU E5-1620 v3 @ 3.50GHz 3.50 GHz

Daniel Lyall
The Big Boss
Mach3 User
My Websight, Daniels Wheelchair Customisations.
Facebook | Twitter | LinkedIn