
const string dimLayerName = "Dimension",
linetypeName = "DashDot",
referenceLayerName = "Reference";
Plane vertical = new Plane(Point3D.Origin, Vector3D.AxisY, -1 * Vector3D.AxisX); // plane.XY;
// adding different layers
design1.LineTypes.Add(linetypeName, new float[] { 10, -2, 2, -2 });
design1.Layers[0].LineWeight = 2;
design1.Layers.Add(new Layer(dimLayerName, Color.CornflowerBlue)
{
LineWeight = 0.5f
});
design1.Layers.Add(new Layer(referenceLayerName, Color.CornflowerBlue, linetypeName, 0.5f, true));
// Outer shape
Arc a = new Arc(Plane.XY, new Point3D(15, 15), 100, Utility.DegToRad(-20), Utility.DegToRad(120));
Line leftEdge = new Line(Plane.XY, new Point2D(0, 15), new Point2D(0, 130)); // left longer line
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
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(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(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 = linetypeName
};
dotLine.Rotate(Utility.DegToRad(90.0 / count * i), Vector3D.AxisZ, new Point3D(15, 15));
design1.Entities.Add(dotLine, dimLayerName);
}
Arc smallerArc = new Arc(Plane.XY, new Point3D(15, 15), 45, Utility.DegToRad(-25), Utility.DegToRad(115));
design1.Entities.Add(smallerArc, referenceLayerName);
Arc largerArc = new Arc(Plane.XY, new Point3D(15, 15), 80, Utility.DegToRad(-15), Utility.DegToRad(105));
design1.Entities.Add(largerArc, referenceLayerName);
// Dimensions
Circle ref1 = (Circle) design1.Entities[16];
Circle temp1 = new Circle(Plane.XY, ref1.Center, ref1.Radius);
const double textHeight = 3;
DiametricDim dimSmallerCircle = new DiametricDim(temp1, new Point2D(-22, 7), textHeight);
design1.Entities.Add(dimSmallerCircle, dimLayerName);
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, dimLayerName);
RadialDim arcRadialDim = new RadialDim(a, new Point2D(100, 45), textHeight)
{
ArrowsLocation = elementPositionType.Outside,
TrimLeader = true,
CenterMarkSize = 0
};
design1.Entities.Add(arcRadialDim, dimLayerName);
RadialDim smallerArcRadialDim = new RadialDim((Arc)design1.Entities[19], new Point2D(50, -22), textHeight)
{
ArrowsLocation = elementPositionType.Outside,
TrimLeader = true,
CenterMarkSize = 0
};
design1.Entities.Add(smallerArcRadialDim, dimLayerName);
RadialDim largerArcRadialDim = new RadialDim((Arc)design1.Entities[20], new Point2D(88, -22), textHeight)
{
ArrowsLocation = elementPositionType.Outside,
TrimLeader = true,
CenterMarkSize = 0
};
design1.Entities.Add(largerArcRadialDim, dimLayerName);
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, dimLayerName);
LinearDim rightDentDim = new LinearDim(vertical, lowerRight, upperLeft, new Point3D(-15, 7.5), textHeight);
design1.Entities.Add(rightDentDim, dimLayerName);
// relocation
design1.Entities.Translate(100,60);
design1.Entities.Regen();
DrawFrame();
design1.SetView(viewType.Top, true, false);
Print();
void DrawFrame()
{
const string frameLayerName = "Frame", frameTextLayerName = "FrameText";
design1.Layers.Add(new Layer(frameLayerName) { LineWeight = 2 });
design1.Layers.Add(new Layer(frameTextLayerName));
double height = 200, width = 287; // A4 landscape
// double height = 287, width = 200; // A4 portrait
// drawing the outer box
DrawMainBox(frameLayerName, height, width);
// drawing boxes with info
DrawInfoBox(frameLayerName, frameTextLayerName, width);
// writing text in the info boxes
DrawText("CAD Practice Drawing 2D-01", width);
// drawing top box with number in it
DrawNumberBox(1, frameLayerName, frameTextLayerName, 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);
}
private 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);
design1.StartWork(hdl);
}

Comments
Please sign in to leave a comment.