需要帮助-警报/警告lisp
我需要一个lisp来提醒/警告。请参阅以下文本格式(2x6#6 X 20'-0“EF)。当最后两个字母为EF且前两个字母的前缀不是2x时,此lisp需要发出警报。我不能每次都在cad文件中检查EF最后一次出现时丢失的文本(2x)在哪里。
注意:如果最后两个字母是EF,则前两个字母的前缀必须是2x。
有人能帮我解决这个Lisp程序的问题吗?那将不胜感激。 这
(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 !")
)
嗨Tharwat。。谢谢你的帮助。。但文本格式在许多地方会有所不同。示例2x6#6 X 20'-0“EF
以蓝色突出显示的文本将不同。。。
此外,我想再添加两个文本EF、T&B、EW,但文本前缀2x将保持不变。 试试这个。
(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)
)
嗨,塔瓦,谢谢你的尝试。。但它不起作用。。。当文本EF(或)T&B(或)EW位于最后一个字母中,但前缀中没有2x时,会发出警报。。。 为供参考,我列出了以下示例文本。。。
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)前缀的蓝色文本。。。我希望现在你能理解我的期望。。。抱歉给你带来了困惑。 我需要知道开头和结尾字符才能匹配。
之前发布的例程是针对单文本而不是多行文字的,这是供您参考的。 Hi Tharwat,起始字符将发生变化(如数字1到300),结束字符是恒定的,它们来自以下三个EF(或)T和B(或)EW,它们都是单文本。。不是多行文字。 好的,忍耐一下。
所以这五个红色的字符串是恒定的,就是你想在选择中突出显示的每个字符串的末尾?
那么开头呢?这不是必需的吗? 是的,正确。。。开始文本将像现在不需要的数字一样变化。但是lisp需要检查前缀中是否有文本(2x)。如果不是,lisp将发出警报,如“文本(2x)丢失”
页:
[1]
2