// Define layer names and text size.
const string Dim = "Dimension", DashDot = "DashDot";
const double TextHeight = 4.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 });
// Main circles
Arc c1 = new Arc(0, 0, 0, 35, devDept.Geometry.Utility.DegToRad(0), devDept.Geometry.Utility.DegToRad(180));
Arc c2 = new Arc(-5, 0, 0, 22, devDept.Geometry.Utility.DegToRad(-90), devDept.Geometry.Utility.DegToRad(180));
// Rectangle
Line l1 = new Line(-35, 0, -19, 0);
Line l2 = new Line(-19, 0, -19, 6);
Line l3 = new Line(-19, 6, -35, 6);
// Trim
Point3D p1; Point3D p2;
devDept.Geometry.Utility.IntersectionLineCircle(l3, c2, Plane.XY, out p1, out p2);
c2.TrimBy(p1, false);
l3.TrimBy(p1, false);
// Handle
Line b1 = new Line(0, 12, 130, 12);
Line b2 = new Line(0, -12, 130, -12);
b1.Translate(-130, -12, 0); b2.Translate(-130, 12, 0);
b1.Rotate(devDept.Geometry.Utility.DegToRad(2), Vector3D.AxisZ);
b2.Rotate(devDept.Geometry.Utility.DegToRad(-5), Vector3D.AxisZ);
b1.Translate(130, 12, 0); b2.Translate(130, -12, 0);
Arc arc = new Arc(130, 0, 0, 12, devDept.Geometry.Utility.DegToRad(-90), devDept.Geometry.Utility.DegToRad(90));
// Trim
Point3D point1; Point3D point2;
devDept.Geometry.Utility.IntersectionLineCircle(b2, c2, Plane.XY, out point1, out point2);
b2.TrimBy(point1, true);
c2.TrimBy(point1, true);
Point3D P1; Point3D P2;
devDept.Geometry.Utility.IntersectionLineCircle(b1, c1, Plane.XY, out P1, out P2);
c1.TrimBy(P1, true);
b1.TrimBy(P1, true);
//Fillet
Curve.Fillet((ICurve)c1, b1, 10, true, false, true, true, out Arc fillet1);
Curve.Fillet((ICurve)c2, b2, 5, true, false, true, true, out Arc fillet2);
design1.Entities.AddRange(new Entity[] { c1, c2, l1, l2, l3, b1, b2, arc, fillet1, fillet2 });
// Adding construction lines
Line axis2b = new(-40, 0, 145, 0);
var axis2c = (Entity)axis2b.Clone();
design1.Entities.Add(axis2c, Dim);
Line axis2d = new(0, -24, 0, 37);
var axis2a = (Entity)axis2d.Clone();
design1.Entities.Add(axis2a, Dim);
axis2d.Translate(-5, 0, 0);
var axis2e = (Entity)axis2d.Clone();
design1.Entities.Add(axis2e, Dim);
Line axis2f = new(130, -24, 130, 15);
var axis2g = (Entity)axis2f.Clone();
design1.Entities.Add(axis2g, Dim);
// Adding radial dimensions
RadialDim r1 = new(c1, c1.Radius, devDept.Geometry.Utility.DegToRad(60), TextHeight, Plane.XY);
RadialDim r2 = new(c2, c2.Radius, devDept.Geometry.Utility.DegToRad(120), TextHeight, Plane.XY);
RadialDim r3 = new(fillet1, fillet1.Radius, devDept.Geometry.Utility.DegToRad(240), TextHeight, Plane.XY);
RadialDim r4 = new(fillet2, fillet2.Radius, devDept.Geometry.Utility.DegToRad(240), TextHeight, Plane.XY);
RadialDim r5 = new(arc, arc.Radius, devDept.Geometry.Utility.DegToRad(-30), TextHeight, Plane.XY);
design1.Entities.AddRange(new Entity[] { r1, r2, r3, r4, r5 }, Dim);
// Adding linear dimensions
Plane left = new Plane(Point3D.Origin, Vector3D.AxisY, -1 * Vector3D.AxisX);
LinearDim line1 = new LinearDim(Plane.XY, new Point2D(-35, 0), new Point2D(-19, 0), new Point2D(-30, -24), TextHeight);
LinearDim line2 = new LinearDim(Plane.XY, new Point2D(-19, 0), new Point2D(-5, 0), new Point2D(-12, -24), TextHeight);
LinearDim line3 = new LinearDim(Plane.XY, new Point2D(-5, 0), new Point2D(0, 0), new Point2D(-2, -24), TextHeight);
LinearDim line4 = new LinearDim(Plane.XY, new Point2D(0, 0), new Point2D(130, 0), new Point2D(65, -24), TextHeight);
LinearDim line5 = new LinearDim(left, new Point2D(0, 19), new Point2D(6, 19), new Point2D(0, 14), TextHeight);
design1.Entities.AddRange(new Entity[] { line1, line2, line3, line4, line5 }, Dim);
//Adding angular dimensions
Line L1 = new Line(90, 0, 90, -12);
devDept.Geometry.Utility.IntersectionLineLine(L1, b2, Plane.XY, out Point3D Point1);
devDept.Geometry.Utility.IntersectionLineLine(new Line(0, 0, 130, 0), b2, Plane.XY, out Point3D origin1);
AngularDim alpha1 = new AngularDim(Plane.XY, origin1, Point1, new Point2D(90, 0), new Point2D(80, -3), TextHeight);
design1.Entities.AddRange(new Entity[] { alpha1 }, Dim);
Line L2 = new Line(110, 12, 110, -12);
devDept.Geometry.Utility.IntersectionLineLine(L2, b1, Plane.XY, out Point3D Point2);
devDept.Geometry.Utility.IntersectionLineLine(L2, b2, Plane.XY, out Point3D Point3);
devDept.Geometry.Utility.IntersectionLineLine(b1, b2, Plane.XY, out Point3D origin2);
AngularDim alpha2 = new AngularDim(Plane.XY, origin2, Point3, Point2, new Point2D(100, 3), TextHeight);
design1.Entities.AddRange(new Entity[] { alpha2 }, Dim);
// Center figure into frame
design1.Entities.Translate(45, 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 141", width);
// Top box with number
DrawNumberBox(141, 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.