Insert Shapes Example (C#)
This example shows how to load a shape file and insert the shapes in the
loaded shape file into a 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 document.
// 6. Start debugging the project.
//
// Postconditions:
// 1. Gets the Shape Manager.
// 2. Loads a shape file.
// 3. Gets the shapes in the loaded shape file.
// 4. Inserts the shapes, with an obliquing angle of 30, in the drawing.
// 5. Examine the drawing.
//----------------------------------------------------------------
using System;
using DraftSight.Interop.dsAutomation;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace ShapeCSharp
{
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");
// Abort any command currently running in DraftSight to avoid nested commands
dsApp.AbortRunningCommand();
if (null == dsApp)
{
return;
}
//Get active document
Document dsDoc = dsApp.GetActiveDocument();
if (null == dsDoc)
{
MessageBox.Show("There are no open documents in DraftSight.");
return;
}
//Get the Shape Manager
ShapeManager dsShapeMgr = dsDoc.GetShapeManager();
//Load shape file LTypeShp.shx
SystemFiles dsSysFile = dsApp.GetSystemFiles();
object[] FontsPathObj = (object[])dsSysFile.FontsPaths;
string fontPath = "";
if (FontsPathObj.Length > 0)
fontPath = FontsPathObj[0].ToString();
string shapeFileName = System.IO.Path.Combine(fontPath, "LTypeShp.shx");
dsShapeMgr.Load(shapeFileName);
//Get shapes
object[] shapesStrList = (object[])dsShapeMgr.GetAvailableShapes();
int shapesCount = shapesStrList.Length;
//Get Sketch Manager
SketchManager dsSketchMgr = dsDoc.GetModel().GetSketchManager();
//Insert shapes
double PositionX = 0.0, PositionY = 0.0, PositionZ = 0.0;
for (int i = 0; i < shapesCount; ++i)
{
Shape dsShape = dsSketchMgr.InsertShape(shapesStrList[i].ToString(), PositionX, PositionY, PositionZ, 1, 0.0);
//Change obliquing property
dsShape.Obliquing = 30 * Math.PI / 180;
double X1, Y1, Z1, X2, Y2, Z2;
dsShape.GetBoundingBox(out X1, out Y1, out Z1, out X2, out Y2, out Z2);
PositionX += (X2 - X1) + 5;
}
}
}
}