“1”后面的字符是什么
“1*垂直弯曲”
您意识到,在区分这两者时,wcmatch会有复杂的问题。
“1*垂直弯曲”
“15*垂直弯曲”
当然,除非我们从最高数字开始[在本例中为16]
- (defun c:ghj (/ enx idx sel str [color="blue"]f n _Str[/color])
- (if (setq sel (ssget "_X"
- '((0 . "TEXT,MTEXT")
- (1 . "*VERTICAL BEND"))))
- (repeat (setq idx (sslength sel))
- (setq enx (entget (ssname sel (setq idx (1- idx))))
- str (assoc 1 enx)
- [color="blue"] _str (Cdr str)[/color])
- [color="blue"] (setq f nil
- n 16)
- (while (and (not f) (> n -1))
- (setq f (vl-some
- '(lambda (k)
- (if (wcmatch
- _str
- (strcat
- k
- "*VERTICAL BEND"))
- (atoi k)))
- (list (itoa n)
- (if (zerop n)
- "-0"
- (itoa (- n))))))
- (setq n (1- n))
- )
- (if (setq nstr
- (cond
- ((or (<= 0 f 6)
- (<= -6 f -1))
- "2 JOINT DEFLECTIONS")
- ((or (<= 7 f 16)
- (<= -16 f -7))
- "11.25%%D VERTICAL BEND")))[/color]
- (entmod
- (subst
- (cons 1 nstr)
- str enx
-
- )
- )
- )
- )
- )
- (princ)
- )
我注意到你从29跳到38?为什么?如果应该包括它,那么新的字符串是什么?
编辑:
[code](定义c:ghj(/enx idx sel str f n U str)(if(setq sel(ssget“_X”)((0。“TEXT,MTEXT”)(1.*垂直弯曲[color=“blue”],*水平弯曲[color]))(重复(setq idx(sslength sel))(setq enx(entget(ssname sel(setq idx(1-idx)))str(assoc 1 enx)U str(Cdr str))(setq f nil n [color=“blue”]51)[color=“blue”](if(wcmatch str“*水平弯曲”)(entmod(append enx(list(cons 8“Defpoints”)))(progn(while(and(not f)(>n-1))(setq f(vl some’(lambda(k)(if(wcmatch _str(strcat k“*垂直弯曲”)(atoi k)))(列表(itoa n)(if(zerop n)“-0”(itoa(-n 107;)а))(setq n(1-n)))(if(和f(setq nstr(cond((或( |