Zobrazit plnou verzi příspěvku: Atribut z bloku

Augur
12.03.2008, 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"

pavelstyl
12.03.2008, 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
 
[CODE](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))   )  ) ))[/CODE]