Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

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

Macro Question

Status
Not open for further replies.

MachineSMMC

Industrial
May 7, 2004
70
I have this macro I got from this forum that saves a part file to an iges format. It automatically saves it to the folder location that the part is in. I am going to be using PDM works so I need to have it save it in a different spot. What do I need to change to get this to work?

Here is the Macro:

Option Explicit

Dim swApp, Part As Object
Dim BoolStatus As Boolean
Dim LongStatus As Long
Dim e As Long
Dim w As Long

Dim Msg As String
Dim PartName, Rev As String


Sub main()

Set swApp = CreateObject("SldWorks.Application")
Set Part = swApp.ActiveDoc

If ((Part Is Nothing) Or (Not (Part.GetType Eqv swDocPART))) Then
Msg = "A part document must be active to use this command!"
LongStatus = swApp.SendMsgToUser2(Msg, swMbWarning, swMbOk)
End

Else
PartName = Part.GetPathName
PartName = Left(PartName, Len(PartName) - 7) & ".igs"

BoolStatus = Part.SaveAs4(PartName, 0, 0, e, w)

If BoolStatus = False Then
Msg = "Failed to save IGS document!"
LongStatus = swApp.SendMsgToUser2(Msg, swMbWarning, swMbOk)
Else
' Msg = "Saved part as " & PartName
' LongStatus = swApp.SendMsgToUser2(Msg, swMbWarning, swMbOk)
End If

End If

Set Part = Nothing
Set swApp = Nothing

End Sub


Thanks
Chris
 
Replies continue below

Recommended for you

PartName = Part.GetPathName
PartName = Left(PartName, Len(PartName) - 7) & ".igs"
These two lines are what take the current part path and swap ".sldprt" for ".igs". Instead of using "Part.GetPathName" to determine your path, set a new path at this point.

[bat]I could be the world's greatest underachiever, if I could just learn to apply myself.[bat]
-SolidWorks API VB programming help
 
Could you give me an example? I am not sure I know exactly what I need to do.

Thanks
Chris
 
you could just replace those two lines with this one:

PartName = "C:\temp.igs"
 
I still want to maintain the parts original name just change the location. Cab you give me an example of that?

Thanks
Chris
 
OK, fine. Try this:
*******
PartName = Part.GetTitle
If Right(PartName, 7) = ".sldprt" Then
PartName = Left(PartName, Len(PartName) - 7)
End If
PartName = "C:\" & PartName & ".igs"
*******
If you want the file stored somwhere other than the root of your C: drive, just replace C:\ with whatever path you wish.

I'm pretty sure this will work, but I cannot test it right now. I don't have PDMWorks, either, so that may change something (but I doubt it).

This is really not very difficult...You really should try and learn Visual Basic. I think VARS give some courses, or you can even take a general VB class. Also, there are lots of places on the web to help learn VB.
 
Ok, thanks

I have every intention on learning more about VBA. I already have a book just haven't had any time to look through it yet.

Chris
 
Definitely start w/ VBA before you get too deep into macros. It really helps.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor