本帖最后由 天天问 于 2024-3-27 15:34 编辑
问题已解决,详见kucha007的帖子http://bbs.mjtd.com/forum.php?mod=viewthread&tid=189711&fromuid=7329538
--------------------------------------------
以下是原贴
当标注文字与其他图元(线条、填充图案等)存在交叉的时候,文字优先,给标注文字加个遮罩,看文字就清晰多了。
尝试使用Lsp来实现,但发现个问题,无法设置文字的填充颜色为“背景”,其他颜色倒是可以成功设置。
奈何日常使用的时候,填充颜色一般都只用“背景”,其他颜色基本不用。有没有大佬帮忙看看这个问题该如何解决?
附上源码,请大佬修改。
- (defun c:XGTC( / bzwztc_input ss i num e_tmp e_obj )
- ;标注文字填充设置
- (vl-load-com)
-
- (initget "A B")
- (setq bzwztc_input (getkword (strcat "\n选择 修改类型 [标注文字添加背景填充(A)/标注文字取消填充(B)]<当前默认 " (if (= bzwztc nil) "A" bzwztc) " >:")))
- (if (= bzwztc nil) (setq bzwztc "A"))
- (if (/= bzwztc_input nil) (setq bzwztc bzwztc_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 'TextFill 1);非0值都表示打开标注文字的填充颜色
- ;(vla-put-textfill e_obj :vlax-true);这句与上面的那一句功能等价
- (vlax-put e_obj 'TextFillColor 1);≤-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 'TextFill 0)
- (setq i (1+ i))
- )
- )
- );end if,
-
- )
- );end if
- (princ)
- )
|