Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  probleme mit UNDO für teilbereiche

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  probleme mit UNDO für teilbereiche (1075 mal gelesen)
tappenbeck
Mitglied
Vermessungsingenieur


Sehen Sie sich das Profil von tappenbeck an!   Senden Sie eine Private Message an tappenbeck  Schreiben Sie einen Gästebucheintrag für tappenbeck

Beiträge: 1213
Registriert: 30.05.2002

AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net

erstellt am: 23. Nov. 2004 11:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

moin, moin !

ich möchte folgende aufgabenstellung löschen:

ich habe eine funktion, die etwas zeichnet und dabei sollen teilbereiche gezeichnet werden und dann ggf. wieder gelöscht werden (Vorschau). ich wollte das über UNDO lösen - doch irgendwie klappt es nicht und mein programm steigt aus !!!

... weiter bei +++++....

folgendes UNDO-kontrukt verwende ich:

-Programmstart
-(COMMAND "_.UNDO" "_Begin")
-Error-Funktion setzen (setq old_err *error*)

.... allgemeine Funktion

-(COMMAND "_.UNDO" "_Begin")
Hier soll die Vorschau gezeichnet werden
-(COMMAND "_.UNDO" "_End")

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Wenn der USER es wünscht wird die Vorschau wieder gelöscht ! hierfür verwende ich den Befehl (COMMAND "_.UNDO" "_BACK")
=> doch jetzt kommt es zum Gau - und mein Programm stürzt ab!
Wo kann denn der Fehler sein ? Ich vermute start, dass es etwas mit
einer fehlerhaften anwendung des UNDO-befehls zusammenhängt !!!
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

-(COMMAND "_.UNDO" "_End")
-Error-Funktion ZURÜCK setzen (setq *error* old_err)


gruß Jan :-)

------------------
jan :-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ulf Böger
Mitglied



Sehen Sie sich das Profil von Ulf Böger an!   Senden Sie eine Private Message an Ulf Böger  Schreiben Sie einen Gästebucheintrag für Ulf Böger

Beiträge: 281
Registriert: 18.09.2002

IBM R50p 1.7GHz 1GB RAM
ATI Mobility Fire GL T2 128 MB
Win2000 SP3
AutoCAD Mechanical 2004 DX
Inventor 8 SP1
ADT 2004
PartSolutions 8

erstellt am: 23. Nov. 2004 11:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für tappenbeck 10 Unities + Antwort hilfreich

Merk dir doch einfach die Entity-Namen und lösche die dann!

------------------
Nur Döner macht schöner und wenn du ihn nicht isst, bleibst du wie du bist!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



Sehen Sie sich das Profil von CAD-Huebner an!   Senden Sie eine Private Message an CAD-Huebner  Schreiben Sie einen Gästebucheintrag für CAD-Huebner

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 23. Nov. 2004 11:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für tappenbeck 10 Unities + Antwort hilfreich

Nimm _UNDO _MARK und _UNDO _BACK
Das setzt nur Markierung aber bildet keine Gruppen.

Oder merk dir die Elemente (wie Ulf bereits ausgeführt hat) und lösche diese nach abbruich der Vorschau einfach.

Ausserdem würde mich die *error* Routine interessieren.
Ist da vielleicht auch ein _UNDO drin?

Mit freundlichem Gruß

Udo Hübner

------------------
Man kann eine Menge sehen, wenn man nur hinschaut.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tappenbeck
Mitglied
Vermessungsingenieur


Sehen Sie sich das Profil von tappenbeck an!   Senden Sie eine Private Message an tappenbeck  Schreiben Sie einen Gästebucheintrag für tappenbeck

Beiträge: 1213
Registriert: 30.05.2002

AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net

erstellt am: 23. Nov. 2004 11:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

