mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
0023182: During STEP translation isn't checked for validity flag IsClosed
Added check for consistency properties of closure and existence of free boundaries in shell (modified ShapeFix_Shell::Perform() Added new message in SHMessage/SHAPE.us)
This commit is contained in:
@@ -160,7 +160,8 @@ Faces were incorrectly oriented in the shell, corrected
|
|||||||
.FixAdvShell.FixOrientation.MSG5
|
.FixAdvShell.FixOrientation.MSG5
|
||||||
Faces were incorrectly oriented in the shell, not corrected
|
Faces were incorrectly oriented in the shell, not corrected
|
||||||
!
|
!
|
||||||
.FixAdvShell..MSG0
|
.FixAdvShell.FixClosedFlag.MSG0
|
||||||
|
Shell has incorrect flag isClosed
|
||||||
!
|
!
|
||||||
.FixAdvShell..MSG5
|
.FixAdvShell..MSG5
|
||||||
!
|
!
|
||||||
|
@@ -46,6 +46,7 @@
|
|||||||
#include <BRep_Builder.hxx>
|
#include <BRep_Builder.hxx>
|
||||||
#include <BRep_Tool.hxx>
|
#include <BRep_Tool.hxx>
|
||||||
|
|
||||||
|
#include <ShapeAnalysis_Shell.hxx>
|
||||||
#include <ShapeExtend.hxx>
|
#include <ShapeExtend.hxx>
|
||||||
#include <ShapeBuild_ReShape.hxx>
|
#include <ShapeBuild_ReShape.hxx>
|
||||||
#include <Message_Msg.hxx>
|
#include <Message_Msg.hxx>
|
||||||
@@ -148,6 +149,25 @@ Standard_Boolean ShapeFix_Shell::Perform(const Handle(Message_ProgressIndicator)
|
|||||||
TopoDS_Shape newsh = Context()->Apply(myShell);
|
TopoDS_Shape newsh = Context()->Apply(myShell);
|
||||||
if ( NeedFix ( myFixOrientationMode) )
|
if ( NeedFix ( myFixOrientationMode) )
|
||||||
FixFaceOrientation(TopoDS::Shell(newsh));
|
FixFaceOrientation(TopoDS::Shell(newsh));
|
||||||
|
|
||||||
|
TopoDS_Shape aNewsh = Context()->Apply (newsh);
|
||||||
|
ShapeAnalysis_Shell aSas;
|
||||||
|
for (TopExp_Explorer aShellExp (aNewsh, TopAbs_SHELL); aShellExp.More(); aShellExp.Next())
|
||||||
|
{
|
||||||
|
TopoDS_Shell aCurShell = TopoDS::Shell (aShellExp.Current());
|
||||||
|
if (aCurShell.Closed())
|
||||||
|
{
|
||||||
|
aSas.LoadShells (aCurShell);
|
||||||
|
aSas.CheckOrientedShells (aCurShell, Standard_True);
|
||||||
|
if (aSas.HasFreeEdges())
|
||||||
|
{
|
||||||
|
aCurShell.Closed (Standard_False);
|
||||||
|
SendWarning (Message_Msg ("FixAdvShell.FixClosedFlag.MSG0"));//Shell has incorrect flag isClosed
|
||||||
|
}
|
||||||
|
aSas.Clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ( status )
|
if ( status )
|
||||||
myStatus |= ShapeExtend::EncodeStatus ( ShapeExtend_DONE1 );
|
myStatus |= ShapeExtend::EncodeStatus ( ShapeExtend_DONE1 );
|
||||||
if(Status(ShapeExtend_DONE2))
|
if(Status(ShapeExtend_DONE2))
|
||||||
|
Reference in New Issue
Block a user