| |
| 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: Sub/Function möglich ?? (581 mal gelesen)
|
Frank88 Mitglied
Beiträge: 156 Registriert: 11.10.2004 AutoCAD 2019/C3D
|
erstellt am: 21. Okt. 2004 08:48 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen, gibt es eigentlich in Lisp eine Möglichkeit, ähnlich wie in anderen Programmiersprachen, Subs oder Functions anzulegen, auf die von anderen Programmteilen aus zugegriffen wird? Gruß, Frank
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 21. Okt. 2004 08:53 <-- editieren / zitieren --> Unities abgeben: Nur für Frank88
Ja , logo ... (defun MEINESUB ( A B ) (+ A B) ) und dann im "Hauptprogramm" (defun c:addiere( / A B) (if(and(setq A (getreal "\nErster Summand : ")) (setq B (getreal "\nZweiter Summand : ")) ) (MEINESUB A B) ) ) guck dir mal Mapcars Seiten an! ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." 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: 21. Okt. 2004 08:56 <-- editieren / zitieren --> Unities abgeben: Nur für Frank88
natürlich geht das z.B.: du musst des öfteren 2 werte addieren (ok. sehr einfachjes Beispiel aber was solls) dann kannst du dir dazu eine eigene funktion schreiben, die das macht z.B.: (defun Addiere ( wert1 wert2 / ) (+ wert1 wert2 )) die funktion heisst nun addiere und hat 2 übergabepaarameter. zurückgegeben wird das ergebniis der letzten klammer (+ wert1 wert2) diese funktion kannst du nun in allen Lisp-Programmen verwenden. z.B.: (setq w1 (getreal "bitte wert1 eingeben")) (setq w1 (getreal "bitte wert2 eingeben")) (setq erg (Addiere w1 w2)) (print erg) ------------------ WWW.FFZELL.AT.TC 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: 21. Okt. 2004 08:57 <-- editieren / zitieren --> Unities abgeben: Nur für Frank88
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 21. Okt. 2004 09:05 <-- editieren / zitieren --> Unities abgeben: Nur für Frank88
Zitat: Original erstellt von fuchsi: @CADmium schon wieder fast zeitgleich, unddas auch noch mit dem selben Beispiel
@Fuchsi : sorry ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Frank88 Mitglied
Beiträge: 156 Registriert: 11.10.2004 AutoCAD 2019/C3D
|
erstellt am: 21. Okt. 2004 09:57 <-- editieren / zitieren --> Unities abgeben:
|
Frank88 Mitglied
Beiträge: 156 Registriert: 11.10.2004 AutoCAD 2019/C3D
|
erstellt am: 21. Okt. 2004 11:48 <-- editieren / zitieren --> Unities abgeben:
Zu früh gefreut. In den Subs sollen Zeichenketten bearbeitet und dann wieder zurückgegeben werden. Das passiert in WHILE-Schleifen. (defun Z_kürzen (VStr Zeile WW) ;Zeichen vom Zeilenanfang bis Vergleichs-String entfernen (setq Z -1) (setq TStr WW) (while (= TStr WW) (setq Z (+ Z 1)) (setq Zeile (substr Zeile 2)) (setq TStr (wcmatch Zeile VStr)) ) ) Wie bekomme ich nun die Variable Zeile, um die es mir geht, wieder ins Hauptprogramm? Gruß, Frank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 21. Okt. 2004 11:55 <-- editieren / zitieren --> Unities abgeben: Nur für Frank88
so: (defun Z_kürzen (VStr Zeile WW) (setq Z -1) (setq TStr WW) (while (= TStr WW) (setq Z (+ Z 1)) (setq Zeile (substr Zeile 2)) (setq TStr (wcmatch Zeile VStr)) ) ZEILE ) zurückgegeben wird immer das Ergebnis des zuletzt ausgeführten Befehls deshalb solltest du auch mal Mapcars Seite besuchen!!! ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |