| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: 2D-Array (585 mal gelesen)
|
Bäumchen Mitglied Technischer Assistent für Informatik
Beiträge: 36 Registriert: 21.04.2007
|
erstellt am: 19. Jul. 2007 01:39 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe leider nix gefunden wie ich in LISP ein Array deklarieren kann. Kann ich das Array dann auch an ObjectARX also C++ weitergeben? es soll nur so aussehen: HEM400 --> 8 HEM500 --> 4 Fundament --> 4 also name --> wert ich hoffe mal das es dafür eine ganz einfache lösung gibt! wie gesagt, es soll im LISP-Code ganz oben stehen und dann an ARX weiter gegeben werden
danke norbert
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4189 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 19. Jul. 2007 07:53 <-- editieren / zitieren --> Unities abgeben: Nur für Bäumchen
Hallo Norbert, ein array gibt es als Datentyp nicht. Das heißt im Lisp LIST und steht für Liste. Das Anlegen funktioniert eigentlich ganz einfach: (list 1 2 3 4) -> (1 2 3 4) Du möchtest aber eine sogenannte Assoziationsliste, dazu musst die die einzelnen Listenelemente mit (cons KEY VAL) bilden: (cons "HEM400" 8) (cons "HEM500" 4) (cons "Fundament" 4) Dies kannst du in eine Liste packen: (list (cons "HEM400" 8) (cons "HEM500" 4) (cons "Fundament" 4) ) was dann zu dem von dir gewünschten Ergebnis führt. Wie du das jetzt allerdings einer anderen Anwendung zugänglich machst .. keine Ahnung. Ein Weg wäre ja z.B. über die Zwischenablage. Ob dann die Liste sauber ankommt .. ?? Da würde dann vielleicht ein String helfen, den man dann über eine Split-Funktion wieder in eine array umwandelt: Vielleicht so "HEM400&8#HEM500&4#Fundament&4" An die Zwischenablage kommst du in Lisp via ActiveX. Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bäumchen Mitglied Technischer Assistent für Informatik
Beiträge: 36 Registriert: 21.04.2007
|
erstellt am: 19. Jul. 2007 10:55 <-- editieren / zitieren --> Unities abgeben:
Guten morgen, vielen Dank das mit dem String, ist eine richtig gute Idee, in ARX bzw. C++ kann ich die ja wieder in ein Array zusammen basteln. ich probiere dann mal, die LIST in einen String zusammen zubasteln, meöde mich bestimmt noch mal. DANKE
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bäumchen Mitglied Technischer Assistent für Informatik
Beiträge: 36 Registriert: 21.04.2007 ACAD2007 WinXP Prof
|
erstellt am: 19. Jul. 2007 14:50 <-- editieren / zitieren --> Unities abgeben:
boar, LISP ist so ein mist *fg* ich habe bei mapcar n bissel gesucht und versucht es zuverstehen, aber es klappt net. denn foreach und while gibts zwar, aber ich sehe da nicht, die anwendung auf meine Aufgaben also die Liste: (list (cons "HEM400" 8) (cons "HEM500" 4) (cons "Fundament" 4) ) in wie du es schon vorgeschlagen hattest: HEM400&8#HEM500&4#Fundament&4 also Name&Wert ich hoffe mal es kann mir jemand helfen danke schon einmal!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4189 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 19. Jul. 2007 15:17 <-- editieren / zitieren --> Unities abgeben: Nur für Bäumchen
na da warst du ja schon auf der Seite, deren Domain der wichtigste Befehl ist. Code:
(substr ;das erste # muss wieder weg (apply 'strcat ;verbinde alle Zeichenketten aus der Liste zu einer (mapcar '(lambda (S) (strcat "#"(car S) "@"(itoa (cdr S)));Aufbauen der Zeichenkette ) (list (cons "HEM400" 8) (cons "HEM500" 4) (cons "Fundament" 4) ) ) ) 2 )
Bei Fragen ... Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter.Pohl Mitglied Stahlbau-Konstrukteur
Beiträge: 50 Registriert: 21.04.2006
|
erstellt am: 19. Jul. 2007 23:28 <-- editieren / zitieren --> Unities abgeben: Nur für Bäumchen
Hallo Norbert, wie wäre es hiermit? ____________________________________________________________________ (defun MakeArray (/ lst array) (setq lst (list (list "HEM400" 8) (list "HEM500" 4) (list "Fundament" 4)) array (vlax-make-safearray vlax-vbString '(0 . 2) '(0 . 1)) var (vlax-make-variant (vlax-safearray-fill array lst))) ) ____________________________________________________________________ Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bäumchen Mitglied Technischer Assistent für Informatik
Beiträge: 36 Registriert: 21.04.2007 ACAD2007 WinXP Prof
|
erstellt am: 20. Jul. 2007 00:20 <-- editieren / zitieren --> Unities abgeben:
guten abend, ich kann nicht einsätzen was besser ist! das von Brischke erscheint mir logischer also wie der String zusammen gebastelt wird! was macht die 2 an dem ende von dem code? mfg norbert
[Diese Nachricht wurde von Bäumchen am 20. Jul. 2007 editiert.] 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: 20. Jul. 2007 02:28 <-- editieren / zitieren --> Unities abgeben: Nur für Bäumchen
|
Bäumchen Mitglied Technischer Assistent für Informatik
Beiträge: 36 Registriert: 21.04.2007
|
erstellt am: 20. Jul. 2007 10:40 <-- editieren / zitieren --> Unities abgeben:
|