Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Attributen Lesen

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
Autor Thema:   Attributen Lesen (703 mal gelesen)
Nano
Mitglied



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

Beiträge: 179
Registriert: 25.10.2004

erstellt am: 18. Jun. 2009 10:12    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


BlockmitAttr.txt

 
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




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: 13435
Registriert: 30.11.2003

.

erstellt am: 18. Jun. 2009 10:21    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 Nano 10 Unities + Antwort hilfreich

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


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

Beiträge: 1661
Registriert: 11.10.2004

Window 8.1
ACAD 2012-2020
CIVIL 2012 - 2020
BricsCAD V14-V20
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050

erstellt am: 18. Jun. 2009 10:37    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 Nano 10 Unities + Antwort hilfreich

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



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

Beiträge: 179
Registriert: 25.10.2004

erstellt am: 18. Jun. 2009 10: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

Sali Jörn

Original-Namen von dynamischer Block, muss ich auf *U... suchen?

Danke Nano

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1661
Registriert: 11.10.2004

Window 8.1
ACAD 2012-2020
CIVIL 2012 - 2020
BricsCAD V14-V20
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050

erstellt am: 18. Jun. 2009 12:25    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 Nano 10 Unities + Antwort hilfreich

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

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)2020 CAD.de | Impressum | Datenschutz