乐筑天下

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

[编程交流] Lisp在dimens中更改前缀

[复制链接]

1

主题

1

帖子

0

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 17:35:58 | 显示全部楼层 |阅读模式
您好,这是我在论坛上的第一个帖子,所以请宽容。
 
我有许多带有不同前缀的多维线。尺寸文本如下所示:W1/+1(220),
 
每个尺寸线的前缀不同:
W1/+1
W2/+1
W3/+1 ect。。。。。
 
前缀数据存储在扩展数据实体中。Autocad的Find命令对本文不起作用,我在这个论坛上找到的一些lisp例程也失败了。
 
有人能给我指一个lisp吗?它可以将多条尺寸线的+1到+2(或另一个五位数值)的选定文本更改为
 
当做
塞巴斯蒂安
回复

使用道具 举报

47

主题

257

帖子

216

银币

后起之秀

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

铜币
229
发表于 2022-7-5 17:44:55 | 显示全部楼层
你能发布示例文件吗?你用的是哪种文字?我刚刚在autocad中对标准DIMLIN和DIMALI标注运行了“查找并替换”命令,效果很好。
 
我搜索“/+1”,它找到了所有结果,我用“/+2”替换。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:51:47 | 显示全部楼层
请尝试以下基本代码:
  1. (defun c:dimpre ( / a b e i s p x )
  2.    (if (and (setq s (ssget "_:L" '((0 . "*DIMENSION") (-3 ("ACAD")))))
  3.             (/= "" (setq a (getstring "\nPrefix to find: ")))
  4.             (/= "" (setq b (getstring (strcat "\nReplace " a " with: "))))
  5.        )
  6.        (repeat (setq i (sslength s))
  7.            (and(setq e (ssname s (setq i (1- i))))
  8.                (setq x (cadr (assoc -3 (entget e '("acad")))))
  9.                (setq p (member '(1070 . 3) x))
  10.                (entmod
  11.                    (append (entget e)
  12.                        (list
  13.                            (list -3
  14.                                (append (reverse (member '(1070 . 3) (reverse x)))
  15.                                    (cons
  16.                                        (cons 1000 (vl-string-subst b a (cdadr p)))
  17.                                        (cddr p)
  18.                                    )
  19.                                )
  20.                            )
  21.                        )
  22.                    )
  23.                )
  24.                (entupd e)
  25.            )
  26.        )
  27.    )
  28.    (princ)
  29. )
回复

使用道具 举报

47

主题

257

帖子

216

银币

后起之秀

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

铜币
229
发表于 2022-7-5 17:59:31 | 显示全部楼层
我不知道他使用的维度类型,也不知道他什么时候有时间测试,但我刚刚用他的W1/+1,W2/+1测试了几个维度。W3/+1示例和您提供的代码不起作用。当然,他那边的情况可能会有所不同,我不确定。
 
我输入W1/+1作为要更改的前缀,然后输入W1/+2作为目标更改。没有什么在第二次运行时,我还输入了/+1作为前缀,输入了/+2作为目标,再次输入nothing。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:10:30 | 显示全部楼层
 
是否将标注前缀应用为OP所示的标注样式替代
 
回复

使用道具 举报

47

主题

257

帖子

216

银币

后起之秀

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

铜币
229
发表于 2022-7-5 18:16:40 | 显示全部楼层
我道歉。我没有添加前缀。一旦我添加了它并进行了测试,您的代码就能完美地工作。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:26:11 | 显示全部楼层
 
太好了-谢谢!
回复

使用道具 举报

47

主题

257

帖子

216

银币

后起之秀

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

铜币
229
发表于 2022-7-5 18:32:28 | 显示全部楼层
Hey甚至可能喜欢在代码中包含前缀列表和特定层上的所有维度,这样他就可以运行代码,并自动评估和更改所有前缀,而无需用户选择对象和手动输入前缀。只是一个想法。
回复

使用道具 举报

47

主题

257

帖子

216

银币

后起之秀

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

铜币
229
发表于 2022-7-5 18:42:41 | 显示全部楼层
  1. (defun c:dimpre ( / a b e i s p x )
  2.    (if (and (setq s (ssget [color=red]"X"[/color] '((0 . "*DIMENSION")[color=red](8 . "DIM")[/color](-3 ("ACAD")))))
  3.             (/= "" (setq a [color=red]"W1/+1"[/color]))
  4.             (/= "" (setq b [color=red]"W1/+2"[/color]))
  5.        )
  6.        (repeat (setq i (sslength s))
  7.            (and(setq e (ssname s (setq i (1- i))))
  8.                (setq x (cadr (assoc -3 (entget e '("acad")))))
  9.                (setq p (member '(1070 . 3) x))
  10.                (entmod
  11.                    (append (entget e)
  12.                        (list
  13.                            (list -3
  14.                                (append (reverse (member '(1070 . 3) (reverse x)))
  15.                                    (cons
  16.                                        (cons 1000 (vl-string-subst b a (cdadr p)))
  17.                                        (cddr p)
  18.                                    )
  19.                                )
  20.                            )
  21.                        )
  22.                    )
  23.                )
  24.                (entupd e)
  25.            )
  26.        )
  27.    )
  28.    (princ)
  29. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 03:43 , Processed in 0.510565 second(s), 70 queries .

© 2020-2025 乐筑天下

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