| | | 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: StartUndoMark EndUndoMark? (642 mal gelesen)
|
kadirozen Mitglied Projektleiter
Beiträge: 30 Registriert: 13.07.2023 AutoCAD LT 2024
|
erstellt am: 08. Aug. 2023 10:05 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen. Wenn ich nur ein paar Zeilen Code mit ein paar lokalen Variablen und start-endundo-Marke ist es wie erwartet funktioniert. Nach dem Ausführen des zweiten Codes funktioniert es wie erwartet, aber wenn ich mit ctrl+z rückgängig machen will, werden alle Befehle von LISP nacheinander ausgeführt. Ich würde es gerne so haben, dass, wenn ich ctrl+z drücke, es einfach alle Aktionen zurücknimmt (außer dem Speichern, ich muss vor allem die Aktionen mirror align und osnap auf den Standard zurücksetzen). Ich habe versucht, *error* nil zu entfernen und es durch vla-endundomark doc zu ersetzen, aber ohne Erfolg. Code: (defun c:MDXF ( / *error* global:ans ans mlist allelayers layerName dxf_name folder_MDXF msg OSM ss sscenter ssctop centerpt pt1 pt2 c dist doc text-entity text-content num-entities num-text i entity entity-type totalsp current_name name-list) (vl-load-com) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-startundomark doc) (defun *error* ( msg ) (setvar "filedia" 1) (if OSM (setvar 'osmode OSM));OSnap mode other than nil, change it back to OSM (if (not (member msg '("Function cancelled" "quit / exit abort" "*QUIT*,*CANCEL*"))) (princ (strcat "\nError: " msg)) ) (princ) (vla-endundomark doc) (exit) ) (setq name-list '()) (if (null global:ans) (setq global:ans "Ja")) (setq totalsp 0) (setq folder_MDXF "C:\\Users\\kadir.oezen\\Desktop\\AutoLISP\\MaschineDXF\\") ; Set the R12 format destination folder path (setq mlist '("CNC" "SEQ" "CUT" "DRILL" "POLISH" "WJ" "Ausschnitt" "Bemassung Maschine" "Nachschneiden" "Granit" )) ; set CNC Maschine Readable Layer names and keywords, (setq OSM (getvar 'osmode));OSM mode saved (if (vl-file-directory-p folder_MDXF);if folder presents go on (progn (vlax-for allelayers (vla-get-layers doc) (vla-put-layeron allelayers :vlax-false);vlax command takes all layers and turns them off one by one (setq layerName (vla-get-name allelayers));set layername to the all layers ; Check if any of the keywords are present in the layer name (foreach keyword mlist (if (vl-string-search keyword layerName) (vla-put-layeron allelayers :vlax-true) ; if the name is on the list Turn on the layer there is no else command. ) ) );--vlaxfor alle layers ende (while (= global:ans "Ja") (setq ss (ssget));ask user to make selection (if ss ;if ss is valid go with this (progn (setq num-entities (sslength ss)) (setq i 0) (setq num-text 0) (while (< i num-entities) (setq entity (ssname ss i)) (setq entity-type (cdr (assoc 0 (entget entity)))) (cond ((= entity-type "TEXT") (setq num-text (+ num-text 1)) (setq text-entity entity)) ) (setq i (+ i 1)) );--while end (if (= num-text 0) (progn (alert "Es gibt kein Text Elemente in Auswähl. Programm gestoppt.") (*error* "Kein Text") );if numtext 0 else (progn (if (= num-text 1) (progn (setq text-content (cdr (assoc 1 (entget text-entity)))) ;(alert (strcat "Text content: " text-content)) (setq dxf_name (strcat (substr text-content 1 5) (substr text-content 7 3) (substr text-content 11 3)));dxf_name from textcontent extract 45000001A01 zB. ;(alert (strcat "DXF NAME für Maschine; " dxf_name)) );if num text else (progn (alert "Es gibt mehr als 1 Text Elemente in Auswähl. Programm gestoppt.") (*error* "mehr als 1 Text") ) );--if num text 1 end ) );--if numtext 0 ende );--if ss not validelse (progn (alert " Kein Objekt ist ausgewählt.") (*error* "kein Objekt") ) ); --if ss ended (if (or (not(findfile (strcat folder_MDXF dxf_name ".dxf"))) (vl-file-delete (strcat folder_MDXF dxf_name ".dxf"))); if no old file found or it is deleted go on (progn (setq pt1 (getpoint "n/ Links")) (setq pt2 (getpoint "n/ Rechts")) (setq dist (distance pt1 pt2)) (setq c (getvar "viewctr")) (setq sscenter (polar c 0 (/ dist 2))) (setq ssctop (polar sscenter (/ pi 2) 100)) (setq centerpt (polar c 0 dist)) (setvar 'osmode 0) (command-s "_.align" ss "" pt1 c pt2 centerpt "" "n") (command-s "_.mirror" ss "" sscenter ssctop "_y") (setvar 'osmode OSM) (command "SICHALS" "d" "v" "2000" "o" ss "" "16" (strcat folder_MDXF dxf_name ".dxf")) (setq current_name dxf_name) (setq name-list (cons current_name name-list)) (setq totalsp (+ totalsp 1));total dxf count (initget "Ja Nein") (if (setq ans (cond ((getkword (strcat "\nHaben Sie mehr Daten zu speichern? [Ja/Nein] <" global:ans ">"))) (global:ans)));cond testes if first getkword has value, if not goes to second option which is global ans (progn (setq global:ans ans) ) (progn ) ) ;--while globalans end ) (progn ;if else not findfile or delete (alert "Programm gestoppt, Datei kann nicht überschrieben werden. Schließen Sie die geöffneten Dateien und versuchen Sie es erneut") (*error* "Data kann man nicht überschreiben.") ) );--end if or not findfile file delete );if and folder else );--while global ans ja end (progn (alert "Sie haben keinen Zugriff auf den Server. Stellen Sie sicher, dass Sie die Dateien auf T: lesen können.") (*error* "kein zugriff laufwerk T:") ) );-- if end both folders (if (= totalsp 1) (progn (alert (strcat (apply 'strcat (append (list (car name-list))(mapcar '(lambda (x) (strcat "\n" x)) (cdr name-list)))) " Die Datei ist im MaschineDXF Ordner gespeichert. AutoCAD Zeichnung wird jetzt ohne Speichern geschlossen.")) ) (progn (alert (strcat (apply 'strcat (append (list (car name-list))(mapcar '(lambda (x) (strcat "\n" x)) (cdr name-list)))) "\nDateien sind im MaschineDXF Ordner gespeichert. AutoCAD Zeichnung wird jetzt ohne Speichern geschlossen.")) ) ) ;(command "._close" "_y") (*error* nil) );--defun end
Mit freundlichen Grüßen Kadir ------------------ kadir Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 08. Aug. 2023 11:11 <-- editieren / zitieren --> Unities abgeben: Nur für kadirozen
Zitat: Original erstellt von kadirozen: Hallo zusammen. Wenn ich nur ein paar Zeilen Code mit ein paar lokalen Variablen und start-endundo-Marke ist es wie erwartet funktioniert.
Tu den Leuten, die Dir eventuell helfen können und wollen, den Gefallen, und bastle ein kleines Beispielprogramm, um das Fehlerverhalten zu veranschaulichen, anstatt so viel Code zu posten, der offenkundig nichts mit dem Problem zu tun hat. Ich jedenfalls gucke mir sowas gar nicht erst an. 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: 08. Aug. 2023 11:19 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von archtools:
Tu den Leuten, die Dir eventuell helfen können und wollen, den Gefallen, und bastle ein kleines Beispielprogramm, um das Fehlerverhalten zu veranschaulichen, anstatt so viel Code zu posten, der offenkundig nichts mit dem Problem zu tun hat. Ich jedenfalls gucke mir sowas gar nicht erst an.
Ich danke Ihnen für den Vorschlag. Ich habe dies als Beispiel geschrieben. Wenn ich es ausführe, entstehen 4 Punkte in der Mitte des Bildschirms. Wenn ich Strg Z drücke, werden alle 4 Punkte gleichzeitig entfernt und nicht einer nach dem anderen. Code: (defun c:zBeispiel ( / *error* c pt1 pt2 pt3 msg) (vl-load-com) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-startundomark doc) (defun *error* ( msg ) (and msg (not (wcmatch (strcase msg) "*CANCEL*,*QUIT*,*BREAK*")) (princ (strcat "\nError: " msg)) ) (princ) (vla-endundomark doc) )(setq c (getvar "viewctr")) (setq pt1 (polar c 0 100)) (setq pt2 (polar c (/ pi 2) 100)) (setq pt3 (polar c pi 100)) (command "_.point" c) (command "_.point" pt1) (command "_.point" pt2) (command "_.point" pt3) (vla-endundomark doc) (princ) )
------------------ kadir Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 08. Aug. 2023 12:44 <-- editieren / zitieren --> Unities abgeben: Nur für kadirozen
Zitat: Original erstellt von kadirozen:
Ich danke Ihnen für den Vorschlag. Ich habe dies als Beispiel geschrieben. Wenn ich es ausführe, entstehen 4 Punkte in der Mitte des Bildschirms. Wenn ich Strg Z drücke, werden alle 4 Punkte gleichzeitig entfernt und nicht einer nach dem anderen. Code: (defun c:zBeispiel ( / *error* c pt1 pt2 pt3 msg) (vl-load-com) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-startundomark doc) (defun *error* ( msg ) (and msg (not (wcmatch (strcase msg) "*CANCEL*,*QUIT*,*BREAK*")) (princ (strcat "\nError: " msg)) ) (princ) (vla-endundomark doc) )(setq c (getvar "viewctr")) (setq pt1 (polar c 0 100)) (setq pt2 (polar c (/ pi 2) 100)) (setq pt3 (polar c pi 100)) (command "_.point" c) (command "_.point" pt1) (command "_.point" pt2) (command "_.point" pt3) (vla-endundomark doc) (princ) )
Das ist auch logisch so, denn man kann keine verschiedenen UNDO-Ebenen ineinander verschachteln. Mit dem letzten vla-endundomark wird eine Marke für einen Block von Operationen gesetzt, der bis zum letzten vla-startundomark zurück reicht. Alles, was in der Zeichnungsdatenbank dazwischen verändert wird, wird dann als kompletter Block mit einem einzigen (command "_U") zurück gesetzt. Nur wenn Du in Deinem Code auf vla-startundomark und vla-endundomark verzichtest, dann werden die einzelnen COMMAND-Aufrufe jeweis einzeln durch ein (command "_U") oder ähnlich zurück gesetzt. https://help.autodesk.com/view/OARX/2022/ENU/?guid=GUID-7C669949-1327-4CFD-96CF-CE65EC38DAA8 https://www.afralisp.net/archive/methods/lista/startundomark_method.htm
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: 08. Aug. 2023 15:49 <-- editieren / zitieren --> Unities abgeben: Nur für kadirozen
Hab deinen Code mal kurz durchsucht. vla-startundomark hast du am Anfang drin aber vla-endundomark hast du nur im Errorhandler. Wenn kein Fehler auftaucht wird also vla-endundomark nicht ausgeführt. Du musst das auch noch ans Programmende setzen. ------------------ Geht nicht, gibts nicht Gruß Andreas http://kraus-cad.de 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: 08. Aug. 2023 15:52 <-- editieren / zitieren --> Unities abgeben:
Ich danke Ihnen für die Antworten. Wie ich in meinem ersten Beitrag sagte, habe ich versucht, endundomark in die letzte Zeile des Codes vor dem Ende hinzuzufügen. Es macht immer noch alles schrittweise rückgängig und nicht alles zusammen. Aber wie ich in der Befehlszeile sehe, hat es tatsächlich versucht, autolisp als gruppe rückgängig zu machen. Ich bin mir aber nicht sicher, warum es nicht funktioniert. Code: Haben Sie mehr Daten zu speichern? [Ja/Nein] <Ja>N Befehl: _u (LISP-Ausdruck) GRUPPE Befehl: _u (LISP-Ausdruck) GRUPPE Befehl: _u GRUPPE Befehl: _u Befehl: _u GRUPPE
Vielleicht mache ich einen Denkfehler, aber sollte es nicht durch die letzte Zeile mit (*error* nil) aktiviert werden, sollte es doch den Errorhandler ausführen und endundomark setzen, oder?
------------------ kadir [Diese Nachricht wurde von kadirozen am 08. Aug. 2023 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 08. Aug. 2023 16:59 <-- editieren / zitieren --> Unities abgeben: Nur für kadirozen
Zitat: Original erstellt von kadirozen: Ich danke Ihnen für die Antworten. Wie ich in meinem ersten Beitrag sagte, habe ich versucht, endundomark in die letzte Zeile des Codes vor dem Ende hinzuzufügen. Es macht immer noch alles schrittweise rückgängig und nicht alles zusammen.
Dann fehlt vermutlich das startundomark. In dem kleinen Beispiel funktioniert's ja. Jetzt musst Du nur noch nachgucken, was im umfangreichen Code anders ist. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 08. Aug. 2023 19:37 <-- editieren / zitieren --> Unities abgeben: Nur für kadirozen
Zitat: Original erstellt von kadirozen: Vielleicht mache ich einen Denkfehler, Nein aber sollte es nicht durch die letzte Zeile mit (*error* nil) aktiviert werden, Ja sollte es doch den Errorhandler ausführen und endundomark setzen, oder? So wie von dir angedacht, funktioniert es. So wie von dir geschrieben, nicht.
Und so helfe ich dir auf die Sprünge:
[IMG]Teste deinen Errorhandler doch mal! Der ist nämlich nicht identisch zu deinem kleinen Beispiel.[/IMG] (BTW: Wir wollten ein kleines Beispiel wo es NICHT funktioniert, damit man sich eben nicht durch so viel irrelevanten Code klicken muss)
Mach mal:
Nimm deinen Errorhandle und geh in eine saubere Umgebung = neue Datei und sorge dafür das DOC vorhanden ist, ich packe es jetzt einfach mal mit in deinen Code rein: Einfach copy&paste in die Befehlszeile, fetig. (defun *error* ( msg ) ;; NUR FÜR DEN TEST ;; (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) ;; ;; (setvar "filedia" 1) (if OSM (setvar 'osmode OSM)) (if (not (member msg '("Function cancelled" "quit / exit abort" "*QUIT*,*CANCEL*"))) (princ (strcat "\nError: " msg)) ) (princ) (vla-endundomark doc) (exit) ) Jetzt teste diesen mit folgender Eingabe, die soll einen echten Abbruch darstellen: Befehl: (*error* "oho")
oder warum darstellen, sorgen wir einfach für ein echtes Problem: Befehl: (*error* (/ 1 0)) und jetzt versuche mal folgenden Aufruf: Befehl: (*error* (command))
wobei ein (command) ja immer nur nichts, also nil zurückgibt.. also dasselbe wie auch diese Zeile: Befehl: (*error* nil) Du siehst was das Programm dir als Rückgabe zeigt? [F2] Und jetzt musst du mit Blick auf deinen Code das Problem erblicken 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: 09. Aug. 2023 08:22 <-- editieren / zitieren --> Unities abgeben:
Ich bin mir nicht ganz sicher, ob ich Sie richtig verstanden habe. Sie haben Recht mit der Darstellung des Codes. Ich werde mein Bestes geben, wenn ich das nächste Mal auf ein Problem stoße. Wie Sie sagten, habe ich den Code wie folgt versucht. Ich glaube, es funktioniert wie erwartet. Ich habe den Fehlerhandler geändert und das Rückgängigmachen ist immer noch vorhanden. Ich habe in diesem Thema gesucht und herausgefunden, dass verschachtelte UndoMarks problematisch sind, d.h. ich brauche eine einzelne Undo-Marke, die beginnt und endet, um es einfach zu machen. Nach den lokalen Variablen kommt also das Dokument-Setup und die Startundo-Marke. Dann kommt der Error-Handler mit der Endundomarke und mein Code mit allen möglichen Ergebnissen, der zum Error-Handler führt, der die Endundomarke aktiviert. Sollte in der Theorie funktionieren, tut es aber nicht, ich mache irgendwo anders einen Fehler.
Code: *ERROR* Befehl: (*error* "oho") Error: oho Error: quit / beenden abbrechenquit / beenden abbrechen Befehl: (*error* (/ 1 0)) Error: Division durch 0quit / beenden abbrechen Befehl: (*error* (command)) *Abbruch* Befehl: Error: Fehlerhafter Argumenttyp: stringp nilquit / beenden abbrechen Befehl: (*error* nil) Error: Fehlerhafter Argumenttyp: stringp nilquit / beenden abbrechen
------------------ kadir Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 09. Aug. 2023 09:55 <-- editieren / zitieren --> Unities abgeben: Nur für kadirozen
Zitat: Original erstellt von kadirozen:
Nach den lokalen Variablen kommt also das Dokument-Setup und die Startundo-Marke. Dann kommt der Error-Handler mit der Endundomarke und mein Code mit allen möglichen Ergebnissen, der zum Error-Handler führt, der die Endundomarke aktiviert.
Für die Fehlersuche würde ich die komplette *error* Definition rauswerfen. Der Fehler tritt ja auf, ohne dass der Code auf einen Fehler stößt. Baue ein einfaches funktionierendes Beispiel auf, und erweitere das dann Schritt für Schritt um die von Dir gewünschte Funktionalität. Im Übrigen würde ich grundsätzlich nur mit (defun C:xxx ...) definierte "Befehle" mit einem Errorhandler versehen, der ein Endundomark setzt, weil man sonst bei jedem Aufruf einer Lisp-Funktion in Teufels Küche kommt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 09. Aug. 2023 19:17 <-- editieren / zitieren --> Unities abgeben: Nur für kadirozen
Zitat: Original erstellt von kadirozen: Ich glaube, es funktioniert wie erwartet. Nein (aber*) - Dann hebe ich das Offensichtliche noch einmal hervor:Code: *ERROR* Befehl: (*error* "oho") Error: oho Error: quit / beenden abbrechenquit / beenden abbrechen Befehl: (*error* (/ 1 0)) Error: Division durch 0quit / beenden abbrechen Befehl: (*error* (command)) *Abbruch* Befehl: Error: Fehlerhafter Argumenttyp: stringp nilquit / beenden abbrechen Befehl: (*error* nil) Error: Fehlerhafter Argumenttyp: stringp nilquit / beenden abbrechen
Das FETT hervorgehobene sind FEHLERmeldungen! Es läuft also nicht rund. "stringp" ist die interne Prädikatfunktion welche prüft ob etwas ein STRING ist oder nicht, in deinem Fall geht es um den übergebenen Wert von MSG an STRCAT, welches ausschließlich Strings erwartet (in der Error-Routine). Das ist bei (*error* nil) eben nicht der Fall und du prüfst das in der Errorfunktion auch nicht, sondern lässt immer ein (princ (strcat "\nError: " msg)) ausführen, was zu einem Crash führt. Bei einem Crash startet Acad dann ... die Errorfunktion (also praktisch erneut und bevor diese komplett ausgeführt wurde, da es eben zu einem Crash kam) und dieses Mal ist ein string an msg gebunden welcher dann endlich zum kompletten ausführen der *error* Funktion führt. Du solltest dir mal ein paar ALERTs einbauen welche das Schauspiel offenlegt. Zum Beispiel so: (defun c:MDXF (/ usw.....) (vl-load-com) (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-startundomark doc) (setq MESSa 0 MESSb 0) (defun *error* ( msg ) (setq MESSa (+ MESSa 100) MESSb (+ MESSb 100)) (alert (strcat "error-START - " (itoa(setq MESSa (1+ MESSa))))) (if (and (not (member msg '("Function cancelled" "quit / exit abort" "*QUIT*,*CANCEL*"))) ) (alert (strcat "\nError CUSTOM message: " msg)) ) (princ) (alert (strcat "error-END (set endundomark) " (itoa(setq MESSb (1+ MESSb))))) (vla-endundomark doc) (exit) ) ..und der Rest vom Code So SIEHST du maletwas mehr von dem Ablauf. ; - - - Jetzt habe ich mir die Geschichte mal näher angesehen für dich: *Der Fehler um den es dir geht hat mit meinem angesprochenen Problem nichts zutun! Es wäre dennoch schön (und für dich / deine Programme ja auch sinnvoll), wenn du dir das von mir angesprochene Problem einmal unter die Lupe nimmst und den Code entsprechend anpasst. Dein Problem ist der AutoCAD-Befehl AUSRICHTEN, welchen du über (Command steuerst, dieser Befehl setzt ein endundomark und somit hast du am Ende von MDXF keine Gruppe mehr, welche man in einem Schritt zurückgehen kann. Als Schnelltest füge mal drei Zeilen bei dir ein: <siehe Bildanhang> führe MDXF aus und danach nutzt du Undo/Zurück. Du wirst sehen: An deinem Problem hat sich nichts geändert bis zu bei den drei Linien angekommen bist, die verschwinden dann in einem Schritt, eben weil dort eine endundomarke gesetzt wurde, durch den Befehl Ausrichten. Hier ein Beispiel Thread zum Thema, welche ich gefunden habe nachdem ich den Übertäter Dingfest gemacht hatte: https://ww3.cad.de/foren/ubb/Forum145/HTML/001769.shtml Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 11. Aug. 2023 09:13 <-- editieren / zitieren --> Unities abgeben: Nur für kadirozen
|
kadirozen Mitglied Projektleiter
Beiträge: 30 Registriert: 13.07.2023 AutoCAD LT 2024
|
erstellt am: 11. Aug. 2023 11:17 <-- editieren / zitieren --> Unities abgeben:
Danke für die wunderbare Erklärung. Das ist genau das gleiche Ausrichten Problem, das ich habe, wie die andere Person auf anderes Thema hat. Ich nehme auch einen Blick auf seine Lösung, UCS verschieben und drehen und beschlossen, das nicht zu implementieren. Wir schließen die Daten, ohne sie am Ende dieser Routine zu speichern. Ich werde unsere Mitarbeiter informieren, dass sie, wenn sie während dieses Prozesses UNDO machen müssen, stattdessen den Befehl Schließen des Dokuments ohne Speichern und erneutes Öffnen beenden sollten. Meine derzeitige Aufgabe besteht darin, die Attribute in den Blöcken zu prüfen und sie nach Möglichkeit zu automatisieren. Vielen Lieben Dank ------------------ kadir Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 11. Aug. 2023 11:29 <-- editieren / zitieren --> Unities abgeben: Nur für kadirozen
>>"Danke für die wunderbare Erklärung"Also korrigierst du die *error* Routine noch? Schön wenn ich helfen konnte. >>"Das ist genau das gleiche Ausrichten Problem, das ich habe, wie die andere Person auf anderes Thema hat." Der Befehl ist bei uns allen gleich >>" Ich werde unsere Mitarbeiter informieren, dass sie, wenn sie während dieses Prozesses UNDO machen müssen," >>" stattdessen den Befehl Schließen des Dokuments ohne Speichern und erneutes Öffnen beenden sollten." Warum nicht einfach Undo - back / Zurück rück , wahlweise als Befehl, oder auch über das DropDown im Schnellwerkzeugkasten. Nein, Schließen&Öffnen ist schon okay, denn es ist relativ Deppensicher >>"Meine derzeitige Aufgabe besteht darin, die Attribute in den Blöcken zu prüfen" Was (wie) "prüft" man da? Ach egal, wenn es Fragen gibt, dann machst du einfach ein neues Thema auf 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: 11. Aug. 2023 11:38 <-- editieren / zitieren --> Unities abgeben:
UNDO Befehl könnte man sicher noch hinzufügen. Ich weiß, Schließen&Öffnen scheint etwas unnötig, aber es ist genau so, wie Sie schreiben. Aufgrund der Art dieser letzten Schritte (Spiegeln und Ausrichten) wird es für die Arbeitnehmer schwieriger sein, die Teile zu erkennen, die richtig ausgerichtet und gespiegelt sind. Wenn sie sich nicht sicher sind, wäre es einfacher, von Anfang anzufangen, anstatt zurückzugehen. Und eines der ärgerlichen Ergebnisse ist, dass die OSnap-Einstellung auch mit dem UNDO-Befehl rückgängig gemacht wird. Ansonsten höre ich schon die Telefonanrufe bezüglich dieses letzten Schrittes (ich kann den Endpunkt nicht wählen, irgendetwas stimmt mit AutoCAD nicht usw.), wenn ich es Schritt für Schritt zurückgehen lasse. Keiner merkt, dass sein OSnap zurückgesetzt wurde, weil das sowieso niemand deaktiviert.
------------------ kadir Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|