Jump to content

Need code to insert block to every text.


Nad SK

Recommended Posts

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • 10 months later...
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.

Link to comment
Share on other sites

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

   
   
          

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