Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Attribute auslesen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Attribute auslesen (2809 mal gelesen)
fewoer
Mitglied



Sehen Sie sich das Profil von fewoer an!   Senden Sie eine Private Message an fewoer  Schreiben Sie einen Gästebucheintrag für fewoer

Beiträge: 28
Registriert: 09.01.2012

AutoCAD 2009 Graitec Advanced Steel

erstellt am: 20. Jan. 2012 13:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Test.txt

 
Hallo,

habe mich gerade eben durch das Forum gewühlt und mir den Morgen über schon unzählige Beiträge durchgelesen, aber komme einfach auf keinen grünen Zweig im Moment.

Ich habe mal eine DWG in txt umbenannt und angehängt. Wie kann ich denn auf den Wert "Brücke" unter dem Attribut Bauvorhaben zugreifen? Der soll mir einfach einen String ausgeben, den ich dann später in eine Textdatei schreiben kann. Aber zuerstmal weiß ich nicht, wie ich überhaupt an den Wert selbst rankomme.

Dankeschön für eure Hilfe.

Edit:
Habe es jetzt einmal mit folgender LISP probiert und bekomme dabei diese Fehlermeldung:

Code:
Befehl: (getattr HYPERSTEELPAGEHEADER POS_NUM)
*Abbruch*
Fehlerhafter Argumenttyp: lentityp nil

Hier die LISP:

Code:
(defun getattr(e attr / el ok en bl)
  (setq el (entget e)) ;* Wenn es sich um einen Block handelt
  (if (and (= (cdr (assoc 0 el)) "INSERT")
  (assoc 66 el)
  )
  (progn ;* Variablen initialisieren
  (setq ok T en e)
  ;* Schleife solange durchlaufen, bis
  ;* Blockende
  ;* ODER
  ;* das Attribut gefunden wurde
  (while (and (setq en (entnext en))
  (/= (cdr (assoc 0 (entget en))) "SEQEND")
  ok
  )
  (setq bl (entget en))
  ;* Wenn
  ;* es sich um eine Attributdefinition handelt
  ;* UND
  ;* der Attributname dem gesuchten entspricht
  (if (and (= (cdr (assoc 0 bl)) "ATTRIB")
  (= (cdr (assoc 2 bl)) attr)
  )
  ;* ok auf nil setzen
  (setq ok nil)
  ) ;* - if ende
  ) ;* - while ende
  ;* Wenn das Attribut gefunden wurde
  (if (not ok)
  ;* Attributwert auslesen
  (cdr (assoc 1 bl))
  ) ;* - if ende
  ) ;* - progn ende
  ) ;* - if ende
)

[Diese Nachricht wurde von fewoer am 20. Jan. 2012 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 20. Jan. 2012 14:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für fewoer 10 Unities + Antwort hilfreich

wenn mit Lisp .....

(if(and(setq OBJ(car(nentsel "\nAttribut wählen:")))
       (setq OBJ(entget OBJ))
       (=(cdr(assoc 0 OBJ))"ATTRIB")
       (setq TXT (cdr(assoc 1 OBJ)))
   )
  (princ (strcat "\n" TXT "\n"))
)

aber warum kopierst du dir den Wert nicht aus dem Eigenschaftsfenster (Befehl : _properties ) oder via attedit oder eattedit ...

Edit: seh gerade ... leere Attribute .... kannste natürlich nicht wählen  .. da du den Namen usw. auch nicht kennst ..... wozu Lisp ?!

Eigenschaftsfenster / Attedit und Co reichen 

------------------
       - 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

fewoer
Mitglied



Sehen Sie sich das Profil von fewoer an!   Senden Sie eine Private Message an fewoer  Schreiben Sie einen Gästebucheintrag für fewoer

Beiträge: 28
Registriert: 09.01.2012

AutoCAD 2009 Graitec Advanced Steel

erstellt am: 20. Jan. 2012 14:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke CADmium für deine schnelle Antwort - du scheinst das Forum ja mit am Laufen zu halten 

Also, Ziel ist es letztendlich die Werte von Attributen in einer Textdatei auszugeben. In die Zeichnungsstempel werden eben Informationen eingetragen und die sollen nachher in eine Exceldatei eingepflegt werden. Momentan wird das noch von Hand erledigt, soll aber automatisiert werden - damit man eben nicht zweimal beispielsweise eine Zeichnungsnummer eintragen muss.

LISP deswegen, damit man das über 100e Zeichnungen rüberlaufen lassen kann und man am Schluss eine Exceldatei hat, in der alle wichtigen Attributswerte stehen.

Die Attribute sind am Ende ja alle ausgefüllt wie das, in dem der Wert "Brücke" steht. Also nicht leer.

Deinen LISP-Code verstehe ich leider nicht so richtig - für die Variable OBJ setze ich dann den Namen des Blocks ein? Also, dann will er wissen, welches Attribut ich haben möchte... wenn ich ihm dann eins gebe, passiert folgendes:

Code:
Attribut wählen:BUILDING
*Ungültige Auswahl*
Erwartet ein einzelnes Objekt.
Attribut wählen:nil

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

linie2
Mitglied
Technischer Systemplaner


Sehen Sie sich das Profil von linie2 an!   Senden Sie eine Private Message an linie2  Schreiben Sie einen Gästebucheintrag für linie2

Beiträge: 111
Registriert: 01.07.2010

AutoCAD MEP 2012
Windows 7 Pro
64Bit

erstellt am: 20. Jan. 2012 16:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für fewoer 10 Unities + Antwort hilfreich

Moin fewoer,

was ist denn mit "attout"?

Gruß To

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz