# 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;

        }
    }