Decrease fillet mesh resolution lower bound

From testing I see that there is a lower bound on the fillet mesh resolution, the amount of quads used to represent a fillet this can be seen in the photos where i have used extreme values for the angular and linear deflection: 2000 mm and 3.1 rads respectively, yet the fillet still has 3 quads
I was wondering if there was a way of lowering this as we are using open cascade to mesh our parts from STEP file but we are finding that a lot of file space is dedicated to these 3 quad fillets.

Mikhail Sazonov's picture

What is the reason to use such a strange angular deflection 3.1 rads (almost 180 degrees)?
Do you need a fillet to be tessellated by only one quad?
May be you need to apply some defeaturing algorithm to your model, so that to remove fillets at all?

Lyndon Alcock's picture

Hello sorry about the late response:

1) i used said angular deflection to prove to myself that there is a lower bound on the amount of faces that open cascade will use to represent the fillet
2) yes ideally i would like the fillet to be tessellated with rows of quads 1 quad tall I.e analogous to a 45° bevel
3) how would i make a defeaturing algorithm algorithm, is there one in open cascade?

Lyndon Alcock's picture

This is what I want the filets to look like, this is generated by pixyz for reference btw

Mikhail Sazonov's picture

You can use BRepAlgoAPI_Defeaturing class. It can remove features if you tell to it which faces constitute them.

Lyndon Alcock's picture

But is there a way to reduce the fillet geometry without removing the fillet entirely?

Mikhail Sazonov's picture

I think there is no in the current version of the algorithm.

Lyndon Alcock's picture

So I am attempting to remove fillets from the model entirely as a temporary test however my code is giving me a null pointer exception, is it at all clear why this shouldn't work? I have tried to use https://dev.opencascade.org/doc/overview/html/occt_user_guides__modeling...
As guidence on how to use the BRepAlgoAPI_Defeaturing class
```
class SmallFeatureRemove
{
public:
SmallFeatureRemove(TopoDS_Shape theShape);
void perform();
TopoDS_Shape GetShape();
private:
TopoDS_Shape myShape;
BRepAlgoAPI_Defeaturing myDefeature;
};

SmallFeatureRemove::SmallFeatureRemove(TopoDS_Shape theShape): myShape(theShape)
{
myDefeature.SetShape(myShape);
}

void SmallFeatureRemove::perform()
{
TopTools_ListOfShape aFacesToRemove;

TopExp_Explorer explorer(myShape, TopAbs_FACE);
for (;explorer.More(); explorer.Next())
{
const TopoDS_Face& face = TopoDS::Face(explorer.Current());

Handle(Geom_Surface) surface = BRep_Tool::Surface(face);

// Create a GeomAdaptor_Surface object
GeomAdaptor_Surface adaptor(surface);

// Determine the type of the surface
GeomAbs_SurfaceType surfaceType = adaptor.GetType();

if (surfaceType == GeomAbs_BSplineSurface)
aFacesToRemove.Append(face);
}
myDefeature.AddFacesToRemove(aFacesToRemove);
myDefeature.Build();
myShape = myDefeature.Shape();
}

TopoDS_Shape SmallFeatureRemove::GetShape()
{
return myShape;
}

```

Mikhail Sazonov's picture

It depends on your particular shape and the faces you are going to remove. It is needed to analyze the shape and see what occurs in the algorithm.