在Solidworks中,我们需要将图纸保存成PDF,需要将模型转化为其他第三方格式,此时就需要用到模型扩展对象ModelDocExtension::SaveAs2方法。该方法能将Solidworks文件转化输出为其他格式。
本文将通过保存PDF与保存IGS格式模型,进行Soldiworks输出相关的学习。
实例1:生成PDF文件
如下图,本例中将把图中的两个图纸,输出到一个PDF中。
实例代码:
#region 文件导出
///
/// PDF导出成功
///
///
///
///
///
///
public static void PrintPdf(SldWorks SwApp, ModelDoc2 DwgDoc, string[] SheetNames, string PdfPath, bool ViewPdf)
{
int errors = 0;
int warnings = 0;
ExportPdfData swExportPDFData = (ExportPdfData)SwApp.GetExportFileData((int)swExportDataFileType_e.swExportPdfData);
DispatchWrapper[] dispWrapArr = null;
Sheet[] Sheets = new Sheet[SheetNames.Length];
for (int i = 0; i < SheetNames.Length; i++)//添加所需打印的图纸对象
{
Sheets[i] = ((DrawingDoc)DwgDoc).Sheet[SheetNames[i]];
}
dispWrapArr = (DispatchWrapper[])ObjectArrayToDispatchWrapperArray((Sheets));
swExportPDFData.SetSheets((int)swExportDataSheetsToExport_e.swExportData_ExportSpecifiedSheets, (dispWrapArr));//指定输出
swExportPDFData.ViewPdfAfterSaving = ViewPdf;
DwgDoc.Extension.SaveAs2(PdfPath, (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, swExportPDFData, "", false, ref errors, ref warnings);
}
public static DispatchWrapper[] ObjectArrayToDispatchWrapperArray(object[] Objects)
{
int ArraySize = 0;
ArraySize = Objects.GetUpperBound(0);
DispatchWrapper[] d = new DispatchWrapper[ArraySize + 1];
int ArrayIndex = 0;
for (ArrayIndex = 0; ArrayIndex <= ArraySize; ArrayIndex++)
{
d[ArrayIndex] = new DispatchWrapper(Objects[ArrayIndex]);
}
return d;
}
#endregion
实例解析:
对于输出PDF文件,使用ModelDocExtension::SaveAs2方法时,需要传入ExportPdfData对象,此对象可以看作是Solidworks的全局设置。如果需要对几个图纸输出在一个PDF文件中,可以使用ExportPdfData::SetSheets方法,赋值需要输出的图纸。ModelDocExtension::SaveAs2使用一次生成一个PDF。
实例2:模型转IGS及SAT格式
如下图,本例中将把此装配体转化为IGS格式。
实例代码-转IGS:
#region 模型转化
public static void ConvertModelToIGS(SldWorks SwApp, ModelDoc2 DwgDoc, string Outpath)
{
int errors = 0;
int warnings = 0;
#region 设置IGS输出参数
//默认出厂设置的情况下:修改如下参数
//输出为IGES实体/曲面实体---选择多面实体(类型186)
SwApp.SetUserPreferenceIntegerValue((int)swUserPreferenceIntegerValue_e.swIGESRepresentation, (int)swIGESRepresentation_e.swIGES_BREP);
//取消勾选:使用高裁剪曲线精度
SwApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swIGESHighTrimCurveAccuracy, false);
#endregion
SwApp.ActivateDoc3(DwgDoc.GetTitle(), true, (int)swRebuildOnActivation_e.swRebuildActiveDoc, ref errors);//打开激活要转化的文档
DwgDoc.Extension.SaveAs2(Outpath, (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, null, "", false, ref errors, ref warnings);
System.Windows.MessageBox.Show("模型转化成功!");
}
实例代码-转SAT:
public static void ConvertModelToSAT(SldWorks SwApp, ModelDoc2 DwgDoc, string Outpath)
{
int errors = 0;
int warnings = 0;
#region 设置Sat格式
SwApp.SetUserPreferenceIntegerValue((int)swUserPreferenceIntegerValue_e.swAcisOutputVersion, 6);//6=版本5
SwApp.SetUserPreferenceIntegerValue((int)swUserPreferenceIntegerValue_e.swAcisOutputUnits, 0);
SwApp.SetUserPreferenceIntegerValue((int)swUserPreferenceIntegerValue_e.swAcisOutputGeometryPreference, 0);
SwApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swSATExportFaceEdgeProps, true);
SwApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swSATExportSplitPeriodic, true);
#endregion
SwApp.ActivateDoc3(DwgDoc.GetTitle(), true, (int)swRebuildOnActivation_e.swRebuildActiveDoc, ref errors);//打开激活要转化的文档
DwgDoc.Extension.SaveAs2(Outpath, (int)swSaveAsVersion_e.swSaveAsCurrentVersion, (int)swSaveAsOptions_e.swSaveAsOptions_Silent, null, "", false, ref errors, ref warnings);
System.Windows.MessageBox.Show("模型转化成功!");
}
#endregion
实例解析:
1.模型通过ModelDocExtension::SaveAs2保存的格式,直接由用户需要的另存后的文件扩展名有关。
2.不同格式的输出,需要设置对应的系统设置,此系统设置对如下图的手工操作界面,我们可以通过宏录制的方法,得到自己所需的设置代码。可参照之前宏相关文章,及模型扩展对象相关文章。
**如下图为本文的示例程序,源码可上我的Github下载。实例序号28