ds-blue-logo
Preview  |  SOLIDWORKS USER FORUM
Use your SOLIDWORKS ID or 3DEXPERIENCE ID to log in.
MCMathew Challinor10/01/2017

hi,

I had a macro that was running fine until we have just changed to 2016 SP5, when I debug the macro I get the error Object library feature not supported.

Sub Main()
 
    Dim swApp               As SldWorks.SldWorks
    Dim swModel             As ModelDoc2
    Dim swDraw              As DrawingDoc
    Dim longstatus          As Long, longwarnings As Long
    Dim FilePath            As String
    Dim PDFpath             As String
    Dim PathSize            As String
    Dim dwgname          As String
    Dim dwgFilePath     As String


    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
   
        'Check if a file is open
    If swModel Is Nothing Then
        MsgBox ("Please open a Tooling Assembly Drawing and Re Run the macro.")
        Exit Sub
    End If
   
    'Check if a drawing is open
    If Not swModel.GetType = swDocDRAWING Then
        MsgBox ("Please open a Tooling Assembly Drawing and Re Run the macro.")
        Exit Sub
    End If
       
       
       
'Get PDF name
    
     FilePath = swModel.GetTitle
     PathSize = Strings.Len(FilePath)
     dwgname = Strings.Left(FilePath, PathSize - 16)
   
   
'Check if PDF is already open

    If IsFileOpen("P:\Tooling Assemblies\Tooling Assembly Drawings\TA-1001.pdf") Then
        ' if file open, user message stating the file in use.
        MsgBox dwgname & ".pdf" & " is already opened" & vbCr & " File cannot be saved" & "Close Tool Assembly Data Base and Re Run Macro"
        Exit Sub

    Else
   
         PDFpath = "P:\Tooling Assemblies\Tooling Assembly Drawings\" & dwgname & ".pdf"
         longstatus = swModel.SaveAs3(PDFpath, 0, 0)
        
    End If
   
    'Save Drawing
    Set swModel = swApp.ActiveDoc
    dwgFilePath = swModel.GetPathName
    longstatus = swModel.SaveAs3(dwgFilePath, 0, 0)
   
   
    'Save Drawing as PDF and close document
   
    PDFpath = "P:\Tooling Assemblies\Tooling Assembly Drawings\" & dwgname & ".pdf"
    longstatus = swModel.SaveAs3(PDFpath, 0, 0)
    swApp.CloseDoc swModel.GetTitle()
   
End Sub

Function IsFileOpen(filename As String)
    Dim filenum As Integer, errnum As Integer

    On Error Resume Next
    filenum = FreeFile()
    ' Attempt to open the file and lock it.
    Open filename For Input Lock Read As #filenum
    Close filenum
    errnum = Err
    On Error GoTo 0
   
    ' Check to see which error occurred.
    Select Case errnum

        Case 0
         IsFileOpen = False

        Case 70
            IsFileOpen = True

        ' Another error occurred.
        Case Else
            Error errnum
    End Select

End Function

Regards

Mat