caravaggio 发表于 2004-4-8 17:16:00

[求助]如何找图块里"attribute"的资料

当一个图块包含"attribute", 比如图块里有数字,autolisp有什么方法可以点击这个图块而找到数字的资料呢?

王咣生 发表于 2004-4-9 10:41:00

回复

Visual LISP可以吗?<BR>;;; Returns a list of attribute tags and associated values<BR>


(defun vlex-GetAttributes (ent / blkref lst)<BR>       (if (= (vla-Get-ObjectName (setq blkref (vlax-Ename-&gt;vla-Object ent))) "AcDbBlockReference")<BR>                       (if (vla-Get-HasAttributes blkref)<BR>                                       (mapcar<BR>        '(lambda (x)<BR>                       (setq lst (cons (cons (vla-Get-TagString x) (vla-Get-TextString x)) lst))<BR>       )<BR>        (vlax-safearray-&gt;list<BR>               (vlax-variant-value (vla-GetAttributes blkref))<BR>        )<BR>                                       ); mapcar<BR>                       ); endif<BR>       ); endif<BR>       (reverse lst)<BR>)

caravaggio 发表于 2004-4-9 11:34:00

谢谢版主,但小弟对vlisp一点也不懂, 版主介不介意用Alisp或者把概念告诉我呢.





顺便问一下是不是vlisp确实比Alisp容易写呢 ?其实我也试过在图块的数据里一直找下去, 但没找到什么的。


谢谢。




王咣生 发表于 2004-4-9 12:21:00

回复

Vlisp有些类似VBA, 都是以对象的形式通过实体的属性和方法编辑实体.       


Vlisp从概念上更好理解.

caravaggio 发表于 2004-4-9 15:35:00

以上的问题可以用alisp解决吗?

无痕 发表于 2004-4-15 00:07:00

blk=块实体名


(setq ent (entget blk))


(if (=2 (cdr(assoc 70 ent)));如果有属性定义.


               (whie (/= "endblk" (cdr(assoc (setq att (entget (setq blk (entnext        blk)))))))


                       ......


               )

matrix 发表于 2006-4-23 15:14:00

高手们,能不能用VBA把这个功能编出来啊,求教
页: [1]
查看完整版本: [求助]如何找图块里"attribute"的资料