This example shows how to fire application and document events.
'------------------------------------------------------------ ' Preconditions: ' 1. Create a VB.NET Windows console project. ' 2. Copy and paste this example into the VB.NET IDE. ' 3. Add a reference to: ' install_dir\APISDK\tlb\DraftSight.Interop.dsAutomation.dll. ' 4. Change the path and file name of the image file to insert. ' NOTE: The image file must be a PNG file. ' 5. Start DraftSight, create, save, and close a drawing ' named c:\test\circle.dwg. ' 6. Set a breakpoint in the project where the project connects to ' DraftSight. ' 7. Press F10 to step through the project. ' ' Postconditions: Message boxes pop up for all events, ' regardless if fired. Read the text in each message box before ' clicking OK to close it. '--------------------------------------------------------------
Imports System.IO Imports DraftSight.Interop.dsAutomation
Module Module_DocEvents
Dim WithEvents dsApp As Application Dim WithEvents dsDoc As Document Dim filePreOpenNotify As Boolean Dim filePostOpenNotify As Boolean Dim docDestroyNotify As Boolean Dim fileSavePreNotify As Boolean Dim fileSavePostNotify As Boolean Dim fileModifyNotify As Boolean
Public docName As String = "c:\test\circle.dwg" Public imageFileName As String = "c:\test\note.png"
Sub Main() 'Connect to DraftSight dsApp = GetObject(, "DraftSight.Application") dsApp.AbortRunningCommand() ' abort any command currently running in DraftSight to avoid nested commands
'Open document TestFileOpenEvents()
'Modify document TestFileModifyEvents()
'Save document as a different document TestFileSaveEvents()
'Close open document CloseAllDocuments()
End Sub
Private Sub TestFileOpenEvents()
filePreOpenNotify = False filePostOpenNotify = False
'Open document dsDoc = dsApp.OpenDocument2(docName, dsDocumentOpenOption_e.dsDocumentOpen_Default, dsEncoding_e.dsEncoding_Default)
) If Not dsDoc Is Nothing Then If False = filePreOpenNotify Then MsgBox("FileOpenPreNotify event wasn't fired while opening a document.") End If If False = filePostOpenNotify Then MsgBox("FileOpenPostNotify event wasn't fired while opening a document.") End If Else MsgBox("OpenDocument method returns Nothing for '" & docName & "' document.") End If End Sub
Private Sub TestFileModifyEvents()
Dim dsPicture As ReferenceImage = Nothing
Dim dsModel As Model Dim dsSketchMgr As DraftSight.Interop.dsAutomation.SketchManager
If Not dsDoc Is Nothing Then 'Get model space dsModel = dsDoc.GetModel If Not dsModel Is Nothing Then 'Get sketch manager dsSketchMgr = dsModel.GetSketchManager If Not dsSketchMgr Is Nothing Then fileModifyNotify = False
'Insert a picture in the model dsPicture = dsSketchMgr.InsertPicture(imageFileName, 0.0, 0.0, 0.0, 1.0, 0.0)
If Not dsPicture Is Nothing Then
'Check if ModifyNotify event is fired If False = fileModifyNotify Then MsgBox("ModifyNotify event wasn't fired while inserting a picture in the document.") End If Else MsgBox("ISketchManager::InsertPicture method returns Nothing for the '" & dsDoc.GetPathName & "' document") End If Else MsgBox("IModel.GetSketchManager method returns Nothing for the '" & dsDoc.GetPathName & "' document.") End If Else MsgBox("IDocument.GetModel method returns Nothing for the '" & dsDoc.GetPathName & "' document.") End If Else MsgBox("IApplication.OpenDocument method returns Nothing for the '" & docName & "' document.") End If End Sub Private Sub TestFileSaveEvents()
Dim savedDocName As String Dim saveError As dsDocumentSaveError_e
If Not dsDoc Is Nothing Then fileSavePreNotify = False fileSavePostNotify = False 'Save document savedDocName = docName & "_saved.dwg" dsDoc.SaveAs2(savedDocName, dsDocumentSaveAsOption_e.dsDocumentSaveAs_R2010_DWG, True, saveError) If saveError <> dsDocumentSaveError_e.dsDocumentSave_Succeeded Then MsgBox("SaveAs method returns '" & saveError & "' error.") Else 'Check FileSavePreNotify and FileSavePostNotify events If False = fileSavePreNotify Then MsgBox("FileSavePreNotify event wasn't fired after saving the '" & docName & "' document") End If If False = fileSavePostNotify Then MsgBox("FileSavePostNotify event wasn't fired after saving the '" & docName & "' document") End If End If Else MsgBox("OpenDocument method returns Nothing for the '" & docName & "' document.") End If End Sub
Private Sub CloseAllDocuments() Dim dsDocs As Object Dim index As Integer 'Get documents dsDocs = dsApp.GetDocuments If IsArray(dsDocs) Then For index = LBound(dsDocs) To UBound(dsDocs) dsDoc = dsDocs(index) dsApp.CloseDocument(dsDoc.GetPathName(), False) If False = docDestroyNotify Then MsgBox("DestroyNotify event wasn't fired after closing a document.") End If Next End If End Sub Private Sub dsApp_FileOpenPostNotify(ByVal Document As Document) Handles dsApp.FileOpenPostNotify filePostOpenNotify = True MsgBox("FileOpenPostNotify event was fired while opening a document.") End Sub Private Sub dsApp_FileOpenPreNotify(ByVal FileName As String, ByVal [Option] As dsDocumentOpenOption_e) Handles dsApp.FileOpenPreNotify filePreOpenNotify = True MsgBox("FileOpenPreNotify event was fired while opening a document.") End Sub Private Sub dsDoc_DestroyNotify() Handles dsDoc.DestroyNotify docDestroyNotify = True MsgBox("DestroyNotify event was fired after closing a document.") End Sub Private Sub dsDoc_FileSavePostNotify() Handles dsDoc.FileSavePostNotify fileSavePostNotify = True MsgBox("FileSavePostNotify event was fired after saving the '" & docName & "' document") End Sub Private Sub dsDoc_FileSavePreNotify(ByVal FileName As String, ByVal SaveOption As dsDocumentSaveAsOption_e) Handles dsDoc.FileSavePreNotify fileSavePreNotify = True MsgBox("FileSavePreNotify event was fired after saving the '" & FileName & "' document") End Sub Private Sub dsDoc_ModifyNotify() Handles dsDoc.ModifyNotify fileModifyNotify = True MsgBox("ModifyNotify event was fired while inserting a picture in document.") End Sub End Module