// Define layer names and text size.
const string Dim = "Dimension", DashDot = "DashDot";
const double TextHeight = 2.5;
// 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);
Circle c2 = new Circle(0, 0, 0, 20);
Circle c3 = new Circle(0, 27.5, 0, 3.5);
Circle c4 = new Circle(0, -27.5, 0, 3.5);
Circle cAux1 = new Circle(0, 27.5, 0, 7.5);
Line t1 = UtilityEx.GetLinesTangentToTwoCircles(cAux1, c2)[0];
Line t2 = UtilityEx.GetLinesTangentToTwoCircles(cAux1, c2)[1];
design1.Entities.AddRange(new Entity[] { c1, c2, c3, c4 });
Arc a1 = new Arc(cAux1.Center, cAux1.Radius, Math.PI);
a1.TrimBy(t1.StartPoint, true);
a1.TrimBy(t2.StartPoint, false);
CompositeCurve cc1 = new CompositeCurve(t1, t2, a1);
CompositeCurve cc2 = (CompositeCurve)cc1.Clone();
cc2.Rotate(Math.PI, Vector3D.AxisX);
design1.Entities.Add(cc1);
design1.Entities.Add(cc2);
double h = Math.Sqrt(Math.Pow(20, 2) - Math.Pow(7.5, 2));
Circle cAux2 = new Circle(0, h, 0, 7.5);
Line l1 = UtilityEx.GetLinesTangentToTwoCircles(cAux1, cAux2)[0];
Line l2 = (Line)l1.Clone();
l2.Translate(new Vector3D(-7.5 * 2, 0, 0));
Arc a3 = new Arc(cAux1.Center, cAux1.Radius, Math.PI);
CompositeCurve cc3 = new CompositeCurve(l1, a3, l2);
design1.Entities.Add(cc3);
CompositeCurve cc4 = (CompositeCurve)cc3.Clone();
cc4.Rotate(Math.PI, Vector3D.AxisX);
design1.Entities.Add(cc4);
Arc a4 = new Arc(32.5 + 15, 0, 0, 9, -Math.PI / 2.0, Math.PI / 2.0);
Circle cAux3 = new Circle(Math.Sqrt(20 * 20 - 9 * 9), 0, 0, 9);
Circle cAux4 = new Circle(32.5 + 15, 0, 0, 9);
Line l3 = UtilityEx.GetLinesTangentToTwoCircles(cAux3, cAux4)[0];
Line l4 = UtilityEx.GetLinesTangentToTwoCircles(cAux3, cAux4)[1];
CompositeCurve cc5 = new CompositeCurve(a4, l3, l4);
design1.Entities.Add(cc5);
Circle cAux6 = new Circle(32.5 + 15, 0, 0, 5.5);
Circle cAux7 = new Circle(32.5, 0, 0, 5.5);
Line l5 = UtilityEx.GetLinesTangentToTwoCircles(cAux6, cAux7)[0];
Line l6 = UtilityEx.GetLinesTangentToTwoCircles(cAux6, cAux7)[1];
Arc a5 = new Arc(new Point3D(32.5 + 15, 0, 0), 5.5, -Math.PI / 2.0, Math.PI / 2.0);
Arc a6 = new Arc(new Point3D(32.5, 0, 0), 5.5, Math.PI / 2.0, 3 * Math.PI / 2.0);
CompositeCurve cc6 = new CompositeCurve(l5, l6, a5, a6);
design1.Entities.Add(cc6);
Line lDim1 = new Line(0, 40, 0, -40);
lDim1.LineTypeName = DashDot;
lDim1.LineTypeMethod = colorMethodType.byEntity;
Line lDim2 = new Line(58, 0, -25, 0);
lDim2.LineTypeName = DashDot;
lDim2.LineTypeMethod = colorMethodType.byEntity;
Line lDim3 = new Line(32.5, 12, 32.5, -12);
lDim3.LineTypeName = DashDot;
lDim3.LineTypeMethod = colorMethodType.byEntity;
Line lDim4 = (Line)lDim3.Clone();
lDim4.Translate(15, 0, 0);
Line lDim5 = new Line(-12, 27.5, 12, 27.5);
lDim5.LineTypeName = DashDot;
lDim5.LineTypeMethod = colorMethodType.byEntity;
Line lDim6 = (Line)lDim5.Clone();
lDim6.Translate(0, -55, 0);
LinearDim lDim7 = new LinearDim(Plane.XY, (Point3D)lDim1.EndPoint.Clone(), (Point3D)lDim3.EndPoint.Clone(), new Point3D(16.25, -46, 0), TextHeight);
LinearDim lDim8 = new LinearDim(Plane.XY, (Point3D)lDim3.EndPoint.Clone(), (Point3D)lDim4.EndPoint.Clone(), new Point3D(40, -46, 0), TextHeight);
Plane vertical = new Plane(Point3D.Origin, Vector3D.AxisY, Vector3D.AxisMinusX);
LinearDim lDim9 = new LinearDim(vertical, (Point3D)lDim5.StartPoint.Clone(), (Point3D)lDim6.StartPoint.Clone(), new Point3D(-35, 0, 0), TextHeight);
LinearDim lDim10 = new LinearDim(vertical, new Point3D(47.5, 9, 0), new Point3D(47.5, -9, 0), new Point3D(70, 0, 0), TextHeight);
LinearDim lDim11 = new LinearDim(vertical, new Point3D(15 + 32.5, 5.5, 0), new Point3D(15 + 32.5, -5.5, 0), new Point3D(63, 0, 0), TextHeight);
design1.Entities.AddRange(new Entity[]
{
lDim1,
lDim2,
lDim3,
lDim4,
lDim5,
lDim6,
lDim7,
lDim8,
lDim9,
lDim10,
lDim11
}, Dim);
DiametricDim dimC1 = new DiametricDim(c1, new Point3D(11 - 4, Math.Sqrt(14 * 14 - 11 * 11) - 4, 0), TextHeight);
design1.Entities.Add(dimC1, Dim);
DiametricDim dimC2 = new DiametricDim(c2, new Point3D(-17 - 2, Math.Sqrt(20 * 20 - 17 * 17) - 2, 0), TextHeight);
design1.Entities.Add(dimC2, Dim);
DiametricDim dimC3 = new DiametricDim(c3, new Point3D(1.75 + 9, 27.5 + Math.Sqrt(3.5 * 3.5 - 1.75 * 1.75) + 9, 0), TextHeight);
dimC3.TextPrefix = "2-Ø";
design1.Entities.Add(dimC3, Dim);
Arc arcDim1 = new Arc(0, -27.5, 0, 7.5, 5 * Math.PI / 4.0, 2 * Math.PI);
RadialDim rDim1 = new RadialDim(arcDim1, new Point3D(-15, -15 - 27.5, 0), TextHeight)
{
CenterMarkSize = 0,
ArrowsLocation = elementPositionType.Outside,
TextPrefix = "2-R",
TrimLeader = true
};
design1.Entities.Add(rDim1, Dim);
// Center figure into frame
const double scale = 1.5;
design1.Entities.Scale(scale);
design1.Entities.Translate(80, 150);
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 = 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 Drawings 27", width);
// Top box with number
DrawNumberBox(27, 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.