This example shows how to create and transform a mathematical elliptical Arc.
//-------------------------------------------------------------- // Preconditions: // 1. Create a C# Windows console project. // 2. Copy and paste this code into the C# project. // 3. Add a reference to // install_dir\APISDK\tlb\DraftSight.Interop.dsAutomation.dll. // 4. Add a reference to System.Windows.Forms. // 5. Open the Immediate window. // 6. Start DraftSight. // 7. Press F5. // // Postconditions: // 1. Connects to DraftSight. // 2. Gets the active document. // 3. Creates a mathematical elliptical Arc. // 4. Gets various mathematical elliptical Arc values. // 5. Gets the intersection points of the mathematical elliptical Arc // with a mathematical linear object and plane. // 6. Sets various values to use to transform the // mathematical elliptical Arc. // 7. Applies a mathematical transformation to the // mathematical elliptical Arc. // 8. Examine the Immediate window. //--------------------------------------------------------------- using System; using DraftSight.Interop.dsAutomation; using System.Runtime.InteropServices; using System.Windows.Forms; using System.Diagnostics; namespace MathEllipArcCSharp { class Program { static void Main() { DraftSight.Interop.dsAutomation.Application dsApp; //Connects to DraftSight application dsApp = (DraftSight.Interop.dsAutomation.Application)Marshal.GetActiveObject("DraftSight.Application"); if (null == dsApp) { return; } //Gets active document Document dsDoc = dsApp.GetActiveDocument(); if (null == dsDoc) { MessageBox.Show("There are no open documents in DraftSight."); return; } //Aborts any command currently running in DraftSight //to avoid nested commands dsApp.AbortRunningCommand(); //Creates a mathematical elliptical Arc MathUtility dsMathUtility = dsApp.GetMathUtility(); MathPoint Center = dsMathUtility.CreatePoint(3.0, 7.0, 0.0); MathVector minorAxis = dsMathUtility.CreateVector(1.0, 1.0, 0.0); MathVector majorAxis = dsMathUtility.CreateVector(3.0, 1.0, 0.0); double majorRadius = 3.0; double minorRadius = 2.0; double startAngle = 2.1; double endAngle = 1.0; MathEllipArc dsMathEllipArc = dsMathUtility.CreateEllipArc(Center, majorAxis, minorAxis, majorRadius, minorRadius, startAngle, endAngle); if (dsMathEllipArc != null) { Debug.Print("Mathematical elliptical Arc created."); } else { Debug.Print("Mathematical elliptical Arc not created."); } //Gets length of mathematical elliptical Arc double mathEllipArcLength = dsMathEllipArc.GetLength(); //Gets normal of mathematical elliptical Arc MathVector dsNormal = dsMathEllipArc.GetNormal(); //Gets major and minor axes of mathematical elliptical Arc MathVector dsMajorAxis = dsMathEllipArc.GetMajorAxis(); MathVector dsMinorAxis = dsMathEllipArc.GetMinorAxis(); //Gets plane of mathematical elliptical Arc MathPlane dsMathPlane = dsMathEllipArc.GetPlane(); //Gets start point of mathematical elliptical Arc MathPoint dsStartPoint = dsMathEllipArc.GetStartPoint(); //Gets intersection point of mathematical //elliptical Arc with a mathematical linear object MathLine dsLinearObject = dsMathUtility.CreateLine(1.0, 1.0, 0, 0, 10.0, 12.0, dsMathLineType_e.dsMathLineType_Infinite); MathPoint intersectionPoint1, intersectionPoint2; int result = dsMathEllipArc.IntersectWithLinearObject(dsLinearObject, out intersectionPoint1, out intersectionPoint2); if (result == 0 ) { Debug.Print("Mathematical elliptical Arc and linear object do not intersect."); } else { Debug.Print("Mathematical elliptical Arc and linear object do intersect."); } //Gets intersection point of mathematical elliptical Arc with //a mathematical plane MathPlane dsPlaneObject = dsMathUtility.CreateXYPlane(); result = dsMathEllipArc.IntersectWithPlane(dsPlaneObject, out intersectionPoint1, out intersectionPoint2); if (result == 0) { Debug.Print("Mathematical elliptical Arc and plane do not intersect."); } else { Debug.Print("Mathematical elliptical Arc and plane do intersect."); } //Changes major and minor radii dsMathEllipArc.MajorRadius = 4.0; dsMathEllipArc.MinorRadius = 3.0; //Sets axes of mathematical elliptical Arc MathVector MinorAxis = dsMathUtility.CreateVector(2.0, 2.0, 0.0); MathVector MajorAxis = dsMathUtility.CreateVector(3.5, 2.3, 0.0); dsMathEllipArc.SetAxes(MajorAxis, MinorAxis); //Sets start angle dsMathEllipArc.StartAngle = 3.0; //Applies a mathematical transformation to the //mathematical elliptical Arc MathPlane dsProjectionPlane = dsMathUtility.CreateYZPlane(); MathVector dsProjectionDirection = dsMathUtility.CreateVector(1.0, 0.0, 0.0); MathTransform dsProjectionTransformation = dsMathUtility.CreateTransformProjection(dsProjectionPlane, dsProjectionDirection); dsMathEllipArc.TransformBy(dsProjectionTransformation); Debug.Print("Mathematical transformation applied to mathematical elliptical Arc."); } } }