// Define layer names and text size.
const string Dim = "Dimension", DashDot = "DashDot";
const double TextHeight = 3.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);
//dashed lines
Line axisX1 = new Line(-8, 0, 18, 0);
axisX1.LineTypeMethod = colorMethodType.byEntity;
axisX1.LineTypeName = DashDot;
design1.Entities.Add(axisX1, Dim);
Line axisY1 = new Line(0, -18, 0, 18);
axisY1.LineTypeMethod = colorMethodType.byEntity;
axisY1.LineTypeName = DashDot;
design1.Entities.Add(axisY1, Dim);
Line axisX2 = new Line(-82, 8, -16, 8);
axisX2.LineTypeMethod = colorMethodType.byEntity;
axisX2.LineTypeName = DashDot;
design1.Entities.Add(axisX2, Dim);
Line axisY2 = new Line(-64, -16, -64, 32);
axisY2.LineTypeMethod = colorMethodType.byEntity;
axisY2.LineTypeName = DashDot;
design1.Entities.Add(axisY2, Dim);
Line axisX3 = new Line(-24, -4, -51, -4);
axisX3.LineTypeMethod = colorMethodType.byEntity;
axisX3.LineTypeName = DashDot;
design1.Entities.Add(axisX3, Dim);
Line axisY3 = new Line(-45, 0, -45, -8);
axisY3.LineTypeMethod = colorMethodType.byEntity;
axisY3.LineTypeName = DashDot;
design1.Entities.Add(axisY3, Dim);
Line axisY4 = new Line(-29, 0, -29, -8);
axisY4.LineTypeMethod = colorMethodType.byEntity;
axisY4.LineTypeName = DashDot;
design1.Entities.Add(axisY4, Dim);
Line axisX5 = new Line(-79, 8, -49, 8);
axisX5.LineTypeMethod = colorMethodType.byEntity;
axisX5.LineTypeName = DashDot;
design1.Entities.Add(axisX5, Dim);
axisX5.Rotate(devDept.Geometry.Utility.DegToRad(-45), Vector3D.AxisZ, new Point3D(-64, 8, 0));
//External Contour
Arc arc1 = new Arc(0, 0, 0, 16, devDept.Geometry.Utility.DegToRad(270), devDept.Geometry.Utility.DegToRad(450));
design1.Entities.Add(arc1);
RadialDim rDim1 = new RadialDim(arc1, new Point2D(25, -25), TextHeight)
{
ArrowsLocation = elementPositionType.Outside,
};
design1.Entities.Add(rDim1, Dim);
LinearDim lDim1 = new LinearDim(left, new Point2D(-16, 0), new Point2D(16, 0), new Point2D(0, -30), TextHeight);
design1.Entities.Add(lDim1, Dim);
Line line1 = new Line(0, 16, -45, 16);
LinearDim lDim2 = new LinearDim(Plane.XY, new Point2D(0, 0), new Point2D(-64, 8), new Point2D(-32, 40), TextHeight);
design1.Entities.Add(lDim2, Dim);
Line line2 = new Line(-64, -16, 0, -16);
Line line22 = new Line(-64, -16, 0, -16);
design1.Entities.Add(line2);
design1.Entities.Add(line22);
Arc arc2 = new Arc(-64, 8, 0, 24, devDept.Geometry.Utility.DegToRad(0), devDept.Geometry.Utility.DegToRad(270));
Point3D[] intersect0 = arc2.IntersectWith(line1);
arc2.TrimBy(intersect0[0], true);
line1.TrimBy(intersect0[0], false);
design1.Entities.Add(line1);
design1.Entities.Add(arc2);
LinearDim lDim3 = new LinearDim(left, new Point2D(-16, 64), new Point2D(32, 64), new Point2D(8, 104), TextHeight);
design1.Entities.Add(lDim3, Dim);
Arc arc3 = new Arc(-64, 8, 0, 47.2, devDept.Geometry.Utility.DegToRad(270), devDept.Geometry.Utility.DegToRad(350));
RadialDim rDim2 = new RadialDim(arc3, new Point2D(45, -30), TextHeight)
{
ArrowsLocation = elementPositionType.Outside,
};
design1.Entities.Add(rDim2, Dim);
Arc arc4 = new Arc(-64, 8, 0, 56, devDept.Geometry.Utility.DegToRad(270), devDept.Geometry.Utility.DegToRad(350));
RadialDim rDim3 = new RadialDim(arc4, new Point2D(63, -21), TextHeight)
{
ArrowsLocation = elementPositionType.Outside,
};
design1.Entities.Add(rDim3, Dim);
Line line3 = new Line(arc3.EndPoint, arc4.EndPoint);
AngularDim aDim1 = new AngularDim(Plane.XY, new Point2D(-64, 8), line3.MidPoint, new Point2D(line3.MidPoint.X, 8), new Point2D(line3.MidPoint.X, 5), TextHeight)
{
ArrowsLocation = elementPositionType.Inside,
};
design1.Entities.Add(aDim1, Dim);
Point3D[] intersect = arc3.IntersectWith(line2);
Point3D[] intersect2 = arc4.IntersectWith(line2);
arc3.TrimBy(intersect[0], true);
arc4.TrimBy(intersect2[0], true);
line2.TrimBy(intersect[0], false);
line22.TrimBy(intersect2[0], true);
design1.Entities.Add(arc3);
design1.Entities.Add(arc4);
design1.Entities.Add(line3);
//Internal Contour
Circle cir1 = new Circle(0, 0, 0, 6.5);
design1.Entities.Add(cir1);
DiametricDim dDim1 = new DiametricDim(cir1, new Point2D(20, 20), TextHeight);
design1.Entities.Add(dDim1, Dim);
Circle cir2 = new Circle(-56, 8, 0, 4.8);
cir2.Rotate(devDept.Geometry.Utility.DegToRad(-45), Vector3D.AxisZ, new Point3D(-64, 8, 0));
Arc arc5 = new Arc(-56, 8, 0, 4.8, devDept.Geometry.Utility.DegToRad(270), devDept.Geometry.Utility.DegToRad(450));
arc5.Rotate(devDept.Geometry.Utility.DegToRad(-45), Vector3D.AxisZ, new Point3D(-64, 8, 0));
design1.Entities.Add(arc5);
Circle cir3 = new Circle(-72, 8, 0, 4.8);
cir3.Rotate(devDept.Geometry.Utility.DegToRad(-45), Vector3D.AxisZ, new Point3D(-64, 8, 0));
Arc arc6 = new Arc(-72, 8, 0, 4.8, devDept.Geometry.Utility.DegToRad(90), devDept.Geometry.Utility.DegToRad(270));
arc6.Rotate(devDept.Geometry.Utility.DegToRad(-45), Vector3D.AxisZ, new Point3D(-64, 8, 0));
design1.Entities.Add(arc6);
LinearDim lDim4 = new LinearDim(left, new Point2D(3.2, 64), new Point2D(12.8, 64), new Point2D(10, 94), TextHeight)
{
ArrowsLocation = elementPositionType.Inside,
};
lDim4.Rotate(devDept.Geometry.Utility.DegToRad(-45), Vector3D.AxisZ, new Point3D(-64, 8, 0));
design1.Entities.Add(lDim4, Dim);
Line[] line4 = devDept.Geometry.Utility.GetLinesTangentToTwoCircles(cir2, cir3);
design1.Entities.Add(line4[0]);
design1.Entities.Add(line4[1]);
Circle cir4 = new Circle(-45, -4, 0, 4);
Arc arc7 = new Arc(-45, -4, 0, 4, devDept.Geometry.Utility.DegToRad(90), devDept.Geometry.Utility.DegToRad(270));
design1.Entities.Add(arc7);
RadialDim rDim4 = new RadialDim(arc7, new Point2D(-5, -5), TextHeight)
{
ArrowsLocation = elementPositionType.Outside,
};
design1.Entities.Add(rDim4, Dim);
LinearDim lDim5 = new LinearDim(Plane.XY, new Point2D(-45, -4), new Point2D(-64, 8), new Point2D(-55, -30), TextHeight);
design1.Entities.Add(lDim5, Dim);
Circle cir5 = new Circle(-29, -4, 0, 4);
Arc arc8 = new Arc(-29, -4, 0, 4, devDept.Geometry.Utility.DegToRad(270), devDept.Geometry.Utility.DegToRad(450));
design1.Entities.Add(arc8);
Line[] line5 = devDept.Geometry.Utility.GetLinesTangentToTwoCircles(cir4, cir5);
design1.Entities.Add(line5[0]);
design1.Entities.Add(line5[1]);
LinearDim lDim6 = new LinearDim(Plane.XY, new Point2D(-45, -4), new Point2D(-29, -4), new Point2D(-37, -30), TextHeight);
design1.Entities.Add(lDim6, Dim);
Line lineangle = new Line(-100, -16, 0, -16);
AngularDim aDim2 = new AngularDim(Plane.XY, lineangle, axisX5, new Point3D(-72, -4, 0), new Point3D(-72, -4, 0), TextHeight)
{
ArrowsLocation = elementPositionType.Inside
};
design1.Entities.Add(aDim2, Dim);
LinearDim lDim7 = new LinearDim(left, new Point2D(line5[0].MidPoint.Y, -line5[0].MidPoint.X), new Point2D(line5[1].MidPoint.Y, -line5[1].MidPoint.X), new Point2D(line5[1].MidPoint.Y + 8, -line5[0].MidPoint.X), TextHeight)
{
ArrowsLocation = elementPositionType.Inside,
};
design1.Entities.Add(lDim7, Dim);
LinearDim lDim8 = new LinearDim(left, new Point2D(line5[1].MidPoint.Y, -line5[1].MidPoint.X), new Point2D(line2.MidPoint.Y, -line5[1].MidPoint.X), new Point2D(line2.MidPoint.Y - 2, -line5[1].MidPoint.X), TextHeight)
{
ArrowsLocation = elementPositionType.Inside,
};
design1.Entities.Add(lDim8, Dim);
LinearDim lDim9 = new LinearDim(Plane.XY, new Point2D(-72, 8), new Point2D(-56, 8), new Point2D(-64, 20), TextHeight)
{
ArrowsLocation = elementPositionType.Inside,
};
lDim9.Rotate(devDept.Geometry.Utility.DegToRad(-45), Vector3D.AxisZ, new Point3D(-64, 8, 0));
design1.Entities.Add(lDim9, Dim);
// Center figure into frame
design1.Entities.Translate(140, 150);
design1.Entities.Regen();
DrawFrame();
// Top View
design1.SetView(viewType.Top);
design1.ZoomFit();
Print();
Frame drawing:
void DrawFrame()
{
const double height = 287;
const double width = 200;
const string FrameLayer = "FrameLayer";
design1.Layers.Add(new Layer(FrameLayer));
design1.Layers[FrameLayer].LineWeight = 2;
// Outer box
DrawMainBox(FrameLayer, height, width);
// Boxes with info
DrawInfoBox(FrameLayer, FrameLayer, width);
// Text within info boxes
DrawText("CAD Practice Drawing 103", width);
// Top box with number
DrawNumberBox(103, FrameLayer, FrameLayer, height, width);
}
void DrawMainBox(string frameLayerName, double height, double width)
{
Line line = new(0, height, width, height);
design1.Entities.Add(line, frameLayerName);
line = new Line(0, height, 0, 0);
design1.Entities.Add(line, frameLayerName);
line = new Line(0, 0, width, 0);
design1.Entities.Add(line, frameLayerName);
line = new Line(width, 0, width, height);
design1.Entities.Add(line, frameLayerName);
}
void DrawNumberBox(int number, string frameLayerName, string frameTextLayerName, double height, double width)
{
Line line = new(width - 13, height - 7, width, height - 7);
design1.Entities.Add(line, frameLayerName);
line = new Line(width - 13, height, width - 13, height - 7);
design1.Entities.Add(line, frameLayerName);
Text text = new(width - 6.75, height - 3.5, 0, number.ToString(), 4, devDept.Eyeshot.Entities.Text.alignmentType.MiddleCenter);
design1.Entities.Add(text, frameTextLayerName);
}
private void DrawInfoBox(string frameLayerName, string frameTextLayerName, double width)
{
Line line = new(width - 160, 0, width - 160, 20);
design1.Entities.Add(line, frameLayerName);
line = new Line(width - 160, 20, width, 20);
design1.Entities.Add(line, frameLayerName);
// Using frameTextLayerName to have thinner lines
line = new Line(width - 65, 0, width - 65, 20);
design1.Entities.Add(line, frameTextLayerName);
line = new Line(width - 160, 13, width, 13);
design1.Entities.Add(line, frameTextLayerName);
line = new Line(width - 45, 0, width - 45, 20);
design1.Entities.Add(line, frameTextLayerName);
line = new Line(width - 25, 0, width - 25, 20);
design1.Entities.Add(line, frameTextLayerName);
line = new Line(width - 65, 7, width - 25, 7);
design1.Entities.Add(line, frameTextLayerName);
}
void DrawText(string title, double width)
{
Text text = new(width - 112, 16.5, 0, "Title", 3, devDept.Eyeshot.Entities.Text.alignmentType.MiddleCenter);
design1.Entities.Add(text);
text = new Text(width - 112, 7, 0, title, 4.5, devDept.Eyeshot.Entities.Text.alignmentType.MiddleCenter);
design1.Entities.Add(text);
text = new Text(width - 55, 16.5, 0, "Date", 3, devDept.Eyeshot.Entities.Text.alignmentType.MiddleCenter);
design1.Entities.Add(text);
text = new Text(width - 55, 10, 0, "Design", 3, devDept.Eyeshot.Entities.Text.alignmentType.MiddleCenter);
design1.Entities.Add(text);
text = new Text(width - 55, 3.5, 0, "Check", 3, devDept.Eyeshot.Entities.Text.alignmentType.MiddleCenter);
design1.Entities.Add(text);
text = new Text(width - 12.5, 16.5, 0, "Approve", 3, devDept.Eyeshot.Entities.Text.alignmentType.MiddleCenter);
design1.Entities.Add(text);
}
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, false);
// 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.