不是Msasu,但我想我可以为你回答这个问题。
每个块都有一个定义和一个参考。
块定义是图形文件块名中的定义。DWG,假设块名插入到空白图形中,则如果要在每次新插入块名时反映出所做的更改,您将修改它。
如果将此新块定义“BLOCKNAME”插入到已具有块“BLOCKNAME”的图形中,但在修改之前,由于图形中当前存在的定义,新插入的“BLOCKNAME”将显示为旧的“BLOCKNAME”。该定义是在您对块进行更改之前将其放置在那里存储的,换句话说:第一次插入该块时,除非另有说明,否则图形认为所有这些块的外观都是这样的。以下是您的做法:
您要做的只是确保所有相应的块参照都已从dwg中删除,通常通过清除方法完成。一旦不再引用BLOCKNAME,您可以插入新的“BLOCKNAME”定义,块现在将以图形方式显示为“BLOCKNAME”图形文件中的定义,因为图形中仍然没有对旧块名的引用来阻止其拾取新更改。
通过编程方式,在命令行中,您可以清除前面提到的所有内容以解决此问题,但也可以使用lisp的形式:
BlockNEW是BlockOLD修改的,好吗?
你有一个现有的block,你刚刚做了一些更改,所以现在你有BlockOLD和BlockNEW。
在空白图形中插入BlockNEW时,效果良好。
将BlockNEW插入到已放入BlockOLD的图形中(并且可见或不可见地驻留在dwg数据库中,这就是为什么使用清除)时,BlockNEW将显示为BlockOLD,因为该图形中的引用尚未更新。
为此,可以使用以下lisp命令:
- (command "insert" "BlockOLD=BlockNEW")
键入的内容与此完全相同,其中BlockOLD位于图形中,而BlockNEW位于autocad搜索路径中的标准目录中。
显然,BlockOLD和BlockNEW是我用的变量名,如果需要这一点信息,那么lisping可能不是阅读本文的人往下读的正确途径,但我添加这句话只是为了确保任何阅读本文的人在我说“完全像那样”时都不会接受我的专业知识。我的意思当然是用括号、引号和等号。
如果您有任务,例如,在25个新图形中插入BlockNEW。。。。。在你将BlockNEW插入第一个空白图形,然后意识到你在线型、图层或其他方面搞砸了。。。
您可以对块定义进行更改,保存它们,然后返回到第一个空白图形,这就是您更新BlockNEW以反映刚刚修复的更改的方式。
方法一是清除。。。。擦除块,然后清除它。再次插入BlockNEW后,它看起来应该是这样的(只需更改线型、图层等)
或者,可以使用lisp更新块参照,方法是使用类似的代码行。
- (command "insert" "BlockNEW=")
就这样。它将通过重新定义其引用将旧块更新为新块。
HTH和足够清晰和正确,值得一试。 |