ARGV Posted July 22, 2009 Share Posted July 22, 2009 Hello. I'm looking to, WITHOUT using blocks, find out how big the smallest imaginary square is that would hold all objects in the drawing. (like BOUNDINGBOX property) I'm not real good with deep down stuff in entity objects, but I know you can find out the vertices of objects by using ENTNEXT a couple times or something. ?? Whats the best way to do this? thanks. -ArgV Quote Link to comment Share on other sites More sharing options...
Commandobill Posted July 22, 2009 Share Posted July 22, 2009 So your looking for the size of the largest entity in your drawing or trying to find out how big a box would be to contain all of your entities? Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted July 22, 2009 Share Posted July 22, 2009 Something like this? [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:bigbox [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] xlst ylst ss sel doc MiP MaP pts xlst ylst xmin xmax ymin ymax[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] xlst [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=RED])[/color][/b] ylst [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=RED])[/color][/b] ss [b][color=RED]([/color][/b][b][color=BLUE]ssget[/color][/b] [b][color=#ff00ff]"_X"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-for[/color][/b] Obj [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] sel [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveSelectionSet[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] doc [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-getBoundingBox[/color][/b] Obj [b][color=DARKRED]'[/color][/b]MiP [b][color=DARKRED]'[/color][/b]MaP[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pts [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-safearray->list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] MiP MaP[b][color=RED])[/color][/b][b][color=RED])[/color][/b] xlst [b][color=RED]([/color][/b][b][color=BLUE]append[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]car[/color][/b] pts[b][color=RED])[/color][/b] xlst[b][color=RED])[/color][/b] ylst [b][color=RED]([/color][/b][b][color=BLUE]append[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] pts[b][color=RED])[/color][/b] ylst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] xmin [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]min[/color][/b] xlst[b][color=RED])[/color][/b] xmax [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]max[/color][/b] xlst[b][color=RED])[/color][/b] ymin [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]min[/color][/b] ylst[b][color=RED])[/color][/b] ymax [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]max[/color][/b] ylst[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-put-property[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-addLightWeightPolyline[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ModelSpace[/color][/b] doc[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-make-variant[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-safearray-fill[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-make-safearray[/color][/b] [color=Blue][b]vlax-vbdouble[/b][/color] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] . [b][color=#009900]7[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] xmin ymin xmin ymax xmax ymax xmax ymin[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=DARKRED]'[/color][/b]Closed [b][color=Blue]:vlax-true[/color][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-delete[/color][/b] sel[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] Quote Link to comment Share on other sites More sharing options...
ARGV Posted July 23, 2009 Author Share Posted July 23, 2009 Something like this? [b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] c:bigbox [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] xlst ylst ss sel doc MiP MaP pts xlst ylst xmin xmax ymin ymax[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vl-load-com[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] xlst [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=RED])[/color][/b] ylst [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=RED])[/color][/b] ss [b][color=RED]([/color][/b][b][color=BLUE]ssget[/color][/b] [b][color=#ff00ff]"_X"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]progn[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-for[/color][/b] Obj [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] sel [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveSelectionSet[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] doc [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ActiveDocument[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-get-acad-object[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-getBoundingBox[/color][/b] Obj [b][color=DARKRED]'[/color][/b]MiP [b][color=DARKRED]'[/color][/b]MaP[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] pts [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]vlax-safearray->list[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] MiP MaP[b][color=RED])[/color][/b][b][color=RED])[/color][/b] xlst [b][color=RED]([/color][/b][b][color=BLUE]append[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]car[/color][/b] pts[b][color=RED])[/color][/b] xlst[b][color=RED])[/color][/b] ylst [b][color=RED]([/color][/b][b][color=BLUE]append[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]mapcar[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]cadr[/color][/b] pts[b][color=RED])[/color][/b] ylst[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] xmin [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]min[/color][/b] xlst[b][color=RED])[/color][/b] xmax [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]max[/color][/b] xlst[b][color=RED])[/color][/b] ymin [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]min[/color][/b] ylst[b][color=RED])[/color][/b] ymax [b][color=RED]([/color][/b][b][color=BLUE]apply[/color][/b] [b][color=DARKRED]'[/color][/b][b][color=BLUE]max[/color][/b] ylst[b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-put-property[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-addLightWeightPolyline[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-ModelSpace[/color][/b] doc[b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-make-variant[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-safearray-fill[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vlax-make-safearray[/color][/b] [color=Blue][b]vlax-vbdouble[/b][/color] [b][color=DARKRED]'[/color][/b][b][color=RED]([/color][/b][b][color=#009900]0[/color][/b] . [b][color=#009900]7[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]list[/color][/b] xmin ymin xmin ymax xmax ymax xmax ymin[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=DARKRED]'[/color][/b]Closed [b][color=Blue]:vlax-true[/color][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-delete[/color][/b] sel[b][color=RED])[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]princ[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b] Well, If that compares all bounding box co-ordinates like I think it does, and ends up with just a giant box that encompasses all objects, then yes. Thank you, I'll be using that in a bit. Plus, thanks, now I know how to use the make-safearray function. Wasn't sure how to declare the size of it. -ArgV Quote Link to comment Share on other sites More sharing options...
ARGV Posted July 23, 2009 Author Share Posted July 23, 2009 So your looking for the size of the largest entity in your drawing or trying to find out how big a box would be to contain all of your entities? Option #2. What I'm doing is scripting through a bunch of DXF files that, if it is taller than it is wide, then rotate (landscape view) the geometry. My first idea was just to get all the vertices and find the biggest and smallest, my next idea was the one that is so elegantly done above. I just thought maybe there was another way that might be easier. But, this'll work just fine I believe. thanks. Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted July 23, 2009 Share Posted July 23, 2009 Excellent, glad it helps you out dude Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.