| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | Exklusives EDU-Programm für RTX PRO Blackwell, eine Pressemitteilung
|
Autor
|
Thema: Attribute eines ausgewählten Block auslesen (1688 mal gelesen)
|
neuling99 Mitglied Selbstständig
 Beiträge: 3 Registriert: 07.10.2011 Autocad 2011
|
erstellt am: 07. Okt. 2011 08:39 <-- editieren / zitieren --> Unities abgeben:         
Hallo Forum, Als Neuling in der Lips-Welt, muss ich mich heute mal an euch wenden, da ich nicht weiter komme. Ich möchte in jedem Raum einen Block mit dem Raumnamen, der Etage und der Wohnungsnummer, sowie diverse andere Daten einfügen. Das ist auch kein Problem. In meiner Zeichnung habe ich auch einen Block mit Attributen „Objektdaten“ den es nur einmal in der Zeichnung gibt und einige Grunddaten enthält. Nun habe ich hier im Forum folgenden Text gefunden (setq blockname "Objektdaten") (if (setq aws(ssget "X" (list(cons 0 "INSERT")(cons 2 blockname)))) (progn (setq liste nil) (setq obj (ssname aws 0)) (while (and(setq obj (entnext obj)) (/=(cdr(assoc 0(entget obj)))"SEQEND")) (setq liste (cons (cdr(assoc 1 (entget obj)))liste)))) (alert (strcat"\nEs wurde kein Block \"" blockname"\" gefunden."))) (cond ((= ebene "-1") (Setq estrich (atof (nth 8 (reverse liste))))) ((= ebene "10") (Setq estrich (atof (nth 9 (reverse liste))))) ((= ebene "12") (Setq estrich (atof (nth 10 (reverse liste))))) ((= ebene "14") (Setq estrich (atof (nth 11 (reverse liste))))) ((= ebene "16") (Setq estrich (atof (nth 12 (reverse liste))))) ((= ebene "18") (Setq estrich (atof (nth 13 (reverse liste))))) ) (setq Estrich (rtos Estrich 2 3)) So konnte ich die Estrichhöhen in den Einzelenen Ebenen auslesen und weiter verarbeiten. Im Grunde genau das was ich gesucht habe. Mein Problem ist es nun als Neuling, dass ich den Block in einem bestimmten Raum mit der Maus auswählen möchte und dann dort die Daten herausnehmen kann. Ich denke das die ersten zwei Zeilen umgeschrieben werden muss. Wie komme ich an die Daten des mit der Maus ausgewählten Block heran. Einen Hinweis fand ich bisher im Forum nicht, nur immer die Auswahl gleicher Blöcke oder Attribute. Ich Bedanke mich jetzt schon mal für eure Hilfe und werde mich, dank diesem Forum mit Lisp weiterbilden. Gruß Detlef
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13533 Registriert: 30.11.2003 .
|
erstellt am: 07. Okt. 2011 08:46 <-- editieren / zitieren --> Unities abgeben:          Nur für neuling99
|
neuling99 Mitglied Selbstständig
 Beiträge: 3 Registriert: 07.10.2011 Autocad 2011
|
erstellt am: 07. Okt. 2011 09:59 <-- editieren / zitieren --> Unities abgeben:         
Hallo Thomas, vielen Dank für deine schnelle Antwort, leider bekomme ich nach der Eingabe des Text die Meldung: Falsch formatierte Liste in Eingabe. Ich finde den Fehler aber nicht und bitte dich deshalb noch einmal um Hilfe. Gruß Detlef Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
   
 Beiträge: 1157 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 07. Okt. 2011 11:41 <-- editieren / zitieren --> Unities abgeben:          Nur für neuling99
Hallo Detlef, da hilft nur Klammern abgleichen. Irgenwo ist da wohl noch eine zuwenig. Am besten hierzu mal den gesamten Code in den VL-Editor nehmen, dort kann man dann leichter die entsprechenden Klammernpaare finden (Doppelklick vor bzw. hinter Klammer). Bei Fragen ... Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13533 Registriert: 30.11.2003 .
|
erstellt am: 07. Okt. 2011 11:49 <-- editieren / zitieren --> Unities abgeben:          Nur für neuling99
|

| |
neuling99 Mitglied Selbstständig
 Beiträge: 3 Registriert: 07.10.2011 Autocad 2011
|
erstellt am: 07. Okt. 2011 12:24 <-- editieren / zitieren --> Unities abgeben:         
Vielen Dank für eure Hilfe, ich es nun auch mit dem folgenden Code geschafft zum Ziel zu kommen. (setq obj nil DATA nil liste nil) (setq OBJ(car(entsel "\nBlockref wählen : "))) (setq DATA(entget OBJ)) (progn (while (and(setq obj (entnext obj)) (/=(cdr(assoc 0(entget obj)))"SEQEND")) (setq liste (cons (cdr(assoc 1 (entget obj)))liste)) )) nun kann ich weitere Materialblöcke einfügen und muss nicht alle Daten neu eingeben, da ich sie ja jetzt aus den Raumblöcken übernehmen kann. BESTEN DANK noch mal an alle. Gruß Detlef bis zum nächsten Problem, wo ich wieder auf eure Hilfe hoffen darf, zumindest solange ich noch Anfänger bin. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |