Jump to content

Best way to keep track of created entities for ease of removal?


Hudson

Recommended Posts

Keep track of entities created through a LISP routine you mean?

 

if so,

 

Perhaps use (entlast) to store the last created entity - either save it to a list of other entity names, or maybe create a selection set for it.

Link to comment
Share on other sites

Ok, that makes sense.

 

Do entity names have to be Hex? IE could I make them lineX, where x is an integer?

 

When you use (entlast), you will get an entity name, something like:

 

<Entity name: 7ef03698>

Which you can add to a list, maybe:

 

(setq entlst (cons (entlast) entlst))

or maybe add to a selection set (ss):

 

(ssadd (entlast) ss)

 

Or maybe store them to a variable:

 

(setq ent1 (entlast))

 

You cannot change the entity name itself - this is a unique name determined by AutoCAD.

 

Lee

Link to comment
Share on other sites

I would look into the entity's handle ( dxf group 5 ) as they are static whereas enames are only good for the current session. (handent) calls return the current ename of an entity. So you could in fact keep a database of new entities or temporary or what ever your criteria is. -David

Link to comment
Share on other sites

Each entity as far as i am aware is stored in one of the document tables.(Sadly I don't know the name of the table) when an entity is created it is added to thi tabe and when it is deleted it is marked for removal but not removed from the database until the drawing is closed.

 

With this said there must be a way to retrieve the draw order of entites from this table.

Link to comment
Share on other sites

With this said there must be a way to retrieve the draw order of entites from this table.

 

This got me wondering too, and with a bit of experimentation:

 

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] getOrder  [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] doc spc Dic sort order[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]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]
       spc [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]zerop[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-activespace[/color][/b] doc[b][color=RED])[/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]=[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-mspace[/color][/b] doc[b][color=RED])[/color][/b] [b][color=Blue]:vlax-true[/color][color=RED])[/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]vla-get-paperspace[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/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=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]zerop[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]vla-get-count[/color][/b]
         [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] Dic
           [b][color=RED]([/color][/b][b][color=BLUE]vla-getextensiondictionary[/color][/b] spc[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]setq[/color][/b] sort [b][color=RED]([/color][/b][b][color=BLUE]vla-addobject[/color][/b] Dic [b][color=#ff00ff]"ACAD_SORTENTS"[/color][/b] [b][color=#ff00ff]"AcDbSortentsTable"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] sort [b][color=RED]([/color][/b][b][color=BLUE]vla-getobject[/color][/b] Dic [b][color=#ff00ff]"ACAD_SORTENTS"[/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-getfulldraworder[/color][/b] sort [b][color=DARKRED]'[/color][/b]order [b][color=Blue]:vlax-false[/color][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]vlax-safearray->list[/color][/b] order[b][color=RED])[/color][/b][b][color=RED])[/color][/b]

Link to comment
Share on other sites

This got me wondering too, and with a bit of experimentation:

 

[b][color=RED]([/color][/b][b][color=BLUE]defun[/color][/b] getOrder  [b][color=RED]([/color][/b][b][color=BLUE]/[/color][/b] doc spc Dic sort order[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]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]
       spc [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]zerop[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-activespace[/color][/b] doc[b][color=RED])[/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]=[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]vla-get-mspace[/color][/b] doc[b][color=RED])[/color][/b] [b][color=Blue]:vlax-true[/color][color=RED])[/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]vla-get-paperspace[/color][/b] doc[b][color=RED])[/color][/b][b][color=RED])[/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=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]if[/color][/b] [b][color=RED]([/color][/b][b][color=BLUE]zerop[/color][/b]
       [b][color=RED]([/color][/b][b][color=BLUE]vla-get-count[/color][/b]
         [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] Dic
           [b][color=RED]([/color][/b][b][color=BLUE]vla-getextensiondictionary[/color][/b] spc[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]setq[/color][/b] sort [b][color=RED]([/color][/b][b][color=BLUE]vla-addobject[/color][/b] Dic [b][color=#ff00ff]"ACAD_SORTENTS"[/color][/b] [b][color=#ff00ff]"AcDbSortentsTable"[/color][/b][b][color=RED])[/color][/b][b][color=RED])[/color][/b]
   [b][color=RED]([/color][/b][b][color=BLUE]setq[/color][/b] sort [b][color=RED]([/color][/b][b][color=BLUE]vla-getobject[/color][/b] Dic [b][color=#ff00ff]"ACAD_SORTENTS"[/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-getfulldraworder[/color][/b] sort [b][color=DARKRED]'[/color][/b]order [b][color=Blue]:vlax-false[/color][color=RED])[/color][/b]
 [b][color=RED]([/color][/b][b][color=BLUE]vlax-safearray->list[/color][/b] order[b][color=RED])[/color][/b][b][color=RED])[/color][/b]

 

Lee truely awsome. I have been pondering posting a question on the table names and how to access them. that has answered the hard part of it.

 

Thanks

Ollie

Link to comment
Share on other sites

With a few tips from those at theSwamp:

 

(defun getOrder  (/ doc spc Dic sort order)
 (setq doc (vla-get-ActiveDocument
             (vlax-get-Acad-Object))
       spc (if (zerop (vla-get-activespace doc))
             (if (= (vla-get-mspace doc) :vlax-true)
               (vla-get-modelspace doc)
               (vla-get-paperspace doc))
             (vla-get-modelspace doc)))
 (if (vl-catch-all-error-p
       (setq sort
         (vl-catch-all-apply 'vla-item
           (list
             (setq Dic
               (vla-getextensiondictionary spc)) "ACAD_SORTENTS"))))
   (setq sort (vla-addobject Dic "ACAD_SORTENTS" "AcDbSortentsTable")))
 (vla-getfulldraworder sort 'order :vlax-false)
 (if (< 0 (vlax-safearray-get-u-bound order 1))
   (vlax-safearray->list order)))

Link to comment
Share on other sites

Not a problem, I might add that my code post was in reply to Ollie asking about the draw order of objects, and doesn't directly link to the threads original question, but glad I could help.

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