找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1391|回复: 9

[LISP函数]:如何自动判别图中字符并标示(另加一条件,比较难处理?)

[复制链接]
发表于 2005-11-9 20:33:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
请高手帮忙,如何在lisp中实现如下功能:自动选择图中所有文字,判断文字中是否含有%%130,在%%130后紧跟字符8,10,12,如%%13010,如果%%130后面不是10,12,如%%1302,%%13011,等等,程序会自动识别并且标示为红色?

忘记了加一个条件:就是%%130可能出现在字符串的任何位置,如%%13010-200,2%%13012,而且可能一个字符串里面可能有两个%%130,如2%%13012+2%%13010,这样好像就很难处理了。我的意思是只要%%130后面不是跟的8,10,12,而不管%%130处于字符串中的任何位子,都能标示为红色。如3%%13021+2%%13012,3%%13012+2%%13011。这个好像比较难 ?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 11286个

财富等级: 富甲天下

发表于 2005-11-9 23:31:58 | 显示全部楼层
程序:
[php]
(DEFUN C:TXTRED ()
(IF (SETQ SS (SSGET "X" '((0 . "TEXT")))) (PROGN
  (SETQ SL (SSLENGTH SS) I 0)
  (REPEAT SL
   (SETQ ENT (ENTGET (SSNAME SS I)) I (1+ I)
         STR (CDR (ASSOC 1 ENT)))
   (IF (NOT (OR (WCMATCH STR "*%%13010*") (WCMATCH STR "*%%13012")))
    (IF (ASSOC 62 ENT)
     (SETQ ENT (SUBST (CONS 62 1) (ASSOC 62 ENT) ENT))
     (SETQ ENT (APPEND ENT (LIST (CONS 62 1))))
    )
   )
   (ENTMOD ENT)
  )
))
(PRINC)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-10 01:15:30 | 显示全部楼层
楼上修改:
  1. [FONT=courier new]
  2. (DEFUN C:TXTRED        ()
  3.   (IF (SETQ SS (SSGET "X" '((0 . "TEXT"))))
  4.     (PROGN
  5.       (SETQ I -1)
  6.       (while (setq s1 (SSNAME SS (setq I (1+ I))))
  7.         (setq STR (CDR (ASSOC 1 (entget s1))))
  8.         (IF (= (substr str 1 5) "%%130")
  9.           (progn
  10.             (if        (and (/= (substr str 6) "10")
  11.                      (/= (substr str 6) "12")
  12.                      (/= (substr str 6) "8")
  13.                 )
  14.               (command "chprop" s1 "" "c" 1 "")
  15.             )
  16.           )
  17.         )
  18.       )
  19.     )
  20.   )
  21.   (PRINC)
  22. )
  23. [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-10 03:15:57 | 显示全部楼层
呵呵,我最爱偷懒了,写程序也是

  1. ;| 自动判别图中字符并标示------by 狂刀.2005.11
  2. 说明: 支持mtext,text.
  3. |;
  4. (defun c:tt ()
  5.   (IF (setq ss (ssget '((0 . "*TEXT") (1 . "%%1308,%%13010,%%13012"))))
  6.     (command "chprop" SS "" "c" 1 "")
  7.   )
  8.   (PRINC)
  9. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-10 07:58:40 | 显示全部楼层
最初由 狂刀 发布
[B]呵呵,我最爱偷懒了,写程序也是
;| 自动判别图中字符并标示------by 狂刀.2005.11
说明: 支持mtext,text.
|;
(defun c:tt ()
  (IF (setq ss (ssget '((0 . "*TEXT") (1 . "%%1308,%%13010,%%13012"))... [/B]

简洁,但和题意要求反了!

  1. [FONT=courier new]
  2. (DEFUN C:TXTRED        ()
  3.   (IF (SETQ SS (SSGET "X" '((0 . "*TEXT") (1 . "%%130*"))))
  4.     (PROGN      
  5.       (command "_.select" ss "_r" (ssget "P" '((1 . "%%1308,%%13010,%%13012"))) "")
  6.       (setq ss (ssget "p"))
  7.       (command "chprop" ss "" "c" 1 "")
  8.     )
  9.   )
  10.   (PRINC)
  11. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-10 08:49:14 | 显示全部楼层

Re: [LISP函数]:如何自动判别图中字符并标示?

最初由 shona521 发布
[B]请高手帮忙,如何在lisp中实现如下功能:自动选择图中所有文字,判断文字中是否含有%%130,在%%130后紧跟字符8,10,12,如%%13010,如果%%130后面不是10,12,如%%1302,%%13011,等等,程序会自动识别并且标示为红色? [/B]


  对钢筋标注的查错。呵呵
  更完整的方法是取得%%130后面的一位数字或两位数字并判断是否为正确的钢筋直径。将正确的钢筋直径构造个表应该是合适的编程思路。
  当然,这里面还涉及到钢筋级别、钢筋根数、钢筋间距等的问题,不过那都是专业问题。不在编程讨论之列。

  补:俺的显筋面积程序里是按上面的方法处理的。但按楼主的题意,应该是狂刀的方法是更合适的。就是在XYP的减去的选择集中增加过滤。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-10 12:39:08 | 显示全部楼层
还可以这样:

  1. ;| 自动判别图中字符并标示------by 狂刀.2005.11
  2. 说明: 支持mtext,text.
  3. |;
  4. (defun c:tt ()
  5.   (IF (and (setq ss (ssget '((0 . "*TEXT") (1 . "%%130*"))))
  6.            (setq ss (ssget "p" '((-4 . "< AND")(1 . "~%%1308")(1 . "~%%13010")(1 . "~%%13012")(-4 . "AND >")))))
  7.     (command "chprop" SS "" "c" 1 "")
  8.   )
  9.   (PRINC)
  10. )


;;还有,下面这个可以在选取的时候就看到有没有符合要求的文字

  1.   [FONT=courier new]
  2. (defun c:tt ()
  3.   (IF (setq ss (ssget '((0 . "*TEXT")(-4 . "< AND")(1 . "%%130*")(1 . "~%%1308")(1 . "~%%13010")(1 . "~%%13012")(-4 . "AND >"))))
  4.     (command "chprop" SS "" "c" 1 "")
  5.   )
  6.   (PRINC)
  7. )
  8.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-10 12:57:59 | 显示全部楼层
呵呵,狂刀这招真的是杀鸡用了宰牛刀。
把前面讨论的“支持通配符的文字”中的部分用在这里了。
http://www.xdcad.net/forum/showthread.php?s=&threadid=478635
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-10 22:00:15 | 显示全部楼层
好,它兄弟,今晚我有动力了。我写程序纯粹为了消遣,有时候逛论坛,东看看西看看,看到有兴趣的就写几个,很多时候看的多,想的多,但是来不及写。那个“支持通配符的文字”原料上和ssget的fil是一样,但是应用上还是有差别。以前也写过几个,不过很可惜没有令自己比较满意的。
今晚有事情干了:)
那个程序其实有两个方向
1,是遵循高级语言的正则表达式。但是用lisp写有点力不从心。不是我力不从心,是lisp。既然高级语言能做到,何不利用一下?
2,遵循wcmatch的规则,这个还是好写的,关键是如何规定分段规则,aeo版主以前提过这个命题,应者寥寥,估计能写出来的人也不多吧?
它兄弟,是不是也有兴趣?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-13 11:50:48 | 显示全部楼层
感谢各位大虾的热情帮助,但我忘记了加一个条件:就是%%130可能出现在字符串的任何位置,如%%13010-200,2%%13012,而且可能一个字符串里面可能有两个%%130,如2%%13012+2%%13010,这样好像就很难处理了。我的意思是只要%%130后面不是跟的8,10,12,而不管%%130处于字符串中的任何位子,都能标示为红色。如3%%13021+2%%13012,3%%13012+2%%13011。这个好像比较难 ?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-21 21:52 , Processed in 0.186950 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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