leizy800 发表于 2005-9-29 14:22:00

块添子实体

请问如何实现把选择集内的实体添加到已知块中?谢谢。。。。。请给我讲讲实现的方法,有代码就最好了。。。。

alin 发表于 2005-9-29 21:01:00

<P>参考这个程序</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;BLK:MAKE-BLOCK_______________________________________________<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;Creates a block out of list of vla-objects<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;Arguments<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; 1) insertion point &lt;(x y z)&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; 2) block name &lt;string&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; 3) list of entities as vla-objects<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; 4) document object<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; 5) Use "*u" as the blockname argument to this function<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;&nbsp;&nbsp; TO MAKE AN UNNAMED BLOCK</P>
<P>(defun blk:make-block (ip blockname vla-objects doc / blkobj sArray)<BR>&nbsp; (setq<BR>&nbsp;&nbsp;&nbsp; blkobj (vla-add (vla-get-blocks doc) (vlax-3d-point ip) blockname)<BR>&nbsp;&nbsp;&nbsp; sArray<BR>&nbsp;&nbsp;&nbsp; (vlax-safearray-fill<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-make-safearray<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vlax-vbObject<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 0 (1- (length vla-objects)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vla-objects<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp; )<BR>&nbsp; (vla-copyobjects doc sArray blkobj)<BR>&nbsp; blkobj<BR>)<BR>;;;将选择集换成对象表<BR>(defun selectionset-&gt;vla-object-list (sset / thelist idx)<BR>&nbsp; (setq&nbsp;thelist&nbsp;'()<BR>&nbsp;idx -1<BR>&nbsp; )<BR>&nbsp; (repeat (sslength sset)<BR>&nbsp;&nbsp;&nbsp; (setq thelist (append thelist<BR>&nbsp;&nbsp;&nbsp;&nbsp; (list&nbsp;(vlax-ename-&gt;vla-object<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ssname sset (setq idx (1+ idx)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;)<BR>&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp; )<BR>)<BR>;;;</P>

leizy800 发表于 2005-9-30 11:11:00

我要的是把一个实体添加到一个已经定义好的块中,就是我先前已经做好一个块了, 但是后来我想把一个实体舔加到这个块中。

liu22737 发表于 2005-9-30 12:53:00

re

<P>双击块就可以编辑了(02以后的版本)(在以前的帖子中,飞板主讲过的)</P>

alin 发表于 2005-9-30 14:56:00

<P>Almost there...:)</P>
<P>(defun c:Add2Block(/ blkobj sArray blockname vla-objects)<BR>&nbsp; (setq doc (vla-get-activedocument (vlax-get-acad-object)))<BR>&nbsp; (princ "\Please select the object to add into a block....")<BR>&nbsp; (setq vla-objects (selectionset-&gt;vla-object-list (ssget)))<BR>&nbsp; (setq blockname (cdr (assoc 2 (entget (car (entsel "\nSelect a block: "))))))<BR>&nbsp; (setq<BR>&nbsp;&nbsp;&nbsp; blkobj (vla-item (vla-get-blocks doc) blockname)<BR>&nbsp;&nbsp;&nbsp; sArray<BR>&nbsp;&nbsp;&nbsp; (vlax-safearray-fill<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vlax-make-safearray<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vlax-vbObject<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (cons 0 (1- (length vla-objects)))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vla-objects<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp; )<BR>&nbsp; (vla-copyobjects doc sArray blkobj)<BR>&nbsp; (mapcar 'vla-delete vla-objects)<BR>&nbsp; (vla-regen doc :vlax-true)<BR>)<BR>;;;?????????<BR>(defun selectionset-&gt;vla-object-list (sset / thelist idx)<BR>&nbsp; (setq thelist '()<BR>&nbsp;idx -1<BR>&nbsp; )<BR>&nbsp; (repeat (sslength sset)<BR>&nbsp;&nbsp;&nbsp; (setq thelist (append thelist<BR>&nbsp;&nbsp;&nbsp;&nbsp; (list (vlax-ename-&gt;vla-object<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ssname sset (setq idx (1+ idx)))<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp; )<BR>)<BR></P>

leizy800 发表于 2005-9-30 16:14:00

<P>不行啊,把实体给弄飞了,再也找不到了..................................................</P>

alin 发表于 2005-9-30 21:52:00

<P>还需要一个变换。。。</P>

alin 发表于 2005-10-3 12:19:00

<P>这样才行。。。</P>

幸福是真 发表于 2013-7-12 17:16:03

no function definition: LLDET:INVERSE
页: [1]
查看完整版本: 块添子实体