// 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 vertical = new Plane(Point3D.Origin, Vector3D.AxisY, -1 * Vector3D.AxisX); // plane.XY;
// Outer shape
Arc a = new Arc(Plane.XY, new Point3D(15, 15), 100, devDept.Geometry.Utility.DegToRad(-20), devDept.Geometry.Utility.DegToRad(120));
Line leftEdge = new Line(Plane.XY, new Point2D(0, 15), new Point2D(0, 130)); // left longer line
devDept.Geometry.Utility.IntersectionLineCircle(leftEdge, a, Plane.XY, out Point3D i0, out _);
a.TrimBy(i0, false);
leftEdge.TrimBy(i0, false);
Line lowerEdge = new Line(Plane.XY, new Point2D(15, 0), new Point2D(130, 0)); // lower longer line
devDept.Geometry.Utility.IntersectionLineCircle(lowerEdge, a, Plane.XY, out Point3D i1, out _);
a.TrimBy(i1, true);
lowerEdge.TrimBy(i1, false);
CompositeCurve outerFigure = new CompositeCurve(
new Line(Plane.XY, new Point2D(0, 15), new Point2D(15, 15)), // inner dent upper edge
new Line(Plane.XY, new Point2D(15, 15), new Point2D(15, 0)), // inner dent right edge
lowerEdge, a, leftEdge
);
design1.Entities.Add(outerFigure);
// Inner circles and lines
const int count = 5;
for (int i = 0; i <= count; i++)
{
Circle smallerCircle = new Circle(new Point3D(60, 15), 5);
smallerCircle.Rotate(devDept.Geometry.Utility.DegToRad(90.0 / count * i), Vector3D.AxisZ, new Point3D(15, 15));
design1.Entities.Add(smallerCircle);
Circle largerCircle = new Circle(new Point3D(95, 15), 8);
largerCircle.Rotate(devDept.Geometry.Utility.DegToRad(90.0 / count * i), Vector3D.AxisZ, new Point3D(15, 15));
design1.Entities.Add(largerCircle);
Line dotLine = new Line(Plane.XY, new Point2D(15, 15), new Point2D(120, 15))
{
LineTypeMethod = colorMethodType.byEntity,
LineTypeName = DashDot
};
dotLine.Rotate(devDept.Geometry.Utility.DegToRad(90.0 / count * i), Vector3D.AxisZ, new Point3D(15, 15));
design1.Entities.Add(dotLine, Dim);
}
Arc smallerArc = new Arc(Plane.XY, new Point3D(15, 15), 45, devDept.Geometry.Utility.DegToRad(-25), devDept.Geometry.Utility.DegToRad(115));
smallerArc.LineTypeMethod = colorMethodType.byEntity;
smallerArc.LineTypeName = DashDot;
design1.Entities.Add(smallerArc, Dim);
Arc largerArc = new Arc(Plane.XY, new Point3D(15, 15), 80, devDept.Geometry.Utility.DegToRad(-15), devDept.Geometry.Utility.DegToRad(105));
largerArc.LineTypeMethod = colorMethodType.byEntity;
largerArc.LineTypeName = DashDot;
design1.Entities.Add(largerArc, Dim);
// Dimensions
Circle ref1 = (Circle)design1.Entities[16];
Circle temp1 = new Circle(Plane.XY, ref1.Center, ref1.Radius);
DiametricDim dimSmallerCircle = new DiametricDim(temp1, new Point2D(-22, 7), TextHeight);
design1.Entities.Add(dimSmallerCircle, Dim);
Circle ref2 = (Circle)design1.Entities[14];
Circle temp2 = new Circle(Plane.XY, ref2.Center, ref2.Radius);
DiametricDim dimLargerCircle = new DiametricDim(temp2, new Point2D(30, 18), TextHeight);
design1.Entities.Add(dimLargerCircle, Dim);
RadialDim arcRadialDim = new RadialDim(a, new Point2D(100, 45), TextHeight)
{
ArrowsLocation = elementPositionType.Outside,
TrimLeader = true,
CenterMarkSize = 0
};
design1.Entities.Add(arcRadialDim, Dim);
RadialDim smallerArcRadialDim = new RadialDim((Arc)design1.Entities[19], new Point2D(50, -22), TextHeight)
{
ArrowsLocation = elementPositionType.Outside,
TrimLeader = true,
CenterMarkSize = 0
};
design1.Entities.Add(smallerArcRadialDim, Dim);
RadialDim largerArcRadialDim = new RadialDim((Arc)design1.Entities[20], new Point2D(88, -22), TextHeight)
{
ArrowsLocation = elementPositionType.Outside,
TrimLeader = true,
CenterMarkSize = 0
};
design1.Entities.Add(largerArcRadialDim, Dim);
Point3D lowerRight = (Point3D)outerFigure.CurveList[0].StartPoint.Clone();
Point3D upperLeft = (Point3D)outerFigure.CurveList[1].EndPoint.Clone();
LinearDim upperDentDim = new LinearDim(Plane.XY, lowerRight, upperLeft, new Point3D(7.5, -15), TextHeight);
design1.Entities.Add(upperDentDim, Dim);
LinearDim rightDentDim = new LinearDim(vertical, lowerRight, upperLeft, new Point3D(-15, 7.5), TextHeight);
design1.Entities.Add(rightDentDim, Dim);
// Center figure into frame
design1.Entities.Translate(100, 60);
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 Drawing 2D-01", width);
// Top box with number
DrawNumberBox(1, FrameLayer, FrameLayer, height, width);
}
private void DrawMainBox(string frameLayerName, double height, double width)
{
Line line = new Line(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);
}
private void DrawNumberBox(int number, string frameLayerName, string frameTextLayerName, double height, double width)
{
Line line = new Line(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 Text(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 Line(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);
}
private void DrawText(string title, double width)
{
Text text = new Text(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.