乐筑天下

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

[编程交流] Entmod更改文本对象c

[复制链接]

12

主题

25

帖子

13

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 00:04:29 | 显示全部楼层 |阅读模式
我有一个有许多级别值(作为文本对象)的图形。我想使用entmod来改变文本对象的颜色,这取决于它是高于还是低于某些级别。
 
我需要用entmod替换(打印“红色”)和(打印“绿色”)行,这样做-有人能帮我完成这个lisp例程吗?
 
  1. (defun c:levbound ()
  2. ;ask for lower and upper bounds
  3. (setq lower (getreal "\nLower bound...?"))
  4. (setq upper (getreal "\nUpper bound...?"))
  5. ;select text objects to be evaluated
  6. (setq ss (ssget '((0 . "TEXT"))))
  7. (setq l (sslength ss))
  8. (setq c 0)
  9. ;evaluate each text object
  10. (while (/= c l)
  11. (setq ent (ssname ss c))
  12. (setq elist (entget ent))
  13. (setq txt (cdr (assoc 1 elist)))
  14. (setq val (atof txt))
  15. ;if value lower than the lower bound
  16. (if (< lower val)
  17.   ;***then change text object colour to red***
  18.   (print "red")
  19.   ;else, is it higher than the upper bound?
  20.    (if (> upper val)
  21.    ;***then change text object colour to green***
  22.    (print "green")
  23.    )
  24. )
  25. (setq c (+ 1 c))
  26. )
  27. )
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 00:31:41 | 显示全部楼层
颜色存储在DXF代码62下;您需要检查当前是否未设置为ByLayer。
  1. (if (< lower val)
  2. ;***then change text object colour to red***
  3. (progn
  4. (print "red")
  5. (entmod (if (assoc 62 elist)
  6.           (subst '(62 . 1) (assoc 62 elist) elist)
  7.           (cons  '(62 . 1) elist)))
  8. )
  9. ...
回复

使用道具 举报

12

主题

25

帖子

13

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 00:47:13 | 显示全部楼层
谢谢你,米尔恰,效果很好。
 
我注意到我的大于/小于错误!
 
  1. (defun c:levbnd ()
  2. ;ask for lower and upper bounds
  3. (setq lower (getreal "\nLower bound...?"))
  4. (setq upper (getreal "\nUpper bound...?"))
  5. ;select text objects to be evaluated
  6. (setq ss (ssget '((0 . "TEXT"))))
  7. (setq l (sslength ss))
  8. (setq c 0)
  9. ;evaluate each text object
  10. (while (/= c l)
  11. (setq ent (ssname ss c))
  12. (setq elist (entget ent))
  13. (setq txt (cdr (assoc 1 elist)))
  14. (setq val (atof txt))
  15. ;if value lower than the lower bound
  16. (if (< val lower )
  17.   ;then change text object colour to red
  18.    (entmod (if (assoc 62 elist)
  19.    (subst '(62 . 1) (assoc 62 elist) elist)
  20.    (cons  '(62 . 1) elist)))
  21.   ;else, is it higher than the upper bound?
  22.    (if (> val upper )
  23.   ;then change text object colour to red
  24.     (entmod (if (assoc 62 elist)
  25.     (subst '(62 . 1) (assoc 62 elist) elist)
  26.     (cons  '(62 . 1) elist)))
  27.    )
  28. )
  29. (setq c (+ 1 c))
  30. )
  31. )
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 01:05:35 | 显示全部楼层
很高兴听到我的例子对你有用!不客气!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 21:30 , Processed in 1.087652 second(s), 60 queries .

© 2020-2025 乐筑天下

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