Solidworks输出

在Solidworks中,我们需要将图纸保存成PDF,需要将模型转化为其他第三方格式,此时就需要用到模型扩展对象ModelDocExtension::SaveAs2方法。该方法能将Solidworks文件转化输出为其他格式。

本文将通过保存PDF与保存IGS格式模型,进行Soldiworks输出相关的学习。

实例1:生成PDF文件

如下图,本例中将把图中的两个图纸,输出到一个PDF中。

image.png

实例代码:

#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格式。

image.png

实例代码-转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.不同格式的输出,需要设置对应的系统设置,此系统设置对如下图的手工操作界面,我们可以通过宏录制的方法,得到自己所需的设置代码。可参照之前宏相关文章,及模型扩展对象相关文章。

image.png

**如下图为本文的示例程序,源码可上我的Github下载。实例序号28

image.png

你可能感兴趣的:(Solidworks输出)