Jump to content

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


A_Reed

Recommended Posts

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

Edited by A_Reed
Link to comment
Share on other sites

Okay so I have kind of figured out how to draw information from the property tables of a part with the CustomPropertyManager and swCustProp.Get4 now I have to figure out how to reference the part in the drawing and not the drawing itself. Right now all I get is the property table available from within the print, there has to be a way to redirect where the macro is looking for the information.

 

Or alternately I think I can write a sub with a public dim to open the part/assembly file, reference the "Revision" property, store it in my variable, close the part and exit the sub to continue on with the main.

 

Can anyone provide tips or guidance or am I just talking to myself :P??

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...