SolidWorks專門論壇 SolidWorks forum

 找回密碼
 註冊
查看: 16797|回復: 7

工程圖轉DWG PDF 檔名連結零件屬性_巨集

[複製鏈接]
發表於 2014/8/24 08:46:20 | 顯示全部樓層 |閱讀模式
  1. 功能:
  2. 把目前.SLDDRW的文件,依據該文件的路徑名稱存成 DWG,PDF文件,文件名稱為 "零件屬性的料號"_"工程圖圖頁名稱",
  3. 如本例  零件屬性料號(Part_no)"1234567",工程圖圖頁名稱 "PartA",執行宏后文件名稱為 1234567_PartA .
  4. 操作說明:
  5. 1. 把零件檔及工程圖檔存在同一文件路徑,如本例 C:/TEST/ .
  6. 2. 打開 SLDPRT , SLDDRW 文件,SLDDRW 工程圖設為目前文件,執行 main() 宏.
複製代碼

執行宏之前的文件:
fn.jpg
執行宏之後的文件:


back.jpg
屬性.jpg

test.zip

105.26 KB, 下載次數: 309

 樓主| 發表於 2014/8/24 08:51:17 | 顯示全部樓層
  1. Dim swApp As Object
  2. Dim Part As Object
  3. Dim longstatus As Long
  4. Dim swModel As ModelDoc2
  5. Dim swModelDocExt As ModelDocExtension
  6. Dim swCustProp As CustomPropertyManager
  7. Dim val As String
  8. Dim valout As String
  9. Dim bool As Boolean
  10. Dim sheet_name        As String
  11. Dim boolstatus          As Boolean
  12. Dim swExportPDFData     As SldWorks.ExportPdfData
  13. Dim swDrawingDoc As SldWorks.DrawingDoc
  14. Dim swSheet As SldWorks.Sheet


  15. Sub main()
  16.     Set swApp = Application.SldWorks
  17.     Set Part = swApp.ActiveDoc
  18.     On Error Resume Next
  19.    

  20. ' 取出工程圖圖頁名稱~~~~~~~~~~
  21. Set swModel = swApp.ActiveDoc
  22. Set swDrawingDoc = swModel
  23. Set swSheet = swDrawingDoc.GetCurrentSheet
  24. sheet_name = swSheet.GetName
  25. '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
複製代碼
 樓主| 發表於 2014/8/24 08:52:14 | 顯示全部樓層
  1. ' 取出零件屬性物料編號之值~~~~~~~~~~
  2.     Dim Path_N As String
  3.     Dim X_Path_Name As String
  4.     Set swSheet = swModel.GetCurrentSheet
  5.     Set swExportPDFData = swApp.GetExportFileData(1)
  6.     Set swModel = swApp.GetFirstDocument
  7. Path_Name = swModel.GetPathName '目前零件檔案的路徑及名稱.SLPRT
  8. Set swModelDocExt = swModel.Extension ' Get the custom property data
  9. Set swCustProp = swModelDocExt.CustomPropertyManager("")
  10. bool = swCustProp.Get4("part_no", False, val, valout) 'val:物料編號之值

  11. '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  12.    

複製代碼
 樓主| 發表於 2014/8/24 08:54:00 | 顯示全部樓層
  1. ' 轉成 DWG 及 PDF 檔~~~~~~~~~~~~~
  2. Path_N = Left(Path_Name, Len(Path_Name) - 7)  '取出目前檔案的路徑及名稱(不含副檔名)
  3.     For i = 1 To 2
  4.         Select Case i
  5.         Case 1 'save "DWG" file
  6.             X_Path_Name = val & "_" & sheet_name & ".DWG"
  7.         Case 2 'save "PDF" file
  8.             X_Path_Name = val & "_" & sheet_name & ".PDF"
  9.         End Select
  10.     longstatus = Part.SaveAs3(X_Path_Name, 0, 0) '儲存 DWG,PDF之文件
  11.     Next
  12. '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  13.    
  14. End Sub
複製代碼
發表於 2015/7/1 19:04:26 | 顯示全部樓層
好東西,我現在才看到
發表於 2015/8/11 17:04:20 | 顯示全部樓層
想請教一下~如果工程圖多很多圖頁,但我只想轉目前圖頁,該怎麼修改呢?
發表於 2016/5/6 19:07:35 | 顯示全部樓層
此宏不能同时打开多个工程图档案运行,不然会出现属性读取错误

只能打开一张图档,运行之后关闭图档,然后再打开下一张图档运行此宏

Set swModel = swApp.GetFirstDocument  问题出在这里

點評

试过之后把 Set swModel = swApp.GetFirstDocument 修改为: Set swModel = swApp.GetDocuments 可以直接生成dwg和pdf格式文件,但是所有的配置的图档 都合并在同一个文件当中,如下: 另外文档与图档需要名称  詳情 回復 發表於 2021/2/12 17:43
發表於 2021/2/12 17:43:45 | 顯示全部樓層
DaveChan 發表於 2016/5/6 19:07
此宏不能同时打开多个工程图档案运行,不然会出现属性读取错误

只能打开一张图档,运行之后关闭图档,然后 ...

试过之后把
Set swModel = swApp.GetFirstDocument
修改为:

Set swModel = swApp.GetDocuments
可以直接生成dwg和pdf格式文件,但是所有的配置的图档
都合并在同一个文件当中,如下:


                               
登錄/註冊後可看大圖


                               
登錄/註冊後可看大圖

                               
登錄/註冊後可看大圖

另外文档与图档需要名称相同才可以启用这个宏。


您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版上論壇|論壇來自幾何科技 論壇架構版次 20240312

GMT+8, 2024/4/26 12:09 , Processed in 0.133228 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回復 返回頂部 返回列表