const Standard_Boolean UpdatePCurve,
const Standard_Boolean enlargeU,
const Standard_Boolean enlargeVfirst,
- const Standard_Boolean enlargeVlast)
+ const Standard_Boolean enlargeVlast,
+ const Standard_Boolean UseInfini)
{
//---------------------------
// extension de la geometrie.
}
S->Bounds (US1,US2,VS1,VS2);
- UU1 = VV1 = - TheInfini;
- UU2 = VV2 = TheInfini;
+ if (UseInfini)
+ {
+ UU1 = VV1 = - TheInfini;
+ UU2 = VV2 = TheInfini;
+ }
+ else
+ {
+ Standard_Real FaceDU = UF2 - UF1;
+ Standard_Real FaceDV = VF2 - VF1;
+ UU1 = UF1 - FaceDU;
+ UU2 = UF2 + FaceDU;
+ VV1 = VF1 - FaceDV;
+ VV2 = VF2 + FaceDV;
+ }
if (CanExtentSurface) {
SurfaceChange = EnlargeGeometry( S, UU1, UU2, VV1, VV2, isVV1degen, isVV2degen, UF1, UF2, VF1, VF2,
Standard_Boolean IsInf(const Standard_Real theVal)
{
return (theVal > TheInfini*0.9);
-}
\ No newline at end of file
+}
//! if <UpdatePCurve> is TRUE, update the pcurves of the
//! edges of <F> on the new surface.if the surface has been changed,
//! Returns True if The Surface of <NF> has changed.
- Standard_EXPORT static Standard_Boolean EnLargeFace (const TopoDS_Face& F, TopoDS_Face& NF, const Standard_Boolean ChangeGeom, const Standard_Boolean UpDatePCurve = Standard_False, const Standard_Boolean enlargeU = Standard_True, const Standard_Boolean enlargeVfirst = Standard_True, const Standard_Boolean enlargeVlast = Standard_True);
+ Standard_EXPORT static Standard_Boolean EnLargeFace (const TopoDS_Face& F,
+ TopoDS_Face& NF,
+ const Standard_Boolean ChangeGeom,
+ const Standard_Boolean UpDatePCurve = Standard_False,
+ const Standard_Boolean enlargeU = Standard_True,
+ const Standard_Boolean enlargeVfirst = Standard_True,
+ const Standard_Boolean enlargeVlast = Standard_True,
+ const Standard_Boolean UseInfini = Standard_True);
Standard_EXPORT static void ExtentFace (const TopoDS_Face& F, TopTools_DataMapOfShapeShape& ConstShapes, TopTools_DataMapOfShapeShape& ToBuild, const TopAbs_State Side, const Standard_Real TolConf, TopoDS_Face& NF);
Handle(BRepTopAdaptor_TopolTool) aTool2 = new BRepTopAdaptor_TopolTool(aBAHS2);
Standard_Integer aNbSamples1 = aTool1->NbSamples();
Standard_Integer aNbSamples2 = aTool2->NbSamples();
- Standard_Integer aNbSamples = Max(aNbSamples1, aNbSamples2);
+ const Standard_Integer aNbSamplesMax = 23;
+ Standard_Integer aNbSamples = Min(aNbSamplesMax, Max(aNbSamples1, aNbSamples2));
+ const Standard_Real aTolAngle = M_PI/18;
// Computation of the continuity.
if (i == aNbSamples) aPar = aLast;
LocalAnalysis_SurfaceContinuity aCont(aC2d1, aC2d2, aPar,
- aSurf1, aSurf2, Order,
- 0.001, TolC0, 0.1, 0.1, 0.1);
- if (!aCont.IsDone())
- {
- nbNotDone++;
- continue;
- }
-
+ aSurf1, aSurf2, Order,
+ 0.001, TolC0, aTolAngle, 0.1, 0.1);
+ if (!aCont.IsDone())
+ {
+ nbNotDone++;
+ continue;
+ }
+
if (Order == GeomAbs_G1)
{
if (!aCont.IsG1())
aNeighborFace.Orientation(TopAbs_FORWARD);
TopoDS_Face aNewFace;
BRepOffset_Tool::EnLargeFace(aNeighborFace, aNewFace,
- Standard_True,Standard_True,Standard_True,Standard_True,Standard_True);
+ Standard_True,Standard_True,Standard_True,Standard_True,Standard_True,
+ Standard_False); //not too big
myFaceNewFace.Add(aNeighborFace, aNewFace);
}
}