乐筑天下

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

[编程交流] 清理垃圾箱中的$0$Layers

[复制链接]

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 10:32:15 | 显示全部楼层 |阅读模式
大家好,
我有这么多的图纸,其中外部参照是“绑定”而不是“插入”。
为了寻找解决方案,我从网上得到了一个Lisp例程(多亏了发布它的人。但我不记得他的名字或我从中得到它的wesite),如下所示。问题是$0$layers没有被重命名,因为我有另一个同名的层。认为
我有一个层,底层平面图$0$a-ANNO-DIMS,必须重命名为a-ANNO-DIMS
由于图形具有图层a-ANNO-DIMS,因此不允许lisp对其进行重命名。我现在有了逻辑,但在lisp中我是零。
 
在重命名之前,必须检查层是否存在。
如果存在,则应将$0$层合并到标准层。(lisp例程中缺少此部分)
 
有人可以更改代码吗?这将是一个很大的帮助。。。
这是代码;
 
 
 
(defun c:RBP(/ActDoc Name NewName)
; 删除绑定前缀
; 重命名图层、块、标注样式、文字样式、用户坐标系和视图
;  通过去掉绑定作为绑定前缀
; 示例Drawing1$0$Layer1->Layer1
 
(vl load com)
(defun RemoveBindPrefix(String/Pos LastPos)
 
(if(setq Pos(vl字符串搜索“$”字符串))
(程序
(setq LastPos Pos)
(while(setq Pos(vl string search“$”string(1+Pos)))
(setq LastPos Pos)
)
(substr字符串(+2 LastPos))
)
一串
)
)
;---------------------------------------------------------
(setq ActDoc(vla get ActiveDocument(vlax get Acad Object)))
(用于Obj的vlax(vla get Layers ActDoc)
(setq名称(vla get Name Obj))
(if(/=(setq NewName(RemoveBindPrefix Name))名称)
(如果(vl-catch-all-error-p(vl-catch all apply’vla put Name(列出Obj新名称)))
(提示(strcat“\n层:“Name”未重命名。”)
)
)
)
(用于Obj的vlax(vla get Blocks ActDoc)
(setq名称(vla get Name Obj))
(if(/=(setq NewName(RemoveBindPrefix Name))名称)
(if(vl-catch-all-error-p(vl catch-all apply’vla put Name(list Obj NewName)))
(提示(strcat“\n Block:”Name“未重命名”)
)
)
)
(用于Obj的vlax(vla get TextStyles ActDoc)
(setq名称(vla get Name Obj))
(if(/=(setq NewName(RemoveBindPrefix Name))名称)
(if(vl-catch-all-error-p(vl catch-all apply’vla put Name(list Obj NewName)))
(提示(strcat“\n文本样式:“Name”未重命名。”)
)
)
)
(用于Obj的vlax(vla get Views ActDoc)
(setq名称(vla get Name Obj))
(if(/=(setq NewName(RemoveBindPrefix Name))名称)
(if(vl-catch-all-error-p(vl catch-all apply’vla put Name(list Obj NewName)))
(提示(strcat“\n视图:“Name”未重命名。”)
)
)
)
(对象的vlax(vla get UserCoordinateSystems ActDoc)
(setq名称(vla get Name Obj))
(if(/=(setq NewName(RemoveBindPrefix Name))名称)
(if(vl-catch-all-error-p(vl catch-all apply’vla put Name(list Obj NewName)))
(提示(strcat“\n UCS:”Name“未重命名”)
)
)
)
(用于Obj的vlax(vla get DimStyles ActDoc)
(setq名称(vla get Name Obj))
(if(/=(setq NewName(RemoveBindPrefix Name))名称)
(if(vl-catch-all-error-p(vl catch-all apply’vla put Name(list Obj NewName)))
(提示(strcat“\n维度样式:“Name”未重命名。”)
)
)
)
(普林斯)
)
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-6 10:55:48 | 显示全部楼层
也许你指的是CAB2k编写的lisp例程,它是AUGI网站上这篇文章#10的一部分。
 
http://forums.augi.com/showthread.php?t=31759
回复

使用道具 举报

30

主题

96

帖子

66

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
150
发表于 2022-7-6 11:14:29 | 显示全部楼层
是的,我已经经历过了。
但这并不是我真正想要的。。。。!!
该例程首先向所有外部参照层(如X1、X2、X3等)添加前缀。。。。
它不会向下合并层。
在我在这里发布的代码中,它做得很好,但我只是希望它能够合并层、文本样式、维度样式等。。。达到标准。
有人可以编辑代码来实现它吗?
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:44:21 | 显示全部楼层
这可能会提供一些见解。
http://www.cadtutor.net/forum/showthread.php?43156-层太多-需要合并它们&突出显示=laymrg
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 17:51 , Processed in 0.398030 second(s), 60 queries .

© 2020-2025 乐筑天下

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