Hudson Posted August 7, 2009 Posted August 7, 2009 I'm new to this and don't want to reinvent the wheel. Thanks for your time! Andrew Quote
Lee Mac Posted August 7, 2009 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
Hudson Posted August 7, 2009 Author 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
Lee Mac Posted August 7, 2009 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
Hudson Posted August 7, 2009 Author Posted August 7, 2009 Thanks, Lee! Helpful as always. Cheers Quote
David Bethel Posted August 7, 2009 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
ollie Posted August 10, 2009 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
Lee Mac Posted August 10, 2009 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
ollie Posted August 10, 2009 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
Lee Mac Posted August 10, 2009 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
Hudson Posted August 11, 2009 Author Posted August 11, 2009 Can't wait to try this out Thanks all! Quote
Lee Mac Posted August 11, 2009 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
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.