乐筑天下

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

[编程交流] Lisp编辑多行文字

[复制链接]

7

主题

23

帖子

16

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:53:02 | 显示全部楼层 |阅读模式
大家好,
 
有人能帮我吗。。我在指定层中有许多多行文字,如以下示例所示:
 
2 B32-149[T2]
6 B32-154[T1]
2 B32-145[b2]
40B12@200-150[铃声]
44B12@200-151[铃声]
 
因此,每个多行文字都由以下部分组成:
1.数字(2,6,2,40,44)
2.a空间
3.(B32、B32、B32、B12、B12)
4. "-"
5、数字(149154145150151)
6、[T2]、[T1]、[b2]、[Ring]、[Ring]
 
我需要的是编辑整个图形中指定图层的所有多行文字,并
编辑它们以更改“-”后的数字,使其从特定数字开始,增量为1,直到最后一个多行文字。我需要他们像:
 
2 B32-100[T2]
6 B32-101[T1]
2 B32-102[b2]
40B12@200-103[铃声]
44B12@200-104[铃声]
 
这可能吗?
 
我不知道任何关于lisp编程的事情,所以如果有任何帮助,我们将不胜感激
回复

使用道具 举报

7

主题

23

帖子

16

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:57:28 | 显示全部楼层
如果有人想办法做到这一点,有没有可能让相同的多行文字具有相同的编号?例如:
如果有两个这样的多行文字:
2 B32-100[T2]
2 B32-100[T2]
我们编辑了第一个,重新编号后,它变成了这样的2 B32-140[T2]。。。。我需要第二个是相同的,有相同的数字(140)
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 17:01:04 | 显示全部楼层
为什么期望结果中的数字是按顺序排列的?什么决定了这一点?
回复

使用道具 举报

7

主题

23

帖子

16

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 17:04:06 | 显示全部楼层
因为我的数字没有顺序和随机性,所以我需要对它们进行排序,以避免任何缺失的数字。
有时数字是这样的:
101-102-103-104-124-125-...
您可以看到104-124之间存在差距,需要对其进行编辑以避免出现这种差距
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 17:07:37 | 显示全部楼层
我的意思是:
为什么第一行的数字最小?实体是否排列在一列中,是否应该从上到下重新编号?
回复

使用道具 举报

7

主题

23

帖子

16

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 17:10:13 | 显示全部楼层
因为它是图纸中的第一个,是的,如果从上到下重新编号就太好了
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 17:14:01 | 显示全部楼层
实体是否在列中?
回复

使用道具 举报

7

主题

23

帖子

16

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 17:18:37 | 显示全部楼层
不,他们不是。。。它们散落在图画周围。。。因此,如果有可能使重新编号从左向右开始,然后向下移动
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 17:22:45 | 显示全部楼层
 
你要求的任务让我想起了这一点。
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 17:26:08 | 显示全部楼层
我怀疑排序是否有意义,但无论如何尝试一下:
  1. (defun KGA_Conv_Pickset_To_ObjectList (ss / i ret)
  2. (if ss
  3.    (repeat (setq i (sslength ss))
  4.      (setq ret (cons (vlax-ename->vla-object (ssname ss (setq i (1- i)))) ret))
  5.    )
  6. )
  7. )
  8. (defun KGA_Geom_ObjectMiddle (obj / ptBL ptTR)
  9. (vla-getboundingbox obj 'ptBL 'ptTR)
  10. (mapcar
  11.    '/
  12.    (mapcar '+ (vlax-safearray->list ptBL) (vlax-safearray->list ptTR))
  13.    '(2.0 2.0 2.0)
  14. )
  15. )
  16. (defun ConvSort (objLst)
  17. (mapcar
  18.    '(lambda (i) (nth i objLst))
  19.    (vl-sort-i
  20.      (mapcar '(lambda (obj) (KGA_Geom_ObjectMiddle obj)) objLst)
  21.      '(lambda (a b)
  22.        (if (equal (cadr a) (cadr b) 1e- ; Equal Y.
  23.          (< (car a) (car b))
  24.          (> (cadr a) (cadr b))
  25.        )
  26.      )
  27.    )
  28. )
  29. )
  30. ; (ConvStr "40 B12@200-150 [Ring]" 123) => "40 B12@200-123 [Ring]"
  31. (defun ConvStr (str n / i)
  32. (strcat
  33.    (substr str 1 (setq i (1+ (vl-string-position 45 str))))
  34.    (itoa n)
  35.    (progn
  36.      (setq str (substr str (1+ i)))
  37.      (while (wcmatch (substr str 1 1) "#") (setq str (substr str 2)))
  38.      str
  39.    )
  40. )
  41. )
  42. (defun c:Conv ( / doc enm lst lyr num ss)
  43. (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  44. (vla-endundomark doc)
  45. (vla-startundomark doc)
  46. (if
  47.    (and
  48.      (setq enm (car (entsel "\nEntity for layer: ")))
  49.      (setq lyr (vla-get-layer (vlax-ename->vla-object enm)))
  50.      (setq num (getint "\nStart nr.: "))
  51.      (setq num (1- num))
  52.      (setq ss (ssget "_X" (list '(0 . "MTEXT") (cons 8 lyr) '(1 . "*-#*"))))
  53.      (setq ss (ConvSort (KGA_Conv_Pickset_To_ObjectList ss)))
  54.    )
  55.    (mapcar
  56.      '(lambda (obj / str)
  57.        (vla-put-textstring
  58.          obj
  59.          (cond
  60.            ((cdr (assoc (setq str (vla-get-textstring obj)) lst)))
  61.            ((cdar (setq lst (cons (cons str (ConvStr str (setq num (1+ num)))) lst))))
  62.          )
  63.        )
  64.      )
  65.      ss
  66.    )
  67. )
  68. (vla-endundomark doc)
  69. (princ)
  70. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-23 13:30 , Processed in 0.667637 second(s), 73 queries .

© 2020-2025 乐筑天下

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