This example shows how to insert and change a SimpleNote in a drawing document.
'-------------------------------------------------------------- ' 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. Start DraftSight and open a document. ' 5. Start debugging the project. ' ' Postconditions: ' 1. A message box pops up when a SimpleNote is ' inserted in the drawing. ' 2. The selection filter is set to select SimpleNotes only and ' is activated. ' 3. The SimpleNote is selected and its text changed. Examine ' the drawing to verify. '----------------------------------------------------------------
Imports DraftSight.Interop.dsAutomation Module Module1
Sub Main()
Dim dsApp As Application Dim dsDoc As Document Dim dsModel As Model Dim dsSketchManager As SketchManager Dim dsSimpleNote As SimpleNote Dim startX, startY, startZ As Double Dim noteValue As String Dim angle, height As Double
'Connect to DraftSight dsApp = GetObject(, "DraftSight.Application") dsApp.AbortRunningCommand() ' abort any command currently running in DraftSight to avoid nested commands
'Get active document dsDoc = dsApp.GetActiveDocument() If Not dsDoc Is Nothing Then
'Get model space dsModel = dsDoc.GetModel()
'Get Sketch Manager dsSketchManager = dsModel.GetSketchManager()
'SimpleNote parameters (angle value should be passed in radians) startX = 0.0# startY = 0.0# startZ = 0.0# noteValue = "Sample text" angle = 3.14159265358979 / 4 '45 degrees in radians height = 1.0#
'Add a SimpleNote dsSimpleNote = dsSketchManager.InsertSimpleNote(startX, startY, startZ, height, angle, noteValue)
If Not dsSimpleNote Is Nothing Then MsgBox("A SimpleNote was added to drawing.") End If
Else
MsgBox("There are no open documents in DraftSight.")
End If 'Change SimpleNote text ChangeSimpleNotesText(dsDoc, dsSketchManager)
End Sub
Sub ChangeSimpleNotesText(ByVal dsDoc As Document, ByVal dsSketchManager As SketchManager) 'Get Selection Manager Dim dsSelectionMgr As SelectionManager = dsDoc.GetSelectionManager()
'Get selection filter Dim dsSelectioFilter As SelectionFilter = dsSelectionMgr.GetSelectionFilter()
'Clear selection filter dsSelectioFilter.Clear()
'Add filter to get only SimpleNotes dsSelectioFilter.AddEntityType(dsObjectType_e.dsSimpleNoteType)
'Activate selection filter dsSelectioFilter.Active = True
'Get all Layers in drawing Dim layerNames As String() = GetLayerNames(dsDoc)
'Get SimpleNote entities Dim entityObjects As Object Dim entityTypes As Object dsSketchManager.GetEntities(dsSelectioFilter, layerNames, entityTypes, entityObjects) If entityObjects IsNot Nothing AndAlso entityTypes IsNot Nothing Then Dim dsEntityArray As Object() = DirectCast(entityObjects, Object())
Const newNoteValue As String = "New sample text"
'Iterate through all SimpleNote entities For index As Integer = 0 To dsEntityArray.Length - 1 'Cast the selected object to SimpleNote Dim dsSimpleNote As SimpleNote = TryCast(dsEntityArray(index), SimpleNote)
'Get SimpleNote text Dim noteValue As String = dsSimpleNote.Contents
'Set new text for SimpleNote dsSimpleNote.Contents = newNoteValue Next End If End Sub
Function GetLayerNames(ByVal dsDoc As Document) As String() Dim layerNames As String() = Nothing
Dim dsLayerManager As LayerManager = dsDoc.GetLayerManager()
Dim dsLayers As Object() = DirectCast(dsLayerManager.GetLayers(), Object()) If dsLayers IsNot Nothing Then layerNames = New String(dsLayers.Length - 1) {}
For index As Integer = 0 To dsLayers.Length - 1 Dim dsLayer As Layer = TryCast(dsLayers(index), Layer) layerNames(index) = dsLayer.Name Next End If
Return layerNames End Function
End Module
End Module