本帖最后由 LLXXZZ 于 2011-9-2 21:30 编辑
以下为本人做的小程序,只能取得次级图元.
不会用循环取得全部图元.请指教.
;;;获得图块次级图元
;;;若非图块,返回自身图元名.
;;;(blk:2ent (car (entsel))) (dxf 2 (car (entsel))) (tblobjname "block" nil)
(defun blk:2ent (blk / rtn Name temp)
(SETQ rtn (list)
Name (dxf 2 blk)
)
(if Name
(progn
(setq temp (tblobjname "block" Name))
(while (SETQ temp (entnext temp)) (SETQ rtn (cons temp rtn)))
)
blk
)
)
以下是晓城的子程,写的非常棒!!
- ;;;***********************************************************
- ;;; No.1-2 获取图块内的所有非图块对象(含嵌套块中的)名称 函数
- ;;;***********************************************************
- (defun ayGetAllEntInBLK
- (BlkEntName / xBlkName xBlkDef entName1 entType entNameList)
- (setq xBlkName (cdr (assoc 2 (entget BlkEntName))))
- (setq xBlkDef (tblobjname "Block" xBlkName))
- (while (setq entName1 (entnext xBlkDef))
- (setq entType (cdr (assoc 0 (entget entName1))))
- (if (= entType "INSERT")
- (setq entNameList
- (append (ayGetAllEntInBLK entName1) entNameList)
- )
- (setq entNameList (cons entName1 entNameList))
- ) ;end_if
- (setq xBlkDef entName1)
- ) ;end_while entNameList
- entNameList
- ) ;end_defun
|