| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Ersetzen über Lisp (3235 mal gelesen)
|
Kleiner_pally Mitglied Zeichner
Beiträge: 74 Registriert: 03.05.2004 AutoCAD 2002 Netzwerk mit Express Tool Mein Os: XP prof. AMD Athlon 2000+ 512 MB RAM NIVIDA GEFORCE Grafikkarte
|
erstellt am: 18. Jun. 2004 08:45 <-- editieren / zitieren --> Unities abgeben:
Hallo, wie kann ich über Lisp mehrere texte die zb. xxx durch yyy ersetzen aber das mehrmals unterschiedlich (xxx -> yyy u. bbb -> ccc usw..) Ich kenne den befehl schon _suchen. Doch leider habe ich mehrere Pläne und immer wieder das gleiche ersetzen muss, da ich es mit der Schriftdatei nicht hinbekomme vom ersteller der kein ACAD verwendet. kann mir da einer weiterhelfen ? wäre super wenn sowas gäbe der die texte ersetzt ! danke schonmal im vorraus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marvin101010 Mitglied ingenieur der architektur ohne diplom, bauzeichner ohne lehre, cad-admin ohne wissen :-)
Beiträge: 562 Registriert: 22.01.2003 Pentium 4 Windows XP Autocad 2002 Autocad 2002LT + Extender ADT 3.3 ArchiCAD
|
erstellt am: 18. Jun. 2004 09:35 <-- editieren / zitieren --> Unities abgeben: Nur für Kleiner_pally
|
Kleiner_pally Mitglied Zeichner
Beiträge: 74 Registriert: 03.05.2004 AutoCAD 2002 Netzwerk mit Express Tool Mein Os: XP prof. AMD Athlon 2000+ 512 MB RAM NIVIDA GEFORCE Grafikkarte
|
erstellt am: 18. Jun. 2004 09:36 <-- editieren / zitieren --> Unities abgeben:
|
mkl-cad Mitglied Technischer Zeichner
Beiträge: 378 Registriert: 23.07.2003 ACAD 2002 Express Tools 1-9 Architektural Desktop Windows XP Server Windows 2003 3 GHz Rechner 1 GB RAM 80 GB Festplatte ATI FireGL V3100 2 17" Flachbildschirme
|
erstellt am: 18. Jun. 2004 09:43 <-- editieren / zitieren --> Unities abgeben: Nur für Kleiner_pally
Hallo Pally Interessantes Thema. Eine Lösung könnte ich auch gut gebrauchen. Ich denke am besten währe nicht nur Text und Mtext sondern auch Blöcke. Genau so wie im Befehl _find.
------------------ Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kleiner_pally Mitglied Zeichner
Beiträge: 74 Registriert: 03.05.2004 AutoCAD 2002 Netzwerk mit Express Tool Mein Os: XP prof. AMD Athlon 2000+ 512 MB RAM NIVIDA GEFORCE Grafikkarte
|
erstellt am: 18. Jun. 2004 09:47 <-- editieren / zitieren --> Unities abgeben:
|
marvin101010 Mitglied ingenieur der architektur ohne diplom, bauzeichner ohne lehre, cad-admin ohne wissen :-)
Beiträge: 562 Registriert: 22.01.2003 Pentium 4 Windows XP Autocad 2002 Autocad 2002LT + Extender ADT 3.3 ArchiCAD
|
erstellt am: 18. Jun. 2004 10:28 <-- editieren / zitieren --> Unities abgeben: Nur für Kleiner_pally
mir ist nur noch nicht ganz klar, warum du glaubst, dass es besser oder schneller als mit suchen -> ersetzen geht... Wie genau stellt ihr euch denn das Handling vor? ------------------ ...so long and thanx for all the fish! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kleiner_pally Mitglied Zeichner
Beiträge: 74 Registriert: 03.05.2004 AutoCAD 2002 Netzwerk mit Express Tool Mein Os: XP prof. AMD Athlon 2000+ 512 MB RAM NIVIDA GEFORCE Grafikkarte
|
erstellt am: 18. Jun. 2004 10:38 <-- editieren / zitieren --> Unities abgeben:
Hoffe ich kann es einigermaßen erklären also habe einen plan bekommen wo die schriftdatei fehlt zb. bei Umlauten macht er ein ? hin ! (zb. L?ngstschnitt o. schwei?en) das ß ! im text ist es genau def. %%225 = ß ! und bei mehreren plänen suchen ersetzen machen ist langsam nervig ! bei umlauten ß und auch sonderzeichen wie durchmesser usw... Hoffe du weißt jetzt was ich meine mit meinen Problem. damit man gleich in die Lisp reinschreibt was er erstzen soll weil es standartmäßig immer wieder ist. Danke schonmal im vorraus [Diese Nachricht wurde von Kleiner_pally am 18. Jun. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 18. Jun. 2004 10:49 <-- editieren / zitieren -->
Zitat: Original erstellt von Kleiner_pally: wie kann ich über Lisp mehrere texte die zb. xxx durch yyy ersetzen aber das mehrmals unterschiedlich (xxx -> yyy u. bbb -> ccc usw..)
Schau mal im Thread http://ww3.cad.de/foren/ubb/Forum54/HTML/003598.shtml nach dem Beitrag von mir mit dem LISP-Programm GSR. Das Programm ist uralt und berücksichtigt keine MTEXT-Elemente, aber das wäre einfach zu erweitern. Dafür bearbeitet es auch Texte innerhalb von Blöcken sowie Attribute. Tom Berger
------------------ ArchTools: AutoCAD-Werkzeuge für Architektur, Bauplanung und Immobilienverwaltung
- architekturgerechte Bemaßung, beliebige Einheiten, hochgestellte Millimeter, Öffnungsmaße uvm ...
- "doppelt" assoziative Höhenkoten für Schnittdarstellung und Grundriss
- assoziative Flächenermittlung nach DIN 277 und II.BVO
- Textautomatisierung, Plotstempel uvm ...
Hier geht's zum ArchTools Forum, und hier zu weiteren Infos und zur kostenlosen Demoversion |
marvin101010 Mitglied ingenieur der architektur ohne diplom, bauzeichner ohne lehre, cad-admin ohne wissen :-)
Beiträge: 562 Registriert: 22.01.2003 Pentium 4 Windows XP Autocad 2002 Autocad 2002LT + Extender ADT 3.3 ArchiCAD
|
erstellt am: 18. Jun. 2004 11:09 <-- editieren / zitieren --> Unities abgeben: Nur für Kleiner_pally
Schon mal was von CADconv der Firma Kazmierczak gehört...ist wie geschaffen für dich. Geh mal auf die HP und lad dir das Demo runter! Wenn jemand öfter Fremdpläne zu bearbeiten hat ist es wirklich gut! ------------------ ...so long and thanx for all the fish! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kleiner_pally Mitglied Zeichner
Beiträge: 74 Registriert: 03.05.2004 AutoCAD 2002 Netzwerk mit Express Tool Mein Os: XP prof. AMD Athlon 2000+ 512 MB RAM NIVIDA GEFORCE Grafikkarte
|
erstellt am: 18. Jun. 2004 11:11 <-- editieren / zitieren --> Unities abgeben:
Danke tom, aber ich wüsste 1. nicht wie ich es umschreiben könnte und 2. keine Ahnung wo ich hinschreiben kann (z.B. old=%%225 new=ß) sowas in der art suche bz.w brauche ich. In der Bemaßung muss es nicht unbedingt sein... aber MTEXT und Text wäre super Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mkl-cad Mitglied Technischer Zeichner
Beiträge: 378 Registriert: 23.07.2003 ACAD 2002 Express Tools 1-9 Architektural Desktop Windows XP Server Windows 2003 3 GHz Rechner 1 GB RAM 80 GB Festplatte ATI FireGL V3100 2 17" Flachbildschirme
|
erstellt am: 18. Jun. 2004 11:45 <-- editieren / zitieren --> Unities abgeben: Nur für Kleiner_pally
Hallo Pally Tom hat auf einen Beitrag hingewiesen der die Antwort liefert. hab hier noch mal das Programm reinkopiert. Damit's jeder findet. Habe ich ausprobiert. Funktioniert fabelhaft. Dankt Tom Berger.
Tom Berger
;;; GSR.LSP / 12APR95 ;;; ;;; Copyright (C) 1995 by Thomas Berger ;;; ;;; FREEWARE: ;;; Permission to use, copy, modify, and distribute this software ;;; for any purpose and without fee is hereby granted, provided ;;; that the above copyright notice appears in all copies and ;;; that both that copyright notice and the limited warranty and ;;; restricted rights notice below appear in all supporting ;;; documentation. ;;; ;;; THOMAS BERGER PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS. ;;; THOMAS BERGER SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF ;;; MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. THOMAS BERGER ;;; DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE ;;; UNINTERRUPTED OR ERROR FREE. ;;; ;;; ;;; **************************************************************** ;;; GSR: Global Search and Replace ;;; ;;; GSR asks for two strings and replaces the first one in all ;;; TEXT entities inside the drawing file. GSR also finds and replaces ;;; nested TEXT entities inside BLOCK INSERTIONs, ATTRIBUTEs and ;;; DIMENSIONs, GSR does not handle R13 MTEXT entities. ;;; ;;; DOS2WIN calls GSR with a replacelist to convert German Umlauts ;;; from DOS to WIN ASCII ;;; ;;; WIN2DOS calls GSR with a replacelist to convert German Umlauts ;;; from WIN to DOS ASCII ;;; ;;; GLOBAL no global variables, ;;; function names: C:GSR GSR REPLACESTRING C OS2WIN C:WIN2DOS ;;; ;;; C:GSR is the command line function ;;; ;;; (GSR startentityname replacelist) the AutoLISP function ;;; to replace all text entities in your drawing, ;;; <StartEntityName> can be set to NIL ;;; i.e. (GSR nil '(("AB" "ab") ("CD" "y"))) ;;; will start with the drawings first entity ;;; and replace all "AB"s with "ab"s and all "CD"s with "y"s ;;; ;;; (REPLACESTRING text searchstring replacestring) a function ;;; to replace a string inside a text with another string ;;; **************************************************************** (defun c:gsr (/ old new) (setvar "cmdecho" 0) (command "._undo" "_group") (setq old (getstring "\nold string: ")) (if (/= "" old) (progn (setq new (getstring "\nnew string: ")) (gsr nil (list (list old new))) (command "._regenall") ) ) (command "._undo" "_end") (princ) )
(defun c:win2dos () (setvar "cmdecho" 0) (command "._undo" "_group") (gsr nil '(("Ä" "Ž") ("Ö" "™") ("Ü" "š") ("ä" "„") ("ö""”") ("ü" "") ("ß" "á"))) (command "._regenall") (command "._undo" "_end") (princ) ) (defun c:dos2win () (setvar "cmdecho" 0) (command "._undo" "_group") (gsr nil '(("Ž" "Ä") ("™" "Ö") ("š" "Ü") ("„" "ä") ("”" "ö") ("" "ü") ("á" "ß"))) (command "._regenall") (command "._undo" "_end") (princ) ) (defun gsr ( en replist / el txt) (if (= 'ENAME (type en)) nil (setq en (entnext))) (while en (cond ( (= "TEXT" (cdr (assoc 0 (setq el (entget en))))) (setq txt (cdr (assoc 1 el))) (setq txt (progn (mapcar '(lambda (x) (setq txt (replacestring txt (car x) (cadr x))) ) replist ) txt) ) (setq el (subst (cons 1 txt) (assoc 1 el) el)) (entmod el) (setq en (entnext en)) ) ( (= "ATTRIB" (cdr (assoc 0 (setq el (entget en))))) (setq txt (cdr (assoc 1 el))) (setq txt (progn (mapcar '(lambda (x) (setq txt (replacestring txt (car x) (cadr x))) ) replist ) txt) ) (setq el (subst (cons 1 txt) (assoc 1 el) el)) (entmod el) (setq en (entnext en)) ) ( (= "DIMENSION" (cdr (assoc 0 (setq el (entget en))))) (setq txt (cdr (assoc 1 el))) (if (/= "" txt) (progn (setq txt (progn (mapcar '(lambda (x) (setq txt (replacestring txt (car x) (cadr x))) ) replist ) txt) ) (setq el (subst (cons 1 txt) (assoc 1 el) el)) (entmod el) ) ) (setq en (entnext en)) ) ( (= "INSERT" (cdr (assoc 0 (setq el (entget en))))) (gsr (cdr (assoc -2 (tblsearch "BLOCK" (cdr (assoc 2 el))))) replist) (setq en (entnext en)) ) (T (setq en (entnext en)) ) ) ) (princ) ) (defun replacestring (txt sea rep / tle sle part front 1st ret) (setq tle (strlen txt) sle (strlen sea) part "") (while (< 0 tle) (cond ((< tle sle) (setq part (strcat part txt) txt "" tle 0) ) (T (setq 1st (substr txt 1 1) front (substr txt 1 sle) ) (if (= front sea) (progn (setq ret (cons rep (cons part ret)) txt (substr txt (1+ sle)) tle (strlen txt) part "" )
) (setq part (strcat part 1st) txt (substr txt 2) tle (strlen txt) ) ) ) ) ) (apply 'strcat (reverse (cons part ret))) ) (princ "\nGSR: GLOBAL SEARCH and REPLACE of TEXT entities") (princ "\n (also nested text in block insertions, attributes or dimensions).") (princ "\n FREEWARE by Tom Berger,") (princ "\n Pfannkuchstr. 17") (princ "\n D-34121 Kassel") (princ "\n Email: berger@archtools.de") (princ "\n") (princ "\n Use GSR for global search and replace, or") (princ "\n DOS2WIN to convert German Umlauts from DOS to WIN, or") (princ "\n WIN2DOS to convert German Umlauts from WIN to DOS.") (princ "\n You can also search and replace %%nnn strings!") (princ)
------------------ Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
otterloh Mitglied
Beiträge: 188 Registriert: 27.06.2001 AutoCAD 2008, 2010 Vista, Win7
|
erstellt am: 18. Jun. 2004 12:00 <-- editieren / zitieren --> Unities abgeben: Nur für Kleiner_pally
Habe etwas gefunden, kannst in die Zeilen 76 bis 85 die "suche"/ersetze mit" Zeichenfolgen eingeben. Geht mit Maßtexten, Text u. Mtext. ------------------ Gruß Werner http://Meyer-Werner.bei.T-Online.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 18. Jun. 2004 15:44 <-- editieren / zitieren -->
Zitat: Original erstellt von Kleiner_pally: Danke tom, aber ich wüsste 1. nicht wie ich es umschreiben könnte und 2. keine Ahnung wo ich hinschreiben kann (z.B. old=%%225 new=ß) sowas in der art suche bz.w brauche ich. In der Bemaßung muss es nicht unbedingt sein... aber MTEXT und Text wäre super
Oben im Kommentar des Programms steht doch drin, wie es aufgerufen wird (das Beispiel oben war für die Umsetzung des DOS-Zeichensatzes nach Windows bzw Unix): (GSR nil '( ("alt1" "neu1") ("alt2" "neu2") ;; ... )) Das Programm für MTEXT zu erweitern geht einfach, wobei man dort wegen des potentiellen mehrfachen Vorkommens des GC 1 nicht mit ASSOC und SUBST arbeiten kann, dort nimmt man am besten die VBA Funktionen VLA-PROPERTY-GET und ~PUT, oder wie die gerade wieder heissen. Wenn Du hoch und heilig versprichst, bis Mitte nächster Woche 20 Euro an Amnesty zu spenden und die Spendenquittung hier zu posten, dann mach ich's Dir. Gruß Tom Berger
------------------ ArchTools: AutoCAD-Werkzeuge für Architektur, Bauplanung und Immobilienverwaltung
- architekturgerechte Bemaßung, beliebige Einheiten, hochgestellte Millimeter, Öffnungsmaße uvm ...
- "doppelt" assoziative Höhenkoten für Schnittdarstellung und Grundriss
- assoziative Flächenermittlung nach DIN 277 und II.BVO
- Textautomatisierung, Plotstempel uvm ...
Hier geht's zum ArchTools Forum, und hier zu weiteren Infos und zur kostenlosen Demoversion |
Kleiner_pally Mitglied Zeichner
Beiträge: 74 Registriert: 03.05.2004 AutoCAD 2002 Netzwerk mit Express Tool Mein Os: XP prof. AMD Athlon 2000+ 512 MB RAM NIVIDA GEFORCE Grafikkarte
|
erstellt am: 22. Jun. 2004 10:44 <-- editieren / zitieren --> Unities abgeben:
|