Oriented sketch on each face of rectangle

Oriented sketch on each face of rectangle

dayanandr1
Observer Observer
195 Views
0 Replies
Message 1 of 1

Oriented sketch on each face of rectangle

dayanandr1
Observer
Observer

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)
            {
 
 
            }
 
        }
0 Likes
196 Views
0 Replies
Replies (0)