// 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 });
Circle c1 = new Circle(0, 0, 0, 14.5);
Circle c2 = new Circle(0, 0, 0, 23);
Circle c3 = new Circle(-38, 5, 0, 9);
Circle c4 = new Circle(-38, 5, 0, 5.5);
Line l1 = devDept.Geometry.Utility.GetLinesTangentToTwoCircles(c2, c3)[1];
Line l2 = new Line(-47, 5, -47, -22);
Arc a1 = new Arc(-37, -22, 0, 10, 0, Math.PI * 2);
Line l3 = new Line(-22.6, -47, -22.6, -67);
Arc a3 = new Arc(-32.6, -47, 0, 10, 0, Math.PI * 2);
Circle a2 = devDept.Geometry.Utility.GetCirclesTangentToTwoCircles(a1, a3, 30, true)[6];
a1.TrimBy(l2.EndPoint, true);
a1.TrimBy(a2.StartPoint, false);
a3.TrimBy(a2.EndPoint, false);
a3.TrimBy(l3.StartPoint, true);
Line l4 = new Line(-22.6, -67, 13.4, -67);
Plane htw = Plane.XY;
htw.Rotate(Math.PI / 3, Vector3D.AxisZ);
htw.Translate(l4.EndPoint.AsVector);
Line l5 = new Line(htw, 0, 0, 9.5, 0);
Line l6 = new Line(htw, 9.5, 0, 9.5, 10);
Arc a4 = new Arc(htw, new Point2D(12.5, 10), 3, 0, Math.PI);
Line l7 = new Line(htw, 15.5, 10, 15.5, 0);
Line l8 = new Line(htw, 15.5, 0, 18.5, 0);
Line l9 = new Line(htw, 18.5, 0, 18.5, 10);
Arc a5 = new Arc(htw, new Point2D(21.5, 10), 3, 0, Math.PI);
Line l10 = new Line(htw, 24.5, 10, 24.5, 0);
Line l11 = new Line(htw, 24.5, 0, 27.5, 0);
Line l12 = new Line(htw, 27.5, 0, 27.5, 10);
Arc a6 = new Arc(htw, new Point2D(30.5, 10), 3, 0, Math.PI);
Line l13 = new Line(htw, 33.5, 10, 33.5, 0);
Line l14 = new Line(htw, 33.5, 0, 42, 0);
Line l15 = new Line(htw, 42, 0, 42, 24);
Circle c5 = new Circle(-9, -47, 0, 3);
Circle c6 = new Circle(-9, -47, 0, 5);
Line l16 = devDept.Geometry.Utility.GetLinesTangentToTwoCircles(c2, c6)[1];
Line l17 = devDept.Geometry.Utility.GetLinesTangentToCircleFromPoint(c6, new Point3D(-4, -30))[1];
Plane newpl = Plane.XY;
newpl.Rotate(devDept.Geometry.Utility.DegToRad(36.5), Vector3D.AxisZ);
newpl.Translate(l15.EndPoint.AsVector);
Line l18 = new Line(newpl, 0, 0, -22, 0);
l17.TrimBy(devDept.Geometry.Utility.Intersection(l17, l18)[0], true);
design1.Entities.AddRange(new Entity[] { c1, c2, c3, c4, c5, c6, a1, a2, a3, a4, a5, a6, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16, l17, l18 });
Plane vertical = new Plane(Point3D.Origin, Vector3D.AxisY, Vector3D.AxisMinusX);
Plane htwvertical = Plane.XY;
htwvertical.Rotate(-Math.PI / 6, Vector3D.AxisZ);
htwvertical.Translate(l5.StartPoint.AsVector);
LinearDim ld1 = new LinearDim(vertical, new Point3D(-57, 5, 0), new Point3D(-57, 0, 0), new Point3D(-57, 2.5, 0), TextHeight);
LinearDim ld2 = new LinearDim(vertical, new Point3D(-57, 0, 0), (Point3D)l2.EndPoint.Clone(), new Point3D(-57, -11, 0), TextHeight);
LinearDim ld3 = new LinearDim(vertical, (Point3D)l2.EndPoint.Clone(), new Point3D(-57, -47, 0), new Point3D(-57, -34.5, 0), TextHeight);
LinearDim ld4 = new LinearDim(vertical, new Point3D(-57, -47, 0), l3.EndPoint, new Point3D(-57, -57, 0), TextHeight);
LinearDim ld5 = new LinearDim(Plane.XY, new Point3D(0, 28, 0), new Point3D(-38, 28, 0), new Point3D(-19, 28, 0), TextHeight);
LinearDim ld6 = new LinearDim(Plane.XY, (Point3D)l4.StartPoint.Clone(), new Point3D(-9, -77, 0), new Point3D(-15.8, -77, 0), TextHeight);
LinearDim ld7 = new LinearDim(Plane.XY, new Point3D(-9, -77, 0), new Point3D(0, -77, 0), new Point3D(-4.5, -77, 0), TextHeight);
LinearDim ld8 = new LinearDim(Plane.XY, (Point3D)l4.StartPoint.Clone(), (Point3D)l4.EndPoint.Clone(), new Point3D(-4.6, -87, 0), TextHeight);
LinearDim ld9 = new LinearDim(htw, new Point2D(0, 0), new Point2D(42, 0), new Point2D(21, -20), TextHeight);
LinearDim ld10 = new LinearDim(htw, new Point2D(24.5, 0), new Point2D(27.5, 0), new Point2D(26, -10), TextHeight);
LinearDim ld11 = new LinearDim(htw, new Point2D(33.5, 0), new Point2D(42, 0), new Point2D(37.75, -10), TextHeight);
LinearDim ld12 = new LinearDim(htwvertical, new Point2D(0, 27.5), new Point2D(-10, 27.5), new Point2D(-5, 30), TextHeight);
LinearDim ld13 = new LinearDim(htwvertical, new Point2D(0, 42), new Point2D(-24, 42), new Point2D(-12, 47), TextHeight);
LinearDim ld14 = new LinearDim(newpl, new Point2D(0, 0), new Point2D(-22, 0), new Point2D(-11, -5), TextHeight);
RadialDim rd1 = new RadialDim(c3, new Point3D(-52, 19, 0), TextHeight);
RadialDim rd2 = new RadialDim(c4, new Point3D(-26, 12, 0), TextHeight);
RadialDim rd3 = new RadialDim(a1, a1.MidPoint, TextHeight);
RadialDim rd4 = new RadialDim(a2, 35, 4 * Math.PI / 3, TextHeight, Plane.XY);
RadialDim rd5 = new RadialDim(a3, a3.MidPoint, TextHeight);
RadialDim rd6 = new RadialDim(c1, 2 * c1.PointAt(Math.PI / 4), TextHeight);
RadialDim rd7 = new RadialDim(c2, c2.PointAt(Math.PI / 6), TextHeight);
RadialDim rd8 = new RadialDim(c5, new Point3D(4, -40, 0), TextHeight);
RadialDim rd9 = new RadialDim(c6, new Point3D(4, -50, 0), TextHeight);
RadialDim rd10 = new RadialDim(a6, new Point3D(10, -36, 0), TextHeight);
AngularDim ad1 = new AngularDim(Plane.XY, (Point3D)l4.EndPoint.Clone(), htw.PointAt(5, 0), new Point2D(8.4, -67), new Point2D(13.4 - 2.5, -67 + 2.5 * Math.Sqrt(3)), TextHeight);
AngularDim ad2 = new AngularDim(Plane.XY, (Point3D)l17.StartPoint.Clone(), newpl.PointAt(-12, 0), (Point3D)l17.StartPoint.Clone() - ((Line)l17.Clone()).StartTangent.AsPoint, new Point2D(4, -20), TextHeight);
design1.Entities.AddRange(new Entity[] { ld1, ld2, ld3, ld4, ld5, ld6, ld7, ld8, ld9, ld10, ld11, ld12, ld13, ld14, rd1, rd2, rd3, rd4, rd5, rd6, rd7, rd8, rd9, rd10, ad1, ad2 }, Dim);
Line cl1 = new Line(0, -77, 0, 28);
Line cl2 = new Line(-57, 0, 25, 0);
Line cl3 = new Line(new Point3D(-57, 5, 0), new Point3D(-25, 5, 0));
Line cl4 = new Line(new Point3D(-38, -8, 0), new Point3D(-38, 28, 0));
Line cl5 = new Line(new Point3D(-2, -47, 0), new Point3D(-57, -47, 0));
Line cl6 = new Line(new Point3D(-9, -40, 0), new Point3D(-9, -77, 0));
Entity[] cls = new Entity[] { cl1, cl2, cl3, cl4, cl5, cl6 };
foreach (Line cl in cls)
{
cl.LineTypeMethod = colorMethodType.byEntity;
cl.LineTypeName = DashDot;
}
design1.Entities.AddRange(cls, Dim);
// Center figure into frame
const double scale = 1.2;
design1.Entities.Scale(scale);
design1.Entities.Translate(150, 140);
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;
// Outer box
DrawMainBox(FrameLayer, height, width);
// Boxes with info
DrawInfoBox(FrameLayer, FrameLayer, width);
// Text within info boxes
DrawText("CAD Practice Drawings 2D-01", width);
// Top box with number
DrawNumberBox(1, 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, 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.