明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1598|回复: 8

块添子实体

[复制链接]
发表于 2005-9-29 14:22:00 | 显示全部楼层 |阅读模式
请问如何实现把选择集内的实体添加到已知块中?谢谢。。。。。请给我讲讲实现的方法,有代码就最好了。。。。
发表于 2005-9-29 21:01:00 | 显示全部楼层

参考这个程序

     ;BLK:MAKE-BLOCK_______________________________________________
     ;Creates a block out of list of vla-objects
     ;Arguments
     ; 1) insertion point <(x y z)>
     ; 2) block name <string>
     ; 3) list of entities as vla-objects
     ; 4) document object
     ; 5) Use "*u" as the blockname argument to this function
     ;    TO MAKE AN UNNAMED BLOCK

(defun blk:make-block (ip blockname vla-objects doc / blkobj sArray)
  (setq
    blkobj (vla-add (vla-get-blocks doc) (vlax-3d-point ip) blockname)
    sArray
    (vlax-safearray-fill
      (vlax-make-safearray
        vlax-vbObject
        (cons 0 (1- (length vla-objects)))
      )
      vla-objects
    )
  )
  (vla-copyobjects doc sArray blkobj)
  blkobj
)
;;;将选择集换成对象表
(defun selectionset->vla-object-list (sset / thelist idx)
  (setq thelist '()
 idx -1
  )
  (repeat (sslength sset)
    (setq thelist (append thelist
     (list (vlax-ename->vla-object
      (ssname sset (setq idx (1+ idx)))
    )
     )
    )
    )
  )
)
;;;

 楼主| 发表于 2005-9-30 11:11:00 | 显示全部楼层
我要的是把一个实体添加到一个已经定义好的块中,就是我先前已经做好一个块了, 但是后来我想把一个实体舔加到这个块中。
发表于 2005-9-30 12:53:00 | 显示全部楼层

re

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

发表于 2005-9-30 14:56:00 | 显示全部楼层

Almost there...:)

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

 楼主| 发表于 2005-9-30 16:14:00 | 显示全部楼层

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

发表于 2005-9-30 21:52:00 | 显示全部楼层

还需要一个变换。。。

发表于 2005-10-3 12:19:00 | 显示全部楼层

这样才行。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2013-7-12 17:16:03 | 显示全部楼层
no function definition: LLDET:INVERSE
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-28 01:54 , Processed in 0.195658 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表