Hudson Posted August 7, 2009 Share Posted August 7, 2009 I'm new to this and don't want to reinvent the wheel. Thanks for your time! Andrew Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted August 7, 2009 Share Posted August 7, 2009 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. Quote Link to comment Share on other sites More sharing options...
Hudson Posted August 7, 2009 Author Share Posted August 7, 2009 Ok, that makes sense. Do entity names have to be Hex? IE could I make them lineX, where x is an integer? Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted August 7, 2009 Share Posted August 7, 2009 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 Quote Link to comment Share on other sites More sharing options...
Hudson Posted August 7, 2009 Author Share Posted August 7, 2009 Thanks, Lee! Helpful as always. Cheers Quote Link to comment Share on other sites More sharing options...
David Bethel Posted August 7, 2009 Share Posted August 7, 2009 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 Quote Link to comment Share on other sites More sharing options...
ollie Posted August 10, 2009 Share Posted August 10, 2009 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. Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted August 10, 2009 Share Posted August 10, 2009 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] Quote Link to comment Share on other sites More sharing options...
ollie Posted August 10, 2009 Share Posted August 10, 2009 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 Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted August 10, 2009 Share Posted August 10, 2009 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))) Quote Link to comment Share on other sites More sharing options...
Hudson Posted August 11, 2009 Author Share Posted August 11, 2009 Can't wait to try this out Thanks all! Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted August 11, 2009 Share Posted August 11, 2009 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. 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.