• Dieses Forum ist die maschinengenerierte Übersetzung von www.cad3d.it/forum1 - der italienischen Design-Community. Einige Begriffe sind nicht korrekt übersetzt.

Routine lisp nicht arbeiten

  • Ersteller Ersteller Angelo2449
  • Erstellt am Erstellt am

Angelo2449

Guest
Hallo alle,
Ich werde verrückt nach dieser kleinen Routine, die nicht funktioniert.
Code:
 (defun c:prova (/ cx cy cx cyx cyyyy xyz)

(setq gefleckt (getpoint "\nclick point"))
(Befehl "_circle" Punkt 0,15)

(Setq cx)
(setq cy)

(setq cxx (+ cx 0.20))
(setq cyyy (+ cy 0.25))

(setq xyz (list cxx cyyy 0.00)

(Befehl "_circle" xyz 0.40)
(Befehl "_change" "_last" "_p" "_c" "_red"")

)
Danke.
 
zu mir nach Linienarbeiten.
versuchen, lokale Variablen zu entfernen
(Defunc c: Test (/ cx cy cx cyx cyx xyz) -> (Defunc c: Test ()
 
Code:
(defun c:prova (/ cx cy cx cyx cyyyy xyz)

(setq gefleckt (getpoint "\nclick point"))

(setosnaponoff "off")

(Befehl "_circle" Punkt 0,15)

(Setq cx)
(setq cy)

(setq cxx (+ cx 0.20))
(setq cyyy (+ cy 0.25))

(setq xyz (list cxx cyyy 0.00)

(Befehl "_circle" xyz 0.40)

(Befehl "_change" "_last" "_p" "_c" "_red"")

(setosnaponoff "on")

)

; ein- oder ausschalten osnap, äquivalent zu f3 Schlüssel
(defun setosnaponoff(mode/osmode)
(setq osmode (getvar "osmode")
(falls)
(falls) osmode 16384)
(Setvar "osmode" (- osmode 16384))
)
(falls) osmode 16384)
(setvar "osmode" (+ osmode 16384))
)
)
)
Sie müssen auf die Osnap achten, wenn es Ihnen egal ist.
 
Ich hatte nicht an die Osnap gedacht, weil in der Regel vor jedem Verfahren
(setq oldosmode (getvar "osmode")
(Setvar "osmode" 0)

und am Ende
(setvar "osmode" oldosmode)

so dass das Verfahren für den Bediener absolut transparent ist und nicht durch die Osnap beeinflusst wird.
 
durch Änderung der Systemvariablen wäre es gut, eine Fehlerverwaltung für die Restaurierung im Falle der Zwangsleistung vorzubestellen.
um zu vermeiden... es gibt immer die gute "_non"
(Befehl "_circle") "_non" xyz 0.40
 
Manchmal lässt mich die Lispe beunruhigt werden, eine Routine funktioniert, eine andere ähnliche funktioniert nicht!
Ich bin sicher, dass ich falsch bin, aber die Synthetik der Sprache führt zu häufigen Fehlern, aber, die bei der Programmierung nicht so nachweisbar sind.
Ich muss mich daran gewöhnen.
Übrigens funktioniert die Routine gut, plötzlich, ohne Code zu ändern, es funktioniert!
 
Mal sehen, ob ich verstehe:
- Definieren Sie eine *error* Funktion
- vor der Liste, wählen Sie den Wert osmode
- im Falle eines Routinefehlers, die Lispe nimmt den Fehler (als?) ab, die *error* Funktion, die den Osmode wiederherstellt und die Fehlermeldung sieht.

Was ich nicht verstehe, ist, wie die Lispe den Fehler abbricht und dann automatisch die *error* Routine startet.
 
eine Routine hat einen Start und ein Ende, wenn diese Autolisp stoppt immer wertet, wenn es eine Funktion *error* gibt
 
Zuletzt bearbeitet:

Statistik des Forums

Themen
58.521
Beiträge
499.056
Mitglieder
104.110
Neuestes Mitglied
ChristianR

Zurzeit aktive Besucher

Keine Mitglieder online.
Zurück
Oben