ketxu 发表于 2022-7-6 08:43:43

你能用旧版本发布文件CAD吗,我们让他们一起测试^^(许多成员不使用CAD12,所以他们无法测试你的图形)

Tharwat 发表于 2022-7-6 08:47:22

 
这是因为您的图形中没有任何块,从逻辑上讲,它什么都不会做。
 
我测试了您上传的图形,没有任何您提到的块可以替换到该图形中。

ReMark 发表于 2022-7-6 08:49:54

没有障碍?他做了什么,把它们都炸了?

Tharwat 发表于 2022-7-6 08:53:51

 
检查第二张图,你会发现自己。我真的对这种冲突感到惊讶。

amarcon 发表于 2022-7-6 08:57:58

好吧,可能有点困惑?
我上传了一个例子,展示了我的目标。块包含在视觉中,以帮助解释。以Acad2000格式保存。
 
谢谢Tharwat的代码,但是,它似乎不起作用。我需要一些注释来解释你聪明的逻辑。是否可以通过窗口“选择”图形(包含多个)上的单个面板,而不是全局交换例程?
 
如前所述,我希望调整代码以满足我们的最终需求,我只是不知道如何处理块列表。
Block\u Swap\u目标。图纸

Lee Mac 发表于 2022-7-6 08:58:28

我认为事情有点偏离了方向。
 
要向大家澄清:
 
Tharwat的代码将无法工作,因为他们代码中的字符串比较区分大小写,因此不会替换任何块。
 
但这不是重点-Tharwat使用的方法对于该任务来说是不必要的,并且将进一步擦除所有原始块属性,例如图层/线型/线宽/颜色等。将这些属性替换为程序运行时设置的属性(可能有很大不同)。
 
相反,正如我在前一篇文章中所解释的那样,由于OP的块既不是动态的,也不是属性化的(如第一篇文章中所述),切换块名称将把块引用(插入)指向不同的块定义(块),并将更新块的外观,同时保留所有块引用(插入)属性(因为只有名称被更改)。
 
回答备注:
 
 
不,这不是问题,正如Ketxu所解释的那样-选择集只迭代一次,因此每个块引用(插入)只处理和替换一次。
 
总之,我可以使用OP中显示的列表来完成这项任务:
 
键入“BlockSwap”运行上述代码,必要时编辑lst。

alanjt 发表于 2022-7-6 09:02:52

干得好,李。我希望你不介意,但我做了一个小改动,只是为了确保用户知道更换时可能发生的任何意外。
 
未经测试,所以我希望我没有错过什么。。。
 
2

Lee Mac 发表于 2022-7-6 09:07:16

谢谢艾伦,但我不明白你修改的意义?我认为我的代码是好的,因为它是。。。

alanjt 发表于 2022-7-6 09:08:58

除此之外,如果找不到所需的任何替换块,则无法替换这些特定块,并且用户不会意识到跳过的块。您只需检查一个块是否可以替换,如果不能,则不会通知用户。这就是修改的重点。回顾我的帖子,我把错过的列表创建放在了错误的位置-修复了。

amarcon 发表于 2022-7-6 09:13:23

大家都做得很好。我终于有一个很好的例程添加到我们的细节集
我真诚地感谢所有参与的人。我喜欢这里的“友好”竞争,它推动每个人做得更好
 
Tharwat-你的贡献引起了人们的思考。非常感谢。
李-你的代码优雅、高效,解决了我的问题。。。。。(和大多数人一样)。非常感谢。
Alanjt-你添加的“安全网”是使这一常规变得友好的糖霜。也非常感谢。
页: 1 [2]
查看完整版本: 块交换-需要帮助。