明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1641|回复: 10

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

[复制链接]
发表于 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来实现,但发现个问题,无法设置文字的填充颜色为“背景”,其他颜色倒是可以成功设置。
奈何日常使用的时候,填充颜色一般都只用“背景”,其他颜色基本不用。有没有大佬帮忙看看这个问题该如何解决?
附上源码,请大佬修改。

  1. (defun c:XGTC( / bzwztc_input  ss  i  num  e_tmp  e_obj  )
  2.         ;标注文字填充设置
  3.         (vl-load-com)
  4.         
  5.         (initget "A  B")
  6.         (setq  bzwztc_input (getkword (strcat "\n选择 修改类型 [标注文字添加背景填充(A)/标注文字取消填充(B)]<当前默认 " (if (= bzwztc nil) "A" bzwztc) " >:")))
  7.         (if (= bzwztc nil) (setq bzwztc "A"))
  8.         (if (/= bzwztc_input nil) (setq  bzwztc  bzwztc_input))
  9.         
  10.         (IF (= bzwztc "A")
  11.                 (progn
  12.                         (prompt "\n选择尺寸标注,按 回车 或 空格 结束选择:")
  13.                         (setq ss (ssget '((0 . "DIMENSION"))))        ;创建选择集                        
  14.                         
  15.                         (if ss
  16.                                 (progn
  17.                                         (setq i 0)
  18.                                         (setq num (sslength ss));获取选择集里的图元数量
  19.                                         (repeat num
  20.                                                 (setq e_tmp (ssname ss i))
  21.                                                 (setq e_obj (vlax-ename->vla-object e_tmp))
  22.                                                 (vlax-put e_obj 'TextFill  1);非0值都表示打开标注文字的填充颜色
  23.                                                 ;(vla-put-textfill e_obj :vlax-true);这句与上面的那一句功能等价        
  24.                                                 (vlax-put e_obj 'TextFillColor  1);≤-1红色,0随层,1~255为索引色,≥256随层。=======目前还未找到背景色的设置方法
  25.                                                 (setq i (1+ i))
  26.                                         )
  27.                                 )
  28.                         );end if,                        
  29.                         
  30.                 )
  31.         );end if
  32.         
  33.         
  34.         (IF (= bzwztc "B")
  35.                 (progn
  36.                         (prompt "\n选择尺寸标注,按 回车或 空格 结束选择:")
  37.                         (setq ss (ssget '((0 . "DIMENSION"))))        ;创建选择集                        
  38.                         
  39.                         (if ss
  40.                                 (progn
  41.                                         (setq i 0)
  42.                                         (setq num (sslength ss));获取选择集里的图元数量
  43.                                         (repeat num
  44.                                                 (setq e_tmp (ssname ss i))
  45.                                                 (setq e_obj (vlax-ename->vla-object e_tmp))
  46.                                                 (vlax-put e_obj 'TextFill  0)
  47.                                                 (setq i (1+ i))
  48.                                         )
  49.                                 )
  50.                         );end if,                        
  51.                         
  52.                 )
  53.         );end if

  54.         (princ)
  55. )

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-3-26 18:12:13 | 显示全部楼层
先占个位,我也想知道!
可惜一直没找到办法
发表于 2024-3-26 18:15:40 | 显示全部楼层
本帖最后由 e2002 于 2024-3-26 18:17 编辑

相关的说说,不涉及到代码:
MTEXT对象才有 Background 属性,Text对象很遗憾没有,希望Autodesk能改进Text对象,加上各种先进特性,如背景(不仅能纯色,还可以渐变,图案填充),2D几何变形等。
发表于 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无法解决吗?
发表于 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
我写了个简版,但论坛现在传不了文件= =

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

【DF】切换标注遮罩_v1.0
http://bbs.mjtd.com/forum.php?mo ... amp;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,也是如此。不知道为什么,也不知道该怎么改才行,有没有前辈能指教。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 19:18 , Processed in 0.177212 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表