Jump to content

Need Macro for fetching editable block


Recommended Posts

Posted

Not new to ACAD, but new to programming it!

 

I need a simple example macro that can be inserted in the custom toolbar button icon that will fetch a pre-made block file and run through simple commands like INSERT (pick point), ROTATE (drag angle) and enable Attribute TEXT (type field).

 

Appreciate the help!:)

Posted

If you are after a macro, then think of entering the commands manually, and use special symbols for pause and enter:

 

Something like:

 

^C^C-insert;[color=Teal][b]block_name[/b][/color];\;;\

But I would be more inclined to call a LISP to insert the block from the macro, as this gives you better error trapping.

Posted

I guess I'm asking about the 'Long String Editor' in the macro portion of the CUI dialogue box.

 

If Lisp is better, how is this tied to an entity on the cusomized toolbar?

Posted
I guess I'm asking about the 'Long String Editor' in the macro portion of the CUI dialogue box.

 

If Lisp is better, how is this tied to an entity on the cusomized toolbar?

 

Yes, you would enter the Macro code into that section of the CUI Dialog :)

 

Say you have a LISP function called: insert_block

 

Then the LISP function could do the business end, and in the macro string you would put just:

 

^C^C(insert_block)

 

Much more elegant IMO (but then I would say that :) )

 

Lee

Posted

Thanks Lee, that's the prefered way. Now I need to figure some Lisp and tie to macro call-out.

 

Cheers!

Posted

Simplest example of a LISP:

 

(defun insert_block (/ *error* bNme)

[color=Red][b]  (setq bNme "test") ;; Block Name[/b][/color]

 (defun *error* (msg)
   (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
       (princ (strcat "\n** Error: " msg " **")))
   (princ))

 (cond (  (not (or (tblsearch "BLOCK" bNme)
                   (setq bNme (findfile (strcat bNme ".dwg")))))

          (princ "\n** Block Not Found **"))

       (t
          (command "_.-insert" bNme pause 1.0 1.0)
          (while (= 1 (logand 1 (getvar "CMDACTIVE")))
            (command pause))))
 
 (princ))

 

And Macro:

 

^C^C(insert_block)

 

Change block name accordingly :)

Posted

Or if you need to insert things on Layer 0 , WCS, elevation 0, scale 1, variable rotation, bare bones, then I use this ( a lot! ) :

[color=#8b4513];++++++++++++ World Insert +++++++++++++++++++++++++++++++++++++++[/color]
[b][color=BLACK]([/color][/b]defun c:WSert [b][color=FUCHSIA]([/color][/b]/ oldlay in_rst in_var bn lastin[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]setq oldlay [b][color=NAVY]([/color][/b]getvar [color=#2f4f4f]"CLAYER"[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]setq bn [b][color=NAVY]([/color][/b]getvar [color=#2f4f4f]"INSNAME"[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]setq lastin [b][color=NAVY]([/color][/b]if bn bn [color=#2f4f4f]""[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]setq bn [b][color=NAVY]([/color][/b]getstring [b][color=MAROON]([/color][/b]strcat [color=#2f4f4f]"\nBlock Name: <"[/color] lastin [color=#2f4f4f]">:  "[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]= bn [color=#2f4f4f]""[/color][b][color=NAVY])[/color][/b]
     [b][color=NAVY]([/color][/b]setq bn lastin[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]not [b][color=MAROON]([/color][/b]or [b][color=GREEN]([/color][/b]tblsearch [color=#2f4f4f]"BLOCK"[/color] bn[b][color=GREEN])[/color][/b]
                 [b][color=GREEN]([/color][/b]findfile [b][color=BLUE]([/color][/b]strcat bn [color=#2f4f4f]".DWG"[/color][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 bn [b][color=MAROON]([/color][/b]getfiled [color=#2f4f4f]"DWG To Insert"[/color] [color=#2f4f4f]""[/color] [color=#2f4f4f]"dwg"[/color] 8[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]setq bn [b][color=MAROON]([/color][/b]substr bn 1 [b][color=GREEN]([/color][/b]- [b][color=BLUE]([/color][/b]strlen bn[b][color=BLUE])[/color][/b] 4[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]command [color=#2f4f4f]"_.UCS"[/color] [color=#2f4f4f]"_World"[/color]
          [color=#2f4f4f]"_.LAYER"[/color] [color=#2f4f4f]"_Thaw"[/color] [color=#2f4f4f]"0"[/color] [color=#2f4f4f]"_On"[/color] [color=#2f4f4f]"0"[/color] [color=#2f4f4f]"_Set"[/color] [color=#2f4f4f]"0"[/color] [color=#2f4f4f]""[/color][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]setq in_var '[b][color=NAVY]([/color][/b][b][color=MAROON]([/color][/b][color=#2f4f4f]"CMDECHO"[/color]   . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"BLIPMODE"[/color]  . 0[b][color=MAROON])[/color][/b]
                [b][color=MAROON]([/color][/b][color=#2f4f4f]"EXPERT"[/color]    . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"SNAPMODE"[/color]  . 1[b][color=MAROON])[/color][/b]
                [b][color=MAROON]([/color][/b][color=#2f4f4f]"ORTHOMODE"[/color] . 1[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"UCSICON"[/color]   . 1[b][color=MAROON])[/color][/b]
                [b][color=MAROON]([/color][/b][color=#2f4f4f]"ELEVATION"[/color] . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"THICKNESS"[/color] . 0[b][color=MAROON])[/color][/b]
                [b][color=MAROON]([/color][/b][color=#2f4f4f]"TEXTEVAL"[/color]  . 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"ATTDIA"[/color]    . 0[b][color=MAROON])[/color][/b]
                [b][color=MAROON]([/color][/b][color=#2f4f4f]"ATTREQ"[/color]    . 1[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"HIGHLIGHT"[/color] . 1[b][color=MAROON])[/color][/b]
                [b][color=MAROON]([/color][/b][color=#2f4f4f]"COORDS"[/color]    . 2[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b][color=#2f4f4f]"DRAGMODE"[/color]  . 2[b][color=MAROON])[/color][/b]
                [b][color=MAROON]([/color][/b][color=#2f4f4f]"CECOLOR"[/color]   . [color=#2f4f4f]"BYLAYER"[/color][b][color=MAROON])[/color][/b]
                [b][color=MAROON]([/color][/b][color=#2f4f4f]"CELTYPE"[/color] . [color=#2f4f4f]"BYLAYER"[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]foreach v in_var
     [b][color=NAVY]([/color][/b]setq in_rst [b][color=MAROON]([/color][/b]cons [b][color=GREEN]([/color][/b]cons [b][color=BLUE]([/color][/b]car v[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]getvar [b][color=RED]([/color][/b]car v[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] in_rst[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
     [b][color=NAVY]([/color][/b]setvar [b][color=MAROON]([/color][/b]car v[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]cdr v[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]command [color=#2f4f4f]"_.INSERT"[/color] bn[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]princ [color=#2f4f4f]"\nInsert Point:   "[/color][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]command pause 1 1[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]princ [color=#2f4f4f]"\nRotation Angle:  "[/color][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]command pause[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]> [b][color=MAROON]([/color][/b]getvar [color=#2f4f4f]"CMDACTIVE"[/color][b][color=MAROON])[/color][/b] 0[b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]command [color=#2f4f4f]""[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]foreach v in_rst [b][color=NAVY]([/color][/b]setvar [b][color=MAROON]([/color][/b]car v[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]cdr v[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"CLAYER"[/color] oldlay[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 

-David

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