ds-blue-logo
Preview  |  SOLIDWORKS USER FORUM
Use your SOLIDWORKS ID or 3DEXPERIENCE ID to log in.
JMJim Mitchell25/11/2013

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 ([COLOR="red"]see line in Red[/COLOR]). 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[/CODE]