Jump to content

Flatten 3D drawing to 2D


gtwatson

Recommended Posts

I have exported a 3D stick figure to a DXF (these are just lines and no solid objects) and imported it into AutoCAD 2006 (2012 ordered but not installed yet). I normally draw in 2D and want to get the 3D lines flattened, but I am having trouble.

 

When I issue the FLATTEN command and say yes to remove hidden lines, it takes a while and I do get a 2D DWG, but the lines on the back side of my 3D lie on top of each other. Is there a way to make a block of the lines that lie on a plane and paste them into a new DWG?

 

I'll try to attach a screen shot of my 3D model (it is a lattice transmission tower).

dxf-example.jpg

Link to comment
Share on other sites

I'm not sure FLATSHOT will flatten 3D lines anyway. (at least mine doesn't)

 

"Command: flatshot

There are no solids or surfaces that can be projected."

 

If the problem is just overlapping/duplicate lines, use OVERKILL after FLATTEN if you have Express Tools installed.

Link to comment
Share on other sites

I do have 2012 loaded on another PC and I tried flatshot and I got the error nestly posted.

 

The problem with flatten is that it takes the 3rd coordinate of my lines and makes them 0.0 which works OK if there are only lines that are on the 4 faces of my model. My problem is that I have several lines that go from the front face to the side face and I don't need them to be in the flattened result.

 

My main problem is that I am self taught on AutoCAD and know how 2D works and can draw lines and circles and then put text on them, but I don't know how 3D works in ACAD. I normally just work in model space and draw structures full size and then plop down a title block and shrink the part down to fit inside the title block and put dimensions on the part. It has worked fine since the 1980's but I am stuck when I have to deal with lines in 3D.

 

I'm a Structural Engineer and I model transmission towers in 3D all the time and am used to working in other structural software.

 

I'm not sure how to do it in ACAD, but I need to define a bounded plane that contains the lines on a face and then make a block of only those lines (with their endpoints) so I can paste the plane into a 2D DWG that I am used to dealing with.

 

I do plan to take some ACAD classes and learn 3D modeling but the screen shot I posted shows the top part of my 312 foot tall lattice tower that I need to send to the structure detailer and I need to define all the angle sizes, bolts and connection details on this one line schematic.

Link to comment
Share on other sites

Try looking into Hidden Line Projection. I can tell you where to find it in R2010 and later, which sadly wouldn't be much help to you.

 

I hope it's *in* R2006!

 

dJE

Link to comment
Share on other sites

You could try Lee Mac's Superflat program as mentioned here: http://www.cadtutor.net/forum/showthread.php?58889-3d-to-2d-lisp&highlight=flatten

 

Take a look at this thread too where a number of ways are discussed to flatten 3D geometry. http://www.cadtutor.net/forum/showthread.php?59342-Please-help.-How-to-convert-3D-drawing-to-2D-drawing&highlight=flatten

Link to comment
Share on other sites

Try looking into Hidden Line Projection. I can tell you where to find it in R2010 and later, which sadly wouldn't be much help to you.

 

I hope it's *in* R2006!

 

dJE

I tried the HIDE command but since the drawing is just a bunch of lines in 3D space and contains no solid objects, it didn't do anything.

Link to comment
Share on other sites

You could try Lee Mac's Superflat program as mentioned here: http://www.cadtutor.net/forum/showthread.php?58889-3d-to-2d-lisp&highlight=flatten

 

Take a look at this thread too where a number of ways are discussed to flatten 3D geometry. http://www.cadtutor.net/forum/showthread.php?59342-Please-help.-How-to-convert-3D-drawing-to-2D-drawing&highlight=flatten

 

I tried the Superflat LSP and it worked pretty good. I also ran Overkill and got rid of the lines that were on top of each other. The Superflat worked on the XY plane and I got the wide face of my tower model, but I would also like to get the narrow face that is in the YZ plane.

 

