这是因为您的图形中没有任何块,从逻辑上讲,它什么都不会做。
我测试了您上传的图形,没有任何您提到的块可以替换到该图形中。 没有障碍?他做了什么,把它们都炸了?
检查第二张图,你会发现自己。我真的对这种冲突感到惊讶。 好吧,可能有点困惑?
我上传了一个例子,展示了我的目标。块包含在视觉中,以帮助解释。以Acad2000格式保存。
谢谢Tharwat的代码,但是,它似乎不起作用。我需要一些注释来解释你聪明的逻辑。是否可以通过窗口“选择”图形(包含多个)上的单个面板,而不是全局交换例程?
如前所述,我希望调整代码以满足我们的最终需求,我只是不知道如何处理块列表。
Block\u Swap\u目标。图纸 我认为事情有点偏离了方向。
要向大家澄清:
Tharwat的代码将无法工作,因为他们代码中的字符串比较区分大小写,因此不会替换任何块。
但这不是重点-Tharwat使用的方法对于该任务来说是不必要的,并且将进一步擦除所有原始块属性,例如图层/线型/线宽/颜色等。将这些属性替换为程序运行时设置的属性(可能有很大不同)。
相反,正如我在前一篇文章中所解释的那样,由于OP的块既不是动态的,也不是属性化的(如第一篇文章中所述),切换块名称将把块引用(插入)指向不同的块定义(块),并将更新块的外观,同时保留所有块引用(插入)属性(因为只有名称被更改)。
回答备注:
不,这不是问题,正如Ketxu所解释的那样-选择集只迭代一次,因此每个块引用(插入)只处理和替换一次。
总之,我可以使用OP中显示的列表来完成这项任务:
键入“BlockSwap”运行上述代码,必要时编辑lst。 干得好,李。我希望你不介意,但我做了一个小改动,只是为了确保用户知道更换时可能发生的任何意外。
未经测试,所以我希望我没有错过什么。。。
2 谢谢艾伦,但我不明白你修改的意义?我认为我的代码是好的,因为它是。。。 除此之外,如果找不到所需的任何替换块,则无法替换这些特定块,并且用户不会意识到跳过的块。您只需检查一个块是否可以替换,如果不能,则不会通知用户。这就是修改的重点。回顾我的帖子,我把错过的列表创建放在了错误的位置-修复了。 大家都做得很好。我终于有一个很好的例程添加到我们的细节集
我真诚地感谢所有参与的人。我喜欢这里的“友好”竞争,它推动每个人做得更好
Tharwat-你的贡献引起了人们的思考。非常感谢。
李-你的代码优雅、高效,解决了我的问题。。。。。(和大多数人一样)。非常感谢。
Alanjt-你添加的“安全网”是使这一常规变得友好的糖霜。也非常感谢。
页:
1
[2]