Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  "Solange bis...."

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  "Solange bis...." (753 mal gelesen)
holgerka75
Mitglied



Sehen Sie sich das Profil von holgerka75 an!   Senden Sie eine Private Message an holgerka75  Schreiben Sie einen Gästebucheintrag für holgerka75

Beiträge: 15
Registriert: 19.03.2004

erstellt am: 24. Mrz. 2004 14:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 24. Mrz. 2004 16:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für holgerka75 10 Unities + Antwort hilfreich

(while <Bedingung>
;hier mach was
)
So heißt das in Lisp.

Bei Fragen ...

Grüße Holger
(Habe im Moment keine Zeit, deshalb nur so kurz)

------------------
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

marvin101010
Mitglied
ingenieur der architektur ohne diplom, bauzeichner ohne lehre, cad-admin ohne wissen :-)


Sehen Sie sich das Profil von marvin101010 an!   Senden Sie eine Private Message an marvin101010  Schreiben Sie einen Gästebucheintrag für marvin101010

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für holgerka75 10 Unities + Antwort hilfreich

hallo

geh mal in die entwickler-hilfe
und schau dir "WHILE" und "STRLEN" an
viel spass

------------------
...so long and thanx for all the fish!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

spider_dd
Mitglied



Sehen Sie sich das Profil von spider_dd an!   Senden Sie eine Private Message an spider_dd  Schreiben Sie einen Gästebucheintrag für spider_dd

Beiträge: 1111
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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für holgerka75 10 Unities + Antwort hilfreich

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




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 24. Mrz. 2004 18:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für holgerka75 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von holgerka75 an!   Senden Sie eine Private Message an holgerka75  Schreiben Sie einen Gästebucheintrag für holgerka75

Beiträge: 15
Registriert: 19.03.2004

erstellt am: 25. Mrz. 2004 11:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von mapcar an!   Senden Sie eine Private Message an mapcar  Schreiben Sie einen Gästebucheintrag für mapcar

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für holgerka75 10 Unities + Antwort hilfreich

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz