
protected override void OnLoad(EventArgs e)
{
design1.Units = linearUnitsType.Millimeters;
design1.Grid.Visible = false;
design1.OriginSymbol.Visible = false;
// create all regions
devDept.Eyeshot.Entities.Region topCircle = devDept.Eyeshot.Entities.Region.CreateCircle(0, 0, 15);
devDept.Eyeshot.Entities.Region cylinder = devDept.Eyeshot.Entities.Region.CreateCircle(0, 0, 10);
CompositeCurve ccPedestal = new CompositeCurve(
new Line(-105, -30, 0, -30),
new Line(-105, 30, 0, 30),
new Line(-105, 30, -105, -30),
new Arc(0, 0, 0, 30, -Math.PI / 2, Math.PI / 2)
);
devDept.Eyeshot.Entities.Region pedestal = new devDept.Eyeshot.Entities.Region(ccPedestal);
devDept.Eyeshot.Entities.Region back =
devDept.Eyeshot.Entities.Region.CreateRectangle(Plane.XY, -105, -30, 10, 60, 0, false);
CompositeCurve ccBodyInternal = new CompositeCurve(
new Line(0, 65, -95, 65),
new Line(-95, 65, -95, -65),
new Line(-95, -65, 0, -65),
new Arc(0, 0, 0, 65, -Math.PI / 2, Math.PI / 2));
CompositeCurve ccBodyExternal = new CompositeCurve(
new Line(0, 75, -105, 75),
new Line(-105, 75, -105, -75),
new Line(-105, -75, 0, -75),
new Arc(0, 0, 0, 75, -Math.PI / 2, Math.PI / 2));
devDept.Eyeshot.Entities.Region body = new devDept.Eyeshot.Entities.Region(ccBodyInternal, ccBodyExternal);
CompositeCurve ccTopXZ = new CompositeCurve(
new Line(Plane.XZ, -100, 0, -25, 0),
new Line(Plane.XZ, -25, 0, -25, 40),
new Line(Plane.XZ, -25, 40, 25, 40),
new Line(Plane.XZ, 25, 40, 25, 0),
new Line(Plane.XZ, 25, 0, 71, 0));
devDept.Eyeshot.Entities.Region topXZ = ccTopXZ.OffsetToRegion(10, 0, true);
CompositeCurve ccTopYZ = new CompositeCurve(
new Line(Plane.YZ, -71, 0, -25, 0),
new Line(Plane.YZ, -25, 0, -25, 40),
new Line(Plane.YZ, -25, 40, 25, 40),
new Line(Plane.YZ, 25, 40, 25, 0),
new Line(Plane.YZ, 25, 0, 71, 0));
devDept.Eyeshot.Entities.Region topYZ = ccTopYZ.OffsetToRegion(-10, 0, true);
// generate and compose Brep
Brep ext1 = body.ExtrudeAsBrep(10);
ext1.ExtrudeAdd(back, -30);
ext1.ExtrudeAdd(pedestal, new Interval(-30, -20));
ext1.ExtrudeAdd(cylinder, new Interval(-20, 40));
ext1.ExtrudeAdd(topCircle, new Interval(40, 50));
ext1.ExtrudeAdd(topXZ, new Interval(-5, 5));
ext1.ExtrudeAdd(topYZ, new Interval(-5, 5));
// create fillets, we can find each edge using the index of the start and end vertexes
ext1.Fillet(FindEdge(ext1, 36, 53), 10);
ext1.Fillet(FindEdge(ext1, 35, 54), 10);
ext1.Fillet(FindEdge(ext1, 34, 55), 10);
ext1.Fillet(FindEdge(ext1, 24, 25), 29);
ext1.Fillet(FindEdge(ext1, 4, 5), 29);
ext1.Fillet(FindEdge(ext1, 28, 56), 40);
ext1.Fillet(FindEdge(ext1, 32, 47), 10);
ext1.Fillet(FindEdge(ext1, 31, 48), 10);
ext1.Fillet(FindEdge(ext1, 38, 49), 10);
ext1.Fillet(FindEdge(ext1, 67, 75), 15);
ext1.Fillet(FindEdge(ext1, 36, 37), 15);
ext1.Fillet(FindEdge(ext1, 76, 77), 15);
ext1.Fillet(FindEdge(ext1, 8, 11), 15);
ext1.Fillet(FindEdge(ext1, 69, 87), 25);
ext1.Fillet(FindEdge(ext1, 50, 51), 25);
ext1.Fillet(FindEdge(ext1, 86, 88), 25);
ext1.Fillet(FindEdge(ext1, 1, 2), 25);
ext1.Fillet(FindEdge(ext1, 40, 41), 5);
ext1.Fillet(FindEdge(ext1, 85, 78), 5);
ext1.Fillet(FindEdge(ext1, 43, 42), 5);
ext1.Fillet(FindEdge(ext1, 0, 3), 5);
ext1.Fillet(FindEdge(ext1, 68, 71), 15);
ext1.Fillet(FindEdge(ext1, 82, 81), 15);
ext1.Fillet(FindEdge(ext1, 70, 74), 15);
ext1.Fillet(FindEdge(ext1, 7, 12), 15);
ext1.Fillet(FindEdge(ext1, 17, 18), 29);
ext1.Fillet(FindEdge(ext1, 9, 10), 29);
ext1.Fillet(FindEdge(ext1, 28, 58), 40);
// add Brep to view
design1.Entities.Add(ext1, Color.Chocolate);
design1.Entities.Regen();
design1.SetView(viewType.Isometric);
}
private int FindEdge(Brep brep, int firstIndex, int secondIndex)
{
for (int i = 0; i < brep.Edges.Length; i++)
{
if ((brep.Edges[i].StartPointIndex == firstIndex || brep.Edges[i].StartPointIndex == secondIndex) &&
(brep.Edges[i].EndPointIndex == firstIndex || brep.Edges[i].EndPointIndex == secondIndex))
{
return i;
}
}
return -1;
}


Comments
Please sign in to leave a comment.