如何删除文本的一部分
我在图纸中有一个文本,想删除其中的一部分这是文本
xxxx#xxxx
我想检测#然后删除和之后的所有字母都是这样的
xxxx年
这是怎么回事?
谢谢 在替换字符串之前使用函数substr和entmod(如果不是注释性文本) 您可能需要完整的代码
(defun c:Test (/ ss)
;;; Tharwat 20. May . 2012 ;;;
(if (setq ss (ssget "_:L" '((0 . "TEXT,MTEXT"))))
((lambda (inc / sn p ent)
(while
(setq sn (ssname ss (setq inc (1+ inc))))
(if (setq p (vl-position
(ascii "#")
(vl-string->list
(cdr (assoc 1 (setq ent (entget sn))))
)
)
)
(entmod
(subst (cons 1 (substr (cdr (assoc 1 (entget sn))) 1 p))
(assoc 1 ent)
ent
)
)
)
)
)
-1
)
)
(princ)
)
另一个
(defun RemChar(ch / ss p str e)
(cond ((and
(setq ss (ssget "_:L" '((0 . "TEXT,MTEXT"))))
(repeat (sslength ss)
(if (setq p (vl-string-position
(ascii ch)
(setq str(cdr (assoc 1
(entget (setq e (ssname ss 0))))))))
(vla-put-textstring
(vlax-ename->vla-object e)
(substr str 1 p)
))
(ssdel e ss))
)
)
)
(princ))
Tharwat,为什么要将字符串转换为列表?
因为函数vl position需要一个列表,而ascii“#”将返回一个数值,所以现在两者都是数字。
vl-string-position
Looks for a character with the specified ASCII code in a string
我的朋友,不需要将字符串转换为列表。 这是正确的,如果我使用vl字符串位置,但我使用vl位置 使用vl string position代替vl position,同样的结果不需要转换字符串的开销
只是说。。。。。
好的,当然可以
给出此错误
; error: bad argument type: stringp nil
页:
[1]
2