请教如何修改块定义
本帖最后由 gmstcn 于 2012-5-3 12:17 编辑比如原来块里面是一个圆,现在想替换成一个矩形。
我这ENTMAKE和ENTGET函数不能用,有其他方法么(VLA-什么的)?
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
目的是通过修改块定义将以下DEMO_A.DWG处理成DEMO_B.DWG
最简单的方法,用command方法重定义block vla函数处理教方便,但楼主的问题需要描述清楚,最好提供测试实例 楼上请见顶楼更新~ 这是我写的代码~~关键地方不知道怎么处理了
(defun START();块处理后
(setq ss (ssget "x"))
(setq maxidx (sslength ss) idx 1)
(while
(<= idx maxidx)
(setq ename (ssname ss (- idx 1)))
(setq obj (vlax-ename->vla-object ename))
(if(= (vlax-get-property obj "ObjectName") "AcDbBlockReference") (搞块 obj))
(setq idx (1+ idx))
)
(princ)
)
(defun 搞块(insertobj);//对不同的块,需做不同的修改
(princ "B---->")(princ insertobj)
(setq blockname (vlax-get-property insertobj "Name"))
(setq blocks (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))))
(setq blockobj (vlax-ename->vla-object (tblobjname "BLOCK" blockname)))
;;;;;;;;;;;;;;;;;;;;;;
(vlax-for x (vla-item blocks blockname)
(if(= (vlax-get-property obj "ObjectName") "CIRCLE") (vla-delete obj));删除圆
(if(= (vlax-get-property obj "ObjectName") "HATCH") (vla-delete obj));删除圆的填充
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;删完了,这里怎么添加矩形或者直线……?用Vla函数的
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
)
沉的快啊
求指点
我没理解BLOCKS和BLOCK的说明
不知道怎么得到块定义的OBJ 求指点 本帖最后由 caoyin 于 2012-5-8 18:04 编辑
BLOCKS----块定义的集合
BLOCK------具体到某个实际的块定义,例如文件DEMO_B.dwg中的块A(不是在屏幕实际显示的INSERT)
INSERT-----块的插入实例(屏幕实际显示的INSERT)
;;;
(setq BLOCKS (vla-get-blocks(vla-get-ActiveDocument (vlax-get-acad-object))))
(setq BLOCK (vla-item BLOCKS "A"))
(vlax-for OBJ BLOCK
;;我这里举例把块A中的直线改为红色,请按照自己要求修改
(if (=(vla-get-objectName OBJ)"AcDbLine")
(vla-put-color OBJ 1)
)
)
;;REGEN一下看修改结果 版大~块定义里面的修改、删除我能做到,但是不知道怎么用vla添加新图元
(VLA-ADDLINE BLOCK PT1 PT2)?? 不用编程,直接用图块的在为编辑
页:
[1]
2