mirror of
https://github.com/Open-Cascade-SAS/OCCT.git
synced 2026-06-03 10:36:44 +08:00
0024204: The algorithm BRepOffsetAPI_MakePipeShell produces resulting shape with unwarrantably big tolerance
Added test case bugs/modalg_5/bug24204 Modified following test cases: bugs modalg_3 bug605 - case with bad input data, command "settolerance w1 1.e-7" was added; bugs modalg_4 bug629 - wrong case, now the algorithm can not build pipes on such profiles, test case was removed; bugs modalg_4 bug13595_1, bug13595_1 - number of subshapes was has changed; bugs modalg_5 bug23706_2 - square of resulting face was changed; bugs modalg_5 bug23870_1, bug23870_2, bug23870_3, bug23870_4, bug23870_5 - the number of subshapes was changed.
This commit is contained in:
@@ -42,6 +42,7 @@
|
||||
#include <BRepFill_ShapeLaw.hxx>
|
||||
#include <BRepFill_CompatibleWires.hxx>
|
||||
#include <BRepFill_NSections.hxx>
|
||||
#include <BRepFill_DataMapOfShapeHArray2OfShape.hxx>
|
||||
#include <TColStd_HArray1OfReal.hxx>
|
||||
|
||||
#include <GeomFill_TrihedronLaw.hxx>
|
||||
@@ -69,6 +70,7 @@
|
||||
#include <StdFail_NotDone.hxx>
|
||||
|
||||
#include <BRepBuilderAPI_Copy.hxx>
|
||||
#include <BRepBuilderAPI_Transform.hxx>
|
||||
|
||||
#include <GProp_GProps.hxx>
|
||||
#include <BRepGProp.hxx>
|
||||
@@ -738,7 +740,9 @@ void BRepFill_PipeShell::SetForceApproxC1(const Standard_Boolean ForceApproxC1)
|
||||
GeomAbs_Shape theContinuity = GeomAbs_C2;
|
||||
if (myTrihedron == GeomFill_IsDiscreteTrihedron)
|
||||
theContinuity = GeomAbs_C0;
|
||||
MkSw.Build(myTransition, theContinuity);
|
||||
TopTools_MapOfShape Dummy;
|
||||
BRepFill_DataMapOfShapeHArray2OfShape Dummy2;
|
||||
MkSw.Build(Dummy, Dummy2, myTransition, theContinuity);
|
||||
|
||||
myStatus = myLocation->GetStatus();
|
||||
Ok = (MkSw.IsDone() && (myStatus == GeomFill_PipeOk));
|
||||
@@ -1118,11 +1122,14 @@ void BRepFill_PipeShell::Place(const BRepFill_Section& Sec,
|
||||
Sec.Vertex(),
|
||||
Sec.WithContact(),
|
||||
Sec.WithCorrection());
|
||||
W = Sec.Wire();
|
||||
TopoDS_Wire TmpWire = Sec.Wire();
|
||||
aTrsf = Place.Transformation();
|
||||
TopLoc_Location Loc2(Place.Transformation()), Loc1;
|
||||
Loc1 = W.Location();
|
||||
W.Location(Loc2.Multiplied(Loc1));
|
||||
//TopLoc_Location Loc2(Place.Transformation()), Loc1;
|
||||
//Loc1 = TmpWire.Location();
|
||||
//W.Location(Loc2.Multiplied(Loc1));
|
||||
//Transform the copy
|
||||
W = TopoDS::Wire(BRepBuilderAPI_Transform(TmpWire, aTrsf, Standard_True));
|
||||
////////////////////////////////////
|
||||
param = Place.AbscissaOnPath();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user