| |
| 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: lisp tool zum aufbrechen (1364 mal gelesen)
|
fewoer Mitglied
Beiträge: 28 Registriert: 09.01.2012 AutoCAD Architecture 2011 Graitec Advance Steel 2012 Windows Vista 64 Bit
|
erstellt am: 09. Jan. 2012 10:40 <-- editieren / zitieren --> Unities abgeben:
Hallo, tut mir leid, ich bin heute das erste Mal hier und finde auf die Schnelle leider nicht das, was mir weiterhilft. Was LISP anbelangt, gehen meine Kenntnisse leider auch gegen 0. Vielleicht weiß einer von euch ja weiter, das wäre super. Folgendes Problem: wir brauchen ein LISP-Tool, das eine DWG öffnet, anschließend alles markiert und alles aufbricht (EXPLODE). Dann sollten alle Objekte, die nicht auf dem Zeichnungsblatt liegen gelöscht werden und zum Schluss soll die Datei in einem Unterordner abgespeichert und dann geschlossen werden. So dass die alte Datei eben nicht überschrieben wird. Das ganze wird vermutlich über 100e Zeichnungen laufen, also sollte der Prozess einigermaßen robust ablaufen. Alles markieren mit Strg+A funktioniert leider nicht, da produziert unser AutoCAD Architecture 2009 irgendwie seltsame Fehler und erfindet Objekte hinzu. Wir benutzen übrigens den Advance Stahlbau Aufsatz 2009 von Graitec, falls das irgendwie weiterhilft. Vielen herzlichen Dank schon mal im Voraus für Eure Hilfe! Gruß, Patrick Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 09. Jan. 2012 10:44 <-- editieren / zitieren --> Unities abgeben: Nur für fewoer
|
fewoer Mitglied
Beiträge: 28 Registriert: 09.01.2012 AutoCAD Architecture 2011 Graitec Advance Steel 2012 Windows Vista 64 Bit
|
erstellt am: 09. Jan. 2012 11:03 <-- editieren / zitieren --> Unities abgeben:
Danke für die schnelle Antwort - ich versuche gleich mal eine Beispielzeichnung einzufügen, sobald ich verstanden habe, wie das funktioniert. Kurz für zwischendurch eine andere Frage - gibt es einen LISP-Befehl, mit dem ich alle Objekte markieren kann? Ich hab hier ein Beispiel-Tool und versuche das ein bißchen für unsere Zwecke umzumodeln. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 09. Jan. 2012 11:07 <-- editieren / zitieren --> Unities abgeben: Nur für fewoer
|
fewoer Mitglied
Beiträge: 28 Registriert: 09.01.2012 AutoCAD Architecture 2011 Graitec Advance Steel 2012 Windows Vista 64 Bit
|
erstellt am: 09. Jan. 2012 11:41 <-- editieren / zitieren --> Unities abgeben:
Die Beispieldatei kommt gleich. Ich hab jetzt von der Autodesk University ein Tool "Changing Hundreds of AutoCAD Drawings in a Hurry" runtergeladen und versuche das gerade abzuändern. Es besteht aus 3 Dateien, einer BAT, einer SCR und einer LSP. Die BAT startet für alle DWGs im Verzeichnis eine Instanz von AutoCAD und führt daraufhin die SCR aus. Die SCR lädt die LSP ins AutoCAD, führt den in der Lisp definierten Befehl aus und schließt AutoCAD wieder. Mein Problem ist denke ich in der LISP Datei... Der Code sieht bisher so aus, er soll alles markieren und dann in einem Unterordner Explode abspeichern - das aufbrechen fehlt hier noch: (defun c:feexplode(/ nil dn pa pawbdn) (sssetfirst nil(ssget "_x" (list(cons 410(getvar"CTAB"))))) (setq dn (getvar "dwgname")) (setq pa (getvar "dwgprefix")) (setq pawbdn (strcat pa "explode\\"dn)) (command "qsave" pawbdn "*") ) AutoCAD gibt mir aber jetzt eine Fehlermeldung zurück, dass der Befehl feexplode unbekannt sei - dabei lade ich ihn doch über die Script Datei mit folgendem Inhalt: (load "t:\\T-002_EXPLODE\\feexplode.lsp") ZOOM All FEEXPLODE QUIT J Irgendwie ist der Fehler glaube ich in der LISP, aber ich hab gerade keine Ahnung, wo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 09. Jan. 2012 11:51 <-- editieren / zitieren --> Unities abgeben: Nur für fewoer
|
fewoer Mitglied
Beiträge: 28 Registriert: 09.01.2012 AutoCAD Architecture 2011 Graitec Advance Steel 2012 Windows Vista 64 Bit
|
erstellt am: 09. Jan. 2012 12:09 <-- editieren / zitieren --> Unities abgeben:
Ich lade die LSP ja doch jedesmal neu - in der SCR steht ja folgende Zeile, die das macht, dachte ich: (load "t:\\T-002_EXPLODE\\feexplode.lsp") Die BAT lädt dann mit einer Schleife auch jedesmal die SCR Datei neu, die Schleife in der BAT sieht folgendermaßen aus: FOR %%f in (t:\T-002_EXPLODE\DWG\*.dwg) do start /wait c:\"program files"\Graitec\AdvanceSteel\2009\Steel\Bin\AdvanceSteel8x64.exe "%%f" /b t:\T-002_EXPLODE\feexplode.scr Das ist jetzt alles sehr verwirrend, ich weiß. LISP scheint schon ein bißchen Hexerei zu sein Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 09. Jan. 2012 12:10 <-- editieren / zitieren --> Unities abgeben: Nur für fewoer
Hi, du hast NIL bei den Variablen stehen, so kann die Funktion nicht laufen! NIL ist ein geschütztes AutoLISP-Symbol, ein besonderes noch dazu. Axel könnte das jetzt schön erklären... Außerdem gibt es den Befehl QSAVE in einem lokalisierten Acad nicht, allenfalls _QSAVE. Und der speichert einfach nur die aktuelle DWG. Du willst aber _SAVEAS verwenden. Gruß CADchup
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fewoer Mitglied
Beiträge: 28 Registriert: 09.01.2012 AutoCAD Architecture 2011 Graitec Advance Steel 2012 Windows Vista 64 Bit
|
erstellt am: 09. Jan. 2012 13:23 <-- editieren / zitieren --> Unities abgeben:
Ah danke dir CADchup, damit bin ich jetzt schon einen großen Schritt weitergekommen. Das ist Magie Ich hab eure Vorschläge jetzt übernommen und meine LSP sieht mittlerweile so aus: (defun c:feexplode(/ dn pa pawbdn flag fesel) (setq dn (getvar "dwgname")) (setq pa (getvar "dwgprefix")) (setq pawbdn (strcat pa "explode\\"dn)) (setq flag (getvar "qaflags")) (setvar "qaflags" 5) (sssetfirst nil(setq fesel (ssget "_x" (list(cons 410(getvar"CTAB")))))) (command "_EXPLODE" fesel "") (setvar "qaflags" flag) (command "_SAVEAS" "2007" pawbdn) ) Öffnen, markieren, speichern scheint alles zu funktionieren - hab das ganze jetzt um die Funktion, dass er alles Ausgewählte aufbricht erweitert. Ich muss zwar noch jeden Aufbrechvorgang 2mal mit Ja bestätigen, weil Fenster aufpoppen (gibt's für _EXPLODE vielleicht auch irgendwelche Parameter, die automatisch immer mit Ja bestätigen?) - aber sonst scheint er das zu machen, was ich will. Nur am Ende des Aufbrechens hält er an und die AutoCAD Konsole spuckt mir folgende Fehlermeldung aus: Befehl: <Auswahlsatz: 2> QUIT Wollen Sie wirklich alle Änderungen an der Zeichnung löschen? <N> _SAVEAS Ja oder Nein, bitte. Wollen Sie wirklich alle Änderungen an der Zeichnung löschen? <N> Befehl: Befehl: Befehl: Funktion abgebrochen Wieso fragt er, ob ich Änderungen löschen möchte? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 09. Jan. 2012 14:01 <-- editieren / zitieren --> Unities abgeben: Nur für fewoer
Hi, weil dein Tool nicht ordentlich durchläuft! Lass' mal jede einzelne Zeile von Hand auf deine Zeichnung los. Tipp: Dein (sssetfirst...) wählt Objekte gleich aus. Wenn du so vorgehen willst, brauchst du EXPLODE keine Variable zu übergeben, denn ab da holpert's. Gruß CADchup ------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 09. Jan. 2012 14:16 <-- editieren / zitieren --> Unities abgeben: Nur für fewoer
|
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 09. Jan. 2012 15:27 <-- editieren / zitieren --> Unities abgeben: Nur für fewoer
Hallo fewoer ... und was wird mit verschachtelten Blöcken u. a. Objekten, Blöcken die als "nicht Auflösbar" gekennzeichnet sind, Attributen ... (nur mal so ein paar Gedanken) Suche mal hier und im Rund um AutoCAD Brett nach alles auflösen, da finden sich so manche Diskussionen dazu (und weitere Lösungsansätze). Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fewoer Mitglied
Beiträge: 28 Registriert: 09.01.2012 AutoCAD Architecture 2011 Graitec Advance Steel 2012 Windows Vista 64 Bit
|
erstellt am: 13. Jan. 2012 10:07 <-- editieren / zitieren --> Unities abgeben:
Hey, tut mir leid, dass ich ers jetzt antworte. Hab's mittlerweile mit ein bißchen Gefrickel hinbekommen, das gute Stück läuft jetzt problemlos durch und erspart uns Drölfzig Stunden Arbeit ) Danke nochmal für eure Hilfe, hätt ich ohne Eure entscheidenden Hinweise nicht hinbekommen! Liebe Grüße und noch eine schöne Zeit euch, tolle Arbeit leistet ihr hier ) Patrick Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |