另外篇文章介绍了如何把一张图纸的标题栏拷贝到另外的图纸。其实草图符号的拷贝也类似,利用了SketchedSymbolDefinition.CopyTo
Sub CopyTo(TargetDocument As DrawingDocument,
ByRef ReplaceExisting As [defaultvalue(0)] VARIANT_BOOL,
Result As [out, retval] SketchedSymbolDefinition*)
第一参数是目标文档,第二是,如果有同名,是否覆盖,第三个返回复制的SketchedSymbolDefinition。
复制很简单。接着是在图纸中插入草图符号SketchedSymbol。我们知道,Inventor插入时,随着鼠标的拖动会有草图符号示意图,这样便于用户定位。Inventor API提供了拖动事件OnDrag,但要实现示意图,还需要一些工作。有无可能不这么麻烦呢?
可以的!那就是直接调用插入对应的命令,执行,就启动了插入过程。但前提是,需要模拟用户选择到了草图符号定义。
Sub CoptSketchedSymbolAndInsert()
'源工程图文档
Dim oSourceDoc As DrawingDocument
Set oSourceDoc = ThisApplication.Documents.Open("c:\source.idw", False)
'获取源文档第一个草图符号定义
Dim oSourceSSD As SketchedSymbolDefinition
Set oSourceSSD = oSourceDoc.SketchedSymbolDefinitions(1)
'目标工程图文档,假定为当前激活文档
Dim oTargetDoc As DrawingDocument
Set oTargetDoc = ThisApplication.ActiveDocument
'复制到目标文档
Dim oTagetSSD As SketchedSymbolDefinition
Set oTagetSSD = oSourceSSD.CopyTo(oTargetDoc, False)
'关闭源文档
Call oSourceDoc.Close(True)
If Not oTagetSSD Is Nothing Then
'选择到该草图符号定义
Call oTargetDoc.SelectSet.Select(oTagetSSD)
'立刻执行插入
ThisApplication.CommandManager.ControlDefinitions(
"DrawingUserDefinedSymbolsQuickCtxCmd").Execute2 (True)
End If
End Sub