(defun bus_err (s) ;interne Fehlerroutine
  (if (/= s "Funktion abgebrochen")
    (princ (strcat "\nFehler: " s))
    )
  (setq *error* old_err)
  (bus_ucs_prev)
  (COMMAND "_.UNDO" "_End")
    (if *bus_Layer2Use*
  (command "_.-layer" "_lock" *bus_Layer2Use* "")
);endif
  (command "_.regen")
  (bus_txt_h_restore);wiederherstellen der ursprünglichen Texthöhe

  (moder)
  (princ)
  )

gruß Jan :-)

------------------
jan :-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Schachinger
Ehrenmitglied V.I.P. h.c.
Konstrukteur



Sehen Sie sich das Profil von Schachinger an!   Senden Sie eine Private Message an Schachinger  Schreiben Sie einen Gästebucheintrag für Schachinger

Beiträge: 2040
Registriert: 08.04.2002

erstellt am: 23. Nov. 2004 11:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für tappenbeck 10 Unities + Antwort hilfreich

servus...
das ganze soll eine vorschau werden? wenn es nur linienzüge sind würde ich mit z.b. (grdraw) machen.... dann ist es auch wirklich nur eine vorschau. und erst danach die wirklichen bereiche zeichnen.

------------------
mfg Siegfried Schachinger
http://www.tbschatz.at

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tappenbeck
Mitglied
Vermessungsingenieur


Sehen Sie sich das Profil von tappenbeck an!   Senden Sie eine Private Message an tappenbeck  Schreiben Sie einen Gästebucheintrag für tappenbeck

Beiträge: 1213
Registriert: 30.05.2002

AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net

erstellt am: 23. Nov. 2004 12:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

hallo Siegfried,

einwenig text und schraffur ist auch noch enthalten !

gruß Jan :-)

------------------
jan :-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



Sehen Sie sich das Profil von marc.scherer an!   Senden Sie eine Private Message an marc.scherer  Schreiben Sie einen Gästebucheintrag für marc.scherer

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 23. Nov. 2004 18:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für tappenbeck 10 Unities + Antwort hilfreich

Hi Jan,
IMHOIn my humble opinion = Meiner bescheidenen Meinung nach solltest Du Undo für diesen Zweck vergessen...
Pack die Temporärobjekte in 'ne Liste und lösche dann die Elemente die in der Liste sind. Ist zuverlässiger als mit Undo rumzuhühnern, schon mal sowieso wenn Du auch noch 'n Undo im Errorhandler hast.
Hör' auf Ulf!

------------------
Ciao,
Marc

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tappenbeck
Mitglied
Vermessungsingenieur


Sehen Sie sich das Profil von tappenbeck an!   Senden Sie eine Private Message an tappenbeck  Schreiben Sie einen Gästebucheintrag für tappenbeck

Beiträge: 1213
Registriert: 30.05.2002

AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net

erstellt am: 24. Nov. 2004 09:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

danke euch allen !

ich werde das mit der liste machen !

gruß Jan :-)

------------------
jan :-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tappenbeck
Mitglied
Vermessungsingenieur


Sehen Sie sich das Profil von tappenbeck an!   Senden Sie eine Private Message an tappenbeck  Schreiben Sie einen Gästebucheintrag für tappenbeck

Beiträge: 1213
Registriert: 30.05.2002

AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net

erstellt am: 24. Nov. 2004 12:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

hi !

ich muss dieses posting nochmals aufnehmen !!!

wie würdet ihr denn verfahren, wenn im rahmen der vorschau elemente manipuliert und layer angelegt werden ????

gruß Jan :-)

------------------
jan :-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Schachinger
Ehrenmitglied V.I.P. h.c.
Konstrukteur



Sehen Sie sich das Profil von Schachinger an!   Senden Sie eine Private Message an Schachinger  Schreiben Sie einen Gästebucheintrag für Schachinger

Beiträge: 2040
Registriert: 08.04.2002

erstellt am: 24. Nov. 2004 12:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für tappenbeck 10 Unities + Antwort hilfreich

die neuen layer kannst du ja ebenfalls in ner liste behalten?...

