在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
卡斯滕 我不知道如何使用LISP执行此操作,但在AutoCAD中,您只需要将新的定义文件插入到当前图形中。
-插入
childBlockCold=ChildBlockNew
当AutoCAD询问您是否要重新定义块时,您会说“是”,然后就完成了。
这样做可以保留原始块名,因此必须重命名它。 戴夫,
谢谢你的回复。
我听从了你的建议,但如果我正确地理解了这个特性,那就不完全是我想要的。
我的示例中的所有块定义都位于当前图形中,而不是来自单独的图形。dwg文件。此外,我想修改“parentBlock1”的定义(用ChildBlockNew替换“nested”或“inserted”ChildBlockOld),但我仍然想保持两个初始ChildBlock定义的形式不变。
我是不是错过了你提案中的一些内容?
BR
卡斯滕 我的建议通过更改块内块的定义来修改parentBlock1。如果您想要ParentBlock1的集合,一些具有ChildBlockOld,一些具有ChildBlockNew,则无法使用标准块。您需要ParenBlock2或动态块。
但是,如果您希望所有ParentBlock1都包含ChildBlockNew,但仍保留两个子块,那么使用AutoCAD很容易,但超出了我的LISP能力。只需在BEDIT中打开ParentBlock1并在那里交换子块定义。 我正在寻找您回复中2个备选方案中的第二个(图形中所有ParentBlock1实例都应包含ChildBlockNew)。
我只是想看看区块编辑器,请原谅我的一个愚蠢的问题,但是如何从BEDIT内部“交换”2个子区块。
如果我得到了正确的命令,我可能能够通过lisp实现自动化(命令“something”…)功能。
卡斯滕 擦除ChildBlockOld,插入ChildBlockNew 戴夫,
任务完成。非常感谢您不断的回复,让我走上了正确的轨道。很抱歉回复太晚,但我有几个小时没有上网了。
我是通过在块编辑器中启动lisp命令来实现的。
我真希望我三天前和你联系过,然后我就开始为这些vla(x)-的东西而挣扎,我必须承认这对我来说可能有点毛骨悚然:-)
卡斯滕
页:
[1]