SAM_R Posted April 6, 2009 Share Posted April 6, 2009 I'm working on the elctrical system of a school where we are replacing all the lights. Now the problem is the drawing has the Arch. 2X4 light block in it and I need to replace it with our company 2X4 block, but some of the lights are at 90 degrees and some are some are at 180. When I use blockreplace it puts my block in at 90 on all the old blocks. Is there a way to have them come in turned the right way? Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted April 6, 2009 Share Posted April 6, 2009 Modification of an old LISP I wrote a while back: ;; Block Replacer by Lee McDonnell (defun c:brep (/ blk brep ss doc spc i j) (vl-load-com) (if (and (setq blk (getstring T "\nSpecify Block to be Inserted: ")) (snvalid blk) (or (tblsearch "BLOCK" blk) (findfile (strcat blk ".dwg"))) (setq brep (car (entsel "\nSelect Block to Replace: ")))) (progn (if (setq ss (ssget "X" (list (cons 0 "INSERT") (cons 2 (cdr (assoc 2 (entget brep)))) (if (getvar "CTAB")(cons 410 (getvar "CTAB")) (cons 67 (- 1 (getvar "TILEMODE"))))))) (progn (setq doc (vla-get-ActiveDocument (vlax-get-Acad-Object)) spc (if (zerop (vla-get-activespace doc)) (if (= (vla-get-mspace doc) :vlax-true) (vla-get-modelspace doc) (vla-get-paperspace doc)) (vla-get-modelspace doc)) i 0 j 0) (vla-EndUndoMark doc) (vla-StartUndoMark doc) (foreach ent (mapcar 'vlax-ename->vla-object (mapcar 'cadr (ssnamex ss))) (vla-insertblock spc (vla-get-InsertionPoint ent) blk (vla-get-xscalefactor ent) (vla-get-yscalefactor ent) (vla-get-zscalefactor ent) (vla-get-rotation ent)) (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-delete (list ent))) (setq i (1+ i)) (setq j (1+ j)))) (princ (strcat "\n" (itoa j) " Blocks Replaced" (if (zerop i) "." (strcat (itoa i) " were on a Locked Layer!")))) (vla-EndUndoMark doc)) (princ "\n<!> No Blocks Found <!>"))) (princ "\n<!> Replacement Block not Found <!>")) (princ)) Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted April 6, 2009 Share Posted April 6, 2009 Actually this is probably better (credit to David Bethel for block definition code): [b][color=BLACK]([/color][/b]defun c:brep [b][color=FUCHSIA]([/color][/b]/ bdef blk brep ss doc spc i j[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]vl-load-com[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq bdef [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]while [b][color=NAVY]([/color][/b]not blk[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]setq blk [b][color=MAROON]([/color][/b]getstring t [b][color=GREEN]([/color][/b]strcat [color=#2f4f4f]"\nSpecify Block to be Inserted <"[/color] bdef [color=#2f4f4f]">: "[/color][b][color=GREEN])[/color][/b][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]eq [color=#2f4f4f]""[/color] blk[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq blk bdef[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 blk[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]tblsearch [color=#2f4f4f]"BLOCK"[/color] blk[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 blk[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]findfile [b][color=RED]([/color][/b]strcat blk [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] blk[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 blk nil bdef [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]if [b][color=NAVY]([/color][/b]setq brep [b][color=MAROON]([/color][/b]car [b][color=GREEN]([/color][/b]entsel [color=#2f4f4f]"\nSelect Block to be Replaced: "[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]progn [b][color=MAROON]([/color][/b]if [b][color=GREEN]([/color][/b]setq ss [b][color=BLUE]([/color][/b]ssget [color=#2f4f4f]"X"[/color] [b][color=RED]([/color][/b]list [b][color=PURPLE]([/color][/b]cons 0 [color=#2f4f4f]"INSERT"[/color][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]cons 2 [b][color=TEAL]([/color][/b]cdr [b][color=OLIVE]([/color][/b]assoc 2 [b][color=GRAY]([/color][/b]entget brep[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]if [b][color=TEAL]([/color][/b]getvar [color=#2f4f4f]"CTAB"[/color][b][color=TEAL])[/color][/b][b][color=TEAL]([/color][/b]cons 410 [b][color=OLIVE]([/color][/b]getvar [color=#2f4f4f]"CTAB"[/color][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]cons 67 [b][color=OLIVE]([/color][/b]- 1 [b][color=GRAY]([/color][/b]getvar [color=#2f4f4f]"TILEMODE"[/color][b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][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=GREEN]([/color][/b]progn [b][color=BLUE]([/color][/b]setq doc [b][color=RED]([/color][/b]vla-get-ActiveDocument [b][color=PURPLE]([/color][/b]vlax-get-Acad-Object[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] spc [b][color=RED]([/color][/b]if [b][color=PURPLE]([/color][/b]zerop [b][color=TEAL]([/color][/b]vla-get-activespace doc[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]if [b][color=TEAL]([/color][/b]= [b][color=OLIVE]([/color][/b]vla-get-mspace doc[b][color=OLIVE])[/color][/b] :vlax-true[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]vla-get-modelspace doc[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]vla-get-paperspace doc[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]vla-get-modelspace doc[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] i 0 j 0[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]vla-EndUndoMark doc[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]vla-StartUndoMark doc[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]foreach ent [b][color=RED]([/color][/b]mapcar 'vlax-ename->vla-object [b][color=PURPLE]([/color][/b]mapcar 'cadr [b][color=TEAL]([/color][/b]ssnamex ss[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]vla-insertblock spc [b][color=PURPLE]([/color][/b]vla-get-InsertionPoint ent[b][color=PURPLE])[/color][/b] blk [b][color=PURPLE]([/color][/b]vla-get-xscalefactor ent[b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]vla-get-yscalefactor ent[b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]vla-get-zscalefactor ent[b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]vla-get-rotation ent[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]if [b][color=PURPLE]([/color][/b]vl-catch-all-error-p [b][color=TEAL]([/color][/b]vl-catch-all-apply 'vla-delete [b][color=OLIVE]([/color][/b]list ent[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]setq i [b][color=TEAL]([/color][/b]1+ i[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]setq j [b][color=TEAL]([/color][/b]1+ j[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]princ [b][color=RED]([/color][/b]strcat [color=#2f4f4f]"\n"[/color] [b][color=PURPLE]([/color][/b]itoa j[b][color=PURPLE])[/color][/b] [color=#2f4f4f]" Blocks Replaced"[/color] [b][color=PURPLE]([/color][/b]if [b][color=TEAL]([/color][/b]zerop i[b][color=TEAL])[/color][/b] [color=#2f4f4f]"."[/color] [b][color=TEAL]([/color][/b]strcat [b][color=OLIVE]([/color][/b]itoa i[b][color=OLIVE])[/color][/b] [color=#2f4f4f]" were on a Locked Layer!"[/color][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]vla-EndUndoMark doc[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]princ [color=#2f4f4f]"\n<!> No Blocks Found <!>"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]princ [color=#2f4f4f]"\n<!> Replacement Block not Valid <!>"[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]princ[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b] Quote Link to comment Share on other sites More sharing options...
SAM_R Posted April 6, 2009 Author Share Posted April 6, 2009 Thank you i'll try it out. Quote Link to comment Share on other sites More sharing options...
SAM_R Posted April 6, 2009 Author Share Posted April 6, 2009 That didn't work they are still coming in the wrong way. Any other suggestions. Quote Link to comment Share on other sites More sharing options...
Lee Mac Posted April 6, 2009 Share Posted April 6, 2009 That didn't work they are still coming in the wrong way. Any other suggestions. Hmmm... it must be something to do with your block - the LISP is very simple - just retrieves the insertion, scale and rotation of all the blocks (a sample of which the user selects), and replaces them with a block with the same properties. See video Block Replace.zip Quote Link to comment Share on other sites More sharing options...
David Bethel Posted April 7, 2009 Share Posted April 7, 2009 You can (entmod) DXF group 2 in an INSERT definition for an easy update: [b][color=BLACK]([/color][/b]defun c:ins2ins [b][color=FUCHSIA]([/color][/b]/ lb bn ss i en ed[b][color=FUCHSIA])[/color][/b] [color=#8b4513];;;GET NEW BLOCK INFO[/color] [b][color=FUCHSIA]([/color][/b]setq lb [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]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 [b][color=GREEN]([/color][/b]strcat [color=#2f4f4f]"\nBLOCK To Insert <"[/color] lb [color=#2f4f4f]">: "[/color][b][color=GREEN])[/color][/b][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]= bn [color=#2f4f4f]""[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq bn lb[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]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 lb [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]while [b][color=NAVY]([/color][/b]not ss[b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]princ [color=#2f4f4f]"\nSelect INSERTs To Update..."[/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]"INSERT"[/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=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq i [b][color=NAVY]([/color][/b]sslength ss[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]minusp [b][color=GREEN]([/color][/b]setq i [b][color=BLUE]([/color][/b]1- i[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 en [b][color=MAROON]([/color][/b]ssname ss i[b][color=MAROON])[/color][/b] ed [b][color=MAROON]([/color][/b]entget en[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]entmod [b][color=MAROON]([/color][/b]subst [b][color=GREEN]([/color][/b]cons 2 bn[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]assoc 2 ed[b][color=GREEN])[/color][/b] ed[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] -David Quote Link to comment Share on other sites More sharing options...
SAM_R Posted April 21, 2009 Author Share Posted April 21, 2009 When using the LISP form Lee it ask to Select 3D Solids. I don't think this is right. What am I doing wrong? Quote Link to comment Share on other sites More sharing options...
Hsanon Posted May 18, 2015 Share Posted May 18, 2015 Sam.... Just change the name of Lee's program to Blrep.lsp (and ind replace all brep to blrep) it then works !!! Lee.... is there a way to choose just the few blocks to replace ... and not all in the drawing ??? 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.