| | | 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: Erneutes Öffnen der DWG-Datei (470 / mal gelesen)
|
kadirozen Mitglied Projektleiter
Beiträge: 30 Registriert: 13.07.2023 AutoCAD LT 2024
|
erstellt am: 06. Nov. 2023 11:36 <-- editieren / zitieren --> Unities abgeben:
Guten Tag zusammen. Ich habe einen LISP-Code, der sein eigenes Ding macht, aber wenn er auf einen Fehler stößt, muss er das Dokument schließen, ohne es zu speichern und neu zu öffnen. (Zeichnung und Linien werden skaliert verschoben, ausgerichtet und für die CNC-Maschine gespiegelt, aber die ursprüngliche Zeichnung sollte intakt bleiben, ohne jegliche Änderung. Daher Schließen ohne zu speichern. Leider redo-undo funktioniert nicht wegen ALIGN Befehl und so. vla-endUndoMark Methode funktioniert nicht. Mein Problem ist, dass ich keine Möglichkeit finde, das Öffnen der Datei innerhalb der LISP-Routine zu aktivieren, da beim Schließen der Datei (Befehl _.close _y) auch der LISP beendet wird. Was wäre möglich, um dies zu überwinden? Mein Ziel ist es, den Benutzer zu benachrichtigen, wenn ein Fehler auftritt, und die DWG zu schließen, ohne sie zu speichern, und sie erneut zu öffnen, um es dieses Mal richtig zu machen.
Besten Dank ------------------ kadir Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22298 Registriert: 03.06.2002 Alles
|
erstellt am: 06. Nov. 2023 12:28 <-- editieren / zitieren --> Unities abgeben: Nur für kadirozen
Hi, >"wegen ALIGN Befehl und so" Geht das konkreter? Grundsätzlich sollte das schon funktionieren eine Undo-Marke zu setzen, dann irgendetwas, auch Align, durchzuführen und Undo-Rück zu verwenden. Abbruch: Der Benutzer hat die Datei geöffnet und startet dann auch das Tool darin? Dein Lispcode ist nur in dem Dokument geladen in dem ihn geladen hast, das aktuelle Dokument schließen stoppt dann alles. Kennst du das SingleDocumentInterface - SDI ? Wenn im SDI gearbeitet wird, dann könntest du in eine neue Datei wechseln (ohne speichern) und wieder zurück in die alte Datei, der Code läuft komplett weiter - LISPINIT entsprechend gesetzt. Aber damit man das SDI aktivieren kann, darf nur eine Datei offen sein. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kadirozen Mitglied Projektleiter
Beiträge: 30 Registriert: 13.07.2023 AutoCAD LT 2024
|
erstellt am: 06. Nov. 2023 13:07 <-- editieren / zitieren --> Unities abgeben:
Der Code, auf den ich mich beziehe, ist ähnlich wie der in den folgenden Threads. Sie haben auch einige Kommentare zu diesem Thema abgegeben. Und hier ist ein Zitat aus dem zweiten Thread. Das Problem war, dass ich keine Rückgängig-Markierung machen kann, da der Befehl Ausrichten während des Prozesses eine eigene Rückgängig-Markierung erstellt. https://ww3.cad.de/foren/ubb/Forum145/HTML/004930.shtml https://ww3.cad.de/foren/ubb/Forum145/HTML/001769.shtml Zitat: Original erstellt von CAD-Huebner: Ich habs mal mit AutoCAD 2007 getestet. Für mich stellt es sich so dar, als wenn _ALIGN selbst ein _UNDO _g aufruft und daher eine schon bestehende geöffnete _UNDO _group Gruppierung automatisch abschließt.Also _UNDO _G 3 x _LINE _ALIGN (die 3 Linien) _UNDO _E _u (_Align rückgängig = Gruppe) _u (nichts passiert = leere Gruppe) _u ( 3 Linien rückgängig = Gruppe)
Deshalb dachte ich, es wäre besser, die Zeichnung zu schließen und wieder zu öffnen.
Alle AutoLISP-Programme, die wir verwenden, werden direkt in jede Zeichnung geladen. SDI wäre in unserem Fall nicht geeignet, da wir mehrere Zeichnungen gleichzeitig öffnen und zeichnen müssen. ------------------ Kadir Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22298 Registriert: 03.06.2002 Alles
|
erstellt am: 06. Nov. 2023 13:27 <-- editieren / zitieren --> Unities abgeben: Nur für kadirozen
Ich spring jetzt nicht in den anderen Thread, da ginng es imo darum eine UndoGruppe zu bilden(oder doch nicht? egal), aber einfach nur eine Markierung setzen und zu dieser zurückspringen (im Fehlerfall), das sollte gehen. (progn(command "_.UNDO" "_m")(command "_.LINE" "0,0" "100,40" "")(command "_.circle" "30,20" "5")(command "_.Rectang" "0,0" "100,40")(command "_.ALIGN" "_l" "" "0,0" "0,0" "100,40" "90,50" "" "_n")(command "_.Zoom" "-5,-5" "105,70")) lustige Objekte ansehen und dann _undo _back Wenn SDI nicht in Frage kommt, dann wird nichts aus deinem schließen/öffnen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|