这两天稍微有空,把早期写的一个关于对Inventor文件重命名的功能(其实也是复制设计的一种,复制设计后把源文件删除就是重命名了)做了修正。通常对inventor零件或者工程图执行文件系统的复制操作时,往往工程图的参考链接不会直接过去。所以,这里无论是复制设计或者热重命名都需要用api对工程图内部的引用链接进行修改。常用的代码原型如下:
Sub Test()
Call ReplaceFileReference(ThisDoc.Document, "C:\PartA.ipt", "C:\PartB.ipt")
End Sub
Sub ReplaceFileReference(oDoc as Document, oRefToRemove As String, oRefToInclude As String)
For Each oFD In oDoc.File.ReferencedFileDescriptors
If oFD.FullFileName = oRefToRemove
oFD.ReplaceReference(oRefToInclude)
End if
Next
End Sub
早期是按照这个修改链接的思路去做的,发现前后铺垫逻辑相对复杂,而且还容易出错。这两天重新研究了一下Inventor的api,发现其实api中的document.SaveCopyAs
()方法隐藏了把链接一起复制过去功能。相当的隐秘。然后用了这个方法,整个重命名或者复制设计过程非常的完美,效率非常高。
在 Autodesk Inventor 的 API 中,DrawingDocument.SaveAs
方法用于保存文档,可以用来另存为新文件。当想要将一个已存在的文件另存为一个新文件时,SaveCopyAs
参数的作用就显得非常重要。
这里是 SaveCopyAs
参数的具体说明:
SaveCopyAs
参数为True
:表示正在保存的文件是当前文档的一个副本。这意味着原始文档保持不变(保持打开状态),而您创建了它的一个新副本。这种情况下,Inventor 不会把当前打开的文档视为新保存的文件。原始文档仍然保持原来的文件名和路径。SaveCopyAs
参数为False
:表示正在更新当前文档的文件名和路径。这种情况下,原始文件被新文件替换,Inventor 会将当前打开的文档视为您刚刚保存的这个新文件。
因此,如果想要将一个之前存在的文件另存为一个新文件,并且希望新文件成为当前操作的文档,您应该将 SaveCopyAs
设置为 False
。如果您只是想创建当前文档的副本,并保持原文档不变,那么应该将 SaveCopyAs
设置为 True
。
核心就是要用到这个:
' 另存为新文件,同时更新当前文档
drawingDocument.SaveAs("新文件路径.ipt", False)
更新一下:SaveCopyAs
设置为 False
应该谨慎使用,这会把内存中所有指向这个doc的文档的链接一起改变。容易意外的改动到其它文档。不过,在某些情况下,这个可能是一个神器。
Inventor 插件下载:https://www.lnv.cn/down/