// 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 });
const double Diameter1 = 50;
const double Diameter2 = 70;
const double Diameter2_x = 8; // Radius of c2_a, c2_b, c2_c
const double Diameter3 = 60;
// Geometry drawing
Circle c1 = new Circle(0, 0, 0, Diameter1 / 2);
Circle c2_a = new(0, Diameter2 / 2, 0, Diameter2_x / 2);
Arc c2_t1 = new(0, Diameter2 / 2, 0, 8, devDept.Geometry.Utility.DegToRad(-45), devDept.Geometry.Utility.DegToRad(225));
var c2_t2 = (Entity)c2_t1.Clone();
c2_t2.Rotate(devDept.Geometry.Utility.DegToRad(120), devDept.Geometry.Vector3D.AxisZ);
var c2_t3 = (Entity)c2_t2.Clone();
c2_t3.Rotate(devDept.Geometry.Utility.DegToRad(120), devDept.Geometry.Vector3D.AxisZ);
var c2_b = (Entity)c2_a.Clone();
c2_b.Rotate(devDept.Geometry.Utility.DegToRad(120), devDept.Geometry.Vector3D.AxisZ);
var c2_c = (Entity)c2_a.Clone();
c2_c.Rotate(devDept.Geometry.Utility.DegToRad(-120), devDept.Geometry.Vector3D.AxisZ);
Arc c3 = new(0, 0, 0, Diameter3 / 2, devDept.Geometry.Utility.DegToRad(110), devDept.Geometry.Utility.DegToRad(200));
Arc c4 = new(0, 0, 0, Diameter3 / 2, devDept.Geometry.Utility.DegToRad(220), devDept.Geometry.Utility.DegToRad(320));
Arc c5 = new(0, 0, 0, Diameter3 / 2, devDept.Geometry.Utility.DegToRad(-10), devDept.Geometry.Utility.DegToRad(70));
Curve.Fillet((ICurve)c2_t2, c3, 12, true, true, true, true, out Arc f2_a);
Curve.Fillet((ICurve)c2_t2, c4, 12, true, true, true, true, out Arc f2_b);
Curve.Fillet((ICurve)c2_t3, c4, 12, true, true, true, true, out Arc f3_a);
Curve.Fillet((ICurve)c2_t3, c5, 12, true, true, true, true, out Arc f3_b);
Curve.Fillet((ICurve)c2_t1, c5, 12, true, true, true, true, out Arc f5_a);
Curve.Fillet((ICurve)c2_t1, c3, 12, true, true, true, true, out Arc f5_b);
design1.Entities.AddRange(new Entity[] { c1, c2_a, c2_b, c2_c, c3, c4, c5, c2_t1, c2_t2, c2_t3, f2_a, f2_b, f3_a, f3_b, f5_a, f5_b });
// Adding construction lines
Line axisX = new(-28, 0, 28, 0)
{
LineTypeMethod = colorMethodType.byEntity,
LineTypeName = DashDot
};
design1.Entities.Add(axisX, Dim);
Line axis2b = new(0, -30, 0, -40);
var axis2c = (Entity)axis2b.Clone();
axis2c.Rotate(devDept.Geometry.Utility.DegToRad(+60), Vector3D.AxisZ);
axis2c.LineTypeMethod = colorMethodType.byEntity;
axis2c.LineTypeName = DashDot;
design1.Entities.Add(axis2c, Dim);
var axis2a = (Entity)axis2b.Clone();
axis2a.Rotate(devDept.Geometry.Utility.DegToRad(-60), Vector3D.AxisZ);
axis2a.LineTypeMethod = colorMethodType.byEntity;
axis2a.LineTypeName = DashDot;
design1.Entities.Add(axis2a, Dim);
Circle c2 = new(0, 0, 0, Diameter2 / 2)
{
LineTypeMethod = colorMethodType.byEntity,
LineTypeName = DashDot
};
design1.Entities.Add(c2, Dim);
// Adding diametric dimensions
DiametricDim dia1 = new(c1, new Point3D(10, -10, 0), TextHeight)
{
ArrowsLocation = elementPositionType.Auto,
TrimLeader = true,
CenterMarkSize = 0
};
DiametricDim dia2 = new(c2, new Point3D(40, 10, 0), TextHeight)
{
ArrowsLocation = elementPositionType.Outside,
TrimLeader = false,
CenterMarkSize = 0
};
DiametricDim dia3 = new(c2_a, new Point3D(15, 40, 0), TextHeight)
{
ArrowsLocation = elementPositionType.Outside,
TrimLeader = false,
CenterMarkSize = 0
};
design1.Entities.AddRange(new Entity[] { dia1, dia2, dia3 }, Dim);
// Adding radial dimensions
RadialDim rDr1 = new(c2_t1, 15, devDept.Geometry.Utility.DegToRad(140), TextHeight, Plane.XY)
{
ArrowsLocation = elementPositionType.Outside,
TrimLeader = true
};
RadialDim rDr2 = new(f5_a, f5_a.Radius, devDept.Geometry.Utility.DegToRad(230), TextHeight, Plane.XY);
design1.Entities.AddRange(new Entity[] { rDr1, rDr2 }, Dim);
// Center figure into frame
const double scale = 2;
design1.Entities.Scale(scale);
design1.Entities.Translate(105, 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 Drawing 150", width);
// Top box with number
DrawNumberBox(150, 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.