| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: Auswahl ja/nein (1981 mal gelesen)
|
steinwurm Mitglied
Beiträge: 36 Registriert: 04.12.2006
|
erstellt am: 12. Jan. 2007 08:23 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! Ich brauche nochmal Eure Hilfe. Bei meinem vorhandenen Lisp-Programm möchte ich nun noch eine Abfrage einbauen, die der Variablen "tisch" den Wert ja oder nein zuweist. Bei Ja soll der Block 1 eingefügt werden und bei Nein der Block 2. Was muss ich da einbauen? (setq tisch ???????????? ;;Bei Ja: (command "-einfüge" "Tisch1" "0,0" "1" "1" "0") ;;Bei Nein: (command "-einfüge" "Tisch2" "0,175.5" "1" "0.5" "0") Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied | |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 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: 12. Jan. 2007 09:29 <-- editieren / zitieren --> Unities abgeben: Nur für steinwurm
Hi, hier mal ein Erklärungsversuch: Code: ;; Initialisieren des Verhaltens der nachfolgenden getxx Funktion ;; Hier zulässige Keywords & einfaches Enter als Antwort zulässig (initget "Ja Nein") (if (not ;; Rückgabe von getkword in Variable Antwort speichern ;; Fragesyntax wie in AutoCAD üblich: ;; Frage, gültige Antworten in eckigen Klammern, Vorgabe bei Enter in dreieckigen Klammern ;; Gültige Antworten in eckigen Klammern mit Slash Delimiter ermöglicht die ;; Anzeige der Optionen in einem Befehlskontextmenü ;; Ab R2007 wird dieses Kontextmenü bei aktivierter dynamischer Eingabe AUTOMATISCH angezeigt ;; In pre R2007 Versionen bei Rechtsklick wenn die Frage gestellt wird. (setq ANTWORT (getkword "Tisch1 einfügen? [Ja/Nein]: <Ja> ")) ) ;; Vorgabewert setzen, wenn Antwort einfach ENTER (setq ANTWORT "Ja") ) ;; Wenn Variable Antwort = Wert "Ja"... (if (= ANTWORT "Ja") ;; Dann dieses ausführen (command "_.-insert" "Tisch1" "0,0" "1" "1" "0") ;; ansonsten jenes (command "_.-insert" "Tisch2" "0,175.5" "1" "0.5" "0") )
Die FRage bleibt natürlich, ob in dieser Situation eine "Ja/Nein" Frage die richtige ist. Wenn man mich auf der Website eines Online Händlers "fragt": "Willst Du diesen VW kaufen?" Ja/Nein erwarte ich eigentlich, dass ich bei der Antwort "Nein" nicht "Ja" zu dem Kauf eines Porsche gesagt habe... Denk' mal drüber nach ;-) Ich würde bei Deinem Beispiel eher fragen: "Tisch1 oder Tisch2 einfügen?" ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 12. Jan. 2007 10:49 <-- editieren / zitieren --> Unities abgeben: Nur für steinwurm
|
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 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: 12. Jan. 2007 11:02 <-- editieren / zitieren --> Unities abgeben: Nur für steinwurm
Zitat: Original erstellt von gmk: schau mal hier Ciao Georg
Hi gmk, ja die Herren von cadmaro haben's drauf. Jedoch sehe ich deren Code eher schon im "fortgeschrittener Lisp'ler" Bereich. Für jemanden auf dem Niveau von steinwurm ist das sicherlich "Nice to know" aber vielleicht ein wenig zu hoch?! Ich persönlich nutze in der Regel auch eher das Standardkonstrukt mit if und lokaler Variable als eine Lösung wie von den cadmaros vorgeschlagen. Die weniger elegante ist für meine persönliche Wahrnehmung auch nach Jahren des nichtbeschäftigens mit entsprechendem Code locker nachvollziehbar. Die Lesbarkeit der cadmaro Variante empfinde ich eher als sperrig; meine Meinung. ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 12. Jan. 2007 13:19 <-- editieren / zitieren --> Unities abgeben: Nur für steinwurm
Für diese Art der ABfragen, habe ich mir ein kleines Tool gebastelt, da mit diese textlichen Eingaben nicht gefallen. Mit folgendem Tool kann man diese Abfragen auch per Dialog machen (if (= VbOk (msgbox "Wollen sie den Block einfügen" "AutoCad" VbYesNo)) (command "._insert" ...) (command "._insert" ...) ) ;------------------------------------------------------------------------------ ; VBA MSGBOX Box ; (MsgBox "Wollen sie das wirklich löschen ?" "Fuchsi CAD" (+ vbYesNoCancel VbQuestion) ) ;------------------------------------------------------------------------------ ; -> _prompt Meldung ; -> _title Dialogüberschrift ; -> _Buttons angezeigte Buttons ;------------------------------------------------------------------------------ (defun MsgBox ( _prompt _title _buttons / math ret ) (vl-load-com) (setq math (vlax-get-or-create-object "ScriptControl")) (vlax-put math "Language" "VBScript") (setq ret (vlax-invoke math "EVAL" (strcat "Msgbox(\"" _prompt "\"," (itoa _Buttons) ",\"" _title "\")"))) (vlax-release-object math) ret ) (setq vbOKOnly 0 ;Nur die Schaltfläche OK anzeigen. VbOKCancel 1 ;Schaltflächen OK und Abbrechen anzeigen. VbYesNoCancel 3 ;Schaltflächen Ja, Nein und Abbrechen anzeigen. VbYesNo 4 ;Schaltflächen Ja und Nein anzeigen.
VbCritical 16 ;Meldung mit Stop-Symbol anzeigen. VbQuestion 32 ;Meldung mit Fragezeichen-Symbol anzeigen. VbExclamation 48 ;Meldung mit Ausrufezeichen-Symbol anzeigen. VbInformation 64 ;Meldung mit Info-Symbol anzeigen. vbOK 1 ;OK vbCancel 2 ;Abbrechen vbAbort 3 ;Abbruch vbRetry 4 ;Wiederholen vbIgnore 5 ;Ignorieren vbYes 6 ;Ja vbNo 7 ;Nein )
------------------ Ing. Anton Fuchs WWW.FFZELL.AT.TC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
steinwurm Mitglied
Beiträge: 36 Registriert: 04.12.2006
|
erstellt am: 20. Feb. 2007 14:28 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe das vorangehende getestet und auch schon eingebaut. Allerdings brauche ich noch eine Abwandlung. Bei der Frage nach den Außenkanten habe ich die Möglichkeit zu Ja oder Nein. Bei Ja soll nachd er Anzahl gefragt werden und bei Nein soll nichts passieren. Wenn ich jetzt jedoch nein sage, werden die 3 Punkte abgefragt (wie Kantenbelegung = 3) ?!? (initget 1 "Ja Nein") (setq Aussenkanten (getkword "Sollen Außenkanten bearbeitet werden? [Ja/Nein]:<Nein>")) (if (not Aussenkanten)(setq Aussenkanten "Nein")) (initget 2 "3 4 5 6 7 8 9") (if (= Aussenkanten "Ja") (setq Kantenbelegung (getkword "Wie viele Eckpunkte? [3/4/5/6/7/8/9]:"))) (if (= Kantenbelegung "3") (command "-einfüge" "AK-Pkt1" pause "1" "1" "0" "-einfüge" "AK-Pkt2" pause "1" "1" "0" "-einfüge" "AK-Pkt3" pause "1" "1" "0")) (if (= Kantenbelegung "4") (command "-einfüge" "AK-Pkt1" pause "1" "1" "0" "-einfüge" "AK-Pkt2" pause "1" "1" "0" "-einfüge" "AK-Pkt3" pause "1" "1" "0" "-einfüge" "AK-Pkt4" pause "1" "1" "0")) (if (= Kantenbelegung "5") (command "-einfüge" "AK-Pkt1" pause "1" "1" "0" "-einfüge" "AK-Pkt2" pause "1" "1" "0" "-einfüge" "AK-Pkt3" pause "1" "1" "0" "-einfüge" "AK-Pkt4" pause "1" "1" "0" "-einfüge" "AK-Pkt5" pause "1" "1" "0")) (if (= Kantenbelegung "6") (command "-einfüge" "AK-Pkt1" pause "1" "1" "0" "-einfüge" "AK-Pkt2" pause "1" "1" "0" "-einfüge" "AK-Pkt3" pause "1" "1" "0" "-einfüge" "AK-Pkt4" pause "1" "1" "0" "-einfüge" "AK-Pkt5" pause "1" "1" "0" "-einfüge" "AK-Pkt6" pause "1" "1" "0")) (if (= Kantenbelegung "7") (command "-einfüge" "AK-Pkt1" pause "1" "1" "0" "-einfüge" "AK-Pkt2" pause "1" "1" "0" "-einfüge" "AK-Pkt3" pause "1" "1" "0"
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
andi2050 Mitglied
Beiträge: 107 Registriert: 11.03.2003
|
erstellt am: 20. Feb. 2007 18:33 <-- editieren / zitieren --> Unities abgeben: Nur für steinwurm
Ich tippe mal darauf, daß die Variable 'Kantenbelegung' nicht als lokale Variable deklariert ist. Dann hat die Variable den Wert "3" noch von dem vorherigen Programmdurchlauf. Übrigens: Diese mehrfach-IF's lassen sich gut mit COND ersetzen... nur als Tip Grüße Andi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |