Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  in lisp variablen-felder erzeugen?!

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:  in lisp variablen-felder erzeugen?! (709 mal gelesen)
Schachinger
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2040
Registriert: 08.04.2002

erstellt am: 15. Feb. 2004 20:25    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 forum!

wieder mal eine frage für die man mich wohl am besten an den lisp-pranger zur allgemeinen belustigung stellen sollte *G* aber da mir alles was ich über lisp weis im selbststudium erarbeitet habe und in meinem umfeld leider keine ansprechperson dazu habe muss ich meine - diesmal wieder grundlegende - frage wohl hier ins forum stellen 

also:
in z.b. c++ kann man ja wunderbar z.b. 2-dimensionale variablenfelder erzeugen.  z.b. eine variable x mit den spalten y und den reihen z. x(y,z) oder so ähnlich... gibts in lisp eine ähnliche möglichkeit?!?

------------------
mfg Siegfried Schachinger
http://www.tbschatz.at

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

Claudio
Mitglied
Architekt


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

Beiträge: 334
Registriert: 13.04.2002

ACA, Revit, MAX 2020

erstellt am: 15. Feb. 2004 21:03    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 Schachinger 10 Unities + Antwort hilfreich

;;eine Lösung?
(defun dimvars (x y z / A)
(setq A (* (* x y ) z))
)
(defun c:Mach ()
(setq a (dimvars 1 2 3))  ;;; Variblenzuweisung X=1,Y=2,Z=3
(princ "Der Wert ist : ")(princ a)(princ)
)
;;;Gruß Claudio

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

Schachinger
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2040
Registriert: 08.04.2002

erstellt am: 15. Feb. 2004 21:58    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 claudio,

ne das wars nicht ganz - ich meinte keine multiplikation oder andere rechenoperation zw. verschiedenen variablen. sondern nur mal als beispiel (hat jetzt nichts mit dem zutun für das ich das brauchen würde aber damit sollte klar sein was ich meinte):

z.b. schach.... 8x8 felder auf dem spielfeld. am besten lässt sich sowas "durchrechnen" durch ein 2dimensonales variablenfeld. z.b. in der variable "schach(1,1)" ist gespeichert welcher stein auf diesem feld steht oder ob er leer ist( zu beginn ein weißer turm). oder in der variable "schach(7,7)" ein schwarzer bauer zu beginn... meine frage ist ob es in lisp eine möglichkeit gibt solche variablenfelder zu definieren oder zu "simulieren"?

------------------
mfg Siegfried Schachinger
http://www.tbschatz.at

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: 15. Feb. 2004 22: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 Schachinger 10 Unities + Antwort hilfreich

Hallo Schachinger,

das ist in meinen Augen nichts weiter als eine Liste mit Listen als Listenelement. Die kannst du dir in Lisp aufbauen, wie du möchtest. und eine Subfunktion zu schreiben, die dir das Element (1,2) aus der Liste liest, ist ja nun mit (nth..) auch kein Problem.
Vielleicht denkst du etwas zu kompliziert.
Bsp:
'(
(1 2 3 4 5 6 7 8)
(1 2 3 4 5 6 7 8)
(1 2 3 4 5 6 7 8)
(1 2 3 4 5 6 7 8)
(1 2 3 4 5 6 7 8)
(1 2 3 4 5 6 7 8)
(1 2 3 4 5 6 7 8)
(1 2 3 4 5 6 7 8)
)

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

Schachinger
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2040
Registriert: 08.04.2002

erstellt am: 16. Feb. 2004 07:40    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

Zitat:
Original erstellt von Brischke:
...Vielleicht denkst du etwas zu kompliziert...

ups.... wieder mal vor lauter bäumen den wald nicht gesehen.. muss mich wohl wieder mal beim arzt durchcheckn lassen ...

danke holger!

------------------
mfg Siegfried Schachinger
http://www.tbschatz.at

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

Speedcad
Mitglied



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

Beiträge: 76
Registriert: 17.01.2004

erstellt am: 16. Feb. 2004 09:37    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 Schachinger 10 Unities + Antwort hilfreich

Erwarte aber keine Geschwindigkeit beim abrufen deiner Speicherfelder.

Bei Listen sind die Speicher durch Zeiger verkettet , das heißt die Funktion nth muss die Liste immer von vorne durch zählen um beispielsweise das letzte Element zu bekommen (erste Element hat ein Zeiger auf zweite Element , zweite auf dritte usw.).
Wahrscheinlich sind die angelegten Speicherorte dann auch noch vom Typ double. Da Lisp dann auch noch zur Laufzeit interpretiert ist das ganze dann ar...langsam.
Das ist übrigens einer der Nachteile von Lisp (muss auch mal erwähnt sein).

Ein wenig schneller geht’s dann so:
Wenn du z.B. die x Reihe als fortlaufende Variable definierst
(x1 ; x2 ; x3 usw.)dann eine Liste darauf setzen und mit den y-Werten füllen.


(setq nummer 5)  ; x Nummerrierung

(set (setq vari (read (strcat "x" (itoa nummer )))) '() )
(set vari (cons  y3 (eval vari)))

Abfragen dann so :

(setq nummer 5)
(setq x5y3 (nth 3(eval (setq vari (read (strcat "x"(itoa nummer)))))))

Was dann jeweils die bessere Variante ist musst du dann  austesten.
Es scheint das Autolisp zum schnellen Speichern und Abfragen von größeren Datenmengen denkbar ungeeignet ist.
Ich lasse mich aber gerne eines Besseren belehren (mein Wissen ist begrenzt--ich weiß nicht ob Visuallisp da bessere Möglichkeiten hat).

Gruß Speedcad


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: 18. Feb. 2004 13:42    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 Schachinger 10 Unities + Antwort hilfreich

Im Prinzip ist ja (fast) alles richtig, was hier gesagt wurde. Nur eins wurde nicht erwähnt: Lisp kennt ja nun schon seit geraumer Zeit den Datentyp Array: Angefangen mit vlax-make-safearray gibt es etwa zehn Lisp-Funktionen, die alle nur für diesen Datentyp zuständig sind. Allerdings gibt es eine Grenze - mehr als 16-dimensionale Arrays gehen nicht.

In der Praxis sind aber Listen meistens doch flexibler - bei allen Programmen mit großen Datenmengen, die ich bisher geschrieben habe, sah es nämlich so aus, dass die Daten nicht wirklich 'rechteckig' waren, beispielsweise so etwa: Von Größe 1 bis Größe 900 sind sechs Bohrungen drin, aber von 901 bis 1000 sind es 8;-) Der Vorteil von Listen ist dann, dass man bei nicht vorhandenem Datum ein Nil zurückkriegt, ein Array muss man natürlich komplett initialisieren und muss dann Entscheidungskriterien haben, ob eine 0 den Wert Null bedeutet oder 'kein Wert vorhanden'.

Ich habe mich bisher immer für Listen entschieden, auch bei sehr großen Datenmengen. Man muss halt nur den Unterschied zwischen cons und append kennen, sonst kann's wirklich langsam werden:-(

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
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: 18. Feb. 2004 14:13    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 Schachinger 10 Unities + Antwort hilfreich

Hi Axel,
welcome back!!!
Hoffe Deine Anwesenheit hier wird wieder zum Standard.
Hat lange keiner mehr meinen Code madig gemacht :-).

------------------
Ciao,
Marc

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

Speedcad
Mitglied



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

Beiträge: 76
Registriert: 17.01.2004

erstellt am: 18. Feb. 2004 20:12    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 Schachinger 10 Unities + Antwort hilfreich

Hallo Axel,
würde mich auch freuen wieder öfters von dir ein par Beiträge zu lesen .
Schon bevor ich hier Mitglied war habe ich deine Beträge gerne mitverfolgt.
Ich bin natürlich beim googeln in Sachen Arrey und Visuallisp gleich auf deiner Homepage gelandet.
Das es Arrays in Visuallisp gibt wusste ich nicht (wird Zeit das ich mich
mal mit Visuallisp beschäftige).

Gruß Speedcad

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