brainstorm 发表于 2008-2-12 15:56:00

[求助]vla-activate问题

<p>;以下程序目的是把多个文档中的属性块文字更改,</p><p>;;为什么我加入(vla-activate each)程序就不能正确执行,而取消此代码可以执行,请高手指点</p><p>(defun c:sss (/&nbsp;AcadObject AcadDocument&nbsp;mSpace ssobj attributes<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; val-att-ent)<br/>&nbsp; (VL-LOAD-COM)<br/>&nbsp; (setq&nbsp;AcadObject&nbsp;&nbsp;&nbsp; (vlax-get-acad-object)<br/>&nbsp;AcadDocument&nbsp; (vla-get-ActiveDocument AcadObject)<br/>&nbsp;AcadDocuments (vla-get-Documents AcadObject)<br/>&nbsp;mSpace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-get-ModelSpace AcadDocument)<br/>&nbsp; )<br/>&nbsp; (setq gpcode (vlax-make-safearray vlax-vbInteger '(0 . 1)))<br/>&nbsp; (vlax-safearray-fill gpcode '(0 66))<br/>&nbsp; (setq datevalue (vlax-make-safearray vlax-vbvariant '(0 . 1)))<br/>&nbsp; (vlax-safearray-fill datevalue '("insert" 1))<br/>&nbsp; (vlax-for each AcadDocuments<br/>&nbsp;&nbsp;&nbsp; <font color="#ff0000">(vla-activate each);此处加入此代码后程序不能正确执行</font><br/>&nbsp;&nbsp;&nbsp; (setq<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ssobj (vla-add (vla-get-selectionsets each) "year11")<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (vla-select<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ssobj acSelectionsetAll nil nil gpcode datevalue)<br/>&nbsp;&nbsp;&nbsp; (if&nbsp;(&gt; (vla-get-count ssobj) 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;(vlax-for every&nbsp;ssobj<br/>&nbsp;&nbsp; (cond<br/>&nbsp;&nbsp;&nbsp;&nbsp; ((and<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (= (vla-get-objectname every) "AcDbBlockReference")<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (= (vla-get-hasattributes every) :vlax-true)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq attributes<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-variant-value (vla-getattributes every))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq i 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (while (&lt; i (vlax-safearray-get-u-bound attributes 1))<br/>&nbsp;&nbsp; (setq val-att-ent<br/>&nbsp;&nbsp;&nbsp;(vlax-safearray-get-element attributes i)<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (if (= (vla-get-tagstring val-att-ent) "YEAR_1")<br/>&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-put-textstring val-att-ent "open-close")<br/>;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-put-tagstring val-att-ent "tag")<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp; (setq i (1+ i))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;(vla-update val-att-ent)<br/>&nbsp;&nbsp; (princ&nbsp;(strcat&nbsp;"\n--正在更新----"<br/>&nbsp;&nbsp;&nbsp;&nbsp;(vla-get-name each)<br/>&nbsp;&nbsp;&nbsp;&nbsp;"中属性文字"<br/>&nbsp;&nbsp;&nbsp;&nbsp;(vla-get-name every)<br/>&nbsp;&nbsp;&nbsp;&nbsp;"---"<br/>&nbsp;&nbsp;&nbsp;)<br/>&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp;;while<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (t (princ "\nasss"))<br/>&nbsp;&nbsp; )<br/>&nbsp;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; (vla-regen each :vlax-true)<br/>&nbsp;&nbsp;&nbsp; (vla-delete ssobj)<br/>&nbsp;&nbsp;&nbsp; (setq attributes<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nil<br/>&nbsp;&nbsp; val-att-ent nil<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;end if<br/>)<br/></p>

sailorcwx 发表于 2008-2-12 18:38:00

把军权交给了别人,别人就是指挥官了,别人的地盘你当然不能乱踩啦

Sayonana 发表于 2008-2-13 10:59:00

干嘛要ACTIVATE呢.不激活还不是一样

20060510412 发表于 2019-12-16 11:11:31

请问问题解决了吗,我也碰到了一样的问题
页: [1]
查看完整版本: [求助]vla-activate问题