Nad SK Posted February 23, 2009 Share Posted February 23, 2009 I have a problem: I must copy one block to every text in the drawing. The insert point of block is the same insert point of text. I use copy command to do this work but it to slow. I want a lisp code to do this work: insert a block to the slection texts, or copy one object to the slection texts. And maybe more: copy one object to the insert point of selection objects. Thankyou for your help. Quote Link to comment Share on other sites More sharing options...
David Bethel Posted February 23, 2009 Share Posted February 23, 2009 Maybe something like this: [b][color=BLACK]([/color][/b]defun c:txt2ins [b][color=FUCHSIA]([/color][/b]/ bn ss i en ed ip[b][color=FUCHSIA])[/color][/b] [color=#8b4513];;;GET THE BLOCK[/color] [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]not bn[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq bn [b][color=MAROON]([/color][/b]getstring [color=#2f4f4f]"\nBLOCK To Insert: "[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]cond [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]and [b][color=BLUE]([/color][/b]snvalid bn[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]tblsearch [color=#2f4f4f]"BLOCK"[/color] bn[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]and [b][color=BLUE]([/color][/b]snvalid bn[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]findfile [b][color=RED]([/color][/b]strcat bn [color=#2f4f4f]".DWG"[/color][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]command [color=#2f4f4f]"_.INSERT"[/color] bn[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]command[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]T [b][color=GREEN]([/color][/b]setq bn nil[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [color=#8b4513];;;GET THE TEXT[/color] [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]not ss[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]princ [color=#2f4f4f]"\nSelect TEXT to Insert Blocks To: "[/color][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"TEXT"[/color][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]if [b][color=RED]([/color][/b]getvar [color=#2f4f4f]"CTAB"[/color][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cons 410 [b][color=PURPLE]([/color][/b]getvar [color=#2f4f4f]"CTAB"[/color][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cons 67 [b][color=PURPLE]([/color][/b]- 1 [b][color=TEAL]([/color][/b]getvar [color=#2f4f4f]"TILEMODE"[/color][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq i [b][color=MAROON]([/color][/b]sslength ss[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [color=#8b4513];;;INSERT THE BLOCK[/color] [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]not [b][color=GREEN]([/color][/b]minusp [b][color=BLUE]([/color][/b]setq i [b][color=RED]([/color][/b]1- i[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss i[b][color=GREEN])[/color][/b] ed [b][color=GREEN]([/color][/b]entget en[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]if [b][color=GREEN]([/color][/b]and [b][color=BLUE]([/color][/b]zerop [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 71 ed[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]zerop [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 72 ed[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]zerop [b][color=RED]([/color][/b]cdr [b][color=PURPLE]([/color][/b]assoc 73 ed[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq ip [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 10 ed[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq ip [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]assoc 11 ed[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]command [color=#2f4f4f]"_.INSERT"[/color] bn ip[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]while [b][color=GREEN]([/color][/b]> [b][color=BLUE]([/color][/b]getvar [color=#2f4f4f]"CMDACTIVE"[/color][b][color=BLUE])[/color][/b] 0[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]command [color=#2f4f4f]""[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b] This does not take into account the curent LAYER, ELEVATION, THICKNESS, CELTYPE, UCS or CECOLOR Settings. -David Quote Link to comment Share on other sites More sharing options...
Nad SK Posted February 24, 2009 Author Share Posted February 24, 2009 Thank David. It work fine with block and texts. Quote Link to comment Share on other sites More sharing options...
Nad SK Posted January 15, 2010 Author Share Posted January 15, 2010 Thank David.It work fine with block and texts. What about "Insert text to every block" ???? If I have many block in the screen, I want to add a string of text to every block. How can I do that with LISP??? Who can show me the code??? Thanks for all. Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted January 15, 2010 Share Posted January 15, 2010 Try this: (defun c:txt@ins (/ Make_Text str i ss ent) ;; Lee Mac ~ 15.01.10 (defun Make_Text (pt str) (entmakex (list (cons 0 "TEXT") (cons 10 pt) (cons 1 str) (cons 40 (getvar 'TEXTSIZE))))) (if (and (setq str (getstring t "\nSpecify Text String: ")) (setq i -1 ss (ssget '((0 . "INSERT"))))) (while (setq ent (ssname ss (setq i (1+ i)))) (Make_Text (cdr (assoc 10 (entget ent))) str))) (princ)) Quote Link to comment Share on other sites More sharing options...
Nad SK Posted January 18, 2010 Author Share Posted January 18, 2010 It's done. Thanks!!! Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted January 18, 2010 Share Posted January 18, 2010 You're welcome 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.