# Insert SimpleNote Example (VB.NET)

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