halam 发表于 2022-7-5 18:09:10

Filter for small parts (ssget)

Hi there,
 
 
I am looking for a way to get rid of small volume parts in a DWG file.
In some cases we recieve the most 'dumbest' export models you can think of in DWG. Bolts and rings make the model very big and hard to handle. I did a small excercise and a small workaround will save at least 50% of the filesize! ..and loading time
 
 
Does any one can know if it is possible to filter 3D solids WITH a volume criteria?Can anybody help me a little to set this up in a decent matter? This would really be a big help for to get this working. Especially because we sometimes want 3D DWG to be used in Revit as well. Would be very handy to have a method to make the data more LEAN and reloadable. Clash detection on this level is totally irrelevant for us!
 
 
Thanks in advance
 
 
Hans
ISOLATE SOLID.LSP

Cad64 发表于 2022-7-5 18:29:28

You posted this question in the 3D Studio Max section. I have moved it to the Autocad 3D section: http://www.cadtutor.net/forum/forumdisplay.php?20-AutoCAD-3D-Modelling-amp-Rendering

halam 发表于 2022-7-5 18:49:08

I wasn't aware of that. Sorry for the inconvinience

halam 发表于 2022-7-5 18:59:33

First step..
Selection set not to be based on volume but on Bounding box.
I tried Lee Mac's routine and this can work on 3D objects as well.
However, i do not know how to set the criteria (area) yet, put this in a selection set and loop it.
 
 
Kind of beyond my programming skills.
Maybe a small commercial tool would fill my needs?
Anyone know about this?
 
http://www.lee-mac.com/ssboundingbox.html
 
 
quote
 
 
"I think bounding box would be easier to obtain than volume.
Perhaps something like this (thrown together and untested):
 
(setq ObjectBoundingBox (GetBoundingBox CurrentEntityName))
(setq CompareBoundX (- (car ur) (car ll)))
(setq CompareBoundY (- (cadr ur) (cadr ll)))
(setq CompareBoundZ (- (caddr ur) (caddr ll)))
(setq ObjectVolume (* CompareBoundX CompareBoundY CompareBoundZ))
 
(defun GetBoundingBox (ent / obj)
(setq obj (vlax-ename->vla-object ent)
   (vla-getBoundingBox obj 'll 'ur)
   (setq ll (vlax-safearray->list ll)
             ur (vlax-safearray->list ur)
      );end setq
   );end setq
);end defun

Cad64 发表于 2022-7-5 19:18:06

Ok, I originally moved this to the Autocad 3D section, but it appears you are actually looking for help with a lisp routine? I am moving your question, again. This time to the Autolisp section: http://www.cadtutor.net/forum/forumdisplay.php?21-AutoLISP-Visual-LISP-amp-DCL
页: [1]
查看完整版本: Filter for small parts (ssget)