mrhvslisp 发表于 2011-4-16 23:03:38

求明经达人解答,当多重块中包含高程点时,高程点中文本颜色如何改过来

我的意思是 图块中包含高程点,
高程点作为主图块一个属性快,
此时高程点中文本颜色如何改过来。

附单独修改高程点中文本颜色程序:
(defun mgs (ename / vn)
(setq vn (vlax-ename->vla-object ename))
(vla-put-color vn color)
(if
    (and
      (/= (setq ename (entnext ename)) nil)
      (/= (assoc 0 (entget ename)) "SEQEND")
   )   ;andover
   (mgs ename)
)   ;ifover
)   ;defunover



属性快改色程序:

(defun c:mtkgs (/ ss n color ename vla-obj name doc blocks block ent)
(vl-load-com)
(setq ss (ssget (list (cons 0 "insert"))))
(setq n (sslength ss))
(setq color (acad_colordlg 8))
(repeat n
    (setq ename (ssname ss (setq n (1- n))))
    (setq vla-obj (vlax-ename->vla-object ename))
    (setq doc(vla-get-activedocument (vlax-get-acad-object))
   blocks (vla-get-blocks doc)
    )
    (mdck vla-obj)
   )   ;repeatover
(vla-regen doc acactiveviewport)
(vlax-release-object vla-obj)
(vlax-release-object doc)
(vlax-release-object blocks)
(gc)
)   ;defun over

(defun mdck (vla-obj)
(vla-put-color vla-obj color)
(vlax-for ent (vla-item blocks (vla-get-name vla-obj))
    (vla-put-color ent color)
    (if (= (vla-get-objectname ent) "AcDbBlockReference")
      (mdck ent)
    )
)
)   ;defunover

啵浪鼓 发表于 2011-4-17 02:24:15

楼主提供的程序,为什么只选一个块,会把所有的块同名块全部改变颜色了?
undo后,需要加regen才能还原颜色,否则一直是改过的颜色

ljttjl 发表于 2011-4-18 21:32:37

试下这个程序能否满足要求

mrhvslisp 发表于 2011-4-19 17:43:25

回复 ljttjl 的帖子

兄弟,有源码么?
页: [1]
查看完整版本: 求明经达人解答,当多重块中包含高程点时,高程点中文本颜色如何改过来