| |
| 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 – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: "Solange bis...." (762 mal gelesen)
|
holgerka75 Mitglied
Beiträge: 15 Registriert: 19.03.2004
|
erstellt am: 24. Mrz. 2004 14:56 <-- editieren / zitieren --> Unities abgeben:
Hallo, bei folgender Überlegung komme ich nicht weiter: User klickt einen Punkt an, die Punktnummer wird ausgelesen. Wenn die Punktnummer 7-stellig ist, lese die Koordinaten aus. (if (= T (wcmatch wertj "#######"))(setq ref2koo......)) Nun das gleiche Spiel von vorne, nächster Punkt! Solange, bis der Punkt mit der 9-stelligen Nummer kommt! Dann mache ganz normal im Programm weiter. Also, solange der Punkt nur 7-stellig ist, soll er immer wieder die Koordinaten auslesen, und in eine (immer wieder neue)Variable schreiben. Wie realisiere ich dieses "Wiederholen der Funktion" (Damals in Basic war das "goto Zeile soundso" :-)) Gruß Holger Nun soll aber der User
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 24. Mrz. 2004 16:19 <-- editieren / zitieren --> Unities abgeben: Nur für holgerka75
|
marvin101010 Mitglied ingenieur der architektur ohne diplom, bauzeichner ohne lehre, cad-admin ohne wissen :-)
Beiträge: 562 Registriert: 22.01.2003 Pentium 4 Windows XP Autocad 2002 Autocad 2002LT + Extender ADT 3.3 ArchiCAD
|
erstellt am: 24. Mrz. 2004 16:21 <-- editieren / zitieren --> Unities abgeben: Nur für holgerka75
|
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 24. Mrz. 2004 17:36 <-- editieren / zitieren --> Unities abgeben: Nur für holgerka75
Hallo Holger, schreiben in eine (immer wieder neue) Variable bei unbekannter Anzahl mach eich imme so: (setq zaehler 0) (while ... (setq zaehler (1+ zaehler)) (setq variable (read (strcat "ref2koo" (itoa zaehler)))) ... (set variable deine_aktuellen_punkt_koordinaten) ... ) liefert eine folge von variablen mit den namen ref2koo1, ref2koo2, usw. die mit (setq variable (read (strcat "ref2koo" (itoa gewünschte_nummer)))) (eval variable) wieder ausgelesen werden können. Viele Grüße spider Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 24. Mrz. 2004 18:15 <-- editieren / zitieren --> Unities abgeben: Nur für holgerka75
Hallo Holger, ähm .. Lisp ist hervorragend dazu geeignet mit Listen zu hantieren, deshalb würde ich dir empfehlen, die Listenbearbeitungsfunktionen mal anzuschauen. Ich programmiere schon eine Weile, habe auch selber bereits mit variablen Variablennamen 'gespielt' aber wirklich gebraucht habe ich dieses noch nicht. Mal ein paar Stichworte (Suchworte) für die Hilfe zum Suchen: cons - assoc - nth - mapcar - lambda - apply - append - reverse - vl-sort - ... Dein Konstrukt könnte dann wie folgt aussehen: Code:
(while ... (setq erg (cons (setq zaehler(1+ zaehler))deine_aktuellen_punkt_koordinaten)) ... (setq ergli (cons erg ergli)) ... )
Bei Fragen ... Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
holgerka75 Mitglied
Beiträge: 15 Registriert: 19.03.2004
|
erstellt am: 25. Mrz. 2004 11:16 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, vielen Dank für Eure Antworten! Ich hab entschieden es mit der Listen-Methode (wie naheliegend) zu versuchen, mit append hats geklappt (setq iii T) (while (= iii T) ..... (setq refkoo (append refkoo (list..... (setq iii (wcmatch wertj "#######")) Gruß und Danke Holger 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: 25. Mrz. 2004 12:11 <-- editieren / zitieren --> Unities abgeben: Nur für holgerka75
Holger, tu dir selbst den Gefallen und hör auf deinen Namensvetter: Nimm cons und nicht append. Wirf mal die Suche an, da wirst du eine sehr ausführliche Begründung finden. Aber immerhin verzichtest du auf die Idee, eine Invasion von globalen Variablen zu erzeugen. Da hat dein Namensvetter ebenfalls Recht, er formuliert das aber viel zu milde. Das ist nämlich ein ausgesprochen schlechter Ansatz, vor allem, wenn man die Technik nicht hat/beherrscht, um diese Variablen lokal zu machen, obwohl sie nicht 'oben hinterm Schrägstrich' stehen. Allein schon der Grund, dass man sich so den Arbeitsspeicher zumüllt bis zum Beenden von AutoCAD, sollte schon reichen. Und dass solche Programme in der Regel ab dem zweiten Durchlauf nicht mehr funktionieren, ist ein zweiter Grund, diese Idee ganz schnell in die Tonne zu treten. Also: cons statt append, und du bist auf der sicheren Seite;-) Gruß, Axel ------------------ Meine AutoLisp-Seiten Meine private Homepage Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze Meine Überzeugung... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |