天天问 发表于 2024-3-26 16:12:25

【已解决】如何设置标注文字的填充颜色为“背景”?

本帖最后由 天天问 于 2024-3-27 15:34 编辑

问题已解决,详见kucha007的帖子http://bbs.mjtd.com/forum.php?mod=viewthread&tid=189711&fromuid=7329538



--------------------------------------------
以下是原贴
当标注文字与其他图元(线条、填充图案等)存在交叉的时候,文字优先,给标注文字加个遮罩,看文字就清晰多了。
尝试使用Lsp来实现,但发现个问题,无法设置文字的填充颜色为“背景”,其他颜色倒是可以成功设置。
奈何日常使用的时候,填充颜色一般都只用“背景”,其他颜色基本不用。有没有大佬帮忙看看这个问题该如何解决?
附上源码,请大佬修改。

(defun c:XGTC( / bzwztc_inputssinume_tmpe_obj)
      ;标注文字填充设置
      (vl-load-com)
      
      (initget "AB")
      (setqbzwztc_input (getkword (strcat "\n选择 修改类型 [标注文字添加背景填充(A)/标注文字取消填充(B)]<当前默认 " (if (= bzwztc nil) "A" bzwztc) " >:")))
      (if (= bzwztc nil) (setq bzwztc "A"))
      (if (/= bzwztc_input nil) (setqbzwztcbzwztc_input))
      
      (IF (= bzwztc "A")
                (progn
                        (prompt "\n选择尺寸标注,按 回车 或 空格 结束选择:")
                        (setq ss (ssget '((0 . "DIMENSION"))))      ;创建选择集                        
                        
                        (if ss
                              (progn
                                        (setq i 0)
                                        (setq num (sslength ss));获取选择集里的图元数量
                                        (repeat num
                                                (setq e_tmp (ssname ss i))
                                                (setq e_obj (vlax-ename->vla-object e_tmp))
                                                (vlax-put e_obj 'TextFill1);非0值都表示打开标注文字的填充颜色
                                                ;(vla-put-textfill e_obj :vlax-true);这句与上面的那一句功能等价      
                                                (vlax-put e_obj 'TextFillColor1);≤-1红色,0随层,1~255为索引色,≥256随层。=======目前还未找到背景色的设置方法
                                                (setq i (1+ i))
                                        )
                              )
                        );end if,                        
                        
                )
      );end if
      
      
      (IF (= bzwztc "B")
                (progn
                        (prompt "\n选择尺寸标注,按 回车或 空格 结束选择:")
                        (setq ss (ssget '((0 . "DIMENSION"))))      ;创建选择集                        
                        
                        (if ss
                              (progn
                                        (setq i 0)
                                        (setq num (sslength ss));获取选择集里的图元数量
                                        (repeat num
                                                (setq e_tmp (ssname ss i))
                                                (setq e_obj (vlax-ename->vla-object e_tmp))
                                                (vlax-put e_obj 'TextFill0)
                                                (setq i (1+ i))
                                        )
                              )
                        );end if,                        
                        
                )
      );end if

      (princ)
)

uvyx 发表于 2024-3-26 18:12:13

先占个位,我也想知道!
可惜一直没找到办法

e2002 发表于 2024-3-26 18:15:40

本帖最后由 e2002 于 2024-3-26 18:17 编辑

相关的说说,不涉及到代码:
MTEXT对象才有 Background 属性,Text对象很遗憾没有,希望Autodesk能改进Text对象,加上各种先进特性,如背景(不仅能纯色,还可以渐变,图案填充),2D几何变形等。

Bao_lai 发表于 2024-3-26 20:12:29

试了下,这个确实不好弄,搞不好。
(vlax-Put (Vlax-Ename->Vla-Object (Car(Entsel))) 'TextFillColor "背景")

天天问 发表于 2024-3-26 20:56:38

e2002 发表于 2024-3-26 18:15
相关的说说,不涉及到代码:
MTEXT对象才有 Background 属性,Text对象很遗憾没有,希望Autodesk能改进Tex ...

您的意思是,这个问题现阶段用lisp无法解决吗?

kucha007 发表于 2024-3-26 22:15:54

天天问 发表于 2024-3-26 20:56
您的意思是,这个问题现阶段用lisp无法解决吗?

LeeMac有一个类似的https://lee-mac.com/mask.html
我写了个简版,但论坛现在传不了文件= =

天天问 发表于 2024-3-27 08:12:47

kucha007 发表于 2024-3-26 22:15
LeeMac有一个类似的https://lee-mac.com/mask.html
我写了个简版,但论坛现在传不了文件= =
大佬,关键部分的代码方便展示一下吗,截图也行

kucha007 发表于 2024-3-27 09:11:01

天天问 发表于 2024-3-27 08:12
大佬,关键部分的代码方便展示一下吗,截图也行

【DF】切换标注遮罩_v1.0
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=189711&fromuid=7329538
(出处: 明经CAD社区)

天天问 发表于 2024-3-27 15:31:57

kucha007 发表于 2024-3-27 09:11
【DF】切换标注遮罩_v1.0
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=189711&fromuid=7329538
...

干货满满,谢谢分享

飞的鱼儿 发表于 2024-4-8 17:00:28

借个楼,提个问,我用CAD时,经常遇到标注文字会有背景,在标注样式里改成标注文字的背景为“无"当时标注时,文字的背景确实没有了,可是没过多一会儿,就又有背景了,改了变量DIMTFILL,也是如此。不知道为什么,也不知道该怎么改才行,有没有前辈能指教。
页: [1] 2
查看完整版本: 【已解决】如何设置标注文字的填充颜色为“背景”?