Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations waross 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??

Status
Not open for further replies.

AReed

Mechanical
Dec 14, 2011
8
US
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)

RevLevel = InputBox("Please enter the new revision level", "Revision Entry", "A", , )



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
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top