iCAx开思网

标题: 关于Solidworks 二次开发中打包问题 [打印本页]

作者: wenmk    时间: 2018-12-26 10:01
标题: 关于Solidworks 二次开发中打包问题
本帖最后由 wenmk 于 2018-12-27 11:32 编辑

本人在学习Solidworks 二次开发,有很多不懂的地方,想请教一下论坛前辈关于打包一些问题。
在API帮助中有关于 Pack And Go 章节我已经仔细阅读过,现在已经能获取到打包文件的原始路径、数量及文件名,也可以设置要保存的路径。但在设置要打包保存的路径、数量及文件名时遇到了困难,在swPackAndGo.SetDocumentSaveToNames(PathNameList)方法中,要求(PathNameList数组中要保存的文档的数量、顺序和类型必须与 swPackAndGo.GetDocumentNames(PathNameList所返回的数组匹配,请高手帮忙看一下,如何获取PathNameList)数组中的参数,并修改文件名、路径及删除不要打包的文件,并返回给(PathNameList),谢谢!

作者: wenmk    时间: 2018-12-26 13:14
本帖最后由 wenmk 于 2018-12-26 13:43 编辑

贴上vb.net 代码:
  1.         Dim Swapp As SldWorks.SldWorks
  2.         Dim Prat As SldWorks.ModelDoc2
  3.         Dim swModelDocExt As SldWorks.ModelDocExtension
  4.         Dim swPackAndGo As SldWorks.PackAndGo
  5.         Dim namesCount As Integer
  6.         Dim status As Boolean
  7.         Dim pgFileNames As Object = Nothing
  8.         Dim Kei As String
  9.         Dim myPath As String
  10.         Dim Qianz As Boolean
  11.         Dim Hoz As Boolean
  12.         'Dim pgGetFileNames As Object
  13.         'Dim pgDocumentStatus As Object
  14.         Dim statuses As Object
  15.         Dim i As Integer
  16.         Dim tempArray As String
  17.         'Dim Dabao() As String
  18.         Dim pgFileStatus As Object = Nothing


  19.         tempArray = RichTextBox1.Text
  20.         Swapp = CreateObject("Sldworks.application")
  21.         Prat = Swapp.ActiveDoc
  22.         swModelDocExt = Prat.Extension

  23.         '准备打包
  24.         'Debug.Print("Pack and Go")
  25.         swPackAndGo = swModelDocExt.GetPackAndGo

  26.         '获得获取装配中的文档数量
  27.         namesCount = swPackAndGo.GetDocumentNamesCount
  28.         Debug.Print("  Number of model documents: " & namesCount)

  29.         '是否打包工程图
  30.         swPackAndGo.IncludeDrawings = RadioButton1.Checked
  31.         Debug.Print("  Include drawings: " & swPackAndGo.IncludeDrawings)
  32.         Debug.Print(RadioButton1.Checked)

  33.         ''是否打包标准件
  34.         'swPackAndGo.IncludeToolboxComponents = RadioButton3.Checked
  35.         'Debug.Print(RadioButton3.Checked)

  36.         '获取打开模型路径和文件名
  37.         status = swPackAndGo.GetDocumentNames(pgFileNames)
  38.         If Not pgFileNames Is Nothing Then
  39.             For i = 0 To UBound(pgFileNames)
  40.                 pgFileNames(i) = pgFileNames(i).Toupper()
  41.                 Kei = pgFileNames(i)
  42.                 RichTextBox1.Text &= Kei & vbNewLine
  43.                 Debug.Print(Kei)
  44.             Next i
  45.         End If

  46.         '设置保存模型的文件夹
  47.         myPath = TextBox1.Text
  48.         status = swPackAndGo.SetSaveToName(True, myPath)

  49.         '获取用于打包的模型文档路径和名称
  50.         status = swPackAndGo.GetDocumentSaveToNames(pgFileNames, 0)
  51.         If Not pgFileNames Is Nothing Then
  52.             For i = 0 To UBound(pgFileNames)
  53.                 pgFileNames(i) = pgFileNames(i).Toupper()
  54.             Next i
  55.         End If

  56.         '设置更改打包的文档的路径和文件名
  57.         Dim FavetoNames As Boolean
  58.         FavetoNames = swPackAndGo.SetDocumentSaveToNames(pgFileNames)

  59.         '向文件名添加前辍和后辍
  60.         Qianz = CheckBox1.Checked
  61.         Hoz = CheckBox2.Checked
  62.         If Qianz = True Then
  63.             swPackAndGo.AddPrefix = TextBox3.Text
  64.         ElseIf Hoz = True Then
  65.             swPackAndGo.AddSuffix = TextBox4.Text
  66.         End If

  67.         ''如果向文件名添加前辍和后辍,则验证文件名和文件路径
  68.         'ReDim pgGetFileNames(namesCount - 1)
  69.         'ReDim pgDocumentStatus(namesCount - 1)
  70.         'status = swPackAndGo.GetDocumentSaveToNames(pgGetFileNames, pgDocumentStatus)
  71.         'For i = 0 To (namesCount - 1)
  72.         '    Debug.Print("    My path and filename is: " & pgGetFileNames(i))
  73.         'Next i

  74.         '平展到单一文件夹,将所有文件保存到根目录
  75.         swPackAndGo.FlattenToSingleFolder = True

  76.         '打包
  77.         statuses = swModelDocExt.SavePackAndGo(swPackAndGo)
复制代码



作者: scattie    时间: 2018-12-27 09:34
好东西,谢谢分享!!
作者: wenmk    时间: 2018-12-27 11:33
已解决,谢谢大家关心!!

作者: 风中de沙    时间: 2019-4-14 11:18
好东西,谢谢分享,本人是个VB白痴不会用,可否上传你的宏谢谢!!!
作者: scattie    时间: 2019-4-15 09:48
来学习学习

作者: Gary.H    时间: 2019-4-16 09:20
二次开发好难啊
作者: 735057167    时间: 2019-4-16 15:45
我复制进去,代码还是显示出错
作者: wenmk    时间: 2020-2-17 12:32
735057167 发表于 2019-4-16 15:45
我复制进去,代码还是显示出错

这个代码是VB.NET的,不是VBA,VBA我也不会!

作者: a8012024    时间: 2020-4-2 18:58
学习学习
作者: nbxhywsb    时间: 2020-12-24 11:35
学习le
作者: snycef    时间: 2022-5-14 16:15
楼猪太神了,学习了




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3