
Brep elbow;
//creating the first part of the elbow
var headRegion = devDept.Eyeshot.Entities.Region.CreateRoundedRectangle(360, 360, 10);
for (int i = 0; i < 2; i++)
{
for (int k = 0; k < 2; k++)
{
Func<int, int> calcPos = (int pos) => (pos > 0) ? (pos * (360 - 50)) : (pos + 50);
var circle = new Circle(calcPos(i), calcPos(k), 0, 15);
circle.Reverse();
headRegion.ContourList.Add(circle);
}
}
var headBrep = headRegion.ExtrudeAsBrep(50);
foreach (var c in headRegion.ContourList)
{
if (c is Circle circle)
{
var tempCircle = new devDept.Eyeshot.Entities.Region(new Circle(circle.Center, 30));
headBrep.ExtrudeRemove(tempCircle, 10);
}
}
elbow = (Brep) headBrep.Clone();
//creating the cylinder
var circReg = devDept.Eyeshot.Entities.Region.CreateCircle(180, 180, 145);
circReg.Translate(0, 0, 50);
var cyl = circReg.ExtrudeAsBrep(100);
cyl.ExtrudeAdd(circReg, 100);
var circReg2 = (devDept.Eyeshot.Entities.Region) circReg.Clone();
circReg2.Translate(0, 0, 100);
cyl.RevolveAdd(circReg2, Math.PI / 2, Vector3D.AxisY, new Point3D(440, 0, 150));
var circReg3 = (devDept.Eyeshot.Entities.Region) circReg2.Clone();
circReg3.Rotate(Math.PI / 2, Vector3D.AxisY, new Point3D(440, 0, 150));
cyl.ExtrudeAdd(circReg3, 100);
//adding the cylinder to the elbow
elbow.Add(cyl);
//creating the last part of the elbow by cloning headBrep and rotating it according to the model
var tailBrep = (Brep) headBrep.Clone();
tailBrep.Rotate(Math.PI / 2, Vector3D.AxisY, new Point3D(590, 0, 0));
tailBrep.Rotate(Math.PI, Vector3D.AxisY, new Point3D(590, 180, 410));
elbow.Add(tailBrep);
//creating the cavity
var cavityRail = new CompositeCurve(
new Line(Plane.XZ, 180, 0, 180, 150),
new Arc(Plane.XZ, new Point2D(440, 150), 260, Math.PI, Math.PI / 2),
new Line(Plane.XZ, 440, 410, 590, 410)
);
var cavity = devDept.Eyeshot.Entities.Region.CreateCircle(180, 180, 105).SweepAsBrep(cavityRail, 0.01);
elbow = Brep.Difference(elbow, cavity)[0];
//adding fillets and chamfers
elbow.Fillet(elbow.GetEdgeIndex(new Point3D(180 - 145, 180, 50)), 10);
elbow.Fillet(elbow.GetEdgeIndex(new Point3D(540, 180 - 145, 410)), 10);
elbow.Chamfer(elbow.GetEdgeIndex(new Point3D(590, 180 - 105, 410)), 10);
elbow.Chamfer(elbow.GetEdgeIndex(new Point3D(180, 180 - 105, 0)), 10);
design1.Entities.Add(elbow, Color.DimGray);

Comments
Please sign in to leave a comment.