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

Compare commits

...

23 Commits

Author SHA1 Message Date
abk
6fe68c225f Build fix in CDL files. 2013-03-06 12:21:13 +04:00
abk
9f066175b1 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-02-28 12:04:18 +04:00
abk
58ac0479d3 Class BRepLib_ToleranceRule was created to work with shape tolerances by
tolerance rule.

Some code from BRepLib was moved to BRepLib_ToleranceRule.
2013-02-27 18:26:08 +04:00
abk
920f4fd7b8 Error message was changed in test 'bugs modalg bug10232'.
Error message was changed in test file 'heal data advanced ZD1'.
2013-02-18 12:26:27 +04:00
abk
c283fa977c 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-02-15 13:37:04 +04:00
abk
f2d337a78b 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-02-15 13:29:31 +04:00
abk
2b0eda9829 Draw command 'EnsureTolRule' was replaced by command 'updatetolerance' in
tests.

Draw command 'EnsureTolRule' was removed.
2013-02-14 21:33:15 +04:00
abk
d61c0a6611 BRepBuilderAPI_MakeShape::EnsureToleranceRule was replaced by
BRepLib::UpdateTolerances.

BRepBuilderAPI_MakeShape::EnsureToleranceRule was removed.
2013-02-13 19:02:19 +04:00
abk
39f6f64406 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-02-13 17:26:00 +04:00
abk
c6ca790594 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-02-13 17:25:57 +04:00
abk
a0a2130bd1 Error message was changed in test case heal/drop_small|_edges/A4. Result shape in the test is invalid. 2013-02-13 17:25:54 +04:00
abk
aced2d46ae Error message was changed in test case bugs/modalg/buc60462_2. 2013-02-13 17:25:51 +04:00
abk
9f091145df 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-02-13 17:25:48 +04:00
abk
dce04d1886 Error message was changed in test case heal/drop_small_edges/A4. 2013-02-13 17:25:45 +04:00
abk
80408b2c94 Error message was changed in test files: - chamfer/data/complex/B5, - chamfer/data/complex/B6, - chamfer/data/complex/B7. 2013-02-13 17:25:42 +04:00
abk
af2b044d52 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-02-13 17:25:39 +04:00
abk
e1df850235 Calculation of gravity center was made by vertices data for degenerated
edge without representations.
2013-02-13 17:25:36 +04:00
abk
eee7d4e581 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-02-13 17:25:33 +04:00
abk
a8dfb02c9a Method BRepGProp::LinearProperties was changed to avoid degenerated edges. 2013-02-13 17:25:29 +04:00
abk
8e9324462b 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.
2013-02-13 17:25:26 +04:00
abk
a22dd6a5f5 Application of EnsureToleranceRule to ShapeFix_Shape was fixed. 2013-02-13 17:25:23 +04:00
abk
5c11ad7d6a 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-02-13 17:25:20 +04:00
abv
2177414185 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
2013-02-13 17:25:17 +04:00
128 changed files with 907 additions and 557 deletions

View File

@@ -38,6 +38,7 @@
#include <BOP_SolidSolidHistoryCollector.hxx>
#include <BOP_SectionHistoryCollector.hxx>
#include <BRepLib_FuseEdges.hxx>
#include <BRepLib.hxx>
#include <TopExp.hxx>
#include <TopTools_MapOfShape.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
@@ -325,6 +326,7 @@ const TopTools_ListOfShape& BRepAlgoAPI_BooleanOperation::Modified(const TopoDS_
myErrorStatus=0;
myBuilderCanWork=Standard_True;
myShape=myBuilder->Result();
BRepLib::UpdateTolerances(myShape);
Done();
}
else {
@@ -400,6 +402,7 @@ const TopTools_ListOfShape& BRepAlgoAPI_BooleanOperation::Modified(const TopoDS_
myErrorStatus=0;
myBuilderCanWork=Standard_True;
myShape=myBuilder->Result();
BRepLib::UpdateTolerances(myShape);
Done();
}
else {

View File

@@ -21,6 +21,10 @@
#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_Shape.hxx>
#include <TopoDS_Face.hxx>
@@ -113,7 +117,3 @@ Standard_Boolean BRepBuilderAPI_MakeShape::IsDeleted (const TopoDS_Shape& S)
{
return Standard_False;
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -49,7 +49,8 @@ uses Shape from TopoDS,
DataMapOfShapeShape from TopTools,
SequenceOfCurve from TColGeom,
Curve from Geom,
StatusError from BRepFeat
StatusError from BRepFeat,
IndexedMapOfShape from TopTools
raises ConstructionError from Standard
@@ -168,6 +169,10 @@ is
BarycCurve(me: in out)
returns Curve from Geom;
---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
myPbase : Shape from TopoDS;
@@ -176,5 +181,6 @@ fields
myCurves : SequenceOfCurve from TColGeom;
myBCurve : Curve from Geom;
myStatusError : StatusError from BRepFeat;
myProtectedFromModificationShapes : IndexedMapOfShape from TopTools;
end MakePrism;

View File

@@ -45,6 +45,8 @@
#include <BRep_Tool.hxx>
#include <BRepLib_ToleranceRule.hxx>
#include <BRepTools.hxx>
@@ -139,6 +141,10 @@ void BRepFeat_MakePrism::Init(const TopoDS_Shape& Sbase,
Standard_Boolean trc = BRepFeat_GettraceFEAT();
if (trc) cout << "BRepFeat_MakePrism::Init" << endl;
#endif
TopExp::MapShapes(Sbase, myProtectedFromModificationShapes);
TopExp::MapShapes(Pbase, myProtectedFromModificationShapes);
TopExp::MapShapes(Skface, myProtectedFromModificationShapes);
//
mySkface = Skface;
SketchFaceValid();
mySbase = Sbase;
@@ -204,6 +210,8 @@ void BRepFeat_MakePrism::Add(const TopoDS_Edge& E,
Standard_Boolean trc = BRepFeat_GettraceFEAT();
if (trc) cout << "BRepFeat_MakePrism::Add(Edge,face)" << endl;
#endif
TopExp::MapShapes(E, myProtectedFromModificationShapes);
//
TopExp_Explorer exp;
for (exp.Init(mySbase,TopAbs_FACE);exp.More();exp.Next()) {
if (exp.Current().IsSame(F)) {
@@ -364,6 +372,8 @@ void BRepFeat_MakePrism::Perform(const TopoDS_Shape& Until)
Standard_Boolean trc = BRepFeat_GettraceFEAT();
if (trc) cout << "BRepFeat_MakePrism::Perform(Until)" << endl;
#endif
TopExp::MapShapes(Until, myProtectedFromModificationShapes);
//
if (Until.IsNull()) {
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
TopExp_Explorer expr(mySbase, TopAbs_FACE);
@@ -514,6 +525,9 @@ void BRepFeat_MakePrism::Perform(const TopoDS_Shape& From,
Standard_Boolean trc = BRepFeat_GettraceFEAT();
if (trc) cout << "BRepFeat_MakePrism::Perform(From,Until)" << endl;
#endif
TopExp::MapShapes(From, myProtectedFromModificationShapes);
TopExp::MapShapes(Until, myProtectedFromModificationShapes);
//
if (From.IsNull() || Until.IsNull()) {
Standard_ConstructionError::Raise();
}
@@ -785,6 +799,8 @@ void BRepFeat_MakePrism::PerformFromEnd(const TopoDS_Shape& Until)
Standard_Boolean trc = BRepFeat_GettraceFEAT();
if (trc) cout << "BRepFeat_MakePrism::PerformFromEnd(From,Until)" << endl;
#endif
TopExp::MapShapes(Until, myProtectedFromModificationShapes);
//
if (Until.IsNull()) {
Standard_ConstructionError::Raise();
}
@@ -988,6 +1004,8 @@ void BRepFeat_MakePrism::PerformUntilHeight(const TopoDS_Shape& Until,
Standard_Boolean trc = BRepFeat_GettraceFEAT();
if (trc) cout << "BRepFeat_MakePrism::PerformUntilHeight(Until,Length)" << endl;
#endif
TopExp::MapShapes(Until, myProtectedFromModificationShapes);
//
if (Until.IsNull()) {
Perform(Length);
}
@@ -1432,8 +1450,12 @@ Standard_Boolean ToFuse(const TopoDS_Face& F1,
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,
SecHArray1 from ChFiDS,
HBuilder from TopOpeBRepBuild,
ShapeModification from BRepBuilderAPI
ShapeModification from BRepBuilderAPI,
IndexedMapOfShape from TopTools
@@ -379,6 +380,10 @@ is
returns Boolean
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
-------------------------------
@@ -396,6 +401,7 @@ fields
myBuilder : ChBuilder from ChFi3d;
myMap : MapOfShape from TopTools;
myProtectedFromModificationShapes : IndexedMapOfShape from TopTools;
end MakeChamfer;

View File

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

View File

@@ -47,7 +47,8 @@ uses
FilletShape from ChFi3d,
HBuilder from TopOpeBRepBuild,
MapOfShape from TopTools,
ShapeModification from BRepBuilderAPI
ShapeModification from BRepBuilderAPI,
IndexedMapOfShape from TopTools
raises
NotDone from StdFail ,
@@ -450,6 +451,10 @@ is
returns Boolean
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 --
-------------------------------------------
@@ -538,5 +543,6 @@ fields
myBuilder : FilBuilder from ChFi3d;
myMap : MapOfShape from TopTools;
myProtectedFromModificationShapes : IndexedMapOfShape from TopTools;
end MakeFillet;

View File

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

View File

@@ -24,7 +24,9 @@
#include <BRepGProp_VinertGK.hxx>
#include <BRepGProp_Face.hxx>
#include <BRepGProp_Domain.hxx>
#include <GProp_PGProps.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Vertex.hxx>
#include <BRepAdaptor_Curve.hxx>
#include <TopTools.hxx>
@@ -32,6 +34,8 @@
#include <TopTools_ListOfShape.hxx>
#include <BRepCheck_Shell.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <BRep_TEdge.hxx>
#include <BRep_TVertex.hxx>
#ifdef DEB
static Standard_Integer AffichEps = 0;
#endif
@@ -55,9 +59,15 @@ void BRepGProp::LinearProperties(const TopoDS_Shape& S, GProp_GProps& SProps){
// Standard_Integer n,i;
TopExp_Explorer ex;
for (ex.Init(S,TopAbs_EDGE); ex.More(); ex.Next()) {
BAC.Initialize(TopoDS::Edge(ex.Current()));
BRepGProp_Cinert CG(BAC,P);
SProps.Add(CG);
TopoDS_Edge anES = TopoDS::Edge(ex.Current());
Handle_BRep_TEdge & anEG = (Handle_BRep_TEdge &)anES.TShape();
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 <Approx_CurvilinearParameter.hxx>
#include <Geom_BSplineSurface.hxx>
#include <BRepLib_ToleranceRule.hxx>
// TODO - not thread-safe static variables
@@ -1308,159 +1309,12 @@ void BRepLib::SameParameter(const TopoDS_Edge& AnEdge,
//=======================================================================
//function : UpdateTolerances
//purpose :
//purpose :
//=======================================================================
void BRepLib::UpdateTolerances(const TopoDS_Shape& aShape,
const Standard_Boolean verifyTolerance)
void BRepLib::UpdateTolerances(const TopoDS_Shape & theS,
const Standard_Boolean 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);
}
}
BRepLib_ToleranceRule::SetProperTolerances(theS, theMinimizeTolerances);
}
//=======================================================================

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_ToleranceRule.hxx
BRepLib_ToleranceRule.lxx
BRepLib_ToleranceRule.cxx

View File

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

View File

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

View File

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

View File

@@ -22,9 +22,11 @@
#include <BRepOffsetAPI_MakePipeShell.ixx>
#include <BRepLib_ToleranceRule.hxx>
#include <GeomFill_PipeError.hxx>
#include <Standard_NotImplemented.hxx>
#include <StdFail_NotDone.hxx>
#include <TopExp.hxx>
//=======================================================================
//function :
@@ -95,6 +97,7 @@ BRepOffsetAPI_MakePipeShell::BRepOffsetAPI_MakePipeShell(const TopoDS_Wire& Spin
const Standard_Boolean WithContact,
const Standard_Boolean WithCorrection)
{
TopExp::MapShapes(Profile, myProtectedFromModificationShapes);
myPipe->Add(Profile, WithContact, WithCorrection);
}
@@ -107,6 +110,7 @@ BRepOffsetAPI_MakePipeShell::BRepOffsetAPI_MakePipeShell(const TopoDS_Wire& Spin
const Standard_Boolean WithContact,
const Standard_Boolean WithCorrection)
{
TopExp::MapShapes(Profile, myProtectedFromModificationShapes);
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 WithCorrection)
{
TopExp::MapShapes(Profile, myProtectedFromModificationShapes);
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 WithCorrection)
{
TopExp::MapShapes(Profile, myProtectedFromModificationShapes);
myPipe->SetLaw(Profile, L, Location, WithContact, WithCorrection);
}
@@ -225,6 +231,7 @@ void BRepOffsetAPI_MakePipeShell::Delete( const TopoDS_Shape& Profile)
Ok = myPipe->Build();
if (Ok) {
myShape = myPipe->Shape();
BRepLib_ToleranceRule::SetProperTolerances(myShape, *this);
Done();
}
else NotDone();
@@ -272,3 +279,12 @@ BRepOffsetAPI_MakePipeShell::Generated(const TopoDS_Shape& S)
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 <BRepLib_ToleranceRule.hxx>
BRepOffsetAPI_NormalProjection::BRepOffsetAPI_NormalProjection()
{
@@ -64,6 +65,7 @@ BRepOffsetAPI_NormalProjection::BRepOffsetAPI_NormalProjection()
{
myNormalProjector.Build();
myShape = myNormalProjector.Projection();
BRepLib_ToleranceRule::SetProperTolerances(myShape);
Done();
}

View File

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

View File

@@ -49,10 +49,14 @@ is
Init (me: mutable; shape: Shape from TopoDS);
---Purpose: Initislises by shape.
Perform (me : mutable;
Perform (me : mutable;
theProgress : ProgressIndicator from Message = 0) returns Boolean;
---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;
shape : Shape from TopoDS;
enforce : Boolean;

View File

@@ -33,6 +33,7 @@
#include <TopAbs_ShapeEnum.hxx>
#include <BRepTools.hxx>
#include <BRep_Builder.hxx>
#include <BRepLib_ToleranceRule.hxx>
#include <ShapeFix.hxx>
#include <ShapeBuild_ReShape.hxx>
@@ -99,7 +100,19 @@ void ShapeFix_Shape::Init(const TopoDS_Shape& shape)
//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;
@@ -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() )
{
myShape = anIter.Value();
if ( Perform(theProgress) )
if ( PerformR(theProgress) )
status = Standard_True;
}
if ( !aPSentry.More() )

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -3,7 +3,7 @@
## Test : K7
## Comment : from cts21020
## ====================================
puts "TODO OCC22817 All:Faulty shapes in variables faulty_1 to faulty_14"
puts "TODO OCC22817 All:Faulty shapes in variables faulty_1 to faulty_"
restore [locate_data_file CFI_cts21020.rle] a
explode a e

View File

@@ -3,7 +3,7 @@
## Test : K9
## Comment : from pro13892
## ====================================
puts "TODO OCC22817 All:Faulty shapes in variables faulty_1 to faulty_8"
puts "TODO OCC22817 All:Faulty shapes in variables faulty_1 to faulty_"
restore [locate_data_file CFI_pro13892.rle] a
explode a e

View File

@@ -1,6 +1,7 @@
if { [isdraw result] } {
#check if result is valid
updatetolerance result
puts "checkshape"
set ch [checkshape result]
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 "OCC309"

View File

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

View File

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

View File

@@ -1,4 +1,4 @@
puts "TODO OCC12345 ALL: Faulty shapes in variables faulty_1 to faulty_17"
puts "TODO OCC12345 ALL: Faulty shapes in variables faulty_1 to faulty_12"
puts "TODO OCC12345 ALL: Faulty : mistakes are found in checked shape by checkshape command"
puts "TODO OCC12345 ALL: Error : The square of result shape is"
@@ -8,8 +8,10 @@ puts "BUC60462"
puts "=========="
restore [locate_data_file buc60462c.brep] a
updatetolerance a
checkshape a
restore [locate_data_file buc60462d.brep] b
updatetolerance b
checkshape b
puts "Fuse begin"
bfuse result a b

View File

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

View File

@@ -1,4 +1,5 @@
puts "TODO OCC11111 ALL: Error : Result shape is WRONG"
puts "TODO ?OCC11111 ALL: Faulty shapes in variables faulty_1 to faulty_"
puts "============"
puts "OCC10232"

View File

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

View File

@@ -5,6 +5,7 @@ puts ""
# Exception in command 'section'
restore [locate_data_file OCC1255.brep] a
updatetolerance a
checkshape a
plane p1 0 -36.8067 0 0 1 0

View File

@@ -8,6 +8,7 @@ puts ""
###############################################
restore [locate_data_file OCC1255.brep] a
updatetolerance a
checkshape a
plane p1 0 -36.8067 0 0 1 0

View File

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

View File

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

View File

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

View File

@@ -7,6 +7,7 @@ puts "========"
puts ""
restore [locate_data_file mds-part1.rle] a
updatetolerance a
set che [checkshape a]
if { [regexp {Faulty} $che ] == 1 } {
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
updatetolerance c
set che [checkshape c]
if { [regexp {Faulty} $che ] == 1 } {
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
updatetolerance d
set che [checkshape d]
if { [regexp {Faulty} $che ] == 1 } {
puts "Faulty OCC452 (shape 4): Source shape is invalid. It was detected by Checkshape command"

View File

@@ -7,6 +7,7 @@ puts "========"
puts ""
restore [locate_data_file CTO900_ger60239a.rle] a
updatetolerance a
set che [checkshape a]
if { [regexp {Faulty} $che ] == 1 } {
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
updatetolerance b
set che [checkshape b]
if { [regexp {Faulty} $che ] == 1 } {
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-f2.brep] f2
updatetolerance f2
decho off
set che_1 [checkshape f1]

View File

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

View File

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

View File

@@ -9,6 +9,7 @@ puts ""
pload QAcommands
restore [locate_data_file OCC625.brep] a
updatetolerance a
checkshape a
vinit

View File

@@ -9,6 +9,7 @@ puts ""
set BugNumber OCC6272
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

View File

@@ -9,6 +9,7 @@ puts ""
set BugNumber OCC6272
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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -9,6 +9,7 @@ puts "case 2"
###############################
restore [locate_data_file BUC60861_gap1.brep] ss
updatetolerance ss
checkshape ss
plane pl1 25680.2288 21428 9995 1 0 0

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -13,7 +13,7 @@ if { [string compare $command chamf] == 0 } {
set os $env(os_type)
}
if {[string compare $group dist_angle] == 0} {
puts "TODO OCC22909 ${os}:Faulty shapes in variables faulty_1 to faulty_8"
puts "TODO ?OCC22909 ${os}:Faulty shapes in variables faulty_1 to faulty_"
}
if {[string compare $group equal_dist] == 0} {
puts "TODO OCC22909 ${os}:Faulty shapes in variables faulty_1 to faulty_4"

View File

@@ -13,6 +13,6 @@ if { [string compare $command chamf] == 0 } {
set os $env(os_type)
}
if {[string compare $group dist_angle] == 0} {
puts "TODO OCC22909 All:Faulty shapes in variables faulty_1 to faulty_12"
puts "TODO OCC22909 All:Faulty shapes in variables faulty_1 to faulty_"
}
}

View File

@@ -11,7 +11,7 @@ if { [string compare $command chamf] == 0 } {
set os $env(os_type)
}
if {[string compare $group dist_angle] == 0} {
puts "TODO OCC22909 All:Faulty shapes in variables faulty_1 to faulty_8"
puts "TODO ?OCC22909 All:Faulty shapes in variables faulty_1 to faulty_"
} else {
puts "TODO OCC22909 ${os}:Faulty shapes in variables faulty_1 to faulty_4"
}

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 "]
dset SCALE 100
if { [string compare $command chamf_sequence] == 0 } {
puts "TODO #22909 ALL: Error: The tests should be reviewed"
puts "Error: The tests should be reviewed."
#puts "TODO #22909 ALL: 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"
if {[array get env os_type] != ""} {
set os $env(os_type)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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