asos2000 发表于 2022-7-6 07:56:44

如何删除文本的一部分

我在图纸中有一个文本,想删除其中的一部分
这是文本
xxxx#xxxx
我想检测#然后删除和之后的所有字母都是这样的
xxxx年
 
这是怎么回事?
 
谢谢

Tharwat 发表于 2022-7-6 08:02:42

在替换字符串之前使用函数substr和entmod(如果不是注释性文本)

Tharwat 发表于 2022-7-6 08:07:49

您可能需要完整的代码
 

(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)
)

pBe 发表于 2022-7-6 08:13:27

另一个
(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,为什么要将字符串转换为列表?

Tharwat 发表于 2022-7-6 08:19:17

 
因为函数vl position需要一个列表,而ascii“#”将返回一个数值,所以现在两者都是数字。

pBe 发表于 2022-7-6 08:26:18

 
vl-string-position
Looks for a character with the specified ASCII code in a string
 
我的朋友,不需要将字符串转换为列表。

Tharwat 发表于 2022-7-6 08:30:19

这是正确的,如果我使用vl字符串位置,但我使用vl位置

pBe 发表于 2022-7-6 08:37:16

使用vl string position代替vl position,同样的结果不需要转换字符串的开销
 
只是说。。。。。

Tharwat 发表于 2022-7-6 08:43:39

 
好的,当然可以

asos2000 发表于 2022-7-6 08:49:14

 
给出此错误
; error: bad argument type: stringp nil
页: [1] 2
查看完整版本: 如何删除文本的一部分