| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Attributen Lesen (1157 mal gelesen)
|
Nano Mitglied
 
 Beiträge: 179 Registriert: 25.10.2004
|
erstellt am: 18. Jun. 2009 10:12 <-- editieren / zitieren --> Unities abgeben:         
Hallo wahrscheindlich kann Jemad mir helfen.Als Beilage ist eine Datei (Block dwg) die umbennet werden muss auf (.dwg). Hier ein Lisp mit Block wählen und liest den Attribut heraus. Das funktioniert. (DEFUN C:Test1() (SETQ ta605ent (ENTSEL "\nTabelle wählen: ")) (IF (AND (SETQ ent (car ta605ent)) (= (CDR (assoc 66 (ENTGET ENT))) 1)) (WHILE (AND (SETQ ent (ENTNEXT ent)) (/= (CDR (ASSOC 0 (ENTGET ent))) "SEQEND")) (IF (AND (= (CDR (ASSOC 0 (ENTGET ent))) "ATTRIB") (= (strcase (CDR (ASSOC 2 (ENTGET ent)))) "RAUM-NR:")) (SETQ Hraum1 (CDR (ASSOC 1 (ENTGET ent)))) ))) (print Hraum1) (princ) ) Hier möchte ich, dass das Lisp selber den Block sucht und ein Attribut heraus liest. (DEFUN C:TEST2() (setq obj (tblobjname "BLOCK" "HRaum TB")) (IF (= (CDR (assoc 66 (ENTGET obj))) 1) (while (AND (setq obj (entnext obj)) (/= (CDR (ASSOC 0 (ENTGET obj))) "SEQEND")) (if (AND (= (CDR (ASSOC 0 (ENTGET obj))) "ATTRIB") (= (strcase (CDR (ASSOC 2 (ENTGET obj)))) "RAUM-NR:")) (SETQ Hraum2 (CDR (ASSOC 1 (ENTGET obj)))) ))) (print Hraum2) (princ) ) Bin froh für eine Lösung Gruss und Danke Nano Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13530 Registriert: 30.11.2003 .
|
erstellt am: 18. Jun. 2009 10:21 <-- editieren / zitieren --> Unities abgeben:          Nur für Nano
na dann guck dir mal den Beitrag an .... du mußt dazu die Blockreferenzen durchsuchen und nicht irgendwas mit der Blockdefinition versuchen zu machen !!! ------------------ - 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: 18. Jun. 2009 10:37 <-- editieren / zitieren --> Unities abgeben:          Nur für Nano
Noch als Ergänzung, wenn Du die Blockrefenzen durchsuchst, dann mußt Du, weil es ein dynamischer Block ist, noch nach dem Originalblocknamen suchen =>(vla-get-EffectiveName Code:
(DEFUN C:TEST2( / ATTWERT_LISTE AWS N) (if (setq aws (ssget "X" (list '(0 . "INSERT")))) (progn (setq n 0) (repeat (sslength aws) (if (=(vla-get-EffectiveName(vlax-ename->vla-object (ssname aws n)))"HRaum TB") (setq AttWert_liste (cons (Test2:AttListe (ssname aws n))AttWert_liste))) (setq n (+ n 1)))) (alert "Keine Blöcke vorhanden.")) AttWert_liste) (defun Test2:AttListe (obj / AttWert) (if (and (entnext obj)(=(cdr(assoc 0(entget (entnext obj))))"ATTRIB")) (while (and(setq obj (entnext obj)) (/= "SEQEND" (cdr(assoc 0(entget obj))))) (if (and(=(cdr(assoc 0(entget obj)))"ATTRIB") (=(strcase(cdr(assoc 2(entget obj))))"RAUM-NR:")) (setq AttWert (cdr(assoc 1 (entget obj))))))) AttWert)
------------------ viele Grüße Jörn http://www.bosse-engineering.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nano Mitglied
 
 Beiträge: 179 Registriert: 25.10.2004
|
erstellt am: 18. Jun. 2009 10:48 <-- editieren / zitieren --> Unities abgeben:         
|

| |
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: 18. Jun. 2009 12:25 <-- editieren / zitieren --> Unities abgeben:          Nur für Nano
Hallo Nano, nein, denn die *U... Namen sind ja nicht die Originalblockrefenzen, sondern bereits Blöcke mit veränderten Parametern. Wenn Du aber einen Block *U... im Auswahlsatz hast, dann kann Du mit (vla-get-EffectiveName(vlax-ename->vla-object (ssname aws n))) abfragen, ob die Referenz des Blockes zum Originalblock gehört. Ich kanns nicht besser erklären, weil ich sonst nicht soviel mit dynamischen Blöcken mache, aber vielleicht hilft es ja. ------------------ viele Grüße Jörn http://www.bosse-engineering.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |