Create Circular Pattern Example (C#)
This example shows how to construct a circular pattern of Circles in a
DraftSight drawing.
//--------------------------------------------------------------
// 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. Run the macro.
//
// Postconditions:
// 1. Constructs three Circles.
// 2. Creates a circular pattern using the Circles.
// 3. Zooms the drawing to fit.
// 4. Examine the drawing.
//----------------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using DraftSight.Interop.dsAutomation;
using System.Runtime.InteropServices;
using System.Windows.Forms;
static class Module1
{
public static void Main()
{
DraftSight.Interop.dsAutomation.Application dsApp;
Document dsDoc = default(Document);
Model dsModel = default(Model);
SketchManager dsSketchManager = default(SketchManager);
Circle dsCircle1 = default(Circle);
Circle dsCircle2 = default(Circle);
Circle dsCircle3 = default(Circle);
//Connect to DraftSight
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
dsDoc = dsApp.GetActiveDocument();
if ((dsDoc != null)) {
//Get model space
dsModel = dsDoc.GetModel();
//Get Sketch Manager
dsSketchManager = dsModel.GetSketchManager();
//Circle parameters
double center1X = 0;
double center2X = 0;
double center3X = 0;
center1X = 30.0;
center2X = 60.0;
center3X = 90.0;
double center1Y = 0;
double center2Y = 0;
double center3Y = 0;
center1Y = 30.0;
center2Y = 60.0;
center3Y = 90.0;
double center1Z = 0;
double center2Z = 0;
double center3Z = 0;
center1Z = 0.0;
center2Z = 0.0;
center3Z = 0.0;
double radius1 = 0;
double radius2 = 0;
double radius3 = 0;
radius1 = 10.0;
radius2 = 10.0;
radius3 = 10.0;
//Draw the Circles
dsCircle1 = dsSketchManager.InsertCircle(center1X, center1Y, center1Z, radius1);
dsCircle2 = dsSketchManager.InsertCircle(center2X, center2Y, center2Z, radius2);
dsCircle3 = dsSketchManager.InsertCircle(center3X, center3Y, center3Z, radius3);
//Circular pattern parameters
double angleBetween = 0;
angleBetween = 3.14159265358979 / 2; //90 degrees in radians
double fillAngle = 0;
fillAngle = 4.71238898; //270 degrees in radians
int totalNumber = 0;
totalNumber = 4;
double elementBasePointX = 0;
double elementBasePointY = 0;
double axisPointX = 0;
double axisPointY = 0;
elementBasePointX = 0.0;
elementBasePointY = 0.0;
axisPointX = 0.0;
axisPointY = 0.0;
bool orientElementsAboutAxis = false;
orientElementsAboutAxis = true;
//Prepare list of entity types
int[] dsEntityTypes = new int[3];
dsEntityTypes[0] = (int)dsObjectType_e.dsCircleType;
dsEntityTypes[1] = (int)dsObjectType_e.dsCircleType;
dsEntityTypes[2] = (int)dsObjectType_e.dsCircleType;
//Prepare list of entities
DispatchWrapper[] dsEntities = new DispatchWrapper[3];
dsEntities[0] = new DispatchWrapper(dsCircle1);
dsEntities[1] = new DispatchWrapper(dsCircle2);
dsEntities[2] = new DispatchWrapper(dsCircle3);
//Create circular pattern
dsSketchManager.PatternCircular(dsBasePatternOn_e.dsBasePatternOn_AngleBetweenAndElementsNumber, angleBetween, fillAngle, totalNumber, elementBasePointX, elementBasePointY, axisPointX, axisPointY, orientElementsAboutAxis, dsEntityTypes,
dsEntities);
//Zoom to fit
dsApp.Zoom(dsZoomRange_e.dsZoomRange_Fit, null, null);
} else {
MessageBox.Show("There are no open documents in DraftSight.");
}
}
}