heavyaslead Posted January 11, 2010 Posted January 11, 2010 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! Quote
Lee Mac Posted January 11, 2010 Posted January 11, 2010 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. Quote
heavyaslead Posted January 11, 2010 Author Posted January 11, 2010 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? Quote
Lee Mac Posted January 11, 2010 Posted January 11, 2010 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 Quote
heavyaslead Posted January 11, 2010 Author Posted January 11, 2010 Thanks Lee, that's the prefered way. Now I need to figure some Lisp and tie to macro call-out. Cheers! Quote
Lee Mac Posted January 11, 2010 Posted January 11, 2010 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 Quote
David Bethel Posted January 11, 2010 Posted January 11, 2010 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 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.