dreams 发表于 2022-7-5 22:51:20

需要帮助-警报/警告lisp

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

Tharwat 发表于 2022-7-5 22:59:47



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

dreams 发表于 2022-7-5 23:00:58

嗨Tharwat。。谢谢你的帮助。。但文本格式在许多地方会有所不同。示例2x6#6 X 20'-0“EF
 
以蓝色突出显示的文本将不同。。。
 
此外,我想再添加两个文本EF、T&B、EW,但文本前缀2x将保持不变。

Tharwat 发表于 2022-7-5 23:05:29

试试这个。
 

(defun c:Test (/ l sad ss)
;;    Tharwat 25.June.2014      ;;
(setq l (mapcar 'vl-string->list '("EF" "T&B" "EW")))
(if (setq sad (ssadd)
         ss(ssget "_:L" '((0 . "TEXT")))
   )
   ((lambda (i / sn s txt st)
      (while (setq sn (ssname ss (setq i (1+ i))))

      (if
          (or
            (member (vl-string->list
                      (setq
                        st (substr (setq txt (cdr (assoc 1 (entget sn))))
                                 (1- (strlen txt))
                                 2
                           )
                      )
                  )
                  l
            )
            (member (vl-string->list (substr txt (- (strlen txt) 2) 3))
                  l
            )
          )
         (ssadd sn sad)
      )
      )
    )
   -1
   )
)
(sssetfirst nil sad)
(princ)
)

dreams 发表于 2022-7-5 23:14:23

嗨,塔瓦,谢谢你的尝试。。但它不起作用。。。当文本EF(或)T&B(或)EW位于最后一个字母中,但前缀中没有2x时,会发出警报。。。

dreams 发表于 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)前缀的蓝色文本。。。我希望现在你能理解我的期望。。。抱歉给你带来了困惑。

Tharwat 发表于 2022-7-5 23:21:44

我需要知道开头和结尾字符才能匹配。
之前发布的例程是针对单文本而不是多行文字的,这是供您参考的。

dreams 发表于 2022-7-5 23:24:27

Hi Tharwat,起始字符将发生变化(如数字1到300),结束字符是恒定的,它们来自以下三个EF(或)T和B(或)EW,它们都是单文本。。不是多行文字。

Tharwat 发表于 2022-7-5 23:30:52

好的,忍耐一下。
 
所以这五个红色的字符串是恒定的,就是你想在选择中突出显示的每个字符串的末尾?
那么开头呢?这不是必需的吗?

dreams 发表于 2022-7-5 23:36:15

是的,正确。。。开始文本将像现在不需要的数字一样变化。但是lisp需要检查前缀中是否有文本(2x)。如果不是,lisp将发出警报,如“文本(2x)丢失”
页: [1] 2
查看完整版本: 需要帮助-警报/警告lisp