树櫴希德 发表于 2021-6-8 10:24:01

删除文字字母前后缀?

(vl-list->string(vl-remove-if-not '(LAMBDA (x) (and(<= x 57) (>= x 45)) )
(vl-string->list "a-12345.635asx")))
"-12345.635"

树櫴希德 发表于 2021-6-8 17:50:06

本帖最后由 树櫴希德 于 2023-8-6 11:08 编辑

关于选择含数字文字


(ssget '((0 . "text,mtext") (1 . "**")   )   ) ;选择字母数字结合文字和数字


(ssget '((0 . "text,mtext") (1 . "~*")   )   ) ;选择非纯数字文字和字母数字结合文字


(ssget '((0 . "text,mtext") (1 . "~**")   )   ) ;选择纯非数字文字

(ssget '((0 . "text,mtext") (1 . "~*[~--9]*")   )   );选择纯数字文字=====这个才是 用于求和
(ssget '((0 . "text,mtext") (1 . "[-1-9]*")   )   );选择纯数字文字(含负数)
;;功能:带提示、关键字、过滤表、选择错误时的提示并且会亮显所选对像的entsel
;;用法:( clh-entsel提示信息关键字过滤表选择错误时提示)
;;举例:(clh-entsel"\n请选择一个圆:""A B C"   '((0 . "circle"))"\n所选对像不符合要求!请重新选择:")

;(clh-entsel"\n请选择一个数字:""A B C"   '((0 . "TEXT")(1 . "~*[~-1-9]*"))"\n所选对像不符合要求!请重新选择:")

;;说明:过滤表与ssget的过滤表相同;函数由CLH521,2009.6.7参考了一些网上资料整理编写
(defun clh-entsel (msg key fil ermsg / el ss)
(while (and (setvar "errno" 0)
                  (not (and (setq el (apply '(lambda (msg key) (initget key) (entsel msg)) (list msg key)))
                                        (if (= (type el) 'str)
                                          el
                                             (if (setq ss (ssget (cadr el) fil))
                                                ss
                                                      (progn (princ ermsg) (setq ss nil))
                                             );if
                                          );if
                                        );and
                        );not
                        (/= (getvar "errno") 52)
               );and
);while
(if (= (type el) 'list) (redraw (car el) 3));亮显选中的对像
el
)
;clh-entsel函数完毕========================================================





meja 发表于 2023-8-5 19:13:47

这个函数很有作用
页: [1]
查看完整版本: 删除文字字母前后缀?