I have pasted the Supflat code below. If I want the model flattened on the YZ plane can I change the "list 0 0 n " to "list n 0 0" ?

 

Or what would I change to flatten the X coordinates to 0.0

 

 

(defun c:Supflat (/ ss ssObj j)
(vl-load-com)
(vlax-map-collection
(vla-get-Layers
(vla-get-ActiveDocument
(vlax-get-acad-object)))
'(lambda (x) (vla-put-lock x :vlax-false)))
(if (setq ss (ssget "X" (list (cons 410 (getvar "CTAB")))))
(progn
(setq ssObj (mapcar 'vlax-ename->vla-object
(mapcar 'cadr (ssnamex ss))) j 0)
(foreach Obj ssObj
(foreach n '(1e99 -1e99)
(if (vl-catch-all-error-p
(vl-catch-all-apply
'(lambda (x)
(vla-move x (vlax-3d-point (list 0 0 0))
(vlax-3d-point (list 0 0 n))))
(list Obj)))
nil
(setq j (1+ j)))))
(princ (strcat "\n" (rtos (/ j 2.0)) " Objects Flattened.")))
(princ "\n<!> No Objects Found <!>"))

Edited by SLW210
Add Code Tags!!
Link to comment
Share on other sites

I'm not familiar with superflat, but FLATTEN just projects your model onto the current viewing plane, so to create another view, just make as many copies of your model as the number of views you want before using FLATTEN the first time, and then rotate your view to the side you want to project. You will have to rotate the projections back to plan view after they're created. (also works for making isometrics)

Link to comment
Share on other sites

I tried the Superflat LSP and it worked pretty good. I also ran Overkill and got rid of the lines that were on top of each other. The Superflat worked on the XY plane and I got the wide face of my tower model, but I would also like to get the narrow face that is in the YZ plane.

 

I have pasted the Supflat code below. If I want the model flattened on the YZ plane can I change the "list 0 0 n " to "list n 0 0" ?

 

Or what would I change to flatten the X coordinates to 0.0

 

 

(defun c:Supflat (/ ss ssObj j)
(vl-load-com)
(vlax-map-collection
(vla-get-Layers
(vla-get-ActiveDocument
(vlax-get-acad-object)))
'(lambda (x) (vla-put-lock x :vlax-false)))
(if (setq ss (ssget "X" (list (cons 410 (getvar "CTAB")))))
(progn
(setq ssObj (mapcar 'vlax-ename->vla-object
(mapcar 'cadr (ssnamex ss))) j 0)
(foreach Obj ssObj
(foreach n '(1e99 -1e99)
(if (vl-catch-all-error-p
(vl-catch-all-apply
'(lambda (x)
(vla-move x (vlax-3d-point (list 0 0 0))
(vlax-3d-point (list 0 0 n))))
(list Obj)))
nil
(setq j (1+ j)))))
(princ (strcat "\n" (rtos (/ j 2.0)) " Objects Flattened.")))
(princ "\n<!> No Objects Found <!>"))

 

I changed the "list 0 0 n" to "list n 0 0" in the piece of code for Supflat and called it SupflatX and it worked, so I got lucky.

 

(vla-move x (vlax-3d-point (list 0 0 0))

(vlax-3d-point (list n 0 0))))

Edited by SLW210
Link to comment
Share on other sites

I got the 3D flattened using the Supflat and my modified SupflatX along with Overkill, but I now need to cut sections through my 3D model. I've been reading about UCS and selecting 3 points to make a new UCS, but I wonder if it is possible to select the lines that reside on my new UCS plane (either manually or using LISP) and make a block of those lines so I could insert them into a new DWG. Is there a way to select lines that lie on the new plane?

TIA

Link to comment
Share on other sites

After a little reading, I found that I can select a plane using 3 points, go to the properties dialog box, do a quick select, and select lines that have Delta Z equal to 0.0. This produces a selection set that only contains lines on my plane and I can copy the set to a block and paste it to a new drawing.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...