| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| | |
 | PNY gibt strategische Partnerschaft mit F5 bekannt, um die Implementierung sicherer High-Performance Infrastrukturen in der EMEA-Region voranzutreiben, eine Pressemitteilung
|
|
Autor
|
Thema: Ein Attribut vom Block lesen (1390 mal gelesen)
|
Nano Mitglied
 
 Beiträge: 179 Registriert: 25.10.2004
|
erstellt am: 02. Jul. 2006 12:32 <-- editieren / zitieren --> Unities abgeben:         
Hallo habe ein block mit attributen möchte gerne ein wert rauslesen. habe diese befehle eingegeben: (setq testblock (car (entsel))) (setq attribut (entnext testblock)) (cdr (assoc 1 attribut)) resultat: ((-1 . <Objektname: 7ef84040> ) (0 . "ATTRIB") (330 . <Objektname: 7ef84038> ) (5 . "80") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "L_ZUL_IS") (100 . "AcDbText") (10 133.992 127.18 0.0) (40 . 10.0) (1 . "300") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "B_TXT1") (71 . 0) (72 . 0) (11 133.992 132.18 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttribute") (2 . "1.BREITE") (70 . 1) (73 . 0) (74 . 2)) möchte gerne die breite rauslesen. attributbezeichnung: 1.BREITE hat jemand eine lösung? danke Nano Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung und AutoLISPler
    
 Beiträge: 1781 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: 02. Jul. 2006 15:03 <-- editieren / zitieren --> Unities abgeben:          Nur für Nano
Hallo Nano, fast hast Du es doch schon gehabt, in der letzten Zeile mußt Du zum "auspacken" der Liste noch ein entget verwenden: (cdr(assoc 1 (entget attribut))) Um eine Funktion zu haben, die z.B. den Wert des ersten Attributes zurückgibt könntest Du es wie folgt machen.
Code:
(defun c:test ( / testblock attribut) (if (and(setq testblock (car(entsel "\nBlock picken:"))) (=(cdr(assoc 0 (entget testblock)))"INSERT") (setq attribut (entnext testblock)) (= (cdr(assoc 0 (entget attribut)))"ATTRIB")) (cdr(assoc 1 (entget attribut))) (alert "Kein Block mit mind. 1 Attribut ausgewählt.")))
------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nano Mitglied
 
 Beiträge: 179 Registriert: 25.10.2004
|
erstellt am: 03. Jul. 2006 19:19 <-- editieren / zitieren --> Unities abgeben:         
Danke Jörn Super es fuktioniert Ledeir verstehe ich nicht wie die nächten Attribute rauslessen kann. Habe ein Block die mehrere Attributen hat, kann mann nicht die Attributen lessen aus ein Attribut-Namen. z.Bp. 1.Breite/2.Breite/Höhe/Winkel/... ect. hast du eine Lösung
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
   
 Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 18.1, LibreOffice 5+
|
erstellt am: 03. Jul. 2006 20:59 <-- editieren / zitieren --> Unities abgeben:          Nur für Nano
|

| |
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13533 Registriert: 30.11.2003 .
|
erstellt am: 03. Jul. 2006 21:49 <-- editieren / zitieren --> Unities abgeben:          Nur für Nano
Schon mal hier geguckt? Für dich dann der (ungetestete)Aufruf (cdr(assoc "BREITE"(mapcar '(lambda(x) (cons(strcase(car X))(cdr X))) (Getattribs(car(entsel)))))) .. hoffe, dass ich jetzt keine Klammer vergessen hab .. ------------------ - 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 |