eine idee zu den manipulierten elementen:
eine kopie des zu manipulerten elementes anlegen
ursprüngliches element nicht löschen sondern nur unsichtbar schalten ( den gruppencode dazu weis ich jetzt leidern icht ausweindig - arbeite grade am inventor. ist aber nur ein 0 / 1 für sichtbar/unsichtbar)
kopiertes element manipulieren

über die listen der entity-namen das ganze wieder umkehrbar gestalten d.h. du musst die unsichtbaren elemente sammeln und die kopierten/manipulierten.

aber das war jetzt nur so eine aus der brust geschossene idee - da wirds sicher noch bessere lösungsansätze geben oder?

------------------
mfg Siegfried Schachinger
http://www.tbschatz.at

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tappenbeck
Mitglied
Vermessungsingenieur


Sehen Sie sich das Profil von tappenbeck an!   Senden Sie eine Private Message an tappenbeck  Schreiben Sie einen Gästebucheintrag für tappenbeck

Beiträge: 1213
Registriert: 30.05.2002

AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net

erstellt am: 24. Nov. 2004 13:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

hallo siegfried,

das klingt gut - so in die richtung hatte ich auch schon überlegt.

dafür muss ich mir dann erst einmal ein konzept bauen, damit es auch allgemeingültig angewandt werden kann ! gesperrte layer abfangen etc.


gruß Jan :-)

------------------
jan :-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



Sehen Sie sich das Profil von CAD-Huebner an!   Senden Sie eine Private Message an CAD-Huebner  Schreiben Sie einen Gästebucheintrag für CAD-Huebner

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 24. Nov. 2004 14:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für tappenbeck 10 Unities + Antwort hilfreich

Man kann auch die neu erstellten Objekte in einem unbenannten Block speichern.
(ENTMAKE (LIST (CONS 0 "BLOCK")(CONS 2 "*U")(CONS 70 3)(LIST 10 0.0 0.0 0.0)))
; Hier die neuen Objekte mit entmake generieren
; zuletzt Block abschließen und einfügen
(SETQ blkname (ENTMAKE (LIST (CONS 0 "ENDBLK"))))
(ENTMAKE (LIST (CONS 0 "INSERT")
              (CONS 2 blkname)
              (CONS 10 blockbas); Variable mit Koordinate z. 0,0
              (CONS 66 0)
          )
)

; Neue Layer müssen da natürlich gesondert gemerkt werden und
; bestehende Objekte zu ändern geht dabei nicht (oder wie Schachinger vorgeschlagen hat, Objekte temporär ausnblenden und Kopien für die Vorschau erzeugen). Das Ausblenden könnte man temporär einfach mit (redraw ename 2) lösen.

Mit freundlichem Gruß

Udo Hübner

------------------
Man kann eine Menge sehen, wenn man nur hinschaut.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mapcar
Mitglied
CADmin



Sehen Sie sich das Profil von mapcar an!   Senden Sie eine Private Message an mapcar  Schreiben Sie einen Gästebucheintrag für mapcar

Beiträge: 1250
Registriert: 20.05.2002

Time flies like an arrow, fruit flies like a banana (Groucho Marx)

erstellt am: 25. Nov. 2004 12:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für tappenbeck 10 Unities + Antwort hilfreich

Ich habe doch mal meinen Errorhandler hier reingestellt vor einiger Zeit. Der leistet doch eigentlich genau das, worum es hier geht: Über einen Parameter kann man angeben, ob alles, was innerhalb des Handlers gezeichnet bzw. modifiziert wurde, erhalten bleiben oder rückgängig gemacht werden soll.

Man bräuchte nur am Ende eine Benutzerabfrage einbauen. Wenn der User alles löschen möchte, wird einfach ein (command) abgesetzt, um ein *Cancelled* auszulösen, und schon ist alles wieder weg.

Oder habe ich jetzt was übersehen?

Gruß, Axel Strube-Zettler

------------------
(defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat
Meine AutoLisp-Seiten Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz