Lee Mac 发表于 2022-7-6 10:55:41

你在VLIDE帮助文档中查过函数“VLA-PUT-TEXTWINBACKGRNDCOLOR”吗?
 
如果你有,你会发现它是用来控制命令行窗口的背景-因此绝对与尺寸无关。
 
如果您不知道如何查找函数,请参见此处。
 

(defun c:FindDodgyDims ( / ss ) (vl-load-com)

(if (setq ss (ssget "_X" '((0 . "*DIMENSION") (1 . "*?*"))))
   (
   (lambda ( i / e o )
       (while (setq e (ssname ss (setq i (1+ i))))
         (vla-put-TextColor (setq o (vlax-ename->vla-object e)) acgreen)
         (vla-put-TextFillColor o acwhite)
         (vla-put-TextFill o :vlax-true)
       )
   )
   -1
   )
)

(princ)
)

Guest kruuger 发表于 2022-7-6 11:01:39

这样表示覆盖DIM如何:
(defun C:HL (/ SS PT PT2)
(if
   (setq SS
   (ssget "_X"
       '((0 . "*DIMENSION") (1 . "*?*"))
   )
   )
   (if (setq PT (getpoint "\nSelect anchor point: "))
   (foreach % (jk:SSX_SS->List SS)
       (setq PT2 (cdr (assoc 11 (entget %))))
       (entmakex
         (list
         (cons 0 "LINE")
         (cons 10 PT)
         (cons 11 PT2)
         (cons 62 2)
         )
       )
   )
   (princ "\n>> Invalid point. ")
   )
   (princ "\n>> No overrided dimensions. ")
)
(princ)
)
(defun jk:SSX_SS->List (sel / n l)
(repeat
   (setq n (sslength sel))
   (setq n (1- n)
         l (cons (ssname sel n) l)
   )
)
)

(princ)kruuger

Pither Rukka 发表于 2022-7-6 11:02:49

谢谢李,我尝试了你的更新代码,但我不知道为什么不能填写背景文字。
 
我尝试使用set the dimtfill and dimtfillclr,并确定:
 

(defun c:FindDodgyDims ( / ss ) (vl-load-com)

(setvar "dimtfillclr" 5)
(setvar "dimtfill" 2)
(if (setq ss (ssget "_X" '((0 . "*DIMENSION") (1 . "*?*"))))
   (
   (lambda ( i / e )
       (while (setq e (ssname ss (setq i (1+ i))))
         (vla-put-TextColor (vlax-ename->vla-object e) acgreen)
         (command "-dimstyle" "A" ss "")
       )
   )
   -1
   )
)
(setvar "dimtfill" 0)
(princ)
)

 
但新的问题,做了代码后无法撤消。。。请帮助我:(
 
克鲁格,谢谢你的代码。。这是一段精彩的代码。

Lee Mac 发表于 2022-7-6 11:08:43

我的代码似乎适合我-你收到错误了吗?
 
您的代码正在为同一选择集中的图元数反复更改标注样式。
页: 1 [2]
查看完整版本: 显示并指出非原件