# Rotate and Copy Entities Example (C#)

This example shows how to rotate and copy selected entities.

//--------------------------------------------------------------
// 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 new document.
// 6. Construct multiple entities (e.g., circle, rectangle, 2D PolyLine,
// etc.).
// 7. Start debugging the project.
//
// Postconditions:
// 1. When the prompt appears in the DraftSight command window,
// select the entities to rotate and press the Enter key. The
// selected entities are rotated.
// 2. Execution stops so that you can examine the drawing to
// verify that the selected entities were rotated. Click the
// Continue button in the IDE to continue.
// 3. The selected entities are copied.
//----------------------------------------------------------------
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 RotateSelectedEntities
{
class Program
{
static void Main(string[] args)
{
//Connect to DraftSight application
DraftSight.Interop.dsAutomation.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();
//Get selection manager
SelectionManager dsSelectionMgr = dsDoc.GetSelectionManager();
//Get selection filter
SelectionFilter dsSelectionFilter = dsSelectionMgr.GetSelectionFilter();
//Clear selection filter
dsSelectionFilter.Clear();
//Add all entities to the selection filter
foreach (dsObjectType_e entityType in Enum.GetValues(typeof(dsObjectType_e)))
{
dsSelectionFilter.AddEntityType(entityType);
}
//Activate selection filter
dsSelectionFilter.Active = true;
//Get command message object
CommandMessage dsCommandMessage = dsApp.GetCommandMessage();
//Clear previous selection
dsSelectionMgr.ClearSelections(dsSelectionSetType_e.dsSelectionSetType_Previous);
//Run prompt to select entities
bool singleSelection = false;
string prompt = "Select entities";
string errorMessage = "Unknown entity";
if (dsCommandMessage.PromptForSelection(singleSelection, prompt, errorMessage))
{
//Get number of selected objects
int count = dsSelectionMgr.GetSelectedObjectCount(dsSelectionSetType_e.dsSelectionSetType_Previous);
DispatchWrapper[] dsEntities = new DispatchWrapper[count];
int[] dsEntityTypes = new int[count];
//Get selected entities
for (int index = 0; index < count; ++index)
{
dsObjectType_e entityType;
object selectedEntity = dsSelectionMgr.GetSelectedObject(dsSelectionSetType_e.dsSelectionSetType_Previous, index, out entityType);
dsEntities[index] = new DispatchWrapper(selectedEntity);
dsEntityTypes[index] = (int)entityType;
}
//Rotation parameters
double pivotPointX = 0.0;
double pivotPointY = 0.0;
double rotateAngle = Math.PI / 4; //In radians
//Rotate entities
dsSketchMgr.RotateEntities(pivotPointX, pivotPointY, rotateAngle, dsEntityTypes, dsEntities);
//Stop execution
//Examine the document
System.Diagnostics.Debugger.Break();
//Click the Continue button in the IDE
//Copy parameters
double displacementX = 2.0;
double displacementY = 2.0;
double displacementZ = 0.0;
//Copy entities
dsSketchMgr.CopyEntities(displacementX, displacementY, displacementZ, dsEntityTypes, dsEntities);
}
}
private static DraftSight.Interop.dsAutomation.Application ConnectToDraftSight()
{
//DraftSight.Interop.dsAutomation.Application dsApp = null;
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;
}
}
}