SW Macro - How to reference $P
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.sldworksImports SolidWorks.Interop.swconstImports System.Runtime.InteropServicesImports SystemImports System.IOPartial Class SolidWorksMacroPublic Sub main()Dim swDoc As ModelDoc2 = NothingDim longstatus As Integer = 0Dim 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 IfEnd SubPublic swApp As SldWorksEnd Class I would consider posting this to the api section of the Solidworks forums.
https://forum.solidworks.com/community/solidworks/api
I have a little experience with coding, but unfortunately not enough to do what you require.
页:
[1]