乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 11|回复: 11

[编程交流] 如何删除文本的一部分

[复制链接]

51

主题

481

帖子

457

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
262
发表于 2022-7-6 07:56:44 | 显示全部楼层 |阅读模式
我在图纸中有一个文本,想删除其中的一部分
这是文本
xxxx#xxxx
我想检测#然后删除和之后的所有字母都是这样的
xxxx年
 
这是怎么回事?
 
谢谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 08:02:42 | 显示全部楼层
在替换字符串之前使用函数substr和entmod(如果不是注释性文本)
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 08:07:49 | 显示全部楼层
您可能需要完整的代码
 
  1. (defun c:Test (/ ss)
  2. ;;; Tharwat 20. May . 2012 ;;;
  3. (if (setq ss (ssget "_:L" '((0 . "TEXT,MTEXT"))))
  4.    ((lambda (inc / sn p ent)
  5.       (while
  6.         (setq sn (ssname ss (setq inc (1+ inc))))
  7.          (if (setq p (vl-position
  8.                        (ascii "#")
  9.                        (vl-string->list
  10.                          (cdr (assoc 1 (setq ent (entget sn))))
  11.                        )
  12.                      )
  13.              )
  14.            (entmod
  15.              (subst (cons 1 (substr (cdr (assoc 1 (entget sn))) 1 p))
  16.                     (assoc 1 ent)
  17.                     ent
  18.              )
  19.            )
  20.          )
  21.       )
  22.     )
  23.      -1
  24.    )
  25. )
  26. (princ)
  27. )
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:13:27 | 显示全部楼层
另一个
  1. (defun RemChar  (ch / ss p str e)
  2. (cond ((and
  3.             (setq ss (ssget "_:L" '((0 . "TEXT,MTEXT"))))
  4.             (repeat (sslength ss)
  5.                   (if (setq p (vl-string-position
  6.                             (ascii ch)
  7.                             (setq str  (cdr (assoc 1
  8.                                         (entget (setq e (ssname ss 0))))))))
  9.                         (vla-put-textstring
  10.                               (vlax-ename->vla-object e)
  11.                               (substr str 1 p)
  12.                               ))
  13.                   (ssdel e ss))
  14.             )
  15.       )
  16.      )
  17. (princ))

 
Tharwat,为什么要将字符串转换为列表?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 08:19:17 | 显示全部楼层
 
因为函数vl position需要一个列表,而ascii“#”将返回一个数值,所以现在两者都是数字。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:26:18 | 显示全部楼层
 
  1. [b]vl-string-position
  2. [/b]Looks for a character with the specified [b]ASCII [/b]code in a [b]string[/b]

 
我的朋友,不需要将字符串转换为列表。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 08:30:19 | 显示全部楼层
这是正确的,如果我使用vl字符串位置,但我使用vl位置
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 08:37:16 | 显示全部楼层
使用vl string position代替vl position,同样的结果不需要转换字符串的开销
 
只是说。。。。。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 08:43:39 | 显示全部楼层
 
好的,当然可以
回复

使用道具 举报

51

主题

481

帖子

457

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
262
发表于 2022-7-6 08:49:14 | 显示全部楼层
 
给出此错误
  1. ; error: bad argument type: stringp nil
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 21:02 , Processed in 0.368286 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表