[求助]vlisp中,怎么给Group对象的AppendItems方法赋值
<p>源代码如下</p><p>(vl-load-com)<br/>(setq *AcadDoc* (vla-get-ActiveDocument (vlax-get-Acad-Object)))<br/>(setq *ModelSpace* (vla-get-ModelSpace *AcadDoc*))<br/>(setq *PaperSpace* (vla-get-PaperSpace *AcadDoc*))<br/>(setq *Groups* (vla-get-Groups *AcadDoc*))<br/>(defun C:MakeGroup()<br/> (setq cirobj (vla-addCircle *ModelSpace* (vlax-3d-point '(3.0 3.0 0.0)) 2.0))<br/> (setq txtobj (vla-addText *MOdelSpace* (vlax-3d-point '(3.0 3.0 0.0)) "Test" 10))<br/> (setq objlist (list cirobj txtnoobj))<br/> (setq objgroup (vla-add *Groups* "Test01"))<br/> (setq objarray (vlax-make-safearray vlax-vbVariant '(0 . 1)))<br/> (vlax-safearray-fill objarray objlist)<br/> (vla-appenditems objgroup objarray)<br/>)</p><p>执行后总是提示</p><p>; 错误: Automation 错误。 对象数组无效</p><p>请教高手,问题出在哪里?先谢了</p> (vl-load-com)<br/>(setq *AcadDoc* (vla-get-ActiveDocument (vlax-get-Acad-Object)))<br/>(setq *ModelSpace* (vla-get-ModelSpace *AcadDoc*))<br/>(setq *PaperSpace* (vla-get-PaperSpace *AcadDoc*))<br/>(setq *Groups* (vla-get-Groups *AcadDoc*))<br/>(defun C:MakeGroup()<br/> (setq cirobj (vla-addCircle *ModelSpace* (vlax-3d-point '(3.0 3.0 0.0)) 2.0))<br/> <font color="#ff3300"><strong>(setq txtobj (vla-addText *MOdelSpace* "Test" (vlax-3d-point '(3.0 3.0 0.0)) 10))<br/></strong></font> <strong><font color="#ff0000">(setq objlist (list cirobj txtobj))<br/></font></strong> (setq objgroup (vla-add *Groups* "Test01"))<br/> <font color="#ff0000"><strong>(setq objarray (vlax-make-safearray vlax-vbobject '(0 . 1)))</strong><br/></font> (vlax-safearray-fill objarray objlist)<br/> (vla-appenditems objgroup objarray)<br/>) <p>谢谢高手,解决了,第三行是关键,前面两行是笔误,我从大段代码中提取出来的时候有的地方没修改好,总之解决了,太感谢了</p> <p>根据<strong><font face="Verdana" color="#61b713">sailorcwx</font></strong>大大的提示,修改了以后,给出个列表转化为对象数组的函数,希望能有用</p><p>(defun Ut:list->Obj-Array (ptsList / arraySpace sArray)<br/> ; 给对象数组分配空间<br/> (setq arraySpace<br/> (vlax-make-safearray<br/> vlax-vbObject ; 元素类型<br/> (cons 0<br/> (1- (length ptsList))<br/> ) ; 数组维数<br/> )<br/> )<br/> (setq sArray (vlax-safearray-fill arraySpace ptsList))<br/> ; 返回对象数组)<br/>)</p>
页:
[1]