乐筑天下

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

[编程交流] 基于块隔离层

[复制链接]
pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:49:41 | 显示全部楼层
 
哇!你把我弄丢了。。。这对我来说都是希腊语ManilaWolf
无论如何。。我不知道当你传递“p”参数时,宏的哪个部分会暂停,但我怀疑它是否在offins例程中。除非你的画上确实有1067块。代码使用块过滤器。此外,我不能完全把我的手指放在这些线上;全部的哎呀;还有E!ss1;;哎呀(我指的是它背后的逻辑)。
回复

使用道具 举报

16

主题

119

帖子

109

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
82
发表于 2022-7-6 08:53:07 | 显示全部楼层
 
 
哈哈哈。
 
当像我这样不懂Lisp程序的人,通过长途跋涉得到结果时,就会发生这种情况。
我从这个论坛上得到了很多帮助,但我确实尝试着自己去获得结果。我自己的宏有时让我嘲笑自己。
 
在我的示例中,当我通过“p”方法调用offins lisp时,AutoCAD尝试选择最初由offins lisp找到的所有块。我的画里确实有1067个街区。
 
_e;全部的哎呀;
 
这会擦除图形中的所有内容,然后“取消擦除”所有内容。哈哈哈。宏“attaglay”中的下一个lisp选择存在特定属性标记的所有块,并根据标记名生成层。我使用“P”选择了图形中的所有对象(我的意思是当我发现“attaglay”lisp无论如何都可以选择所有对象时,我要从宏中去掉“e;all;oops;part”。哈哈哈)。
顺便说一句,我从这个线程中获得了您编写的atttaglay lisp:-http://www.cadtutor.net/forum/showthread.php?64099-按属性值将块移动到其他层
 
Ess1;;哎呀;
 
我设置了调用回调对象!ss1。_ai_molc,允许我选择一个块,它将当前层设置为与块所在的层匹配。我称这个物体为!ss1。我擦除然后取消擦除调用的选择,然后我可以使用offins的“p”进行选择。哈哈哈。Offins无法使用调用进行选择!ss1。如果我不使用这个擦除然后取消擦除步骤,offins会选择所有标签,而不仅仅是我用-ai\u molc选择的标签。哈哈哈。
 
清澈如泥。正当
 
:lol:
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:58:29 | 显示全部楼层
老实说,我对宏并不太熟悉。
 
我可以看到,这一行(setq ss1(ssget))会提示您选择对象,您是提供“p”还是屏幕上选择的另一组对象?
回复

使用道具 举报

16

主题

119

帖子

109

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
82
发表于 2022-7-6 09:00:13 | 显示全部楼层
在宏中,(setq ss1(ssget))是第一个要求我手动选择对象的实例。在此之前,一切都会自动运行,无需我选择任何内容。所以我在这里手动选择对象。它存储为SS1。
当宏提示通过命令_ai_molc进行选择时,宏会自动调用存储的选择。然后,它调用存储的选择,擦除和取消擦除它。现在,offins可以将选择调用为之前已擦除和未擦除的对象,而不是存储的SS1对象。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:05:05 | 显示全部楼层
 
当使用我的代码代替David的代码时,您是否收到任何问题?
 
我的代码没有使用命令调用,这可能会导致问题,因为David的代码为Layer命令提供的层数等于选择集中的项目数(可能是1000个),因为没有删除重复的层条目。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 09:08:13 | 显示全部楼层
 
 
 
请尝试第3篇文章中更新的代码。我必须承认,你已经失去了我对宏观逻辑的理解-大卫
回复

使用道具 举报

16

主题

119

帖子

109

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
82
发表于 2022-7-6 09:10:16 | 显示全部楼层
大卫,
 
非常感谢您修改代码。现在效果很好。
在我的示例图形中,原始代码在宏中运行时选择了所有1067个块。(正如李和你正确地确定了问题所在)。这显然是AutoCAD无法处理的。有了新代码,它现在只选择一个块,所以它运行没有问题。
再次衷心感谢您修改代码。
 
李,
 
如果将您的代码和David的修订代码作为单个命令使用,而不是在命令链的中间,那么它们确实可以很好地工作。
我在宏中使用David代码的原因是,我可以使用AutoCAD的“选择上一个”功能在宏中调用David代码。我现在只需点击一个工具按钮和“offins”代码,就可以运行一系列命令,正如我所希望的那样,这些代码被隐藏在宏的中间。
 
 
我知道你们有能力编写一个lisp,只需点击一下就可以运行一系列命令,但我对lisp并不熟悉,所以我通过一个疯狂的宏实现了我想要的。
 
再次感谢大家对我的帮助。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 09:45 , Processed in 0.343242 second(s), 64 queries .

© 2020-2025 乐筑天下

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