TopoDS_Shape HYDROData_ImmersibleZone::generateTopShape( const Handle(HYDROData_PolylineXY)& aPolyline )
{
- DEBTRACE("generateTopShape");
+ //DEBTRACE("generateTopShape");
TopoDS_Face aResultFace = TopoDS_Face(); // --- result: default = null face
if (!aPolyline.IsNull())
if (!aPolylineShape.IsNull() && aPolylineShape.ShapeType() == TopAbs_WIRE)
{
// --- only one wire: try to make a face
- DEBTRACE("one wire: try to build a face");
+ //DEBTRACE("one wire: try to build a face");
const TopoDS_Wire& aPolylineWire = TopoDS::Wire(aPolylineShape);
if (!aPolylineWire.IsNull())
{
aMakeFace.Build();
if (aMakeFace.IsDone())
{
- DEBTRACE(" a face with the only wire given");
+ //DEBTRACE(" a face with the only wire given");
aResultFace = aMakeFace.Face();
}
}
Handle(TopTools_HSequenceOfShape) aSeqWires = new TopTools_HSequenceOfShape;
Handle(TopTools_HSequenceOfShape) aSeqEdges = new TopTools_HSequenceOfShape;
TopExp_Explorer anExp(aPolylineShape, TopAbs_WIRE);
- DEBTRACE("list of wires ?");
+ //DEBTRACE("list of wires ?");
for (; anExp.More(); anExp.Next())
{
if (!anExp.Current().IsNull())
{
const TopoDS_Wire& aWire = TopoDS::Wire(anExp.Current());
aWiresList.Append(aWire);
- DEBTRACE(" append wire");
+ //DEBTRACE(" append wire");
TopExp_Explorer it2(aWire, TopAbs_EDGE);
for (; it2.More(); it2.Next())
aSeqEdges->Append(it2.Current());
if (aSeqEdges->Length() > 1)
{
- DEBTRACE("try to connect all the edges together, build a unique wire and a face");
+ //DEBTRACE("try to connect all the edges together, build a unique wire and a face");
// --- try to create one wire by connecting edges with a distance tolerance (no necessity of sharing points)
ShapeAnalysis_FreeBounds::ConnectEdgesToWires(aSeqEdges, 1E-5, Standard_False, aSeqWires);
aMakeFace.Build();
if (aMakeFace.IsDone())
{
- DEBTRACE(" a face from all the wires connected");
+ //DEBTRACE(" a face from all the wires connected");
aResultFace = aMakeFace.Face();
}
}
if (aResultFace.IsNull())
{
- DEBTRACE("try to make a face with the first wire of the list and other wires as restrictions");
+ //DEBTRACE("try to make a face with the first wire of the list and other wires as restrictions");
// --- try to make a face with the first wire of the list and other wires as restrictions
BRepAlgo_FaceRestrictor aFR;
TopoDS_Face aRefFace;
aMakeFace.Build();
if (aMakeFace.IsDone())
{
- DEBTRACE(" a face with first wire");
+ //DEBTRACE(" a face with first wire");
aRefFace = aMakeFace.Face();
}
if (!aRefFace.IsNull())
{
for (; aFR.More(); aFR.Next())
{
- DEBTRACE(" a restricted face");
+ //DEBTRACE(" a restricted face");
aResultFace = aFR.Current();
break;
}
if (aResultFace.IsNull())
return aResultFace;
- DEBTRACE("check the face");
+ //DEBTRACE("check the face");
BRepCheck_Analyzer anAnalyzer(aResultFace);
if (anAnalyzer.IsValid() && aResultFace.ShapeType() == TopAbs_FACE)
- {
- DEBTRACE("face OK");
- return aResultFace;
- }
+ {
+ //DEBTRACE("face OK");
+ return aResultFace;
+ }
else
- DEBTRACE("bad face");
+ {
+ //DEBTRACE("bad face");
+ }
return TopoDS_Face();
}
double theDeflection,
const Handle( HYDROData_PolylineXY )& theOldPolyline )
{
- DEBTRACE("convertEdgesToSections")
+ //DEBTRACE("convertEdgesToSections")
Standard_Real aFirst = 0.0, aLast = 0.0;
Handle(Geom_Curve) anEdgeGeomCurve = BRep_Tool::Curve( theEdge, aFirst, aLast );
if ( anEdgeGeomCurve.IsNull() )
return false;
bool isPrevious = (theSectTypes.Size() > 0);
- DEBTRACE("nb sections: " << theSectTypes.Size());
+ //DEBTRACE("nb sections: " << theSectTypes.Size());
HYDROData_PolylineXY::SectionType prevSectType = HYDROData_PolylineXY::SECTION_SPLINE;;
HYDROData_PolylineXY::PointsList prevPointList;
bool isPrevClosed = true;
}
bool isNewSection = !isPrevious || isPrevClosed || anIsEdgeClosed || prevSectType != aSectionType;
- DEBTRACE(isNewSection <<": " << !isPrevious << " " << isPrevClosed << " " << anIsEdgeClosed << " " << (prevSectType != aSectionType));
+ //DEBTRACE(isNewSection <<": " << !isPrevious << " " << isPrevClosed << " " << anIsEdgeClosed << " " << (prevSectType != aSectionType));
HYDROData_PolylineXY::PointsList aPointsList;
if (!isNewSection)
if( aSectionType == HYDROData_PolylineXY::SECTION_POLYLINE )
{
- DEBTRACE("SECTION_POLYLINE");
+ //DEBTRACE("SECTION_POLYLINE");
Handle(Geom_Line) aGeomLine = Handle(Geom_Line)::DownCast( anEdgeGeomCurve );
gp_Pnt aFirstPoint, aLastPoint;
{
if (aSectFirstPoint == prevPointList.Last())
{
- DEBTRACE("points shared: a");//aPointsList.Append( aSectFirstPoint );
+ //DEBTRACE("points shared: a");//aPointsList.Append( aSectFirstPoint );
aPointsList.Append( aSectLastPoint );
}
else if (aSectLastPoint == prevPointList.Last())
{
- DEBTRACE("points shared: b");//aPointsList.Append( aSectLastPoint );
+ //DEBTRACE("points shared: b");//aPointsList.Append( aSectLastPoint );
aPointsList.Append( aSectFirstPoint );
}
else if (aSectFirstPoint == prevPointList.First())
{
- DEBTRACE("points shared: c");//aPointsList.Prepend( aSectFirstPoint );
+ //DEBTRACE("points shared: c");//aPointsList.Prepend( aSectFirstPoint );
aPointsList.Prepend( aSectLastPoint );
}
else if (aSectLastPoint == prevPointList.First())
{
- DEBTRACE("points shared: d");//aPointsList.Prepend( aSectLastPoint );
+ //DEBTRACE("points shared: d");//aPointsList.Prepend( aSectLastPoint );
aPointsList.Prepend( aSectFirstPoint );
}
else
{
- DEBTRACE("no point shared")
+ //DEBTRACE("no point shared")
isNewSection = true; // no point shared, new section
aPointsList.Clear();
aPointsList.Append( aSectFirstPoint );
}
else
{
- DEBTRACE("new section");
+ //DEBTRACE("new section");
aPointsList.Append( aSectFirstPoint );
aPointsList.Append( aSectLastPoint );
}
}
else // aSectionType == HYDROData_PolylineXY::SECTION_SPLINE
{
- DEBTRACE("SECTION_SPLINE");
+ //DEBTRACE("SECTION_SPLINE");
isNewSection = true;
aPointsList.Clear();
gp_Pnt endPts[] = {gp_Pnt(aPointsList.First().X(),aPointsList.First().Y(), 0),
gp_Pnt(aPointsList.Last().X(),aPointsList.Last().Y(), 0) };
- DEBTRACE("curve start: "<< endPts[0].X() << " " << endPts[0].Y());
- DEBTRACE("curve end: "<< endPts[1].X() << " " << endPts[1].Y());
+ //DEBTRACE("curve start: "<< endPts[0].X() << " " << endPts[0].Y());
+ //DEBTRACE("curve end: "<< endPts[1].X() << " " << endPts[1].Y());
}
else // --- split of a previous polyline: try to retrieve old sets of points and add intersection points
{
double midPar = (anAdaptorCurve.LastParameter() + anAdaptorCurve.FirstParameter())/2;
gp_Pnt midPnt;
anAdaptorCurve.D0(midPar, midPnt);
- DEBTRACE("curve first point: " << aEndPs[0].X() << " " << aEndPs[0].Y() << " " << aEndPs[0].Z());
- DEBTRACE("curve last point: " << aEndPs[1].X() << " " << aEndPs[1].Y() << " " << aEndPs[1].Z());
- DEBTRACE("curve mid point: " << midPnt.X() << " " << midPnt.Y() << " " << midPnt.Z());
+ //DEBTRACE("curve first point: " << aEndPs[0].X() << " " << aEndPs[0].Y() << " " << aEndPs[0].Z());
+ //DEBTRACE("curve last point: " << aEndPs[1].X() << " " << aEndPs[1].Y() << " " << aEndPs[1].Z());
+ //DEBTRACE("curve mid point: " << midPnt.X() << " " << midPnt.Y() << " " << midPnt.Z());
std::vector<TopoDS_Wire> aCurves;
HYDROData_PolylineOperator::GetWires(theOldPolyline, aCurves);
int nbSections = theOldPolyline->NbSections();
- DEBTRACE("nbSections: "<< nbSections << ", nbCurves: " << aCurves.size() );
+ //DEBTRACE("nbSections: "<< nbSections << ", nbCurves: " << aCurves.size() );
for (int isec = 0; isec < nbSections; isec++)
{
- DEBTRACE("section: "<< isec);
+ //DEBTRACE("section: "<< isec);
bool isOldSectionclosed = theOldPolyline->IsClosedSection(isec);
TopoDS_Wire aWire = aCurves[isec]; // we suppose sections and wires are in the same order
TopExp_Explorer anExp(aWire, TopAbs_EDGE);
BRepAdaptor_Curve adaptorOldCurve(anEdge);
double pfirst = adaptorOldCurve.FirstParameter();
double plast = adaptorOldCurve.LastParameter();
- DEBTRACE("previous curve first last : "<< pfirst << " " << plast);
+ //DEBTRACE("previous curve first last : "<< pfirst << " " << plast);
double p[3] = {-1, -1};
double d0= ProjectPointToCurve(aEndPs[0].XYZ(), adaptorOldCurve,p[0]);
double d1= ProjectPointToCurve(aEndPs[1].XYZ(), adaptorOldCurve,p[1]);
double d2= ProjectPointToCurve(midPnt.XYZ(), adaptorOldCurve, p[2]);
- DEBTRACE("d0: "<<d0<<" d1: "<<d1<<" d2: "<<d2<<" p0: "<<p[0]<<" p1: "<<p[1]<<" p2: "<<p[2]);
+ //DEBTRACE("d0: "<<d0<<" d1: "<<d1<<" d2: "<<d2<<" p0: "<<p[0]<<" p1: "<<p[1]<<" p2: "<<p[2]);
if ((d0 < 1.e-3) && (d1 < 1.e-3) && (d2 < 1.e-3)) // we got the good old curve (and the good section)
{
double pmin = p[0];
double pmax = p[1];
bool forward = true;
- DEBTRACE("isOldSectionclosed: " << isOldSectionclosed);
+ //DEBTRACE("isOldSectionclosed: " << isOldSectionclosed);
if (!isOldSectionclosed) // no need to check first and last points on an open curve
{
if (pmin > pmax)
else if ((abs(pmax - pfirst) <1.e-3) && (p[2] > pmin)) // forward, replace pmax par plast
pmax = plast;
}
- DEBTRACE("forward: "<< forward << " pmin " << pmin << " pmax " << pmax);
+ //DEBTRACE("forward: "<< forward << " pmin " << pmin << " pmax " << pmax);
HYDROData_PolylineXY::Point aFirstPoint, aLastPoint;
if (forward)
{
HYDROData_PolylineXY::PointsList aSectPoints = theOldPolyline->GetPoints(isec, false);
int nbPoints = aSectPoints.Length();
- DEBTRACE("nbPoints " << nbPoints);
+ //DEBTRACE("nbPoints " << nbPoints);
if (forward)
for (int i=1; i<=nbPoints; i++)
{
double d = ProjectPointToCurve(p, adaptorOldCurve, param);
if ((param > pmin) && (param < pmax))
{
- DEBTRACE("param: " << param);
+ //DEBTRACE("param: " << param);
aPointsList.Append(aPoint);
}
}
double d = ProjectPointToCurve(p, adaptorOldCurve, param);
if ((param > pmin) && (param < pmax))
{
- DEBTRACE("param: " << param);
+ //DEBTRACE("param: " << param);
aPointsList.Append(aPoint);
}
}
TCollection_AsciiString aSectName = getUniqueSectionName( theSectNames );
if (isNewSection)
{
- DEBTRACE("isNewSection");
+ //DEBTRACE("isNewSection");
theSectNames.Append( aSectName );
theSectTypes.Append( aSectionType );
theSectClosures.Append( anIsEdgeClosed );
}
else
{
- DEBTRACE("sameSection");
+ //DEBTRACE("sameSection");
theSectPoints.SetValue(theSectPoints.Length(), aPointsList);
}
bool IsClosureAllowed,
double theDeviation )
{
- DEBTRACE("ImportShape");
+ //DEBTRACE("ImportShape");
if ( theShape.IsNull() )
return false;
if ( theShape.ShapeType() == TopAbs_EDGE )
{
- DEBTRACE("TopAbs_EDGE");
+ //DEBTRACE("TopAbs_EDGE");
TopoDS_Edge anEdge = TopoDS::Edge( theShape );
// anIsCanBeImported = convertEdgeToSection( anEdge, aSectNames, aSectTypes,
// aSectClosures, aSectPoints, true, IsInterpolationAllowed, theDeviation );
}
else if ( theShape.ShapeType() == TopAbs_WIRE )
{
- DEBTRACE("TopAbs_WIRE");
+ //DEBTRACE("TopAbs_WIRE");
TopTools_SequenceOfShape anEdges;
HYDROData_ShapesTool::ExploreShapeToShapes( theShape, TopAbs_EDGE, anEdges );
HYDROData_DTM::CurveTo3D( HA, mid, wid, points, 0.0 );
CPPUNIT_ASSERT_EQUAL( 4, (int)points.size() );
- CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 15.673, -1.479, 5.0 ), points[0] );
- CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 14.259, -0.065, 5.0 ), points[1] );
- CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 16.380, -2.186, 6.0 ), points[2] );
+ CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 16.380, -2.186, 6.0 ), points[0] );
+ CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 15.673, -1.479, 5.0 ), points[1] );
+ CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 14.259, -0.065, 5.0 ), points[2] );
CPPUNIT_ASSERT_EQUAL( HYDROData_DTM::AltitudePoint( 12.137, 2.056, 6.0 ), points[3] );
aDoc->Close();
CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, DTM->GetSpatialStep(), EPS );
DTM->Update();
- CPPUNIT_ASSERT_EQUAL( 10098, (int)DTM->GetAltitudePoints().size() );
+ CPPUNIT_ASSERT_EQUAL( 9177, (int)DTM->GetAltitudePoints().size() );
Handle_AIS_InteractiveContext aContext = TestViewer::context();
HYDROGUI_ShapeBathymetry* aBathPrs = new HYDROGUI_ShapeBathymetry( 0, aContext, DTM );
profiles.Append( Handle(HYDROData_Profile)::DownCast( it.Current() ) );
}
- //CPPUNIT_ASSERT_EQUAL( 46, (int)profiles.Size() );
+ CPPUNIT_ASSERT_EQUAL( 11, (int)profiles.Size() );
CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, DTM->GetSpatialStep(), EPS );
DTM->Update();
- CPPUNIT_ASSERT_EQUAL( 277158, (int)DTM->GetAltitudePoints().size() );
+ CPPUNIT_ASSERT_EQUAL( 275690, (int)DTM->GetAltitudePoints().size() );
Handle_AIS_InteractiveContext aContext = TestViewer::context();
HYDROGUI_ShapeBathymetry* aBathPrs = new HYDROGUI_ShapeBathymetry( 0, aContext, DTM );