明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2258|回复: 1

怎么创建带有属性的无名块?

[复制链接]
发表于 2004-10-24 13:18:00 | 显示全部楼层 |阅读模式
以下是创建无名块的程序,可惜不能容纳带有属性的实体。求助帮我解决这个问题 (defun mc-make-unname-block (ss / count entlist ent blk)
(entmake '((0 . "BLOCK") (2 . "*U") (70 . 1) (10 0 0 0)))
(setq count 0)
(repeat (sslength ss)
(setq entlist (entget (setq ent (ssname ss count))))
(setq count (1+ count))
(entmake entlist)
)
(setq count 0)
(repeat (sslength ss)
(setq ent (ssname ss count))
(setq count (1+ count))
(entdel ent)
)
(setq blk (entmake '((0 . "ENDBLK"))))
(if (princ blk)
(entmake (list (cons 0 "INSERT")
(cons 2 blk)
(cons 10 '(0 0 0))
)
)
)
blk
)
语法
(mc-make-unname-block ss)
参数
ss:选择集
返回值
无名块
样例
(mc-make-unname-block (ssget))
说明
函数对选择集中存在具有属性的图块及复杂多义线无效
发表于 2004-10-24 21:05:00 | 显示全部楼层
  1. (defun c:unblock(/ doc mspace objs pt pt blkdef)
  2.    (vl-load-com)
  3.    (setq doc (vla-get-activedocument (vlax-get-acad-object))
  4.   mspace (vla-get-modelspace doc)
  5.                ss (ssget)
  6.   objs (selectionset->vla-object-list ss)
  7.                pt (getpoint "\n选择插入点:")
  8.                blkdef (blk:make-block pt "*U" objs doc))
  9.    (mapcar 'vla-delete objs)
  10.    (vla-insertblock mspace (vlax-3d-point pt) (vla-get-name blkdef) 1 1 1 0)
  11.    (mapcar 'vlax-release-object (list doc mspace blkdef))
  12.    (princ)
  13. )
  14.    
  15. ;BLK:MAKE-BLOCK_______________________________________________
  16. ;Creates a block out of list of vla-objects
  17. ;Arguments
  18. ; 1) insertion point <(x y z)>
  19. ; 2) block name <string>
  20. ; 3) list of entities as vla-objects
  21. ; 4) document object
  22. ; 5) Use "*u" as the blockname argument to this function
  23. ;       TO MAKE AN UNNAMED BLOCK(defun blk:make-block (ip blockname vla-objects doc / blkobj sArray)
  24.    (setq
  25.        blkobj (vla-add (vla-get-blocks doc) (vlax-3d-point ip) blockname)
  26.        sArray
  27.        (vlax-safearray-fill
  28.            (vlax-make-safearray
  29.                vlax-vbObject
  30.                (cons 0 (1- (length vla-objects)))
  31.            )
  32.            vla-objects
  33.        )
  34.    )
  35.    (vla-copyobjects doc sArray blkobj)
  36.    blkobj
  37. )
  38. ;;;
  39. (defun selectionset->vla-object-list (sset / thelist idx)
  40.    (setq  thelist  '()
  41.   idx -1
  42.    )
  43.    (repeat (sslength sset)
  44.        (setq thelist (append thelist
  45.          (list  (vlax-ename->vla-object
  46.            (ssname sset (setq idx (1+ idx)))
  47.         )
  48.          )
  49.        )
  50.        )
  51.    )
  52. )
  53. ;;;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-30 10:22 , Processed in 0.171244 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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