| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Blöcke bearbeiten (1067 mal gelesen)
|
Gitti 83 Mitglied Hochbautechnikerin
Beiträge: 5 Registriert: 09.09.2005 System: Microsoft Windows XP/Professional/Version 2002/Service Pack2 Computer: Intel(R)/Pentium(R)4CPU 3.40GHz/3.41GHz,1,00GB RAM ADT 2005 SP1
|
erstellt am: 09. Okt. 2006 14:14 <-- editieren / zitieren --> Unities abgeben:
Hallo! Ich hoffe mir kann hier jemand helfen!? Ich bekomme Zeichnungsdateien mit denen ich weiterarbeiten muss,in denen viele,viele blöcke sind die alle einen anderern Namen haben und in denen Lienentyp,Lienenstärke und Linienfarbe immer unterschiedlich sind.Gibt es irgent einen Befehl oder eine Lisp mit der ich alle Blöcke auf "von Block" umstellen kann,ohne dass ich jeden einzelnen bearbeiten muss?? Würde mich freuen,wenn´s da etwas gibt!Dann wär ich nämlich um einiges schneller! GLG Gitti Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur
Beiträge: 7085 Registriert: 13.01.2004 ich hab zum Glück kein ACA... ;)
|
erstellt am: 09. Okt. 2006 14:37 <-- editieren / zitieren --> Unities abgeben: Nur für Gitti 83
Aus dieser Grundlage http://new.cadalyst.com/code/tips/CodeSearch_Detail.cfm?ID=850 entstand dieser Code: Code:
; TIP850: BLO.LSP (c)1993, J. Todd Owen ; Changes all entities within selected block to layer 0(defun C:BL0 (/ CL ENAME ENT) (setvar "CMDECHO" 0) (setvar "HIGHLIGHT" 0) (setq CL (getvar "CLAYER")) (command ".LAYER" "S" "0" "") (setq ENAME nil ENT nil) (while (= ENAME nil) (setq ENAME (car (entsel "\nSelect block to redefine on layer 0: "))) ) (setq ENT (entget ENAME)) (if (= (ITEM 0 ENT) "INSERT") (progn (command ".COPY" ENAME "" "@" "@") (setq ENAME (entlast)) (BLOCK0 ENAME) ) (progn (princ "\nError: A block must be selected.") (C:BL0)) ) (command ".LAYER" "S" CL "") (setvar "HIGHLIGHT" 1) (setvar "CMDECHO" 1) (princ) ) (defun BLOCK0 (ENAME / ENAME2 ENT INSPT BLKNAME SSBLK) (setq ENT (entget ENAME)) (setq INSPT (ITEM 10 ENT)) (setq BLKNAME (ITEM 2 ENT)) (setq ENT (subst (cons 41 1) (assoc 41 ENT) ENT)) ;x-scale (setq ENT (subst (cons 42 1) (assoc 42 ENT) ENT)) ;y-scale (setq ENT (subst (cons 43 1) (assoc 43 ENT) ENT)) ;z-scale (setq ENT (subst (cons 50 0) (assoc 50 ENT) ENT)) ;rotation angle (entmod ENT) (command ".EXPLODE" ENAME) (setq ENAME (entnext ENAME)) (setq SSBLK (ssadd)) (while (/= ENAME nil) (setq ENT (entget ENAME)) (setq ENT (subst (cons 8 "0") (assoc 8 ENT) ENT)) ;layer (setq ENT (subst (cons 62 256) (assoc 62 ENT) ENT)) ;color (setq ENT (subst (cons 6 "BYBLOCK") (assoc 6 ENT) ENT)) ;ltype (entmod ENT) (setq SSBLK (ssadd ENAME SSBLK)) (if (= (ITEM 0 ENT) "INSERT") ;if ENAME is a block (progn (command ".COPY" ENAME "" "@" "@") (setq ENAME2 (entlast)) (BLOCK0 ENAME2) ) ) (setq ENAME (entnext ENAME)) ) (command ".BLOCK" BLKNAME "Y" INSPT SSBLK "") ) (defun ITEM (N ENT) (cdr (assoc N ENT)) )
Jetzt musst du die Blöcke nur noch selektieren und am Layer 0 müssen sie liegen. Achja - der Aufruf erfolgt mit "BL0" (also BL Null). ------------------ Grüsse Thomas [Diese Nachricht wurde von tunnelbauer am 09. Okt. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sleepless Mitglied Architekt
Beiträge: 947 Registriert: 30.05.2004
|
erstellt am: 09. Okt. 2006 14:44 <-- editieren / zitieren --> Unities abgeben: Nur für Gitti 83
|
Gitti 83 Mitglied Hochbautechnikerin
Beiträge: 5 Registriert: 09.09.2005 System: Microsoft Windows XP/Professional/Version 2002/Service Pack2 Computer: Intel(R)/Pentium(R)4CPU 3.40GHz/3.41GHz,1,00GB RAM ADT 2005 SP1
|
erstellt am: 09. Okt. 2006 16:34 <-- editieren / zitieren --> Unities abgeben:
|