乐筑天下

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

[编程交流] 需要帮助-警报/警告lisp

[复制链接]

6

主题

38

帖子

32

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 22:51:20 | 显示全部楼层 |阅读模式
我需要一个lisp来提醒/警告。请参阅以下文本格式(2x6#6 X 20'-0“EF)。当最后两个字母为EF且前两个字母的前缀不是2x时,此lisp需要发出警报。
 
我不能每次都在cad文件中检查EF最后一次出现时丢失的文本(2x)在哪里。
 
注意:如果最后两个字母是EF,则前两个字母的前缀必须是2x。
 
有人能帮我解决这个Lisp程序的问题吗?那将不胜感激。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 22:59:47 | 显示全部楼层

  1. (setq txt "2x6 #6 X 20'-0" EF")
  2. (if (and (eq (substr txt 1 2) "2x")
  3.         (eq (substr txt (1- (strlen txt)) 2) "EF")
  4.    )
  5. (alert "Chars found in the text string")
  6. (alert "Could not find the correct in that text string !")
  7. )
回复

使用道具 举报

6

主题

38

帖子

32

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 23:00:58 | 显示全部楼层
嗨Tharwat。。谢谢你的帮助。。但文本格式在许多地方会有所不同。示例2x6#6 X 20'-0“EF
 
以蓝色突出显示的文本将不同。。。
 
此外,我想再添加两个文本EF、T&B、EW,但文本前缀2x将保持不变。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:05:29 | 显示全部楼层
试试这个。
 
  1. (defun c:Test (/ l sad ss)
  2. ;;    Tharwat 25.June.2014        ;;
  3. (setq l (mapcar 'vl-string->list '("EF" "T&B" "EW")))
  4. (if (setq sad (ssadd)
  5.            ss  (ssget "_:L" '((0 . "TEXT")))
  6.      )
  7.    ((lambda (i / sn s txt st)
  8.       (while (setq sn (ssname ss (setq i (1+ i))))
  9.         (if
  10.           (or
  11.             (member (vl-string->list
  12.                       (setq
  13.                         st (substr (setq txt (cdr (assoc 1 (entget sn))))
  14.                                    (1- (strlen txt))
  15.                                    2
  16.                            )
  17.                       )
  18.                     )
  19.                     l
  20.             )
  21.             (member (vl-string->list (substr txt (- (strlen txt) 2) 3))
  22.                     l
  23.             )
  24.           )
  25.            (ssadd sn sad)
  26.         )
  27.       )
  28.     )
  29.      -1
  30.    )
  31. )
  32. (sssetfirst nil sad)
  33. (princ)
  34. )
回复

使用道具 举报

6

主题

38

帖子

32

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 23:14:23 | 显示全部楼层
嗨,塔瓦,谢谢你的尝试。。但它不起作用。。。当文本EF(或)T&B(或)EW位于最后一个字母中,但前缀中没有2x时,会发出警报。。。
回复

使用道具 举报

6

主题

38

帖子

32

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 23:14:38 | 显示全部楼层
为供参考,我列出了以下示例文本。。。
 
2x6#6 X 20'-0“H EF
6#6 X 8'-4“T&B
东经6#5 X 9'-0“
6#4 X 20'-0 H EF
 
lisp将只找到上面没有文本(2x)前缀的蓝色文本。。。我希望现在你能理解我的期望。。。抱歉给你带来了困惑。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:21:44 | 显示全部楼层
我需要知道开头和结尾字符才能匹配。
之前发布的例程是针对单文本而不是多行文字的,这是供您参考的。
回复

使用道具 举报

6

主题

38

帖子

32

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 23:24:27 | 显示全部楼层
Hi Tharwat,起始字符将发生变化(如数字1到300),结束字符是恒定的,它们来自以下三个EF(或)T和B(或)EW,它们都是单文本。。不是多行文字。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:30:52 | 显示全部楼层
好的,忍耐一下。
 
所以这五个红色的字符串是恒定的,就是你想在选择中突出显示的每个字符串的末尾?
那么开头呢?这不是必需的吗?
回复

使用道具 举报

6

主题

38

帖子

32

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 23:36:15 | 显示全部楼层
是的,正确。。。开始文本将像现在不需要的数字一样变化。但是lisp需要检查前缀中是否有文本(2x)。如果不是,lisp将发出警报,如“文本(2x)丢失”
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 03:33 , Processed in 0.792533 second(s), 72 queries .

© 2020-2025 乐筑天下

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