gmstcn 发表于 2012-5-2 18:32:08

请教如何修改块定义

本帖最后由 gmstcn 于 2012-5-3 12:17 编辑

比如原来块里面是一个圆,现在想替换成一个矩形。
我这ENTMAKE和ENTGET函数不能用,有其他方法么(VLA-什么的)?

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
目的是通过修改块定义将以下DEMO_A.DWG处理成DEMO_B.DWG





牢固 发表于 2012-5-2 18:40:50

最简单的方法,用command方法重定义block

caoyin 发表于 2012-5-2 20:29:40

vla函数处理教方便,但楼主的问题需要描述清楚,最好提供测试实例

gmstcn 发表于 2012-5-3 12:17:48

楼上请见顶楼更新~

gmstcn 发表于 2012-5-4 17:10:48

这是我写的代码~~关键地方不知道怎么处理了

(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函数的
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
)

gmstcn 发表于 2012-5-7 17:22:24

沉的快啊
求指点
我没理解BLOCKS和BLOCK的说明
不知道怎么得到块定义的OBJ

gmstcn 发表于 2012-5-8 13:46:36

求指点

caoyin 发表于 2012-5-8 18:02:36

本帖最后由 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一下看修改结果

gmstcn 发表于 2012-5-9 15:07:49

版大~块定义里面的修改、删除我能做到,但是不知道怎么用vla添加新图元
(VLA-ADDLINE BLOCK PT1 PT2)??

lijiao 发表于 2012-5-9 16:05:52

不用编程,直接用图块的在为编辑
页: [1] 2
查看完整版本: 请教如何修改块定义