mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-04-08 18:40:55 +03:00
0025520: To provide info on what has been done by Shape Process and Shape Fix
Messages are registered in ShapeExtend_MsgRegistrator added to ShapeCutom and ShapeUpgrade packages All operators of ShapeProcess_OperLibrary are instrumented with MsgRegistrator 0025520: To provide info on what has been done by Shape Process and Shape Fix Update SHAPE.fr Fix some messages (minor change)
This commit is contained in:
parent
e275de58af
commit
da2db6a705
@ -31,7 +31,14 @@ Sequence d'operateurs: %s
|
|||||||
.Sequence.MSG5
|
.Sequence.MSG5
|
||||||
Operateur %d/%d: %s
|
Operateur %d/%d: %s
|
||||||
!
|
!
|
||||||
.Sequence.MSG
|
.Sequence.MSG1
|
||||||
|
Error: Operator %s is not found
|
||||||
|
!
|
||||||
|
.Sequence.MSG2
|
||||||
|
Error: Operator %s failed with exception %s
|
||||||
|
!
|
||||||
|
.Sequence.MSG3
|
||||||
|
Warning: Shape Processing: sequence not defined for %s
|
||||||
!
|
!
|
||||||
! ------------------------------------------------------------------------------
|
! ------------------------------------------------------------------------------
|
||||||
! Messages for printing results of shape processing
|
! Messages for printing results of shape processing
|
||||||
@ -76,6 +83,9 @@ Detection d'Arete(s) degeneree(s)
|
|||||||
.FixWire.FixDegenerated.MSG5
|
.FixWire.FixDegenerated.MSG5
|
||||||
L'Arete n0 %d est degeneree
|
L'Arete n0 %d est degeneree
|
||||||
!
|
!
|
||||||
|
.FixWire.FixCurve3d.Removed
|
||||||
|
Incomplete edge (with no pcurves or 3d curve) removed
|
||||||
|
!
|
||||||
.FixAdvWire.FixSmall.MSG0
|
.FixAdvWire.FixSmall.MSG0
|
||||||
Petite(s) arete(s) supprimee(s)
|
Petite(s) arete(s) supprimee(s)
|
||||||
!
|
!
|
||||||
@ -121,6 +131,26 @@ Contour sur face inverse
|
|||||||
.FixAdvFace.FixOrientation.MSG11
|
.FixAdvFace.FixOrientation.MSG11
|
||||||
Impossible d'orienter le contour
|
Impossible d'orienter le contour
|
||||||
!
|
!
|
||||||
|
! ------------------------------------------------------------------------------
|
||||||
|
! Messages for ShapeFix_Wireframe
|
||||||
|
!
|
||||||
|
.FixWireframe.FixSmallEdges.MSG0
|
||||||
|
Small edge removed
|
||||||
|
!
|
||||||
|
.FixWireframe.FixSmallEdges.MSG1
|
||||||
|
Small wire removed
|
||||||
|
!
|
||||||
|
.FixWireframe.FixSmallEdges.MSG2
|
||||||
|
Small face removed
|
||||||
|
!
|
||||||
|
.FixWireframe.FixFixWireGaps.MSG0
|
||||||
|
Gaps in a wire fixed
|
||||||
|
!
|
||||||
|
!
|
||||||
|
.Fix.SplitCommonVertex.MSG0
|
||||||
|
Wires with common vertex fixed
|
||||||
|
!
|
||||||
|
!
|
||||||
.FixAdvShell.FixOrientation.MSG20
|
.FixAdvShell.FixOrientation.MSG20
|
||||||
Impossible d'orienter les faces dans le shell, creation de plusieurs shells
|
Impossible d'orienter les faces dans le shell, creation de plusieurs shells
|
||||||
!
|
!
|
||||||
@ -136,12 +166,25 @@ L'Orientation du/des shell(s) dans le solida ete corrigee
|
|||||||
.FixAdvSolid.FixOrientation.MSG30
|
.FixAdvSolid.FixOrientation.MSG30
|
||||||
Solide avec connexions incorrectes, divise en plusieurs parties
|
Solide avec connexions incorrectes, divise en plusieurs parties
|
||||||
!
|
!
|
||||||
.FixAdvFace..MSG0
|
.FixAdvFace.FixLoopWire.MSG0
|
||||||
|
Wire was splitted on several wires
|
||||||
!
|
!
|
||||||
.FixAdvFace..MSG5
|
.FixAdvFace..MSG5
|
||||||
!
|
!
|
||||||
.FixAdvFace..MSG10
|
.FixAdvFace..MSG10
|
||||||
!
|
!
|
||||||
|
.FixEdge.SameParameter.MSG0
|
||||||
|
Not same parameter edge fixed
|
||||||
|
!
|
||||||
|
! ------------------------------------------------------------------------------
|
||||||
|
! Messages for ShapeFix_FixSmallFace
|
||||||
|
!
|
||||||
|
.FixAdvFace.FixSpotFace.MSG0
|
||||||
|
Spot face removed
|
||||||
|
!
|
||||||
|
.FixAdvFace.FixStripFace.MSG0
|
||||||
|
Strip face removed
|
||||||
|
!
|
||||||
! ------------------------------------------------------------------------------
|
! ------------------------------------------------------------------------------
|
||||||
! Messages for ShapeFix_Shell
|
! Messages for ShapeFix_Shell
|
||||||
!
|
!
|
||||||
@ -151,9 +194,65 @@ Faces mal orientees dans le shell, corrigees
|
|||||||
.FixAdvShell.FixOrientation.MSG5
|
.FixAdvShell.FixOrientation.MSG5
|
||||||
Faces mal orientees dans le shell, non corrigees
|
Faces mal orientees dans le shell, non corrigees
|
||||||
!
|
!
|
||||||
.FixAdvShell..MSG0
|
.FixAdvShell.FixClosedFlag.MSG0
|
||||||
|
Shell has incorrect flag isClosed
|
||||||
!
|
!
|
||||||
.FixAdvShell..MSG5
|
.FixAdvShell..MSG5
|
||||||
!
|
!
|
||||||
.FixAdvShell..MSG10
|
.FixAdvShell..MSG10
|
||||||
!
|
!
|
||||||
|
! ------------------------------------------------------------------------------
|
||||||
|
! Messages for ShapeUpgrade
|
||||||
|
!
|
||||||
|
.ShapeDivide.FaceDivide.MSG0
|
||||||
|
Face divided
|
||||||
|
!
|
||||||
|
.ShapeDivide.WireDivide.MSG0
|
||||||
|
Wire divided
|
||||||
|
!
|
||||||
|
.ShapeDivide.EdgeDivide.MSG0
|
||||||
|
Edge divided
|
||||||
|
!
|
||||||
|
.ShapeDivide.FaceConvertToBezier.MSG0
|
||||||
|
Face converted to Bezier
|
||||||
|
!
|
||||||
|
.ShapeDivide.WireConvertToBezier.MSG0
|
||||||
|
Wire converted to Bezier
|
||||||
|
!
|
||||||
|
.ShapeDivide.EdgeConvertToBezier.MSG0
|
||||||
|
Edge converted to Bezier
|
||||||
|
!
|
||||||
|
! ------------------------------------------------------------------------------
|
||||||
|
! Messages for ShapeCustom
|
||||||
|
!
|
||||||
|
.BSplineRestriction.NewSurface.MSG0
|
||||||
|
Face converted to BSpline
|
||||||
|
!
|
||||||
|
.BSplineRestriction.NewSurface.MSG1
|
||||||
|
BSpline Face re-approximated
|
||||||
|
!
|
||||||
|
.BSplineRestriction.NewCurve.MSG0
|
||||||
|
Edge converted to BSpline
|
||||||
|
!
|
||||||
|
.BSplineRestriction.NewCurve.MSG1
|
||||||
|
BSpline Edge re-approximated
|
||||||
|
!
|
||||||
|
!
|
||||||
|
.ConvertToBSpline.NewSurface.MSG0
|
||||||
|
Face converted to BSpline
|
||||||
|
!
|
||||||
|
.ConvertToBSpline.NewCurve.MSG0
|
||||||
|
Edge converted to BSpline
|
||||||
|
!
|
||||||
|
!
|
||||||
|
.ConvertToRevolution.NewSurface.MSG0
|
||||||
|
Face converted to surface of revolution
|
||||||
|
!
|
||||||
|
!
|
||||||
|
.DirectModification.NewSurface.MSG0
|
||||||
|
Direction of Face of revolution corrected
|
||||||
|
!
|
||||||
|
!
|
||||||
|
.SweptToElementary.NewSurface.MSG0
|
||||||
|
Swept Face converted to elementary
|
||||||
|
!
|
||||||
|
@ -38,8 +38,7 @@ Error: Operator %s is not found
|
|||||||
.Sequence.MSG2
|
.Sequence.MSG2
|
||||||
Error: Operator %s failed with exception %s
|
Error: Operator %s failed with exception %s
|
||||||
!
|
!
|
||||||
.Sequence.MSG2
|
.Sequence.MSG3
|
||||||
Operator %s failed with exception %s
|
|
||||||
Warning: Shape Processing: sequence not defined for %s
|
Warning: Shape Processing: sequence not defined for %s
|
||||||
!
|
!
|
||||||
! ------------------------------------------------------------------------------
|
! ------------------------------------------------------------------------------
|
||||||
@ -84,6 +83,9 @@ Degenerated edge(s) detected
|
|||||||
.FixWire.FixDegenerated.MSG5
|
.FixWire.FixDegenerated.MSG5
|
||||||
Degenerated edge %d detected
|
Degenerated edge %d detected
|
||||||
!
|
!
|
||||||
|
.FixWire.FixCurve3d.Removed
|
||||||
|
Incomplete edge (with no pcurves or 3d curve) removed
|
||||||
|
!
|
||||||
.FixAdvWire.FixSmall.MSG0
|
.FixAdvWire.FixSmall.MSG0
|
||||||
Small edge(s) removed
|
Small edge(s) removed
|
||||||
!
|
!
|
||||||
@ -129,6 +131,26 @@ Wire on face was reversed
|
|||||||
.FixAdvFace.FixOrientation.MSG11
|
.FixAdvFace.FixOrientation.MSG11
|
||||||
Cannot orient wire
|
Cannot orient wire
|
||||||
!
|
!
|
||||||
|
! ------------------------------------------------------------------------------
|
||||||
|
! Messages for ShapeFix_Wireframe
|
||||||
|
!
|
||||||
|
.FixWireframe.FixSmallEdges.MSG0
|
||||||
|
Small edge removed
|
||||||
|
!
|
||||||
|
.FixWireframe.FixSmallEdges.MSG1
|
||||||
|
Small wire removed
|
||||||
|
!
|
||||||
|
.FixWireframe.FixSmallEdges.MSG2
|
||||||
|
Small face removed
|
||||||
|
!
|
||||||
|
.FixWireframe.FixFixWireGaps.MSG0
|
||||||
|
Gaps in a wire fixed
|
||||||
|
!
|
||||||
|
!
|
||||||
|
.Fix.SplitCommonVertex.MSG0
|
||||||
|
Wires with common vertex fixed
|
||||||
|
!
|
||||||
|
!
|
||||||
.FixAdvShell.FixOrientation.MSG20
|
.FixAdvShell.FixOrientation.MSG20
|
||||||
Impossible to orient faces in shell, several shells created
|
Impossible to orient faces in shell, several shells created
|
||||||
!
|
!
|
||||||
@ -151,6 +173,18 @@ Wire was splitted on several wires
|
|||||||
!
|
!
|
||||||
.FixAdvFace..MSG10
|
.FixAdvFace..MSG10
|
||||||
!
|
!
|
||||||
|
.FixEdge.SameParameter.MSG0
|
||||||
|
Not same parameter edge fixed
|
||||||
|
!
|
||||||
|
! ------------------------------------------------------------------------------
|
||||||
|
! Messages for ShapeFix_FixSmallFace
|
||||||
|
!
|
||||||
|
.FixAdvFace.FixSpotFace.MSG0
|
||||||
|
Spot face removed
|
||||||
|
!
|
||||||
|
.FixAdvFace.FixStripFace.MSG0
|
||||||
|
Strip face removed
|
||||||
|
!
|
||||||
! ------------------------------------------------------------------------------
|
! ------------------------------------------------------------------------------
|
||||||
! Messages for ShapeFix_Shell
|
! Messages for ShapeFix_Shell
|
||||||
!
|
!
|
||||||
@ -167,3 +201,58 @@ Shell has incorrect flag isClosed
|
|||||||
!
|
!
|
||||||
.FixAdvShell..MSG10
|
.FixAdvShell..MSG10
|
||||||
!
|
!
|
||||||
|
! ------------------------------------------------------------------------------
|
||||||
|
! Messages for ShapeUpgrade
|
||||||
|
!
|
||||||
|
.ShapeDivide.FaceDivide.MSG0
|
||||||
|
Face divided
|
||||||
|
!
|
||||||
|
.ShapeDivide.WireDivide.MSG0
|
||||||
|
Wire divided
|
||||||
|
!
|
||||||
|
.ShapeDivide.EdgeDivide.MSG0
|
||||||
|
Edge divided
|
||||||
|
!
|
||||||
|
.ShapeDivide.FaceConvertToBezier.MSG0
|
||||||
|
Face converted to Bezier
|
||||||
|
!
|
||||||
|
.ShapeDivide.WireConvertToBezier.MSG0
|
||||||
|
Wire converted to Bezier
|
||||||
|
!
|
||||||
|
.ShapeDivide.EdgeConvertToBezier.MSG0
|
||||||
|
Edge converted to Bezier
|
||||||
|
!
|
||||||
|
! ------------------------------------------------------------------------------
|
||||||
|
! Messages for ShapeCustom
|
||||||
|
!
|
||||||
|
.BSplineRestriction.NewSurface.MSG0
|
||||||
|
Face converted to BSpline
|
||||||
|
!
|
||||||
|
.BSplineRestriction.NewSurface.MSG1
|
||||||
|
BSpline Face re-approximated
|
||||||
|
!
|
||||||
|
.BSplineRestriction.NewCurve.MSG0
|
||||||
|
Edge converted to BSpline
|
||||||
|
!
|
||||||
|
.BSplineRestriction.NewCurve.MSG1
|
||||||
|
BSpline Edge re-approximated
|
||||||
|
!
|
||||||
|
!
|
||||||
|
.ConvertToBSpline.NewSurface.MSG0
|
||||||
|
Face converted to BSpline
|
||||||
|
!
|
||||||
|
.ConvertToBSpline.NewCurve.MSG0
|
||||||
|
Edge converted to BSpline
|
||||||
|
!
|
||||||
|
!
|
||||||
|
.ConvertToRevolution.NewSurface.MSG0
|
||||||
|
Face converted to surface of revolution
|
||||||
|
!
|
||||||
|
!
|
||||||
|
.DirectModification.NewSurface.MSG0
|
||||||
|
Direction of Face of revolution corrected
|
||||||
|
!
|
||||||
|
!
|
||||||
|
.SweptToElementary.NewSurface.MSG0
|
||||||
|
Swept Face converted to elementary
|
||||||
|
!
|
||||||
|
@ -43,7 +43,8 @@ uses
|
|||||||
TColgp,
|
TColgp,
|
||||||
Precision,
|
Precision,
|
||||||
Message,
|
Message,
|
||||||
ShapeBuild
|
ShapeBuild,
|
||||||
|
ShapeExtend
|
||||||
|
|
||||||
is
|
is
|
||||||
|
|
||||||
@ -55,6 +56,7 @@ is
|
|||||||
|
|
||||||
class RestrictionParameters;
|
class RestrictionParameters;
|
||||||
|
|
||||||
|
deferred class Modification; -- base class of modifications
|
||||||
class DirectModification;
|
class DirectModification;
|
||||||
|
|
||||||
private class TrsfModification;
|
private class TrsfModification;
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
-- Alternatively, this file may be used under the terms of Open CASCADE
|
-- Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
-- commercial license or contractual agreement.
|
-- commercial license or contractual agreement.
|
||||||
|
|
||||||
private class BSplineRestriction from ShapeCustom inherits Modification from BRepTools
|
private class BSplineRestriction from ShapeCustom inherits Modification from ShapeCustom
|
||||||
|
|
||||||
---Purpose: this tool intended for aproximation surfaces, curves and pcurves with
|
---Purpose: this tool intended for aproximation surfaces, curves and pcurves with
|
||||||
-- specified degree , max number of segments, tolerance 2d, tolerance 3d. Specified
|
-- specified degree , max number of segments, tolerance 2d, tolerance 3d. Specified
|
||||||
|
@ -70,6 +70,7 @@
|
|||||||
#include <Geom_CylindricalSurface.hxx>
|
#include <Geom_CylindricalSurface.hxx>
|
||||||
#include <Geom_ToroidalSurface.hxx>
|
#include <Geom_ToroidalSurface.hxx>
|
||||||
#include <ShapeAnalysis.hxx>
|
#include <ShapeAnalysis.hxx>
|
||||||
|
#include <Message_Msg.hxx>
|
||||||
|
|
||||||
static GeomAbs_Shape IntegerToGeomAbsShape(const Standard_Integer i)
|
static GeomAbs_Shape IntegerToGeomAbsShape(const Standard_Integer i)
|
||||||
{
|
{
|
||||||
@ -368,6 +369,20 @@ Standard_Boolean ShapeCustom_BSplineRestriction::NewSurface(const TopoDS_Face& F
|
|||||||
|
|
||||||
Standard_Boolean IsConv = ConvertSurface(aSurface,S,UF,UL,VF,VL,IsOf);
|
Standard_Boolean IsConv = ConvertSurface(aSurface,S,UF,UL,VF,VL,IsOf);
|
||||||
Tol = Precision::Confusion();//mySurfaceError;
|
Tol = Precision::Confusion();//mySurfaceError;
|
||||||
|
|
||||||
|
if ( IsConv )
|
||||||
|
{
|
||||||
|
Standard_Boolean wasBSpline = aSurface->IsKind(STANDARD_TYPE(Geom_BSplineSurface));
|
||||||
|
Handle(Geom_RectangularTrimmedSurface) rts = Handle(Geom_RectangularTrimmedSurface)::DownCast(aSurface);
|
||||||
|
if ( !rts.IsNull() )
|
||||||
|
wasBSpline = rts->BasisSurface()->IsKind(STANDARD_TYPE(Geom_BSplineSurface));
|
||||||
|
|
||||||
|
if ( wasBSpline )
|
||||||
|
SendMsg( F, Message_Msg("BSplineRestriction.NewSurface.MSG1"));
|
||||||
|
else
|
||||||
|
SendMsg( F, Message_Msg("BSplineRestriction.NewSurface.MSG0"));
|
||||||
|
}
|
||||||
|
|
||||||
return IsConv;
|
return IsConv;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -796,6 +811,19 @@ Standard_Boolean ShapeCustom_BSplineRestriction::NewCurve(const TopoDS_Edge& E,
|
|||||||
if(myParameters->ConvertOffsetCurv3d()) IsOf = Standard_False;
|
if(myParameters->ConvertOffsetCurv3d()) IsOf = Standard_False;
|
||||||
Standard_Boolean IsConv = ConvertCurve(aCurve,C,IsConvert,First,Last,TolCur,IsOf);
|
Standard_Boolean IsConv = ConvertCurve(aCurve,C,IsConvert,First,Last,TolCur,IsOf);
|
||||||
Tol= BRep_Tool::Tolerance(E);//TolCur;
|
Tol= BRep_Tool::Tolerance(E);//TolCur;
|
||||||
|
|
||||||
|
if ( IsConv )
|
||||||
|
{
|
||||||
|
Standard_Boolean wasBSpline = aCurve->IsKind(STANDARD_TYPE(Geom_BSplineCurve));
|
||||||
|
Handle(Geom_TrimmedCurve) tc = Handle(Geom_TrimmedCurve)::DownCast(aCurve);
|
||||||
|
if ( !tc.IsNull() )
|
||||||
|
wasBSpline = tc->BasisCurve()->IsKind(STANDARD_TYPE(Geom_BSplineCurve));
|
||||||
|
|
||||||
|
if ( wasBSpline )
|
||||||
|
SendMsg( E, Message_Msg("BSplineRestriction.NewCurve.MSG1"));
|
||||||
|
else
|
||||||
|
SendMsg( E, Message_Msg("BSplineRestriction.NewCurve.MSG0"));
|
||||||
|
}
|
||||||
return IsConv;
|
return IsConv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
-- Alternatively, this file may be used under the terms of Open CASCADE
|
-- Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
-- commercial license or contractual agreement.
|
-- commercial license or contractual agreement.
|
||||||
|
|
||||||
private class ConvertToBSpline from ShapeCustom inherits Modification from BRepTools
|
private class ConvertToBSpline from ShapeCustom inherits Modification from ShapeCustom
|
||||||
|
|
||||||
---Purpose: implement a modification for BRepTools
|
---Purpose: implement a modification for BRepTools
|
||||||
-- Modifier algortihm. Converts Surface of
|
-- Modifier algortihm. Converts Surface of
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include <BRep_ListIteratorOfListOfCurveRepresentation.hxx>
|
#include <BRep_ListIteratorOfListOfCurveRepresentation.hxx>
|
||||||
#include <BRep_GCurve.hxx>
|
#include <BRep_GCurve.hxx>
|
||||||
#include <BRepTools.hxx>
|
#include <BRepTools.hxx>
|
||||||
|
#include <Message_Msg.hxx>
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : ShapeCustom_ConvertToBSpline
|
//function : ShapeCustom_ConvertToBSpline
|
||||||
@ -130,6 +131,8 @@ Standard_Boolean ShapeCustom_ConvertToBSpline::NewSurface (const TopoDS_Face& F,
|
|||||||
else
|
else
|
||||||
S = res;
|
S = res;
|
||||||
|
|
||||||
|
SendMsg( F, Message_Msg("ConvertToBSpline.NewSurface.MSG0"));
|
||||||
|
|
||||||
Tol = BRep_Tool::Tolerance(F);
|
Tol = BRep_Tool::Tolerance(F);
|
||||||
RevWires = Standard_False;
|
RevWires = Standard_False;
|
||||||
RevFace = Standard_False;
|
RevFace = Standard_False;
|
||||||
@ -161,6 +164,7 @@ Standard_Boolean ShapeCustom_ConvertToBSpline::NewCurve (const TopoDS_Edge& E,
|
|||||||
C = BRep_Tool::Curve ( E, L, f, l );
|
C = BRep_Tool::Curve ( E, L, f, l );
|
||||||
if ( ! C.IsNull() ) C = Handle(Geom_Curve)::DownCast ( C->Copy() );
|
if ( ! C.IsNull() ) C = Handle(Geom_Curve)::DownCast ( C->Copy() );
|
||||||
Tol = BRep_Tool::Tolerance ( E );
|
Tol = BRep_Tool::Tolerance ( E );
|
||||||
|
SendMsg( E, Message_Msg("ConvertToBSpline.NewCurve.MSG0"));
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
return Standard_False;
|
return Standard_False;
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
-- Alternatively, this file may be used under the terms of Open CASCADE
|
-- Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
-- commercial license or contractual agreement.
|
-- commercial license or contractual agreement.
|
||||||
|
|
||||||
private class ConvertToRevolution from ShapeCustom inherits Modification from BRepTools
|
private class ConvertToRevolution from ShapeCustom inherits Modification from ShapeCustom
|
||||||
|
|
||||||
---Purpose: implements a modification for the BRepTools
|
---Purpose: implements a modification for the BRepTools
|
||||||
-- Modifier algortihm. Converts all elementary
|
-- Modifier algortihm. Converts all elementary
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include <Geom_TrimmedCurve.hxx>
|
#include <Geom_TrimmedCurve.hxx>
|
||||||
#include <Geom_Line.hxx>
|
#include <Geom_Line.hxx>
|
||||||
#include <Geom_SurfaceOfRevolution.hxx>
|
#include <Geom_SurfaceOfRevolution.hxx>
|
||||||
|
#include <Message_Msg.hxx>
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : ShapeCustom_ConvertToRevolution
|
//function : ShapeCustom_ConvertToRevolution
|
||||||
@ -158,6 +159,7 @@ Standard_Boolean ShapeCustom_ConvertToRevolution::NewSurface (const TopoDS_Face&
|
|||||||
}
|
}
|
||||||
else S = Rev;
|
else S = Rev;
|
||||||
}
|
}
|
||||||
|
SendMsg( F, Message_Msg("ConvertToRevolution.NewSurface.MSG0"));
|
||||||
|
|
||||||
Tol = BRep_Tool::Tolerance(F);
|
Tol = BRep_Tool::Tolerance(F);
|
||||||
RevWires = Standard_False;
|
RevWires = Standard_False;
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
-- commercial license or contractual agreement.
|
-- commercial license or contractual agreement.
|
||||||
|
|
||||||
class DirectModification from ShapeCustom
|
class DirectModification from ShapeCustom
|
||||||
inherits Modification from BRepTools
|
inherits Modification from ShapeCustom
|
||||||
|
|
||||||
---Purpose: implements a modification for the BRepTools
|
---Purpose: implements a modification for the BRepTools
|
||||||
-- Modifier algortihm. Will redress indirect
|
-- Modifier algortihm. Will redress indirect
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
#include <BRep_TEdge.hxx>
|
#include <BRep_TEdge.hxx>
|
||||||
#include <BRep_ListIteratorOfListOfCurveRepresentation.hxx>
|
#include <BRep_ListIteratorOfListOfCurveRepresentation.hxx>
|
||||||
#include <BRep_GCurve.hxx>
|
#include <BRep_GCurve.hxx>
|
||||||
|
#include <Message_Msg.hxx>
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : ShapeCustom_DirectModification
|
//function : ShapeCustom_DirectModification
|
||||||
@ -111,6 +112,8 @@ Standard_Boolean ShapeCustom_DirectModification::NewSurface (const TopoDS_Face&
|
|||||||
default: return Standard_False;
|
default: return Standard_False;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SendMsg( F, Message_Msg("DirectModification.NewSurface.MSG0"));
|
||||||
|
|
||||||
Tol = BRep_Tool::Tolerance(F);
|
Tol = BRep_Tool::Tolerance(F);
|
||||||
|
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
|
43
src/ShapeCustom/ShapeCustom_Modification.cdl
Normal file
43
src/ShapeCustom/ShapeCustom_Modification.cdl
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
-- Copyright (c) 2003-2014 OPEN CASCADE SAS
|
||||||
|
--
|
||||||
|
-- This file is part of Open CASCADE Technology software library.
|
||||||
|
--
|
||||||
|
-- This library is free software; you can redistribute it and/or modify it under
|
||||||
|
-- the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
-- by the Free Software Foundation, with special exception defined in the file
|
||||||
|
-- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
-- distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
--
|
||||||
|
-- Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
-- commercial license or contractual agreement.
|
||||||
|
|
||||||
|
deferred class Modification from ShapeCustom inherits Modification from BRepTools
|
||||||
|
|
||||||
|
---Purpose: A base class of Modification's from ShapeCustom.
|
||||||
|
-- Implements message sending mechanism.
|
||||||
|
|
||||||
|
uses
|
||||||
|
Shape from TopoDS,
|
||||||
|
Msg from Message,
|
||||||
|
Gravity from Message,
|
||||||
|
BasicMsgRegistrator from ShapeExtend
|
||||||
|
|
||||||
|
is
|
||||||
|
|
||||||
|
SetMsgRegistrator (me:mutable; msgreg: BasicMsgRegistrator from ShapeExtend) is virtual;
|
||||||
|
---Purpose: Sets message registrator
|
||||||
|
|
||||||
|
MsgRegistrator (me) returns BasicMsgRegistrator from ShapeExtend;
|
||||||
|
---Purpose: Returns message registrator
|
||||||
|
|
||||||
|
SendMsg (me; shape : Shape from TopoDS;
|
||||||
|
message: Msg from Message;
|
||||||
|
gravity: Gravity from Message = Message_Info);
|
||||||
|
---Purpose: Sends a message to be attached to the shape.
|
||||||
|
-- Calls corresponding message of message registrator.
|
||||||
|
|
||||||
|
fields
|
||||||
|
|
||||||
|
myMsgReg: BasicMsgRegistrator from ShapeExtend;
|
||||||
|
|
||||||
|
end SweptToElementary;
|
52
src/ShapeCustom/ShapeCustom_Modification.cxx
Normal file
52
src/ShapeCustom/ShapeCustom_Modification.cxx
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#include <ShapeCustom_Modification.ixx>
|
||||||
|
|
||||||
|
#include <Message_Gravity.hxx>
|
||||||
|
#include <Message_Msg.hxx>
|
||||||
|
#include <ShapeExtend_BasicMsgRegistrator.hxx>
|
||||||
|
#include <TopoDS_Shape.hxx>
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : SetMsgRegistrator
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
void ShapeCustom_Modification::SetMsgRegistrator(const Handle(ShapeExtend_BasicMsgRegistrator)& msgreg)
|
||||||
|
{
|
||||||
|
myMsgReg = msgreg;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : MsgRegistrator
|
||||||
|
//purpose : Returns message registrator
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
Handle(ShapeExtend_BasicMsgRegistrator) ShapeCustom_Modification::MsgRegistrator() const
|
||||||
|
{
|
||||||
|
return myMsgReg;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : SendMsg
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
void ShapeCustom_Modification::SendMsg(const TopoDS_Shape& shape,
|
||||||
|
const Message_Msg& message,
|
||||||
|
const Message_Gravity gravity) const
|
||||||
|
{
|
||||||
|
if ( !myMsgReg.IsNull() )
|
||||||
|
myMsgReg->Send (shape, message, gravity);
|
||||||
|
}
|
@ -13,7 +13,7 @@
|
|||||||
-- Alternatively, this file may be used under the terms of Open CASCADE
|
-- Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
-- commercial license or contractual agreement.
|
-- commercial license or contractual agreement.
|
||||||
|
|
||||||
private class SweptToElementary from ShapeCustom inherits Modification from BRepTools
|
private class SweptToElementary from ShapeCustom inherits Modification from ShapeCustom
|
||||||
|
|
||||||
---Purpose: implements a modification for the BRepTools
|
---Purpose: implements a modification for the BRepTools
|
||||||
-- Modifier algortihm. Converts all elementary
|
-- Modifier algortihm. Converts all elementary
|
||||||
|
@ -43,6 +43,7 @@
|
|||||||
#include <ShapeAnalysis_Surface.hxx>
|
#include <ShapeAnalysis_Surface.hxx>
|
||||||
|
|
||||||
#include <BRepTools.hxx>
|
#include <BRepTools.hxx>
|
||||||
|
#include <Message_Msg.hxx>
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@ -163,6 +164,8 @@ Standard_Boolean ShapeCustom_SweptToElementary::NewSurface(const TopoDS_Face& F,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SendMsg( F, Message_Msg("SweptToElementary.NewSurface.MSG0"));
|
||||||
|
|
||||||
Tol = BRep_Tool::Tolerance(F);
|
Tol = BRep_Tool::Tolerance(F);
|
||||||
RevWires = Standard_False;
|
RevWires = Standard_False;
|
||||||
RevFace = Standard_False;
|
RevFace = Standard_False;
|
||||||
|
@ -100,7 +100,8 @@ is
|
|||||||
SameParameter (shape : Shape from TopoDS;
|
SameParameter (shape : Shape from TopoDS;
|
||||||
enforce : Boolean;
|
enforce : Boolean;
|
||||||
preci : Real = 0.0;
|
preci : Real = 0.0;
|
||||||
theProgress : ProgressIndicator from Message = 0)
|
theProgress : ProgressIndicator from Message = 0;
|
||||||
|
theMsgReg : BasicMsgRegistrator from ShapeExtend = 0)
|
||||||
returns Boolean;
|
returns Boolean;
|
||||||
---Purpose : Runs SameParameter from BRepLib with these adaptations :
|
---Purpose : Runs SameParameter from BRepLib with these adaptations :
|
||||||
-- <enforce> forces computations, else they are made only on
|
-- <enforce> forces computations, else they are made only on
|
||||||
|
@ -69,6 +69,8 @@
|
|||||||
#include <TopExp.hxx>
|
#include <TopExp.hxx>
|
||||||
|
|
||||||
#include <Message_ProgressSentry.hxx>
|
#include <Message_ProgressSentry.hxx>
|
||||||
|
#include <Message_Msg.hxx>
|
||||||
|
#include <ShapeExtend_BasicMsgRegistrator.hxx>
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : SameParameter
|
//function : SameParameter
|
||||||
@ -78,7 +80,8 @@
|
|||||||
Standard_Boolean ShapeFix::SameParameter(const TopoDS_Shape& shape,
|
Standard_Boolean ShapeFix::SameParameter(const TopoDS_Shape& shape,
|
||||||
const Standard_Boolean enforce,
|
const Standard_Boolean enforce,
|
||||||
const Standard_Real preci,
|
const Standard_Real preci,
|
||||||
const Handle(Message_ProgressIndicator)& theProgress)
|
const Handle(Message_ProgressIndicator)& theProgress,
|
||||||
|
const Handle(ShapeExtend_BasicMsgRegistrator)& theMsgReg)
|
||||||
{
|
{
|
||||||
// Calculate number of edges
|
// Calculate number of edges
|
||||||
Standard_Integer aNbEdges = 0;
|
Standard_Integer aNbEdges = 0;
|
||||||
@ -98,6 +101,7 @@ Standard_Boolean ShapeFix::SameParameter(const TopoDS_Shape& shape,
|
|||||||
Standard_Boolean iatol = (tol > 0);
|
Standard_Boolean iatol = (tol > 0);
|
||||||
Handle(ShapeFix_Edge) sfe = new ShapeFix_Edge;
|
Handle(ShapeFix_Edge) sfe = new ShapeFix_Edge;
|
||||||
TopExp_Explorer ex(shape,TopAbs_EDGE);
|
TopExp_Explorer ex(shape,TopAbs_EDGE);
|
||||||
|
Message_Msg doneMsg("FixEdge.SameParameter.MSG0");
|
||||||
|
|
||||||
// Start progress scope (no need to check if progress exists -- it is safe)
|
// Start progress scope (no need to check if progress exists -- it is safe)
|
||||||
Message_ProgressSentry aPSentry(theProgress, "Fixing same parameter problem", 0, 2, 1);
|
Message_ProgressSentry aPSentry(theProgress, "Fixing same parameter problem", 0, 2, 1);
|
||||||
@ -135,6 +139,10 @@ Standard_Boolean ShapeFix::SameParameter(const TopoDS_Shape& shape,
|
|||||||
B.SameRange (E,Standard_False);
|
B.SameRange (E,Standard_False);
|
||||||
B.SameParameter (E,Standard_False);
|
B.SameParameter (E,Standard_False);
|
||||||
}
|
}
|
||||||
|
else if ( !theMsgReg.IsNull() && !sfe->Status( ShapeExtend_OK ) )
|
||||||
|
{
|
||||||
|
theMsgReg->Send( E, doneMsg, Message_Warning );
|
||||||
|
}
|
||||||
|
|
||||||
// Complete step in current progress scope
|
// Complete step in current progress scope
|
||||||
aPSentry.Next();
|
aPSentry.Next();
|
||||||
|
@ -67,6 +67,7 @@
|
|||||||
#include <ShapeAnalysis_DataMapOfShapeListOfReal.hxx>
|
#include <ShapeAnalysis_DataMapOfShapeListOfReal.hxx>
|
||||||
#include <TopoDS_Compound.hxx>
|
#include <TopoDS_Compound.hxx>
|
||||||
#include <TopoDS_Iterator.hxx>
|
#include <TopoDS_Iterator.hxx>
|
||||||
|
#include <Message_Msg.hxx>
|
||||||
|
|
||||||
ShapeFix_FixSmallFace::ShapeFix_FixSmallFace()
|
ShapeFix_FixSmallFace::ShapeFix_FixSmallFace()
|
||||||
{
|
{
|
||||||
@ -218,6 +219,7 @@ ShapeFix_FixSmallFace::ShapeFix_FixSmallFace()
|
|||||||
Context()->Remove(Ed);
|
Context()->Remove(Ed);
|
||||||
}
|
}
|
||||||
Context()->Remove(F);
|
Context()->Remove(F);
|
||||||
|
SendWarning( F, Message_Msg( "FixAdvFace.FixSpotFace.MSG0" ));
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
|
|
||||||
|
|
||||||
@ -335,6 +337,7 @@ ShapeFix_FixSmallFace::ShapeFix_FixSmallFace()
|
|||||||
Standard_Boolean ShapeFix_FixSmallFace::RemoveFacesInCaseOfStrip(const TopoDS_Face& F) const
|
Standard_Boolean ShapeFix_FixSmallFace::RemoveFacesInCaseOfStrip(const TopoDS_Face& F) const
|
||||||
{
|
{
|
||||||
Context()->Remove(F);
|
Context()->Remove(F);
|
||||||
|
SendWarning( F, Message_Msg( "FixAdvFace.FixStripFace.MSG0" ));
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,5 +100,6 @@ void ShapeFix_Root::SetMaxTolerance (const Standard_Real maxtol)
|
|||||||
const Message_Msg& message,
|
const Message_Msg& message,
|
||||||
const Message_Gravity gravity) const
|
const Message_Gravity gravity) const
|
||||||
{
|
{
|
||||||
|
if ( !myMsgReg.IsNull() )
|
||||||
myMsgReg->Send (shape, message, gravity);
|
myMsgReg->Send (shape, message, gravity);
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include <TopoDS_Vertex.hxx>
|
#include <TopoDS_Vertex.hxx>
|
||||||
#include <TopTools_SequenceOfShape.hxx>
|
#include <TopTools_SequenceOfShape.hxx>
|
||||||
#include <TopTools_DataMapOfShapeShape.hxx>
|
#include <TopTools_DataMapOfShapeShape.hxx>
|
||||||
|
#include <Message_Msg.hxx>
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@ -132,6 +133,8 @@ void ShapeFix_SplitCommonVertex::Perform()
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ( !MapVV.IsEmpty() )
|
||||||
|
SendWarning( Message_Msg( "Fix.SplitCommonVertex.MSG0" ));
|
||||||
}
|
}
|
||||||
|
|
||||||
myShape = Context()->Apply(myShape);
|
myShape = Context()->Apply(myShape);
|
||||||
|
@ -53,6 +53,7 @@
|
|||||||
#include <ShapeConstruct.hxx>
|
#include <ShapeConstruct.hxx>
|
||||||
#include <ShapeBuild_Edge.hxx>
|
#include <ShapeBuild_Edge.hxx>
|
||||||
#include <ShapeAnalysis_TransferParametersProj.hxx>
|
#include <ShapeAnalysis_TransferParametersProj.hxx>
|
||||||
|
#include <Message_Msg.hxx>
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : ShapeFix_Wireframe
|
//function : ShapeFix_Wireframe
|
||||||
@ -189,6 +190,8 @@ ShapeFix_Wireframe::ShapeFix_Wireframe(const TopoDS_Shape& shape)
|
|||||||
myStatusWireGaps |= ShapeExtend::EncodeStatus( ShapeExtend_DONE2 );
|
myStatusWireGaps |= ShapeExtend::EncodeStatus( ShapeExtend_DONE2 );
|
||||||
if (sfw->StatusGaps2d(ShapeExtend_FAIL))
|
if (sfw->StatusGaps2d(ShapeExtend_FAIL))
|
||||||
myStatusWireGaps |= ShapeExtend::EncodeStatus( ShapeExtend_FAIL2 );
|
myStatusWireGaps |= ShapeExtend::EncodeStatus( ShapeExtend_FAIL2 );
|
||||||
|
if (sfw->StatusGaps3d(ShapeExtend_DONE) || sfw->StatusGaps2d(ShapeExtend_DONE))
|
||||||
|
SendWarning( itw.Value(), Message_Msg( "FixWireframe.FixFixWireGaps.MSG0" ));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,6 +211,8 @@ ShapeFix_Wireframe::ShapeFix_Wireframe(const TopoDS_Shape& shape)
|
|||||||
myStatusWireGaps |= ShapeExtend::EncodeStatus( ShapeExtend_DONE1 );
|
myStatusWireGaps |= ShapeExtend::EncodeStatus( ShapeExtend_DONE1 );
|
||||||
if (sfw->StatusGaps3d(ShapeExtend_FAIL))
|
if (sfw->StatusGaps3d(ShapeExtend_FAIL))
|
||||||
myStatusWireGaps |= ShapeExtend::EncodeStatus( ShapeExtend_FAIL1 );
|
myStatusWireGaps |= ShapeExtend::EncodeStatus( ShapeExtend_FAIL1 );
|
||||||
|
if (sfw->StatusGaps3d(ShapeExtend_DONE))
|
||||||
|
SendWarning( expw.Current(), Message_Msg( "FixWireframe.FixFixWireGaps.MSG0" ));
|
||||||
}
|
}
|
||||||
//End Part1========================================================
|
//End Part1========================================================
|
||||||
|
|
||||||
@ -874,11 +879,13 @@ Standard_Boolean ShapeFix_Wireframe::MergeSmallEdges(TopTools_MapOfShape& theSma
|
|||||||
{
|
{
|
||||||
Context()->Replace(edge1,edge3);
|
Context()->Replace(edge1,edge3);
|
||||||
Context()->Remove(edge2);
|
Context()->Remove(edge2);
|
||||||
|
SendWarning( edge2, Message_Msg("FixWireframe.FixSmallEdges.MSG0"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Context()->Replace(edge2,edge3);
|
Context()->Replace(edge2,edge3);
|
||||||
Context()->Remove(edge1);
|
Context()->Remove(edge1);
|
||||||
|
SendWarning( edge1, Message_Msg("FixWireframe.FixSmallEdges.MSG0"));
|
||||||
}
|
}
|
||||||
if (take_next)
|
if (take_next)
|
||||||
{
|
{
|
||||||
@ -954,6 +961,7 @@ Standard_Boolean ShapeFix_Wireframe::MergeSmallEdges(TopTools_MapOfShape& theSma
|
|||||||
aTmpShape = Context()->Apply(tmpedge2);
|
aTmpShape = Context()->Apply(tmpedge2);
|
||||||
TopoDS_Edge anewedge2 = TopoDS::Edge(aTmpShape);
|
TopoDS_Edge anewedge2 = TopoDS::Edge(aTmpShape);
|
||||||
Context()->Remove(remedge);
|
Context()->Remove(remedge);
|
||||||
|
SendWarning( remedge, Message_Msg("FixWireframe.FixSmallEdges.MSG0"));
|
||||||
if (theSmallEdges.Contains(remedge))
|
if (theSmallEdges.Contains(remedge))
|
||||||
theSmallEdges.Remove(remedge);
|
theSmallEdges.Remove(remedge);
|
||||||
theEdgeToFaces.UnBind(remedge);
|
theEdgeToFaces.UnBind(remedge);
|
||||||
@ -1037,6 +1045,7 @@ Standard_Boolean ShapeFix_Wireframe::MergeSmallEdges(TopTools_MapOfShape& theSma
|
|||||||
{
|
{
|
||||||
SFW->WireData()->Remove (index );
|
SFW->WireData()->Remove (index );
|
||||||
Context()->Remove(edge1);
|
Context()->Remove(edge1);
|
||||||
|
SendWarning( edge1, Message_Msg("FixWireframe.FixSmallEdges.MSG0"));
|
||||||
if (theSmallEdges.Contains(edge1)) theSmallEdges.Remove(edge1);
|
if (theSmallEdges.Contains(edge1)) theSmallEdges.Remove(edge1);
|
||||||
theEdgeToFaces.UnBind(edge1);
|
theEdgeToFaces.UnBind(edge1);
|
||||||
myStatusSmallEdges |= ShapeExtend::EncodeStatus( ShapeExtend_DONE2 );
|
myStatusSmallEdges |= ShapeExtend::EncodeStatus( ShapeExtend_DONE2 );
|
||||||
@ -1051,6 +1060,7 @@ Standard_Boolean ShapeFix_Wireframe::MergeSmallEdges(TopTools_MapOfShape& theSma
|
|||||||
{
|
{
|
||||||
SFW->WireData()->Remove (index );
|
SFW->WireData()->Remove (index );
|
||||||
Context()->Remove(edge2);
|
Context()->Remove(edge2);
|
||||||
|
SendWarning( edge2, Message_Msg("FixWireframe.FixSmallEdges.MSG0"));
|
||||||
if (theSmallEdges.Contains(edge2)) theSmallEdges.Remove(edge2);
|
if (theSmallEdges.Contains(edge2)) theSmallEdges.Remove(edge2);
|
||||||
theEdgeToFaces.UnBind(edge2);
|
theEdgeToFaces.UnBind(edge2);
|
||||||
myStatusSmallEdges |= ShapeExtend::EncodeStatus( ShapeExtend_DONE2 );
|
myStatusSmallEdges |= ShapeExtend::EncodeStatus( ShapeExtend_DONE2 );
|
||||||
@ -1069,9 +1079,11 @@ Standard_Boolean ShapeFix_Wireframe::MergeSmallEdges(TopTools_MapOfShape& theSma
|
|||||||
{
|
{
|
||||||
SFW->WireData()->Remove(1);
|
SFW->WireData()->Remove(1);
|
||||||
Context()->Remove(edge1);
|
Context()->Remove(edge1);
|
||||||
|
SendWarning( edge1, Message_Msg("FixWireframe.FixSmallEdges.MSG0"));
|
||||||
theSmallEdges.Remove(edge1);
|
theSmallEdges.Remove(edge1);
|
||||||
theEdgeToFaces.UnBind(edge1);
|
theEdgeToFaces.UnBind(edge1);
|
||||||
Context()->Remove(aWire);
|
Context()->Remove(aWire);
|
||||||
|
SendWarning( aWire, Message_Msg("FixWireframe.FixSmallEdges.MSG1"));
|
||||||
myStatusSmallEdges |= ShapeExtend::EncodeStatus( ShapeExtend_DONE2 );
|
myStatusSmallEdges |= ShapeExtend::EncodeStatus( ShapeExtend_DONE2 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1084,8 +1096,10 @@ Standard_Boolean ShapeFix_Wireframe::MergeSmallEdges(TopTools_MapOfShape& theSma
|
|||||||
face.Orientation(facet.Orientation());
|
face.Orientation(facet.Orientation());
|
||||||
TopoDS_Shape anewShape = Context()->Apply(face);
|
TopoDS_Shape anewShape = Context()->Apply(face);
|
||||||
TopoDS_Iterator aIter(anewShape);
|
TopoDS_Iterator aIter(anewShape);
|
||||||
if(!aIter.More())
|
if(!aIter.More()) {
|
||||||
Context()->Remove(anewShape);
|
Context()->Remove(anewShape);
|
||||||
|
SendWarning( face, Message_Msg("FixWireframe.FixSmallEdges.MSG2"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1313,11 +1327,13 @@ Standard_Boolean ShapeFix_Wireframe::MergeSmallEdges(TopTools_MapOfShape& theSma
|
|||||||
{
|
{
|
||||||
Context()->Replace(edge1,edge3);
|
Context()->Replace(edge1,edge3);
|
||||||
Context()->Remove(edge2);
|
Context()->Remove(edge2);
|
||||||
|
SendWarning( edge2, Message_Msg("FixWireframe.FixSmallEdges.MSG0"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Context()->Replace(edge2,edge3);
|
Context()->Replace(edge2,edge3);
|
||||||
Context()->Remove(edge1);
|
Context()->Remove(edge1);
|
||||||
|
SendWarning( edge1, Message_Msg("FixWireframe.FixSmallEdges.MSG0"));
|
||||||
}
|
}
|
||||||
if (take_next)
|
if (take_next)
|
||||||
{
|
{
|
||||||
@ -1393,6 +1409,7 @@ Standard_Boolean ShapeFix_Wireframe::MergeSmallEdges(TopTools_MapOfShape& theSma
|
|||||||
aTmpShape = Context()->Apply(tmpedge2);
|
aTmpShape = Context()->Apply(tmpedge2);
|
||||||
TopoDS_Edge anewedge2 = TopoDS::Edge(aTmpShape);
|
TopoDS_Edge anewedge2 = TopoDS::Edge(aTmpShape);
|
||||||
Context()->Remove(remedge);
|
Context()->Remove(remedge);
|
||||||
|
SendWarning( remedge, Message_Msg("FixWireframe.FixSmallEdges.MSG0"));
|
||||||
if (theSmallEdges.Contains(remedge))
|
if (theSmallEdges.Contains(remedge))
|
||||||
theSmallEdges.Remove(remedge);
|
theSmallEdges.Remove(remedge);
|
||||||
theEdgeToFaces.UnBind(remedge);
|
theEdgeToFaces.UnBind(remedge);
|
||||||
@ -1476,6 +1493,7 @@ Standard_Boolean ShapeFix_Wireframe::MergeSmallEdges(TopTools_MapOfShape& theSma
|
|||||||
{
|
{
|
||||||
SFW->WireData()->Remove (index );
|
SFW->WireData()->Remove (index );
|
||||||
Context()->Remove(edge1);
|
Context()->Remove(edge1);
|
||||||
|
SendWarning( edge1, Message_Msg("FixWireframe.FixSmallEdges.MSG0"));
|
||||||
if (theSmallEdges.Contains(edge1)) theSmallEdges.Remove(edge1);
|
if (theSmallEdges.Contains(edge1)) theSmallEdges.Remove(edge1);
|
||||||
theEdgeToFaces.UnBind(edge1);
|
theEdgeToFaces.UnBind(edge1);
|
||||||
myStatusSmallEdges |= ShapeExtend::EncodeStatus( ShapeExtend_DONE2 );
|
myStatusSmallEdges |= ShapeExtend::EncodeStatus( ShapeExtend_DONE2 );
|
||||||
@ -1490,6 +1508,7 @@ Standard_Boolean ShapeFix_Wireframe::MergeSmallEdges(TopTools_MapOfShape& theSma
|
|||||||
{
|
{
|
||||||
SFW->WireData()->Remove (index );
|
SFW->WireData()->Remove (index );
|
||||||
Context()->Remove(edge2);
|
Context()->Remove(edge2);
|
||||||
|
SendWarning( edge2, Message_Msg("FixWireframe.FixSmallEdges.MSG0"));
|
||||||
if (theSmallEdges.Contains(edge2)) theSmallEdges.Remove(edge2);
|
if (theSmallEdges.Contains(edge2)) theSmallEdges.Remove(edge2);
|
||||||
theEdgeToFaces.UnBind(edge2);
|
theEdgeToFaces.UnBind(edge2);
|
||||||
myStatusSmallEdges |= ShapeExtend::EncodeStatus( ShapeExtend_DONE2 );
|
myStatusSmallEdges |= ShapeExtend::EncodeStatus( ShapeExtend_DONE2 );
|
||||||
@ -1508,9 +1527,11 @@ Standard_Boolean ShapeFix_Wireframe::MergeSmallEdges(TopTools_MapOfShape& theSma
|
|||||||
{
|
{
|
||||||
SFW->WireData()->Remove(1);
|
SFW->WireData()->Remove(1);
|
||||||
Context()->Remove(edge1);
|
Context()->Remove(edge1);
|
||||||
|
SendWarning( edge1, Message_Msg("FixWireframe.FixSmallEdges.MSG0"));
|
||||||
theSmallEdges.Remove(edge1);
|
theSmallEdges.Remove(edge1);
|
||||||
theEdgeToFaces.UnBind(edge1);
|
theEdgeToFaces.UnBind(edge1);
|
||||||
Context()->Remove(aWire);
|
Context()->Remove(aWire);
|
||||||
|
SendWarning( aWire, Message_Msg("FixWireframe.FixSmallEdges.MSG1"));
|
||||||
myStatusSmallEdges |= ShapeExtend::EncodeStatus( ShapeExtend_DONE2 );
|
myStatusSmallEdges |= ShapeExtend::EncodeStatus( ShapeExtend_DONE2 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,8 @@ uses
|
|||||||
UOperator from ShapeProcess,
|
UOperator from ShapeProcess,
|
||||||
ShapeContext from ShapeProcess,
|
ShapeContext from ShapeProcess,
|
||||||
Modification from BRepTools,
|
Modification from BRepTools,
|
||||||
DataMapOfShapeShape from TopTools
|
DataMapOfShapeShape from TopTools,
|
||||||
|
MsgRegistrator from ShapeExtend
|
||||||
|
|
||||||
is
|
is
|
||||||
|
|
||||||
@ -50,7 +51,8 @@ is
|
|||||||
ApplyModifier (myclass; S: Shape from TopoDS;
|
ApplyModifier (myclass; S: Shape from TopoDS;
|
||||||
context: ShapeContext from ShapeProcess;
|
context: ShapeContext from ShapeProcess;
|
||||||
M: Modification from BRepTools;
|
M: Modification from BRepTools;
|
||||||
map: in out DataMapOfShapeShape from TopTools)
|
map: in out DataMapOfShapeShape from TopTools;
|
||||||
|
msg : MsgRegistrator from ShapeExtend=0)
|
||||||
---Purpose: Applies BRepTools_Modification to a shape,
|
---Purpose: Applies BRepTools_Modification to a shape,
|
||||||
-- taking into account sharing of components of compounds.
|
-- taking into account sharing of components of compounds.
|
||||||
returns Shape from TopoDS;
|
returns Shape from TopoDS;
|
||||||
|
@ -67,7 +67,8 @@
|
|||||||
TopoDS_Shape ShapeProcess_OperLibrary::ApplyModifier (const TopoDS_Shape &S,
|
TopoDS_Shape ShapeProcess_OperLibrary::ApplyModifier (const TopoDS_Shape &S,
|
||||||
const Handle(ShapeProcess_ShapeContext)& context,
|
const Handle(ShapeProcess_ShapeContext)& context,
|
||||||
const Handle(BRepTools_Modification) &M,
|
const Handle(BRepTools_Modification) &M,
|
||||||
TopTools_DataMapOfShapeShape &map)
|
TopTools_DataMapOfShapeShape &map,
|
||||||
|
const Handle(ShapeExtend_MsgRegistrator) &msg)
|
||||||
{
|
{
|
||||||
// protect against INTERNAL/EXTERNAL shapes
|
// protect against INTERNAL/EXTERNAL shapes
|
||||||
TopoDS_Shape SF = S.Oriented(TopAbs_FORWARD);
|
TopoDS_Shape SF = S.Oriented(TopAbs_FORWARD);
|
||||||
@ -102,7 +103,7 @@ TopoDS_Shape ShapeProcess_OperLibrary::ApplyModifier (const TopoDS_Shape &S,
|
|||||||
|
|
||||||
// Modify the shape
|
// Modify the shape
|
||||||
BRepTools_Modifier MD(SF,M);
|
BRepTools_Modifier MD(SF,M);
|
||||||
context->RecordModification ( SF, MD );
|
context->RecordModification ( SF, MD, msg );
|
||||||
return MD.ModifiedShape(SF).Oriented(S.Orientation());
|
return MD.ModifiedShape(SF).Oriented(S.Orientation());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,10 +118,15 @@ static Standard_Boolean directfaces (const Handle(ShapeProcess_Context)& context
|
|||||||
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
||||||
if ( ctx.IsNull() ) return Standard_False;
|
if ( ctx.IsNull() ) return Standard_False;
|
||||||
|
|
||||||
|
// activate message mechanism if it is supported by context
|
||||||
|
Handle(ShapeExtend_MsgRegistrator) msg;
|
||||||
|
if ( ! ctx->Messages().IsNull() ) msg = new ShapeExtend_MsgRegistrator;
|
||||||
|
|
||||||
Handle(ShapeCustom_DirectModification) DM = new ShapeCustom_DirectModification;
|
Handle(ShapeCustom_DirectModification) DM = new ShapeCustom_DirectModification;
|
||||||
|
DM->SetMsgRegistrator( msg );
|
||||||
TopTools_DataMapOfShapeShape map;
|
TopTools_DataMapOfShapeShape map;
|
||||||
TopoDS_Shape res = ShapeProcess_OperLibrary::ApplyModifier ( ctx->Result(), ctx, DM, map );
|
TopoDS_Shape res = ShapeProcess_OperLibrary::ApplyModifier ( ctx->Result(), ctx, DM, map, msg );
|
||||||
ctx->RecordModification ( map );
|
ctx->RecordModification ( map, msg );
|
||||||
ctx->SetResult ( res );
|
ctx->SetResult ( res );
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
@ -135,10 +141,22 @@ static Standard_Boolean sameparam (const Handle(ShapeProcess_Context)& context)
|
|||||||
{
|
{
|
||||||
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
||||||
if ( ctx.IsNull() ) return Standard_False;
|
if ( ctx.IsNull() ) return Standard_False;
|
||||||
|
|
||||||
|
// activate message mechanism if it is supported by context
|
||||||
|
Handle(ShapeExtend_MsgRegistrator) msg;
|
||||||
|
if ( ! ctx->Messages().IsNull() ) msg = new ShapeExtend_MsgRegistrator;
|
||||||
|
|
||||||
ShapeFix::SameParameter ( ctx->Result(),
|
ShapeFix::SameParameter ( ctx->Result(),
|
||||||
ctx->IntegerVal ( "Force", Standard_False ),
|
ctx->IntegerVal ( "Force", Standard_False ),
|
||||||
ctx->RealVal ( "Tolerance3d", Precision::Confusion() /* -1 */) );
|
ctx->RealVal ( "Tolerance3d", Precision::Confusion() /* -1 */),
|
||||||
// WARNING: no update of context yet!
|
NULL, msg );
|
||||||
|
|
||||||
|
if ( !msg.IsNull() )
|
||||||
|
{
|
||||||
|
// WARNING: not FULL update of context yet!
|
||||||
|
Handle(ShapeBuild_ReShape) reshape = new ShapeBuild_ReShape;
|
||||||
|
ctx->RecordModification( reshape, msg );
|
||||||
|
}
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,8 +201,13 @@ static Standard_Boolean splitangle (const Handle(ShapeProcess_Context)& context)
|
|||||||
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
||||||
if ( ctx.IsNull() ) return Standard_False;
|
if ( ctx.IsNull() ) return Standard_False;
|
||||||
|
|
||||||
|
// activate message mechanism if it is supported by context
|
||||||
|
Handle(ShapeExtend_MsgRegistrator) msg;
|
||||||
|
if ( ! ctx->Messages().IsNull() ) msg = new ShapeExtend_MsgRegistrator;
|
||||||
|
|
||||||
ShapeUpgrade_ShapeDivideAngle SDA ( ctx->RealVal ( "Angle", 2*M_PI ), ctx->Result() );
|
ShapeUpgrade_ShapeDivideAngle SDA ( ctx->RealVal ( "Angle", 2*M_PI ), ctx->Result() );
|
||||||
SDA.SetMaxTolerance ( ctx->RealVal ( "MaxTolerance", 1. ) );
|
SDA.SetMaxTolerance ( ctx->RealVal ( "MaxTolerance", 1. ) );
|
||||||
|
SDA.SetMsgRegistrator ( msg );
|
||||||
|
|
||||||
if ( ! SDA.Perform() && SDA.Status (ShapeExtend_FAIL) ) {
|
if ( ! SDA.Perform() && SDA.Status (ShapeExtend_FAIL) ) {
|
||||||
#ifdef OCCT_DEBUG
|
#ifdef OCCT_DEBUG
|
||||||
@ -193,7 +216,7 @@ static Standard_Boolean splitangle (const Handle(ShapeProcess_Context)& context)
|
|||||||
return Standard_False;
|
return Standard_False;
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->RecordModification ( SDA.GetContext() );
|
ctx->RecordModification ( SDA.GetContext(), msg );
|
||||||
ctx->SetResult ( SDA.Result() );
|
ctx->SetResult ( SDA.Result() );
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
@ -209,6 +232,10 @@ static Standard_Boolean bsplinerestriction (const Handle(ShapeProcess_Context)&
|
|||||||
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
||||||
if ( ctx.IsNull() ) return Standard_False;
|
if ( ctx.IsNull() ) return Standard_False;
|
||||||
|
|
||||||
|
// activate message mechanism if it is supported by context
|
||||||
|
Handle(ShapeExtend_MsgRegistrator) msg;
|
||||||
|
if ( ! ctx->Messages().IsNull() ) msg = new ShapeExtend_MsgRegistrator;
|
||||||
|
|
||||||
Standard_Boolean ModeSurf = ctx->IntegerVal ( "SurfaceMode", Standard_True );
|
Standard_Boolean ModeSurf = ctx->IntegerVal ( "SurfaceMode", Standard_True );
|
||||||
Standard_Boolean ModeC3d = ctx->IntegerVal ( "Curve3dMode", Standard_True );
|
Standard_Boolean ModeC3d = ctx->IntegerVal ( "Curve3dMode", Standard_True );
|
||||||
Standard_Boolean ModeC2d = ctx->IntegerVal ( "Curve2dMode", Standard_True );
|
Standard_Boolean ModeC2d = ctx->IntegerVal ( "Curve2dMode", Standard_True );
|
||||||
@ -249,9 +276,10 @@ static Standard_Boolean bsplinerestriction (const Handle(ShapeProcess_Context)&
|
|||||||
new ShapeCustom_BSplineRestriction ( ModeSurf, ModeC3d, ModeC2d,
|
new ShapeCustom_BSplineRestriction ( ModeSurf, ModeC3d, ModeC2d,
|
||||||
aTol3d, aTol2d, aCont3d, aCont2d,
|
aTol3d, aTol2d, aCont3d, aCont2d,
|
||||||
aMaxDeg, aMaxSeg, ModeDeg, Rational, aParameters );
|
aMaxDeg, aMaxSeg, ModeDeg, Rational, aParameters );
|
||||||
|
LD->SetMsgRegistrator( msg );
|
||||||
TopTools_DataMapOfShapeShape map;
|
TopTools_DataMapOfShapeShape map;
|
||||||
TopoDS_Shape res = ShapeProcess_OperLibrary::ApplyModifier ( ctx->Result(), ctx, LD, map );
|
TopoDS_Shape res = ShapeProcess_OperLibrary::ApplyModifier ( ctx->Result(), ctx, LD, map, msg );
|
||||||
ctx->RecordModification ( map );
|
ctx->RecordModification ( map, msg );
|
||||||
ctx->SetResult ( res );
|
ctx->SetResult ( res );
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
@ -267,11 +295,15 @@ static Standard_Boolean torevol (const Handle(ShapeProcess_Context)& context)
|
|||||||
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
||||||
if ( ctx.IsNull() ) return Standard_False;
|
if ( ctx.IsNull() ) return Standard_False;
|
||||||
|
|
||||||
Handle(ShapeCustom_ConvertToRevolution) CR =
|
// activate message mechanism if it is supported by context
|
||||||
new ShapeCustom_ConvertToRevolution();
|
Handle(ShapeExtend_MsgRegistrator) msg;
|
||||||
|
if ( ! ctx->Messages().IsNull() ) msg = new ShapeExtend_MsgRegistrator;
|
||||||
|
|
||||||
|
Handle(ShapeCustom_ConvertToRevolution) CR = new ShapeCustom_ConvertToRevolution();
|
||||||
|
CR->SetMsgRegistrator( msg );
|
||||||
TopTools_DataMapOfShapeShape map;
|
TopTools_DataMapOfShapeShape map;
|
||||||
TopoDS_Shape res = ShapeProcess_OperLibrary::ApplyModifier ( ctx->Result(), ctx, CR, map );
|
TopoDS_Shape res = ShapeProcess_OperLibrary::ApplyModifier ( ctx->Result(), ctx, CR, map, msg );
|
||||||
ctx->RecordModification ( map );
|
ctx->RecordModification ( map, msg );
|
||||||
ctx->SetResult ( res );
|
ctx->SetResult ( res );
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
@ -287,10 +319,15 @@ static Standard_Boolean swepttoelem (const Handle(ShapeProcess_Context)& context
|
|||||||
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
||||||
if ( ctx.IsNull() ) return Standard_False;
|
if ( ctx.IsNull() ) return Standard_False;
|
||||||
|
|
||||||
|
// activate message mechanism if it is supported by context
|
||||||
|
Handle(ShapeExtend_MsgRegistrator) msg;
|
||||||
|
if ( ! ctx->Messages().IsNull() ) msg = new ShapeExtend_MsgRegistrator;
|
||||||
|
|
||||||
Handle(ShapeCustom_SweptToElementary) SE = new ShapeCustom_SweptToElementary();
|
Handle(ShapeCustom_SweptToElementary) SE = new ShapeCustom_SweptToElementary();
|
||||||
|
SE->SetMsgRegistrator( msg );
|
||||||
TopTools_DataMapOfShapeShape map;
|
TopTools_DataMapOfShapeShape map;
|
||||||
TopoDS_Shape res = ShapeProcess_OperLibrary::ApplyModifier ( ctx->Result(), ctx, SE, map );
|
TopoDS_Shape res = ShapeProcess_OperLibrary::ApplyModifier ( ctx->Result(), ctx, SE, map, msg );
|
||||||
ctx->RecordModification ( map );
|
ctx->RecordModification ( map, msg );
|
||||||
ctx->SetResult ( res );
|
ctx->SetResult ( res );
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
@ -306,6 +343,10 @@ static Standard_Boolean shapetobezier (const Handle(ShapeProcess_Context)& conte
|
|||||||
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
||||||
if ( ctx.IsNull() ) return Standard_False;
|
if ( ctx.IsNull() ) return Standard_False;
|
||||||
|
|
||||||
|
// activate message mechanism if it is supported by context
|
||||||
|
Handle(ShapeExtend_MsgRegistrator) msg;
|
||||||
|
if ( ! ctx->Messages().IsNull() ) msg = new ShapeExtend_MsgRegistrator;
|
||||||
|
|
||||||
Standard_Boolean ModeC3d = ctx->BooleanVal ( "Curve3dMode", Standard_False );
|
Standard_Boolean ModeC3d = ctx->BooleanVal ( "Curve3dMode", Standard_False );
|
||||||
Standard_Boolean ModeC2d = ctx->BooleanVal ( "Curve2dMode", Standard_False );
|
Standard_Boolean ModeC2d = ctx->BooleanVal ( "Curve2dMode", Standard_False );
|
||||||
Standard_Boolean ModeSurf = ctx->BooleanVal ( "SurfaceMode", Standard_False );
|
Standard_Boolean ModeSurf = ctx->BooleanVal ( "SurfaceMode", Standard_False );
|
||||||
@ -319,6 +360,7 @@ static Standard_Boolean shapetobezier (const Handle(ShapeProcess_Context)& conte
|
|||||||
Standard_Boolean BSplineMode = ctx->BooleanVal ( "BSplineMode", Standard_True );
|
Standard_Boolean BSplineMode = ctx->BooleanVal ( "BSplineMode", Standard_True );
|
||||||
|
|
||||||
ShapeUpgrade_ShapeConvertToBezier SCB (ctx->Result());
|
ShapeUpgrade_ShapeConvertToBezier SCB (ctx->Result());
|
||||||
|
SCB.SetMsgRegistrator( msg );
|
||||||
SCB.SetSurfaceSegmentMode(SegmentMode);
|
SCB.SetSurfaceSegmentMode(SegmentMode);
|
||||||
SCB.SetSurfaceConversion (ModeSurf);
|
SCB.SetSurfaceConversion (ModeSurf);
|
||||||
SCB.Set2dConversion (ModeC2d);
|
SCB.Set2dConversion (ModeC2d);
|
||||||
@ -349,7 +391,7 @@ static Standard_Boolean shapetobezier (const Handle(ShapeProcess_Context)& conte
|
|||||||
return Standard_False;
|
return Standard_False;
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->RecordModification ( SCB.GetContext() );
|
ctx->RecordModification ( SCB.GetContext(), msg );
|
||||||
ctx->SetResult ( SCB.Result() );
|
ctx->SetResult ( SCB.Result() );
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
@ -365,6 +407,10 @@ static Standard_Boolean converttobspline (const Handle(ShapeProcess_Context)& co
|
|||||||
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
||||||
if ( ctx.IsNull() ) return Standard_False;
|
if ( ctx.IsNull() ) return Standard_False;
|
||||||
|
|
||||||
|
// activate message mechanism if it is supported by context
|
||||||
|
Handle(ShapeExtend_MsgRegistrator) msg;
|
||||||
|
if ( ! ctx->Messages().IsNull() ) msg = new ShapeExtend_MsgRegistrator;
|
||||||
|
|
||||||
Standard_Boolean extrMode = ctx->BooleanVal ( "LinearExtrusionMode", Standard_True );
|
Standard_Boolean extrMode = ctx->BooleanVal ( "LinearExtrusionMode", Standard_True );
|
||||||
Standard_Boolean revolMode = ctx->BooleanVal ( "RevolutionMode", Standard_True );
|
Standard_Boolean revolMode = ctx->BooleanVal ( "RevolutionMode", Standard_True );
|
||||||
Standard_Boolean offsetMode = ctx->BooleanVal ( "OffsetMode", Standard_True );
|
Standard_Boolean offsetMode = ctx->BooleanVal ( "OffsetMode", Standard_True );
|
||||||
@ -373,10 +419,11 @@ static Standard_Boolean converttobspline (const Handle(ShapeProcess_Context)& co
|
|||||||
CBspl->SetExtrusionMode(extrMode);
|
CBspl->SetExtrusionMode(extrMode);
|
||||||
CBspl->SetRevolutionMode(revolMode);
|
CBspl->SetRevolutionMode(revolMode);
|
||||||
CBspl->SetOffsetMode(offsetMode);
|
CBspl->SetOffsetMode(offsetMode);
|
||||||
|
CBspl->SetMsgRegistrator( msg );
|
||||||
|
|
||||||
TopTools_DataMapOfShapeShape map;
|
TopTools_DataMapOfShapeShape map;
|
||||||
TopoDS_Shape res = ShapeProcess_OperLibrary::ApplyModifier ( ctx->Result(), ctx, CBspl, map );
|
TopoDS_Shape res = ShapeProcess_OperLibrary::ApplyModifier( ctx->Result(), ctx, CBspl, map, msg );
|
||||||
ctx->RecordModification ( map );
|
ctx->RecordModification ( map, msg );
|
||||||
ctx->SetResult ( res );
|
ctx->SetResult ( res );
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
@ -392,6 +439,10 @@ static Standard_Boolean splitcontinuity (const Handle(ShapeProcess_Context)& con
|
|||||||
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
||||||
if ( ctx.IsNull() ) return Standard_False;
|
if ( ctx.IsNull() ) return Standard_False;
|
||||||
|
|
||||||
|
// activate message mechanism if it is supported by context
|
||||||
|
Handle(ShapeExtend_MsgRegistrator) msg;
|
||||||
|
if ( ! ctx->Messages().IsNull() ) msg = new ShapeExtend_MsgRegistrator;
|
||||||
|
|
||||||
Standard_Real aTol = ctx->RealVal ( "Tolerance3d", 1.e-7 );
|
Standard_Real aTol = ctx->RealVal ( "Tolerance3d", 1.e-7 );
|
||||||
Standard_Real aTol2D = ctx->RealVal ( "Tolerance2d", 1.e-9 );
|
Standard_Real aTol2D = ctx->RealVal ( "Tolerance2d", 1.e-9 );
|
||||||
GeomAbs_Shape aCrvCont = ctx->ContinuityVal ( "CurveContinuity", GeomAbs_C1 );
|
GeomAbs_Shape aCrvCont = ctx->ContinuityVal ( "CurveContinuity", GeomAbs_C1 );
|
||||||
@ -404,6 +455,8 @@ static Standard_Boolean splitcontinuity (const Handle(ShapeProcess_Context)& con
|
|||||||
tool.SetTolerance(aTol);
|
tool.SetTolerance(aTol);
|
||||||
tool.SetTolerance2d(aTol2D);
|
tool.SetTolerance2d(aTol2D);
|
||||||
|
|
||||||
|
tool.SetMsgRegistrator( msg );
|
||||||
|
|
||||||
Standard_Real maxTol;
|
Standard_Real maxTol;
|
||||||
if ( ctx->GetReal ( "MaxTolerance", maxTol ) ) tool.SetMaxTolerance(maxTol);
|
if ( ctx->GetReal ( "MaxTolerance", maxTol ) ) tool.SetMaxTolerance(maxTol);
|
||||||
|
|
||||||
@ -414,7 +467,7 @@ static Standard_Boolean splitcontinuity (const Handle(ShapeProcess_Context)& con
|
|||||||
return Standard_False;
|
return Standard_False;
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->RecordModification ( tool.GetContext() );
|
ctx->RecordModification ( tool.GetContext(), msg );
|
||||||
ctx->SetResult ( tool.Result() );
|
ctx->SetResult ( tool.Result() );
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
@ -430,7 +483,12 @@ static Standard_Boolean splitclosedfaces (const Handle(ShapeProcess_Context)& co
|
|||||||
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
||||||
if ( ctx.IsNull() ) return Standard_False;
|
if ( ctx.IsNull() ) return Standard_False;
|
||||||
|
|
||||||
|
// activate message mechanism if it is supported by context
|
||||||
|
Handle(ShapeExtend_MsgRegistrator) msg;
|
||||||
|
if ( ! ctx->Messages().IsNull() ) msg = new ShapeExtend_MsgRegistrator;
|
||||||
|
|
||||||
ShapeUpgrade_ShapeDivideClosed tool ( ctx->Result() );
|
ShapeUpgrade_ShapeDivideClosed tool ( ctx->Result() );
|
||||||
|
tool.SetMsgRegistrator( msg );
|
||||||
|
|
||||||
Standard_Real closeTol;
|
Standard_Real closeTol;
|
||||||
if ( ctx->GetReal ( "CloseTolerance", closeTol ) ) tool.SetPrecision(closeTol);
|
if ( ctx->GetReal ( "CloseTolerance", closeTol ) ) tool.SetPrecision(closeTol);
|
||||||
@ -451,7 +509,7 @@ static Standard_Boolean splitclosedfaces (const Handle(ShapeProcess_Context)& co
|
|||||||
return Standard_False;
|
return Standard_False;
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->RecordModification ( tool.GetContext() );
|
ctx->RecordModification ( tool.GetContext(), msg );
|
||||||
ctx->SetResult ( tool.Result() );
|
ctx->SetResult ( tool.Result() );
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
@ -467,10 +525,15 @@ static Standard_Boolean fixfacesize (const Handle(ShapeProcess_Context)& context
|
|||||||
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
||||||
if ( ctx.IsNull() ) return Standard_False;
|
if ( ctx.IsNull() ) return Standard_False;
|
||||||
|
|
||||||
|
// activate message mechanism if it is supported by context
|
||||||
|
Handle(ShapeExtend_MsgRegistrator) msg;
|
||||||
|
if ( ! ctx->Messages().IsNull() ) msg = new ShapeExtend_MsgRegistrator;
|
||||||
|
|
||||||
Handle(ShapeBuild_ReShape) reshape = new ShapeBuild_ReShape;
|
Handle(ShapeBuild_ReShape) reshape = new ShapeBuild_ReShape;
|
||||||
ShapeFix_FixSmallFace FSC;
|
ShapeFix_FixSmallFace FSC;
|
||||||
FSC.SetContext(reshape);
|
FSC.SetContext(reshape);
|
||||||
FSC.Init(ctx->Result());
|
FSC.Init(ctx->Result());
|
||||||
|
FSC.SetMsgRegistrator ( msg );
|
||||||
|
|
||||||
Standard_Real aTol;
|
Standard_Real aTol;
|
||||||
if ( ctx->GetReal ( "Tolerance", aTol ) ) FSC.SetPrecision (aTol);
|
if ( ctx->GetReal ( "Tolerance", aTol ) ) FSC.SetPrecision (aTol);
|
||||||
@ -479,7 +542,7 @@ static Standard_Boolean fixfacesize (const Handle(ShapeProcess_Context)& context
|
|||||||
TopoDS_Shape newsh = FSC.Shape();
|
TopoDS_Shape newsh = FSC.Shape();
|
||||||
|
|
||||||
if ( newsh != ctx->Result() ) {
|
if ( newsh != ctx->Result() ) {
|
||||||
ctx->RecordModification ( reshape );
|
ctx->RecordModification ( reshape, msg );
|
||||||
ctx->SetResult ( newsh );
|
ctx->SetResult ( newsh );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -497,17 +560,22 @@ static Standard_Boolean fixwgaps (const Handle(ShapeProcess_Context)& context)
|
|||||||
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
||||||
if ( ctx.IsNull() ) return Standard_False;
|
if ( ctx.IsNull() ) return Standard_False;
|
||||||
|
|
||||||
|
// activate message mechanism if it is supported by context
|
||||||
|
Handle(ShapeExtend_MsgRegistrator) msg;
|
||||||
|
if ( ! ctx->Messages().IsNull() ) msg = new ShapeExtend_MsgRegistrator;
|
||||||
|
|
||||||
Standard_Real aTol3d = ctx->RealVal ( "Tolerance3d", Precision::Confusion() );
|
Standard_Real aTol3d = ctx->RealVal ( "Tolerance3d", Precision::Confusion() );
|
||||||
|
|
||||||
Handle(ShapeBuild_ReShape) reshape = new ShapeBuild_ReShape;
|
Handle(ShapeBuild_ReShape) reshape = new ShapeBuild_ReShape;
|
||||||
Handle(ShapeFix_Wireframe) sfwf = new ShapeFix_Wireframe(ctx->Result());
|
Handle(ShapeFix_Wireframe) sfwf = new ShapeFix_Wireframe(ctx->Result());
|
||||||
|
sfwf->SetMsgRegistrator( msg );
|
||||||
sfwf->SetContext(reshape);
|
sfwf->SetContext(reshape);
|
||||||
sfwf->SetPrecision(aTol3d);
|
sfwf->SetPrecision(aTol3d);
|
||||||
sfwf->FixWireGaps();
|
sfwf->FixWireGaps();
|
||||||
TopoDS_Shape result = sfwf->Shape();
|
TopoDS_Shape result = sfwf->Shape();
|
||||||
|
|
||||||
if ( result != ctx->Result() ) {
|
if ( result != ctx->Result() ) {
|
||||||
ctx->RecordModification ( reshape );
|
ctx->RecordModification ( reshape, msg );
|
||||||
ctx->SetResult ( result );
|
ctx->SetResult ( result );
|
||||||
}
|
}
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
@ -589,15 +657,20 @@ static Standard_Boolean mergesmalledges (const Handle(ShapeProcess_Context)& con
|
|||||||
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
||||||
if ( ctx.IsNull() ) return Standard_False;
|
if ( ctx.IsNull() ) return Standard_False;
|
||||||
|
|
||||||
|
// activate message mechanism if it is supported by context
|
||||||
|
Handle(ShapeExtend_MsgRegistrator) msg;
|
||||||
|
if ( ! ctx->Messages().IsNull() ) msg = new ShapeExtend_MsgRegistrator;
|
||||||
|
|
||||||
Standard_Real aTol3d = ctx->RealVal ( "Tolerance3d", Precision::Confusion() );
|
Standard_Real aTol3d = ctx->RealVal ( "Tolerance3d", Precision::Confusion() );
|
||||||
|
|
||||||
Handle(ShapeBuild_ReShape) reshape = new ShapeBuild_ReShape;
|
Handle(ShapeBuild_ReShape) reshape = new ShapeBuild_ReShape;
|
||||||
ShapeFix_Wireframe ShapeFixWireframe(ctx->Result());
|
ShapeFix_Wireframe ShapeFixWireframe(ctx->Result());
|
||||||
ShapeFixWireframe.SetContext(reshape);
|
ShapeFixWireframe.SetContext(reshape);
|
||||||
ShapeFixWireframe.SetPrecision(aTol3d);
|
ShapeFixWireframe.SetPrecision(aTol3d);
|
||||||
|
ShapeFixWireframe.SetMsgRegistrator( msg );
|
||||||
|
|
||||||
if ( ShapeFixWireframe.FixSmallEdges() ) {
|
if ( ShapeFixWireframe.FixSmallEdges() ) {
|
||||||
ctx->RecordModification ( reshape );
|
ctx->RecordModification ( reshape, msg );
|
||||||
}
|
}
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
@ -618,9 +691,9 @@ static Standard_Boolean fixshape (const Handle(ShapeProcess_Context)& context)
|
|||||||
if ( ! ctx->Messages().IsNull() ) msg = new ShapeExtend_MsgRegistrator;
|
if ( ! ctx->Messages().IsNull() ) msg = new ShapeExtend_MsgRegistrator;
|
||||||
|
|
||||||
Handle(ShapeFix_Shape) sfs = new ShapeFix_Shape;
|
Handle(ShapeFix_Shape) sfs = new ShapeFix_Shape;
|
||||||
sfs->SetMsgRegistrator ( msg );
|
|
||||||
Handle(ShapeFix_Face) sff = Handle(ShapeFix_Face)::DownCast(sfs->FixFaceTool());
|
Handle(ShapeFix_Face) sff = Handle(ShapeFix_Face)::DownCast(sfs->FixFaceTool());
|
||||||
Handle(ShapeFix_Wire) sfw = Handle(ShapeFix_Wire)::DownCast(sfs->FixWireTool());
|
Handle(ShapeFix_Wire) sfw = Handle(ShapeFix_Wire)::DownCast(sfs->FixWireTool());
|
||||||
|
sfs->SetMsgRegistrator( msg );
|
||||||
|
|
||||||
sfs->SetPrecision ( ctx->RealVal ( "Tolerance3d", Precision::Confusion() ) );
|
sfs->SetPrecision ( ctx->RealVal ( "Tolerance3d", Precision::Confusion() ) );
|
||||||
sfs->SetMinTolerance ( ctx->RealVal ( "MinTolerance3d", Precision::Confusion() ) );
|
sfs->SetMinTolerance ( ctx->RealVal ( "MinTolerance3d", Precision::Confusion() ) );
|
||||||
@ -681,7 +754,9 @@ static Standard_Boolean fixshape (const Handle(ShapeProcess_Context)& context)
|
|||||||
return Standard_False;
|
return Standard_False;
|
||||||
|
|
||||||
TopoDS_Shape result = sfs->Shape();
|
TopoDS_Shape result = sfs->Shape();
|
||||||
if ( result != ctx->Result() ) {
|
if (( result != ctx->Result() ) ||
|
||||||
|
( !msg.IsNull() && !msg->MapShape().IsEmpty()))
|
||||||
|
{
|
||||||
ctx->RecordModification ( sfs->Context(), msg );
|
ctx->RecordModification ( sfs->Context(), msg );
|
||||||
ctx->SetResult ( result );
|
ctx->SetResult ( result );
|
||||||
}
|
}
|
||||||
@ -700,10 +775,15 @@ static Standard_Boolean spltclosededges (const Handle(ShapeProcess_Context)& con
|
|||||||
Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
||||||
if ( ctx.IsNull() ) return Standard_False;
|
if ( ctx.IsNull() ) return Standard_False;
|
||||||
|
|
||||||
|
// activate message mechanism if it is supported by context
|
||||||
|
Handle(ShapeExtend_MsgRegistrator) msg;
|
||||||
|
if ( ! ctx->Messages().IsNull() ) msg = new ShapeExtend_MsgRegistrator;
|
||||||
|
|
||||||
Standard_Integer nbSplits = ctx->IntegerVal ( "NbSplitPoints", 1 );
|
Standard_Integer nbSplits = ctx->IntegerVal ( "NbSplitPoints", 1 );
|
||||||
|
|
||||||
ShapeUpgrade_ShapeDivideClosedEdges tool (ctx->Result());
|
ShapeUpgrade_ShapeDivideClosedEdges tool (ctx->Result());
|
||||||
tool.SetNbSplitPoints(nbSplits);
|
tool.SetNbSplitPoints(nbSplits);
|
||||||
|
tool.SetMsgRegistrator( msg );
|
||||||
|
|
||||||
if ( ! tool.Perform() && tool.Status (ShapeExtend_FAIL) ) {
|
if ( ! tool.Perform() && tool.Status (ShapeExtend_FAIL) ) {
|
||||||
#ifdef OCCT_DEBUG
|
#ifdef OCCT_DEBUG
|
||||||
@ -712,7 +792,7 @@ static Standard_Boolean spltclosededges (const Handle(ShapeProcess_Context)& con
|
|||||||
return Standard_False;
|
return Standard_False;
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx->RecordModification ( tool.GetContext() );
|
ctx->RecordModification ( tool.GetContext(), msg );
|
||||||
ctx->SetResult ( tool.Result() );
|
ctx->SetResult ( tool.Result() );
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
@ -729,16 +809,22 @@ static Standard_Boolean splitcommonvertex (const Handle(ShapeProcess_Context)& c
|
|||||||
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
Handle(ShapeProcess_ShapeContext) ctx = Handle(ShapeProcess_ShapeContext)::DownCast ( context );
|
||||||
if ( ctx.IsNull() ) return Standard_False;
|
if ( ctx.IsNull() ) return Standard_False;
|
||||||
|
|
||||||
|
// activate message mechanism if it is supported by context
|
||||||
|
Handle(ShapeExtend_MsgRegistrator) msg;
|
||||||
|
if ( ! ctx->Messages().IsNull() ) msg = new ShapeExtend_MsgRegistrator;
|
||||||
|
|
||||||
Handle(ShapeBuild_ReShape) reshape = new ShapeBuild_ReShape;
|
Handle(ShapeBuild_ReShape) reshape = new ShapeBuild_ReShape;
|
||||||
ShapeFix_SplitCommonVertex SCV;
|
ShapeFix_SplitCommonVertex SCV;
|
||||||
SCV.SetContext(reshape);
|
SCV.SetContext(reshape);
|
||||||
SCV.Init(ctx->Result());
|
SCV.Init(ctx->Result());
|
||||||
|
|
||||||
|
SCV.SetMsgRegistrator( msg );
|
||||||
|
|
||||||
SCV.Perform();
|
SCV.Perform();
|
||||||
TopoDS_Shape newsh = SCV.Shape();
|
TopoDS_Shape newsh = SCV.Shape();
|
||||||
|
|
||||||
if ( newsh != ctx->Result() ) {
|
if ( newsh != ctx->Result() ) {
|
||||||
ctx->RecordModification ( reshape );
|
ctx->RecordModification ( reshape, msg );
|
||||||
ctx->SetResult ( newsh );
|
ctx->SetResult ( newsh );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,12 +81,14 @@ is
|
|||||||
-- with explicit definition of mapping from current
|
-- with explicit definition of mapping from current
|
||||||
-- result to a new one
|
-- result to a new one
|
||||||
|
|
||||||
RecordModification (me: mutable; repl: DataMapOfShapeShape from TopTools);
|
RecordModification (me: mutable; repl: DataMapOfShapeShape from TopTools;
|
||||||
|
msg : MsgRegistrator from ShapeExtend=0);
|
||||||
RecordModification (me: mutable; repl: ReShape from ShapeBuild;
|
RecordModification (me: mutable; repl: ReShape from ShapeBuild;
|
||||||
msg : MsgRegistrator from ShapeExtend);
|
msg : MsgRegistrator from ShapeExtend);
|
||||||
RecordModification (me: mutable; repl: ReShape from ShapeBuild);
|
RecordModification (me: mutable; repl: ReShape from ShapeBuild);
|
||||||
RecordModification (me: mutable; sh : Shape from TopoDS;
|
RecordModification (me: mutable; sh : Shape from TopoDS;
|
||||||
repl: Modifier from BRepTools);
|
repl: Modifier from BRepTools;
|
||||||
|
msg : MsgRegistrator from ShapeExtend=0);
|
||||||
---Purpose: Records modifications and resets result accordingly
|
---Purpose: Records modifications and resets result accordingly
|
||||||
-- NOTE: modification of resulting shape should be explicitly
|
-- NOTE: modification of resulting shape should be explicitly
|
||||||
-- defined in the maps along with modifications of subshapes
|
-- defined in the maps along with modifications of subshapes
|
||||||
|
@ -168,7 +168,9 @@ static void DumpMap (const TopTools_DataMapOfShapeShape &map)
|
|||||||
|
|
||||||
static void RecModif (const TopoDS_Shape &S,
|
static void RecModif (const TopoDS_Shape &S,
|
||||||
const TopTools_DataMapOfShapeShape &repl,
|
const TopTools_DataMapOfShapeShape &repl,
|
||||||
|
const Handle(ShapeExtend_MsgRegistrator) &msg,
|
||||||
TopTools_DataMapOfShapeShape &map,
|
TopTools_DataMapOfShapeShape &map,
|
||||||
|
Handle(ShapeExtend_MsgRegistrator) &myMsg,
|
||||||
const TopAbs_ShapeEnum until)
|
const TopAbs_ShapeEnum until)
|
||||||
{
|
{
|
||||||
TopoDS_Shape r = S;
|
TopoDS_Shape r = S;
|
||||||
@ -218,17 +220,35 @@ static void RecModif (const TopoDS_Shape &S,
|
|||||||
if ( res != r ) map.Bind ( S.Located(aNullLoc), res );
|
if ( res != r ) map.Bind ( S.Located(aNullLoc), res );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// update messages (messages must be taken from each level in the substitution map)
|
||||||
|
if ( ! r.IsNull() && ! myMsg.IsNull() &&
|
||||||
|
! msg.IsNull() && msg->MapShape().Extent() >0 )
|
||||||
|
{
|
||||||
|
const ShapeExtend_DataMapOfShapeListOfMsg& msgmap = msg->MapShape();
|
||||||
|
if ( msgmap.IsBound( r )) {
|
||||||
|
const Message_ListOfMsg &msglist = msgmap.Find (r);
|
||||||
|
for (Message_ListIteratorOfListOfMsg iter (msglist); iter.More(); iter.Next())
|
||||||
|
myMsg->Send ( S, iter.Value(), Message_Warning );
|
||||||
|
}
|
||||||
|
else if ( msgmap.IsBound( S )) {
|
||||||
|
const Message_ListOfMsg &msglist = msgmap.Find (S);
|
||||||
|
for (Message_ListIteratorOfListOfMsg iter (msglist); iter.More(); iter.Next())
|
||||||
|
myMsg->Send ( S, iter.Value(), Message_Warning );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ( until == TopAbs_SHAPE || S.ShapeType() >= until ) return;
|
if ( until == TopAbs_SHAPE || S.ShapeType() >= until ) return;
|
||||||
|
|
||||||
for ( TopoDS_Iterator it(S); it.More(); it.Next() ) {
|
for ( TopoDS_Iterator it(S); it.More(); it.Next() ) {
|
||||||
RecModif ( it.Value(), repl, map, until );
|
RecModif ( it.Value(), repl, msg, map, myMsg, until );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShapeProcess_ShapeContext::RecordModification (const TopTools_DataMapOfShapeShape &repl)
|
void ShapeProcess_ShapeContext::RecordModification (const TopTools_DataMapOfShapeShape &repl,
|
||||||
|
const Handle(ShapeExtend_MsgRegistrator)& msg)
|
||||||
{
|
{
|
||||||
if ( repl.Extent() <=0 ) return;
|
if ( repl.Extent() <=0 ) return;
|
||||||
RecModif ( myShape, repl, myMap, myUntil );
|
RecModif ( myShape, repl, msg, myMap, myMsg, myUntil );
|
||||||
if ( myMap.IsBound(myShape) ) myResult = myMap.Find ( myShape );
|
if ( myMap.IsBound(myShape) ) myResult = myMap.Find ( myShape );
|
||||||
#ifdef OCCT_DEBUG
|
#ifdef OCCT_DEBUG
|
||||||
// cout << "Modifier: " << endl; DumpMap (myMap);
|
// cout << "Modifier: " << endl; DumpMap (myMap);
|
||||||
@ -274,6 +294,8 @@ static void RecModif (const TopoDS_Shape &S,
|
|||||||
! msg.IsNull() && msg->MapShape().Extent() >0 ) {
|
! msg.IsNull() && msg->MapShape().Extent() >0 ) {
|
||||||
TopoDS_Shape cur, next = r;
|
TopoDS_Shape cur, next = r;
|
||||||
const ShapeExtend_DataMapOfShapeListOfMsg& msgmap = msg->MapShape();
|
const ShapeExtend_DataMapOfShapeListOfMsg& msgmap = msg->MapShape();
|
||||||
|
if ( msgmap.IsBound( S ))
|
||||||
|
next = S;
|
||||||
do {
|
do {
|
||||||
cur = next;
|
cur = next;
|
||||||
if (msgmap.IsBound (cur)) {
|
if (msgmap.IsBound (cur)) {
|
||||||
@ -288,7 +310,7 @@ static void RecModif (const TopoDS_Shape &S,
|
|||||||
|
|
||||||
if ( until == TopAbs_SHAPE || S.ShapeType() >= until ) return;
|
if ( until == TopAbs_SHAPE || S.ShapeType() >= until ) return;
|
||||||
|
|
||||||
for ( TopoDS_Iterator it(S,Standard_False,Standard_False); it.More(); it.Next() ) {
|
for ( TopoDS_Iterator it(S,Standard_False/*,Standard_False*/); it.More(); it.Next() ) {
|
||||||
RecModif ( it.Value(), repl, msg, map, myMsg, until );
|
RecModif ( it.Value(), repl, msg, map, myMsg, until );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -354,11 +376,12 @@ static void ExplodeModifier (const TopoDS_Shape &S,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ShapeProcess_ShapeContext::RecordModification (const TopoDS_Shape &S,
|
void ShapeProcess_ShapeContext::RecordModification (const TopoDS_Shape &S,
|
||||||
const BRepTools_Modifier &repl)
|
const BRepTools_Modifier &repl,
|
||||||
|
const Handle(ShapeExtend_MsgRegistrator)& msg)
|
||||||
{
|
{
|
||||||
TopTools_DataMapOfShapeShape map;
|
TopTools_DataMapOfShapeShape map;
|
||||||
ExplodeModifier ( S, repl, map, myUntil );
|
ExplodeModifier ( S, repl, map, myUntil );
|
||||||
RecordModification ( map );
|
RecordModification ( map, msg );
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
|
@ -34,6 +34,7 @@ uses
|
|||||||
Adaptor3d,
|
Adaptor3d,
|
||||||
GeomAdaptor,
|
GeomAdaptor,
|
||||||
Geom2dAPI,
|
Geom2dAPI,
|
||||||
|
Message,
|
||||||
TopLoc,
|
TopLoc,
|
||||||
TColStd,
|
TColStd,
|
||||||
TColGeom,
|
TColGeom,
|
||||||
|
@ -25,7 +25,8 @@ class ShapeConvertToBezier from ShapeUpgrade inherits ShapeDivide from ShapeUpgr
|
|||||||
uses
|
uses
|
||||||
|
|
||||||
Shape from TopoDS,
|
Shape from TopoDS,
|
||||||
FaceDivide from ShapeUpgrade
|
FaceDivide from ShapeUpgrade,
|
||||||
|
Msg from Message
|
||||||
|
|
||||||
is
|
is
|
||||||
|
|
||||||
@ -131,6 +132,10 @@ is
|
|||||||
is redefined protected;
|
is redefined protected;
|
||||||
---Purpose: Returns the tool for dividing faces.
|
---Purpose: Returns the tool for dividing faces.
|
||||||
|
|
||||||
|
GetFaceMsg (me) returns Msg from Message is redefined protected;
|
||||||
|
GetWireMsg (me) returns Msg from Message is redefined protected;
|
||||||
|
GetEdgeMsg (me) returns Msg from Message is redefined protected;
|
||||||
|
---Purpose: Returns a message decsribing modification of a shape.
|
||||||
fields
|
fields
|
||||||
|
|
||||||
my2dMode : Boolean;
|
my2dMode : Boolean;
|
||||||
|
@ -349,3 +349,15 @@ Handle(ShapeUpgrade_FaceDivide) ShapeUpgrade_ShapeConvertToBezier::GetSplitFaceT
|
|||||||
return tool;
|
return tool;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Message_Msg ShapeUpgrade_ShapeConvertToBezier::GetFaceMsg() const
|
||||||
|
{
|
||||||
|
return "ShapeDivide.FaceConvertToBezier.MSG0";
|
||||||
|
}
|
||||||
|
Message_Msg ShapeUpgrade_ShapeConvertToBezier::GetWireMsg() const
|
||||||
|
{
|
||||||
|
return "ShapeDivide.WireConvertToBezier.MSG0";
|
||||||
|
}
|
||||||
|
Message_Msg ShapeUpgrade_ShapeConvertToBezier::GetEdgeMsg() const
|
||||||
|
{
|
||||||
|
return "ShapeDivide.EdgeConvertToBezier.MSG0";
|
||||||
|
}
|
||||||
|
@ -22,7 +22,10 @@ uses
|
|||||||
Shape from TopoDS,
|
Shape from TopoDS,
|
||||||
Status from ShapeExtend,
|
Status from ShapeExtend,
|
||||||
ReShape from ShapeBuild,
|
ReShape from ShapeBuild,
|
||||||
FaceDivide from ShapeUpgrade
|
FaceDivide from ShapeUpgrade,
|
||||||
|
Msg from Message,
|
||||||
|
Gravity from Message,
|
||||||
|
BasicMsgRegistrator from ShapeExtend
|
||||||
|
|
||||||
is
|
is
|
||||||
Create returns ShapeDivide from ShapeUpgrade;
|
Create returns ShapeDivide from ShapeUpgrade;
|
||||||
@ -69,6 +72,18 @@ is
|
|||||||
---Purpose: Sets context with recorded modifications to be applied
|
---Purpose: Sets context with recorded modifications to be applied
|
||||||
-- during next call(s) to Perform(shape,Standard_False)
|
-- during next call(s) to Perform(shape,Standard_False)
|
||||||
|
|
||||||
|
SetMsgRegistrator (me: in out; msgreg: BasicMsgRegistrator from ShapeExtend) is virtual;
|
||||||
|
---Purpose: Sets message registrator
|
||||||
|
|
||||||
|
MsgRegistrator (me) returns BasicMsgRegistrator from ShapeExtend;
|
||||||
|
---Purpose: Returns message registrator
|
||||||
|
|
||||||
|
SendMsg (me; shape : Shape from TopoDS;
|
||||||
|
message: Msg from Message;
|
||||||
|
gravity: Gravity from Message = Message_Info);
|
||||||
|
---Purpose: Sends a message to be attached to the shape.
|
||||||
|
-- Calls corresponding message of message registrator.
|
||||||
|
|
||||||
Status (me; status: Status from ShapeExtend) returns Boolean;
|
Status (me; status: Status from ShapeExtend) returns Boolean;
|
||||||
---Purpose: Queries the status of last call to Perform
|
---Purpose: Queries the status of last call to Perform
|
||||||
-- OK : no splitting was done (or no call to Perform)
|
-- OK : no splitting was done (or no call to Perform)
|
||||||
@ -91,10 +106,16 @@ is
|
|||||||
-- 1 - only curve 3d from shared edges.
|
-- 1 - only curve 3d from shared edges.
|
||||||
-- 2 - all curve 3d.
|
-- 2 - all curve 3d.
|
||||||
|
|
||||||
|
GetFaceMsg (me) returns Msg from Message is virtual protected;
|
||||||
|
GetWireMsg (me) returns Msg from Message is virtual protected;
|
||||||
|
GetEdgeMsg (me) returns Msg from Message is virtual protected;
|
||||||
|
---Purpose: Returns a message decsribing modification of a shape.
|
||||||
|
|
||||||
fields
|
fields
|
||||||
|
|
||||||
mySplitFaceTool: FaceDivide from ShapeUpgrade;
|
mySplitFaceTool: FaceDivide from ShapeUpgrade;
|
||||||
myContext : ReShape from ShapeBuild is protected;
|
myContext : ReShape from ShapeBuild is protected;
|
||||||
|
myMsgReg : BasicMsgRegistrator from ShapeExtend is protected;
|
||||||
myShape : Shape from TopoDS is protected;
|
myShape : Shape from TopoDS is protected;
|
||||||
myResult : Shape from TopoDS is protected;
|
myResult : Shape from TopoDS is protected;
|
||||||
myPrecision : Real is protected;
|
myPrecision : Real is protected;
|
||||||
|
@ -33,6 +33,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 <Message_Msg.hxx>
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : ShapeUpgrade_ShapeDivide
|
//function : ShapeUpgrade_ShapeDivide
|
||||||
@ -45,6 +46,7 @@ ShapeUpgrade_ShapeDivide::ShapeUpgrade_ShapeDivide() : myStatus(0)
|
|||||||
myMaxTol = 1; //Precision::Infinite() ?? pdn
|
myMaxTol = 1; //Precision::Infinite() ?? pdn
|
||||||
mySplitFaceTool = new ShapeUpgrade_FaceDivide;
|
mySplitFaceTool = new ShapeUpgrade_FaceDivide;
|
||||||
myContext = new ShapeBuild_ReShape;
|
myContext = new ShapeBuild_ReShape;
|
||||||
|
//myMsgReg = new ShapeExtend_BasicMsgRegistrator;
|
||||||
mySegmentMode = Standard_True;
|
mySegmentMode = Standard_True;
|
||||||
myEdgeMode = 2;
|
myEdgeMode = 2;
|
||||||
}
|
}
|
||||||
@ -187,6 +189,8 @@ Standard_Boolean ShapeUpgrade_ShapeDivide::Perform(const Standard_Boolean newCon
|
|||||||
SplitWire->SetMinTolerance(myMinTol);
|
SplitWire->SetMinTolerance(myMinTol);
|
||||||
SplitWire->SetEdgeMode(myEdgeMode);
|
SplitWire->SetEdgeMode(myEdgeMode);
|
||||||
}
|
}
|
||||||
|
Message_Msg doneMsg = GetFaceMsg();
|
||||||
|
|
||||||
for(TopExp_Explorer exp(myShape,TopAbs_FACE); exp.More(); exp.Next()) {
|
for(TopExp_Explorer exp(myShape,TopAbs_FACE); exp.More(); exp.Next()) {
|
||||||
//smh#8
|
//smh#8
|
||||||
TopoDS_Shape tmpF = exp.Current().Oriented ( TopAbs_FORWARD );
|
TopoDS_Shape tmpF = exp.Current().Oriented ( TopAbs_FORWARD );
|
||||||
@ -206,6 +210,7 @@ Standard_Boolean ShapeUpgrade_ShapeDivide::Perform(const Standard_Boolean newCon
|
|||||||
}
|
}
|
||||||
if(SplitFace->Status(ShapeExtend_DONE)) {
|
if(SplitFace->Status(ShapeExtend_DONE)) {
|
||||||
myContext->Replace(face,SplitFace->Result());
|
myContext->Replace(face,SplitFace->Result());
|
||||||
|
SendMsg( face, doneMsg, Message_Info );
|
||||||
if(SplitFace->Status(ShapeExtend_DONE1))
|
if(SplitFace->Status(ShapeExtend_DONE1))
|
||||||
myStatus |= ShapeExtend::EncodeStatus ( ShapeExtend_DONE1 );
|
myStatus |= ShapeExtend::EncodeStatus ( ShapeExtend_DONE1 );
|
||||||
if(SplitFace->Status(ShapeExtend_DONE2))
|
if(SplitFace->Status(ShapeExtend_DONE2))
|
||||||
@ -232,6 +237,8 @@ Standard_Boolean ShapeUpgrade_ShapeDivide::Perform(const Standard_Boolean newCon
|
|||||||
SplitWire->SetMaxTolerance(myMaxTol);
|
SplitWire->SetMaxTolerance(myMaxTol);
|
||||||
SplitWire->SetMinTolerance(myMinTol);
|
SplitWire->SetMinTolerance(myMinTol);
|
||||||
SplitWire->SetEdgeMode(myEdgeMode);
|
SplitWire->SetEdgeMode(myEdgeMode);
|
||||||
|
Message_Msg doneMsg = GetWireMsg();
|
||||||
|
|
||||||
TopExp_Explorer exp;//svv Jan 10 2000 : porting on DEC
|
TopExp_Explorer exp;//svv Jan 10 2000 : porting on DEC
|
||||||
for (exp.Init (myShape, TopAbs_WIRE, TopAbs_FACE); exp.More(); exp.Next()) {
|
for (exp.Init (myShape, TopAbs_WIRE, TopAbs_FACE); exp.More(); exp.Next()) {
|
||||||
//smh#8
|
//smh#8
|
||||||
@ -248,12 +255,14 @@ Standard_Boolean ShapeUpgrade_ShapeDivide::Perform(const Standard_Boolean newCon
|
|||||||
}
|
}
|
||||||
if(SplitWire->Status(ShapeExtend_DONE)) {
|
if(SplitWire->Status(ShapeExtend_DONE)) {
|
||||||
myContext->Replace(wire,SplitWire->Wire());
|
myContext->Replace(wire,SplitWire->Wire());
|
||||||
|
SendMsg( wire, doneMsg, Message_Info );
|
||||||
myStatus |= ShapeExtend::EncodeStatus ( ShapeExtend_DONE1 );
|
myStatus |= ShapeExtend::EncodeStatus ( ShapeExtend_DONE1 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Process free EDGEs
|
// Process free EDGEs
|
||||||
|
Message_Msg edgeDoneMsg = GetEdgeMsg();
|
||||||
for (exp.Init (myShape, TopAbs_EDGE, TopAbs_WIRE); exp.More(); exp.Next()) {
|
for (exp.Init (myShape, TopAbs_EDGE, TopAbs_WIRE); exp.More(); exp.Next()) {
|
||||||
//smh#8
|
//smh#8
|
||||||
TopoDS_Shape tmpE = exp.Current().Oriented ( TopAbs_FORWARD );
|
TopoDS_Shape tmpE = exp.Current().Oriented ( TopAbs_FORWARD );
|
||||||
@ -272,6 +281,7 @@ Standard_Boolean ShapeUpgrade_ShapeDivide::Perform(const Standard_Boolean newCon
|
|||||||
}
|
}
|
||||||
if(SplitWire->Status(ShapeExtend_DONE)) {
|
if(SplitWire->Status(ShapeExtend_DONE)) {
|
||||||
myContext->Replace(edge,SplitWire->Wire());
|
myContext->Replace(edge,SplitWire->Wire());
|
||||||
|
SendMsg( edge, edgeDoneMsg, Message_Info );
|
||||||
myStatus |= ShapeExtend::EncodeStatus ( ShapeExtend_DONE1 );
|
myStatus |= ShapeExtend::EncodeStatus ( ShapeExtend_DONE1 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -351,3 +361,49 @@ Standard_Boolean ShapeUpgrade_ShapeDivide::Status (const ShapeExtend_Status stat
|
|||||||
{
|
{
|
||||||
myEdgeMode = aEdgeMode;
|
myEdgeMode = aEdgeMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : SetMsgRegistrator
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
void ShapeUpgrade_ShapeDivide::SetMsgRegistrator(const Handle(ShapeExtend_BasicMsgRegistrator)& msgreg)
|
||||||
|
{
|
||||||
|
myMsgReg = msgreg;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : MsgRegistrator
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
Handle(ShapeExtend_BasicMsgRegistrator) ShapeUpgrade_ShapeDivide::MsgRegistrator() const
|
||||||
|
{
|
||||||
|
return myMsgReg;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
//function : SendMsg
|
||||||
|
//purpose :
|
||||||
|
//=======================================================================
|
||||||
|
|
||||||
|
void ShapeUpgrade_ShapeDivide::SendMsg(const TopoDS_Shape& shape,
|
||||||
|
const Message_Msg& message,
|
||||||
|
const Message_Gravity gravity) const
|
||||||
|
{
|
||||||
|
if ( !myMsgReg.IsNull() )
|
||||||
|
myMsgReg->Send (shape, message, gravity);
|
||||||
|
}
|
||||||
|
|
||||||
|
Message_Msg ShapeUpgrade_ShapeDivide::GetFaceMsg() const
|
||||||
|
{
|
||||||
|
return "ShapeDivide.FaceDivide.MSG0";
|
||||||
|
}
|
||||||
|
Message_Msg ShapeUpgrade_ShapeDivide::GetWireMsg() const
|
||||||
|
{
|
||||||
|
return "ShapeDivide.WireDivide.MSG0";
|
||||||
|
}
|
||||||
|
Message_Msg ShapeUpgrade_ShapeDivide::GetEdgeMsg() const
|
||||||
|
{
|
||||||
|
return "ShapeDivide.EdgeDivide.MSG0";
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user