Welcome to 3DCADForums

Join our CAD community forums where over 25,000 users interact to solve day to day problems and share ideas. We encourage you to visit, invite you to participate and look forward to your input and opinions. Acrobat 3D, AutoCAD, Catia, Inventor, IronCAD, Creo, Pro/ENGINEER, Solid Edge, SolidWorks, and others.

Register Log in

SW Macro - How to reference $PRPSHEET info in VB??


Hello All,

I am writing this macro to help handle our drawing releases throughout the company I work for. We have issues with Solidworks assemblies (and the occasional drawing) not being the most stable things in the world so I have "pieced" this together to save clean copies of our work at revision releases in .pdf format (I'm no programmer, last time I used VB was 5 years ago in intro to engineering).

Feel free to review and suggest ways to clean up the code but the main reason I am here is I wish to automate the process of pulling the revision letter from the part. Currently I have the code set up to prompt the user to enter the current Revision level (see line in Red). I would like to rewrite this line to pull from our property sheet for the part/assembly that is referenced in the open drawing. Each part we make has a Property sheet we pull info from to fill out the title block on our drawings, this typically requires a $PRPSHEET call in the drawing template to pull the info in automatically. I would really like to know how I can reference this information from my VB code and dimension it to a string variable to be used later in the code.

Does anyone know how to execute this?

Imports SolidWorks.Interop.sldworks
Imports SolidWorks.Interop.swconst
Imports System.Runtime.InteropServices
Imports System
Imports System.IO

Partial Class SolidWorksMacro

Public Sub main()

Dim swDoc As ModelDoc2 = Nothing
Dim longstatus As Integer = 0
Dim CurrentFilePath As String = ""
Dim CurrentFileName As String = ""
Dim ParentFilePath As String = ""
Dim NewFileName As String = ""
Dim ReleaseFilePath As String = ""
Dim RevFilePath As String = ""
Dim RevFileName As String = ""
Dim RevLevelAdd As String = ""
Dim RevLevel As String = ""

swDoc = CType(swApp.ActiveDoc, ModelDoc2)

[COLOR="red"]RevLevel = InputBox("Please enter the new revision level", "Revision Entry", "A", , )[/COLOR]

CurrentFilePath = swDoc.GetPathName 
CurrentFileName = IO.Path.GetFileNameWithoutExtension(CurrentFilePath) 
ParentFilePath = IO.Path.GetDirectoryName(CurrentFilePath) 
RevLevelAdd = CurrentFileName & "_Rev " & RevLevel 
My.Computer.FileSystem.CreateDirectory(ParentFilePath & "\Revision Archive\") 
RevFileName = IO.Path.ChangeExtension(RevLevelAdd, ".pdf") 
RevFilePath = ParentFilePath & "\Revision Archive\" 
If File.Exists(RevFilePath & RevFileName) Then 
MsgBox("Revision Level Already Exists - Cannot Overwrite File", MsgBoxStyle.Information) 
Exit Sub 
longstatus = swDoc.SaveAs3(RevFilePath & RevFileName, 0, 0) 
MsgBox("Saved Drawing as: " & RevFilePath & RevFileName, MsgBoxStyle.Information) 

CurrentFilePath = swDoc.GetPathName 
CurrentFileName = IO.Path.GetFileName(CurrentFilePath) 
ParentFilePath = IO.Path.GetDirectoryName(CurrentFilePath) 
My.Computer.FileSystem.CreateDirectory(ParentFilePath & "\Release\") 
NewFileName = IO.Path.ChangeExtension(CurrentFileName, ".pdf") 
ReleaseFilePath = ParentFilePath & "\Release\" 
longstatus = swDoc.SaveAs3(ReleaseFilePath & NewFileName, 0, 0) 
MsgBox("Saved Drawing as: " & ReleaseFilePath & NewFileName, MsgBoxStyle.Information) 
MsgBox("All Done, Have A Nice Day!!", MsgBoxStyle.Information) 

End If

End Sub

Public swApp As SldWorks

End Class