Create Linear Pattern Example (C#)

This example shows how to to create a linear pattern.

//-------------------------------------------------------------
// 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 document.
// 6. Click Start Debugging.
//
// Postconditions: 
// 1. Draws a Circle.
// 2. Draws a 2D PolyLine.
// 3. Creates a linear pattern using the Circle and 2D PolyLine 
//    entities.
// 4. Zooms the drawing to fit.
// 5. Examine the drawing.
//------------------------------------------------------------

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

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

        
static void Main(string[] args)
        {
            
//Connect to DraftSight application
            dsApp = (DraftSight.Interop.dsAutomation.Application)Marshal.GetActiveObject("DraftSight.Application");
            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();

            
//Draw a Circle
            double[] centerPoint = new double[] { 5, 5, 0 };
            
double radius = 3;
            
Circle dsCircle = dsSketchMgr.InsertCircle(centerPoint[0], centerPoint[1], centerPoint[2], radius);

            
//Draw a 2D PolyLine
            double[] coordinatesArray = new double[]
            {
                10, 4,
                10, 6,
                14, 6,
                14, 4
            };
            
bool closed = true;
            
PolyLine dsPolyLine = dsSketchMgr.InsertPolyline2D(coordinatesArray, closed);

            
//Linear pattern parameters
            int numberElementsOnVerticalAxis = 4;
            
int numberElementsOnHorizontalAxis = 5;
            
double spacingOnVerticalAxis = 20;
            
double spacingOnHorizontalAxis = 40;
            
double patternAngle = Math.PI / 4; //In radians

            //Prepare list of entity types
            int[] dsEntityTypes = new int[]
            {
                (
int)dsObjectType_e.dsCircleType,
                (
int)dsObjectType_e.dsPolyLineType
            };

            
//Prepare list of entities
            DispatchWrapper[] dsEntities = new DispatchWrapper[]
            {
                
new DispatchWrapper(dsCircle),
                
new DispatchWrapper(dsPolyLine)
            };

            
//Create linear pattern
            dsSketchMgr.PatternLinear(numberElementsOnVerticalAxis, numberElementsOnHorizontalAxis,
                                      spacingOnVerticalAxis, spacingOnHorizontalAxis, patternAngle,
                                      dsEntityTypes, dsEntities);

            
//Zoom to fit
            dsApp.Zoom(dsZoomRange_e.dsZoomRange_Fit, null, null);
        }
    }
}