哇!你把我弄丢了。。。这对我来说都是希腊语ManilaWolf
无论如何。。我不知道当你传递“p”参数时,宏的哪个部分会暂停,但我怀疑它是否在offins例程中。除非你的画上确实有1067块。代码使用块过滤器。此外,我不能完全把我的手指放在这些线上;全部的哎呀;还有E!ss1;;哎呀(我指的是它背后的逻辑)。
哈哈哈。
当像我这样不懂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: 老实说,我对宏并不太熟悉。
我可以看到,这一行(setq ss1(ssget))会提示您选择对象,您是提供“p”还是屏幕上选择的另一组对象? 在宏中,(setq ss1(ssget))是第一个要求我手动选择对象的实例。在此之前,一切都会自动运行,无需我选择任何内容。所以我在这里手动选择对象。它存储为SS1。
当宏提示通过命令_ai_molc进行选择时,宏会自动调用存储的选择。然后,它调用存储的选择,擦除和取消擦除它。现在,offins可以将选择调用为之前已擦除和未擦除的对象,而不是存储的SS1对象。
当使用我的代码代替David的代码时,您是否收到任何问题?
我的代码没有使用命令调用,这可能会导致问题,因为David的代码为Layer命令提供的层数等于选择集中的项目数(可能是1000个),因为没有删除重复的层条目。
请尝试第3篇文章中更新的代码。我必须承认,你已经失去了我对宏观逻辑的理解-大卫 大卫,
非常感谢您修改代码。现在效果很好。
在我的示例图形中,原始代码在宏中运行时选择了所有1067个块。(正如李和你正确地确定了问题所在)。这显然是AutoCAD无法处理的。有了新代码,它现在只选择一个块,所以它运行没有问题。
再次衷心感谢您修改代码。
李,
如果将您的代码和David的修订代码作为单个命令使用,而不是在命令链的中间,那么它们确实可以很好地工作。
我在宏中使用David代码的原因是,我可以使用AutoCAD的“选择上一个”功能在宏中调用David代码。我现在只需点击一个工具按钮和“offins”代码,就可以运行一系列命令,正如我所希望的那样,这些代码被隐藏在宏的中间。
我知道你们有能力编写一个lisp,只需点击一下就可以运行一系列命令,但我对lisp并不熟悉,所以我通过一个疯狂的宏实现了我想要的。
再次感谢大家对我的帮助。
页:
1
[2]