| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Text in Block überprüfen und ggf. ändern (810 mal gelesen)
|
tommygo Mitglied
Beiträge: 47 Registriert: 03.02.2005
|
erstellt am: 28. Sep. 2007 10:56 <-- editieren / zitieren --> Unities abgeben:
Hallo, wir sind mit der Firma umgezogen und nun vergesse ich teilweise bei älteren Plänen im Schriftkopf die Anschrift zu ändern. Gibt es eine Möglichkeit, dass beim öffnen einer Zeichnung den Text in einem Block (der innerhalb einer DWG auch mehrmals vorkommen kann) zu überprüfen und ggf zu ändern. Da wir innerhalb des Ortes umgezogen sind, ist eigentlich nur STRASSEALT gegen STRASSENEU auszutauschen. Ich habe mich im Forum schon umgeschaut haben aber keine Lösung gefunden (http://ww3.cad.de/foren/ubb/Forum54/HTML/011126.shtml#000003) Wenn ich nach dieser Lösung vorgehe (http://ww3.cad.de/foren/ubb/Forum54/HTML/011068.shtml#000004) erhalte ich von Autocad die Meldung "Kann Datei nicht finden im Suchpfad:" obwohl in EXTRAS-OPTIONEN-Dateien der Suchpfad in dem der Block steht eingetragen ist. Nachtrag: der Schriftkopf hat zu 90% den gleichen Namen, teilweise musste aber ein von Externen vorgeschriebener Kopf verwendet werden und diesen kann ich leider nicht durch Block austauschen ersetzen, sondern nur der Textinhalt (STRASSEALT gegen STRASSENEU) müßte ersetzt werden Ich sage schon einmal besten Dank für Eure Lösungsvorschläge [Diese Nachricht wurde von tommygo am 28. Sep. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 28. Sep. 2007 11:13 <-- editieren / zitieren --> Unities abgeben: Nur für tommygo
Hallo tommygo, du könntest folgendes z.B. in die acad.lsp schreiben. (if (tblsearch "BLOCK" blk_name) (progn (setq mem_attreq (getvar "attreq")) (command "_.insert" (strcat blk_name "=" datname) "0,0" "1" "" "0" ) (entdel (entlast)) (setvar "attreq mem_attreq") ) ) Wobei blk_name der Name des Blocks in der Zeichnung ist (sollte ja immer der selbe sein) und datname die dwg (mit Pfad) in der du den neuen Kopf hast. Gruß Andreas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tommygo Mitglied
Beiträge: 47 Registriert: 03.02.2005
|
erstellt am: 28. Sep. 2007 13:26 <-- editieren / zitieren --> Unities abgeben:
Hallo Andreas vielen Dank für deinen Tip. Ich habe diesen auch getestet, bekomme aber folgende Fehlermeldung Befehl: ; Fehler: Fehlerhafter Argumenttyp: stringp nil Hab ich eine falsche LISP ? (if (tblsearch "BLOCK" kopf) (progn (setq mem_attreq (getvar "attreq")) (command "_.insert" (strcat kopf "=" j:/symb2003/din/kopf) "0,0" "1" "" "0" ) (entdel (entlast)) (setvar "attreq mem_attreq") ) ) Danke tommygo
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1455 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 28. Sep. 2007 13:32 <-- editieren / zitieren --> Unities abgeben: Nur für tommygo
Hallo tommygo, probiers mal so: (if (tblsearch "BLOCK" "kopf") (progn (setq mem_attreq (getvar "attreq")) (command "_.insert" (strcat "kopf" "=" j:/symb2003/din/kopf) "0,0" "1" "" "0" ) (entdel (entlast)) (setvar "attreq mem_attreq") ) ) Gruß Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tommygo Mitglied
Beiträge: 47 Registriert: 03.02.2005
|
erstellt am: 28. Sep. 2007 13:58 <-- editieren / zitieren --> Unities abgeben:
so funktioniert es jetzt: (if (tblsearch "BLOCK" "kopf") (progn (setq mem_attreq (getvar "attreq")) (command "_.insert" (strcat "kopf" "=" "j:/symb2003/din/kopf") "0,0" "1" "" "0" ) (entdel (entlast)) (setvar "attreq mem_attreq") ) ) ABER wie verhindere ich jetzt die Abfrage der 22 folgenden Attribute. UND/ODER gibt es auch eine Möglichkeit nur den Text STRASSEALT gegen STRASSENEU auszutauschen, damit ich auch die Zeichnungen erschlagen kann in denen nicht unser Standardblock KOPF enthalten ist ----------------------------------------------- Habe dir Andreas erstmal 10 Unities übermittelt [Diese Nachricht wurde von tommygo am 28. Sep. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tommygo Mitglied
Beiträge: 47 Registriert: 03.02.2005 Windows 7 Professional - Version 6.1 - SP 1 Autodesk Building Design Suite Premium 2017
|
erstellt am: 02. Okt. 2007 13:17 <-- editieren / zitieren --> Unities abgeben:
das Thema habe ich noch einmal im Forum LISP eingestellt und wurde dort dank Andreas Kraus zu meiner Zufriedenheit so beantwortet -------------------------------------------- (if (setq blk_data (tblsearch "BLOCK" "kopf")) (progn (setq ent_name (cdr (assoc -2 blk_data))) (while ent_name (setq ent_data (entget ent_name)) (if (and (= (cdr (assoc 0 ent_data)) "TEXT") (= (cdr (assoc 1 ent_data)) "STRASSEALT") ) (progn (setq ent_data (subst (cons 1 "STRASSENEU") (assoc 1 ent_data) ent_data ) ) (entmod ent_data) ) ) (setq ent_name (entnext ent_name)) ) ) (princ) ) ----------------------------------------------- http://ww3.cad.de/foren/ubb/Forum145/HTML/002255.shtml Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |