1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

Compare commits

...

21 Commits

Author SHA1 Message Date
abk
b044b6e156 Build fix 3 in CDL files. 2013-03-05 20:37:21 +04:00
abk
9cd1334737 Build fix 2 in CDL files. 2013-03-05 17:26:49 +04:00
abk
671eb1e862 Build fix in CDL files. 2013-03-05 15:55:49 +04:00
abk
bee7f8fc7a Tolerance post Build (Perform) fix was changed for:
- BRepBuilderAPI_Sewing,
- BRepFeat_MakePrism,
- BRepFilletAPI_MakeChamfer,
- BRepFilletAPI_MakeFillet,
- BRepOffsetAPI_MakePipe,
- BRepOffsetAPI_MakePipeShell
so that input shapes remain unchanged by the fix.

Tolerance post Build (Perform) fix was slightly changed for:
- BRepOffsetAPI_NormalProjection,
- ShapeFix_Shape,
- ShapeUpgrade_ShapeDivide.

Correction of tolerances in input shapes was made for tests:
- blend buildevol F9,
-       complex B6,
-               B8,
-               D5,
-               E2,
-               E4,
-               E6,
-               E9,
- sewing tol_0_01 G3,
-                 G4.
2013-03-01 16:33:08 +04:00
abk
67f8838ff2 Class BRepLib_ToleranceRule was created to work with shape tolerances by
tolerance rule.

Some code from BRepLib was moved to BRepLib_ToleranceRule.
2013-03-01 16:33:06 +04:00
abk
2f9c163f7e Error message was changed in tests:
- blend complex F6,
-               F8,
- bugs fclasses bug309,

Error message was changed in test data files:
- chamfer data complex B5,
-                      B7,
- heal data advanced ZD3,
-           standard R5.
2013-03-01 16:33:03 +04:00
abk
4722f664d1 Input shapes were corrected by 'updatetolerance' in tests:
- bugs modalg bug697_3,
-             bug697_4,
-             bug697_7,
-             bug697_8,
-             bug697_11,
-             bug1255,
-             bug1255_1,
-             bug5729,
-             bug6181,
-             bug6182,
-             bug6272_85,
-             bug6272_86,
-             bug10842_5.
2013-03-01 16:31:20 +04:00
abk
4c8d711eb1 Draw command 'EnsureTolRule' was replaced by command 'updatetolerance' in
tests.

Draw command 'EnsureTolRule' was removed.
2013-03-01 16:30:34 +04:00
abk
6e1764d5d8 BRepBuilderAPI_MakeShape::EnsureToleranceRule was replaced by
BRepLib::UpdateTolerances.

BRepBuilderAPI_MakeShape::EnsureToleranceRule was removed.
2013-03-01 16:29:12 +04:00
abk
3c96653472 Error messages was changed in test case data file chamfer/data/complex/B9. Error message was changed in test cases: - thrusection/solids/A2, - A3, - A4, - A5, - A6, - A7, - A8, - A9. 2013-03-01 16:27:55 +04:00
abk
ae1cd6d251 Error message was changed in test case data files: - heal/data/advanced/H5, - S7, - ZC3, - ZE6, - ZE8, - ZE9. Result shape in the tests is invalid. 2013-03-01 16:27:53 +04:00
abk
287b9a4f97 Error message was changed in test case heal/drop_small|_edges/A4. Result shape in the test is invalid. 2013-03-01 16:27:51 +04:00
abk
c2f0a9ba45 Draw function nexplode was replaced by explode in test case
blend/complex/D4.
Calculation of gravity center was removed for degenerated edge.
It is revealed that function nexplode does not work on shapes with
degenerated edges.

Comments.
Calculation of gravity center was made by vertices data in case of
degenerated edge without representations especially for test case
blend/complex/D4. The mass of the edge was set to 1. The mass near 0 does
not satisfy the test case. As a result test case bugs/moddata/bug268
became failed. Because only the mass near 0 satisfies last test case.
2013-03-01 16:26:03 +04:00
abk
c3d415426f Error message was changed in test case heal/drop_small_edges/A4. 2013-03-01 16:26:02 +04:00
abk
e0345b0c1c Test case bugs/modalg/buc60462_2 was changed: - tolerances were corrected on input shapes by the tolerance rule; - set of error messages was changed. 2013-03-01 16:19:50 +04:00
abk
fd331dae90 Correction of tolerances in result shape was made for group boolean and
grids:
- heal drop_small_edges,
       fix_face_size,
       fix_gaps,
       split_angle_advanced,
       surface_to_bspline.

Correction of tolerances in input shapes was made for tests:
- bugs heal bug329,
- bugs modalg buc60462_1,
              buc60463,
              bug292,
              bug317,
              bug330,
              bug452_2,
              bug452_3,
              bug625,
              bug697_1,
              bug698,
              bug774_1,
              bug776_1,
              bug776_2,
              bug80,
              bug919,
- bugs moddata buc60652_2,
               buc60652_3,
               buc60707,
               bug368,
               bug75_2,
               fra62476_2,
               ger61235,
               pro20333,
- bugs step buc60948,
- bugs step bug630,
- bugs vis buc60661,
- bugs vis bug288_1,
- bugs vis bug288_4,
- bugs xde bug859,
- bugs xde bug861,
- feat featlf B8,
       featprism L2,
                 L8,
                 M1,
                 O6,
                 O9,
                 R1,
                 S1,
                 S2,
- sewing tol_0_01 T1.
2013-03-01 16:19:14 +04:00
abk
34672ad147 Method BRepGProp::LinearProperties was changed to avoid degenerated edges. 2013-03-01 16:13:59 +04:00
abk
1566c54533 Method BRepBuilderAPI_MakeShape::EnsureToleranceRule was made slightly
simpler.

Tolerance post Build (Perform) fix was made for:
- BRepAlgoAPI_BooleanOperation,
- BRepFeat_MakePrism,
- BRepOffsetAPI_MakePipeShell.

Draw command getsourcefile now returns result for:
- buildsweep,
- simulsweep,
- geompipe.

Conflicts:
	src/BRepAlgoAPI/BRepAlgoAPI_BooleanOperation.cxx
2013-03-01 16:13:46 +04:00
abk
9aaa3cc42c Application of EnsureToleranceRule to ShapeFix_Shape was fixed. 2013-03-01 16:12:28 +04:00
abk
0f5e173831 Static public method EnsureToleranceRule(const TopoDS_Shape & theS) was
created in class BRepBuilderAPI_MakeShape to fix all tolerances of the
shape and it's subshapes by the tolerance rule:
vertex tolerance >= edge tolerance >= face tolerance.
Edge or vertex tolerance which does not satisfy the tolerance rule will be
increased.
Draw command EnsureTolRule was created to test new functional.
Tolerance post Build (Perform) fix was made for:
- BRepBuilderAPI_Sewing,
- BRepFilletAPI_MakeChamfer,
- BRepFilletAPI_MakeFillet,
- BRepOffsetAPI_MakePipe,
- BRepOffsetAPI_NormalProjection,
- ShapeFix_Shape,
- ShapeUpgrade_ShapeDivide.
2013-03-01 16:12:26 +04:00
abv
8243ffaca9 0023610: checkshape command does not detect mismatch of the tolerance values among the sub-shapes of the shape
In BRepCheck, added check for tolerance of face to be not greater than tolerance of edge, and tolerance of edge not greater than tolerance of its vertices

Conflicts:
	src/BRepTest/BRepTest_CheckCommands.cxx
2013-03-01 16:11:25 +04:00
114 changed files with 947 additions and 550 deletions

View File

