| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Fremdpläne anpassen (2994 mal gelesen)
|
Maese Mitglied Konstrukteur
Beiträge: 26 Registriert: 16.06.2003
|
erstellt am: 12. Okt. 2004 14:59 <-- editieren / zitieren --> Unities abgeben:
Allzuoft muss ich externe Pläne als Grundlage in die Zeichnung als xref einfügen. Vorher ist aber mühlelige Fleissarbeit angesagt. Ich komme leider zu keinem Ziel mit meinen wenigen Lisp-Erfahrungen. Ich suche eine Lisp-Routine, die mir zuerst alle Attribute auflöst und deren Inhalt wieder zurück schreibt. Dann sollten alle Xref's gebunden werden und als nächstes müssen alle Blöcke im Modell und in den verschiedenen Layouts aufgelöst werden. Zum Schluss sollten alle Objekte der Zeichnung noch auf die Farbe "grau" geändert werden. Gruss Maese Bin nun schon seit Wochen am probieren und zusammensuchen. Vieleicht kann mir einer von euch Profis da ein bisschen weiterhelfen.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003 One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11
|
erstellt am: 12. Okt. 2004 15:16 <-- editieren / zitieren --> Unities abgeben: Nur für Maese
BURST aus den EXPRESSTOOLS (Um Blöcke mit Attribute zu zerlegen, wobei der Attributinhalt in Text umgewandelt wird) Zum Binden von XREFS -XREF Binden * und NUKE.lsp (bei CADwiesel.de) zum setzen aller Blockelemente auf Vonlayer. (wie lange suchst du schon? ) Wozu das auf allen Layouts passieren soll, wenn die Zeichnung nur als XREF genutzt wird ist mir aber ein Rätsel. Mit freundlichem Gruß Udo Hübner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1111 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 12. Okt. 2004 15:18 <-- editieren / zitieren --> Unities abgeben: Nur für Maese
Hallo Maese, warum willst du alle Attribute und Blöcke auflösen? Ich weiss nicht ob es sinnvoll ist, Fremdzeichnungen so zu "zerkloppen". Das "grau" setzen der Elemente kannst Du auch in Deiner Zeichnung, in die du die Fremdzeichnung als xref einfügst. Einfach alle xref|layer auf grau setzen, Systemvariable visretain=1, dann merkt sich die Zeichnung das auch. Setzt voraus, dass alle Elemente in der Fremdzeichnung die Farbe "vonlayer" haben, aber das ist ja schnell erledigt. Für Elemente von Blöcken geht das mit dem lisp "block_konvert.lsp" von ??? (einfach mal nach suchen). Viele Grüße spider Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Maese Mitglied Konstrukteur
Beiträge: 26 Registriert: 16.06.2003
|
erstellt am: 12. Okt. 2004 15:39 <-- editieren / zitieren --> Unities abgeben:
Da die Blöcke und Attribute eine feste Farbe zugewiesen haben, soll diese nun geändert werden. Deshalb alles auflösen. Und Udo hat recht. Ich muss die Xrefs und die Blöcke in den Layouts nicht binden und auflöse, sondern entfernen. Danke. Das Lisp "block_konvert.lsp" kann ich leider nicht finden. Wo hast du das her, Spider? Gruss Maese Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003 One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11
|
erstellt am: 12. Okt. 2004 16:05 <-- editieren / zitieren --> Unities abgeben: Nur für Maese
Original von mir 2 Beiträge höher Zitat:
und NUKE.lsp (bei CADwiesel.de) zum setzen aller Blockelemente auf Vonlayer.
Na, das ich mich selbst zitieren muss . Das Auflösen der Blöcke kann man sich genau mit diesem Tool ersparen, denn hier werden alle Farben auf vonlayer zurückgesetzt und dann läßt sich die Zeichnung prima als XREF mit einer Farbe verwenden. Es hat sich hier im Formum schon oft als nützlich erwiesen, nicht nur eine Detailfrage zu stellen, sondern das Problem bzw. die Aufgabenstellung zu beschreiben. Manchmal haben andere schon intelligentere Lösungen auf Lager als einem selbst einfallen. (damit meine ich nicht unbedingt meine Lösungen). Mit feundlichem Gruß Udo Hübner
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
michelangelo Mitglied
Beiträge: 158 Registriert: 08.04.2004 Win XP, ACAD 2002 ExpressTool vom ACAD 2000
|
erstellt am: 12. Okt. 2004 16:17 <-- editieren / zitieren --> Unities abgeben: Nur für Maese
habe das nuke ausprobiert das geht nicht. ich weiss nicht warum aber es geht nicht bei allen fremdzeichnungen und blöcken. deshalb habe ich mit hilfe dieses forums mein eigens lisp kreiert. (command "BEREINIG" "AL" "" "N") (command "_AUDIT" "J") (C:as2isocp) ; ;as2isocp setzt alle schriftstile auf isocp ; (command "_.LAYER" "FA" "8" "*" "T" "*" "") ;;; (setq Index -1) ;;; (repeat (sslength (setq aws (ssget "_X" '((0 . "DIM*"))))) ;;; (command "_.explode" ;;; (ssname aws (Setq Index (1+ Index))) ;;; ) ;;; ) (C:EXPLODE_ALL) (command "ändern" "alle" "" "E" "Fa" "VONLAYER" "") ; (command "-BEREINIG" "AL" "" "N") (command "_audit" "j") (command "filedia" "1") (command "_qsave") (command "_qsave") ) ;ende von aufbereiten (defun C:EXPLODE_ALL (/ INDEX AUSWAHLSATZ OBJFILTER ASLENGTH) (command "_.-layer" "_thaw" "*" "_unlock" "*" "_on" "*" "") (setq OBJFILTER (cons 0 "DIM*,INSERT,*POLYLINE,HATCH")) (if (not (setq AUSWAHLSATZ (ssget "_I" (list OBJFILTER (cons 410 (getvar "ctab"))) ) ;_ end of ssget ) ;_ end of setq ) ;_ wenn kein pickset vorh. (progn (setq AUSWAHLSATZ (ssget "_X" (list OBJFILTER (cons 410 (getvar "ctab"))) ) ;_ end of ssget ) ; nimm alle (if AUSWAHLSATZ (progn (setq INDEX -1 ASLENGTH (sslength AUSWAHLSATZ) ) ;_ end of if (repeat ASLENGTH ;_ end of sslength (command "_.explode" (ssname AUSWAHLSATZ (setq INDEX (1+ INDEX))) ) ;_ end of command ) ;_ end of repeat (princ (strcat "\n>> " (itoa ASLENGTH) " << Objekt(e) aufgelöst. " ) ;_ end of strcat ) ;_ end of princ ) ;_ end of progn (princ "\nKeine auflösbaren Objekte gefunden!") ) ;_ end of if ) ;_ end of progn ) ;_ end of if (princ) ) ; ;© 03.04.2004 mic & mit hilfe von cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1111 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 12. Okt. 2004 16:51 <-- editieren / zitieren --> Unities abgeben: Nur für Maese
Zitat: Original erstellt von Maese:
Das Lisp "block_konvert.lsp" kann ich leider nicht finden. Wo hast du das her
weiss ich auch nicht mehr, steht auch nichts drin, somit vielen Dank unbekannterweise an den ursprünglichen "erzeuger". ich habe es noch so angepasst, dass es die elemente wahlweise auch auf den aktuellen layer legt und auch unbenannte blöcke behandelt. anbei mal meine Version davon. Gruß spider Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 12. Okt. 2004 17:13 <-- editieren / zitieren --> Unities abgeben: Nur für Maese
Zitat: Original erstellt von spider_dd: weiss ich auch nicht mehr, steht auch nichts drin, somit vielen Dank unbekannterweise an den ursprünglichen "erzeuger".
Ich oute mich mal , war von mir .. und Dank angenommen.. Hier ist auch noch ne andere Version davon. den Originalbeitrag find ich momentan auch nicht <sorry> ------------------ - Thomas - "Bei 99% aller Problemen ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."
[Diese Nachricht wurde von CADmium am 12. Okt. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Maese Mitglied Konstrukteur
Beiträge: 26 Registriert: 16.06.2003
|
erstellt am: 13. Okt. 2004 08:43 <-- editieren / zitieren --> Unities abgeben:
Der Code von michelangelo funktioniert soweit bestens, nur die Attribute (Höhenkoten mit Pfeil) lassen sich nicht über "BURST" bearbeiten. Lisp in Lisp. Auch wenn "burst" zuerst geladen wird. Hat mir da noch jemand einen Tipp, wie man das bewerkstelligen kann. Durch auflösen der Attribute in den Ursrung würden sehr viele Infos verlorengehen! Besten Dank an euch alle. Gruss Maese Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AsSchu Ehrenmitglied Konstrukteur
Beiträge: 1632 Registriert: 27.06.2003 ACAD 2007,cadMANdu Win 2000 XP
|
erstellt am: 13. Okt. 2004 11:36 <-- editieren / zitieren --> Unities abgeben: Nur für Maese
|
Maese Mitglied Konstrukteur
Beiträge: 26 Registriert: 16.06.2003
|
erstellt am: 13. Okt. 2004 13:08 <-- editieren / zitieren --> Unities abgeben:
|
AsSchu Ehrenmitglied Konstrukteur
Beiträge: 1632 Registriert: 27.06.2003 ACAD 2007,cadMANdu Win 2000 XP
|
erstellt am: 13. Okt. 2004 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für Maese
Zitat: Original erstellt von Maese: Ja, super. Und, würdest du es mir zur verfügung stellen.Danke im voraus. Maese
hier ist es. ;************************************************************************* ;** Datei ATTRTXT.LSP ;** Dient zum Umwandeln von sichtbaren Blockattributen in Text ;************************************************************************* ;** Funktionen ;** C:ATTRTOTXT_EXP Wandelt sichtbare Blockattribute in Text um und ;** zerlegt den Block ;** C:ATTRTOTXT_NOEXP Wandelt sichtbare Blockattribute in Text und setzt ;** alle Attributwerte des Blocks auf "", der Block ;** wird nicht zerlegt ;************************************************************************* ;** Autor: NAVRATIL Heinz ;** Stand: 04.11.1998 ;** Ver.: 4.2 -- AutoCAD Ver. 13 / 14, 2000,2002 ;** email: hnavratil@KGH.KABA.com ;************************************************************************* ;** ---------------------------------------------------------------------- ;** C:ATTRTOTXT_EXP ;** ---------------------------------------------------------------------- (defun C:attrtotxt_exp( / as i e el bn nl l1 l2) (if (setq as (ssget)) (progn (setq i 0) (while (setq e (ssname as i)) (setq el (entget e)) (if (/= (assoc 66 el) nil) (progn (setq bn e) (while (/= (cdr (assoc 0 (setq el (entget e)))) "SEQEND") (if (and (= (cdr (assoc 0 el)) "ATTRIB") (/= (logand (cdr (assoc 70 el)) 1) 1) ) (progn (setq nl (cdr el)) (setq nl (subst '(0 . "TEXT") (assoc 0 nl) nl)) (setq l1 (cdr (member (assoc 2 nl) nl))) (setq l2 (reverse (cdr (member (assoc 2 nl) (reverse nl))))) (setq nl (append l2 l1)) (setq l1 (cdr (member (assoc 70 nl) nl))) (setq l2 (reverse (cdr (member (assoc 70 nl) (reverse nl))))) (setq nl (append l2 l1)) (setq nl (subst (cons 73 (cdr (assoc 74 nl))) (assoc 74 nl) nl)) (entmake nl) ) ) (setq e (entnext e)) ) (setq le (entlast)) (command "._EXPLODE" bn) (while (setq le (entnext le)) (if (= (cdr (assoc 0 (entget le))) "ATTDEF") (entdel le) ) ) ) ) (setq i (1+ i)) ) (command "._REGEN") ) ) 'DANKE ) ;** ---------------------------------------------------------------------- ;** C:ATTRTOTXT_NOEXP ;** ---------------------------------------------------------------------- (defun C:attrtotxt_noexp( / as i e el bn nl l1 l2) (if (setq as (ssget)) (progn (setq i 0) (while (setq e (ssname as i)) (setq el (entget e)) (if (/= (assoc 66 el) nil) (progn (setq bn e) (while (/= (cdr (assoc 0 (setq el (entget e)))) "SEQEND") (if (and (= (cdr (assoc 0 el)) "ATTRIB") (/= (logand (cdr (assoc 70 el)) 1) 1) ) (progn (setq nl (cdr el)) (setq nl (subst '(0 . "TEXT") (assoc 0 nl) nl)) (setq l1 (cdr (member (assoc 2 nl) nl))) (setq l2 (reverse (cdr (member (assoc 2 nl) (reverse nl))))) (setq nl (append l2 l1)) (setq l1 (cdr (member (assoc 70 nl) nl))) (setq l2 (reverse (cdr (member (assoc 70 nl) (reverse nl))))) (setq nl (append l2 l1)) (setq nl (subst (cons 73 (cdr (assoc 74 nl))) (assoc 74 nl) nl)) (entmake nl) (setq el (subst '(1 . "") (assoc 2 el) el)) (entmod el) ) ) (setq e (entnext e)) ) ) ) (entupd bn) (setq i (1+ i)) ) (command "._REGEN") ) ) 'DANKE )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |