找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 374|回复: 3

[求助] 请教一下 此查找文字的代码如何修改才能忽略输入文字的大小写

[复制链接]
发表于 2019-3-31 12:15:42 | 显示全部楼层 |阅读模式

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

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

×
请教一下 此查找文字的代码如何修改才能忽略输入文字的大小写

比如我想查询ZKX100          在输入zkx的时候也能查询出结果




(defun sslist (ss / i ll)(setq i -1)(repeat (sslength ss)(setq ll(cons (ssname ss  (setq i(1+ i)))ll))))

(defun c:see ( / str   s2 ssme info  opp adn1 ad0 ad2 counter pp conte ad1 adn1 adn0sl)(setq *error* see_err)(setq sl nil)(if (= ostr nil)(setq ostr "#"))(mapcar 'princ  (list "\n请输入查找的内容 <" ostr ">:"))(setq str(getstring ))(if (= str "")(setq str ostr)(setq ostr str))

(setq searchword (strcat "*" str "*"))

(setq s1 (ssget  "x"
  (list '(-4 . "<or")
'(-4 . "<AND")
     '(0 . "text,mtext") (cons 1 searchword)
'(-4 . "AND>")
'(-4 . "<AND")
     '(0 . "ATTDEF")     (cons 2 searchword)
'(-4 . "AND>")

;;;'(-4 . "<AND")
;;     '(0 . "MULTILEADER")     (cons 304 searchword)
;;'(-4 . "AND>")   ;;;;不知道怎么定位文字,所以没加进去

     '(-4 . "or>"))
))

(if (/= s1 nil)(setq sl(sslist s1)))

(setq ss2 (ssget "x" '((0 . "insert") (66 . 1)) ))
(if (/= ss2 nil)
(progn
(setq i -1)
(repeat (sslength ss2)
(setq en(ssname ss2 (setq i(1+ i))))
(setq nextobj (entnext en))
(setq adn0 (cdr(assoc 0(entget nextobj))))
(while (= adn0 "ATTRIB")

(setq adn1(obj2str nextobj))
;(setq adn1(cdr(assoc 1 (entget nextobj))))
(if (wcmatch adn1 searchword )
(progn
(if (= sl nil)(setq sl(list nextobj))
(setq sl(cons nextobj sl)))
)
)

(setq nextobj (entnext nextobj))
(setq adn0(cdr(assoc 0(entget nextobj))))
)
)
))

(setq x (length sl))

(setq sl(vl-sort sl (function(lambda (x1 x2)
      (< (car(cdr(assoc 10(entget x1))))
         (car(cdr(assoc 10(entget x2)))))
      )))
)
(setq sl(vl-sort sl (function(lambda (x1 x2)
      (> (cadr(cdr(assoc 10(entget x1))))
         (cadr(cdr(assoc 10(entget x2)))))
      )))
)



(setvar 'cmdecho 0)   

(setq i 0)

(while (< i x)

(setq ssme(nth i sl))
(setq info(entget ssme))
(setq ad0 (cdr(assoc 0 info)))


(cond

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
((numberp(vl-string-search "ATTDEF" ad0))
(setq ad2(cdr(assoc 2 info)))
(if (/= (vl-string-search  (strcase str) (strcase ad2))nil)
(progn
(princ (strcat "\n查找结果: " ad2))
(setq counter (1+ counter))

(setq pp(cornerp ssme))
(setvar 'NOMUTT 1)
;(command "zoom" (car pp)(cadr pp))
;(command "zoom" "s" "0.05x")

(IF (= (EQUAL PP OPP) NIL)
(command "zoom"
(mapcar '+ (car pp) (mapcar '(lambda (x)  (* x 3))(mapcar '-  (cadr pp)(car pp)) ) )
(mapcar '+ (cadr pp) (mapcar '(lambda (x) (* x 3))(mapcar '-  (car pp)(cadr pp)) ) )
))

(setvar 'NOMUTT 0)
(redarrow (mapcar '/ (mapcar '+ (car pp)(cadr pp)) (list 2 2 2)))


)
))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
((numberp(vl-string-search "TEXT" ad0))

(setq ad1(obj2str ssme))

(if

(/= (vl-string-search  (strcase str) (strcase ad1))nil)


(progn
(princ (strcat "\n查找结果: " ad1))
(setq pp (text-box info 0))
(setvar 'NOMUTT 1)

(IF (= (EQUAL PP OPP) NIL)

(command "zoom"
(mapcar '+ (car pp) (mapcar '(lambda (x)  (* x 3))(mapcar '-  (cadr pp)(car pp)) ) )
(mapcar '+ (cadr pp) (mapcar '(lambda (x) (* x 3))(mapcar '-  (car pp)(cadr pp)) ) )
))

(setvar 'NOMUTT 0)

(redarrow (mapcar '/ (mapcar '+ (car pp)(cadr pp)) (list 2 2 2)))


)
)) ;if,progn,cond()

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
((= ad0 "ATTRIB")
(progn
(setq adn1(obj2str ssme))
(princ (strcat "\n查找结果: " adn1))
(setq pp(cornerp ssme))

(setvar 'NOMUTT 1)

(IF (= (EQUAL PP OPP) NIL)
(command "zoom"
(mapcar '+ (car pp) (mapcar '(lambda (x)  (* x 3))(mapcar '-  (cadr pp)(car pp)) ) )
(mapcar '+ (cadr pp) (mapcar '(lambda (x) (* x 3))(mapcar '-  (car pp)(cadr pp)) ) )
))

(setvar 'NOMUTT 0)
(redarrow (mapcar '/ (mapcar '+ (car pp)(cadr pp)) (list 2 2 2)))

)  progn

)
)   ;(cond)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(if (= 1(- x i))(princ "\nThe last result!"))
(setq conte(getstring "\n回退 or 查找下一个 [B/Yes/N]:<下一个>"))
(if (= (strcase conte) "B")
(progn
(setq i (- i 2))  
(if(< i 0)
(progn
(setq i -1)
(princ "\n此数据为第一个数据!"))
)
))
(if (= (strcase conte) "N")(exit)(prin1))
(SETQ OPP PP)
(setq i(1+ i))
)
(princ "\nThe search is finished!")
(if (= sl nil)(princ "\n没有找到该文字内容!"))
(redraw)
;(UNDOE)
(setvar 'cmdecho 1)
(prin1)
)
;(PRINC "\nThe program if made by Caoyu\n")
(PRIN1)


(defun text-box ( enx off / b h j l m n o p r w )
    (if
        (setq l
            (cond
                (   (= "TEXT" (cdr (assoc 0 enx)))
                    (setq b (cdr (assoc 10 enx))
                          r (cdr (assoc 50 enx))
                          l (textbox enx)
                    )
                    (list
                        (list (- (caar  l) off) (- (cadar  l) off))
                        (list (+ (caadr l) off) (- (cadar  l) off))
                        (list (+ (caadr l) off) (+ (cadadr l) off))
                        (list (- (caar  l) off) (+ (cadadr l) off))
                    )
                )
                (   (= "MTEXT" (cdr (assoc 0 enx)))
                    (setq n (cdr (assoc 210 enx))
                          b (trans  (cdr (assoc 10 enx)) 0 n)
                          r (angle '(0.0 0.0 0.0) (trans (cdr (assoc 11 enx)) 0 n))
                          w (cdr (assoc 42 enx))
                          h (cdr (assoc 43 enx))
                          j (cdr (assoc 71 enx))
                          o (list
                                (cond
                                    ((member j '(2 5 8)) (/ w -2.0))
                                    ((member j '(3 6 9)) (- w))
                                    (0.0)
                                )
                                (cond
                                    ((member j '(1 2 3)) (- h))
                                    ((member j '(4 5 6)) (/ h -2.0))
                                    (0.0)
                                )
                            )
                    )
                    (list
                        (list (- (car o)   off) (- (cadr o)   off))
                        (list (+ (car o) w off) (- (cadr o)   off))
                        (list (+ (car o) w off) (+ (cadr o) h off))
                        (list (- (car o)   off) (+ (cadr o) h off))
                    )
                )
            )
        )
        (   (lambda ( m ) (mapcar '(lambda ( p ) (mapcar '+ (mxv m p) b)) l))
            (list
                (list (cos r) (sin (- r)) 0.0)
                (list (sin r) (cos r)     0.0)
               '(0.0 0.0 1.0)
            )
        )
    )
)

;; Matrix x Vector  -  Vladimir Nesterovsky
;; Args: m - nxn matrix, v - vector in R^n

(defun mxv ( m v )
    (mapcar '(lambda ( r ) (apply '+ (mapcar '* r v))) m)
)

(defun obj2str (obj)
(vlax-get (vlax-ename->vla-object obj) 'TextString)
)

(defun redarrow (pting)
(redraw)
(setq arrowsize (* 0.005 (getvar "viewsize")))
(setq rowpt1 (polar pting  (angtof "240") (* arrowsize 24)))
(setq rowpt2 (polar rowpt1 0 (* arrowsize 9)))
(setq rowpt3 (polar rowpt2 (angtof "270") (* arrowsize 20)))
(setq rowpt4 (polar rowpt3 (angtof "60") (* arrowsize 6)))
(setq rowpt5 (polar rowpt4 (angtof "300") (* arrowsize 6)))
(setq rowpt6 (polar rowpt5 (angtof "90") (* arrowsize 20)))
(setq rowpt7 (polar rowpt6 0 (* arrowsize 9)))
(setq rowpt8 (polar rowpt7 (angtof "120") (* arrowsize 24)))
(grvecs (list
1 pting rowpt1
1 rowpt1 rowpt2
1 rowpt2 rowpt3
1 rowpt3 rowpt4
1 rowpt4 rowpt5
1 rowpt5 rowpt6
1 rowpt6 rowpt7
1 rowpt7 rowpt8
1 rowpt8 pting)
)
(prin1)
)
(defun see_err (s)
(redraw)
(setvar 'NOMUTT 0)
;(UNDOE)
(setvar "cmdecho" 1)
(prin1))

(defun sslist (ss / i ll)(setq i -1)(repeat (sslength ss)(setq ll(cons (ssname ss  (setq i(1+ i)))ll))))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 3904个

财富等级: 富可敌国

发表于 2019-4-1 00:02:44 | 显示全部楼层
谢谢楼主分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 9个

财富等级: 恭喜发财

发表于 2019-4-1 10:27:10 | 显示全部楼层
本帖最后由 satan421 于 2019-4-1 10:30 编辑

;;选择集改一下
(setq        s1 (ssget "x"
                  (list        '(-4 . "<or")
                        '(-4 . "<AND")
                        '(0 . "text,mtext")
                        (cons 1 searchword)
                        '(-4 . "AND>")
                        '(-4 . "<AND")
                        '(0 . "text,mtext")
                        (cons 1 (strcase searchword))
                        '(-4 . "AND>")
                        '(-4 . "<AND")
                        '(0 . "ATTDEF")
                        (cons 2 searchword)
                        '(-4 . "AND>")
                        '(-4 . "<AND")
                        '(0 . "ATTDEF")
                        (cons 2 (strcase searchword))
                        '(-4 . "AND>")
                         (-4 . "or>")
                  )
           )
  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2019-4-1 11:59:31 | 显示全部楼层
str是你要查询的字符串
(ssget (list (cons 1 (strcat str "*," (strcase str) "*"))))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 09:09 , Processed in 0.227467 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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