mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
0025232: Functionality to create solids from set of shapes
Purpose: The algorithm is to build solids from set of shapes. It uses the BOPAlgo_Builder algorithm to intersect the given shapes and build the images of faces (if needed) and BOPAlgo_BuilderSolid algorithm to build the solids. Steps of the algorithm: 1. Collect all faces: intersect the shapes if necessary and collect the images of faces, otherwise just collect the faces to the <myFaces> list. All faces on this step added twice, with orientation FORWARD and REVERSED; 2. Create bounding box covering all the faces from <myFaces> and create solid box from corner points of that bounding box (myBBox, mySBox). Add faces from that box to <myFaces>; 3. Build solids using faces from <myFaces> using BOPAlgo_BuilderSolid algorithm; 4. Treat the result: Eliminate solid containig faces from <mySBox>; 5. Fill internal shapes: add internal vertices and edges into created solids; 6. Prepare the history. Fix for regression. class BOPAlgo_BuilderSolid: The tolerance value used in BRepClass3d_SolidClassifier has been increased. Test cases for issue CR25232 Small correction to eliminate the warning.
This commit is contained in:
@@ -229,8 +229,9 @@ class BOPAlgo_FaceSolid : public BOPAlgo_Algo {
|
||||
//
|
||||
BOPAlgo_Algo::UserBreak();
|
||||
//
|
||||
aState=BOPTools_AlgoTools::ComputeState(myPnt, mySolid,
|
||||
1.e-14, myContext);
|
||||
aState=BOPTools_AlgoTools::ComputeState(myPnt, mySolid,
|
||||
Precision::Confusion(),
|
||||
myContext);
|
||||
//
|
||||
myIsInternalFace=(aState==TopAbs_IN);
|
||||
}
|
||||
@@ -1057,7 +1058,8 @@ Standard_Boolean IsInside(const TopoDS_Shape& theS1,
|
||||
BOPCol_IndexedMapOfShape aBounds;
|
||||
BOPTools::MapShapes(*pS2, TopAbs_EDGE, aBounds);
|
||||
const TopoDS_Face& aF = (*(TopoDS_Face*)(&aExp.Current()));
|
||||
aState=BOPTools_AlgoTools::ComputeState(aF, *pS2, 1.e-14,
|
||||
aState=BOPTools_AlgoTools::ComputeState(aF, *pS2,
|
||||
Precision::Confusion(),
|
||||
aBounds, theContext);
|
||||
}
|
||||
return (aState==TopAbs_IN);
|
||||
|
Reference in New Issue
Block a user