从一个b复制所有属性
我使用AutoCad Electrical。我一直在使用AlanJ.Thompson(他是一个经常的贡献者)编写的一个很棒的Lisp文件来调用匹配属性值,这大大节省了时间。但是,在AutoCad Electrical中,名为“components”的电气块具有名为Tag1的属性,该属性赋予该组件其唯一性。当我在这些块之间复制所有属性时,我不想更改这个(而且只有这个)属性。
我附上了精彩的MAV代码。(我希望没问题。)
有人能帮我修改代码,修改除了标记为“TAG1”的属性之外的所有属性吗。(可能还有一个或两个其他可能的附加标签——供将来使用。)
谢谢你的帮助。
mav。lsp 欢迎来到nelsonbriles论坛
试一试:
根据需要更改“除外”列表以满足您的要求。 谢谢你,李。你现在在我最喜欢的“麦当劳”排行榜上排名第三,仅次于网球选手约翰·麦肯罗(JohnMcEnroe)和通心粉奶酪(Macaroni'n Cheese),但领先于麦当劳(McDonald's Big Macs)。
你的逻辑很紧凑。(如何保持所有括号的正确排列?我看到程序员如何尝试将它们排列起来,但仍然…..您是否使用带有特殊“括号计数器上限”的Lisp编辑器?)
无论如何,我计划很快学习一些Lisp,所以我为这个简单的Lisp问题道歉。。。
当您声明“根据需要更改‘除外’列表以满足您的要求”时。
那看起来怎么样?这样地。。。
(setq除'(“TAG1”,“TAG2”,TAG3”);;例外,必须为大写
或者像这样。。。
(setq,除“(“TAG1”),(“TAG2”));;例外情况,必须为大写
或者其他一些语法。
再次感谢。
很抱歉,纳尔逊·布里尔斯延迟了我的回复,我一定是错过了你的回复——碰巧我在浏览最近的帖子。
这是可以理解的。。。通心粉奶酪很好吃。。。
谢谢-只是为了好玩,如果我牺牲了定制的选择消息(这需要本地的“ssget”功能),它实际上可以编码得更简洁一些;但我认为这样对用户来说更清楚。
对于LISP,我选择的代码编辑器是AutoCAD提供的Visual LISP IDE(VLIDE),它实际上提供了一个代码格式化实用程序-然而,我不喜欢它产生的结果,所以在编写代码时倾向于手动格式化代码-可能我的OCD也与此有关。。。
其他的都有记事本++
没有那么复杂,只是:
(setq except '("TAG1" "TAG2" TAG3"))
很高兴你喜欢这个节目,谢谢你的赞美。
干杯
李 再次感谢李。
自从我意识到我在你的网站上捐赠了一些很好的时间节省。(来自美国的詹姆斯·朗)。
您可能知道,AutoCad Electrical是一种非常特殊的工具。每个块(在ACADE中称为组件)——无论是原理图还是面板——都有大量的属性,范围从10到20不等。
无论如何,既然你看起来很慷慨地提供了帮助,那么你的算法将如何更改为只复制4个属性呢。例如,我有一个具有20个属性的块:“Tag1”,Tag“2”。。。。,“标签20”。与其复制除一对之外的所有20个(这是您的“MAV”代码现在所做的),相反的“MAV”将很好地出现在您的兵工厂中,在那里只有几个(指定的)块属性必须在图形中的许多块中复制。我已经下载了你强大的Batte。lsp,但是,因为我猜这是一种批处理类型的算法,它不会在我正在编辑的图形上工作。(尽管我会将其用于其他任务!) 为了报答您的捐赠(非常感谢!),以下是修改后的“匹配属性值”代码,以仅匹配“包含”列表中列出的那些属性:
我希望它能帮助你和论坛的其他成员 多年来,我一直在寻找一个LISP例程来在块之间复制属性值,我认为我的搜索已经结束了。但不幸的是,我需要一个将在Autocad for MAC中运行的,它没有Visual LISP(vl load com会直接生成错误)。我也不能使用VBA解决方案。如果有人知道一个纯LISP解决方案,请让我知道,这是超越我的能力写一个!
谢谢
以下程序将匹配选定块之间的所有属性值,并应在AutoCAD for Mac上运行:
上述函数是我的属性函数集的一部分。
李 很明显,我在这里发布的时间太长了——你的解决方案很管用!真的非常感谢你。我将调查你的网站,因为我怀疑那里有更多的好东西。
谢谢
基思 非常欢迎Keith
页:
[1]
2