Get and Set Drawing Properties Example (C#)

This example shows how to get and set standard and custom drawing properties.

//--------------------------------------------------------------
// Preconditions:
// 1. Create a C# Windows console project.
// 2. Copy and paste this example into the C# IDE.
// 3. Add a reference to:
//    install_dir\APISDK\tlb\DraftSight.Interop.dsAutomation.dll.
// 4. Add a reference to System.Windows.Forms.
// 5. Start DraftSight and open a document.
// 6. Press F5.
//
// Postconditions: 
// 1. Connects to DraftSight.
// 2. Gets the active document.
// 3. Gets and sets standard and custom drawing properties.
// 4. Displays a message box showing the total number of
//    drawing custom properties. Click OK to close the message
//    box.
// 5. Displays a message box showing the first custom property  
//    in the list of custom properties. Click OK to close the
//    message box.
// 6. Displays a message box instructing you to
//    type DRAWINGPROPERTIES at the prompt in the
//    command window to open the drawing properties dialog. 
//    Click OK to close the message box. 
// 7. Examine the properties on both tabs of the drawing 
//    properties dialog.
//----------------------------------------------------------------
 
using System;
using DraftSight.Interop.dsAutomation;
using System.Runtime.InteropServices;
using System.Windows.Forms;
 
namespace DrawingPropertiesCSharp
{
    class Program
    {
        public static void Main()
        {
 
            DraftSight.Interop.dsAutomation.Application dsApp;
 
            //Connect to DraftSight application
            dsApp = (DraftSight.Interop.dsAutomation.Application)Marshal.GetActiveObject("DraftSight.Application");
 
            if (null == dsApp)
            {
                return;
            }
            //Abort any command currently running in DraftSight to avoid nested commands
            dsApp.AbortRunningCommand();
 
            //Get active document
            Document dsDoc = dsApp.GetActiveDocument();
            if (null == dsDoc)
            {
                MessageBox.Show("There are no open documents in DraftSight.");
                return;
            }
 
            //Get drawing properties
            DrawingProperties dsDrawingProperties = dsDoc.GetDrawingProperties();
 
            if (null == dsDrawingProperties)
            {
                MessageBox.Show("There are no valid drawing properties.");
                return;
            }
 
            //Set drawing properties
            dsDrawingProperties.Author = "Me";
            dsDrawingProperties.Keywords = "test,sample";
            dsDrawingProperties.Comments = "Properties created by this DraftSight API application";
            dsDrawingProperties.Title = "Title";
            dsDrawingProperties.Subject = "Test";
 
            //Add key and value to the drawing custom properties
            string key = "0123";
            string value = "Test Value";
            dsDrawingProperties.AddCustomProperty(key, value);
 
            //Set another drawing custom property
            dsDrawingProperties.SetCustomProperty("9234""234");
 
            //Remove previously added drawing custom property
            dsDrawingProperties.RemoveCustomProperty("234");
 
            //Set drawing custom property with an index number
            dsDrawingProperties.SetCustomPropertyAt(1, "testvalue");
 
            //Get number of custom properties 
            MessageBox.Show("Number of custom properties: " + dsDrawingProperties.GetCustomPropertyCount());
 
 
            string keyValue;
            if (dsDrawingProperties.GetCustomPropertyCount() >= 0)
            {
                //Get first drawing custom property and key value in the list of drawing custom properties
                string customProperty = dsDrawingProperties.GetCustomPropertyAt(0, out keyValue);
                MessageBox.Show("Custom property: " + customProperty + ", Key: " + keyValue);
            }
            
 
            //Type DRAWINGPROPERTIES at the prompt in the command window 
            //to see the drawing properties
            MessageBox.Show("Type DRAWINGPROPERTIES at the prompt in the command window to open the drawing properties dialog. Examine the information on both tabs.");
        }        
    }
}