| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Markierung für Befehl zurück (1407 mal gelesen)
|
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 20. Okt. 2008 09:10 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe einen eigenen Befehl, der beim Öffnen einer Zeichnung in der Datei acaddoc.lsp von Mechanical steht und ausgeführt wird. Am Anfang rufe ich die Funktion vla-startundomark um den Start und am Ende die Funktion vla-endundomark um das Ende einer Gruppe für den Befehl zurück einzugrenzen. Soweit so gut. Jetzt soll ich zwischen vla-startundomark und vla-endundomark eine Markierung einbauen, damit der Benutzer beim Befehl zurück eine Zwischenmöglichkeit hat. Folgendes habe ich bisher an der gewünschten Stelle versucht: 1.) (command "_.undo" "_ma") 2.) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) Es wurde leider bei keiner der beiden versuchten Möglichkeiten eine Markierung gesetzt. Was muss ich tun, damit eine Markierung zwischen vla-startundomark und vla-endundomark gesetzt wird? Danke im Voraus und viele Grüße Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 20. Okt. 2008 10:35 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
|
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 20. Okt. 2008 11:32 <-- editieren / zitieren --> Unities abgeben:
Hallo Heiko, Zitat: Original erstellt von Dorfy: Hi, IMHO funktioniert zwischen undo-start und end kein mark, vllt solltest du nur mit mark arbeiten...
ich habe bei meinem Befehl die start- und end-Funktion für den Befehl zurück auf Kommentar gesetzt und an der gewünschten Stelle (command "_.undo" "_ma") eingefügt. Leider hat das nicht zu dem gewünschten Ergebnis geführt. Gruß Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 20. Okt. 2008 11:43 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
|
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 20. Okt. 2008 12:15 <-- editieren / zitieren --> Unities abgeben:
Hallo Heiko, Zitat: Original erstellt von Dorfy: Hallo Bernd, wie ich bereits sagte, zwischen start und end wird mark NICHT laufen vllt solltest du ohne start/end und nur mit mark arbeiten
ich habe es bereits ohne start-/endmark und mit mark getestet, leider ohne Erfolg. Gruß Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 20. Okt. 2008 12:33 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
|
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 20. Okt. 2008 13:09 <-- editieren / zitieren --> Unities abgeben:
Hallo Heiko, Zitat: Original erstellt von Dorfy: Na dann zeig mal ein wenig Code (Kurzfassung) ;)
( defun c:xyz ( / ferrorsav ) ; ... (vl-doc-set '*cfunktionsave* "c:xyz") ; ... (setq *erroracad* *error*) (setq ferrorsav *error*) (setq *error* error_xyz) ; ... ; (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) ; ... (sdi_mdi_setzen nil) ; ... (if (= (vl-bb-ref '*sglvargeladen*) nil) (xyz_prog_uf) ) ; if ; ... (xyz_zeich_uf t) ; IN DIESER FUNKTION WIRD UNTER ANDEREM (command "_.undo" "_ma") AUSGEFÜHERT ; ... ; (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) ; ... (setq *error* ferrorsav) ; Rückgabe (princ) ) ; Modulende Gruß Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 20. Okt. 2008 13:37 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
IMHO mußt du in Deiner Hauptfunktion auf (vla-startundomark... verzichten und mit (command "_.undo" "_ma") arbeiten... ... (vla-startundomark ...(command "_.undo" "_ma")...(vla-endundomark... --> geht net (ergibt eine Gruppe, ohne Markierungen) Entweder Du hast die Gesamtgruppe ab (vla-startundomark... oder die einzelnen Markierungspunkte... Vllt. kannst Du irgendwelche Daten in Listen packen... mfg heiko
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 20. Okt. 2008 14:19 <-- editieren / zitieren --> Unities abgeben:
Hallo Heiko, Zitat: Original erstellt von Dorfy: IMHO mußt du in Deiner Hauptfunktion auf (vla-startundomark... verzichten und mit (command "_.undo" "_ma") arbeiten...... (vla-startundomark ...(command "_.undo" "_ma")...(vla-endundomark... --> geht net (ergibt eine Gruppe, ohne Markierungen) Entweder Du hast die Gesamtgruppe ab (vla-startundomark... oder die einzelnen Markierungspunkte...
auch in folgender Version werden keine Markierungen gesetzt: ( defun c:xyz ( / ferrorsav ) ; ... (vl-doc-set '*cfunktionsave* "c:xyz") ; ... (setq *erroracad* *error*) (setq ferrorsav *error*) (setq *error* error_xyz) ; ... (command "_.undo" "_ma") ; ... (sdi_mdi_setzen nil) ; ... (if (= (vl-bb-ref '*sglvargeladen*) nil) (xyz_prog_uf) ) ; if ; ... (xyz_zeich_uf t) ; IN DIESER FUNKTION WIRD UNTER ANDEREM (command "_.undo" "_ma") AUSGEFÜHERT ; ... (command "_.undo" "_ma") ; ... (setq *error* ferrorsav) ; Rückgabe (princ) ) ; Modulende Gruß Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 20. Okt. 2008 14:44 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
|
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 20. Okt. 2008 14:51 <-- editieren / zitieren --> Unities abgeben:
Hallo Heiko, Zitat: Original erstellt von Dorfy: wird bei nur (command "_.undo" "_ma") eine Markierung gesetzt?
Nein, es wird an keiner Stelle von (command "_.undo" "_ma") die Markierung gesetzt. Zitat: Original erstellt von Dorfy: Ist in eine der Subfunktionen zuvor ein undostart eingebaut?
Nein, es ist in keiner Subfunktion undostart eingebaut. Gruß Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 20. Okt. 2008 15:00 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
|
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 20. Okt. 2008 15:13 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Dorfy: gib mal nur (command "_.undo" "_ma") in der Befehlszeile ein und schau dir mal die Sysvar undomarks an! Funktioniert das in Mech net? mfg heiko
---------------------------------------------------- Befehl: undomarks UNDOMARKS = 0 (schreibgeschützt) Befehl: (command "_.undo" "_ma") nil Befehl: UNDOMARKS UNDOMARKS = 1 (schreibgeschützt) --------------------------------------------- Einträge siehe Anlage. Gruß Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 20. Okt. 2008 15:33 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
|
autocart Mitglied Technischer Redakteur
Beiträge: 698 Registriert: 08.09.2003
|
erstellt am: 26. Okt. 2008 00:42 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
Hallo Bernd10! 1. Da die Markierungen bei dir in "UNDOMARKS" auftauchen, aber du schreibst, dass es nicht funzt - mal eine blöde Frage von mir: Beim Versuch, die Änderungen bis zur Markierung auf einmal rückgängig zu machen (hoffe ich hab das so richtig verstanden), arbeitest du da mit "zurück"+"rück" oder nur mit "z"? 2. Falls das mit der Markierung einfach nicht funzen sollte, dann setze doch als Alternative einfach mehrere zurück-Gruppierungen. Also statt (command "_.undo" "_ma") ein neues (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))). Damit sollte doch die offene Gruppierung geschlossen werden und eine neue geöffnet werden. Damit hast du auch deine "Zwischenmöglichkeit" eingebaut. Oder hab ich da deine Wünsche falsch verstanden? ------------------ Gruß, Stephan www.stbartl.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 27. Okt. 2008 12:15 <-- editieren / zitieren --> Unities abgeben:
Hallo Stephan, Zitat: Original erstellt von autocart:
1. Da die Markierungen bei dir in "UNDOMARKS" auftauchen, aber du schreibst, dass es nicht funzt - mal eine blöde Frage von mir: Beim Versuch, die Änderungen bis zur Markierung auf einmal rückgängig zu machen (hoffe ich hab das so richtig verstanden), arbeitest du da mit "zurück"+"rück" oder nur mit "z"?
ich benutzte im Werkzeugkasten Mechanical-Hauptgruppe den Befehl Rückgängig. Es funktioniert nur nicht, wenn mein Befehl beim Öffnen einer Zeichnung über acaddoc.lsp ausgeführt wird. Zitat: Original erstellt von autocart:
2. Falls das mit der Markierung einfach nicht funzen sollte, dann setze doch als Alternative einfach mehrere zurück-Gruppierungen. Also statt (command "_.undo" "_ma") ein neues (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))). Damit sollte doch die offene Gruppierung geschlossen werden und eine neue geöffnet werden. Damit hast du auch deine "Zwischenmöglichkeit" eingebaut. Oder hab ich da deine Wünsche falsch verstanden?
Folgende Fälle habe ich getestet, ohne dass es funktioniert hat: a) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) . . (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) . . (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) b) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) . . (command "_.undo" "_ma") . . (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) c) (command "_.undo" "_ma") . . (command "_.undo" "_ma") . . (command "_.undo" "_ma") Gruß Bernd
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
autocart Mitglied Technischer Redakteur
Beiträge: 698 Registriert: 08.09.2003
|
erstellt am: 27. Okt. 2008 18:46 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd10
Zitat: Es funktioniert nur nicht, wenn mein Befehl beim Öffnen einer Zeichnung über acaddoc.lsp ausgeführt wird.
Hi Bernd! Hast du dann schon mal versucht, mit der Funktion S::STARTUP zu arbeiten? Die wird angeblich erst ausgeführt (auch automatisch), wenn die Zeichnung vollständig initialisiert wurde (was bei acaddoc.lsp nicht garantiert ist und besonders bei "command..." zu Problemen führen kann). Die S::STARTUP-Funktion kann aber trotzdem in acaddoc.lsp REdefiniert werden. Probier mal folgenden Code in deine acaddoc.lsp einzufügen: Zitat: (defun-q-list-set 's::startup (append (list(cons '/ (append(cddar(defun-q-list-ref 's::startup))'(ferrorsav))));DEINE LOKALE VARIABLE: ferrorsav (cdr (defun-q-list-ref 's::startup)) '(;HIER KOMMT DER BODY DEINER FUNKTION REIN. ICH HAB EINMAL DEN BODY DEINER FUNKTION VON DEINEM BEITRAG OBEN GENOMMEN. ; ... (vl-doc-set '*cfunktionsave* "c:xyz") ; ... (setq *erroracad* *error*) (setq ferrorsav *error*) (setq *error* error_xyz) ; ... (command "_.undo" "_ma") ; ... (sdi_mdi_setzen nil) ; ... (if (= (vl-bb-ref '*sglvargeladen*) nil) (xyz_prog_uf) ) ; if ; ... (xyz_zeich_uf t) ; IN DIESER FUNKTION WIRD UNTER ANDEREM (command "_.undo" "_ma") AUSGEFÜHERT ; ... (command "_.undo" "_ma") ; ... (setq *error* ferrorsav) ; Rückgabe (princ) ) ) )
------------------ Gruß, Stephan www.stbartl.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd10 Mitglied
Beiträge: 763 Registriert: 20.11.2003 Intel(R) Xeon(R) W-2123 CPU @ 3.60GHz 16 GB RAM Windows 10 Pro 64-bit AutoCAD Mechnical 2020 Deu
|
erstellt am: 28. Okt. 2008 10:39 <-- editieren / zitieren --> Unities abgeben:
|