Transform Circle to Region Example (C#)

This example shows how to transform a Circle to a Region.

//--------------------------------------------------------------
// 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 references to System and System.Windows.Forms.
// 5. Start DraftSight.
// 6. Open the Immediate window.
// 7. Press F5 to debug the project.
//
// Postconditions: 
// 1. A Circle is constructed in the drawing document.
// 2. The Circle is transformed to a Region.
// 3. Whether the Region is visible and its perimeter value are 
//    printed to the Immediate window.
//----------------------------------------------------------------
using DraftSight.Interop.dsAutomation;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System;
 
static class Module1
{
 
    public static void Main()
    {
        Document dsDoc = default(Document);
        Model dsModel = default(Model);
        SketchManager dsSketchManager = default(SketchManager);
        SelectionManager dsSelectionManager = default(SelectionManager);
        Circle dsCircle = default(Circle);
        double centerX = 0;
        double centerY = 0;
        double centerZ = 0;
        double radius = 0;
        double perimeter = 0;
        bool status = false;
 
        // Connect to DraftSight
        DraftSight.Interop.dsAutomation.Application dsApp = ConnectToDraftSight();
        if (null == dsApp)
        {
            return;       
        }
        // Abort any command currently running in DraftSight to 
        // avoid nested commands
        dsApp.AbortRunningCommand();
 
 
        // Get active document
        dsDoc = dsApp.GetActiveDocument();
        if (dsDoc == null)
        {
            MessageBox.Show("There are no open documents in DraftSight.");
            return;
        }
 
        // Get model space
        dsModel = dsDoc.GetModel();
 
        // Get Sketch Manager
        dsSketchManager = (SketchManager)dsModel.GetSketchManager();
 
        // Circle parameters
        centerX = 1.0;
        centerY = 2.0;
        centerZ = 0.0;
        radius = 5.0;
 
        // Construct a Circle
        dsCircle = dsSketchManager.InsertCircle(centerX, centerY, centerZ, radius);
 
        // Select the Circle
        status = dsCircle.Select(true);
 
 
        if (status)
        {
            // Get selected Circle
            dsSelectionManager = dsDoc.GetSelectionManager();
            dsObjectType_e objType;
            object dsObj = dsSelectionManager.GetSelectedObject(dsSelectionSetType_e.dsSelectionSetType_Current, 0, out objType);
            DispatchWrapper[] dsSelObj = new DispatchWrapper[1];
            dsSelObj[0] = new DispatchWrapper(dsObj);
            object dsSelObject = dsSelObj;
 
            // Transform Circle to Region
            object regions;
            dsSketchManager.InsertRegion(dsSelObject, out regions);
            object[] dsRegionObjs = (object[])regions;
            foreach (object regionObj in dsRegionObjs)
            {
                Region dsRegion = regionObj as Region;
            
 
                // Is Region visible?
                status = dsRegion.Visible; 
                Debug.Print("Is Region visible? " + status);
 
                // Get perimeter of Region
                dsRegion.GetPerimeter(out perimeter);
                Debug.Print("Perimeter of Region: " + perimeter);
            }
 
        }
 
    }
    private static DraftSight.Interop.dsAutomation.Application ConnectToDraftSight()
    {
        DraftSight.Interop.dsAutomation.Application dsApp = null;
 
        try
        {
            // Connect to DraftSight
            dsApp = (DraftSight.Interop.dsAutomation.Application)Marshal.GetActiveObject("DraftSight.Application");
        }
        catch (Exception ex)
        {
            MessageBox.Show("Failed to connect to DraftSight. Cause: " + ex.Message);
            dsApp = null;
        }
 
        return dsApp;
 
 
    }
}