乐筑天下

帖子
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 56|回复: 12

[编程交流] LISP更改文字颜色bas

[复制链接]

3

主题

7

帖子

4

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 16:54:32 | 显示全部楼层 |阅读模式
嗨,我希望能够改变文字的颜色的基础上的价值。因此,如果我有200个不同值的文本对象,我可以将它们全部选中,如果值高于某个数字,我可以选择将颜色更改为红色。它用于呈现水平调查,并强调与设计水平的任何差异。
回复

使用道具 举报

26

主题

210

帖子

184

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-5 17:01:44 | 显示全部楼层
也许这有帮助。
回复

举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:08:04 | 显示全部楼层
文本是否仅包含数字内容,或者数字内容是否被其他文本内容包围?
回复

举报

3

主题

7

帖子

4

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 17:13:19 | 显示全部楼层
它只是数字内容,例如12.255
回复

举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 17:16:29 | 显示全部楼层
 
我会问同样的问题,尽管这可以使用:
  1. ; _$ (GetNumVal "abc256def,ghi1j3k4x") -> 256.134
  2. (defun GetNumVal ( str / delimUsed )
  3. (if (eq 'STR (type str))
  4.         (atof
  5.                 (vl-string-subst "." ","
  6.                         (apply 'strcat
  7.                                 (vl-remove 'nil
  8.                                         (mapcar
  9.                                                 (function
  10.                                                         (lambda (x)
  11.                                                                 (if (member x (mapcar 'chr (vl-string->list "1234567890.,")))
  12.                                                                         (cond
  13.                                                                                 ((and (member x '("." ",")) (not delimUsed) (setq delimUsed T))
  14.                                                                                         x
  15.                                                                                 )
  16.                                                                                 ((and (member x '("." ",")) delimUsed) nil)
  17.                                                                                 (T x)
  18.                                                                         ); cond
  19.                                                                 ); if
  20.                                                         ); lambda
  21.                                                 ); funciton
  22.                                                 (mapcar 'chr (vl-string->list str))
  23.                                         ); mapcar
  24.                                 ); vl-remove
  25.                         ); apply 'strcat
  26.                 ); vl-string-subst
  27.         ); atof
  28. ); if
  29. ); defun GetNumVal

以及不推荐字符串的示例:
  1. ; _$ (GetNumVal "245.5x640.2") -> 245.564
回复

举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:22:39 | 显示全部楼层
又快又脏
 
  1. (setq ss (ssget "x" (list (cons 0 "TEXT"))))
  2. (repeat (setq x (sslength ss))
  3. (setq obj  (ssname ss (setq x (- x 1))))
  4. (if (< 100.0 (atof (vla-get-textstring (vlax-ename->vla-object obj))))
  5. (command "chprop" obj "" "col" 1 "")
  6. )
  7. )
回复

举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 17:25:28 | 显示全部楼层
Jamesjh1171,你能提供一张样品图来测试一下吗。
编辑:
没关系,写了点什么(可能不是你想要的):
  1. ; Symetrical text coloring from the mid value
  2. (defun C:test ( / colInc colRange inc SSX i Lst NumVals MMM Range c enx )
  3. (if
  4.         (and
  5.                 (setq colInc 1)
  6.                 (setq colRange '(10 250))
  7.                 (not (initget (+ 1 2 4)))
  8.                 (setq inc (getreal "\nSpecify increment: "))
  9.                 (setq SSX (ssget "_X" (list (cons 0 "TEXT") (if (= 1 (getvar 'cvport)) (cons 410 (getvar 'ctab)) '(410 . "Model")))))
  10.         )
  11.         (progn
  12.                 (repeat (setq i (sslength SSX))
  13.                         (setq Lst (cons (entget (ssname SSX (setq i (1- i)))) Lst))
  14.                 ); repeat
  15.                
  16.                 ; (setq Lst (vl-remove-if (function (lambda (x) (= 0.0 (atof (cdr (assoc 1 x)))))) Lst))
  17.                 ; (setq NumVals (mapcar (function (lambda (x) (atof (cdr (assoc 1 x))))) Lst))
  18.                 (setq Lst (vl-remove-if (function (lambda (x) (= 0.0 (GetNumVal (cdr (assoc 1 x)))))) Lst))
  19.                 (setq NumVals (mapcar (function (lambda (x) (GetNumVal (cdr (assoc 1 x))))) Lst))
  20.                 (setq
  21.                         MMM (cons (apply 'min NumVals) MMM)
  22.                         MMM (cons (apply 'max NumVals) MMM)
  23.                         MMM (cons (/ (apply '+ MMM) 2.) MMM)
  24.                         MMM (vl-sort MMM '<)
  25.                 ); setq Min Mid Max
  26.                 (and (not Range) (setq Range (list (- (cadr MMM) inc) (+ (cadr MMM) inc))))
  27.                 (and (not c) (setq c (car colRange)))
  28.                 (while (apply '<= (mapcar 'abs (list (apply '- Range) (apply '- (list (car MMM) (caddr MMM))))))               
  29.                         (foreach x NumVals
  30.                                 (and
  31.                                         (not (apply '<= (list (car Range) x (cadr Range))))
  32.                                         (setq enx (nth (vl-position x Numvals) Lst))
  33.                                         (or
  34.                                                 (and (assoc 62 enx) (entmod (subst (cons 62 c) (assoc 62 enx) enx)))
  35.                                                 (entmod (append enx (list (cons 62 c))))
  36.                                         )
  37.                                 ); and
  38.                         ); foreach
  39.                         (setq Range (apply (function (lambda (a b) (list (- a (/ inc 2)) (+ b (/ inc 2))))) Range))
  40.                         (setq c (rem (+ c colInc) (cadr colRange)))
  41.                         (cond (= 0 c) (setq c (car colRange)))
  42.                 ); while
  43.         ); progn
  44. ); if
  45. (princ)
  46. );| defun |; (vl-load-com) (princ)
  47. (defun GetNumVal ( str / delimUsed )
  48. (if (eq 'STR (type str))
  49.         (atof
  50.                 (vl-string-subst "." ","
  51.                         (apply 'strcat
  52.                                 (vl-remove 'nil
  53.                                         (mapcar
  54.                                                 (function
  55.                                                         (lambda (x)
  56.                                                                 (if (member x (mapcar 'chr (vl-string->list "1234567890.,")))
  57.                                                                         (cond
  58.                                                                                 ((and (member x '("." ",")) (not delimUsed) (setq delimUsed T))
  59.                                                                                         x
  60.                                                                                 )
  61.                                                                                 ((and (member x '("." ",")) delimUsed) nil)
  62.                                                                                 (T x)
  63.                                                                         ); cond
  64.                                                                 ); if
  65.                                                         ); lambda
  66.                                                 ); funciton
  67.                                                 (mapcar 'chr (vl-string->list str))
  68.                                         ); mapcar
  69.                                 ); vl-remove
  70.                         ); apply 'strcat
  71.                 ); vl-string-subst
  72.         ); atof
  73. ); if
  74. ); defun GetNumVal

它从中间值对称地改变颜色。
回复

举报

3

主题

7

帖子

4

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 17:34:26 | 显示全部楼层
好的,如何附着dwg?
回复

举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 17:38:52 | 显示全部楼层
 
看到这个了吗
编辑:aa任何方式。。
[code](defun C:test(/CustomPrompt ChangeCol inputLst SSX i Lst Start End n C)(defun CustomPrompt(/Lst R C)(setq Lst(list(cons“nInc”10)(cons“cInc”1)(cons“cMin”10)(cons“cMax”250))(not(initget(+2 4)“Color”)(not(setq R(getreal(strcat“\n指定增量或[颜色]<”(rtos(cdr(assoc“nInc”Lst))2)>))))(setq R(cdr(ass OC“nInc”Lst))((numberp R)(setq Lst(subst(cons“nInc”R)(assoc“nInc”Lst)Lst))(=“Color”R)(foreach x(mapcar‘list’(“cInc”“cMin”“cMax”“nInc”)”(“Specify Color increment”“Specify min Color range”“Specify max Color range”“Specify increment”))(和(not(initget(+2 4))(setq c(getint(strcat“\ n”(cadr x)”<(itoa(cdr(assoc(car x)Lst)))“>)))(如果(not(和(wcmatch(car x)“c*”(>=c 256))(setq Lst(subst(cons(car x)c)(assoc(car x)Lst)Lst)));cond Lst);defun CustomPrompt(defun ChangeCol(enx col)(或(and(assoc 62 enx)(entmod(subst(cons 62 col)(assoc 62 enx)enx)))(entmod(append enx(list(cons 62 col))))));defun ChangeCol(if(and ChangeCol CustomPrompt(setq inputLst(CustomPrompt))(setq SSX(ssget“_X”(list(cons 0“TEXT”)(if(=1(getvar'cvport))(cons 410(getvar'ctab))'(410。“Model”)));和(progn(repeat(setq i(sslength SSX))(setq Lst(cons(cdr(assoc 5(entget(ssname SSX(setq i(1-i \107;))))))));重复(setq Lst(mapcar’list)(setq Lst(vl remove if(function(lambda(x))(=0.0(atof(cdr(assoc 1(entget(handent x k)а)а)Lst))(mapcar(function(lambda(x)(atof(cdr(assoc 1(entget(handent xа)))))))))))));setq Lst);setq Lst(setq Lst(vl sort Lst(function(lambda(a b)(<(cadr a)(cadr b kЮ)Ю))(setq Start(cadar Lst))(setq End(last(last Lst)))(and(not n)(setq n Start))(and(not c)(setq c(cdr(assoc“cMin”inputLst))))(而(
回复

举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:41:02 | 显示全部楼层
很好,我想你一直在外面看太阳落山,经常做出那些颜色。在Civ3d中,它们有一种称为彩虹的样式,轮廓非常相似。
回复

举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁體中文

GMT+8, 2025-3-13 12:37 , Processed in 1.600986 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表