xransnow 发表于 2010-4-28 12:12:00

[求助]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/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq cirobj (vla-addCircle *ModelSpace* (vlax-3d-point '(3.0 3.0 0.0)) 2.0))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq txtobj (vla-addText *MOdelSpace* (vlax-3d-point '(3.0 3.0 0.0)) "Test" 10))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq objlist (list cirobj txtnoobj))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq objgroup (vla-add *Groups* "Test01"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq objarray (vlax-make-safearray vlax-vbVariant '(0 . 1)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-safearray-fill objarray objlist)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-appenditems objgroup objarray)<br/>)</p><p>执行后总是提示</p><p>; 错误: Automation 错误。 对象数组无效</p><p>请教高手,问题出在哪里?先谢了</p>

sailorcwx 发表于 2010-4-28 12:44:00

(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/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq cirobj (vla-addCircle *ModelSpace* (vlax-3d-point '(3.0 3.0 0.0)) 2.0))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ff3300"><strong>(setq txtobj (vla-addText *MOdelSpace*&nbsp; "Test" (vlax-3d-point '(3.0 3.0 0.0)) 10))<br/></strong></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><font color="#ff0000">(setq objlist (list cirobj txtobj))<br/></font></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq objgroup (vla-add *Groups* "Test01"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff0000">
                <strong>(setq objarray (vlax-make-safearray vlax-vbobject '(0 . 1)))</strong><br/></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-safearray-fill objarray objlist)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vla-appenditems objgroup objarray)<br/>)

xransnow 发表于 2010-4-28 12:50:00

<p>谢谢高手,解决了,第三行是关键,前面两行是笔误,我从大段代码中提取出来的时候有的地方没修改好,总之解决了,太感谢了</p>

xransnow 发表于 2010-4-28 13:02:00

<p>根据<strong><font face="Verdana" color="#61b713">sailorcwx</font></strong>大大的提示,修改了以后,给出个列表转化为对象数组的函数,希望能有用</p><p>(defun Ut:list-&gt;Obj-Array (ptsList / arraySpace sArray)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; 给对象数组分配空间<br/>&nbsp; (setq&nbsp;arraySpace<br/>&nbsp; (vlax-make-safearray<br/>&nbsp;&nbsp;&nbsp; vlax-vbObject&nbsp;&nbsp;; 元素类型<br/>&nbsp;&nbsp;&nbsp; (cons 0<br/>&nbsp;&nbsp; (1- (length ptsList))<br/>&nbsp;&nbsp;&nbsp; )&nbsp;&nbsp;&nbsp;&nbsp;; 数组维数<br/>&nbsp; )<br/>&nbsp; )<br/>&nbsp; (setq sArray (vlax-safearray-fill arraySpace ptsList))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; 返回对象数组)<br/>)</p>
页: [1]
查看完整版本: [求助]vlisp中,怎么给Group对象的AppendItems方法赋值