Hozzunk ki minél többet az AutoCAD-ből
-
Petko #429 magyarított nuke.lsp:
;Redefines ALL objects in any block in the drawing on layer 0.
;(c)Jay Garnett (email [email protected]) Written 1/14/97
;web page http://www.enteract.com/~jgarnett/lispfactory.htm
;Updated 1/25/97 - added select mode
;
;NUKE.LSP redefines all objects in a block on layer 0, with color and linetype
;set to BYLAYER. NUKED blocks will then take on the properties of the layer
;that they are inserted on. The routine works by modifing objects in the block table,
;so the blocks never have to be exploded.
;
;The global method redefines ALL objects in every block in the current drawing,
;except dimensions, hatching or xrefs, even if they are on a layer that is
;frozen or turned off.
;
;The select method redefines blocks selected with any standard selection method,
;as well as any blocks nested in the selected block(s).
(defun To-0( BLCK / BNAME BLIST E EDATA SPIN TMP )
;;; Prints a pinwheel on the command line
(defun Spin ( )
(setq SYM
(cond
((= SYM nil) "-")
((= SYM "-") "\\")
((= SYM "\\") "|")
((= SYM "|") "/")
((= SYM "/") "-")
)
)
(princ (strcat "\rScanning... " SYM " "))
);end spin
(if (=(type BLCK)(read "LIST"))(setq TMP(car BLCK) BLIST(cdr BLCK) BLCK TMP TMP nil))
(setq BLCK(tblsearch "BLOCK" BLCK))
(if
(and
(/=(logand(cdr(assoc 70 BLCK))1)1) ;skips annomyous blocks
(/= (logand(cdr(assoc 70 BLCK))4)4) ;skips xrefs
);and
(progn
(setq E (cdr (assoc -2 BLCK)))
(while E
(if (=(cdr(assoc 0 (entget E))) "INSERT") ;If the object is a block
(progn
(setq BNAME(cdr(assoc 2(entget E)))) ;save the name to a list
(if (not (member BNAME BLIST))
(if (not BLIST)(setq BLIST (list BNAME)) ;create the list if it doesn't exist
(setq BLIST(append BLIST(list BNAME)))
);if
);if
);progn
);if
(setq EDATA (entget E))
(if(assoc 62 EDATA) ;Resets object color to BYLAYER if it isn't.
(setq EDATA(subst(cons 62 256)(assoc 62 EDATA)EDATA))
);if
(if(assoc 6 EDATA) ;Resets object linetype to BYLAYER if it isn't.
(setq EDATA(subst(cons 6 "BYLAYER")(assoc 6 EDATA)EDATA))
);if
(setq EDATA(subst (cons 8 "0")(assoc 8 EDATA)EDATA));changes layer to 0
(entmod EDATA);updates entity
(setq E (entnext E));get next enitiy, nil if end of block
(Spin)
);end while E
);progn
);if
BLIST; returns names of any nested blocks
);defun
(defun C:NUKE( / BLK_NM CHOICE E EDATA IDX PK_BLK SS)
(command "._undo" "j")
(setq CHOICE "S")
(initget "G S")
(setq CHOICE(getkword (strcat "\n<G>lobal or <S>elect block: <" CHOICE "> ")))
(if(not CHOICE)(setq CHOICE "S"))
(if (= (strcase CHOICE) "G")
;global nuke
(while (setq BLK_NM(tblnext "BLOCK" (null BLK_NM)))
(TO-0 (cdr(assoc 2 BLK_NM)))
);while
;nuke selected block
(progn
(prompt "\nSelect Block(s) to Nuke: ")
(setq SS(ssget '((0 . "INSERT"))))
(setq IDX 0)
(repeat (sslength SS)
(setq BLK(cdr(assoc 2 (entget(ssname SS IDX)))))
(cond
(PK_BLK (setq PK_BLK(append PK_BLK (list BLK))))
(T (setq PK_BLK(list BLK)))
);cond
(setq IDX(1+ IDX))
);repeat
(while PK_BLK
(setq PK_BLK(To-0 PK_BLK))
);while
);progn
);if
(command "._regen")
(princ "\rFinished ")
(princ)
);defun
(prompt"\nNUKE loaded.")(princ)
ez meg az eredeti angol nuke_en.lsp
;Redefines ALL objects in any block in the drawing on layer 0.
;(c)Jay Garnett (email [email protected]) Written 1/14/97
;web page http://www.enteract.com/~jgarnett/lispfactory.htm
;Updated 1/25/97 - added select mode
;
;NUKE.LSP redefines all objects in a block on layer 0, with color and linetype
;set to BYLAYER. NUKED blocks will then take on the properties of the layer
;that they are inserted on. The routine works by modifing objects in the block table,
;so the blocks never have to be exploded.
;
;The global method redefines ALL objects in every block in the current drawing,
;except dimensions, hatching or xrefs, even if they are on a layer that is
;frozen or turned off.
;
;The select method redefines blocks selected with any standard selection method,
;as well as any blocks nested in the selected block(s).
(defun To-0( BLCK / BNAME BLIST E EDATA SPIN TMP )
;;; Prints a pinwheel on the command line
(defun Spin ( )
(setq SYM
(cond
((= SYM nil) "-")
((= SYM "-") "\\")
((= SYM "\\") "|")
((= SYM "|") "/")
((= SYM "/") "-")
)
)
(princ (strcat "\rScanning... " SYM " "))
);end spin
(if (=(type BLCK)(read "LIST"))(setq TMP(car BLCK) BLIST(cdr BLCK) BLCK TMP TMP nil))
(setq BLCK(tblsearch "BLOCK" BLCK))
(if
(and
(/=(logand(cdr(assoc 70 BLCK))1)1) ;skips annomyous blocks
(/= (logand(cdr(assoc 70 BLCK))4)4) ;skips xrefs
);and
(progn
(setq E (cdr (assoc -2 BLCK)))
(while E
(if (=(cdr(assoc 0 (entget E))) "INSERT") ;If the object is a block
(progn
(setq BNAME(cdr(assoc 2(entget E)))) ;save the name to a list
(if (not (member BNAME BLIST))
(if (not BLIST)(setq BLIST (list BNAME)) ;create the list if it doesn't exist
(setq BLIST(append BLIST(list BNAME)))
);if
);if
);progn
);if
(setq EDATA (entget E))
(if(assoc 62 EDATA) ;Resets object color to BYLAYER if it isn't.
(setq EDATA(subst(cons 62 256)(assoc 62 EDATA)EDATA))
);if
(if(assoc 6 EDATA) ;Resets object linetype to BYLAYER if it isn't.
(setq EDATA(subst(cons 6 "BYLAYER")(assoc 6 EDATA)EDATA))
);if
(setq EDATA(subst (cons 8 "0")(assoc 8 EDATA)EDATA));changes layer to 0
(entmod EDATA);updates entity
(setq E (entnext E));get next enitiy, nil if end of block
(Spin)
);end while E
);progn
);if
BLIST; returns names of any nested blocks
);defun
(defun C:NUKE( / BLK_NM CHOICE E EDATA IDX PK_BLK SS)
(command "._undo" "m")
(setq CHOICE "S")
(initget "G S")
(setq CHOICE(getkword (strcat "\n<G>lobal or <S>elect block: <" CHOICE "> ")))
(if(not CHOICE)(setq CHOICE "S"))
(if (= (strcase CHOICE) "G")
;global nuke
(while (setq BLK_NM(tblnext "BLOCK" (null BLK_NM)))
(TO-0 (cdr(assoc 2 BLK_NM)))
);while
;nuke selected block
(progn
(prompt "\nSelect Block(s) to Nuke: ")
(setq SS(ssget '((0 . "INSERT"))))
(setq IDX 0)
(repeat (sslength SS)
(setq BLK(cdr(assoc 2 (entget(ssname SS IDX)))))
(cond
(PK_BLK (setq PK_BLK(append PK_BLK (list BLK))))
(T (setq PK_BLK(list BLK)))
);cond
(setq IDX(1+ IDX))
);repeat
(while PK_BLK
(setq PK_BLK(To-0 PK_BLK))
);while
);progn
);if
(command "._regen")
(princ "\rFinished ")
(princ)
);defun
(prompt"\nNUKE loaded.")(princ)