Carsten Trolle 发表于 2022-7-6 10:50:39

在exis中插入“子”块

你好
 
过去几天,我一直在努力实现以下目标:
 
我有一个现有的块定义(blockname可以是:“ParentBlock1”)在这个块中插入另一个块(blockname可以是“ChildBlockOld”)。在ParenBlock1的定义中,我想用ChildBlockNew替换childblockcold。
 
我有一些使用旧AutoLisp的经验,但我认为用于实体操作的“经典”函数无法完成这项工作。VisualLisp(vlax和vla-stuff)和object-apporach是未知领域。因此,我在网上搜索灵感,找到了2个visual lisp例程,似乎就是为了这个目的而做的(多亏了最初发布这些例程的人)
ax:deleteObjectFromBlock和
ax:AddObjectsToBlock
 
“Delete piece”工作正常,并从ParentBlock1中删除ChildBlockOld,但当我尝试添加ChildBlockNew时,会收到各种错误消息。
 
可能是我做错了什么,或者错过了显而易见的事情。
有谁熟悉这两个或类似的程序,将做的工作,可以引导我在正确的方向。
 
B、 R
卡斯滕

dbroada 发表于 2022-7-6 11:03:15

我不知道如何使用LISP执行此操作,但在AutoCAD中,您只需要将新的定义文件插入到当前图形中。
 
-插入
childBlockCold=ChildBlockNew
 
当AutoCAD询问您是否要重新定义块时,您会说“是”,然后就完成了。
 
这样做可以保留原始块名,因此必须重命名它。

Carsten Trolle 发表于 2022-7-6 11:13:09

戴夫,
 
谢谢你的回复。
 
我听从了你的建议,但如果我正确地理解了这个特性,那就不完全是我想要的。
我的示例中的所有块定义都位于当前图形中,而不是来自单独的图形。dwg文件。此外,我想修改“parentBlock1”的定义(用ChildBlockNew替换“nested”或“inserted”ChildBlockOld),但我仍然想保持两个初始ChildBlock定义的形式不变。
我是不是错过了你提案中的一些内容?
 
BR
卡斯滕

dbroada 发表于 2022-7-6 11:28:47

我的建议通过更改块内块的定义来修改parentBlock1。如果您想要ParentBlock1的集合,一些具有ChildBlockOld,一些具有ChildBlockNew,则无法使用标准块。您需要ParenBlock2或动态块。
 
但是,如果您希望所有ParentBlock1都包含ChildBlockNew,但仍保留两个子块,那么使用AutoCAD很容易,但超出了我的LISP能力。只需在BEDIT中打开ParentBlock1并在那里交换子块定义。

Carsten Trolle 发表于 2022-7-6 11:35:36

我正在寻找您回复中2个备选方案中的第二个(图形中所有ParentBlock1实例都应包含ChildBlockNew)。
我只是想看看区块编辑器,请原谅我的一个愚蠢的问题,但是如何从BEDIT内部“交换”2个子区块。
如果我得到了正确的命令,我可能能够通过lisp实现自动化(命令“something”…)功能。
 
卡斯滕

dbroada 发表于 2022-7-6 11:45:25

擦除ChildBlockOld,插入ChildBlockNew

Carsten Trolle 发表于 2022-7-6 11:58:08

戴夫,
 
任务完成。非常感谢您不断的回复,让我走上了正确的轨道。很抱歉回复太晚,但我有几个小时没有上网了。
 
我是通过在块编辑器中启动lisp命令来实现的。
我真希望我三天前和你联系过,然后我就开始为这些vla(x)-的东西而挣扎,我必须承认这对我来说可能有点毛骨悚然:-)
 
卡斯滕
页: [1]
查看完整版本: 在exis中插入“子”块