Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations TugboatEng on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

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

  • Thread starter Thread starter A_Reed
  • Start date Start date
A

A_Reed

Guest
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?


Code:
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 
Else 
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
 

Part and Inventory Search

Sponsor

Back
Top