Insert Hatch Example (C#)

This example shows how to insert a Hatch in a drawing document.

//--------------------------------------------------------------
// 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 and open a drawing document.
// 6. Start debugging the project.
//
// Postconditions: A Hatch is inserted in the drawing document
// and zoomed to fit.
//----------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Text;
using DraftSight.Interop.dsAutomation;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.Diagnostics;

namespace AddHatch
{
    
class Program
    {
        
private static DraftSight.Interop.dsAutomation.Application dsApp;

        
static void Main(string[] args)
        {
            
//Connect to DraftSight application
            dsApp = ConnectToDraftSight();
            
if (null == dsApp)
            {
                
return;
            }

            dsApp.AbortRunningCommand();
// abort any command currently running in DraftSight to avoid nested commands

            
//Get active document
            Document dsDoc = dsApp.GetActiveDocument();
            
if (null == dsDoc)
            {
                
MessageBox.Show("There are no open documents in DraftSight.");
                
return;
            }

            
//Get model space
            Model dsModel = dsDoc.GetModel();

            
//Get Sketch Manager
            SketchManager dsSketchMgr = dsModel.GetSketchManager();

            
//Hatch parameters
            int[] boundaryPointCountArray = new int[] { 4 };
            
double[] boundaryPoints = new double[]
            {
                0, 0,
                2, 0,
                2, 2,
                0, 2,
            };
            
string patternName = "ANSI31";
            
double patternScale = 1.0;
            
double patternAngle = Math.PI / 4; // In radians

            //Insert Hatch
            Hatch dsHatch = dsSketchMgr.InsertHatchByBoundary(boundaryPointCountArray, boundaryPoints, patternName, patternScale, patternAngle);
            
if (null != dsHatch)
            {
                
//Change color of Hatch
                Color dsColor = dsHatch.Color;
                dsColor.SetNamedColor(
dsNamedColor_e.dsNamedColor_Green);
                dsHatch.Color = dsColor;

                
//Zoom to fit
                dsApp.Zoom(dsZoomRange_e.dsZoomRange_Fit, null, null);
            }
            
else
            {
                
MessageBox.Show("Hatch entity was not added to the current drawing.");
            }
        }

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