Vytisknout stránku | Zavřít okno

Atribut z bloku

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: CAD programování
Popis fóra: Otázky programování - nadstavby a utility pro CAD a GIS aplikace Autodesk (VBA, AutoLISP, ARX/C++, .Net, JavaScript, Python, MEL...)
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=6150
Datum vytištění: 15.kvě.2026 v 21:25


Téma: Atribut z bloku
Odeslal: Augur
Předmět: Atribut z bloku
Datum odeslání: 12.bře.2008 v 10:38
Chcel by som vas poziadat o dalsiu radu.. Ako zapisem lisp (alebo aspon jeho fragment), ktorym dokazem ziskat hodnotu konkretneho atributu z bloku na jeho dalsie pouzitie v lispe.. (v bloku je definovanych viacero atributov). Nieco podobne sa tu riesilo pred dost dlhym casom. vyzeralo to asi takto:

(defun RetValAtt (EName AttTag / EData rr)
(setq EData (entget EName)) ;Get initial info
     ;loop through all attributes in block
(while
    (= "ATTRIB"
       (cdr
(assoc '0
(setq EData (entget (entnext (cdr (assoc '-1 EData)))))
)
       )
    )
     (if (WCMatch (cdr (assoc '2 EData)) AttTag)
       (setq rr (cdr (assoc '1 EData)))
     )
)
(eval rr)
)


Bohuzial s tym akosik neviem pohnut, pravdepodobne je chyba na mojom "prijimaci"

-------------
Designer/Projektant/Ucitel
Autocad 2007



Odpovědi:
Odeslal: pavelstyl
Datum odeslání: 12.bře.2008 v 11:59

Zasílám procedurku, která vypíše seznam atributů a jejich hodnoty. Parametr "ent" je entity name bloku, jehož atributy vypisuji.

Pavel Štyl
 

(defun block_attr_list (ent / n eg i typ cont ent atrlist)
 (if ent
  (progn
   (setq n (entnext ent) i 1 typ "XXX")
   (while (/= typ "SEQEND")
    (setq eg (entget n))
    (setq typ (cdr (assoc 0 eg)))
    (if (= typ "ATTRIB")
     (progn
      (prompt (strcat "\n" (itoa i) ". Jmeno: " (cdr (assoc 2 eg)) "     Hodnota: " (cdr (assoc 1 eg))))
      (setq i (1+ i))
     )
    )
    (setq n (entnext n))
   )
  )
 )
)



Vytisknout stránku | Zavřít okno