乐筑天下

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

[编程交流] 使用全局编辑文本字符串

[复制链接]

1

主题

11

帖子

10

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 07:40:04 | 显示全部楼层 |阅读模式
你好
有谁能帮我想出一个自动化的方法,通过宏或Lisp编辑文本字符串的常数。因为我有一个需要更改很多坐标的图形,用lisp可以帮助我全局或单个地进行操作,仍然很有帮助。例如,如果原始文本是N 35800.578,我必须手动减去210.5,然后将文本编辑为N35590.078。同样,东距坐标必须减去400.0,高程必须减去3.700。
有了这些常量值,如果我可以自动更改文本而不需要手动编辑,那么它将大大减少时间消耗。
提前非常感谢。
请注意。让我知道你需要的任何其他信息,以实现这一常规。Thnks公司
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 07:45:11 | 显示全部楼层
我猜你不确定N或E之后的空格“”总是存在,因此需要while。。。。
 
仓促写成
 
  1. (defun c:SuBVal (/ ss i en prf v clr)
  2. (if (setq ss (ssget ":L" '((0 . "TEXT")(1 . [color=blue]"E. #*,EL. #*,N. #*"[color=black]))))[/color][b][color=black]     [/color]
  3. [/b][/color]      (repeat (setq i (sslength ss))
  4.             (setq en (ssname ss (setq i (1- i))))
  5.             (if (and  (setq prf (substr (setq str (cdr (assoc 1 (entget en)))) 1 3))
  6.         (setq v  (cond ((eq prf "E. ")  [color=blue]210.50)
  7. [/color]                      ((eq prf "N. ") [color=blue]400.00[/color] )
  8.                      ((eq prf "EL.") [color=blue](setq str (substr str 2)
  9.                                                             prf (strcat prf " ")) 3.70[/color] )))
  10.                       )
  11.                 (progn
  12.                       (vla-put-textstring (setq en (vlax-ename->vla-object en))
  13.   (strcat prf
  14.                             (rtos (- (distof (substr str 3)  2) [color=blue]v[/color]) 2 3)))
  15.                       [color=blue](vla-put-color en 1)[/color])
  16.                 )
  17.            )
  18.    )
  19. (princ)
  20.      )

 
编辑:“E.#*,EL.#*,N.#*”
回复

使用道具 举报

1

主题

11

帖子

10

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 07:47:06 | 显示全部楼层
你好
不知何故,也许我没有正确地执行它,因为加载它并键入@command line Test后,它会提示“错误:错误的参数类型:numberp:nil”。
顺便说一句,你是绝对正确的,那是在N和E之后的一个空格。
EL的常数。为3.7,N.为210.5,E.为400.0。
非常感谢您的努力,
达金
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 07:51:51 | 显示全部楼层
我想我错过了那里的EL部分。
发布有问题字符串的样例绘图或快照
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 07:53:42 | 显示全部楼层
试试Lee的批量查找和替换文本。
 
 
 

                               
登录/注册后可看大图

                               
登录/注册后可看大图
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 07:57:12 | 显示全部楼层
哦,是的。。。那也是
回复

使用道具 举报

1

主题

11

帖子

10

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 08:00:05 | 显示全部楼层
Mahalo pBe和Renderman,
我做得很好,谢谢你的有用想法和专业知识。它激励我学习更多关于Lisp的知识。
pBe,请问您是否可以修改它,在编辑后将颜色更改为红色,以便知道哪个是哪个。
再次感谢您的努力和时间,
祝龙年新年快乐。
和平
回复

使用道具 举报

1

主题

11

帖子

10

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 08:03:31 | 显示全部楼层
pBe,
此外,编辑文本后,N、E和EL之后的周期应保持不变。
尝试将图像与dwg文件一起发布,但不知何故将其附加。
将重试。
谢谢
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:07:52 | 显示全部楼层
 
你是说目标字符串包含一个“”在N/E/EL之后?而不仅仅是一个“”(空格)?
所以“N.5800.578”而不是“N.35800.578”?
回复

使用道具 举报

1

主题

11

帖子

10

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 08:10:14 | 显示全部楼层
PBe,
那是正确的,我的过错至今没有表现清楚。
它最初看起来像N.XXXXX。三十、 E.XXXXX。三十、 EL。XXX。XXX。
前一个仍然有效,我所要做的就是找到N并替换为N,同样对于E和El。如果它为所有人做一次拍摄,并将颜色改为红色,那就太好了。
提前感谢,
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 05:00 , Processed in 0.410288 second(s), 75 queries .

© 2020-2025 乐筑天下

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