最近有个朋友问及当另存三维模型为DWG的时候,如何设置DWG的版本。产品功能如下图所示:
如果工程图*.idw另存为DWG,是由一个*.ini文件来配置,而三维模型*.ipt, *iam 只看到对应的translator对象,但不知道如何配置其中的参数。后来网络一检索,发现早在2011年我们团队的专家Brian就写了对应的博客。特转发供大家参考。
原文链接:http://modthemachine.typepad.com/my_weblog/2011/05/saving-3d-dwg-using-the-dwg-translator.html
核心代码:
Public Sub SaveCopyAsDWG3D()
' 获取对应的Translator.
Dim DWGAddIn As TranslatorAddIn
Set DWGAddIn = ThisApplication.ApplicationAddIns.ItemById( _
"{C24E3AC2-122E-11D5-8E91-0010B541CD80}")
' 获取当前零件或装配文档.
Dim doc As Document
Set doc = ThisApplication.ActiveDocument
Dim transObjs As TransientObjects
Set transObjs = ThisApplication.TransientObjects
' 设置导出文件
Dim context As TranslationContext
Set context = transObjs.CreateTranslationContext
context.Type = kFileBrowseIOMechanism
' 获取可操作的选项
Dim options As NameValueMap
Set options = transObjs.CreateNameValueMap
If DWGAddIn.HasSaveCopyAsOptions(doc, context, options) Then
' 设置导出样式.
options.Value("Solid") = True ' 导出 solids.
options.Value("Surface") = False ' 导出 surfaces.
options.Value("Sketch") = False ' 导出 sketches.
' 设置导出DWG的版本.
' 23 = ACAD 2000
' 25 = ACAD 2004
' 27 = ACAD 2007
' 29 = ACAD 2010
options.Value("DwgVersion") = 29
End If
' 设置导出文件名.
Dim oDataMedium As DataMedium
Set oDataMedium = transObjs.CreateDataMedium
oDataMedium.filename = "c:\temp\DWGOutTest.dwg"
' 调用SaveCopyAs
Call DWGAddIn.SaveCopyAs(doc, context, options, oDataMedium)
End Sub