// Define layer names and text size.
const string Dim = "Dimension", DashDot = "DashDot";
const double TextHeight = 2.0;
// Adding different layers
design1.Layers.Add(new Layer(Dim, Color.CornflowerBlue));
design1.Layers[0].LineWeight = 2;
design1.LineTypes.Add(DashDot, new float[] { 10, -2, 2, -2 });
Plane left = new Plane(Point3D.Origin, Vector3D.AxisY, -1 * Vector3D.AxisX); // plane.XY;
// Adding the axis of symmetry
Line axisX = new Line(-15, 0, 90, 0);
axisX.LineTypeMethod = colorMethodType.byEntity;
axisX.LineTypeName = DashDot;
design1.Entities.Add(axisX, Dim);
// Drawing segment and arcs
Line ln1 = new Line(76, 0, 76, 3);
design1.Entities.Add(ln1, Color.Black);
Arc a1 = new Arc(new Point3D(70, 3, 0), 6, 0, Math.PI / 2);
design1.Entities.Add(a1, Color.Black);
Line ln2 = new Line(70, 9, 28, 9);
design1.Entities.Add(ln2, Color.Black);
Arc a2 = new Arc(new Point3D(12.52, 9, 0), 1, Math.PI / 2, -Math.PI / 2);
Line ln3 = new Line(-2.5, 0, -2.5, 14);
design1.Entities.Add(ln3, Color.Black);
Line ln4 = new Line(-7.5, 0, -7.5, 14);
design1.Entities.Add(ln4, Color.Black);
Circle cr1 = new Circle(30, 28, 0, 19);
Arc a3 = new Arc(new Point3D(0, 14, 0), 7.5, Math.PI);
Arc a4 = new Arc(new Point3D(0, 14, 0), 2.5, Math.PI);
// Finding the tangent to two circles
Line ln5 = devDept.Geometry.Utility.GetLinesTangentToTwoCircles(cr1, a3)[1];
design1.Entities.Add(ln5, Color.Black);
Line ln6 = devDept.Geometry.Utility.GetLinesTangentToTwoCircles(a2, a4)[0];
design1.Entities.Add(ln6, Color.Black);
// Creating a Fillet
Arc a5;
Curve.Fillet(ln2, ln5, 19, false, false, true, true, out a5);
a5.Reverse();
double angle = Vector3D.AngleBetween(a5.Plane.AxisX, cr1.Plane.AxisX);
a5.Rotate(angle, a5.Plane.AxisZ, a5.Center);
a5.Domain = new Interval(a5.Domain.t0 - angle, a5.Domain.t1 - angle);
design1.Entities.Add(a5, Color.Black);
// Trimming the curves
Curve.Trim(a3, ln5, true, true);
design1.Entities.Add(a3, Color.Black);
Curve.Trim(a4, ln6, true, true);
design1.Entities.Add(a4, Color.Black);
Curve.Trim(a2, ln6, true, false);
// Finding the arc center of the internal part
Point3D p1 = devDept.Geometry.Utility.Intersection(new Circle(12.52, 8, 0, 63.5), new Line(0, 0, -65, 0))[0];
Arc a6 = new Arc(p1, 63.5, 0, Math.PI / 2);
Arc a7 = (Arc)a6.Offset(1, Vector3D.AxisZ)[0];
Curve.Trim(a6, a2, false, false);
design1.Entities.Add(a6, Color.Black);
Point3D p2 = devDept.Geometry.Utility.Intersection(a7, a2)[1];
a7.TrimBy(p2, false);
design1.Entities.Add(a7, Color.Black);
design1.Entities.Add(a2, Color.Black);
// Mirroring
Transformation t = Transformation.CreateReflection(Plane.XZ);
ICurve a6mir = (Arc)a6.Clone();
((Entity)a6mir).TransformBy(t);
design1.Entities.Add((Entity)a6mir, Color.Black);
ICurve a7mir = (Arc)a7.Clone();
((Entity)a7mir).TransformBy(t);
design1.Entities.Add((Entity)a7mir, Color.Black);
ICurve ln1mir = (Line)ln1.Clone();
((Entity)ln1mir).TransformBy(t);
design1.Entities.Add((Entity)ln1mir, Color.Black);
ICurve a1mir = (Arc)a1.Clone();
((Entity)a1mir).TransformBy(t);
design1.Entities.Add((Entity)a1mir, Color.Black);
ICurve ln2mir = (Line)ln2.Clone();
((Entity)ln2mir).TransformBy(t);
design1.Entities.Add((Entity)ln2mir, Color.Black);
ICurve a2mir = (Arc)a2.Clone();
((Entity)a2mir).TransformBy(t);
design1.Entities.Add((Entity)a2mir, Color.Black);
ICurve ln5mir = (Line)ln5.Clone();
((Entity)ln5mir).TransformBy(t);
design1.Entities.Add((Entity)ln5mir, Color.Black);
ICurve ln6mir = (Line)ln6.Clone();
((Entity)ln6mir).TransformBy(t);
design1.Entities.Add((Entity)ln6mir, Color.Black);
ICurve a3mir = (Arc)a3.Clone();
((Entity)a3mir).TransformBy(t);
design1.Entities.Add((Entity)a3mir, Color.Black);
ICurve a4mir = (Arc)a4.Clone();
((Entity)a4mir).TransformBy(t);
design1.Entities.Add((Entity)a4mir, Color.Black);
ICurve ln3mir = (Line)ln3.Clone();
((Entity)ln3mir).TransformBy(t);
design1.Entities.Add((Entity)ln3mir, Color.Black);
ICurve ln4mir = (Line)ln4.Clone();
((Entity)ln4mir).TransformBy(t);
design1.Entities.Add((Entity)ln4mir, Color.Black);
ICurve a5mir = (Arc)a5.Clone();
((Entity)a5mir).TransformBy(t);
design1.Entities.Add((Entity)a5mir, Color.Black);
RadialDim rDim1 = new RadialDim(a1, new Point2D(7, 7), TextHeight);
RadialDim rDim2 = new RadialDim(a5, new Point2D(-5, -15), TextHeight);
RadialDim rDim3 = new RadialDim(a3, new Point2D(-10, 10), TextHeight);
RadialDim rDim4 = new RadialDim(a4, new Point2D(-7, 12), TextHeight);
RadialDim rDim5 = new RadialDim(a6, new Point2D(56, 5), TextHeight)
{
TrimLeader = true,
CenterMarkSize = 0
};
RadialDim rDim6 = new RadialDim(a7, new Point2D(68, 2), TextHeight)
{
ArrowsLocation = elementPositionType.Outside,
TrimLeader = true,
CenterMarkSize = 0
};
// Printing dimensions
design1.Entities.Add(new LinearDim(Plane.XY, new Point2D(30, 28), new Point2D(70, 3), new Point2D(50, 36), TextHeight), Dim);
design1.Entities.Add(new LinearDim(Plane.XY, new Point2D(0, 14), new Point2D(30, 28), new Point2D(15, 36), TextHeight), Dim);
design1.Entities.Add(new LinearDim(Plane.XY, new Point2D(-7.5, -14), new Point2D(76, -3), new Point2D(34.25, -30), TextHeight), Dim);
design1.Entities.Add(new LinearDim(Plane.XY, new Point2D(0, -14), new Point2D(12.52, -9), new Point2D(6.26, -25), TextHeight), Dim);
design1.Entities.Add(new LinearDim(left, new Point2D(-21.5, 0), new Point2D(21.5, 0), new Point2D(0, 20), TextHeight), Dim);
design1.Entities.Add(new LinearDim(left, new Point2D(0, 10), new Point2D(9, -12.52), new Point2D(4.5, 14), TextHeight), Dim);
design1.Entities.Add(new LinearDim(left, new Point2D(9, -12.52), new Point2D(14, 0), new Point2D(11.5, 14), TextHeight), Dim);
design1.Entities.Add(rDim1, Dim);
design1.Entities.Add(rDim5, Dim);
design1.Entities.Add(rDim6, Dim);
design1.Entities.Add(rDim2, Dim);
design1.Entities.Add(rDim3, Dim);
design1.Entities.Add(rDim4, Dim);
// Center figure into frame
const double scale = 1.7;
design1.Entities.Scale(scale);
design1.Entities.Translate(90, 100);
foreach (Entity en in design1.Entities)
{
if (en is Dimension dm)
{
// Restore original measure
dm.LinearScale = 1 / scale;
}
}
design1.Entities.Regen();
DrawFrame();
// Top View
design1.SetView(viewType.Top);
design1.ZoomFit();
Print();
Frame drawing:
void DrawFrame()
{
const double height = 200;
const double width = 287;
const string FrameLayer = "FrameLayer";
design1.Layers.Add(new Layer(FrameLayer));
design1.Layers[FrameLayer].LineWeight = 2;
// drawing the ln1
Line ln1 = new Line(0, 0, width, 0);
design1.Entities.Add(ln1, FrameLayer);
ln1 = new Line(width, 0, width, height);
design1.Entities.Add(ln1, FrameLayer);
ln1 = new Line(width, height, 0, height);
design1.Entities.Add(ln1, FrameLayer);
ln1 = new Line(0, height, 0, 0);
design1.Entities.Add(ln1, FrameLayer);
}
Printing on A4 paper sheet:
private async void Print()
{
// A4 size in hundredth of inches
PaperSize paperSize = new System.Drawing.Printing.PaperSize("A4", 826, 1169);
design1.PageSetup(true, false, 0, paperSize, true);
// creates printing setting object and customize it
HiddenLinesViewSettingsEx hdlS = new HiddenLinesViewSettingsEx(viewType.Top, design1.Document);
hdlS.KeepEntityLineWeight = true;
// creates paper preview
const double printScaling = 1;
HiddenLinesViewOnPaperPreview hdl = new HiddenLinesViewOnPaperPreview(hdlS, new Size(800, 600), printScaling);
await design1.DoWorkAsync(hdl);
}
Comments
Please sign in to leave a comment.