| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Objektfang (424 mal gelesen)
|
vision Mitglied
Beiträge: 113 Registriert: 27.10.2003 AutoCAD 2015 Expresstools Windows 10
|
erstellt am: 09. Sep. 2004 10:15 <-- editieren / zitieren --> Unities abgeben:
Hallo, in einem Lispprogramm ist folgende Anweisung: (setvar "OSMODE" 32) (setq schn (getpoint "\n Schnittpunkt wählen: ")) . . . Wenn der Schnittpunkt dann aber doch nicht ausgewählt wird, kommt es im weiteren Programverlauf zu einer Fehlfunktion. Frage: gibt es eine Möglichkeit den Objektfang zu überwachen?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 09. Sep. 2004 10:20 <-- editieren / zitieren --> Unities abgeben: Nur für vision
|
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 09. Sep. 2004 11:52 <-- editieren / zitieren --> Unities abgeben: Nur für vision
> ... den Objektfang überwachen Did you mean ... die Objektwahl überwachen>? Ich denke wie Thomas auch nicht, dass das eine Frage des OSMODE ist - hier geht es nur um die Gestaltung des Programmablaufs. Den Objektfang überwachst du doch schon, indem du OSMODE auf 32 setzt. Kannst ja anschließend (setvar "osmode" 0) oder sonstwas verwenden. Aber macht es überhaupt Sinn, das Programm fortzusetzen, wenn der Schnittpunkt nicht angegeben wurde? Wenn ja, sollte auch ein Prompt wie "Wählen Sie einen Schnittpunkt oder drücken Sie Return" erscheinen. 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 [Diese Nachricht wurde von mapcar am 09. Sep. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
vision Mitglied
Beiträge: 113 Registriert: 27.10.2003 AutoCAD 2015 Expresstools Windows 10
|
erstellt am: 09. Sep. 2004 12:12 <-- editieren / zitieren --> Unities abgeben:
Hallo! Bei diesem Testprogramm erhalte ich immer die Meldung [Schnittpunkt ist gewählt!] auch wenn ich mit der Maus neben dem Schnittpunkt klicke! (defun c:LINE_BRUCH () (setq bl (entsel "\n Bruchlinie wählen: ")) (setvar "OSMODE" 32) (if(setq schn (getpoint "\n Schnittpunkt wählen: ")) (progn (princ" [Schnittpunkt ist gewählt!] ") ) (princ" [Schnittpunkt ist nicht gewählt!] ") ) ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 09. Sep. 2004 13:19 <-- editieren / zitieren --> Unities abgeben: Nur für vision
|
Peter Tropf Mitglied Konstrukteur
Beiträge: 246 Registriert: 28.06.2003
|
erstellt am: 09. Sep. 2004 20:00 <-- editieren / zitieren --> Unities abgeben: Nur für vision
Hallo, auch wenn das Pgm so aussieht, hat es nicht den gewünschten Effekt: (defun C:LINE_BRUCH (/ BL SCHN) (setq BL (entsel "\n Bruchlinie wählen: ")) (setvar "OSMODE" 32) (if (setq SCHN (getpoint "\n Schnittpunkt wählen: ")) (princ " [Schnittpunkt ist gewählt!] ") (princ " [Schnittpunkt ist nicht gewählt!] ") ) ;_ end if ) ;_ end defun Du willst vermutlich den User zwingen, einen Schnittpunkt einzugeben, oder? OSMODE setzt aber "nur" den Dauerobjektfang und der wird nicht überwacht. Also setzt jede beliebige Punkteingabe SCHN auf True. Du kannst nur mit initget ein Return abfangen.
------------------
Gruß Peter (Fachbuchautor und AutoCAD-Trainer) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 10. Sep. 2004 01:10 <-- editieren / zitieren --> Unities abgeben: Nur für vision
Bei einem Return zeigt das Programm aber korrekt an, dass kein Punkt gewählt wurde. Die Return-Eingabe ist also nicht das Problem, und initget daher auch keine Lösung. AutoCAD bzw. Lisp können überhaupt nicht überprüfen, ob eine Eingabe des Benutzers inhaltlich korrekt ist - es kann sowieso nur getestet werden, ob die Eingabe formal korrekt ist (Datentyp == Punkt). Es sieht so aus, dass hier erwartet wird, dass der User einen Schnittpunkt wählt, der auf der zuvor gewählten Linie liegt. Das muss getestet werden! Und da muss sich dann das Programm schon was einfallen lassen, z.B. mit vlax-curve... usw. Oder mit ein wenig analytischer Geometrie. Gruß, Axel Strube-Zettler <edit> Richtig aber, dass das 'lokalisieren' der Symbole hier nicht die Ursache war </edit> ------------------ (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 [Diese Nachricht wurde von mapcar am 10. Sep. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |