bonacad Posted September 9, 2008 Share Posted September 9, 2008 if i have line & text in INSERT (block) object. how to retrive list of that object entities? i mean in BLOCK or INSERT objects? Quote Link to comment Share on other sites More sharing options...
lpseifert Posted September 9, 2008 Share Posted September 9, 2008 (entget (car (nentsel))) will get you the entity list of an entity in a block Quote Link to comment Share on other sites More sharing options...
bonacad Posted September 9, 2008 Author Share Posted September 9, 2008 yeah, but i dont want to select object. i have for example this: Command: (setq [b]my-block[/b] (entget (entlast))) ((-1 . <Entity name: 7ef9e050>) (0 . "INSERT") (330 . <Entity name: 7ef65cf8>) (5 . "BA") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbBlockReference") (2 . "test") (10 3.38842 8.55032 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0)) how do i retreve list of all Entity names in my-block? Quote Link to comment Share on other sites More sharing options...
ASMI Posted September 9, 2008 Share Posted September 9, 2008 Every Block Reference contains the same entities set. You need to extract the Block Definition from BLOCK table and use ENTNEXT function to find all nested entities: (defun GetEntitiesList(Name / blLst cEnt oLst) (if(setq blLst(tblsearch "BLOCK" Name)) (progn (if(setq cEnt(cdr(assoc -2 blLst))) (progn (setq oLst(list cEnt)) (while(setq cEnt(entnext cEnt)) (setq oLst(cons cEnt oLst)) ); end while ); end progn ); end if ); end progn ); end if oLst ); end of GetEntitiesList Example of usage: Command: (GetEntitiesList "01-06-Adr_Isolator") (<Entity name: 7efe2508> <Entity name: 7efe2500> <Entity name: 7efe24f8> <Entity name: 7efe24f0> <Entity name: 7efe24e8> <Entity name: 7efe24e0> <Entity name: 7efe24d8> <Entity name: 7efe24d0> <Entity name: 7efe24c8> <Entity name: 7efe24c0> <Entity name: 7efe24b8>) Quote Link to comment Share on other sites More sharing options...
bonacad Posted September 9, 2008 Author Share Posted September 9, 2008 perfect. thank u very much asmi. Quote Link to comment Share on other sites More sharing options...
bonacad Posted September 9, 2008 Author Share Posted September 9, 2008 i have made adjustments to my needs. ename instead blkname for arg. function gives me back just text entities from block. (DEFUN txtlstfromblk (ename / c txtl bllst cent olst tmp) (IF (SETQ bllst (TBLSEARCH "BLOCK" (CDR (ASSOC 2 (ENTGET ename))))) (PROGN (IF (SETQ cent (CDR (ASSOC -2 bllst))) (PROGN (SETQ olst (LIST cent)) (WHILE (SETQ cent (ENTNEXT cent)) (SETQ olst (CONS cent olst))) ) ;_ endPROGN ) ;_ endIF ) ;_ endPROGN ) ;_ endIF (SETQ c (LENGTH olst)) (WHILE (>= (SETQ c (1- c)) 0) (SETQ text? (CDR (ASSOC 0 (ENTGET (SETQ tmp (CAR olst))))) olst (CDR olst) ) ;_ endSETQ (IF (= text? "TEXT") (SETQ txtl (APPEND txtl (SETQ txtl (LIST tmp)))) ) ;_ endIF ) ;_ endWHILE txtl ) ;_ endDEFUN for Command: (setq my-block (entlast)) function call (txtlstfromblk my-block) Replacing (= text? "TEXT") with another type, can be used for retrieving other entity types. --- 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.