@@ -21,6 +21,7 @@
#include <BRepAlgoAPI_BooleanOperation.ixx> #include <BRepAlgoAPI_BooleanOperation.ixx>
#include <BRepLib_FuseEdges.hxx> #include <BRepLib_FuseEdges.hxx>
#include <BRepLib.hxx>
#include <TopExp.hxx> #include <TopExp.hxx>
#include <TopTools_MapOfShape.hxx> #include <TopTools_MapOfShape.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx> #include <TopTools_ListIteratorOfListOfShape.hxx>
@@ -257,6 +258,56 @@ const TopTools_ListOfShape& BRepAlgoAPI_BooleanOperation::Modified(const TopoDS_
const TopoDS_Shape& aS2 = myS2; const TopoDS_Shape& aS2 = myS2;
// //
myShape.Nullify(); myShape.Nullify();
//
// SECTION
//
if (myOperation==BOP_SECTION) {
myBuilder=new BOP_Section;
}
//
// COMMON, FUSE, CUT12, CUT21
//
else if (myOperation==BOP_COMMON || myOperation==BOP_FUSE ||
myOperation==BOP_CUT || myOperation==BOP_CUT21) {
//
// Check whether one or both of the arguments is(are) empty shape(s)
// If yes, create BOP_EmptyBuilder object and build the result fast.
{
Standard_Boolean bIsEmptyShape1, bIsEmptyShape2;
bIsEmptyShape1=BOPTools_Tools3D::IsEmptyShape(aS1);
bIsEmptyShape2=BOPTools_Tools3D::IsEmptyShape(aS2);
//
if (bIsEmptyShape1 || bIsEmptyShape2) {
myBuilder=new BOP_EmptyBuilder;
//
if (myBuilder==NULL) {
myErrorStatus=7;
return ;
}
//
myBuilder->SetShapes(aS1, aS2);
myBuilder->SetOperation (myOperation);
myBuilder->DoWithFiller (*myDSFiller);
bIsDone=myBuilder->IsDone();
if (bIsDone) {
myErrorStatus=0;
myBuilderCanWork=Standard_True;
myShape=myBuilder->Result();
BRepLib::UpdateTolerances(myShape);
Done();
}
else {
myErrorStatus=100+myBuilder->ErrorStatus();
NotDone();
}
return;
}
}
//
TopAbs_ShapeEnum aT1, aT2;
myBuilder=new BOPAlgo_BOP; myBuilder=new BOPAlgo_BOP;
myBuilder->AddArgument(aS1); myBuilder->AddArgument(aS1);
@@ -268,7 +319,13 @@ const TopTools_ListOfShape& BRepAlgoAPI_BooleanOperation::Modified(const TopoDS_
if (!iErr) { if (!iErr) {
myErrorStatus=0; myErrorStatus=0;
myBuilderCanWork=Standard_True; myBuilderCanWork=Standard_True;
<<<<<<< HEAD
myShape=myBuilder->Shape(); myShape=myBuilder->Shape();
EnsureToleranceRule(myShape);
=======
myShape=myBuilder->Result();
BRepLib::UpdateTolerances(myShape);
>>>>>>> d61c0a6... BRepBuilderAPI_MakeShape::EnsureToleranceRule was replaced by
Done(); Done();
} }
else { else {

View File

@@ -21,6 +21,10 @@
#include <BRepBuilderAPI_MakeShape.ixx> #include <BRepBuilderAPI_MakeShape.ixx>
#include <BRep_TEdge.hxx>
#include <BRep_TFace.hxx>
#include <BRep_TVertex.hxx>
#include <TopExp_Explorer.hxx>
#include <TopoDS.hxx> #include <TopoDS.hxx>
#include <TopoDS_Shape.hxx> #include <TopoDS_Shape.hxx>
#include <TopoDS_Face.hxx> #include <TopoDS_Face.hxx>
@@ -113,7 +117,3 @@ Standard_Boolean BRepBuilderAPI_MakeShape::IsDeleted (const TopoDS_Shape& S)
{ {
return Standard_False; return Standard_False;
} }

View File

@@ -212,6 +212,9 @@ is
raises NoSuchObject from Standard; -- raised if shape has not been modified raises NoSuchObject from Standard; -- raised if shape has not been modified
---Purpose: Gives a modifieded subshape ---Purpose: Gives a modifieded subshape
IsProtectedFromModification(me; theS : Shape from TopoDS) returns Boolean;
---Purpose: Indicates if theS is protected from modification.
Dump(me); Dump(me);
---Purpose: print the informations ---Purpose: print the informations
@@ -554,4 +557,6 @@ fields
myReShape : ReShape from BRepTools is protected; myReShape : ReShape from BRepTools is protected;
myMergedEdges : MapOfShape from TopTools; myMergedEdges : MapOfShape from TopTools;
myProtectedFromModificationShapes : IndexedMapOfShape from TopTools;
end Sewing; end Sewing;

View File

@@ -55,6 +55,7 @@
#include <BRep_Builder.hxx> #include <BRep_Builder.hxx>
#include <BRep_Tool.hxx> #include <BRep_Tool.hxx>
#include <BRepLib.hxx> #include <BRepLib.hxx>
#include <BRepLib_ToleranceRule.hxx>
#include <BRepTools_Quilt.hxx> #include <BRepTools_Quilt.hxx>
#include <BSplCLib.hxx> #include <BSplCLib.hxx>
#include <Extrema_ExtPC.hxx> #include <Extrema_ExtPC.hxx>
@@ -1736,7 +1737,12 @@ void BRepBuilderAPI_Sewing::Load(const TopoDS_Shape& theShape)
{ {
myReShape->Clear(); myReShape->Clear();
if (theShape.IsNull()) myShape.Nullify(); if (theShape.IsNull()) myShape.Nullify();
else myShape = myReShape->Apply(theShape); else
{
TopExp::MapShapes(theShape, myProtectedFromModificationShapes);
//
myShape = myReShape->Apply(theShape);
}
mySewedShape.Nullify(); mySewedShape.Nullify();
// Nullify flags and counters // Nullify flags and counters
myNbShapes = myNbEdges = myNbVertices = 0; myNbShapes = myNbEdges = myNbVertices = 0;
@@ -1766,6 +1772,9 @@ void BRepBuilderAPI_Sewing::Load(const TopoDS_Shape& theShape)
void BRepBuilderAPI_Sewing::Add(const TopoDS_Shape& aShape) void BRepBuilderAPI_Sewing::Add(const TopoDS_Shape& aShape)
{ {
if (aShape.IsNull()) return; if (aShape.IsNull()) return;
//
TopExp::MapShapes(aShape, myProtectedFromModificationShapes);
//
TopoDS_Shape oShape = myReShape->Apply(aShape); TopoDS_Shape oShape = myReShape->Apply(aShape);
myOldShapes.Add(aShape,oShape); myOldShapes.Add(aShape,oShape);
myNbShapes = myOldShapes.Extent(); myNbShapes = myOldShapes.Extent();
@@ -1909,6 +1918,8 @@ void BRepBuilderAPI_Sewing::Perform(const Handle(Message_ProgressIndicator)& the
mySewedShape.Nullify(); mySewedShape.Nullify();
return; return;
} }
BRepLib_ToleranceRule::SetProperTolerances(
mySewedShape, *this);
} }
#if DEB #if DEB
chr_total.Stop(); chr_total.Stop();
@@ -2147,6 +2158,16 @@ TopoDS_Shape BRepBuilderAPI_Sewing::ModifiedSubShape(const TopoDS_Shape& aShape)
return myReShape->Apply(aShape); return myReShape->Apply(aShape);
} }
//=======================================================================
//function : IsProtectedFromModification
//purpose :
//=======================================================================
Standard_Boolean BRepBuilderAPI_Sewing::IsProtectedFromModification(
const TopoDS_Shape & theS) const
{
return myProtectedFromModificationShapes.Contains(theS);
}
//======================================================================= //=======================================================================
//function : Dump //function : Dump
//purpose : //purpose :

View File

@@ -80,110 +80,44 @@ Standard_Boolean BRepCheck::SelfIntersection(const TopoDS_Wire& W,
void BRepCheck::Print(const BRepCheck_Status stat, void BRepCheck::Print(const BRepCheck_Status stat,
Standard_OStream& OS) Standard_OStream& OS)
{ {
#define PRINT_CASE(stat) case stat: OS << #stat "\n"; break
switch (stat) { switch (stat) {
case BRepCheck_NoError: PRINT_CASE(BRepCheck_NoError);
OS << "BRepCheck_NoError\n"; PRINT_CASE(BRepCheck_InvalidPointOnCurve);
break; PRINT_CASE(BRepCheck_InvalidPointOnCurveOnSurface);
case BRepCheck_InvalidPointOnCurve: PRINT_CASE(BRepCheck_InvalidPointOnSurface);
OS << "BRepCheck_InvalidPointOnCurve\n"; PRINT_CASE(BRepCheck_No3DCurve);
break; PRINT_CASE(BRepCheck_Multiple3DCurve);
case BRepCheck_InvalidPointOnCurveOnSurface: PRINT_CASE(BRepCheck_Invalid3DCurve);
OS << "BRepCheck_InvalidPointOnCurveOnSurface\n"; PRINT_CASE(BRepCheck_NoCurveOnSurface);
break; PRINT_CASE(BRepCheck_InvalidCurveOnSurface);
case BRepCheck_InvalidPointOnSurface: PRINT_CASE(BRepCheck_InvalidCurveOnClosedSurface);
OS << "BRepCheck_InvalidPointOnSurface\n"; PRINT_CASE(BRepCheck_InvalidSameRangeFlag);
break; PRINT_CASE(BRepCheck_InvalidSameParameterFlag);
case BRepCheck_No3DCurve: PRINT_CASE(BRepCheck_InvalidDegeneratedFlag);
OS << "BRepCheck_No3DCurve\n"; PRINT_CASE(BRepCheck_FreeEdge);
break; PRINT_CASE(BRepCheck_InvalidMultiConnexity);
case BRepCheck_Multiple3DCurve: PRINT_CASE(BRepCheck_InvalidRange);
OS << "BRepCheck_Multiple3DCurve\n"; PRINT_CASE(BRepCheck_EmptyWire);
break; PRINT_CASE(BRepCheck_RedundantEdge);
case BRepCheck_Invalid3DCurve: PRINT_CASE(BRepCheck_SelfIntersectingWire);
OS << "BRepCheck_Invalid3DCurve\n"; PRINT_CASE(BRepCheck_NoSurface);
break; PRINT_CASE(BRepCheck_InvalidWire);
case BRepCheck_NoCurveOnSurface: PRINT_CASE(BRepCheck_RedundantWire);
OS << "BRepCheck_NoCurveOnSurface\n"; PRINT_CASE(BRepCheck_IntersectingWires);
break; PRINT_CASE(BRepCheck_InvalidImbricationOfWires);
case BRepCheck_InvalidCurveOnSurface: PRINT_CASE(BRepCheck_EmptyShell);
OS << "BRepCheck_InvalidCurveOnSurface\n"; PRINT_CASE(BRepCheck_RedundantFace);
break; PRINT_CASE(BRepCheck_UnorientableShape);
case BRepCheck_InvalidCurveOnClosedSurface: PRINT_CASE(BRepCheck_NotClosed);
OS << "BRepCheck_InvalidCurveOnClosedSurface\n"; PRINT_CASE(BRepCheck_NotConnected);
break; PRINT_CASE(BRepCheck_SubshapeNotInShape);
case BRepCheck_InvalidSameRangeFlag: PRINT_CASE(BRepCheck_BadOrientation);
OS << "BRepCheck_InvalidSameRangeFlag\n"; PRINT_CASE(BRepCheck_BadOrientationOfSubshape);
break; PRINT_CASE(BRepCheck_InvalidToleranceValue);
case BRepCheck_InvalidSameParameterFlag: PRINT_CASE(BRepCheck_CheckFail);
OS << "BRepCheck_InvalidSameParameterFlag\n";
break;
case BRepCheck_InvalidDegeneratedFlag:
OS << "BRepCheck_InvalidDegeneratedFlag\n";
break;
case BRepCheck_FreeEdge:
OS << "BRepCheck_FreeEdge\n";
break;
case BRepCheck_InvalidMultiConnexity:
OS << "BRepCheck_InvalidMultiConnexity\n";
break;
case BRepCheck_InvalidRange:
OS << "BRepCheck_InvalidRange\n";
break;
case BRepCheck_EmptyWire:
OS << "BRepCheck_EmptyWire\n";
break;
case BRepCheck_RedundantEdge:
OS << "BRepCheck_RedundantEdge\n";
break;
case BRepCheck_SelfIntersectingWire:
OS << "BRepCheck_SelfIntersectingWire\n";
break;
case BRepCheck_NoSurface:
OS << "BRepCheck_NoSurface\n";
break;
case BRepCheck_InvalidWire:
OS << "BRepCheck_InvalidWire\n";
break;
case BRepCheck_RedundantWire:
OS << "BRepCheck_RedundantWire\n";
break;
case BRepCheck_IntersectingWires:
OS << "BRepCheck_IntersectingWires\n";
break;
case BRepCheck_InvalidImbricationOfWires:
OS << "BRepCheck_InvalidImbricationOfWires\n";
break;
case BRepCheck_EmptyShell:
OS << "BRepCheck_EmptyShell\n";
break;
case BRepCheck_RedundantFace:
OS << "BRepCheck_RedundantFace\n";
break;
case BRepCheck_UnorientableShape:
OS << "BRepCheck_UnorientableShape\n";
break;
case BRepCheck_NotClosed:
OS << "BRepCheck_NotClosed\n";
break;
case BRepCheck_NotConnected:
OS << "BRepCheck_NotConnected\n";
break;
case BRepCheck_SubshapeNotInShape:
OS << "BRepCheck_SubshapeNotInShape\n";
break;
case BRepCheck_BadOrientation:
OS << "BRepCheck_BadOrientation\n";
break;
case BRepCheck_BadOrientationOfSubshape:
OS << "BRepCheck_BadOrientationOfSubshape\n";
break;
case BRepCheck_CheckFail:
OS << "BRepCheck_CheckFail\n";
break;
default: default:
break; break;
} }
} }

View File

@@ -63,8 +63,6 @@
#include <TopoDS_Face.hxx> #include <TopoDS_Face.hxx>
#include <Precision.hxx> #include <Precision.hxx>
//modified by NIZNHY-PKV Thu May 05 09:01:57 2011f
static static
Standard_Boolean Validate(const Adaptor3d_Curve&, Standard_Boolean Validate(const Adaptor3d_Curve&,
const Adaptor3d_CurveOnSurface&, const Adaptor3d_CurveOnSurface&,
@@ -83,12 +81,6 @@ static
static static
Standard_Real PrecSurface(const Adaptor3d_CurveOnSurface& aACS); Standard_Real PrecSurface(const Adaptor3d_CurveOnSurface& aACS);
//static Standard_Boolean Validate(const Adaptor3d_Curve&,
// const Adaptor3d_Curve&,
// const Standard_Real,
// const Standard_Boolean);
//modified by NIZNHY-PKV Thu May 05 09:02:01 2011t
#define NCONTROL 23 #define NCONTROL 23
//======================================================================= //=======================================================================
@@ -230,7 +222,6 @@ void BRepCheck_Edge::InContext(const TopoDS_Shape& S)
Standard_Real Tol = BRep_Tool::Tolerance(TopoDS::Edge(myShape)); Standard_Real Tol = BRep_Tool::Tolerance(TopoDS::Edge(myShape));
TopAbs_ShapeEnum styp = S.ShapeType(); TopAbs_ShapeEnum styp = S.ShapeType();
// for (TopExp_Explorer exp(S,TopAbs_EDGE); exp.More(); exp.Next()) {
TopExp_Explorer exp(S,TopAbs_EDGE) ; TopExp_Explorer exp(S,TopAbs_EDGE) ;
for ( ; exp.More(); exp.Next()) { for ( ; exp.More(); exp.Next()) {
if (exp.Current().IsSame(myShape)) { if (exp.Current().IsSame(myShape)) {
@@ -244,6 +235,9 @@ void BRepCheck_Edge::InContext(const TopoDS_Shape& S)
switch (styp) { switch (styp) {
case TopAbs_FACE: case TopAbs_FACE:
if(BRep_Tool::Tolerance(TopoDS::Face(S)) - Tol > Precision::Confusion())
BRepCheck::Add(lst,BRepCheck_InvalidToleranceValue);
if (!myCref.IsNull()) { if (!myCref.IsNull()) {
Standard_Boolean SameParameter = TE->SameParameter(); Standard_Boolean SameParameter = TE->SameParameter();

View File

@@ -22,6 +22,7 @@
#include <BRepCheck_Vertex.ixx> #include <BRepCheck_Vertex.ixx>
#include <BRepCheck.hxx>
#include <BRepCheck_ListOfStatus.hxx> #include <BRepCheck_ListOfStatus.hxx>
#include <BRep_TVertex.hxx> #include <BRep_TVertex.hxx>
@@ -46,9 +47,9 @@
#include <TopExp_Explorer.hxx> #include <TopExp_Explorer.hxx>
#include <TopoDS_Iterator.hxx> #include <TopoDS_Iterator.hxx>
#include <BRepCheck.hxx>
#include <TopoDS.hxx> #include <TopoDS.hxx>
#include <TopoDS_Edge.hxx> #include <TopoDS_Edge.hxx>
#include <Precision.hxx>
//======================================================================= //=======================================================================
//function : BRepCheck_Vertex //function : BRepCheck_Vertex
@@ -115,7 +116,6 @@ void BRepCheck_Vertex::InContext(const TopoDS_Shape& S)
case TopAbs_EDGE: case TopAbs_EDGE:
{ {
// Try to find the vertex on the edge // Try to find the vertex on the edge
const TopoDS_Edge& E = TopoDS::Edge(S); const TopoDS_Edge& E = TopoDS::Edge(S);
TopoDS_Iterator itv(E.Oriented(TopAbs_FORWARD)); TopoDS_Iterator itv(E.Oriented(TopAbs_FORWARD));
TopoDS_Vertex VFind; TopoDS_Vertex VFind;
@@ -149,9 +149,15 @@ void BRepCheck_Vertex::InContext(const TopoDS_Shape& S)
// VFind is not null for sure // VFind is not null for sure
TopAbs_Orientation orv = VFind.Orientation(); TopAbs_Orientation orv = VFind.Orientation();
Standard_Real Tol = BRep_Tool::Tolerance(TopoDS::Vertex(myShape)); Standard_Real TolV = TV->Tolerance();
Tol = Max(Tol,BRep_Tool::Tolerance(E)); // to check Standard_Real TolE = BRep_Tool::Tolerance(E);
Tol *= Tol; if (TolE > TolV)
{
if (TolE - TolV > Precision::Confusion())
BRepCheck::Add(myMap(S),BRepCheck_InvalidToleranceValue);
TolV = TolE;
}
Standard_Real aTol2 = TolV * TolV;
Handle(BRep_TEdge)& TE = *((Handle(BRep_TEdge)*)&E.TShape()); Handle(BRep_TEdge)& TE = *((Handle(BRep_TEdge)*)&E.TShape());
BRep_ListIteratorOfListOfCurveRepresentation itcr(TE->Curves()); BRep_ListIteratorOfListOfCurveRepresentation itcr(TE->Curves());
@@ -173,7 +179,7 @@ void BRepCheck_Vertex::InContext(const TopoDS_Shape& S)
if (pr->IsPointOnCurve(C,L)) { if (pr->IsPointOnCurve(C,L)) {
Controlp = C->Value(pr->Parameter()); Controlp = C->Value(pr->Parameter());
Controlp.Transform(L.Transformation()); Controlp.Transform(L.Transformation());
if (prep.SquareDistance(Controlp)> Tol) { if (prep.SquareDistance(Controlp) > aTol2) {
BRepCheck::Add(myMap(S),BRepCheck_InvalidPointOnCurve); BRepCheck::Add(myMap(S),BRepCheck_InvalidPointOnCurve);
} }
} }
@@ -184,14 +190,14 @@ void BRepCheck_Vertex::InContext(const TopoDS_Shape& S)
if (orv == TopAbs_FORWARD || multiple) { if (orv == TopAbs_FORWARD || multiple) {
Controlp = C->Value(GC->First()); Controlp = C->Value(GC->First());
Controlp.Transform(L.Transformation()); Controlp.Transform(L.Transformation());
if (prep.SquareDistance(Controlp)> Tol) { if (prep.SquareDistance(Controlp) > aTol2) {
BRepCheck::Add(myMap(S),BRepCheck_InvalidPointOnCurve); BRepCheck::Add(myMap(S),BRepCheck_InvalidPointOnCurve);
} }
} }
if (orv == TopAbs_REVERSED || multiple) { if (orv == TopAbs_REVERSED || multiple) {
Controlp = C->Value(GC->Last()); Controlp = C->Value(GC->Last());
Controlp.Transform(L.Transformation()); Controlp.Transform(L.Transformation());
if (prep.SquareDistance(Controlp)> Tol) { if (prep.SquareDistance(Controlp) > aTol2) {
BRepCheck::Add(myMap(S),BRepCheck_InvalidPointOnCurve); BRepCheck::Add(myMap(S),BRepCheck_InvalidPointOnCurve);
} }
} }
@@ -212,18 +218,16 @@ void BRepCheck_Vertex::InContext(const TopoDS_Shape& S)
gp_Pnt2d p2d = PC->Value(pr->Parameter()); gp_Pnt2d p2d = PC->Value(pr->Parameter());
Controlp = Su->Value(p2d.X(),p2d.Y()); Controlp = Su->Value(p2d.X(),p2d.Y());
Controlp.Transform(L.Transformation()); Controlp.Transform(L.Transformation());
if (prep.SquareDistance(Controlp)> Tol) { if (prep.SquareDistance(Controlp) > aTol2) {
BRepCheck::Add(myMap(S), BRepCheck::Add(myMap(S), BRepCheck_InvalidPointOnCurveOnSurface);
BRepCheck_InvalidPointOnCurveOnSurface);
} }
} }
if (!PC2.IsNull() && pr->IsPointOnCurveOnSurface(PC2,Su,L)) { if (!PC2.IsNull() && pr->IsPointOnCurveOnSurface(PC2,Su,L)) {
gp_Pnt2d p2d = PC2->Value(pr->Parameter()); gp_Pnt2d p2d = PC2->Value(pr->Parameter());
Controlp = Su->Value(p2d.X(),p2d.Y()); Controlp = Su->Value(p2d.X(),p2d.Y());
Controlp.Transform(L.Transformation()); Controlp.Transform(L.Transformation());
if (prep.SquareDistance(Controlp)> Tol) { if (prep.SquareDistance(Controlp) > aTol2) {
BRepCheck::Add(myMap(S), BRepCheck::Add(myMap(S), BRepCheck_InvalidPointOnCurveOnSurface);
BRepCheck_InvalidPointOnCurveOnSurface);
} }
} }
itpr.Next(); itpr.Next();
@@ -247,9 +251,15 @@ void BRepCheck_Vertex::InContext(const TopoDS_Shape& S)
const Handle(Geom_Surface)& Su = TF->Surface(); const Handle(Geom_Surface)& Su = TF->Surface();
TopLoc_Location L = (Floc * TFloc).Predivided(myShape.Location()); TopLoc_Location L = (Floc * TFloc).Predivided(myShape.Location());
Standard_Real Tol = BRep_Tool::Tolerance(TopoDS::Vertex(myShape)); Standard_Real TolV = TV->Tolerance();
Tol = Max(Tol,BRep_Tool::Tolerance(TopoDS::Face(S))); // to check Standard_Real TolF = TF->Tolerance();
Tol *= Tol; if (TolF > TolV)
{
if (TolF - TolV > Precision::Confusion())
BRepCheck::Add(myMap(S),BRepCheck_InvalidToleranceValue);
TolV = TolF;
}
Standard_Real aTol2 = TolV * TolV;
BRep_ListIteratorOfListOfPointRepresentation itpr(TV->Points()); BRep_ListIteratorOfListOfPointRepresentation itpr(TV->Points());
while (itpr.More()) { while (itpr.More()) {
@@ -257,7 +267,7 @@ void BRepCheck_Vertex::InContext(const TopoDS_Shape& S)
if (pr->IsPointOnSurface(Su,L)) { if (pr->IsPointOnSurface(Su,L)) {
Controlp = Su->Value(pr->Parameter(),pr->Parameter2()); Controlp = Su->Value(pr->Parameter(),pr->Parameter2());
Controlp.Transform(L.Transformation()); Controlp.Transform(L.Transformation());
if (prep.SquareDistance(Controlp)> Tol) { if (prep.SquareDistance(Controlp) > aTol2) {
BRepCheck::Add(myMap(S),BRepCheck_InvalidPointOnSurface); BRepCheck::Add(myMap(S),BRepCheck_InvalidPointOnSurface);
} }
} }

View File

@@ -49,7 +49,8 @@ uses Shape from TopoDS,
DataMapOfShapeShape from TopTools, DataMapOfShapeShape from TopTools,
SequenceOfCurve from TColGeom, SequenceOfCurve from TColGeom,
Curve from Geom, Curve from Geom,
StatusError from BRepFeat StatusError from BRepFeat,
IndexedMapOfShape from TopTools
raises ConstructionError from Standard raises ConstructionError from Standard
@@ -168,6 +169,10 @@ is
BarycCurve(me: in out) BarycCurve(me: in out)
returns Curve from Geom; returns Curve from Geom;
---Purpose: Generates a curve along the center of mass of the primitive. ---Purpose: Generates a curve along the center of mass of the primitive.
IsProtectedFromModification(me; theS : Shape from TopoDS)
returns Boolean from Standard;
---Purpose: Indicates if theS is protected from modification.
fields fields
myPbase : Shape from TopoDS; myPbase : Shape from TopoDS;
@@ -176,5 +181,6 @@ fields
myCurves : SequenceOfCurve from TColGeom; myCurves : SequenceOfCurve from TColGeom;
myBCurve : Curve from Geom; myBCurve : Curve from Geom;
myStatusError : StatusError from BRepFeat; myStatusError : StatusError from BRepFeat;
myProtectedFromModificationShapes : IndexedMapOfShape from TopTools;
end MakePrism; end MakePrism;

View File

@@ -45,6 +45,8 @@
#include <BRep_Tool.hxx> #include <BRep_Tool.hxx>
#include <BRepLib_ToleranceRule.hxx>
#include <BRepTools.hxx> #include <BRepTools.hxx>
@@ -139,6 +141,10 @@ void BRepFeat_MakePrism::Init(const TopoDS_Shape& Sbase,
Standard_Boolean trc = BRepFeat_GettraceFEAT(); Standard_Boolean trc = BRepFeat_GettraceFEAT();
if (trc) cout << "BRepFeat_MakePrism::Init" << endl; if (trc) cout << "BRepFeat_MakePrism::Init" << endl;
#endif #endif
TopExp::MapShapes(Sbase, myProtectedFromModificationShapes);
TopExp::MapShapes(Pbase, myProtectedFromModificationShapes);
TopExp::MapShapes(Skface, myProtectedFromModificationShapes);
//
mySkface = Skface; mySkface = Skface;
SketchFaceValid(); SketchFaceValid();
mySbase = Sbase; mySbase = Sbase;
@@ -204,6 +210,8 @@ void BRepFeat_MakePrism::Add(const TopoDS_Edge& E,
Standard_Boolean trc = BRepFeat_GettraceFEAT(); Standard_Boolean trc = BRepFeat_GettraceFEAT();
if (trc) cout << "BRepFeat_MakePrism::Add(Edge,face)" << endl; if (trc) cout << "BRepFeat_MakePrism::Add(Edge,face)" << endl;
#endif #endif
TopExp::MapShapes(E, myProtectedFromModificationShapes);
//
TopExp_Explorer exp; TopExp_Explorer exp;
for (exp.Init(mySbase,TopAbs_FACE);exp.More();exp.Next()) { for (exp.Init(mySbase,TopAbs_FACE);exp.More();exp.Next()) {
if (exp.Current().IsSame(F)) { if (exp.Current().IsSame(F)) {
@@ -364,6 +372,8 @@ void BRepFeat_MakePrism::Perform(const TopoDS_Shape& Until)
Standard_Boolean trc = BRepFeat_GettraceFEAT(); Standard_Boolean trc = BRepFeat_GettraceFEAT();
if (trc) cout << "BRepFeat_MakePrism::Perform(Until)" << endl; if (trc) cout << "BRepFeat_MakePrism::Perform(Until)" << endl;
#endif #endif
TopExp::MapShapes(Until, myProtectedFromModificationShapes);
//
if (Until.IsNull()) { if (Until.IsNull()) {
Standard_ConstructionError::Raise(); Standard_ConstructionError::Raise();
} }
@@ -463,6 +473,7 @@ void BRepFeat_MakePrism::Perform(const TopoDS_Shape& Until)
} }
} }
} }
BRepLib_ToleranceRule::SetProperTolerances(myShape, *this);
/* // loop of control of descendance /* // loop of control of descendance
TopExp_Explorer expr(mySbase, TopAbs_FACE); TopExp_Explorer expr(mySbase, TopAbs_FACE);
@@ -514,6 +525,9 @@ void BRepFeat_MakePrism::Perform(const TopoDS_Shape& From,
Standard_Boolean trc = BRepFeat_GettraceFEAT(); Standard_Boolean trc = BRepFeat_GettraceFEAT();
if (trc) cout << "BRepFeat_MakePrism::Perform(From,Until)" << endl; if (trc) cout << "BRepFeat_MakePrism::Perform(From,Until)" << endl;
#endif #endif
TopExp::MapShapes(From, myProtectedFromModificationShapes);
TopExp::MapShapes(Until, myProtectedFromModificationShapes);
//
if (From.IsNull() || Until.IsNull()) { if (From.IsNull() || Until.IsNull()) {
Standard_ConstructionError::Raise(); Standard_ConstructionError::Raise();
} }
@@ -785,6 +799,8 @@ void BRepFeat_MakePrism::PerformFromEnd(const TopoDS_Shape& Until)
Standard_Boolean trc = BRepFeat_GettraceFEAT(); Standard_Boolean trc = BRepFeat_GettraceFEAT();
if (trc) cout << "BRepFeat_MakePrism::PerformFromEnd(From,Until)" << endl; if (trc) cout << "BRepFeat_MakePrism::PerformFromEnd(From,Until)" << endl;
#endif #endif
TopExp::MapShapes(Until, myProtectedFromModificationShapes);
//
if (Until.IsNull()) { if (Until.IsNull()) {
Standard_ConstructionError::Raise(); Standard_ConstructionError::Raise();
} }
@@ -988,6 +1004,8 @@ void BRepFeat_MakePrism::PerformUntilHeight(const TopoDS_Shape& Until,
Standard_Boolean trc = BRepFeat_GettraceFEAT(); Standard_Boolean trc = BRepFeat_GettraceFEAT();
if (trc) cout << "BRepFeat_MakePrism::PerformUntilHeight(Until,Length)" << endl; if (trc) cout << "BRepFeat_MakePrism::PerformUntilHeight(Until,Length)" << endl;
#endif #endif
TopExp::MapShapes(Until, myProtectedFromModificationShapes);
//
if (Until.IsNull()) { if (Until.IsNull()) {
Perform(Length); Perform(Length);
} }
@@ -1432,8 +1450,12 @@ Standard_Boolean ToFuse(const TopoDS_Face& F1,
return ValRet; return ValRet;
} }
//=======================================================================
//function : IsProtectedFromModification
//purpose :
//=======================================================================
Standard_Boolean BRepFeat_MakePrism::IsProtectedFromModification(
const TopoDS_Shape & theS) const
{
return myProtectedFromModificationShapes.Contains(theS);
}

View File

@@ -41,7 +41,8 @@ uses
ListOfShape from TopTools, ListOfShape from TopTools,
SecHArray1 from ChFiDS, SecHArray1 from ChFiDS,
HBuilder from TopOpeBRepBuild, HBuilder from TopOpeBRepBuild,
ShapeModification from BRepBuilderAPI ShapeModification from BRepBuilderAPI,
IndexedMapOfShape from TopTools
@@ -379,6 +380,10 @@ is
returns Boolean returns Boolean
is redefined virtual; is redefined virtual;
IsProtectedFromModification(me; theS : Shape from TopoDS)
returns Boolean from Standard;
---Purpose: Indicates if theS is protected from modification.
------------------------------- -------------------------------
---Methods for quick simulation ---Methods for quick simulation
------------------------------- -------------------------------
@@ -396,6 +401,7 @@ fields
myBuilder : ChBuilder from ChFi3d; myBuilder : ChBuilder from ChFi3d;
myMap : MapOfShape from TopTools; myMap : MapOfShape from TopTools;
myProtectedFromModificationShapes : IndexedMapOfShape from TopTools;
end MakeChamfer; end MakeChamfer;

View File

@@ -25,6 +25,8 @@
#include <TopTools_ListIteratorOfListOfShape.hxx> #include <TopTools_ListIteratorOfListOfShape.hxx>
#include <ChFiDS_Spine.hxx> #include <ChFiDS_Spine.hxx>
#include <TopExp_Explorer.hxx> #include <TopExp_Explorer.hxx>
#include <BRepLib_ToleranceRule.hxx>
#include <TopExp.hxx>
@@ -34,6 +36,7 @@
//======================================================================= //=======================================================================
BRepFilletAPI_MakeChamfer::BRepFilletAPI_MakeChamfer(const TopoDS_Shape &S):myBuilder(S) BRepFilletAPI_MakeChamfer::BRepFilletAPI_MakeChamfer(const TopoDS_Shape &S):myBuilder(S)
{ {
TopExp::MapShapes(S, myProtectedFromModificationShapes);
} }
@@ -391,6 +394,7 @@ void BRepFilletAPI_MakeChamfer::Build()
if (myBuilder.IsDone()){ if (myBuilder.IsDone()){
Done(); Done();
myShape = myBuilder.Shape(); myShape = myBuilder.Shape();
BRepLib_ToleranceRule::SetProperTolerances(myShape, *this);
//creation of the Map. //creation of the Map.
TopExp_Explorer ex; TopExp_Explorer ex;
@@ -470,6 +474,16 @@ Standard_Boolean BRepFilletAPI_MakeChamfer::IsDeleted(const TopoDS_Shape& F)
return Standard_True; return Standard_True;
} }
//=======================================================================
//function : IsProtectedFromModification
//purpose :
//=======================================================================
Standard_Boolean BRepFilletAPI_MakeChamfer::IsProtectedFromModification(
const TopoDS_Shape & theS) const
{
return myProtectedFromModificationShapes.Contains(theS);
}
//======================================================================= //=======================================================================
//function : Simulate //function : Simulate
//purpose : //purpose :

View File

@@ -47,7 +47,8 @@ uses
FilletShape from ChFi3d, FilletShape from ChFi3d,
HBuilder from TopOpeBRepBuild, HBuilder from TopOpeBRepBuild,
MapOfShape from TopTools, MapOfShape from TopTools,
ShapeModification from BRepBuilderAPI ShapeModification from BRepBuilderAPI,
IndexedMapOfShape from TopTools
raises raises
NotDone from StdFail , NotDone from StdFail ,
@@ -450,6 +451,10 @@ is
returns Boolean returns Boolean
is redefined virtual; is redefined virtual;
IsProtectedFromModification(me; theS : Shape from TopoDS)
returns Boolean from Standard;
---Purpose: Indicates if theS is protected from modification.
------------------------------------------- -------------------------------------------
-- Methods usefull for BRepCtx utilities -- -- Methods usefull for BRepCtx utilities --
------------------------------------------- -------------------------------------------
@@ -538,5 +543,6 @@ fields
myBuilder : FilBuilder from ChFi3d; myBuilder : FilBuilder from ChFi3d;
myMap : MapOfShape from TopTools; myMap : MapOfShape from TopTools;
myProtectedFromModificationShapes : IndexedMapOfShape from TopTools;
end MakeFillet; end MakeFillet;

View File

@@ -30,6 +30,8 @@
#include <Law_Linear.hxx> #include <Law_Linear.hxx>
#include <Law_S.hxx> #include <Law_S.hxx>
#include <Law_Interpol.hxx> #include <Law_Interpol.hxx>
#include <BRepLib_ToleranceRule.hxx>
#include <TopExp.hxx>
//======================================================================= //=======================================================================
//function : BRepFilletAPI_MakeFillet //function : BRepFilletAPI_MakeFillet
@@ -40,6 +42,7 @@ BRepFilletAPI_MakeFillet::BRepFilletAPI_MakeFillet(const TopoDS_Shape& S,
const ChFi3d_FilletShape FShape): const ChFi3d_FilletShape FShape):
myBuilder(S,FShape) myBuilder(S,FShape)
{ {
TopExp::MapShapes(S, myProtectedFromModificationShapes);
} }
//======================================================================= //=======================================================================
@@ -532,6 +535,7 @@ void BRepFilletAPI_MakeFillet::Build()
if(myBuilder.IsDone()) { if(myBuilder.IsDone()) {
Done(); Done();
myShape = myBuilder.Shape(); myShape = myBuilder.Shape();
BRepLib_ToleranceRule::SetProperTolerances(myShape, *this);
// creation of the Map. // creation of the Map.
TopExp_Explorer ex; TopExp_Explorer ex;
@@ -665,6 +669,16 @@ Standard_Boolean BRepFilletAPI_MakeFillet::IsDeleted(const TopoDS_Shape& F)
return Standard_True; return Standard_True;
} }
//=======================================================================
//function : IsProtectedFromModification
//purpose :
//=======================================================================
Standard_Boolean BRepFilletAPI_MakeFillet::IsProtectedFromModification(
const TopoDS_Shape & theS) const
{
return myProtectedFromModificationShapes.Contains(theS);
}
//======================================================================= //=======================================================================
//function : NbFaultyContours //function : NbFaultyContours
//purpose : //purpose :

View File

@@ -24,7 +24,9 @@
#include <BRepGProp_VinertGK.hxx> #include <BRepGProp_VinertGK.hxx>
#include <BRepGProp_Face.hxx> #include <BRepGProp_Face.hxx>
#include <BRepGProp_Domain.hxx> #include <BRepGProp_Domain.hxx>
#include <GProp_PGProps.hxx>
#include <TopoDS.hxx> #include <TopoDS.hxx>
#include <TopoDS_Vertex.hxx>
#include <BRepAdaptor_Curve.hxx> #include <BRepAdaptor_Curve.hxx>
#include <TopTools.hxx> #include <TopTools.hxx>
@@ -32,6 +34,8 @@
#include <TopTools_ListOfShape.hxx> #include <TopTools_ListOfShape.hxx>
#include <BRepCheck_Shell.hxx> #include <BRepCheck_Shell.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx> #include <TopTools_ListIteratorOfListOfShape.hxx>
#include <BRep_TEdge.hxx>
#include <BRep_TVertex.hxx>
#ifdef DEB #ifdef DEB
static Standard_Integer AffichEps = 0; static Standard_Integer AffichEps = 0;
#endif #endif
@@ -55,9 +59,15 @@ void BRepGProp::LinearProperties(const TopoDS_Shape& S, GProp_GProps& SProps){
// Standard_Integer n,i; // Standard_Integer n,i;
TopExp_Explorer ex; TopExp_Explorer ex;
for (ex.Init(S,TopAbs_EDGE); ex.More(); ex.Next()) { for (ex.Init(S,TopAbs_EDGE); ex.More(); ex.Next()) {
BAC.Initialize(TopoDS::Edge(ex.Current())); TopoDS_Edge anES = TopoDS::Edge(ex.Current());
BRepGProp_Cinert CG(BAC,P); Handle_BRep_TEdge & anEG = (Handle_BRep_TEdge &)anES.TShape();
SProps.Add(CG); BRep_TEdge dsd;
if (!anEG->Degenerated())
{
BAC.Initialize(anES);
BRepGProp_Cinert CG(BAC,P);
SProps.Add(CG);
}
} }
} }

View File

@@ -86,6 +86,7 @@
#include <BRepBndLib.hxx> #include <BRepBndLib.hxx>
#include <Approx_CurvilinearParameter.hxx> #include <Approx_CurvilinearParameter.hxx>
#include <Geom_BSplineSurface.hxx> #include <Geom_BSplineSurface.hxx>
#include <BRepLib_ToleranceRule.hxx>
// TODO - not thread-safe static variables // TODO - not thread-safe static variables
@@ -1308,159 +1309,12 @@ void BRepLib::SameParameter(const TopoDS_Edge& AnEdge,
//======================================================================= //=======================================================================
//function : UpdateTolerances //function : UpdateTolerances
//purpose : //purpose :
//======================================================================= //=======================================================================
void BRepLib::UpdateTolerances(const TopoDS_Shape& aShape, void BRepLib::UpdateTolerances(const TopoDS_Shape & theS,
const Standard_Boolean verifyTolerance) const Standard_Boolean theMinimizeTolerances)
{ {
BRepLib_ToleranceRule::SetProperTolerances(theS, theMinimizeTolerances);
// Harmonize tolerances
// with rule Tolerance(VERTEX)>=Tolerance(EDGE)>=Tolerance(FACE)
BRep_Builder B;
Standard_Real tol=0;
if (verifyTolerance) {
// Set tolerance to its minimum value
Handle(Geom_Surface) S;
TopLoc_Location l;
TopExp_Explorer ex;
Bnd_Box aB;
Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax, dMax;
for (ex.Init(aShape, TopAbs_FACE); ex.More(); ex.Next()) {
const TopoDS_Face& curf=TopoDS::Face(ex.Current());
S = BRep_Tool::Surface(curf, l);
if (!S.IsNull()) {
aB.SetVoid();
BRepBndLib::Add(curf,aB);
if (S->DynamicType() == STANDARD_TYPE(Geom_RectangularTrimmedSurface)) {
S = (*((Handle(Geom_RectangularTrimmedSurface)*)&S))->BasisSurface();
}
GeomAdaptor_Surface AS(S);
switch (AS.GetType()) {
case GeomAbs_Plane:
case GeomAbs_Cylinder:
case GeomAbs_Cone:
{
tol=Precision::Confusion();
break;
}
case GeomAbs_Sphere:
case GeomAbs_Torus:
{
tol=Precision::Confusion()*2;
break;
}
default:
tol=Precision::Confusion()*4;
}
if (!aB.IsWhole()) {
aB.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
dMax=1.;
if (!aB.IsOpenXmin() && !aB.IsOpenXmax()) dMax=aXmax-aXmin;
if (!aB.IsOpenYmin() && !aB.IsOpenYmax()) aYmin=aYmax-aYmin;
if (!aB.IsOpenZmin() && !aB.IsOpenZmax()) aZmin=aZmax-aZmin;
if (aYmin>dMax) dMax=aYmin;
if (aZmin>dMax) dMax=aZmin;
tol=tol*dMax;
// Do not process tolerances > 1.
if (tol>1.) tol=0.99;
}
const Handle(BRep_TFace)& Tf = *((Handle(BRep_TFace)*)&curf.TShape());
Tf->Tolerance(tol);
}
}
}
//Process edges
TopTools_IndexedDataMapOfShapeListOfShape parents;
TopExp::MapShapesAndAncestors(aShape, TopAbs_EDGE, TopAbs_FACE, parents);
TopTools_ListIteratorOfListOfShape lConx;
Standard_Integer iCur;
for (iCur=1; iCur<=parents.Extent(); iCur++) {
tol=0;
for (lConx.Initialize(parents(iCur)); lConx.More(); lConx.Next()) {
tol=Max(tol, BRep_Tool::Tolerance(TopoDS::Face(lConx.Value())));
}
// Update can only increase tolerance, so if the edge has a greater
// tolerance than its faces it is not concerned
B.UpdateEdge(TopoDS::Edge(parents.FindKey(iCur)), tol);
}
//Vertices are processed
parents.Clear();
TopExp::MapShapesAndAncestors(aShape, TopAbs_VERTEX, TopAbs_EDGE, parents);
TColStd_MapOfTransient Initialized;
TopTools_MapOfShape Done;
Standard_Integer nbV = parents.Extent();
for (iCur=1; iCur<=nbV; iCur++) {
tol=0;
Done.Clear();
const TopoDS_Vertex& V = TopoDS::Vertex(parents.FindKey(iCur));
Bnd_Box box;
box.Add(BRep_Tool::Pnt(V));
gp_Pnt p3d;
for (lConx.Initialize(parents(iCur)); lConx.More(); lConx.Next()) {
const TopoDS_Edge& E = TopoDS::Edge(lConx.Value());
if(!Done.Add(E)) continue;
tol=Max(tol, BRep_Tool::Tolerance(E));
if(!BRep_Tool::SameRange(E)) continue;
Standard_Real par = BRep_Tool::Parameter(V,E);
Handle(BRep_TEdge)& TE = *((Handle(BRep_TEdge)*)&E.TShape());
BRep_ListIteratorOfListOfCurveRepresentation itcr(TE->Curves());
const TopLoc_Location& Eloc = E.Location();
while (itcr.More()) {
// For each CurveRepresentation, check the provided parameter
const Handle(BRep_CurveRepresentation)& cr = itcr.Value();
const TopLoc_Location& loc = cr->Location();
TopLoc_Location L = (Eloc * loc);
if (cr->IsCurve3D()) {
const Handle(Geom_Curve)& C = cr->Curve3D();
if (!C.IsNull()) { // edge non degenerated
p3d = C->Value(par);
p3d.Transform(L.Transformation());
box.Add(p3d);
}
}
else if (cr->IsCurveOnSurface()) {
const Handle(Geom_Surface)& Su = cr->Surface();
const Handle(Geom2d_Curve)& PC = cr->PCurve();
Handle(Geom2d_Curve) PC2;
if (cr->IsCurveOnClosedSurface()) {
PC2 = cr->PCurve2();
}
gp_Pnt2d p2d = PC->Value(par);
p3d = Su->Value(p2d.X(),p2d.Y());
p3d.Transform(L.Transformation());
box.Add(p3d);
if (!PC2.IsNull()) {
p2d = PC2->Value(par);
p3d = Su->Value(p2d.X(),p2d.Y());
p3d.Transform(L.Transformation());
box.Add(p3d);
}
}
itcr.Next();
}
}
Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;
box.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
aXmax -= aXmin; aYmax -= aYmin; aZmax -= aZmin;
tol = Max(tol,sqrt(aXmax*aXmax+aYmax*aYmax+aZmax*aZmax));
tol += 2.*Epsilon(tol);
if (verifyTolerance) {
// ASet minimum value of the tolerance
// Attention to sharing of the vertex by other shapes
const Handle(BRep_TVertex)& TV = *((Handle(BRep_TVertex)*)&V.TShape());
if (Initialized.Add(TV))
TV->Tolerance(tol);
else
B.UpdateVertex(V, tol);
}
else {
// Update can only increase tolerance, so if the edge has a greater
// tolerance than its faces it is not concerned
B.UpdateVertex(V, tol);
}
}
} }
//======================================================================= //=======================================================================

View File

@@ -0,0 +1,255 @@
// Copyright (c) 1999-2012 OPEN CASCADE SAS
//
// The content of this file is subject to the Open CASCADE Technology Public
// License Version 6.5 (the "License"). You may not use the content of this file
// except in compliance with the License. Please obtain a copy of the License
// at http://www.opencascade.org and read it completely before using this file.
//
// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
//
// The Original Code and all software distributed under the License is
// distributed on an "AS IS" basis, without warranty of any kind, and the
// Initial Developer hereby disclaims all such warranties, including without
// limitation, any warranties of merchantability, fitness for a particular
// purpose or non-infringement. Please see the License for the specific terms
// and conditions governing the rights and limitations under the License.
#include <BRepLib_ToleranceRule.hxx>
#include <Bnd_Box.hxx>
#include <BRep_CurveRepresentation.hxx>
#include <BRep_ListIteratorOfListOfCurveRepresentation.hxx>
#include <BRepBndLib.hxx>
#include <Geom_Curve.hxx>
#include <Geom_Surface.hxx>
#include <Geom_RectangularTrimmedSurface.hxx>
#include <Geom2d_Curve.hxx>
#include <GeomAdaptor_Surface.hxx>
#include <gp_Pnt.hxx>
#include <BRep_Tool.hxx>
#include <Precision.hxx>
#include <TopExp_Explorer.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Face.hxx>
#include <TopoDS_Vertex.hxx>
//=======================================================================
//function : ProperTolerances
//purpose :
//=======================================================================
void BRepLib_ToleranceRule::ProperTolerances(const TopoDS_Shape & theS,
NCollection_DataMap<TopoDS_Shape, Standard_Real,
TopTools_ShapeMapHasher> & theTs,
Standard_Boolean theMinimizeTolerances)
{
// Process faces.
for (TopExp_Explorer aFIt(theS, TopAbs_FACE); aFIt.More(); aFIt.Next())
{
const TopoDS_Face & aF = TopoDS::Face(aFIt.Current());
Standard_Real aFT = Precision::Confusion() * 4;
if (!theMinimizeTolerances)
{
aFT = BRep_Tool::Tolerance(aF);
}
else
{
TopLoc_Location aL;
Handle_Geom_Surface aS = BRep_Tool::Surface(aF, aL);
if (!aS.IsNull())
{
if (theTs.IsBound(aF))
{
continue;
}
if (aS->DynamicType() == STANDARD_TYPE(Geom_RectangularTrimmedSurface))
{
Handle_Geom_RectangularTrimmedSurface aTS =
Handle_Geom_RectangularTrimmedSurface::DownCast(aS);
aS = aTS->BasisSurface();
}
//
switch (GeomAdaptor_Surface(aS).GetType())
{
case GeomAbs_Plane:
case GeomAbs_Cylinder:
case GeomAbs_Cone:
{
aFT = Precision::Confusion();
break;
}
case GeomAbs_Sphere:
case GeomAbs_Torus:
{
aFT = Precision::Confusion() * 2;
}
}
//
Bnd_Box aBox;
BRepBndLib::Add(aF, aBox);
if (!aBox.IsWhole())
{
Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;
aBox.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
Standard_Real dMax = 1;
if (!aBox.IsOpenXmin() && !aBox.IsOpenXmax())
{
dMax = aXmax - aXmin;
}
if (!aBox.IsOpenYmin() && !aBox.IsOpenYmax())
{
aYmin = aYmax - aYmin;
}
if (!aBox.IsOpenZmin() && !aBox.IsOpenZmax())
{
aZmin = aZmax - aZmin;
}
if (dMax < aYmin)
{
dMax = aYmin;
}
if (dMax < aZmin)
{
dMax = aZmin;
}
aFT = aFT * dMax;
// Do not process tolerances > 1.
if (1 < aFT) aFT = 0.99;
}
}
theTs.Bind(aF, aFT);
}
// Process face edges.
for (TopExp_Explorer anEIt(aF, TopAbs_EDGE); anEIt.More(); anEIt.Next())
{
const TopoDS_Edge & anE = TopoDS::Edge(anEIt.Current());
Standard_Real anET = Max(aFT, BRep_Tool::Tolerance(anE));
if (!theTs.IsBound(anE))
{
theTs.Bind(anE, anET);
}
else
{
Standard_Real & aT = theTs(anE);
anET = Max(anET, aT);
aT = anET;
}
// Process face edge vertices.
for (TopExp_Explorer aVIt(anE, TopAbs_VERTEX); aVIt.More(); aVIt.Next())
{
const TopoDS_Vertex & aV = TopoDS::Vertex(aVIt.Current());
Standard_Real aVT = anET;
if (!theMinimizeTolerances)
{
aVT = Max(anET, BRep_Tool::Tolerance(aV));
}
//
if (BRep_Tool::SameRange(anE))
{
Bnd_Box aBox;
aBox.Add(BRep_Tool::Pnt(aV));
Standard_Real aPar = BRep_Tool::Parameter(aV, anE);
Handle_BRep_TEdge & anED = (Handle_BRep_TEdge &)anE.TShape();
const TopLoc_Location & anEL = anE.Location();
for (BRep_ListIteratorOfListOfCurveRepresentation
aRIt(anED->Curves()); aRIt.More(); aRIt.Next())
{
// For each CurveRepresentation, check the provided parameter
const Handle_BRep_CurveRepresentation & aR = aRIt.Value();
const TopLoc_Location & aRL = aR->Location();
TopLoc_Location aL = anEL * aRL;
if (aR->IsCurve3D())
{
const Handle_Geom_Curve & aC = aR->Curve3D();
if (!aC.IsNull())
{
// edge non degenerated
gp_Pnt aPnt = aC->Value(aPar);
aPnt.Transform(aL.Transformation());
aBox.Add(aPnt);
}
}
else if (aR->IsCurveOnSurface())
{
const Handle_Geom_Surface & aS = aR->Surface();
const Handle_Geom2d_Curve & aC = aR->PCurve();
const Handle_Geom2d_Curve * aC2 = 0;
if (aR->IsCurveOnClosedSurface())
{
aC2 = &(aR->PCurve2());
}
gp_Pnt2d a2DP = aC->Value(aPar);
gp_Pnt a3DP = aS->Value(a2DP.X(), a2DP.Y());
a3DP.Transform(aL.Transformation());
aBox.Add(a3DP);
if (aC2 != 0)
{
a2DP = (*aC2)->Value(aPar);
a3DP = aS->Value(a2DP.X(), a2DP.Y());
a3DP.Transform(aL.Transformation());
aBox.Add(a3DP);
}
}
}
//
Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax;
aBox.Get(aXmin, aYmin, aZmin, aXmax, aYmax, aZmax);
aXmax -= aXmin; aYmax -= aYmin; aZmax -= aZmin;
Standard_Real aT =
sqrt(aXmax * aXmax + aYmax * aYmax + aZmax * aZmax);
aT += 2 * Epsilon(aT);
aVT = Max(aVT, aT);
}
//
if (!theTs.IsBound(aV))
{
theTs.Bind(aV, aVT);
}
else
{
Standard_Real & aT = theTs(aV);
aT = Max(aVT, aT);
}
}
}
// Process face vertices.
for (TopExp_Explorer aVIt(aF, TopAbs_VERTEX, TopAbs_EDGE);
aVIt.More(); aVIt.Next())
{
const TopoDS_Vertex & aV = TopoDS::Vertex(aVIt.Current());
Standard_Real aVT = Max(aFT, BRep_Tool::Tolerance(aV));
if (!theTs.IsBound(aV))
{
theTs.Bind(aV, aVT);
}
else
{
Standard_Real & aT = theTs(aV);
aT = Max(aVT, aT);
}
}
}
// Process edges without faces.
for (TopExp_Explorer anEIt(theS, TopAbs_EDGE, TopAbs_FACE);
anEIt.More(); anEIt.Next())
{
const TopoDS_Edge & anE = TopoDS::Edge(anEIt.Current());
Standard_Real anET = BRep_Tool::Tolerance(anE);
// Process edge vertices.
for (TopExp_Explorer aVIt(anE, TopAbs_VERTEX); aVIt.More(); aVIt.Next())
{
const TopoDS_Vertex & aV = TopoDS::Vertex(aVIt.Current());
Standard_Real aVT = Max(anET, BRep_Tool::Tolerance(aV));
if (!theTs.IsBound(aV))
{
theTs.Bind(aV, aVT);
}
else
{
Standard_Real & aT = theTs(aV);
aT = Max(aVT, aT);
}
}
}
}

View File

@@ -0,0 +1,75 @@
// Copyright (c) 1999-2012 OPEN CASCADE SAS
//
// The content of this file is subject to the Open CASCADE Technology Public
// License Version 6.5 (the "License"). You may not use the content of this file
// except in compliance with the License. Please obtain a copy of the License
// at http://www.opencascade.org and read it completely before using this file.
//
// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
//
// The Original Code and all software distributed under the License is
// distributed on an "AS IS" basis, without warranty of any kind, and the
// Initial Developer hereby disclaims all such warranties, including without
// limitation, any warranties of merchantability, fitness for a particular
// purpose or non-infringement. Please see the License for the specific terms
// and conditions governing the rights and limitations under the License.
#ifndef _BRepLib_ToleranceRule_HeaderFile
#define _BRepLib_ToleranceRule_HeaderFile
#include <BRep_TEdge.hxx>
#include <BRep_TFace.hxx>
#include <BRep_TVertex.hxx>
#include <NCollection_DataMap.hxx>
#include <TopTools_ShapeMapHasher.hxx>
//! The type is intended to work with shape tolerances by tolerance rule.<br>
class BRepLib_ToleranceRule
{
public:
DEFINE_STANDARD_ALLOC
//! In shape theS context calculates proper tolerance theTs(S) for every
//! shape theS shape S so that
//! - S is edge contained by a face of shape theS or
//! - S is vertex contained by an edge or a face of shape theS.
//! Shape S tolerance t(S) may be only increased:
//! t(S) <= theTs(S).
//! Calculation is made by the tolerance rule:
//! face F contains edge E ==> t(F) <= theTs(E),
//! edge E contains vertex V ==> theTs(E) <= theTs(V),
//! face F contains vertex V ==> t(F) <= theTs(V).
//!
//! If flag theMinimizeTolerances is Standard_True then
//! - theTs(F) is calculated for every face F of shape theS as
//! only face F type and size dependent value,
//! - theTs(F) is used instead of t(F),
//! - tolerance of vertex V representations is used instead of t(V).
Standard_EXPORT static void ProperTolerances(const TopoDS_Shape & theS,
NCollection_DataMap<TopoDS_Shape, Standard_Real,
TopTools_ShapeMapHasher> & theTs,
Standard_Boolean theMinimizeTolerances = Standard_False);
//! Auxiliary method. Returns Standard_False.
Standard_Boolean IsProtectedFromModification(
const TopoDS_Shape & theS) const;
//! The method is intended for any class T which contains method
//! IsProtectedFromModification with the following definition:
//! Standard_Boolean IsProtectedFromModification(
//! const TopoDS_Shape & theShape) const.
//! Gets proper tolerances by
//! ProperTolerances(theS, aTs, theMinimizeTolerances).
//! Toleranse t(S) is set to aTs(S) for every shape S so that
//! aTs.IsBound(S) is Standard_True and
//! theObj.IsProtectedFromModification(S) is Standard_False.
template <typename T> static void SetProperTolerances(
const TopoDS_Shape & theS, const T & theObj,
Standard_Boolean theMinimizeTolerances = Standard_False);
//! Calls SetProperTolerances(
//! theS, BRepLib_ToleranceRule(), theMinimizeTolerances).
static void SetProperTolerances(const TopoDS_Shape & theS,
Standard_Boolean theMinimizeTolerances = Standard_False);
};
#include <BRepLib_ToleranceRule.lxx>
#endif

View File

@@ -0,0 +1,117 @@
// Copyright (c) 1999-2012 OPEN CASCADE SAS
//
// The content of this file is subject to the Open CASCADE Technology Public
// License Version 6.5 (the "License"). You may not use the content of this file
// except in compliance with the License. Please obtain a copy of the License
// at http://www.opencascade.org and read it completely before using this file.
//
// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
//
// The Original Code and all software distributed under the License is
// distributed on an "AS IS" basis, without warranty of any kind, and the
// Initial Developer hereby disclaims all such warranties, including without
// limitation, any warranties of merchantability, fitness for a particular
// purpose or non-infringement. Please see the License for the specific terms
// and conditions governing the rights and limitations under the License.
#include <TopExp_Explorer.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Face.hxx>
#include <TopoDS_Vertex.hxx>
//=======================================================================
//function : IsProtectedFromModification
//purpose :
//=======================================================================
inline Standard_Boolean BRepLib_ToleranceRule::IsProtectedFromModification(
const TopoDS_Shape &) const
{
return Standard_False;
}
//=======================================================================
//function : SetProperTolerances
//purpose :
//=======================================================================
template <typename T>
void BRepLib_ToleranceRule::SetProperTolerances(const TopoDS_Shape & theS,
const T & theObj, Standard_Boolean theMinimizeTolerances)
{
// Get proper tolerances.
NCollection_DataMap<TopoDS_Shape, Standard_Real,
TopTools_ShapeMapHasher> aTs;
ProperTolerances(theS, aTs, theMinimizeTolerances);
// Process faces.
if (theMinimizeTolerances)
{
for (TopExp_Explorer aFIt(theS, TopAbs_FACE); aFIt.More(); aFIt.Next())
{
const TopoDS_Face & aF = TopoDS::Face(aFIt.Current());
if (!theObj.IsProtectedFromModification(aF))
{
Handle_BRep_TFace & aFD = Handle_BRep_TFace::DownCast(aF.TShape());
aFD->Tolerance(aTs(aF));
}
}
}
// Process edges and vertices with face.
for (TopExp_Explorer aFIt(theS, TopAbs_FACE); aFIt.More(); aFIt.Next())
{
const TopoDS_Face & aF = TopoDS::Face(aFIt.Current());
// Process face edges.
for (TopExp_Explorer anEIt(aF, TopAbs_EDGE); anEIt.More(); anEIt.Next())
{
const TopoDS_Edge & anE = TopoDS::Edge(anEIt.Current());
if (!theObj.IsProtectedFromModification(anE))
{
Handle_BRep_TEdge & anED = Handle_BRep_TEdge::DownCast(anE.TShape());
anED->Tolerance(aTs(anE));
}
// Process face edge vertices.
for (TopExp_Explorer aVIt(anE, TopAbs_VERTEX); aVIt.More(); aVIt.Next())
{
const TopoDS_Vertex & aV = TopoDS::Vertex(aVIt.Current());
if (!theObj.IsProtectedFromModification(aV))
{
Handle_BRep_TVertex & aVD =
Handle_BRep_TVertex::DownCast(aV.TShape());
aVD->Tolerance(aTs(aV));
}
}
}
// Process face vertices.
for (TopExp_Explorer aVIt(aF, TopAbs_VERTEX, TopAbs_EDGE);
aVIt.More(); aVIt.Next())
{
const TopoDS_Vertex & aV = TopoDS::Vertex(aVIt.Current());
if (!theObj.IsProtectedFromModification(aV))
{
Handle_BRep_TVertex & aVD = Handle_BRep_TVertex::DownCast(aV.TShape());
aVD->Tolerance(aTs(aV));
}
}
}
// Process edge vertices without faces.
for (TopExp_Explorer anEIt(theS, TopAbs_EDGE, TopAbs_FACE);
anEIt.More(); anEIt.Next())
{
const TopoDS_Edge & anE = TopoDS::Edge(anEIt.Current());
for (TopExp_Explorer aVIt(anE, TopAbs_VERTEX); aVIt.More(); aVIt.Next())
{
const TopoDS_Vertex & aV = TopoDS::Vertex(aVIt.Current());
if (!theObj.IsProtectedFromModification(aV))
{
Handle_BRep_TVertex & aVD = Handle_BRep_TVertex::DownCast(aV.TShape());
aVD->Tolerance(aTs(aV));
}
}
}
}
inline void BRepLib_ToleranceRule::SetProperTolerances(
const TopoDS_Shape & theS, Standard_Boolean theMinimizeTolerances)
{
SetProperTolerances(theS, BRepLib_ToleranceRule(), theMinimizeTolerances);
}

View File

@@ -1 +1,4 @@
BRepLib_MakeWire_1.cxx BRepLib_MakeWire_1.cxx
BRepLib_ToleranceRule.hxx
BRepLib_ToleranceRule.lxx
BRepLib_ToleranceRule.cxx

View File

@@ -38,7 +38,8 @@ uses
Wire from TopoDS, Wire from TopoDS,
Shape from TopoDS, Shape from TopoDS,
Edge from TopoDS, Edge from TopoDS,
ListOfShape from TopTools ListOfShape from TopTools,
IndexedMapOfShape from TopTools
is is
@@ -86,8 +87,14 @@ is
returns Shape from TopoDS; returns Shape from TopoDS;
IsProtectedFromModification(me; theS : Shape from TopoDS)
---Purpose: Indicates if theS is protected from modification.
returns Boolean from Standard;
fields fields
myPipe : Pipe from BRepFill; myPipe : Pipe from BRepFill;
myProtectedFromModificationShapes : IndexedMapOfShape from TopTools;
end MakePipe; end MakePipe;

View File

@@ -21,12 +21,14 @@
#include <BRepOffsetAPI_MakePipe.ixx> #include <BRepOffsetAPI_MakePipe.ixx>
#include <BRepLib_ToleranceRule.hxx>
#include <TopExp_Explorer.hxx> #include <TopExp_Explorer.hxx>
#include <TopoDS_Face.hxx> #include <TopoDS_Face.hxx>
#include <TopoDS_Edge.hxx> #include <TopoDS_Edge.hxx>
#include <TopoDS_Vertex.hxx> #include <TopoDS_Vertex.hxx>
#include <TopoDS.hxx> #include <TopoDS.hxx>
#include <TopAbs_ShapeEnum.hxx> #include <TopAbs_ShapeEnum.hxx>
#include <TopExp.hxx>
//======================================================================= //=======================================================================
//function : BRepOffsetAPI_MakePipe //function : BRepOffsetAPI_MakePipe
@@ -37,6 +39,8 @@ BRepOffsetAPI_MakePipe::BRepOffsetAPI_MakePipe(const TopoDS_Wire& Spine ,
const TopoDS_Shape& Profile) const TopoDS_Shape& Profile)
: myPipe(Spine, Profile) : myPipe(Spine, Profile)
{ {
TopExp::MapShapes(Profile, myProtectedFromModificationShapes);
//
Build(); Build();
} }
@@ -59,6 +63,7 @@ const BRepFill_Pipe& BRepOffsetAPI_MakePipe::Pipe() const
void BRepOffsetAPI_MakePipe::Build() void BRepOffsetAPI_MakePipe::Build()
{ {
myShape = myPipe.Shape(); myShape = myPipe.Shape();
BRepLib_ToleranceRule::SetProperTolerances(myShape, *this);
Done(); Done();
} }
@@ -105,3 +110,12 @@ TopoDS_Shape BRepOffsetAPI_MakePipe::Generated (const TopoDS_Shape& SSpine,
return bid; return bid;
} }
//=======================================================================
//function : IsProtectedFromModification
//purpose :
//=======================================================================
Standard_Boolean BRepOffsetAPI_MakePipe::IsProtectedFromModification(
const TopoDS_Shape & theS) const
{
return myProtectedFromModificationShapes.Contains(theS);
}

View File

@@ -53,9 +53,10 @@ uses
Vertex from TopoDS, Vertex from TopoDS,
TransitionMode from BRepBuilderAPI, TransitionMode from BRepBuilderAPI,
PipeError from BRepBuilderAPI, PipeError from BRepBuilderAPI,
PipeShell from BRepFill PipeShell from BRepFill,
IndexedMapOfShape from TopTools
raises raises
DomainError from Standard, DomainError from Standard,
NotDone from StdFail NotDone from StdFail
@@ -320,9 +321,15 @@ is
returns ListOfShape from TopTools returns ListOfShape from TopTools
is redefined; is redefined;
IsProtectedFromModification(me; theS : Shape)
---Purpose: Indicates if theS is protected from modification.
returns Boolean;
fields fields
myPipe : PipeShell from BRepFill; myPipe : PipeShell from BRepFill;
myProtectedFromModificationShapes : IndexedMapOfShape from TopTools;
end MakePipeShell; end MakePipeShell;

View File

@@ -22,9 +22,11 @@
#include <BRepOffsetAPI_MakePipeShell.ixx> #include <BRepOffsetAPI_MakePipeShell.ixx>
#include <BRepLib_ToleranceRule.hxx>
#include <GeomFill_PipeError.hxx> #include <GeomFill_PipeError.hxx>
#include <Standard_NotImplemented.hxx> #include <Standard_NotImplemented.hxx>
#include <StdFail_NotDone.hxx> #include <StdFail_NotDone.hxx>
#include <TopExp.hxx>
//======================================================================= //=======================================================================
//function : //function :
@@ -95,6 +97,7 @@ BRepOffsetAPI_MakePipeShell::BRepOffsetAPI_MakePipeShell(const TopoDS_Wire& Spin
const Standard_Boolean WithContact, const Standard_Boolean WithContact,
const Standard_Boolean WithCorrection) const Standard_Boolean WithCorrection)
{ {
TopExp::MapShapes(Profile, myProtectedFromModificationShapes);
myPipe->Add(Profile, WithContact, WithCorrection); myPipe->Add(Profile, WithContact, WithCorrection);
} }
@@ -107,6 +110,7 @@ BRepOffsetAPI_MakePipeShell::BRepOffsetAPI_MakePipeShell(const TopoDS_Wire& Spin
const Standard_Boolean WithContact, const Standard_Boolean WithContact,
const Standard_Boolean WithCorrection) const Standard_Boolean WithCorrection)
{ {
TopExp::MapShapes(Profile, myProtectedFromModificationShapes);
myPipe->Add(Profile, Location, WithContact, WithCorrection); myPipe->Add(Profile, Location, WithContact, WithCorrection);
} }
@@ -119,6 +123,7 @@ BRepOffsetAPI_MakePipeShell::BRepOffsetAPI_MakePipeShell(const TopoDS_Wire& Spin
const Standard_Boolean WithContact, const Standard_Boolean WithContact,
const Standard_Boolean WithCorrection) const Standard_Boolean WithCorrection)
{ {
TopExp::MapShapes(Profile, myProtectedFromModificationShapes);
myPipe->SetLaw(Profile, L, WithContact, WithCorrection); myPipe->SetLaw(Profile, L, WithContact, WithCorrection);
} }
@@ -132,6 +137,7 @@ BRepOffsetAPI_MakePipeShell::BRepOffsetAPI_MakePipeShell(const TopoDS_Wire& Spin
const Standard_Boolean WithContact, const Standard_Boolean WithContact,
const Standard_Boolean WithCorrection) const Standard_Boolean WithCorrection)
{ {
TopExp::MapShapes(Profile, myProtectedFromModificationShapes);
myPipe->SetLaw(Profile, L, Location, WithContact, WithCorrection); myPipe->SetLaw(Profile, L, Location, WithContact, WithCorrection);
} }
@@ -225,6 +231,7 @@ void BRepOffsetAPI_MakePipeShell::Delete( const TopoDS_Shape& Profile)
Ok = myPipe->Build(); Ok = myPipe->Build();
if (Ok) { if (Ok) {
myShape = myPipe->Shape(); myShape = myPipe->Shape();
BRepLib_ToleranceRule::SetProperTolerances(myShape, *this);
Done(); Done();
} }
else NotDone(); else NotDone();
@@ -272,3 +279,12 @@ BRepOffsetAPI_MakePipeShell::Generated(const TopoDS_Shape& S)
return myGenerated; return myGenerated;
} }
//=======================================================================
//function : IsProtectedFromModification
//purpose :
//=======================================================================
Standard_Boolean BRepOffsetAPI_MakePipeShell::IsProtectedFromModification(
const TopoDS_Shape & theS) const
{
return myProtectedFromModificationShapes.Contains(theS);
}

View File

@@ -20,6 +20,7 @@
#include <BRepOffsetAPI_NormalProjection.ixx> #include <BRepOffsetAPI_NormalProjection.ixx>
#include <BRepLib_ToleranceRule.hxx>
BRepOffsetAPI_NormalProjection::BRepOffsetAPI_NormalProjection() BRepOffsetAPI_NormalProjection::BRepOffsetAPI_NormalProjection()
{ {
@@ -64,6 +65,7 @@ BRepOffsetAPI_NormalProjection::BRepOffsetAPI_NormalProjection()
{ {
myNormalProjector.Build(); myNormalProjector.Build();
myShape = myNormalProjector.Projection(); myShape = myNormalProjector.Projection();
BRepLib_ToleranceRule::SetProperTolerances(myShape);
Done(); Done();
} }

View File

@@ -76,6 +76,7 @@
#include <Standard_ErrorHandler.hxx> #include <Standard_ErrorHandler.hxx>
#include <Standard_Failure.hxx> #include <Standard_Failure.hxx>
#include <NCollection_Array1.hxx>
//#ifdef WNT //#ifdef WNT
#include <stdio.h> #include <stdio.h>
@@ -114,13 +115,13 @@ Standard_IMPORT Standard_Integer BRepCheck_Trace(const Standard_Integer phase);
//function : FindNamed //function : FindNamed
//======================================================================= //=======================================================================
static Standard_Boolean FindNamed(const TopoDS_Shape& S, static Standard_Boolean FindNamed(const TopoDS_Shape& S,
char*& Name) const char*& Name)
{ {
for (Standard_Integer i = 1 ;i <= lfaulty.Length(); i++) { for (Standard_Integer i = 1 ;i <= lfaulty.Length(); i++) {
Handle(DBRep_DrawableShape) DS = Handle(DBRep_DrawableShape) DS =
Handle(DBRep_DrawableShape)::DownCast(lfaulty(i)); Handle(DBRep_DrawableShape)::DownCast(lfaulty(i));
if (DS->Shape().IsSame(S)) { if (DS->Shape().IsSame(S)) {
Name = (char*)DS->Name(); Name = DS->Name();
return Standard_True; return Standard_True;
} }
} }
@@ -154,7 +155,6 @@ static void PrintSub(Standard_OStream& OS,
const TopAbs_ShapeEnum Subtype) const TopAbs_ShapeEnum Subtype)
{ {
char* Name;
BRepCheck_ListIteratorOfListOfStatus itl; BRepCheck_ListIteratorOfListOfStatus itl;
TopExp_Explorer exp; TopExp_Explorer exp;
for (exp.Init(S,Subtype); exp.More(); exp.Next()) { for (exp.Init(S,Subtype); exp.More(); exp.Next()) {
@@ -168,25 +168,27 @@ static void PrintSub(Standard_OStream& OS,
theMap(sub).Append(S); theMap(sub).Append(S);
itl.Initialize(res->StatusOnShape()); itl.Initialize(res->StatusOnShape());
if (itl.Value() != BRepCheck_NoError) { if (itl.Value() != BRepCheck_NoError) {
if (!FindNamed(sub,Name)) { const char* pName;
if (!FindNamed(sub,pName)) {
nbfaulty++; nbfaulty++;
Name = (char*)malloc(18*sizeof(char)); char aName[256];
Sprintf(Name,"%s%d",checkfaultyname,nbfaulty); sprintf(aName,"%.80s%d",checkfaultyname,nbfaulty);
DBRep::Set(Name,sub); DBRep::Set(aName,sub);
lfaulty.Append(Draw::Get((Standard_CString&)Name)); pName = aName;
} lfaulty.Append(Draw::Get(pName));
OS << "Shape " << Name << " "; OS << "Shape " << pName << " ";
if (!FindNamed(S,Name)) { if (!FindNamed(S,pName)) {
nbfaulty++; nbfaulty++;
Name = (char*)malloc(18*sizeof(char)); sprintf(aName,"%.80s%d",checkfaultyname,nbfaulty);
Sprintf(Name,"%s%d",checkfaultyname,nbfaulty); DBRep::Set(aName,S);
DBRep::Set(Name,S); pName = aName;
lfaulty.Append(Draw::Get((Standard_CString&)Name)); lfaulty.Append(Draw::Get(pName));
} }
OS << " on shape " << Name << " :\n"; OS << " on shape " << pName << " :\n";
for (;itl.More(); itl.Next()) { for (;itl.More(); itl.Next()) {
BRepCheck::Print(itl.Value(),OS); BRepCheck::Print(itl.Value(),OS);
} }
}
} }
break; break;
} }
@@ -206,20 +208,21 @@ static void Print(Standard_OStream& OS,
Print(OS,Ana,iter.Value()); Print(OS,Ana,iter.Value());
} }
char* Name;
TopAbs_ShapeEnum styp = S.ShapeType(); TopAbs_ShapeEnum styp = S.ShapeType();
BRepCheck_ListIteratorOfListOfStatus itl; BRepCheck_ListIteratorOfListOfStatus itl;
if (!Ana.Result(S).IsNull() && !theMap.IsBound(S)) { if (!Ana.Result(S).IsNull() && !theMap.IsBound(S)) {
itl.Initialize(Ana.Result(S)->Status()); itl.Initialize(Ana.Result(S)->Status());
if (itl.Value() != BRepCheck_NoError) { if (itl.Value() != BRepCheck_NoError) {
if (!FindNamed(S,Name)) { const char* pName;
char aName[256];
if (!FindNamed(S,pName)) {
nbfaulty++; nbfaulty++;
Name = (char*)malloc(18*sizeof(char)); sprintf(aName,"%.80s%d",checkfaultyname,nbfaulty);
Sprintf(Name,"%s%d",checkfaultyname,nbfaulty); DBRep::Set(aName,S);
DBRep::Set(Name,S); pName = aName;
lfaulty.Append(Draw::Get((Standard_CString&)Name)); lfaulty.Append(Draw::Get(pName));
} }
OS << "On Shape " << Name << " :\n"; OS << "On Shape " << pName << " :\n";
for (;itl.More(); itl.Next()) { for (;itl.More(); itl.Next()) {
BRepCheck::Print(itl.Value(),OS); BRepCheck::Print(itl.Value(),OS);
@@ -466,99 +469,18 @@ void ContextualDump(Draw_Interpretor& theCommands,
nbfaulty = 0; nbfaulty = 0;
lfaulty.Clear(); lfaulty.Clear();
//Print(cout, theAna, theShape);
Standard_SStream aSStream; Standard_SStream aSStream;
Print(aSStream, theAna, theShape); Print(aSStream, theAna, theShape);
theCommands << aSStream; theCommands << aSStream;
//cout<<"\n";
theCommands<<"\n"; theCommands<<"\n";
theMap.Clear(); theMap.Clear();
if (nbfaulty !=0) if (nbfaulty !=0)
theCommands<<"Faulty shapes in variables "<<checkfaultyname<<"1 to "<<checkfaultyname<<nbfaulty<<" \n"; theCommands<<"Faulty shapes in variables "<<checkfaultyname<<"1 to "<<checkfaultyname<<nbfaulty<<" \n";
//cout<<"Faulty shapes in variables "<<checkfaultyname<<"1 to "<<checkfaultyname<<nbfaulty<<" \n";
//cout<<endl;
theCommands<<"\n"; theCommands<<"\n";
} }
//=======================================================================
//function : FillProblems
// purpose : auxilary for StructuralDump
//=======================================================================
static void FillProblems(const BRepCheck_Status stat,
Handle(TColStd_HArray1OfInteger)& NbProblems)
{
switch (stat) {
case BRepCheck_InvalidPointOnCurve:
NbProblems->SetValue(1,NbProblems->Value(1)+1); break;
case BRepCheck_InvalidPointOnCurveOnSurface:
NbProblems->SetValue(2,NbProblems->Value(2)+1); break;
case BRepCheck_InvalidPointOnSurface:
NbProblems->SetValue(3,NbProblems->Value(3)+1); break;
case BRepCheck_No3DCurve:
NbProblems->SetValue(4,NbProblems->Value(4)+1); break;
case BRepCheck_Multiple3DCurve:
NbProblems->SetValue(5,NbProblems->Value(5)+1); break;
case BRepCheck_Invalid3DCurve:
NbProblems->SetValue(6,NbProblems->Value(6)+1); break;
case BRepCheck_NoCurveOnSurface:
NbProblems->SetValue(7,NbProblems->Value(7)+1); break;
case BRepCheck_InvalidCurveOnSurface:
NbProblems->SetValue(8,NbProblems->Value(8)+1); break;
case BRepCheck_InvalidCurveOnClosedSurface:
NbProblems->SetValue(9,NbProblems->Value(9)+1); break;
case BRepCheck_InvalidSameRangeFlag:
NbProblems->SetValue(10,NbProblems->Value(10)+1); break;
case BRepCheck_InvalidSameParameterFlag:
NbProblems->SetValue(11,NbProblems->Value(11)+1); break;
case BRepCheck_InvalidDegeneratedFlag:
NbProblems->SetValue(12,NbProblems->Value(12)+1); break;
case BRepCheck_FreeEdge:
NbProblems->SetValue(13,NbProblems->Value(13)+1); break;
case BRepCheck_InvalidMultiConnexity:
NbProblems->SetValue(14,NbProblems->Value(14)+1); break;
case BRepCheck_InvalidRange:
NbProblems->SetValue(15,NbProblems->Value(15)+1); break;
case BRepCheck_EmptyWire:
NbProblems->SetValue(16,NbProblems->Value(16)+1); break;
case BRepCheck_RedundantEdge:
NbProblems->SetValue(17,NbProblems->Value(17)+1); break;
case BRepCheck_SelfIntersectingWire:
NbProblems->SetValue(18,NbProblems->Value(18)+1); break;
case BRepCheck_NoSurface:
NbProblems->SetValue(19,NbProblems->Value(19)+1); break;
case BRepCheck_InvalidWire:
NbProblems->SetValue(20,NbProblems->Value(20)+1); break;
case BRepCheck_RedundantWire:
NbProblems->SetValue(21,NbProblems->Value(21)+1); break;
case BRepCheck_IntersectingWires:
NbProblems->SetValue(22,NbProblems->Value(22)+1); break;
case BRepCheck_InvalidImbricationOfWires:
NbProblems->SetValue(23,NbProblems->Value(23)+1); break;
case BRepCheck_EmptyShell:
NbProblems->SetValue(24,NbProblems->Value(24)+1); break;
case BRepCheck_RedundantFace:
NbProblems->SetValue(25,NbProblems->Value(25)+1); break;
case BRepCheck_UnorientableShape:
NbProblems->SetValue(26,NbProblems->Value(26)+1); break;
case BRepCheck_NotClosed:
NbProblems->SetValue(27,NbProblems->Value(27)+1); break;
case BRepCheck_NotConnected:
NbProblems->SetValue(28,NbProblems->Value(28)+1); break;
case BRepCheck_SubshapeNotInShape:
NbProblems->SetValue(29,NbProblems->Value(29)+1); break;
case BRepCheck_BadOrientation:
NbProblems->SetValue(30,NbProblems->Value(30)+1); break;
case BRepCheck_BadOrientationOfSubshape:
NbProblems->SetValue(31,NbProblems->Value(31)+1); break;
case BRepCheck_CheckFail:
NbProblems->SetValue(32,NbProblems->Value(32)+1); break;
default:
break;
}
}
//======================================================================= //=======================================================================
@@ -593,13 +515,13 @@ static void GetProblemSub(const BRepCheck_Analyzer& Ana,
if(ii>sl->Length()) { if(ii>sl->Length()) {
sl->Append(sub); sl->Append(sub);
FillProblems(itl.Value(),NbProblems); NbProblems->ChangeValue(itl.Value())++;
} }
for(ii=1; ii<=sl->Length(); ii++) for(ii=1; ii<=sl->Length(); ii++)
if(sl->Value(ii).IsSame(Shape)) break; if(sl->Value(ii).IsSame(Shape)) break;
if(ii>sl->Length()) { if(ii>sl->Length()) {
sl->Append(Shape); sl->Append(Shape);
FillProblems(itl.Value(),NbProblems); NbProblems->ChangeValue(itl.Value())++;
} }
} }
break; break;
@@ -628,7 +550,7 @@ static void GetProblemShapes(const BRepCheck_Analyzer& Ana,
if (itl.Value() != BRepCheck_NoError) { if (itl.Value() != BRepCheck_NoError) {
sl->Append(Shape); sl->Append(Shape);
FillProblems(itl.Value(),NbProblems); NbProblems->ChangeValue(itl.Value())++;
} }
} }
if (!theMap.IsBound(Shape)) { if (!theMap.IsBound(Shape)) {
@@ -653,7 +575,6 @@ static void GetProblemShapes(const BRepCheck_Analyzer& Ana,
default: default:
break; break;
} }
} }
//======================================================================= //=======================================================================
@@ -672,122 +593,60 @@ void StructuralDump(Draw_Interpretor& theCommands,
const TopoDS_Shape &theShape) const TopoDS_Shape &theShape)
{ {
Standard_Integer i; Standard_Integer i;
//cout << "StructuralDump" << endl;
//cout << " -- The Shape " << ShName << " has problems :"<<endl;
//cout<<" Check Count"<<endl;
//cout<<" ------------------------------------------------"<<endl;
theCommands << " -- The Shape " << ShName << " has problems :"<<"\n"; theCommands << " -- The Shape " << ShName << " has problems :"<<"\n";
theCommands<<" Check Count"<<"\n"; theCommands<<" Check Count"<<"\n";
theCommands<<" ------------------------------------------------"<<"\n"; theCommands<<" ------------------------------------------------"<<"\n";
Handle(TColStd_HArray1OfInteger) NbProblems = new TColStd_HArray1OfInteger(1,32); Handle(TColStd_HArray1OfInteger) NbProblems = new TColStd_HArray1OfInteger(1,33);
for(i=1; i<=32; i++) NbProblems->SetValue(i,0); for (i=1; i<=33; i++) NbProblems->SetValue (i,0);
Handle(TopTools_HSequenceOfShape) sl,slv,sle,slw,slf,sls,slo; Handle(TopTools_HSequenceOfShape) sl,slv,sle,slw,slf,sls,slo;
sl = new TopTools_HSequenceOfShape(); sl = new TopTools_HSequenceOfShape();
theMap.Clear(); theMap.Clear();
GetProblemShapes(theAna, theShape, sl, NbProblems); GetProblemShapes(theAna, theShape, sl, NbProblems);
theMap.Clear(); theMap.Clear();
if(NbProblems->Value(1)>0) NCollection_Array1<const char*> aProblems (1,33);
theCommands<<" Invalid Point on Curve ................... "<<NbProblems->Value(1)<<"\n";
//cout<<" Invalid Point on Curve ................... "<<NbProblems->Value(1)<<endl; aProblems.SetValue( BRepCheck_InvalidPointOnCurve, " Invalid Point on Curve ................... ");
if(NbProblems->Value(2)>0) aProblems.SetValue(BRepCheck_InvalidPointOnCurveOnSurface, " Invalid Point on CurveOnSurface .......... ");
theCommands<<" Invalid Point on CurveOnSurface .......... "<<NbProblems->Value(2)<<"\n"; aProblems.SetValue(BRepCheck_InvalidPointOnSurface, " Invalid Point on Surface ................. ");
//cout<<" Invalid Point on CurveOnSurface .......... "<<NbProblems->Value(2)<<endl; aProblems.SetValue(BRepCheck_No3DCurve, " No 3D Curve .............................. ");
if(NbProblems->Value(3)>0) aProblems.SetValue(BRepCheck_Multiple3DCurve, " Multiple 3D Curve ........................ ");
theCommands<<" Invalid Point on Surface ................. "<<NbProblems->Value(3)<<"\n"; aProblems.SetValue(BRepCheck_Invalid3DCurve, " Invalid 3D Curve ......................... ");
//cout<<" Invalid Point on Surface ................. "<<NbProblems->Value(3)<<endl; aProblems.SetValue(BRepCheck_NoCurveOnSurface, " No Curve on Surface ...................... ");
if(NbProblems->Value(4)>0) aProblems.SetValue(BRepCheck_InvalidCurveOnSurface, " Invalid Curve on Surface ................. ");
theCommands<<" No 3D Curve .............................. "<<NbProblems->Value(4)<<"\n"; aProblems.SetValue(BRepCheck_InvalidCurveOnClosedSurface, " Invalid Curve on Closed Surface ................. ");
//cout<<" No 3D Curve .............................. "<<NbProblems->Value(4)<<endl; aProblems.SetValue(BRepCheck_InvalidSameRangeFlag, " Invalid SameRange Flag ................... ");
if(NbProblems->Value(5)>0) aProblems.SetValue(BRepCheck_InvalidSameParameterFlag, " Invalid SameParameter Flag ............... ");
theCommands<<" Multiple 3D Curve ........................ "<<NbProblems->Value(5)<<"\n"; aProblems.SetValue(BRepCheck_InvalidDegeneratedFlag, " Invalid Degenerated Flag ................. ");
//cout<<" Multiple 3D Curve ........................ "<<NbProblems->Value(5)<<endl; aProblems.SetValue(BRepCheck_FreeEdge, " Free Edge ................................ ");
if(NbProblems->Value(6)>0) aProblems.SetValue(BRepCheck_InvalidMultiConnexity, " Invalid Multi Connexity ................... ");
theCommands<<" Invalid 3D Curve ......................... "<<NbProblems->Value(6)<<"\n"; aProblems.SetValue(BRepCheck_InvalidRange, " Invalid Range ................... ");
//cout<<" Invalid 3D Curve ......................... "<<NbProblems->Value(6)<<endl; aProblems.SetValue(BRepCheck_EmptyWire, " Empty Wire ................... ");
if(NbProblems->Value(7)>0) aProblems.SetValue(BRepCheck_RedundantEdge, " BRepCheck_RedundantEdge ................... ");
theCommands<<" No Curve on Surface ...................... "<<NbProblems->Value(7)<<"\n"; aProblems.SetValue(BRepCheck_SelfIntersectingWire, " Self Intersecting Wire ................... ");
//cout<<" No Curve on Surface ...................... "<<NbProblems->Value(7)<<endl; aProblems.SetValue(BRepCheck_NoSurface, " No Surface ................... ");
if(NbProblems->Value(8)>0) aProblems.SetValue(BRepCheck_InvalidWire, " Invalid Wire ................... ");
theCommands<<" Invalid Curve on Surface ................. "<<NbProblems->Value(8)<<"\n"; aProblems.SetValue(BRepCheck_RedundantWire, " Redundant Wire ................... ");
//cout<<" Invalid Curve on Surface ................. "<<NbProblems->Value(8)<<endl; aProblems.SetValue(BRepCheck_IntersectingWires, " Intersecting Wires ................... ");
if(NbProblems->Value(9)>0) aProblems.SetValue(BRepCheck_InvalidImbricationOfWires, " Invalid Imbrication Of Wires .................. ");
theCommands<<" Invalid Curve on closed Surface .......... "<<NbProblems->Value(9)<<"\n"; aProblems.SetValue(BRepCheck_EmptyShell, " Empty Shell ................... ");
//cout<<" Invalid Curve on closed Surface .......... "<<NbProblems->Value(9)<<endl; aProblems.SetValue(BRepCheck_RedundantFace, " Redundant Face ................... ");
if(NbProblems->Value(10)>0) aProblems.SetValue(BRepCheck_UnorientableShape, " Unorientable Shape ................... ");
theCommands<<" Invalid SameRange Flag ................... "<<NbProblems->Value(10)<<"\n"; aProblems.SetValue(BRepCheck_NotClosed, " Not Closed ................... ");
//cout<<" Invalid SameRange Flag ................... "<<NbProblems->Value(10)<<endl; aProblems.SetValue(BRepCheck_NotConnected, " Not Connected ................... ");
if(NbProblems->Value(11)>0) aProblems.SetValue(BRepCheck_SubshapeNotInShape, " Subshape Not In Shape ................... ");
theCommands<<" Invalid SameParameter Flag ............... "<<NbProblems->Value(11)<<"\n"; aProblems.SetValue(BRepCheck_BadOrientation, " Bad Orientation ................... ");
//cout<<" Invalid SameParameter Flag ............... "<<NbProblems->Value(11)<<endl; aProblems.SetValue(BRepCheck_BadOrientationOfSubshape, " Bad Orientation of Subshape .............. ");
if(NbProblems->Value(12)>0) aProblems.SetValue(BRepCheck_InvalidToleranceValue, " Invalid tolerance value................... ");
theCommands<<" Invalid Degenerated Flag ................. "<<NbProblems->Value(12)<<"\n"; aProblems.SetValue(BRepCheck_CheckFail, " Checkshape failure....................... ");
//cout<<" Invalid Degenerated Flag ................. "<<NbProblems->Value(12)<<endl;
if(NbProblems->Value(13)>0) for (Standard_Integer i = (Standard_Integer)BRepCheck_InvalidPointOnCurve; i <= (Standard_Integer)BRepCheck_CheckFail; ++i)
theCommands<<" Free Edge ................................ "<<NbProblems->Value(13)<<"\n"; {
//cout<<" Free Edge ................................ "<<NbProblems->Value(13)<<endl; if (NbProblems->Value (i) > 0)
if(NbProblems->Value(14)>0) theCommands << i << aProblems.Value (i) << "\n";
theCommands<<" Invalid MultiConnexity ................... "<<NbProblems->Value(14)<<"\n"; }
//cout<<" Invalid MultiConnexity ................... "<<NbProblems->Value(14)<<endl;
if(NbProblems->Value(15)>0)
theCommands<<" Invalid Range ............................ "<<NbProblems->Value(15)<<"\n";
//cout<<" Invalid Range ............................ "<<NbProblems->Value(15)<<endl;
if(NbProblems->Value(16)>0)
theCommands<<" Empty Wire ............................... "<<NbProblems->Value(16)<<"\n";
//cout<<" Empty Wire ............................... "<<NbProblems->Value(16)<<endl;
if(NbProblems->Value(17)>0)
theCommands<<" Redundant Edge ........................... "<<NbProblems->Value(17)<<"\n";
//cout<<" Redundant Edge ........................... "<<NbProblems->Value(17)<<endl;
if(NbProblems->Value(18)>0)
theCommands<<" Self Intersecting Wire ................... "<<NbProblems->Value(18)<<"\n";
//cout<<" Self Intersecting Wire ................... "<<NbProblems->Value(18)<<endl;
if(NbProblems->Value(19)>0)
theCommands<<" No Surface ............................... "<<NbProblems->Value(19)<<"\n";
//cout<<" No Surface ............................... "<<NbProblems->Value(19)<<endl;
if(NbProblems->Value(20)>0)
theCommands<<" Invalid Wire ............................. "<<NbProblems->Value(20)<<"\n";
//cout<<" Invalid Wire ............................. "<<NbProblems->Value(20)<<endl;
if(NbProblems->Value(21)>0)
theCommands<<" Redundant Wire ........................... "<<NbProblems->Value(21)<<"\n";
//cout<<" Redundant Wire ........................... "<<NbProblems->Value(21)<<endl;
if(NbProblems->Value(22)>0)
theCommands<<" Intersecting Wires ....................... "<<NbProblems->Value(22)<<"\n";
//cout<<" Intersecting Wires ....................... "<<NbProblems->Value(22)<<endl;
if(NbProblems->Value(23)>0)
theCommands<<" Invalid Imbrication of Wires ............. "<<NbProblems->Value(23)<<"\n";
//cout<<" Invalid Imbrication of Wires ............. "<<NbProblems->Value(23)<<endl;
if(NbProblems->Value(24)>0)
theCommands<<" Empty Shell .............................. "<<NbProblems->Value(24)<<"\n";
//cout<<" Empty Shell .............................. "<<NbProblems->Value(24)<<endl;
if(NbProblems->Value(25)>0)
theCommands<<" Redundant Face ........................... "<<NbProblems->Value(25)<<"\n";
//cout<<" Redundant Face ........................... "<<NbProblems->Value(25)<<endl;
if(NbProblems->Value(26)>0)
theCommands<<" Unorientable Shape ....................... "<<NbProblems->Value(26)<<"\n";
//cout<<" Unorientable Shape ....................... "<<NbProblems->Value(26)<<endl;
if(NbProblems->Value(27)>0)
theCommands<<" Not Closed ............................... "<<NbProblems->Value(27)<<"\n";
//cout<<" Not Closed ............................... "<<NbProblems->Value(27)<<endl;
if(NbProblems->Value(28)>0)
theCommands<<" Not Connected ............................ "<<NbProblems->Value(28)<<"\n";
//cout<<" Not Connected ............................ "<<NbProblems->Value(28)<<endl;
if(NbProblems->Value(29)>0)
theCommands<<" Subshape not in Shape .................... "<<NbProblems->Value(29)<<"\n";
//cout<<" Subshape not in Shape .................... "<<NbProblems->Value(29)<<endl;
if(NbProblems->Value(30)>0)
theCommands<<" Bad Orientation .......................... "<<NbProblems->Value(30)<<"\n";
//cout<<" Bad Orientation .......................... "<<NbProblems->Value(30)<<endl;
if(NbProblems->Value(31)>0)
theCommands<<" Bad Orientation of Subshape .............. "<<NbProblems->Value(31)<<"\n";
//cout<<" Bad Orientation of Subshape .............. "<<NbProblems->Value(31)<<endl;
if(NbProblems->Value(32)>0)
theCommands<<" checkshape failure......... .............. "<<NbProblems->Value(32)<<"\n";
//cout<<" checkshape failure......... .............. "<<NbProblems->Value(32)<<endl;
//cout<<" ------------------------------------------------"<<endl;
//cout<<"*** Shapes with problems : "<<sl->Length()<<endl;
//cout<<endl;
theCommands<<" ------------------------------------------------"<<"\n"; theCommands<<" ------------------------------------------------"<<"\n";
theCommands<<"*** Shapes with problems : "<<sl->Length()<<"\n"; theCommands<<"*** Shapes with problems : "<<sl->Length()<<"\n";

View File

@@ -859,12 +859,12 @@ void BRepTest::SweepCommands(Draw_Interpretor& theCommands)
"deletesweep wire, To delete a section", "deletesweep wire, To delete a section",
__FILE__,deletesweep,g); __FILE__,deletesweep,g);
theCommands.Add("buildsweep", "builsweep [r] [option] [Tol] , no args to get help" theCommands.Add("buildsweep", "buildsweep [r] [option] [Tol] , no args to get help",
__FILE__,buildsweep,g); __FILE__,buildsweep,g);
theCommands.Add("simulsweep", "simulsweep r [n] [option]" theCommands.Add("simulsweep", "simulsweep r [n] [option]",
__FILE__,simulsweep,g); __FILE__,simulsweep,g);
theCommands.Add("geompipe", "geompipe r spineedge profileedge radius [byACR [byrotate]]" theCommands.Add("geompipe", "geompipe r spineedge profileedge radius [byACR [byrotate]]",
__FILE__,geompipe,g); __FILE__,geompipe,g);
theCommands.Add("middlepath", "middlepath res shape startshape endshape", theCommands.Add("middlepath", "middlepath res shape startshape endshape",

View File

@@ -912,7 +912,8 @@ static Standard_Integer cfindp (Draw_Interpretor& , Standard_Integer n, const ch
Draw_Display d = dout.MakeDisplay(view); Draw_Display d = dout.MakeDisplay(view);
Handle(Draw_Drawable3D) D = Draw::Get(a[1]); Handle(
Draw_Drawable3D) D = Draw::Get(a[1]);
Handle(DrawTrSurf_BezierCurve) DBz = Handle(DrawTrSurf_BezierCurve) DBz =
Handle(DrawTrSurf_BezierCurve)::DownCast(D); Handle(DrawTrSurf_BezierCurve)::DownCast(D);

View File

@@ -49,10 +49,14 @@ is
Init (me: mutable; shape: Shape from TopoDS); Init (me: mutable; shape: Shape from TopoDS);
---Purpose: Initislises by shape. ---Purpose: Initislises by shape.
Perform (me : mutable; Perform (me : mutable;
theProgress : ProgressIndicator from Message = 0) returns Boolean; theProgress : ProgressIndicator from Message = 0) returns Boolean;
---Purpose: Iterates on sub- shape and performs fixes ---Purpose: Iterates on sub- shape and performs fixes
PerformR (me : mutable;
theProgress : ProgressIndicator from Message ) returns Boolean is private;
---Purpose: Internal method. Called by Perform.
SameParameter (me : mutable; SameParameter (me : mutable;
shape : Shape from TopoDS; shape : Shape from TopoDS;
enforce : Boolean; enforce : Boolean;

View File

@@ -33,6 +33,7 @@
#include <TopAbs_ShapeEnum.hxx> #include <TopAbs_ShapeEnum.hxx>
#include <BRepTools.hxx> #include <BRepTools.hxx>
#include <BRep_Builder.hxx> #include <BRep_Builder.hxx>
#include <BRepLib_ToleranceRule.hxx>
#include <ShapeFix.hxx> #include <ShapeFix.hxx>
#include <ShapeBuild_ReShape.hxx> #include <ShapeBuild_ReShape.hxx>
@@ -99,7 +100,19 @@ void ShapeFix_Shape::Init(const TopoDS_Shape& shape)
//purpose : //purpose :
//======================================================================= //=======================================================================
Standard_Boolean ShapeFix_Shape::Perform(const Handle(Message_ProgressIndicator)& theProgress) Standard_Boolean ShapeFix_Shape::Perform(const Handle(Message_ProgressIndicator)& theProgress)
{
Standard_Boolean aR = PerformR(theProgress);
BRepLib_ToleranceRule::SetProperTolerances(myResult);
return aR;
}
//=======================================================================
//function : PerformR
//purpose :
//=======================================================================
Standard_Boolean ShapeFix_Shape::PerformR(const Handle(Message_ProgressIndicator)& theProgress)
{ {
Standard_Integer savFixSmallAreaWireMode = 0; Standard_Integer savFixSmallAreaWireMode = 0;
@@ -157,7 +170,7 @@ Standard_Boolean ShapeFix_Shape::Perform(const Handle(Message_ProgressIndicator)
for ( TopoDS_Iterator anIter(S); anIter.More() && aPSentry.More(); anIter.Next(), aPSentry.Next() ) for ( TopoDS_Iterator anIter(S); anIter.More() && aPSentry.More(); anIter.Next(), aPSentry.Next() )
{ {
myShape = anIter.Value(); myShape = anIter.Value();
if ( Perform(theProgress) ) if ( PerformR(theProgress) )
status = Standard_True; status = Standard_True;
} }
if ( !aPSentry.More() ) if ( !aPSentry.More() )

View File

@@ -37,6 +37,7 @@
#include <ShapeUpgrade_WireDivide.hxx> #include <ShapeUpgrade_WireDivide.hxx>
#include <Standard_ErrorHandler.hxx> #include <Standard_ErrorHandler.hxx>
#include <Standard_Failure.hxx> #include <Standard_Failure.hxx>
#include <BRepLib_ToleranceRule.hxx>
//======================================================================= //=======================================================================
//function : ShapeUpgrade_ShapeDivide //function : ShapeUpgrade_ShapeDivide
@@ -174,6 +175,7 @@ Standard_Boolean ShapeUpgrade_ShapeDivide::Perform(const Standard_Boolean newCon
if ( Status ( ShapeExtend_DONE ) ) { if ( Status ( ShapeExtend_DONE ) ) {
myResult = myContext->Apply ( C, TopAbs_SHAPE ); myResult = myContext->Apply ( C, TopAbs_SHAPE );
myContext->Replace ( myShape, myResult ); myContext->Replace ( myShape, myResult );
BRepLib_ToleranceRule::SetProperTolerances(myResult);
return Standard_True; return Standard_True;
} }
myResult = myShape; myResult = myShape;
@@ -282,6 +284,7 @@ Standard_Boolean ShapeUpgrade_ShapeDivide::Perform(const Standard_Boolean newCon
} }
} }
myResult = myContext->Apply ( myShape, TopAbs_SHAPE ); myResult = myContext->Apply ( myShape, TopAbs_SHAPE );
BRepLib_ToleranceRule::SetProperTolerances(myResult);
return ! myResult.IsSame ( myShape ); return ! myResult.IsSame ( myShape );
} }

View File

@@ -1,4 +1,5 @@
restore [locate_data_file CFI_2_o12ffq.rle] s restore [locate_data_file CFI_2_o12ffq.rle] s
updatetolerance s
explode s e explode s e
mkevol result s mkevol result s

View File

@@ -5,6 +5,7 @@
## ==================================== ## ====================================
restore [locate_data_file CTO900_pro12880c.rle] a restore [locate_data_file CTO900_pro12880c.rle] a
updatetolerance a
explode a e explode a e
blend result a 5 a_89 blend result a 5 a_89

View File

@@ -5,6 +5,7 @@
## ==================================== ## ====================================
restore [locate_data_file CFI_pro12894.rle] a restore [locate_data_file CFI_pro12894.rle] a
updatetolerance a
explode a e explode a e
blend result a 5 a_89 blend result a 5 a_89

View File

@@ -5,7 +5,7 @@
## ==================================== ## ====================================
restore [locate_data_file CFI_cfi90fjc.rle] a restore [locate_data_file CFI_cfi90fjc.rle] a
nexplode a e explode a e
blend result a 5 a_5 5 a_13 5 a_28 blend result a 5 a_42 5 a_44 5 a_46
set square 66620.1 set square 66620.1

View File

@@ -5,6 +5,7 @@
## ==================================== ## ====================================
restore [locate_data_file CFI_ger60206.rle] a restore [locate_data_file CFI_ger60206.rle] a
updatetolerance a
explode a e explode a e
mkevol result a mkevol result a
updatevol a_21 0 0.5 1 1 updatevol a_21 0 0.5 1 1

View File

@@ -5,6 +5,7 @@
## ==================================== ## ====================================
restore [locate_data_file CFI_pro8792.rle] a restore [locate_data_file CFI_pro8792.rle] a
updatetolerance a
explode a e explode a e
mkevol result a mkevol result a
updatevol a_20 0 15 0.5 20 1 5 updatevol a_20 0 15 0.5 20 1 5

View File

@@ -5,6 +5,7 @@
## ==================================== ## ====================================
restore [locate_data_file CFI_pro10631.rle] a restore [locate_data_file CFI_pro10631.rle] a
updatetolerance a
explode a e explode a e
blend result a 5 a_45 blend result a 5 a_45

View File

@@ -5,6 +5,7 @@
## ==================================== ## ====================================
restore [locate_data_file CFI_pro10522.rle] a restore [locate_data_file CFI_pro10522.rle] a
updatetolerance a
explode a e explode a e
blend result a 2 a_82 blend result a 2 a_82

View File

@@ -5,6 +5,7 @@
## ==================================== ## ====================================
restore [locate_data_file CFI_pro10117.rle] a restore [locate_data_file CFI_pro10117.rle] a
updatetolerance a
explode a e explode a e
blend result a 2 a_128 1 a_10 blend result a 2 a_128 1 a_10

View File

@@ -1,6 +1,7 @@
if { [isdraw result] } { if { [isdraw result] } {
#check if result is valid #check if result is valid
updatetolerance result
puts "checkshape" puts "checkshape"
set ch [checkshape result] set ch [checkshape result]
puts $ch puts $ch

View File

@@ -1,4 +1,5 @@
puts "TODO ?OCC12345 ALL: OCC309: Error 2" puts "TODO ?OCC12345 ALL: OCC309: ERROR"
puts "TODO ?OCC12345 ALL: Faulty shapes in variables faulty_"
puts "================" puts "================"
puts "OCC309" puts "OCC309"

View File

@@ -9,6 +9,7 @@ puts ""
########################################################### ###########################################################
restore [locate_data_file OCC329.brep] a restore [locate_data_file OCC329.brep] a
updatetolerance a
checkshape a checkshape a
set tol1 [maxtolerance a] set tol1 [maxtolerance a]

View File

@@ -10,6 +10,7 @@ puts ""
restore [locate_data_file buc60462a.brep] a restore [locate_data_file buc60462a.brep] a
checkshape a checkshape a
restore [locate_data_file buc60462b.brep] b restore [locate_data_file buc60462b.brep] b
updatetolerance b
checkshape b checkshape b
bsection result a b bsection result a b

View File

@@ -10,6 +10,7 @@ cpulimit 1400
restore [locate_data_file buc60463a.brep] a restore [locate_data_file buc60463a.brep] a
checkshape a checkshape a
restore [locate_data_file buc60463b.brep] b restore [locate_data_file buc60463b.brep] b
updatetolerance b
checkshape b checkshape b
bsection result a b bsection result a b

View File

@@ -9,6 +9,7 @@ puts ""
set BugNumber OCC10842 set BugNumber OCC10842
restore [locate_data_file OCC10842-1.brep] b1 restore [locate_data_file OCC10842-1.brep] b1
updatetolerance b1
restore [locate_data_file OCC10842-2.brep] b2 restore [locate_data_file OCC10842-2.brep] b2
puts "Prepare boolean operation ..." puts "Prepare boolean operation ..."

View File

@@ -9,6 +9,7 @@ puts ""
################################################################# #################################################################
restore [locate_data_file OCC292.brep] result restore [locate_data_file OCC292.brep] result
updatetolerance result
checkshape result checkshape result
tclean result tclean result

View File

@@ -7,6 +7,7 @@ puts ""
################################################## ##################################################
restore [locate_data_file OCC317.brep] result restore [locate_data_file OCC317.brep] result
updatetolerance result
set che [checkshape result] set che [checkshape result]
if { [regexp {Faulty} $che] == 1} { if { [regexp {Faulty} $che] == 1} {

View File

@@ -10,6 +10,7 @@ puts ""
################################################## ##################################################
restore [locate_data_file OCC330.brep] result restore [locate_data_file OCC330.brep] result
updatetolerance result
decho off decho off
set che [checkshape result] set che [checkshape result]

View File

@@ -7,6 +7,7 @@ puts "========"
puts "" puts ""
restore [locate_data_file mds-part1.rle] a restore [locate_data_file mds-part1.rle] a
updatetolerance a
set che [checkshape a] set che [checkshape a]
if { [regexp {Faulty} $che ] == 1 } { if { [regexp {Faulty} $che ] == 1 } {
puts "Faulty OCC452 (shape 1): Source shape is invalid. It was detected by Checkshape command" puts "Faulty OCC452 (shape 1): Source shape is invalid. It was detected by Checkshape command"
@@ -23,6 +24,7 @@ if { [regexp {Faulty} $che ] == 1 } {
} }
restore [locate_data_file CTO900_ger60239a.rle] c restore [locate_data_file CTO900_ger60239a.rle] c
updatetolerance c
set che [checkshape c] set che [checkshape c]
if { [regexp {Faulty} $che ] == 1 } { if { [regexp {Faulty} $che ] == 1 } {
puts "Faulty OCC452 (shape 3): Source shape is invalid. It was detected by Checkshape command" puts "Faulty OCC452 (shape 3): Source shape is invalid. It was detected by Checkshape command"
@@ -31,6 +33,7 @@ if { [regexp {Faulty} $che ] == 1 } {
} }
restore [locate_data_file CTO900_ger60239b.rle] d restore [locate_data_file CTO900_ger60239b.rle] d
updatetolerance d
set che [checkshape d] set che [checkshape d]
if { [regexp {Faulty} $che ] == 1 } { if { [regexp {Faulty} $che ] == 1 } {
puts "Faulty OCC452 (shape 4): Source shape is invalid. It was detected by Checkshape command" puts "Faulty OCC452 (shape 4): Source shape is invalid. It was detected by Checkshape command"

View File

@@ -7,6 +7,7 @@ puts "========"
puts "" puts ""
restore [locate_data_file CTO900_ger60239a.rle] a restore [locate_data_file CTO900_ger60239a.rle] a
updatetolerance a
set che [checkshape a] set che [checkshape a]
if { [regexp {Faulty} $che ] == 1 } { if { [regexp {Faulty} $che ] == 1 } {
puts "Faulty OCC452 (shape 5): Source shape is invalid. It was detected by Checkshape command" puts "Faulty OCC452 (shape 5): Source shape is invalid. It was detected by Checkshape command"
@@ -15,6 +16,7 @@ if { [regexp {Faulty} $che ] == 1 } {
} }
restore [locate_data_file CTO900_ger60239b.rle] b restore [locate_data_file CTO900_ger60239b.rle] b
updatetolerance b
set che [checkshape b] set che [checkshape b]
if { [regexp {Faulty} $che ] == 1 } { if { [regexp {Faulty} $che ] == 1 } {
puts "Faulty OCC452 (shape 6): Source shape is invalid. It was detected by Checkshape command" puts "Faulty OCC452 (shape 6): Source shape is invalid. It was detected by Checkshape command"

View File

@@ -10,6 +10,7 @@ set BugNumber OCC5729
restore [locate_data_file OCC5729-f1.brep] f1 restore [locate_data_file OCC5729-f1.brep] f1
restore [locate_data_file OCC5729-f2.brep] f2 restore [locate_data_file OCC5729-f2.brep] f2
updatetolerance f2
decho off decho off
set che_1 [checkshape f1] set che_1 [checkshape f1]

View File

@@ -7,6 +7,7 @@ cpulimit 10000
restore [locate_data_file OCC698_1.brep] b4 restore [locate_data_file OCC698_1.brep] b4
checkshape b4 checkshape b4
restore [locate_data_file OCC698_2.brep] b5 restore [locate_data_file OCC698_2.brep] b5
updatetolerance b5
checkshape b5 checkshape b5
bcut result b5 b4 bcut result b5 b4

View File

@@ -9,7 +9,9 @@ puts ""
set BugNumber OCC6181 set BugNumber OCC6181
restore [locate_data_file OCC6181_A.brep] s1 restore [locate_data_file OCC6181_A.brep] s1
updatetolerance s1
restore [locate_data_file OCC6181_B.brep] s2 restore [locate_data_file OCC6181_B.brep] s2
updatetolerance s2
decho off decho off
set che_s1 [checkshape s1] set che_s1 [checkshape s1]

View File

@@ -9,6 +9,7 @@ puts ""
set BugNumber OCC6182 set BugNumber OCC6182
restore [locate_data_file OCC6182_A.brep] s1 restore [locate_data_file OCC6182_A.brep] s1
updatetolerance s1
restore [locate_data_file OCC6182_B.brep] s2 restore [locate_data_file OCC6182_B.brep] s2
decho off decho off

View File

@@ -9,6 +9,7 @@ puts ""
set BugNumber OCC6272 set BugNumber OCC6272
restore [locate_data_file OCC6272_bridge2.brep] a1 restore [locate_data_file OCC6272_bridge2.brep] a1
updatetolerance a1
# #
# a1 is compound. It containes a_3, a_5, a_1, a_2, a_4, a_6 solids # a1 is compound. It containes a_3, a_5, a_1, a_2, a_4, a_6 solids

View File

@@ -9,6 +9,7 @@ puts ""
set BugNumber OCC6272 set BugNumber OCC6272
restore [locate_data_file OCC6272_bridge2.brep] a1 restore [locate_data_file OCC6272_bridge2.brep] a1
updatetolerance a1
# #
# a1 is compound. It containes a_3, a_5, a_1, a_2, a_4, a_6 solids # a1 is compound. It containes a_3, a_5, a_1, a_2, a_4, a_6 solids

View File

@@ -10,6 +10,7 @@ puts ""
###################################################### ######################################################
restore [locate_data_file OCC697_1.brep] b1 restore [locate_data_file OCC697_1.brep] b1
updatetolerance b1
restore [locate_data_file OCC697_2.brep] b2 restore [locate_data_file OCC697_2.brep] b2
checkshape b1 checkshape b1

View File

@@ -10,6 +10,7 @@ puts ""
###################################################### ######################################################
restore [locate_data_file OCC697_1.brep] b1 restore [locate_data_file OCC697_1.brep] b1
updatetolerance b1
restore [locate_data_file OCC697_2.brep] b2 restore [locate_data_file OCC697_2.brep] b2
checkshape b1 checkshape b1

View File

@@ -10,6 +10,7 @@ puts ""
###################################################### ######################################################
restore [locate_data_file OCC697_1.brep] b1 restore [locate_data_file OCC697_1.brep] b1
updatetolerance b1
restore [locate_data_file OCC697_2.brep] b2 restore [locate_data_file OCC697_2.brep] b2
checkshape b1 checkshape b1

View File

@@ -10,6 +10,7 @@ puts ""
###################################################### ######################################################
restore [locate_data_file OCC697_1.brep] b1 restore [locate_data_file OCC697_1.brep] b1
updatetolerance b1
restore [locate_data_file OCC697_2.brep] b2 restore [locate_data_file OCC697_2.brep] b2
checkshape b1 checkshape b1

View File

@@ -10,6 +10,7 @@ puts ""
################################# #################################
restore [locate_data_file OCC774.brep] a restore [locate_data_file OCC774.brep] a
updatetolerance a
explode a explode a
checkshape a_1 checkshape a_1
checkshape a_2 checkshape a_2

View File

@@ -10,6 +10,7 @@ puts ""
########################################## ##########################################
restore [locate_data_file OCC776.brep] a restore [locate_data_file OCC776.brep] a
updatetolerance a
explode a explode a
checkshape a_1 checkshape a_1
checkshape a_2 checkshape a_2

View File

@@ -10,6 +10,7 @@ puts ""
########################################## ##########################################
restore [locate_data_file OCC776.brep] a restore [locate_data_file OCC776.brep] a
updatetolerance a
explode a explode a
checkshape a_1 checkshape a_1
checkshape a_2 checkshape a_2

View File

@@ -8,6 +8,7 @@ puts ""
########################################################## ##########################################################
restore [locate_data_file BUC60877_lh.brep] sh restore [locate_data_file BUC60877_lh.brep] sh
updatetolerance sh
checkshape sh checkshape sh
plane pl 820 198 140 -1e-06 0 1 plane pl 820 198 140 -1e-06 0 1

View File

@@ -14,6 +14,7 @@ explode a
# See comment in CR23244: # See comment in CR23244:
restore [locate_data_file OCC919-PROC.brep] a_1 restore [locate_data_file OCC919-PROC.brep] a_1
updatetolerance a_1
# #
checkshape a_1 checkshape a_1

View File

@@ -7,6 +7,7 @@ puts "=========="
pload QAcommands pload QAcommands
restore [locate_data_file buc60652b.brep] result restore [locate_data_file buc60652b.brep] result
updatetolerance result
checkshape result checkshape result
BUC60652 result BUC60652 result

View File

@@ -7,6 +7,7 @@ puts "==========="
pload QAcommands pload QAcommands
restore [locate_data_file buc60652c.brep] result restore [locate_data_file buc60652c.brep] result
updatetolerance result
checkshape result checkshape result
BUC60652 result BUC60652 result

View File

@@ -7,6 +7,7 @@ puts ""
## Fillets created in CasCade version 3 do not display as shaded surfaces. ## Fillets created in CasCade version 3 do not display as shaded surfaces.
################################################# #################################################
restore [locate_data_file buc60707a.brep] result restore [locate_data_file buc60707a.brep] result
updatetolerance result
checkshape result checkshape result
tclean result tclean result

View File

@@ -9,6 +9,7 @@ puts ""
############################################## ##############################################
restore [locate_data_file OCC368.brep] result restore [locate_data_file OCC368.brep] result
updatetolerance result
checkshape result checkshape result
tclean result tclean result

View File

@@ -8,6 +8,7 @@ puts "=================================="
puts "" puts ""
restore [locate_data_file fra62476b.brep] result restore [locate_data_file fra62476b.brep] result
updatetolerance result
checkshape result checkshape result
tclean result tclean result

View File

@@ -5,6 +5,7 @@ puts "==========="
restore [locate_data_file ger61235a.brep] tool restore [locate_data_file ger61235a.brep] tool
checkshape tool checkshape tool
restore [locate_data_file ger61235b.brep] object restore [locate_data_file ger61235b.brep] object
updatetolerance object
checkshape object checkshape object
bsection result object tool bsection result object tool

View File

@@ -8,6 +8,7 @@ puts "It takes visual check for this BUG"
puts "==================================" puts "=================================="
restore [locate_data_file pro20333a.brep] result restore [locate_data_file pro20333a.brep] result
updatetolerance result
checkshape result checkshape result
tclean result tclean result

View File

@@ -5,6 +5,7 @@ puts "BUC60948"
puts "========================" puts "========================"
restore [locate_data_file pump4.brep] a_1 restore [locate_data_file pump4.brep] a_1
updatetolerance a_1
checkshape a_1 checkshape a_1
##################################################################### #####################################################################

View File

@@ -7,6 +7,7 @@ puts ""
######################################################## ########################################################
restore [locate_data_file OCC630.brep] a1 restore [locate_data_file OCC630.brep] a1
updatetolerance a1
checkshape a1 checkshape a1
###################################################################### ######################################################################

View File

@@ -13,6 +13,7 @@ pload XDE
################################################################## ##################################################################
restore [locate_data_file buc60661a.brep] buc60661 restore [locate_data_file buc60661a.brep] buc60661
updatetolerance buc60661
checkshape buc60661 checkshape buc60661
###################################################################### ######################################################################

View File

@@ -4,6 +4,7 @@ puts "(case 1)"
puts "========================" puts "========================"
restore [locate_data_file shading_058.brep] result restore [locate_data_file shading_058.brep] result
updatetolerance result
checkshape result checkshape result
tclean result tclean result

View File

@@ -4,6 +4,7 @@ puts "(case 4)"
puts "========================" puts "========================"
restore [locate_data_file shading_151.brep] result restore [locate_data_file shading_151.brep] result
updatetolerance result
checkshape result checkshape result
tclean result tclean result

View File

@@ -8,6 +8,7 @@ puts ""
##################### #####################
restore [locate_data_file OCC859.brep] a restore [locate_data_file OCC859.brep] a
updatetolerance a
checkshape a checkshape a
sewing result a sewing result a

View File

@@ -8,6 +8,7 @@ puts ""
###################################################### ######################################################
restore [locate_data_file OCC859.brep] result restore [locate_data_file OCC859.brep] result
updatetolerance result
checkshape result checkshape result
freebounds result 0.1 freebounds result 0.1

View File

@@ -5,8 +5,9 @@ set chamf_dist_dist [list "1.1 1" " 1 1.2" " 1 1.4"]
set chamf_equal_dist [list "1 " "1.1 " "1.2 "] set chamf_equal_dist [list "1 " "1.1 " "1.2 "]
dset SCALE 100 dset SCALE 100
if { [string compare $command chamf_sequence] == 0 } { if { [string compare $command chamf_sequence] == 0 } {
puts "TODO #22909 ALL: Error: The tests should be reviewed" #puts "TODO #22909 ALL: Error: The tests should be reviewed"
puts "Error: The tests should be reviewed." puts "TODO ?22909 ALL: Error : chamfer is not done."
#puts "Error: The tests should be reviewed."
set os "ALL" set os "ALL"
if {[array get env os_type] != ""} { if {[array get env os_type] != ""} {
set os $env(os_type) set os $env(os_type)

View File

@@ -2,6 +2,7 @@
# Date : 26 Nov 98 # Date : 26 Nov 98
restore [locate_data_file cts21832_base.brep] base restore [locate_data_file cts21832_base.brep] base
updatetolerance base
restore [locate_data_file cts21832_cont.brep] cont restore [locate_data_file cts21832_cont.brep] cont
explode cont wire explode cont wire

View File

@@ -2,6 +2,7 @@
# Date : 23mar98 # Date : 23mar98
restore [locate_data_file CTO900_ger60224-part.rle] base restore [locate_data_file CTO900_ger60224-part.rle] base
updatetolerance base
restore [locate_data_file ger60224-tool.rle] wire restore [locate_data_file ger60224-tool.rle] wire
mkplane cont wire mkplane cont wire

View File

@@ -2,6 +2,7 @@
# Date : 10 Sept 98 # Date : 10 Sept 98
restore [locate_data_file CTO900_pro12880c.rle] base restore [locate_data_file CTO900_pro12880c.rle] base
updatetolerance base
restore [locate_data_file pro12880_face.rle] cont restore [locate_data_file pro12880_face.rle] cont
featprism base cont cont 0 1 0 1 1 featprism base cont cont 0 1 0 1 1

View File

@@ -2,6 +2,7 @@
# Date : 15 Sept 98 # Date : 15 Sept 98
restore [locate_data_file CTO900_ger50084c.rle] base restore [locate_data_file CTO900_ger50084c.rle] base
updatetolerance base
restore [locate_data_file ger50084_face.rle] wire restore [locate_data_file ger50084_face.rle] wire
## contour est un wire -> on en fait une face ## contour est un wire -> on en fait une face

View File

@@ -7,6 +7,7 @@
cpulimit 2000 cpulimit 2000
restore [locate_data_file CFE900_cts20geq.rle] base restore [locate_data_file CFE900_cts20geq.rle] base
updatetolerance base
restore [locate_data_file cts20960_face.brep] cont restore [locate_data_file cts20960_face.brep] cont
explode base face explode base face

View File

@@ -2,6 +2,7 @@
# Date : 25 Nov 98 # Date : 25 Nov 98
restore [locate_data_file cts20088_base.brep] base restore [locate_data_file cts20088_base.brep] base
updatetolerance base
restore [locate_data_file contour_pkv.rle] cont restore [locate_data_file contour_pkv.rle] cont
explode base face explode base face

View File

@@ -2,6 +2,7 @@
# Date : 02 Dec 98 # Date : 02 Dec 98
restore [locate_data_file CFE900_pro16gff.rle] base restore [locate_data_file CFE900_pro16gff.rle] base
updatetolerance base
restore [locate_data_file pro16769_face.brep] cont restore [locate_data_file pro16769_face.brep] cont
explode base face explode base face

View File

@@ -1,6 +1,7 @@
# cts20088 # cts20088
restore [locate_data_file cts20088_base.brep] base restore [locate_data_file cts20088_base.brep] base
updatetolerance base
restore [locate_data_file contour_pkv.rle] cont restore [locate_data_file contour_pkv.rle] cont
explode base face explode base face

View File

@@ -2,6 +2,7 @@
puts "TODO OCC22810 ALL: Error : The area of the resulting shape is" puts "TODO OCC22810 ALL: Error : The area of the resulting shape is"
restore [locate_data_file cts20088_base.brep] base restore [locate_data_file cts20088_base.brep] base
updatetolerance base
restore [locate_data_file contour_pkv.rle] cont restore [locate_data_file contour_pkv.rle] cont
explode base face explode base face

View File

@@ -2,7 +2,8 @@ if {[string compare $command "ShapeConvertRev"] == 0 } {
puts "TODO OCC23127 ALL: Error : The resulting shape is not correct" puts "TODO OCC23127 ALL: Error : The resulting shape is not correct"
} }
if {[string compare $command "SplitAngle"] == 0 } { if {[string compare $command "SplitAngle"] == 0 } {
puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_9 " puts "TODO OCC23127 ALL: 004C6978 : Standard_NoSuchObject: BRep_Tool:: no parameter on edge"
puts "TEST COMPLETED"
} }
restore [locate_data_file CTO900_ger60598c.rle] a restore [locate_data_file CTO900_ger60598c.rle] a

View File

@@ -3,7 +3,7 @@ if { [string compare $command "ShapeConvertRev"] == 0 } {
puts "TODO OCC23127 ALL: Error : The area of the resulting shape is" puts "TODO OCC23127 ALL: Error : The area of the resulting shape is"
} }
if {[string compare $command "SplitAngle"] == 0 } { if {[string compare $command "SplitAngle"] == 0 } {
puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_8 " puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_ "
} }
restore [locate_data_file m2] a restore [locate_data_file m2] a

View File

@@ -1,5 +1,5 @@
if {[string compare $command "SplitAngle"] == 0 } { if {[string compare $command "SplitAngle"] == 0 } {
puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_38 " puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_ "
} }
restore [locate_data_file CED_PIEUSI.brep] a restore [locate_data_file CED_PIEUSI.brep] a

View File

@@ -1,5 +1,5 @@
if {[string compare $command "SplitAngle"] == 0 } { if {[string compare $command "SplitAngle"] == 0 } {
puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_186 " puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_ "
} }
restore [locate_data_file GER61558.brep] a restore [locate_data_file GER61558.brep] a

View File

@@ -1,5 +1,5 @@
if {[string compare $command "SplitAngle"] == 0 } { if {[string compare $command "SplitAngle"] == 0 } {
puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_6 " puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_ "
} }
restore [locate_data_file SOLMIR.brep] a restore [locate_data_file SOLMIR.brep] a

View File

@@ -3,13 +3,7 @@ if {[string compare $command "SplitAngle"] == 0 } {
if {[array get env os_type] != ""} { if {[array get env os_type] != ""} {
set os $env(os_type) set os $env(os_type)
} }
if { puts "TODO OCC23127 $os: Faulty shapes in variables faulty_1 to faulty_"
[string compare $os "Mandriva2008"] == 0
} {
puts "TODO OCC23127 $os: Faulty shapes in variables faulty_1 to faulty_32"
} else {
puts "TODO OCC23127 $os: Faulty shapes in variables faulty_1 to faulty_30"
}
} }
restore [locate_data_file BPLSEITLI.brep] a restore [locate_data_file BPLSEITLI.brep] a

View File

@@ -1,5 +1,5 @@
if {[string compare $command "SplitAngle"] == 0 } { if {[string compare $command "SplitAngle"] == 0 } {
puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_28 " puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_ "
} }
restore [locate_data_file BPLSEITRE.brep] a restore [locate_data_file BPLSEITRE.brep] a

View File

@@ -2,7 +2,7 @@ if { [string compare $command "ShapeConvertRev"] == 0 } {
puts "TODO OCC23127 ALL: Error : The area of the resulting shape is" puts "TODO OCC23127 ALL: Error : The area of the resulting shape is"
} }
if {[string compare $command "SplitAngle"] == 0 } { if {[string compare $command "SplitAngle"] == 0 } {
puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_4 " puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_"
} }
restore [locate_data_file CTO900_pro5363c.rle] a restore [locate_data_file CTO900_pro5363c.rle] a

View File

@@ -1,2 +1,5 @@
puts "TODO OCC23127 ALL: Error : the resulting shape is not done." puts "TODO OCC23127 ALL: Error : the resulting shape is not done."
puts "TODO OCC23127 ALL: Faulty shapes in variables faulty_1 to faulty_6"
puts "TODO OCC23127 ALL: Tcl Exception:"
restore [locate_data_file DSE3.rle] a restore [locate_data_file DSE3.rle] a
puts "TEST COMPLETED"

View File

@@ -1,4 +1,5 @@
puts [fixsmall result a 1] puts [fixsmall result a 1]
updatetolerance result
if { [isdraw result] } { if { [isdraw result] } {
puts [checkshape result] puts [checkshape result]
} }

View File

@@ -1,2 +1,3 @@
puts [DT_ApplySeq result a MDTV ToV4] puts [DT_ApplySeq result a MDTV ToV4]
updatetolerance result
puts [checkshape result] puts [checkshape result]

Some files were not shown because too many files have changed in this diff Show More