Check If Drawing Page Is Loaded

Discussion in 'SolidWorks' started by inthepickle, Jul 20, 2006.

  1. inthepickle

    inthepickle Guest

    This is my code. It saves a PDF of a Solidworks drawing on our network
    drive. The problem is that the PDF sometimes has empty views. It will
    have the annotations, but not the view. I think if I cycled through
    the pages first, wait for the all to load, and then run the macro, the
    PDF will be correct. I know how to cycle through the drawings, but not
    wait for them to fully load. Can someone help me out?




    Dim SwApp As
    SldWorks.SldWorks
    Dim Model As
    SldWorks.ModelDoc2
    Dim MyPath, ModName, NewName, FolderName, FilePath, FileName As
    String
    Dim MB As
    Boolean
    Dim Errs As Long
    Dim Warnings As Long
    Const SW_SHOWNORMAL = 1
    Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA"
    (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As
    String, ByVal lpParameters As String, ByVal lpDirectory As String,
    ByVal nShowCmd As Long) As Long
    Sub main()

    Set SwApp = Application.SldWorks
    Set Model = SwApp.ActiveDoc

    'checks to see if something is open
    If Model Is Nothing Then
    MB = MsgBox("No drawing loaded!", vbCritical)
    Exit Sub
    End If

    'checks to make sure drawing is open
    If Model.GetType <> 3 Then
    SwApp.SendMsgToUser "Current document is not a drawing."
    Exit Sub
    End If

    'check to make sure drawing has been saved
    FileName = Model.GetPathName
    If FileName = "" Then
    MB = MsgBox("Save Drawing First!", vbCritical)
    Exit Sub
    End If

    ModName = Left(Model.GetTitle, InStrRev(Model.GetTitle, " Sheet") -
    3) & ".pdf" 'gets file name & adds pdf extension
    FolderName = Left(ModName, 4) 'gets first 4 characters from file
    name

    CreateDir "H:\DWGS\", Left(ModName, 4) 'creates folder in specified
    directory uncomment if needed

    'only works if folder has already been manually created unless
    previous line is active
    MyPath = "H:\DWGS\" & FolderName & "\" & ModName

    MB = Model.SaveAs4(MyPath, swSaveAsCurrentVersion,
    swSaveAsOptions_Silent, Errs, Warnings) 'creates PDF

    'error checking
    'MsgBox "Errors: " & Errs & vbCrLf & "Warnings: " & Warnings
    If Warnings <> 0 Then MsgBox "There were warnings. PDF creation
    may have failed. Verify" & Chr(13) & "results and check possible
    causes.", vbExclamation
    If MB = False Then MsgBox "PDF creation has failed! Check save
    location, available" & Chr(13) & "disk space or other possible
    causes.", vbCritical

    FilePath = "H:\DWGS\" & FolderName & "\" 'just gets path
    FileName = Left(Model.GetTitle, InStrRev(Model.GetTitle, " Sheet")
    - 3) 'just gets name
    retval = ShellExecute(1, "Open", FilePath & FileName & ".pdf", "",
    FilePath, SW_SHOWNORMAL) 'opens PDF after save

    End Sub
    Sub CreateDir(Path As String, MyFolder As String)
    Dim stPath As String
    On Error Resume Next
    stPath = Path & "\" & MyFolder
    MkDir stPath
    End Sub
     
    inthepickle, Jul 20, 2006
    #1
  2. inthepickle

    samu.niveri Guest

    I have not found any ways to check if drawing page is loaded, but I
    think that if you do normal save for drawing before you make pdf of it
    it would help. Another way is use timer to get pause, but in that way
    delay for each drawing could be too long.
     
    samu.niveri, Jul 20, 2006
    #2
  3. inthepickle

    Mr. Who Guest

    Try cycling through the drawing pages and doing a GraphicsRedraw2 call
     
    Mr. Who, Jul 21, 2006
    #3
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.