Merge branch 'master' into V9_dev

This commit is contained in:
rnv 2017-07-19 19:36:08 +03:00
commit 5e7cf6df5a
19 changed files with 148 additions and 29 deletions

View File

@ -150,7 +150,7 @@ static Standard_Boolean IsToMerge
// Check if they belong to the same faces.
Standard_Boolean isSame = Standard_False;
Standard_Boolean has1 = theMapEdgeFaces.Contains(theEdge1);
Standard_Boolean has2 = theMapEdgeFaces.Contains(theEdge1);
Standard_Boolean has2 = theMapEdgeFaces.Contains(theEdge2);
if (has1 && has2) {
const TopTools_ListOfShape &aLst1 = theMapEdgeFaces.FindFromKey(theEdge1);

View File

@ -246,6 +246,9 @@ static Standard_Boolean IsEdgeValidToMerge(const TopoDS_Edge &theEdge,
Standard_Boolean isValid = Standard_True;
if (BRep_Tool::IsClosed(theEdge, theFace)) {
// Mantis issue 0023451, now code corresponds to the comment to this method
isValid = Standard_False;
// This is a seam edge. Check if there are another seam edges on the face.
TopExp_Explorer anExp(theFace, TopAbs_EDGE);
@ -261,7 +264,9 @@ static Standard_Boolean IsEdgeValidToMerge(const TopoDS_Edge &theEdge,
TopoDS_Edge anEdge = TopoDS::Edge(aShEdge);
if (BRep_Tool::IsClosed(anEdge, theFace)) {
isValid = Standard_False;
// Mantis issue 0023451, now code corresponds to the comment to this method
//isValid = Standard_False;
isValid = Standard_True;
break;
}
}

View File

@ -146,7 +146,7 @@ gp_Pnt CurveCreator_Utils::ConvertClickToPoint( int x, int y, Handle(V3d_View) a
// we need the projection to the XOY plane
// 1. find a point in the plane of the eye and the normal to the plane
Standard_Real X, Y, Z;
Quantity_Parameter Vx, Vy, Vz;
Standard_Real Vx, Vy, Vz;
aView->ConvertWithProj( x, y, X, Y, Z, Vx, Vy, Vz );
// 2. build a ray from the point by the normal to the XOY plane and intersect it

View File

@ -822,12 +822,7 @@ void GEOM_Function::AddSubShapeReference(Handle(GEOM_Function) theSubShape)
TDF_Label aSubShapesLabel = _label.FindChild(SUBSHAPES_LABEL);
Handle(TDataStd_ExtStringList) aList;
if (!aSubShapesLabel.FindAttribute(TDataStd_ExtStringList::GetID(), aList)) {
aList = new TDataStd_ExtStringList;
aSubShapesLabel.AddAttribute(aList);
}
Handle(TDataStd_ExtStringList) aList = TDataStd_ExtStringList::Set( aSubShapesLabel );
TCollection_AsciiString anEntry;
TDF_Tool::Entry(theSubShape->GetOwnerEntry(), anEntry);
aList->Append(anEntry);
@ -880,11 +875,7 @@ const TDataStd_ListOfExtendedString& GEOM_Function::GetSubShapeReferences()
TDF_Label aSubShapesLabel = _label.FindChild(SUBSHAPES_LABEL);
Handle(TDataStd_ExtStringList) aList;
if (!aSubShapesLabel.FindAttribute(TDataStd_ExtStringList::GetID(), aList)) {
aList = new TDataStd_ExtStringList;
aSubShapesLabel.AddAttribute(aList);
}
Handle(TDataStd_ExtStringList) aList = TDataStd_ExtStringList::Set( aSubShapesLabel );
_isDone = true;
return aList->List();

View File

@ -61,20 +61,20 @@ namespace GEOM
Standard_EXPORT TPythonDump& operator<< (const char* theArg);
Standard_EXPORT TPythonDump& operator<< (const TCollection_AsciiString theArg);
Standard_EXPORT TPythonDump& operator<< (const TopAbs_ShapeEnum theArg);
Standard_EXPORT TPythonDump& operator<< (const Handle(GEOM_BaseObject)& theObject);
Standard_EXPORT TPythonDump& operator<< (const Handle(::GEOM_BaseObject)& theObject);
Standard_EXPORT TPythonDump& operator<< (const Handle(TColStd_HSequenceOfTransient)& objects);
Standard_EXPORT TPythonDump& operator<< (const std::list<Handle(GEOM_Object)>& theObjects);
Standard_EXPORT TPythonDump& operator<< (const std::list<Handle(::GEOM_Object)>& theObjects);
Standard_EXPORT TPythonDump& operator<< (const GEOM_BaseObject* theObject);
};
/*! Returns an object from two given, which has the latest entry
*/
Standard_EXPORT Handle(GEOM_Object) GetCreatedLast (const Handle(GEOM_Object)& theObj1,
const Handle(GEOM_Object)& theObj2);
Standard_EXPORT Handle(::GEOM_Object) GetCreatedLast (const Handle(::GEOM_Object)& theObj1,
const Handle(::GEOM_Object)& theObj2);
/*! Returns an object from \a theObjects, which has the latest entry
*/
Standard_EXPORT Handle(GEOM_Object) GetCreatedLast (const Handle(TColStd_HSequenceOfTransient)& theObjects);
Standard_EXPORT Handle(::GEOM_Object) GetCreatedLast (const Handle(TColStd_HSequenceOfTransient)& theObjects);
}
#endif

View File

@ -225,7 +225,11 @@ void GEOMAlgo_RemoverWebs::BuildSolid()
aSB.SetContext(myContext);
aSB.SetShapes(aSFS);
aSB.Perform();
#if OCC_VERSION_LARGE > 0x07010001
iErr=aSB.HasErrors();
#else
iErr=aSB.ErrorStatus();
#endif
if (iErr) {
myErrorStatus=20; // SolidBuilder failed
return;

View File

@ -101,7 +101,9 @@ GEOMAlgo_ShellSolidBuilder::~GEOMAlgo_ShellSolidBuilder()
//=======================================================================
void GEOMAlgo_ShellSolidBuilder::PerformInternal(const BOPAlgo_PaveFiller& theFiller)
{
#if OCC_VERSION_LARGE <= 0x07010000
myErrorStatus=0;
#endif
//
myPaveFiller=(BOPAlgo_PaveFiller*)&theFiller;
myDS=myPaveFiller->PDS();
@ -109,57 +111,97 @@ void GEOMAlgo_ShellSolidBuilder::PerformInternal(const BOPAlgo_PaveFiller& theFi
//
// 1. CheckData
CheckData();
#if OCC_VERSION_LARGE > 0x07010001
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
//
// 2. Prepare
Prepare();
#if OCC_VERSION_LARGE > 0x07010001
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
//
// 3. Fill Images
// 3.1 Vertice
FillImagesVertices();
#if OCC_VERSION_LARGE > 0x07010001
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
//
BuildResult(TopAbs_VERTEX);
#if OCC_VERSION_LARGE > 0x07010001
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
// 3.2 Edges
FillImagesEdges();
#if OCC_VERSION_LARGE > 0x07010001
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
//
BuildResult(TopAbs_EDGE);
#if OCC_VERSION_LARGE > 0x07010001
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
//
// 3.3 Wires
FillImagesContainers(TopAbs_WIRE);
#if OCC_VERSION_LARGE > 0x07010001
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
//
BuildResult(TopAbs_WIRE);
#if OCC_VERSION_LARGE > 0x07010001
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
// 3.4 Faces
FillImagesFaces();
#if OCC_VERSION_LARGE > 0x07010001
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
//
BuildResult(TopAbs_FACE);
#if OCC_VERSION_LARGE > 0x07010001
if (HasErrors()) {
#else
if (myErrorStatus) {
#endif
return;
}
}
@ -186,7 +228,9 @@ GEOMAlgo_ShellSolid::~GEOMAlgo_ShellSolid()
//=======================================================================
void GEOMAlgo_ShellSolid::Perform()
{
#if OCC_VERSION_LARGE <= 0x07010000
myErrorStatus=0;
#endif
//
try {
Standard_Integer aNbArgs, iRank, iErr, iBeg, iEnd, i, aNbSp;
@ -207,7 +251,11 @@ void GEOMAlgo_ShellSolid::Perform()
myErrorStatus=10;
return;
}
#if OCC_VERSION_LARGE > 0x07010001
if(myDSFiller->HasErrors()) {
#else
if(myDSFiller->ErrorStatus()) {
#endif
myErrorStatus=11;
return;
}
@ -251,7 +299,11 @@ void GEOMAlgo_ShellSolid::Perform()
GEOMAlgo_ShellSolidBuilder aSSB;
//
aSSB.PerformWithFiller(*myDSFiller);
#if OCC_VERSION_LARGE > 0x07010001
iErr=aSSB.HasErrors();
#else
iErr=aSSB.ErrorStatus();
#endif
if (iErr) {
myErrorStatus=15;
return;

View File

@ -37,6 +37,7 @@
#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <TopTools_IndexedMapOfShape.hxx>
#include <Basics_OCCTVersion.hxx>
#include <GEOMAlgo_IndexedDataMapOfShapeState.hxx>
@ -84,7 +85,11 @@ void GEOMAlgo_SolidSolid::Perform()
myErrorStatus=10;
return;
}
#if OCC_VERSION_LARGE > 0x07010001
if(myDSFiller->HasErrors()) {
#else
if(myDSFiller->ErrorStatus()) {
#endif
myErrorStatus=11;
return;
}

View File

@ -41,6 +41,7 @@
#include <BOPTools.hxx>
#include <Basics_OCCTVersion.hxx>
static
void TreatCompound(const TopoDS_Shape& aC,
@ -149,7 +150,9 @@ void GEOMAlgo_Splitter::Clear()
//=======================================================================
void GEOMAlgo_Splitter::BuildResult(const TopAbs_ShapeEnum theType)
{
#if OCC_VERSION_LARGE <= 0x07010000
myErrorStatus=0;
#endif
//
TopAbs_ShapeEnum aType;
BRep_Builder aBB;

View File

@ -90,7 +90,11 @@ void GEOMAlgo_VertexSolid::Perform()
myErrorStatus=10;
return;
}
#if OCC_VERSION_LARGE > 0x07010001
if(myDSFiller->HasErrors()) {
#else
if(myDSFiller->ErrorStatus()) {
#endif
myErrorStatus=11;
return;
}

View File

@ -80,7 +80,11 @@ void GEOMAlgo_WireSolid::Perform()
myErrorStatus=10;
return;
}
#if OCC_VERSION_LARGE > 0x07010001
if(myDSFiller->HasErrors()) {
#else
if(myDSFiller->ErrorStatus()) {
#endif
myErrorStatus=11;
return;
}

View File

@ -150,11 +150,19 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(LOGBOOK& log) const
aList2.Append(aShape2);
aCSI.SetArguments(aList1);
aCSI.Perform();
#if OCC_VERSION_LARGE > 0x07010001
if (aCSI.HasErrors() || aCSI.DS().Interferences().Extent() > 0)
#else
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0)
#endif
StdFail_NotDone::Raise("Boolean operation will not be performed, because argument shape is self-intersected");
aCSI.SetArguments(aList2);
aCSI.Perform();
#if OCC_VERSION_LARGE > 0x07010001
if (aCSI.HasErrors() || aCSI.DS().Interferences().Extent() > 0)
#else
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0)
#endif
StdFail_NotDone::Raise("Boolean operation will not be performed, because argument shape is self-intersected");
}
@ -205,7 +213,11 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(LOGBOOK& log) const
aList1.Append(aShape);
aCSI.SetArguments(aList1);
aCSI.Perform();
#if OCC_VERSION_LARGE > 0x07010001
if (aCSI.HasErrors() || aCSI.DS().Interferences().Extent() > 0) {
#else
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0) {
#endif
StdFail_NotDone::Raise("Boolean operation will not be performed, because argument shape is self-intersected");
}
}
@ -229,7 +241,11 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(LOGBOOK& log) const
aList2.Append(aShape2);
aCSI.SetArguments(aList2);
aCSI.Perform();
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0) {
#if OCC_VERSION_LARGE > 0x07010001
if (aCSI.HasErrors() || aCSI.DS().Interferences().Extent() > 0) {
#else
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0) {
#endif
StdFail_NotDone::Raise("Boolean operation will not be performed, because argument shape is self-intersected");
}
}
@ -270,7 +286,11 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(LOGBOOK& log) const
aList1.Append(aShape);
aCSI.SetArguments(aList1);
aCSI.Perform();
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0) {
#if OCC_VERSION_LARGE > 0x07010001
if (aCSI.HasErrors() || aCSI.DS().Interferences().Extent() > 0) {
#else
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0) {
#endif
StdFail_NotDone::Raise("Boolean operation will not be performed, because argument shape is self-intersected");
}
}
@ -300,7 +320,11 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(LOGBOOK& log) const
aList2.Append(aTool);
aCSI.SetArguments(aList2);
aCSI.Perform();
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0) {
#if OCC_VERSION_LARGE > 0x07010001
if (aCSI.HasErrors() || aCSI.DS().Interferences().Extent() > 0) {
#else
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0) {
#endif
StdFail_NotDone::Raise("Boolean operation will not be performed, because argument shape is self-intersected");
}
}

View File

@ -145,7 +145,9 @@ GEOMImpl_IMeasureOperations::ShapeKind GEOMImpl_IMeasureOperations::KindOfShape
GEOMAlgo_ShapeInfoFiller aSF;
aSF.SetShape(aShape);
aSF.Perform();
Standard_Integer iErr = aSF.ErrorStatus();
if (iErr) {
SetErrorCode("Error in GEOMAlgo_ShapeInfoFiller");
return SK_NO_SHAPE;
@ -1574,7 +1576,11 @@ bool GEOMImpl_IMeasureOperations::CheckSelfIntersections
// 1. Launch the checker
aCSI.Perform();
#if OCC_VERSION_LARGE > 0x07010001
Standard_Boolean iErr = aCSI.HasErrors();
#else
Standard_Integer iErr = aCSI.ErrorStatus();
#endif
//
Standard_Integer aNbS, n1, n2;
@ -2029,7 +2035,7 @@ GEOMImpl_IMeasureOperations::AreCoordsInside(Handle(GEOM_Object) theShape
project.NbPoints() > 0 &&
project.LowerDistance() <= tolerance )
{
Quantity_Parameter u, v;
Standard_Real u, v;
project.LowerDistanceParameters(u, v);
gp_Pnt2d uv( u, v );
BRepClass_FaceClassifier FC ( face, uv, tolerance );

View File

@ -44,6 +44,9 @@
#include <Standard_NullObject.hxx>
#include <StdFail_NotDone.hxx>
#include <BOPAlgo_CheckerSI.hxx>
#if OCC_VERSION_LARGE > 0x07010001
#include <BOPAlgo_Alerts.hxx>
#endif
#include <BOPCol_IndexedDataMapOfShapeListOfShape.hxx>
#include <BOPCol_ListOfShape.hxx>
#include <BOPDS_DS.hxx>
@ -106,8 +109,11 @@ static void CheckSelfIntersection(const TopoDS_Shape &theShape)
aCSI.SetLevelOfCheck(BOP_SELF_INTERSECTIONS_LEVEL);
aCSI.SetArguments(aList);
aCSI.Perform();
#if OCC_VERSION_LARGE > 0x07010001
if (aCSI.HasErrors() || aCSI.DS().Interferences().Extent() > 0) {
#else
if (aCSI.ErrorStatus() || aCSI.DS().Interferences().Extent() > 0) {
#endif
StdFail_NotDone::Raise("Partition operation will not be performed, because argument shape is self-intersected");
}
}
@ -411,7 +417,11 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(LOGBOOK& log) const
aShape = PS.Shape();
if (aShape.IsNull()) {
// Mantis issue 22009
#if OCC_VERSION_LARGE > 0x07010001
if (PS.HasError(STANDARD_TYPE(BOPAlgo_AlertTooFewArguments)) && PS.Tools().Extent() == 0 && PS.Arguments().Extent() == 1)
#else
if (PS.ErrorStatus() == 100 && PS.Tools().Extent() == 0 && PS.Arguments().Extent() == 1)
#endif
aShape = PS.Arguments().First();
else
return 0;

View File

@ -160,7 +160,7 @@ Standard_Integer GEOMImpl_ProjectionDriver::Execute(LOGBOOK& log) const
Standard_ConstructionError::Raise("No solution found");
}
Quantity_Parameter U, V;
Standard_Real U, V;
proj.LowerDistanceParameters(U, V);
gp_Pnt2d aProjPnt (U, V);
@ -170,7 +170,7 @@ Standard_Integer GEOMImpl_ProjectionDriver::Execute(LOGBOOK& log) const
bool isSol = false;
double minDist = RealLast();
for (int i = 1; i <= nbPoints; i++) {
Quantity_Parameter Ui, Vi;
Standard_Real Ui, Vi;
proj.Parameters(i, Ui, Vi);
aProjPnt = gp_Pnt2d(Ui, Vi);
aClsf.Perform(aFace, aProjPnt, tol);

View File

@ -770,7 +770,11 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(LOGBOOK& log) const
aMV.SetArguments(aLS);
aMV.SetIntersect(aCI.GetIsIntersect());
aMV.Perform();
#if OCC_VERSION_LARGE > 0x07010001
if (aMV.HasErrors()) return 0;
#else
if (aMV.ErrorStatus()) return 0;
#endif
aShape = aMV.Shape();
}

View File

@ -96,6 +96,10 @@
#include <sstream>
#include <algorithm>
#if OCC_VERSION_LARGE >= 0x07010000
#include <V3d_Coordinate.hxx>
#endif
#include <Standard_Failure.hxx>
#include <Standard_NullObject.hxx>
#include <Standard_ErrorHandler.hxx> // CAREFUL ! position of this file is critic : see Lucien PIGNOLONI / OCC

View File

@ -76,7 +76,6 @@
#include <TColgp_SequenceOfDir.hxx>
#include <V3d_View.hxx>
// plane associated with custom data
struct PlaneAndSegment
{
@ -1147,8 +1146,8 @@ template <typename TPlane>
TPlane MeasureGUI_DimensionCreateTool::SelectPlaneForProjection( const NCollection_Sequence<TPlane>& thePlanes,
const Handle(V3d_View)& theView ) const
{
Quantity_Parameter U[3];
Quantity_Parameter N[3];
Standard_Real U[3];
Standard_Real N[3];
theView->Up( U[0], U[1], U[2] );
theView->Proj( N[0], N[1], N[2] );

View File

@ -56,6 +56,10 @@
#include <Geom_Plane.hxx>
#include <NCollection_Sequence.hxx>
#if OCC_VERSION_LARGE >= 0x07010000
#include <Quantity_Length.hxx>
#endif
//=================================================================================
// function : Constructor
// purpose :