Jump to content

Finding Total size of all objects


ARGV

Recommended Posts

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

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

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