| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Autolisp Programmierung (2432 mal gelesen)
|
zelle11 Mitglied Student
Beiträge: 1 Registriert: 27.06.2014
|
erstellt am: 27. Jun. 2014 16:11 <-- editieren / zitieren --> Unities abgeben:
Hallo Ich habe die Aufgabe eine Funktion im Autocad zu programmieren , die als Taschenrechner für Multiplikationen dient, wenn zwei Dezimalzahlen (getreal) eingegeben wurden. Wenn keiner der beiden Zahlen den Wert Null hat, wird soll das Ergebnis mit einem Anzeigefenster (alert) präsentiert werden, Ich habe mir folgenden Code überlegt, allerdings funktioniert das noch nicht wirklich, vllt könnt ihr mir ja helfen: (defun rechner() (setq a (getreal "Eingabe Zahl 1")) (setq b (getreal "Eingabe Zahl 2")) (setq produkt(*ab) (if(<0 produkt) and (>0 produkt) (alert produkt) Danke!
------------------ ze Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 27. Jun. 2014 17:24 <-- editieren / zitieren --> Unities abgeben: Nur für zelle11
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 28. Jun. 2014 12:32 <-- editieren / zitieren --> Unities abgeben: Nur für zelle11
Hallo ze, vielleicht noch ein Gedankenansatz zur Abfrage der Werte: mit dem logischen AND kannst Du die Abfragen gleich prüfen, wenn eine Ungültig ist passiert nichts, wenn alles korrekt ist wird der multiplizierte Wert A*B in der Alert-Box ausgegeben (RTOS macht aus einer REAL-Zahl einen STRING) Code:
(defun c:rechner( / A B) (if (and (setq a (getreal "\nEingabe Zahl 1")) (/= a 0.0) (setq b (getreal "\nEingabe Zahl 2")) (/= b 0.0)) (alert (rtos (* a b)2 3)) ) )
------------------ viele Grüße
Jörn http://www.bosse-engineering.com Orthogonalvermassung Youtube [Diese Nachricht wurde von joern bosse am 28. Jun. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 28. Jun. 2014 17:48 <-- editieren / zitieren --> Unities abgeben: Nur für zelle11
Genau, man könnte auch als sinnig ansehen die Abfrage nach a oder b zu wiederholen falls eine Null angegeben wurde. Dies wäre mit etwas Schreibarbeit schnell erledigt, oder man nutzt initget. (initget 1); hoffe die 1 stimmt, kann man aber ja schnell in der Hilfe nachschlagen. (setq a (getreal "\nZahl1: ")) ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 29. Jun. 2014 11:36 <-- editieren / zitieren --> Unities abgeben: Nur für zelle11
Hallo, @cadffm fast ist 2 Aber das ganze kommt auch ohne Variablen aus.
Code: (defun rechner () (alert (strcat "Das Ergebnis ist: " (rtos (* (progn(initget 2)(getreal "\n Eingabe Zahl 1: ")) (progn(initget 2)(getreal "\n Eingabe Zahl 2: ")) ) ) ) ) )
------------------ Gruß Wolfgang Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 29. Jun. 2014 11:55 <-- editieren / zitieren --> Unities abgeben: Nur für zelle11
|