Message 1 of 1
Oriented sketch on each face of rectangle
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hello All,
I have created a code which will create pocket on each face of a rectangle( which also I have created using extrude feature). while iterating over faces it is throwing exception for ( rng = faceEval.ParamRangeRect;) this line.
can anyone please suggest appropriate way to create pocket on each face.
private void btnCreateRectangle_Click(object sender, EventArgs e)
{
try
{
string template = myApp.FileManager.GetTemplateFile(DocumentTypeEnum.kPartDocumentObject, SystemOfMeasureEnum.kMetricSystemOfMeasure);
PartDocument prtDoc = myApp.Documents.Add(DocumentTypeEnum.kPartDocumentObject, template) as PartDocument;
prtDoc = myApp.ActiveDocument as PartDocument;
PartComponentDefinition partDef = prtDoc.ComponentDefinition;
TransientGeometry tGeometry = myApp.TransientGeometry;
PlanarSketch sketch = partDef.Sketches.Add(partDef.WorkPlanes[3]);
var rectangle = sketch.SketchLines.AddAsTwoPointCenteredRectangle(tGeometry.CreatePoint2d(0, 0), tGeometry.CreatePoint2d(50, 25));
Profile profile = sketch.Profiles.AddForSolid();
ExtrudeDefinition ExtrudeDef = partDef.Features.ExtrudeFeatures.CreateExtrudeDefinition(profile, PartFeatureOperationEnum.kJoinOperation);
ExtrudeDef.SetDistanceExtent(30, PartFeatureExtentDirectionEnum.kPositiveExtentDirection);
ExtrudeFeature extrude = partDef.Features.ExtrudeFeatures.Add(ExtrudeDef);
EdgeCollection edges = myApp.TransientObjects.CreateEdgeCollection();
foreach (Face item in extrude.Faces)
{
if (item.Edges != null)
foreach (Edge edge in item.Edges)
{
edges.Add(edge);
}
}
Point2d center = null;
LineSegment xline= null;
Box2d rng = null;
foreach (Face face in extrude.Faces)
{
if (face.SurfaceType == SurfaceTypeEnum.kPlaneSurface)
{
SurfaceEvaluator faceEval = face.Evaluator;
rng = faceEval.ParamRangeRect;
double X = rng.MinPoint.X + ((rng.MaxPoint.X - rng.MinPoint.X) / 2);
double Y = rng.MinPoint.Y + ((rng.MaxPoint.Y - rng.MinPoint.Y) / 2);
center = tGeometry.CreatePoint2d(X, Y);
}
Vertex vert = face.Edges[2].StartVertex;
Edge edge = face.Edges[2];
PlanarSketch sketchOnRect = partDef.Sketches.AddWithOrientation(face, edge, true,false, vert, true);
var rect = sketchOnRect.SketchLines.AddAsTwoPointCenteredRectangle(center, tGeometry.CreatePoint2d(center.X+5, center.Y+ 5));
Profile pf = sketchOnRect.Profiles.AddForSolid();
ExtrudeDefinition exDef = partDef.Features.ExtrudeFeatures.CreateExtrudeDefinition(pf, PartFeatureOperationEnum.kCutOperation);
exDef.SetDistanceExtent(5, PartFeatureExtentDirectionEnum.kNegativeExtentDirection);
ExtrudeFeature pocket = partDef.Features.ExtrudeFeatures.Add(exDef);
}
FilletFeature fillet = partDef.Features.FilletFeatures.AddSimple(edges, 1);
prtDoc.Update();
Camera camera = myApp.ActiveView.Camera;
camera.Fit();
camera.Apply();
}
catch (Exception ex)
{
}
}