Jump to content

Custom Tool to "slice" up a steel fabrication model?


tzframpton

Recommended Posts

Most steel fabrication detailers use programs like Tekla or SDS/2, which saves or exports as a DWG file of the 3D objects. These models are usually meshes and not solids. They're also usually very heavy and can buckle performance bigtime. They're great for our 3D coordination process, in which these models get exported to NWC format then loaded into Navisworks. My dilemma comes in when we decide it's best to chop up the Navisworks models by level. This is very easy to do with the Revit platform and very difficult with AutoCAD. Most of our AutoCAD users for MEP systems model one level per DWG file so it works out, where as the structural detailers send one big file and that's all you get. 

 

Does anyone know of a program that exists that can slice up a model into parts, for instance underground up to the level 1 slab, then from the level 1 slab up to the level 2 slab, etc? In my mind, it would be a simple "slice" and delete of any elements beyond the given Z-axis elevations, then that gets saved as a DWG file. Or something to that nature. 

 

If a program doesn't exists, I'm willing to pay someone to write a program for us, if a LISP routine is capable of our needs. We get too many jobs with this issue and I really want to have a solution for it. Thanks in advance. 

 

-TZ

Link to comment
Share on other sites

Like steven-g a dwg would help but something super simple would be maybe capable, the only hard part is doing a cond covering the object types to get the z value.

 

A couple of complications is a 3d line only use lowest value ? Solids again lowest ? Do you want to pick objects and confirm Z's ? Else would use multi getvals.

 

It may be possible to use WBLOCK to make a new dwg or the destructive erase objects as you suggested.

 

Just something whipped up only a starting point tested on a few objects.

 

(defun c:wow ()
(setq ss (ssget))
(setq minz (getreal "enter minz") maxz (getreal "enter max z"))
(repeat (setq x (sslength ss))
(setq obj (vlax-ename->vla-object (ssname ss (setq x (- x 1)))))
(cond
((= (vla-get-objectname obj) "AcDbPolyline") (setq elev (vla-get-elevation obj))); this is for Lwplines
((= (vla-get-objectname obj) "AcDbLine") (setq elev (caddr (vlax-get Obj 'StartPoint))))
)
(if (and (> elev minz)(< elev maxz))
(alert (strcat (vla-get-objectname obj)  " z is " (rtos elev 2 1))) ; change this line to (princ)
; (vla-delete obj) do the erase here
)
)
)
(c:wow)

 

 

 

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...