| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
|
Autor
|
Thema: Liste (1724 mal gelesen)
|
RoyCAD Mitglied Dipl-Ing Energietechnik
 
 Beiträge: 206 Registriert: 24.05.2004 Win XP AutoCAD2008-2010 Inventor 2008-2010 Productstream Compass P4 3,0GHz 512MB Ram
|
erstellt am: 19. Okt. 2006 16:27 <-- editieren / zitieren --> Unities abgeben:         
Hallo Ich habe so eine Liste (("249.0/31.4") ("79.4/31.4") ("90.2/31.4") ("238.2/31.4") ("169.6/31.4") ("158.8/31.4") ("249.0/31.4") ("79.4/31.4") ("90.2/31.4") ("238.2/31.4") ("169.6/34.8") ("158.8/34.8")) was soll ich machen das ich so ein Rückgabewehr bekomme: 2 x 249.0/31.4 2 x 79.4/31.4 2 x 90.2/31.4 usw. DANKE!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.

 Beiträge: 3338 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 19. Okt. 2006 17:31 <-- editieren / zitieren --> Unities abgeben:          Nur für RoyCAD
Hi, sowas?
Code: (progn (mapcar '(lambda (arg) (princ (strcat "2 x " arg)) (princ "\n") ) (mapcar 'car '(("249.0/31.4") ("79.4/31.4") ("90.2/31.4") ("238.2/31.4") ("169.6/31.4") ("158.8/31.4") ("249.0/31.4") ("79.4/31.4") ("90.2/31.4") ("238.2/31.4") ("169.6/34.8") ("158.8/34.8") ) ) ) (princ) )
Aber wozu braucht man das? Gruß CADchup
------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur

 Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 19. Okt. 2006 17:54 <-- editieren / zitieren --> Unities abgeben:          Nur für RoyCAD
|
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13530 Registriert: 30.11.2003 .
|
erstellt am: 19. Okt. 2006 20:54 <-- editieren / zitieren --> Unities abgeben:          Nur für RoyCAD
Also sowas: (defun Countmembers(LISTE / RETURNLISTE) (mapcar '(lambda(Z) (princ (strcat "\n" (itoa(car Z))" x" (vl-princ-to-string(cdr Z))) ) ) (mapcar '(lambda(x) (cons (length(vl-remove-if-not '(lambda(Y)(equal Y X)) LISTE)) X ) ) (foreach ELEMENT LISTE (if(not(member ELEMENT RETURNLISTE)) (setq RETURNLISTE (cons ELEMENT RETURNLISTE)) ) ) ) ) (princ) ) (countmembers '(("249.0/31.4") ("79.4/31.4") ("90.2/31.4") ("238.2/31.4") ("169.6/31.4") ("158.8/31.4") ("249.0/31.4") ("79.4/31.4") ("90.2/31.4") ("238.2/31.4") ("169.6/34.8") ("158.8/34.8") ) ) ------------------ - 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 |
CADchup Ehrenmitglied V.I.P. h.c.

 Beiträge: 3338 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 19. Okt. 2006 22:17 <-- editieren / zitieren --> Unities abgeben:          Nur für RoyCAD
|
RoyCAD Mitglied Dipl-Ing Energietechnik
 
 Beiträge: 206 Registriert: 24.05.2004 Win XP AutoCAD2008-2010 Inventor 2008-2010 Productstream Compass P4 3,0GHz 512MB Ram
|
erstellt am: 20. Okt. 2006 09:13 <-- editieren / zitieren --> Unities abgeben:         
|
RoyCAD Mitglied Dipl-Ing Energietechnik
 
 Beiträge: 206 Registriert: 24.05.2004 Win XP AutoCAD2008-2010 Inventor 2008-2010 Productstream Compass P4 3,0GHz 512MB Ram
|
erstellt am: 20. Okt. 2006 09:16 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von tunnelbauer: @CADchup:Ich denke er sucht/will ein Tool das seine vorhandene Liste durchsucht und dann nachschaut, wieoft ein Listenelement vorkommt und dies dann entsprechend ausgibt...
Genau das brauche ich!!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13530 Registriert: 30.11.2003 .
|
erstellt am: 20. Okt. 2006 09:22 <-- editieren / zitieren --> Unities abgeben:          Nur für RoyCAD
Zitat: Original erstellt von RoyCAD: Genau das brauche ich!!!
und? Code mal angesehen? ------------------ - 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 |
RoyCAD Mitglied Dipl-Ing Energietechnik
 
 Beiträge: 206 Registriert: 24.05.2004 Win XP AutoCAD2008-2010 Inventor 2008-2010 Productstream Compass P4 3,0GHz 512MB Ram
|
erstellt am: 20. Okt. 2006 12:00 <-- editieren / zitieren --> Unities abgeben:         
so richtig nicht aber das ist meine Schuld, weil die Liste siecht so aus (("249.0/31.4" <Objektname: 7edaa870> ) ("79.4/31.4" <Objektname: 7edaa8e0> ) ("90.2/31.4" <Objektname: 7edaa9b8> ) ("238.2/31.4" <Objektname: 7edaaa28> ) ("169.6/31.4" <Objektname: 7edaab00> ) ("158.8/31.4" <Objektname: 7edaab70> ) ("249.0/31.4" <Objektname: 7edaac88> ) ("79.4/31.4" <Objektname: 7edaacf8> ) ("90.2/31.4" <Objektname: 7edaadd0> ) ("238.2/31.4" <Objektname: 7edaae40> ) ("169.6/34.8" <Objektname: 7edaaf18> ) ("158.8/34.8" <Objektname: 7edaaf88> )) und als Rückgabewert brauche ich z.B ( “2 x 249.0/31.4" <Objektname: 7edaa870> <Objektname: 7edaac88> ) ( “2 x 79.4/31.4" <Objektname: 7edaa8e0> <Objektname: 7edaacf8> ) usw. Ich hoffe es ist machbar, weil mir gehen die Ideen aus. Ich probiere mit repeat die Listen zu knacken aber es funk nicht!!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoyCAD Mitglied Dipl-Ing Energietechnik
 
 Beiträge: 206 Registriert: 24.05.2004 Win XP AutoCAD2008-2010 Inventor 2008-2010 Productstream Compass P4 3,0GHz 512MB Ram
|
erstellt am: 20. Okt. 2006 12:58 <-- editieren / zitieren --> Unities abgeben:         
|
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13530 Registriert: 30.11.2003 .
|
erstellt am: 20. Okt. 2006 13:41 <-- editieren / zitieren --> Unities abgeben:          Nur für RoyCAD
.. na der obige Code liefert dir doch schon alles .. ich habs mal minimal modifiziert .. ob du das princ brauchst, oder die Objektnamen als Unterliste.. das fürfte ja nicht das Problem sein (defun Countmembers(LISTE / RETURNLISTE) (mapcar '(lambda(Z) (princ (strcat "\n" (itoa(car Z))" x" (vl-princ-to-string(cadr Z))(vl-princ-to-string(caddr Z))) ) ) (mapcar '(lambda(x / SUB) (list (length(setq SUB(vl-remove-if-not '(lambda(Y)(equal (car Y) X)) LISTE))) X (mapcar 'cadr SUB) ) ) (foreach ELEMENT LISTE (if(not(member (car ELEMENT) RETURNLISTE)) (setq RETURNLISTE (cons (car ELEMENT) RETURNLISTE)) ) ) ) ) (princ) ) Zum Testen hab ich mal die objektnamen als String genommen :
(COUNTMEMBERS '(("249.0/31.4" "<Objektname: 7edaa870>" ) ("79.4/31.4" "<Objektname: 7edaa8e0>" ) ("90.2/31.4" "<Objektname: 7edaa9b8>" ) ("238.2/31.4" "<Objektname: 7edaaa28>" ) ("169.6/31.4" "<Objektname: 7edaab00>" ) ("158.8/31.4" "<Objektname: 7edaab70>" ) ("249.0/31.4" "<Objektname: 7edaac88>" ) ("79.4/31.4" "<Objektname: 7edaacf8>" ) ("90.2/31.4" "<Objektname: 7edaadd0>" ) ("238.2/31.4" "<Objektname: 7edaae40>" ) ("169.6/34.8" "<Objektname: 7edaaf18>" ) ("158.8/34.8" "<Objektname: 7edaaf88>" )) ) liefert 1 x158.8/34.8(<Objektname: 7edaaf88> ) 1 x169.6/34.8(<Objektname: 7edaaf18> ) 1 x158.8/31.4(<Objektname: 7edaab70> ) 1 x169.6/31.4(<Objektname: 7edaab00> ) 2 x238.2/31.4(<Objektname: 7edaaa28> <Objektname: 7edaae40> ) 2 x90.2/31.4(<Objektname: 7edaa9b8> <Objektname: 7edaadd0> ) 2 x79.4/31.4(<Objektname: 7edaa8e0> <Objektname: 7edaacf8> ) 2 x249.0/31.4(<Objektname: 7edaa870> <Objektname: 7edaac88> ) ------------------ - 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 |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
    
 Beiträge: 1776 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 20. Okt. 2006 14:04 <-- editieren / zitieren --> Unities abgeben:          Nur für RoyCAD
Hallo, ich habe auch nochmal gebastelt, bei mir werden aber, im Gegensatz zu CADmium, nur die Strings ausgegeben: Code:
(defun Countmembers (LISTE / RETURNLISTE A) (mapcar '(lambda (A) (if (not (assoc (car A) RETURNLISTE)) (setq RETURNLISTE (cons (cons (car A) 1) RETURNLISTE)) (setq RETURNLISTE (subst (cons (car A) (+ (cdr (assoc (car A) RETURNLISTE)) 1)) (assoc (car A) RETURNLISTE) RETURNLISTE)))) liste) (mapcar '(lambda (A) (strcat (itoa (cdr A)) "x " (car A))) RETURNLISTE))
Ausgabe: ("1x 158.8/34.8" "1x 169.6/34.8" "1x 158.8/31.4" "1x 169.6/31.4" "2x 238.2/31.4" "2x 90.2/31.4" "2x 79.4/31.4" "2x 249.0/31.4") Ein schönes Wochenende wünsche ich.
------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoyCAD Mitglied Dipl-Ing Energietechnik
 
 Beiträge: 206 Registriert: 24.05.2004 Win XP AutoCAD2008-2010 Inventor 2008-2010 Productstream Compass P4 3,0GHz 512MB Ram
|
erstellt am: 20. Okt. 2006 16:05 <-- editieren / zitieren --> Unities abgeben:         
alles Perfekt aber noch eine Frage wie bekomme ich die Objekname als String Zum Testen hab ich mal die objektnamen als String genommen : (COUNTMEMBERS '(("249.0/31.4" "<Objektname: 7edaa870>" ) ("79.4/31.4" "<Objektname: 7edaa8e0>" ) ("90.2/31.4" "<Objektname: 7edaa9b8>" ) ("238.2/31.4" "<Objektname: 7edaaa28>" ) ("169.6/31.4" "<Objektname: 7edaab00>" ) ("158.8/31.4" "<Objektname: 7edaab70>" ) ("249.0/31.4" "<Objektname: 7edaac88>" ) ("79.4/31.4" "<Objektname: 7edaacf8>" ) ("90.2/31.4" "<Objektname: 7edaadd0>" ) ("238.2/31.4" "<Objektname: 7edaae40>" ) ("169.6/34.8" "<Objektname: 7edaaf18>" ) ("158.8/34.8" "<Objektname: 7edaaf88>" )) ) liefert 1 x158.8/34.8(<Objektname: 7edaaf88> ) 1 x169.6/34.8(<Objektname: 7edaaf18> ) 1 x158.8/31.4(<Objektname: 7edaab70> ) 1 x169.6/31.4(<Objektname: 7edaab00> ) 2 x238.2/31.4(<Objektname: 7edaaa28> <Objektname: 7edaae40> ) 2 x90.2/31.4(<Objektname: 7edaa9b8> <Objektname: 7edaadd0> ) 2 x79.4/31.4(<Objektname: 7edaa8e0> <Objektname: 7edaacf8> ) 2 x249.0/31.4(<Objektname: 7edaa870> <Objektname: 7edaac88> ) [/B][/QUOTE] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoyCAD Mitglied Dipl-Ing Energietechnik
 
 Beiträge: 206 Registriert: 24.05.2004 Win XP AutoCAD2008-2010 Inventor 2008-2010 Productstream Compass P4 3,0GHz 512MB Ram
|
erstellt am: 20. Okt. 2006 16:48 <-- editieren / zitieren --> Unities abgeben:         
|
RoyCAD Mitglied Dipl-Ing Energietechnik
 
 Beiträge: 206 Registriert: 24.05.2004 Win XP AutoCAD2008-2010 Inventor 2008-2010 Productstream Compass P4 3,0GHz 512MB Ram
|
erstellt am: 27. Okt. 2006 15:11 <-- editieren / zitieren --> Unities abgeben:         
Warum Funktioniert diese Funktion mit so eine Eingangswert (COUNTMEMBERS '( ("249.0/61.0" <Objektname: 7e9cbda8> ) ("166.0/60.0" <Objektname: 7e9cbef8> ) ("166.0/60.0" <Objektname: 7e9cbf68> ) ("83.0/60.0" <Objektname: 7e738080> ) ("249.0/60.0" <Objektname: 7e7380f0> ) ("249.0/60.0" <Objektname: 7e7381c8> ) ("83.0/60.0" <Objektname: 7e738238> ) ("166.0/60.0" <Objektname: 7e738310> ) ("166.0/60.0" <Objektname: 7e738380> ) ("83.0/60.0" <Objektname: 7e738498> ) ("249.0/60.0" <Objektname: 7e738508> ) ("249.0/61.0" <Objektname: 7e7385e0> ) ("83.0/61.0" <Objektname: 7e738650> )) ) und mit dem schon nicht mehr??? (COUNTMEMBERS '( ("249.0/61.0" <Objektname: 7e9cbda8> ) ("83.0/61.0" <Objektname: 7e9cbe20> ) ("166.0/60.0" <Objektname: 7e9cbef8> ) ("166.0/60.0" <Objektname: 7e9cbf68> ) ("83.0/60.0" <Objektname: 7e738080> ) ("249.0/60.0" <Objektname: 7e7380f0> ) ("249.0/60.0" <Objektname: 7e7381c8> ) ("83.0/60.0" <Objektname: 7e738238> ) ("166.0/60.0" <Objektname: 7e738310> ) ("166.0/60.0" <Objektname: 7e738380> ) ("83.0/60.0" <Objektname: 7e738498> ) ("249.0/60.0" <Objektname: 7e738508> ) ("249.0/61.0" <Objektname: 7e7385e0> ) ("83.0/61.0" <Objektname: 7e738650> )) ) Sorry das ich noch einmal Frage aber das möchte ich schon verstehen
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13530 Registriert: 30.11.2003 .
|
erstellt am: 27. Okt. 2006 22:07 <-- editieren / zitieren --> Unities abgeben:          Nur für RoyCAD
mal ohne mapcar zum leichter debuggen (defun Countmembers(LISTE / RETURNLISTE R) (foreach ELEMENT LISTE (if(not(member (car ELEMENT) RETURNLISTE)) (setq RETURNLISTE (cons (car ELEMENT) RETURNLISTE)) ) ) (foreach ELEMENT RETURNLISTE (setq SUB (vl-remove-if-not '(lambda(Y)(equal (car Y) ELEMENT)) LISTE)) (setq R (cons (list (length SUB) ELEMENT (mapcar 'cdr SUB)) R)) ) ) die princ-ausgabe hab ich gleich weggelassen ------------------ - 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 |