mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
a3b6406c88 | ||
|
ac3797065c | ||
|
2714f5dd39 | ||
|
d270c8d398 | ||
|
6121dafd1f | ||
|
c201bec884 |
@@ -325,6 +325,7 @@ const TopTools_ListOfShape& BRepAlgoAPI_BooleanOperation::Modified(const TopoDS_
|
|||||||
myErrorStatus=0;
|
myErrorStatus=0;
|
||||||
myBuilderCanWork=Standard_True;
|
myBuilderCanWork=Standard_True;
|
||||||
myShape=myBuilder->Result();
|
myShape=myBuilder->Result();
|
||||||
|
EnsureToleranceRule(myShape);
|
||||||
Done();
|
Done();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -400,6 +401,7 @@ const TopTools_ListOfShape& BRepAlgoAPI_BooleanOperation::Modified(const TopoDS_
|
|||||||
myErrorStatus=0;
|
myErrorStatus=0;
|
||||||
myBuilderCanWork=Standard_True;
|
myBuilderCanWork=Standard_True;
|
||||||
myShape=myBuilder->Result();
|
myShape=myBuilder->Result();
|
||||||
|
EnsureToleranceRule(myShape);
|
||||||
Done();
|
Done();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@@ -92,6 +92,11 @@ is
|
|||||||
is virtual;
|
is virtual;
|
||||||
---Purpose: Returns true if the shape S has been deleted.
|
---Purpose: Returns true if the shape S has been deleted.
|
||||||
|
|
||||||
|
EnsureToleranceRule (myclass; theS : Shape from TopoDS);
|
||||||
|
---Purpose: Fixes all tolerances of shape theS 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.
|
||||||
|
|
||||||
fields
|
fields
|
||||||
|
|
||||||
|
@@ -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>
|
||||||
@@ -116,4 +120,63 @@ Standard_Boolean BRepBuilderAPI_MakeShape::IsDeleted (const TopoDS_Shape& S)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : EnsureToleranceRule
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
void BRepBuilderAPI_MakeShape::EnsureToleranceRule(const TopoDS_Shape & theS)
|
||||||
|
{
|
||||||
|
if (theS.IsNull())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
for (TopExp_Explorer aFE(theS, TopAbs_FACE); aFE.More(); aFE.Next())
|
||||||
|
{
|
||||||
|
TopoDS_Face aF = TopoDS::Face(aFE.Current());
|
||||||
|
Standard_Real aFT = ((Handle_BRep_TFace &)aF.TShape())->Tolerance();
|
||||||
|
//
|
||||||
|
for (TopExp_Explorer anEE(aF, TopAbs_EDGE); anEE.More(); anEE.Next())
|
||||||
|
{
|
||||||
|
TopoDS_Edge anES = TopoDS::Edge(anEE.Current());
|
||||||
|
Handle_BRep_TEdge & anEG = (Handle_BRep_TEdge &)anES.TShape();
|
||||||
|
Standard_Real anET = anEG->Tolerance();
|
||||||
|
if (anET < aFT)
|
||||||
|
{
|
||||||
|
anET = aFT;
|
||||||
|
anEG->Tolerance(anET);
|
||||||
|
}
|
||||||
|
for (TopExp_Explorer aVE(anES, TopAbs_VERTEX); aVE.More(); aVE.Next())
|
||||||
|
{
|
||||||
|
TopoDS_Vertex aVS = TopoDS::Vertex(aVE.Current());
|
||||||
|
Handle_BRep_TVertex & aVG = (Handle_BRep_TVertex &)aVS.TShape();
|
||||||
|
aVG->UpdateTolerance(anET);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//
|
||||||
|
for (TopExp_Explorer aVE(aF, TopAbs_VERTEX, TopAbs_EDGE);
|
||||||
|
aVE.More(); aVE.Next())
|
||||||
|
{
|
||||||
|
TopoDS_Vertex aVS = TopoDS::Vertex(aVE.Current());
|
||||||
|
Handle_BRep_TVertex & aVG = (Handle_BRep_TVertex &)aVS.TShape();
|
||||||
|
aVG->UpdateTolerance(aFT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//
|
||||||
|
for (TopExp_Explorer anEE(theS, TopAbs_EDGE, TopAbs_FACE);
|
||||||
|
anEE.More(); anEE.Next())
|
||||||
|
{
|
||||||
|
TopoDS_Edge anES = TopoDS::Edge(anEE.Current());
|
||||||
|
Handle_BRep_TEdge & anEG = (Handle_BRep_TEdge &)anES.TShape();
|
||||||
|
Standard_Real anET = anEG->Tolerance();
|
||||||
|
for (TopExp_Explorer aVE(anES, TopAbs_VERTEX); aVE.More(); aVE.Next())
|
||||||
|
{
|
||||||
|
TopoDS_Vertex aVS = TopoDS::Vertex(aVE.Current());
|
||||||
|
Handle_BRep_TVertex & aVG = (Handle_BRep_TVertex &)aVS.TShape();
|
||||||
|
aVG->UpdateTolerance(anET);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -127,6 +127,7 @@
|
|||||||
#include <BRepBuilderAPI_VertexInspector.hxx>
|
#include <BRepBuilderAPI_VertexInspector.hxx>
|
||||||
#include <BRepBuilderAPI_CellFilter.hxx>
|
#include <BRepBuilderAPI_CellFilter.hxx>
|
||||||
#include <BRepBuilderAPI_BndBoxTreeSelector.hxx>
|
#include <BRepBuilderAPI_BndBoxTreeSelector.hxx>
|
||||||
|
#include <BRepBuilderAPI_MakeShape.hxx>
|
||||||
#include <NCollection_UBTreeFiller.hxx>
|
#include <NCollection_UBTreeFiller.hxx>
|
||||||
|
|
||||||
static void SortBox (const Handle(Bnd_HArray1OfBox) hSetBoxes,
|
static void SortBox (const Handle(Bnd_HArray1OfBox) hSetBoxes,
|
||||||
@@ -1909,6 +1910,7 @@ void BRepBuilderAPI_Sewing::Perform(const Handle(Message_ProgressIndicator)& the
|
|||||||
mySewedShape.Nullify();
|
mySewedShape.Nullify();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
BRepBuilderAPI_MakeShape::EnsureToleranceRule(mySewedShape);
|
||||||
}
|
}
|
||||||
#if DEB
|
#if DEB
|
||||||
chr_total.Stop();
|
chr_total.Stop();
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -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();
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -463,6 +463,7 @@ void BRepFeat_MakePrism::Perform(const TopoDS_Shape& Until)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
EnsureToleranceRule(myShape);
|
||||||
/* // loop of control of descendance
|
/* // loop of control of descendance
|
||||||
|
|
||||||
TopExp_Explorer expr(mySbase, TopAbs_FACE);
|
TopExp_Explorer expr(mySbase, TopAbs_FACE);
|
||||||
|
@@ -391,6 +391,7 @@ void BRepFilletAPI_MakeChamfer::Build()
|
|||||||
if (myBuilder.IsDone()){
|
if (myBuilder.IsDone()){
|
||||||
Done();
|
Done();
|
||||||
myShape = myBuilder.Shape();
|
myShape = myBuilder.Shape();
|
||||||
|
EnsureToleranceRule(myShape);
|
||||||
|
|
||||||
//creation of the Map.
|
//creation of the Map.
|
||||||
TopExp_Explorer ex;
|
TopExp_Explorer ex;
|
||||||
|
@@ -532,6 +532,7 @@ void BRepFilletAPI_MakeFillet::Build()
|
|||||||
if(myBuilder.IsDone()) {
|
if(myBuilder.IsDone()) {
|
||||||
Done();
|
Done();
|
||||||
myShape = myBuilder.Shape();
|
myShape = myBuilder.Shape();
|
||||||
|
EnsureToleranceRule(myShape);
|
||||||
|
|
||||||
// creation of the Map.
|
// creation of the Map.
|
||||||
TopExp_Explorer ex;
|
TopExp_Explorer ex;
|
||||||
|
@@ -32,6 +32,7 @@
|
|||||||
#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>
|
||||||
#ifdef DEB
|
#ifdef DEB
|
||||||
static Standard_Integer AffichEps = 0;
|
static Standard_Integer AffichEps = 0;
|
||||||
#endif
|
#endif
|
||||||
@@ -55,9 +56,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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -59,6 +59,7 @@ const BRepFill_Pipe& BRepOffsetAPI_MakePipe::Pipe() const
|
|||||||
void BRepOffsetAPI_MakePipe::Build()
|
void BRepOffsetAPI_MakePipe::Build()
|
||||||
{
|
{
|
||||||
myShape = myPipe.Shape();
|
myShape = myPipe.Shape();
|
||||||
|
BRepBuilderAPI_MakeShape::EnsureToleranceRule(myShape);
|
||||||
Done();
|
Done();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -225,6 +225,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();
|
||||||
|
EnsureToleranceRule(myShape);
|
||||||
Done();
|
Done();
|
||||||
}
|
}
|
||||||
else NotDone();
|
else NotDone();
|
||||||
|
@@ -64,6 +64,7 @@ BRepOffsetAPI_NormalProjection::BRepOffsetAPI_NormalProjection()
|
|||||||
{
|
{
|
||||||
myNormalProjector.Build();
|
myNormalProjector.Build();
|
||||||
myShape = myNormalProjector.Projection();
|
myShape = myNormalProjector.Projection();
|
||||||
|
BRepBuilderAPI_MakeShape::EnsureToleranceRule(myShape);
|
||||||
Done();
|
Done();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -800,6 +800,27 @@ static Standard_Integer scalexyz(Draw_Interpretor& di, Standard_Integer n, const
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Standard_Integer EnsureTolRule(
|
||||||
|
Draw_Interpretor & theDI, Standard_Integer theC, const char ** theAs)
|
||||||
|
{
|
||||||
|
if (theC != 3)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
TopoDS_Shape aS = DBRep::Get(theAs[2]);
|
||||||
|
if (aS.IsNull())
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
TopoDS_Shape aRes = BRepBuilderAPI_Copy(aS);
|
||||||
|
BRepBuilderAPI_MakeShape::EnsureToleranceRule(aRes);
|
||||||
|
//
|
||||||
|
DBRep::Set(theAs[1], aRes);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void BRepTest::BasicCommands(Draw_Interpretor& theCommands)
|
void BRepTest::BasicCommands(Draw_Interpretor& theCommands)
|
||||||
{
|
{
|
||||||
static Standard_Boolean done = Standard_False;
|
static Standard_Boolean done = Standard_False;
|
||||||
@@ -931,4 +952,6 @@ void BRepTest::BasicCommands(Draw_Interpretor& theCommands)
|
|||||||
"scalexyz res shape factor_x factor_y factor_z",
|
"scalexyz res shape factor_x factor_y factor_z",
|
||||||
__FILE__,
|
__FILE__,
|
||||||
scalexyz, g);
|
scalexyz, g);
|
||||||
|
|
||||||
|
theCommands.Add("EnsureTolRule", "res shape", __FILE__, EnsureTolRule, g);
|
||||||
}
|
}
|
||||||
|
@@ -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";
|
||||||
|
|
||||||
|
@@ -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",
|
||||||
|
@@ -51,6 +51,8 @@
|
|||||||
#include <BRepGProp.hxx>
|
#include <BRepGProp.hxx>
|
||||||
#include <TColStd_Array1OfReal.hxx>
|
#include <TColStd_Array1OfReal.hxx>
|
||||||
#include <Draw_ProgressIndicator.hxx>
|
#include <Draw_ProgressIndicator.hxx>
|
||||||
|
#include <BRep_TEdge.hxx>
|
||||||
|
#include <GProp_PGProps.hxx>
|
||||||
|
|
||||||
// memory management
|
// memory management
|
||||||
#include <Standard.hxx>
|
#include <Standard.hxx>
|
||||||
@@ -618,7 +620,6 @@ static Standard_Integer nexplode(Draw_Interpretor& di,
|
|||||||
|
|
||||||
TColStd_Array1OfInteger OrderInd(1,MaxShapes);
|
TColStd_Array1OfInteger OrderInd(1,MaxShapes);
|
||||||
// gp_Pnt GPoint;
|
// gp_Pnt GPoint;
|
||||||
GProp_GProps GPr;
|
|
||||||
// Standard_Integer InOfminX = 1,aTemp;
|
// Standard_Integer InOfminX = 1,aTemp;
|
||||||
Standard_Integer aTemp;
|
Standard_Integer aTemp;
|
||||||
TColStd_Array1OfReal MidXYZ(1,MaxShapes); //X,Y,Z;
|
TColStd_Array1OfReal MidXYZ(1,MaxShapes); //X,Y,Z;
|
||||||
@@ -627,8 +628,31 @@ static Standard_Integer nexplode(Draw_Interpretor& di,
|
|||||||
// Computing of CentreOfMass
|
// Computing of CentreOfMass
|
||||||
for (Index=1; Index <= MaxShapes; Index++) {
|
for (Index=1; Index <= MaxShapes; Index++) {
|
||||||
OrderInd.SetValue(Index,Index);
|
OrderInd.SetValue(Index,Index);
|
||||||
BRepGProp::LinearProperties(aShapes(Index),GPr);
|
const TopoDS_Shape & aS = aShapes(Index);
|
||||||
gp_Pnt GPoint = GPr.CentreOfMass();
|
gp_Pnt GPoint;
|
||||||
|
TopoDS_Edge anES;
|
||||||
|
Handle_BRep_TEdge anEG;
|
||||||
|
if (typ != TopAbs_EDGE || (anES = TopoDS::Edge(aS),
|
||||||
|
anEG = (Handle_BRep_TEdge &)anES.TShape(), !anEG->Degenerated()))
|
||||||
|
{
|
||||||
|
GProp_GProps GPr;
|
||||||
|
BRepGProp::LinearProperties(aS,GPr);
|
||||||
|
GPoint = GPr.CentreOfMass();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GProp_PGProps aPD;
|
||||||
|
for (TopExp_Explorer aVE(anES, TopAbs_VERTEX); aVE.More(); aVE.Next())
|
||||||
|
{
|
||||||
|
TopoDS_Vertex aVS = TopoDS::Vertex(aVE.Current());
|
||||||
|
Handle_BRep_TVertex & aVG = (Handle_BRep_TVertex &)aVS.TShape();
|
||||||
|
gp_Pnt aP = aVG->Pnt();
|
||||||
|
aP.Transform(anES.Location());
|
||||||
|
aP.Transform(aS.Location());
|
||||||
|
aPD.AddPoint(aP);
|
||||||
|
}
|
||||||
|
GPoint = aPD.CentreOfMass();
|
||||||
|
}
|
||||||
MidXYZ.SetValue(Index, GPoint.X()*999 + GPoint.Y()*99 +
|
MidXYZ.SetValue(Index, GPoint.X()*999 + GPoint.Y()*99 +
|
||||||
GPoint.Z()*0.9);
|
GPoint.Z()*0.9);
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
|
@@ -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;
|
||||||
|
@@ -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 <BRepBuilderAPI_MakeShape.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);
|
||||||
|
BRepBuilderAPI_MakeShape::EnsureToleranceRule(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() )
|
||||||
|
@@ -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 <BRepBuilderAPI_MakeShape.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 );
|
||||||
|
BRepBuilderAPI_MakeShape::EnsureToleranceRule(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 );
|
||||||
|
BRepBuilderAPI_MakeShape::EnsureToleranceRule(myResult);
|
||||||
return ! myResult.IsSame ( myShape );
|
return ! myResult.IsSame ( myShape );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user