| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Platzhalter in Acad (5233 mal gelesen)
|
domda Mitglied selbständig
Beiträge: 148 Registriert: 18.02.2002 ACAD 2000i/2004 Express tools(english) cadmandu,cadlibdu modulcad Win2k P4 1,5GHz 512MBRam
|
erstellt am: 25. Aug. 2003 21:48 <-- editieren / zitieren --> Unities abgeben:
hi leute, ich wieder mal ;-) mal ne frage, das mit dem platzhaltern habe ich soweit verstanden * für beliebige weitere buchstabenfolge ? für einzelnen Platzhalter.... so stehts geschrieben..... allerdings brauche ich diese platzhalter in der suche von acad (text suchen)[_find] oder noch lieber in der schnellsuche mit auswahlkriterium text und dann inhalt.... ich muss nämlich aus einer zeichnung wo alle Beschriftungen von den Blöcken in normalem TEXT vorhanden sind Blöcke und deren Beschriftung löschen... BSP.: Lösche 7 verschiedene Blöcke des Layers Brandmelde (geht ja recht einfach da die blöcke namen besitzen..) dann folgendes problem, die schlauen leute von dem planungsbüro haben alle elektroteschnischen symbole auf einem layer beschriftet... d.h. keine chance durch layer isolieren zu einem ergebnis zu kommen... d.h. immer in der schnellsuche nach einem bestimmten text suchen--> A01, A02, A03,... ,B01,B02,..usw und einzeln rauslöschen..... ich könnte aber gleich gut die bezeichnung A* und B* löschen wenn das funktionieren würde... tut es aber nicht, .... kennt jemand ne nette möglichkeit um das zu beschleunigen ..??? es handelt sich nämllich um 20 solche bezeichnungen pro plan (10 pläne sinds) und irgendwie sollte das doch auch schneller gehen oder? ------------------ ciao dominik --------------------- --------------------- Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3329 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 25. Aug. 2003 22:51 <-- editieren / zitieren --> Unities abgeben: Nur für domda
Hi, auf die Schnelle zusammengekloppt und ohne Beautyfier und Prüfung, ob man im richtigen Layout ist: (defun deltextblock (xxx / ins i txts) (if (setq ins (ssget "x" (list '(0 . "INSERT") (cons 2 xxx)))) (progn (setq i 0) (while (< i (sslength ins)) (if (setq txts (ssget "x" (list '(0 . "TEXT,MTEXT") (cons 1 (cdr (assoc 2 (entget (ssname ins i))))) ) ) ) (command "_.erase" txts "") ) ; if (setq i (1+ i)) ) (command "_.erase" ins "") (command "_.purge" "_bl" "*" "_n") ) ; progn ) ; if ) Start mit (deltextblock "A*") wenn Du alle Blöcke und Texte mit Name/Inhalt "A*" löschen willst. Gruß CADchup ------------------ www.cadditions.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
domda Mitglied selbständig
Beiträge: 148 Registriert: 18.02.2002 ACAD 2000i/2004 Express tools(english) cadmandu,cadlibdu modulcad Win2k P4 1,5GHz 512MBRam
|
erstellt am: 25. Aug. 2003 22:53 <-- editieren / zitieren --> Unities abgeben:
|
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 25. Aug. 2003 23:01 <-- editieren / zitieren --> Unities abgeben: Nur für domda
Hi dominik, versusuch mal das, damit kannst du die Texte Löschen, die mit einem Buchstaben (Groß/Kleinschreibung beachten!!) beginnen und 2 weitere Ziffern als Text haben. Das A* wäre mir zu unsicher.
Code:
(defun c:dela00 (/ as bs bsl) (command "_.undo" "_G") (while (/= "" (VL-STRING-LEFT-TRIM " " (setq bs (getstring "\nBuchstabe: ")))) (setq bsl (cons (substr bs 1 1) bsl)) ) (setq as (ssget "_X" (append (list '(-4 . "<and") '(0 . "TEXT") '(-4 . "<or") ) (mapcar '(lambda (S) (cons 1 (strcat S "##")) ) bsl ) (list '(-4 . "or>") '(-4 . "and>") ) ) ) ) (if as (command "_.erase" as "")) (command "_.undo" "_E") (princ) )
Bei Fragen ... Grüße Holger ------------------ Holger Brischke CADlon - Lisp over night! [Diese Nachricht wurde von Brischke am 25. August 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
domda Mitglied selbständig
Beiträge: 148 Registriert: 18.02.2002 ACAD 2000i/2004 Express tools(english) cadmandu,cadlibdu modulcad Win2k P4 1,5GHz 512MBRam
|
erstellt am: 26. Aug. 2003 01:17 <-- editieren / zitieren --> Unities abgeben:
|
sponk-mg Mitglied
Beiträge: 38 Registriert: 10.10.2011 Einstieg in LSP, da Makro nicht alles leisten können, was ich inzwischen benötige
|
erstellt am: 10. Okt. 2011 17:40 <-- editieren / zitieren --> Unities abgeben: Nur für domda
Neueinsteiger! Bisher habe ich nur Makros genutzt. Leider ist es damit nicht möglich, nach Blöcken und Texten mit Inhalt unter Verwendung von Platzhaltern zu suchen. Suche daher nach Lösungen mit AutoLisp: Ziel: Erstellung von LSP mit folgenden Inhalten Suchen und Löschen von Text mit der Zeichenfolgen RVZ* oder *VZ Suchen und Löschen von mehreren Blöcken mit festen Zeichnfolgen. Gesucht soll in allen Layer werden. Vielen Dank vorab. 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 AutoCAD 2.5 - 2022, Civil 3D, MAP 3D, ACADM Inventor AutoCAD 2022, AIP 4-2022 Win 10
|
erstellt am: 11. Okt. 2011 08:43 <-- editieren / zitieren --> Unities abgeben: Nur für domda
Ja, aber die Lösung steht doch schon im Beitrag vorher. Nur das Löschen (ERASE) muss man auskommentieren und den Auswahlsatz "as" weiterverwenden. Reine Programmbestellungen werden hier allerdings nicht entgegengenommen (sondern nur Hilfe zur Selbsthilfe gegeben). ------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sponk-mg Mitglied
Beiträge: 38 Registriert: 10.10.2011 Einstieg in LSP, da Makro nicht alles leisten können, was ich inzwischen benötige
|
erstellt am: 14. Okt. 2011 08:28 <-- editieren / zitieren --> Unities abgeben: Nur für domda
Sehr geehrter Herr Hübner, ich habe im Vorfeld beide hier vorgestellten Lisp-Programme ausprobiert. Ich arbeite mit AutoCAD Architecture. Leider laufen beide Programme bei mir nicht. Als absoluter Anfänger bin ich momentan auf erfolgloser Fehlersuche und lese mich gerade eben in die Syntax von LISP ein. Ich verstehe soweit die Programme, kann den Fehler dennoch nicht finden. Ich entschuldige meine ungeschickt formulierte "Programmbestellung". Ich suche einen Einstieg in LISP, der mit geringer Programmiererfahrung sehr schwierig ist. Mir ist bewußt, dass eine falsch gesetzte Klammer/Leerzeichen u.a. das Programm nicht zum laufen bringt. Von daher suche ich einen Erfahrungsaustausch, der auch einem absoluten Laien wie mir den Einstieg etwas erleichtert. Mit freundlichen Grüßen. 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: 14. Okt. 2011 09:24 <-- editieren / zitieren --> Unities abgeben: Nur für domda
|
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3329 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 14. Okt. 2011 13:30 <-- editieren / zitieren --> Unities abgeben: Nur für domda
Hi, dann gebe ich dir für den Anfang (keiner hier weiß, wie weit du bist) einen ganz rudimentären Code-Schnipsel, mit dem du den Text schon mal löschen kannst und auf dem du aufbauen kannst:
Code: (if (setq ss (ssget "_X" '((0 . "TEXT")(1 . "RVZ*")))) (command "_erase" ss "") )
Den kannst du je nach Wissenstand ausbauen und mithilfe des LISP-Bretts sicher erweitern. Gruß CADchup ------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sponk-mg Mitglied
Beiträge: 38 Registriert: 10.10.2011 Einstieg in LSP, da Makro nicht alles leisten können, was ich inzwischen benötige
|
erstellt am: 14. Okt. 2011 16:49 <-- editieren / zitieren --> Unities abgeben: Nur für domda
Vielen lieben Dank. Ich habe es sofort verstanden und es funktioniert. Auch meine Erweiterungen. Routine deltextblock hab ich jetzt zum Glück auch verstanden. Zu dem weiter oben aufgeführten Beispiel, das ich zur Übung verwenden wollte: Routine dela00 gibt mir nur die Abfrage "Buchstabe" auf den Bildschirm aus, die ich nur mit Escape beenden kann. Eine Auswahl erfolgt nicht obwohl ich mehrere Kombinationen ausprobiert habe, die in Frage kommen könnten. Welche Eingabe wird zur erfolgreichen Suche erwartet? @CADchup: Ich freue mich sehr über diese Hilfestellung Jetzt macht es mir wieder Spaß und ich ich habe eine praktische Basis, auf die ich aufbauen und mit der ich experimentieren kann. Ich hab das Tutorial http://www.autolisp-tutorial.mapcar.net/ durchgearbeitet und nehm mir am WE das Handbuch von Autocad zu Autolisp vor. Bei mir führt noch jede kleinste Unkenntnis zum Misserfolg auch wenn es bisher sicherlich sehr einfache Routinen sind. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 Kinder, kauft Kämme! Es kommen lausige Zeiten.
|
erstellt am: 14. Okt. 2011 18:48 <-- editieren / zitieren --> Unities abgeben: Nur für domda
N'Abend, Zitat: Original erstellt von sponk-mg:
Zu dem weiter oben aufgeführten Beispiel, das ich zur Übung verwenden wollte: Routine dela00 gibt mir nur die Abfrage "Buchstabe" auf den Bildschirm aus, die ich nur mit Escape beenden kann. Eine Auswahl erfolgt nicht obwohl ich mehrere Kombinationen ausprobiert habe, die in Frage kommen könnten. Welche Eingabe wird zur erfolgreichen Suche erwartet?
Holger hatte nicht gelogen als er schrieb: Zitat: damit kannst du die Texte Löschen, die mit einem Buchstaben (Groß/Kleinschreibung beachten!!) beginnen und 2 weitere Ziffern als Text haben.
Da ich lisp ebenfalls nicht sonderlich gut lesen kann, war ich schneller, das grad in einer Zeichnung durchzutesten Das Teil ist cool: Du darfst mehrere Anfangsbuchstaben angeben, wenn Du alle nacheinander eingetippt hast, einfach nochmal ein "leeres" enter und zack, sind alle Texte weg, auf die die o.a. Bedingungen zutreffen. Auszug aus meiner Befehlszeile: Code: Befehl: DELA00 _.undo Aktuelle Einstellungen: Automatisch = Ein, Steuerung = Alle, Zusammenfügen = Ja, Layer = Ja Anzahl der rückgängig zu machenden Operationen eingeben oder [Auto/Steuern/Beginn/Ende/Markierung/Rück] <1>: _G Befehl: Befehl: Buchstabe: ABuchstabe: a Buchstabe: _.erase Objekte wählen: 5 gefunden
Sei tapfer, das wird sicher mit der Zeit, Du scheinst mir auf einem sehr guten Weg zu sein, wenn Du schon online-Tutorial und Buch entdeckt und durchstöbert hast, weiter als bis Seite 42 bin ich leider nie gekommen ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |