明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3817|回复: 8

[求助]如果通过dimstyle的符号表批量更改已标注文字的颜色

[复制链接]
发表于 2010-10-13 19:25:00 | 显示全部楼层 |阅读模式

如果通过dimstyle的符号表批量更改已标注文字的颜色

要用lisp实现,不要用vlisp

而且要求只更改已标注尺寸的文字颜色而不改变已标注尺寸的其它标注格式变量。

比如直径标注,原来的文字水平放置,改后还要水平放置

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2010-10-13 21:31:00 | 显示全部楼层

不明白?直径标注也是尺寸标注呀?你的已标注尺寸到底是什么样的尺寸?你标注的直径标注是单独的标注样式吗?

发表于 2010-10-13 22:00:00 | 显示全部楼层
不就改标注文字颜色嘛!用下面代码,纯lisp的:
  1. (defun c:tt()
  2.   (setq ss (ssget '((0 . "DIMENSION"))))
  3.   (if ss
  4.     (progn
  5.      (initget 5)
  6.       (setq color (getint "输入颜色号:"))
  7.       (setq lst (list (list -3 (list "ACAD" '(1000 . "DSTYLE") '(1002 . "{") '(1070 . 178) (cons 1070 color) '(1002 . "}")))))
  8.       (setq n 0)
  9.       (repeat (sslength ss)
  10. (setq en (ssname ss n))
  11. (setq enl (entget en))
  12. (setq enl (append enl lst))
  13. (entmod enl)
  14. (setq n (1+ n))
  15. )
  16.       )
  17.     )
  18.   (princ)
  19.   )
发表于 2010-10-14 12:19:00 | 显示全部楼层
樓上會改变已标注尺寸的
发表于 2010-10-14 13:37:00 | 显示全部楼层
龙龙仔发表于2010-10-14 12:19:00樓上會改变已标注尺寸的

是的,还是应vlisp简单!一句代码搞定!

(vla-put-textcolor (vlax-ename->vla-object (car (entsel))) (getint "输入颜色:"))

发表于 2010-10-14 17:31:00 | 显示全部楼层
  1. ;;這是我某個程序中的副程式,應對你有幫助
  2. ;;(tol (car(entsel)) (acad_colordlg 256))
  3. (defun TOL (A COL / AAA TMP N)
  4.   (setq AAA (cdadr (assoc -3 (entget A '("ACAD")))))
  5.   (setq N 2)
  6.   (setq TMP '((1000 . "DSTYLE")
  7.        (1002 . "{")
  8.       )
  9.   )
  10.   (repeat (/ (- (length AAA) 3) 2)
  11.     (if (not (or (equal '((1070 . 176)) (list (nth N AAA)))
  12.    (equal '((1070 . 177)) (list (nth N AAA)))
  13.    (equal '((1070 . 178)) (list (nth N AAA)))
  14.       )
  15. )
  16.       (setq TMP (append (list (nth N AAA) (nth (+ N 1) AAA)))
  17.      TMP
  18.       )
  19.     )
  20.     (setq N (+ N 2))
  21.   )
  22.   (setq
  23.     A (append (entget A)
  24.        (list (cons -3
  25.      (list (cons "ACAD"
  26.           (append TMP
  27.            '((1070 . 176))
  28.            (list (cons 1070 COL))
  29.            '((1070 . 177))
  30.            (list (cons 1070 COL))
  31.            '((1070 . 178))
  32.            (list (cons 1070 COL))
  33.            '((1002 . "}"))
  34.           )
  35.     )
  36.      )
  37.       )
  38.        )
  39.       )
  40.   )
  41.   (entmod A)
  42.   (princ)
  43. )
 楼主| 发表于 2010-10-17 20:58:00 | 显示全部楼层
还没试呢,谢谢各位了,不胜感激。
 楼主| 发表于 2010-10-25 18:51:00 | 显示全部楼层

直径标注前面是带直径符号的,不能改完颜色把直径符号给丢了。(顺便问一下要是丢了怎么能加一个和直径标注一模一样的直径符号,不能通过前后缀,或在文字替换中加%%c来实现,这样的实现方法与直径标注自动加的直径符号不是一回事。)

 

龙仔仔,不行啊,你的程序会把标注识文字还原的,我不希望还原。我的意思是只改文字颜色(通过DIMCLRT或通过dimstyle的符号表哪种方式都行,就是不要影响已标注尺寸的其它尺寸变量),而不是Vlisp,Vlisp很简单就能实现我也知道,不改内容,前后缀,文字是否水平等等其它的一切标注格式变量。

 

 

就是实现和通过特性改已标注文字的颜色一样的功能,要批量的。

发表于 2013-8-27 20:16:54 | 显示全部楼层
Gu_xl 发表于 2010-10-14 13:37
是的,还是应vlisp简单!一句代码搞定!
(vla-put-textcolor (vlax-ename->vla-object (car (entsel ...

G版您好,我想把 (vla-put-textcolor (vlax-ename->vla-object (car (entsel)))1)加到其他程序里,怎样改才能够让它改变已选的标注呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-26 12:31 , Processed in 0.201942 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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