乐筑天下

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

[综合讨论] 从下拉菜单插入块

[复制链接]

17

主题

67

帖子

50

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-6 23:14:17 | 显示全部楼层 |阅读模式
在AutoCAD中,可以使用下拉菜单将另一图形中的对象作为块插入。
在这个项目中,我有许多对应于钢型材的文件,每节1个文件。
MNU和脚本文件位于同一文件夹中(请参阅附件)。
 
 
问题:如果在图形中插入,块的名称似乎与文件的名称相同。我想将其更改为一个随机名称,例如“a$C7ABC15J1”。
 
原因是,如果我在两个单独的图形中插入相同的部分,并以不同的方式编辑块,然后在彼此之间复制/粘贴,则外观不会继续。原因是他们有相同的名字。这可能会让人困惑,所以如果没有意义,请不要担心。我只需要一个随机的名字。爆炸和重新粘贴为一个块是一个讨厌的,有时我确实忘记了这样做。
 
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 23:19:43 | 显示全部楼层
我不会把模糊的名称作为菜单的一部分,我会将你的插入更改为lisp,这样它可以检查块是否存在,如果存在,请查找-x ie add-1到块名,这样插入3次块名为UB125-3,你会将第一个块重命名为-1,然后插入UB125并重命名。需要考虑一下。
 
-重命名块blockname newname注意,dwg中具有此名称的所有块都将重命名。
 
[->UB]
[610UB125]^C^C(blkins“610UB125”)
 
[610UB125]^C^C(如果(非blkins)(加载“blkins”)(blkins“610UB125”)
回复

使用道具 举报

17

主题

67

帖子

50

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-6 23:22:03 | 显示全部楼层
好的,谢谢。这有点让人困惑,我必须通读LISP。
但是,使用上述算法,您可以在两个单独的图形中使用相同的块名,当复制/粘贴时,这是一个问题。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 23:25:01 | 显示全部楼层
您仍然需要以最简单的方式插入和重命名,您可以将文件复制到新名称,然后插入。如果你高兴,那么610UB125-37是你第37次插入。610UB125-123456。
 
获取文件名并添加1,然后重命名。这样,您在任何时候只有2个文件。原件和重新编号的副本。口齿不清可以检查其他人是否成功。
 
如果你想使用重命名,你需要在某处存储一个最后编号的文件。这可以是本地setenv,但若网络需要在服务器上。
回复

使用道具 举报

17

主题

67

帖子

50

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-6 23:28:28 | 显示全部楼层
谢谢你的解释,但我还是很困惑。
我得把书读一遍,然后试着理解你在说什么。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 23:32:58 | 显示全部楼层
 
 
第1版,你需要说一个文本文件被读取,比如说其中的每个UB都是一行一行的,最后是-0。当您插入块时,它会读取此文件并查找末尾的数字。然后用添加的新数字重写文件。
 
版本2只是有一个文件,其中有一个数字,并添加1到它成为新的块名。比版本1简单得多,但您可能会在第345次插入任何UB块时得到610UB125-345。
 
您没有回答一个问题:它是供多个用户使用还是仅供您使用,对于仅限您(setenv“UB”23),然后您可以(getenv“UB”),对于多个用户,它将需要服务器上的一个文件。
 
这是很容易解决的,但你需要说你想走哪条路,这里有很多人可以编写一些代码来做到这一点,正如我之前所说的,我不会在30多年的计算机辅助设计中随机生成块名。
 
能够找到块“UB*”具有显著优势。
 
回复

使用道具 举报

17

主题

67

帖子

50

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-6 23:35:59 | 显示全部楼层
回答这个问题:它只供我使用,只供本地计算机使用。
我想这就是我需要帮助的代码。
我不会担心名称,我过去从未搜索过块名称,如果这使事情更简单,我会很乐意使用随机名称,否则会使用您上面提到的名称。
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-6 23:38:52 | 显示全部楼层
这些块是否具有与其相关联的属性? 
您在每个图形中插入了多少个这些独特的块? 
思考动态块、外部参照或组可能更适合您尝试的操作。
回复

使用道具 举报

17

主题

67

帖子

50

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-6 23:40:19 | 显示全部楼层
没有属性。只有简单的直线和圆弧。
插入次数:超过1次,最多可以猜测为数不多。
动态块、外部参照或组?我宁愿保持尽可能简单,只是一个简单的块。
 
我是否可以在代码行中添加一些东西来进行区分,例如时间戳?
 
下面的行类似于“UniversalBeams_610UB125+2019.12.14.1025”
[610UB125]^C^C-插入UniversalBeams_610UB125;规模1.
 
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 23:43:37 | 显示全部楼层
应工作未测试,但每次运行将使x+1
 
要测试,请将其复制到命令行
(setenv“ub”0);仅需要设置种子X,就可以随时重置每个dwg?
 
(setq x(atoi(getenv“UB”))(setenv“UB”(rtos(+x 1)2 0))-插入UniversalBeams_610UB125;规模1.(getreal)(命令“-重命名”“block”“UniversalBeams\u 610UB125”(strcat“UniversalBeams\u 610UB125”“-(rtos x 2 0))
 
最简单的方法是defun传递块名^c^c(区块“UniversalBeams_610UB125”)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 05:13 , Processed in 0.500562 second(s), 72 queries .

© 2020-2025 乐筑天下

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