Warum funktioniert dein Code nicht ? Das ist schwer zu sagen wenn man die Datei nicht hat in der du testest,
aber das Programm kann man verbessern, so das dies nicht unbedingt wichtig ist:
Vorher nach altem und neuen Namen prüfen..
oder auch:
Nebensächlichkeiten:
(RSETZ) wird wohl diverse Einstellungen (die nicht innerhalb des AutoCAD-Befehls "BLOCKUMB" gesetzt werden) zurückstellen ?
Etwas merkwürdig, aber deine Sache.
*error*Funktion: Wenn du diese schon innerhalb von c:BLOCKUMB definierst, dann kannst du diese auch lokalisieren,
also (defun c:Blockumb (/ *error*) - wenn du dies nicht machst, dann sorge dafür das du dir die vorherige *error*-Funktion
speicherst (setq oldError *error*) und in deiner *Error*-Funktion wieder zurück setzt (setq *error* oldError)
Undo: Den Befehl solltest du dir mit all sienen Optionen auch noch mal ansehen denke ich, dafür
solltest du dir mal ne Stunde Zeit nehmen oder eben wenigstens deinen Code noch mal checken.
HauptProblem: Dein Programm kann ja nur crashen wenn die Befehlszeile (Befehl _Rename) mit Werten gefüttert wird,
die nicht stimmig sind, die nachfolgenden Lispanweisungen crashen dann, weil noch ein Command aktiv ist.
Jetzt wird die *error*-Funktion aufgerufen und (RSETZ) ausgeführt, da aber der Command weiterhin aktiv ist, wird auch das crashen.
Du mußt in der Routine also zunächst dafür sorgen das kein Command mehr aktiv ist !
Ein simpler Weg: (command nil nil)
------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP