| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: "Undo" bzw Zurück" (653 mal gelesen)
|
BerndE Mitglied Hochbautechniker
Beiträge: 557 Registriert: 05.07.2003 Revit 2013 ACA 2012 deutsch BuildingOne 5.4.5 Win7 WindowsNetz
|
erstellt am: 16. Jul. 2003 00:19 <-- editieren / zitieren --> Unities abgeben:
Hi Forum, ich habe ein VBA-Makro das unter anderm aus einem SelectionSet einen Wblock anlegt An dem Beginn des Makros habe ich <<ThisDrawing.StartUndoMark>> gesetzt, am Ende als vorletzte Zeile dementsprechend <<ThisDrawing.EndUndoMark>>. Als letzte Zeile probierte ich zwei Varianten. Die Zeile <<ThisDrawing.SendCommand "z" & vbCr>> nimmt aber leider nur den letzten Befehl zurück und nicht die Gruppierung, welche ich mit StartUndoMark und EndUndoMark zu erzeugen hoffte. Die Variate <<ThisDrawing.SendCommand "_undo" & vbCr & "r" & vbCr & "j" & vbCr">> geht zuweit zurück (bis zum öffnen der zeichnung) Was mache ich falsch? Bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mallorca7 Mitglied Konstrukteur
Beiträge: 165 Registriert: 07.05.2002 Windows 7 Autocad Mechanical 2011
|
erstellt am: 16. Jul. 2003 08:02 <-- editieren / zitieren --> Unities abgeben: Nur für BerndE
Hi Bernd, was ist wenn du die Markierung über <ThisDrawing SendCommand "_undo"& vbCr "m" &vbCr> setzt. Du hast in deiner Zeile <<ThisDrawing.SendCommand "_undo" & vbCr & "r" & vbCr & "j" & vbCr">> ein j für ja drin. Wenn du in der Zeile <<ThisDrawing.SendCommand "_undo" & vbCr & "r" & vbCr>> geht das Zurück bis zur Markierung. Ist keine Markierung geht er bis zum Zeichnungsanfang, als die Zeichung geladen wurde, dann fragt er natürlich: Befehl: zurück Anzahl der rückgängig zu machenden Operationen eingeben oder [Auto/Steuern/Beginn/Ende/Markierung/Rück] <1>: r Dies macht alles rückgängig. OK? <J> j Stutzen GRUPPE Linie GRUPPE Polygon GRUPPE Kreis GRUPPE Linie GRUPPE Es wurde bereits alles gelöscht Befehl: Ist die Markierung gesetzt fragt Autocad nicht nach, du brauchst kein "j": Befehl: zurück Anzahl der rückgängig zu machenden Operationen eingeben oder [Auto/Steuern/Beginn/Ende/Markierung/Rück] <1>: r Löschen GRUPPE Stutzen GRUPPE Linie GRUPPE Markierung gefunden Befehl: Der Befehl <<ThisDrawing.StartUndoMark>> setzt zwar einen Zurückpunkt ist aber dem markieren beim zurück-Befehl nicht gleich. Er bewirkt nur, daß Du beim Beenden des Makros mit z immer einen Befehl zurückgehen kannst.
ich hoffe das hilft dir weiter
lg manfred
[Diese Nachricht wurde von mallorca7 am 16. Juli 2003 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoSiNiNo Mitglied Konstrukteur
Beiträge: 1126 Registriert: 09.10.2002 Autodesk Building Design Suite Premium 2021 Windows 10 Pro 64bit HP Workstation Z620, 24GB GeForce GTX 970
|
erstellt am: 16. Jul. 2003 08:22 <-- editieren / zitieren --> Unities abgeben: Nur für BerndE
|
BerndE Mitglied Hochbautechniker
Beiträge: 557 Registriert: 05.07.2003 Revit 2013 ACA 2012 deutsch BuildingOne 5.4.5 Win7 WindowsNetz
|
erstellt am: 16. Jul. 2003 10:26 <-- editieren / zitieren --> Unities abgeben:
@Roland. mittels VBA lasse ich ein rechteckzeichnen, stanze diesen inhalt aus und verwandle ihn in einen wblock. diese manipulation will ich natürlich nach der wblockerstellung wieder rückgängig machen. habe nur die möglichkeit sendcommand gefunden, um das rückgängig zu machen. wenn es einen VBA-befehl dafür gibt, wäre ich Dir dankbar, wenn du ihn mir sagen würdest, konnte selbst nach intensiver suche in der hilfe keine beispiele finden. bernd Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoSiNiNo Mitglied Konstrukteur
Beiträge: 1126 Registriert: 09.10.2002 Autodesk Building Design Suite Premium 2021 Windows 10 Pro 64bit HP Workstation Z620, 24GB GeForce GTX 970
|
erstellt am: 16. Jul. 2003 11:46 <-- editieren / zitieren --> Unities abgeben: Nur für BerndE
|
BerndE Mitglied Hochbautechniker
Beiträge: 557 Registriert: 05.07.2003 Revit 2013 ACA 2012 deutsch BuildingOne 5.4.5 Win7 WindowsNetz
|
erstellt am: 16. Jul. 2003 11:56 <-- editieren / zitieren --> Unities abgeben:
original-objekte? du meinst original-zeichnungen bzw. dateien? nee...das ist für mich unpraktisch. da ich aus einem plan mehrere wblöcke ausstanzen will, die sich u.U. auch überlappen können, müßte ich den plan immer wieder neu laden und bei dateigrößen von 5-8mb übers netz wird das makro zu langsam Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoSiNiNo Mitglied Konstrukteur
Beiträge: 1126 Registriert: 09.10.2002 Autodesk Building Design Suite Premium 2021 Windows 10 Pro 64bit HP Workstation Z620, 24GB GeForce GTX 970
|
erstellt am: 16. Jul. 2003 11:59 <-- editieren / zitieren --> Unities abgeben: Nur für BerndE
|
BerndE Mitglied Hochbautechniker
Beiträge: 557 Registriert: 05.07.2003 Revit 2013 ACA 2012 deutsch BuildingOne 5.4.5 Win7 WindowsNetz
|
erstellt am: 16. Jul. 2003 12:01 <-- editieren / zitieren --> Unities abgeben:
|
RoSiNiNo Mitglied Konstrukteur
Beiträge: 1126 Registriert: 09.10.2002 Autodesk Building Design Suite Premium 2021 Windows 10 Pro 64bit HP Workstation Z620, 24GB GeForce GTX 970
|
erstellt am: 16. Jul. 2003 12:31 <-- editieren / zitieren --> Unities abgeben: Nur für BerndE
Wenn die Objekte in einem SelSet sind, kannst du die doch leicht kopieren, verändern und in ein neues SelSet schreiben und daraus dann den WBlock machen. Danach kannst du die Objekte des neuen SelSet wieder löschen. ------------------ Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BerndE Mitglied Hochbautechniker
Beiträge: 557 Registriert: 05.07.2003 Revit 2013 ACA 2012 deutsch BuildingOne 5.4.5 Win7 WindowsNetz
|
erstellt am: 16. Jul. 2003 12:36 <-- editieren / zitieren --> Unities abgeben:
Ja...du hast natürlich recht, ich hätte diesbezüglich auch noch andere möglichkeiten vorzugehen. es geht mir aber nicht nur ums kopieren. mit dem makro habe ich layerschaltungen verändert, die zeichnung in teilen editiert....ne ganze menge befehle halt. nach ablauf will ich nichts anderes, als die zeichnung wieder so vorfinden wie zu startzeitpunkt des makros. ich könnte natürlich zu beginn des makros die aktive zeichnung sichern, am ende schließen und neu starten....aber das wäre ne notlösung, weil dadurch die laufzeit des makros unnötig lang wird. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mallorca7 Mitglied Konstrukteur
Beiträge: 165 Registriert: 07.05.2002 Windows 7 Autocad Mechanical 2011
|
erstellt am: 16. Jul. 2003 12:52 <-- editieren / zitieren --> Unities abgeben: Nur für BerndE
Hi Bernd, wenn ich dich richtig verstehe, dann laß doch einfach das ThisDrawing.StartUndoMark weg. Nach ausführen des Makro führst du ein zurück aus und alles was das Makro auf der Zeichnung gemacht hat wird rückgängig gemacht, Da du das Ergebnis als wblock gesichert hast, bleibt der wblock in der neuen Zeichung erhalten. lg manfred Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BerndE Mitglied Hochbautechniker
Beiträge: 557 Registriert: 05.07.2003 Revit 2013 ACA 2012 deutsch BuildingOne 5.4.5 Win7 WindowsNetz
|
erstellt am: 16. Jul. 2003 13:15 <-- editieren / zitieren --> Unities abgeben:
hi mallorca.... genau das würde ich ja gerne. darum gehts ja in meiner ausgangsfrage. da das makro aber von anderen anwendern benutzt werden soll und ich nicht weiß, was die alles in der datei gearbeitet haben, bevor sie das makro aufrufen, ist mir die gefahr zu groß, daß das <zurück> bis zum zeitpunkt des öffnens zurückgeht und den anwendern eventuell stundenlange arbeit vernichtet. aus diesem grunde möchte ich makrogesteuert mit <zurück> bis zu dem zeitpunkt des makrostarts. und genau das klappt nicht (siehe ausgangsfrage) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoSiNiNo Mitglied Konstrukteur
Beiträge: 1126 Registriert: 09.10.2002 Autodesk Building Design Suite Premium 2021 Windows 10 Pro 64bit HP Workstation Z620, 24GB GeForce GTX 970
|
erstellt am: 16. Jul. 2003 13:20 <-- editieren / zitieren --> Unities abgeben: Nur für BerndE
Bei mir hat das allerdings bisher funtioniert. Hab ebenfalls StartUndoMark am Anfang und EndUndoMark am Ende eingesetzt. Hast du versucht nach dem Makro einmal Zurück zu verwenden, oder hast du es nur mit SendCommand versucht? Sonst probier es einmal nach der Ausführung des Makros. ------------------ Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BerndE Mitglied Hochbautechniker
Beiträge: 557 Registriert: 05.07.2003 Revit 2013 ACA 2012 deutsch BuildingOne 5.4.5 Win7 WindowsNetz
|
erstellt am: 16. Jul. 2003 13:46 <-- editieren / zitieren --> Unities abgeben:
|
Bernd Cuder Mitglied Selbständig
Beiträge: 692 Registriert: 10.07.2002 AutoCAD 2002/2004/2005 unter Windows 2000 Professional SP3 PIV 3.4GHz 1024MB NVIDIA GeForce FX Go5700
|
erstellt am: 17. Jul. 2003 00:49 <-- editieren / zitieren --> Unities abgeben: Nur für BerndE
Also, der Programmierweg wäre jener (hat RoSiNiNo ja eh schon beschrieben): Irgendwas zu programmieren und die Zurück Funktion zu benutzen um den Standard wieder herzustellen ist "dirty code" Also muß der Programmierer alles bereinigen was er so erzeugt hat im Code, sprich Elemente kopieren, exportieren und dann wieder löschen, alles in der neuen Funktion. Alles andere ist wie gesagt "dirty..." ------------------ Bernd Cuder Cad&Co makes CAD easy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoSiNiNo Mitglied Konstrukteur
Beiträge: 1126 Registriert: 09.10.2002 Autodesk Building Design Suite Premium 2021 Windows 10 Pro 64bit HP Workstation Z620, 24GB GeForce GTX 970
|
erstellt am: 17. Jul. 2003 07:11 <-- editieren / zitieren --> Unities abgeben: Nur für BerndE
Danke Bernd, würd ich auch so machen, kann ja eigentlich nicht so viel Arbeit sein. Einfach am Anfang die Objekte in ein neues SS kopieren, dann alle Änderungen erledigen, ruas damit und Objekte wieder löschen. Das sind am Anfang fünf, sechs Zeilen mehr und am Ende maximal drei. ------------------ Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mallorca7 Mitglied Konstrukteur
Beiträge: 165 Registriert: 07.05.2002 Windows 7 Autocad Mechanical 2011
|
erstellt am: 17. Jul. 2003 08:03 <-- editieren / zitieren --> Unities abgeben: Nur für BerndE
Hi Bernd und Roland, selbstverständlich ist das dirty code hier ging es nur um eine schnelle Lösung. Trotzdem noch mal zum Mißverständnis, daß die Funktion StartUndoMark auslöst. Hier wird in der Namensgebung suggeriert das eine Markierung gesetzt wird, die über zurück und "m" gesetzt wird und mit zurück und "r" rückgängig gemacht werden kann. Das ist aber so nicht richtig. Nachdem im Code EndUndoMark gesetzt wird, ist 1 Schritt für das zurück definiert. Die Funktion erzeugt einen "Haltepunkt" für das zurück um einen Schritt. Ist die Funktion im Programm nicht vorhanden, macht ein "z"urück alles rückgängig was das Makro in der Zeichnung erstellt. Das man in VBA programmieren etwas anders denken muß als beim Zeichnen ist die andere Sache. Daher der Weg über Kopieren des Auswahlsatzes und mit diesen weiterarbeiten der richtige Weg. lg manfred Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |