Handle(HYDROData_Bathymetry) aBath = Handle(HYDROData_Bathymetry)::DownCast( theDocument->CreateObject( KIND_BATHYMETRY ) );
HYDROData_Bathymetry::AltitudePoints aAPoints;
for (size_t j = 0; j < myCurveBlocks[i].myXYZPoints.size(); j++)
- aAPoints.Append(gp_XYZ (myCurveBlocks[i].myXYZPoints[j]));
+ {
+ gp_XYZ aLocalPoint = gp_XYZ (myCurveBlocks[i].myXYZPoints[j]);
+ theDocument->Transform(aLocalPoint, true);
+ aAPoints.Append(aLocalPoint);
+ }
aBath->SetAltitudePoints(aAPoints);
aBath->SetName(GetName(myCurveBlocks[i].myName + "_bath"));
theEntities.Append(aBath);
}
- if (myCurveBlocks[i].myType == 1 || myCurveBlocks[i].myType == 3)
+ if (myCurveBlocks[i].myType == 1 || myCurveBlocks[i].myType == 3) // XYZ curve or isocontour
{
NCollection_Sequence<gp_XYZ> aPoints;
for (size_t j = 0; j < myCurveBlocks[i].myXYZPoints.size(); j++)
- aPoints.Append(gp_XYZ (myCurveBlocks[i].myXYZPoints[j]));
+ {
+ gp_XYZ aLocalPoint = gp_XYZ (myCurveBlocks[i].myXYZPoints[j]);
+ theDocument->Transform(aLocalPoint, true);
+ aPoints.Append(aLocalPoint);
+ }
/*if (myCurveBlocks[i].myIsClosed)
aPoints.Append(gp_XYZ (myCurveBlocks[i].myXYZPoints[0]));*/
Handle(HYDROData_ProfileUZ) aProfileUZ = Handle(HYDROData_ProfileUZ)::DownCast( theDocument->CreateObject( KIND_PROFILEUZ ) );
theEntities.Append(aProfileUZ);
theEntities.Append(aProfile);
}
- if (myCurveBlocks[i].myType == 2)
+ if (myCurveBlocks[i].myType == 2) // XYZ profile
{
- if (myCurveBlocks[i].myCurvePlane == 2)
+ if (myCurveBlocks[i].myCurvePlane == 2) // plane XoZ
{
if (myCurveBlocks[i].myAdditionalCurveInfo.size() == 4)
{
aProfile->SetParametricPoints(aPointList);
if ( ! (myCurveBlocks[i].myAdditionalCurveInfo[0] == 0 && myCurveBlocks[i].myAdditionalCurveInfo[1] == 0 &&
myCurveBlocks[i].myAdditionalCurveInfo[2] == 0 && myCurveBlocks[i].myAdditionalCurveInfo[3] == 0) )
- {
- aProfile->SetLeftPoint(gp_XY(myCurveBlocks[i].myAdditionalCurveInfo[0], myCurveBlocks[i].myAdditionalCurveInfo[1]));
- aProfile->SetRightPoint(gp_XY(myCurveBlocks[i].myAdditionalCurveInfo[2], myCurveBlocks[i].myAdditionalCurveInfo[3]));
+ { // georeferenced profile
+ double xl = myCurveBlocks[i].myAdditionalCurveInfo[0];
+ double yl = myCurveBlocks[i].myAdditionalCurveInfo[1];
+ double xr = myCurveBlocks[i].myAdditionalCurveInfo[2];
+ double yr = myCurveBlocks[i].myAdditionalCurveInfo[3];
+ theDocument->Transform(xl, yl , true);
+ theDocument->Transform(xr, yr , true);
+ aProfile->SetLeftPoint(gp_XY(xl, yl));
+ aProfile->SetRightPoint(gp_XY(xr, yr));
aProfile->Update();
}
aProfile->SetName(GetName(myCurveBlocks[i].myName + "_profile"));
theEntities.Append(aProfile);
}
}
- if (myCurveBlocks[i].myCurvePlane == 0)
+ if (myCurveBlocks[i].myCurvePlane == 0) // plane XoY
{
Handle(HYDROData_Profile) aProfile = Handle(HYDROData_Profile)::DownCast( theDocument->CreateObject( KIND_PROFILE ) );
HYDROData_Profile::ProfilePoints aPointList;
for (size_t j = 0; j < myCurveBlocks[i].myXYZPoints.size(); j++)
- aPointList.Append(myCurveBlocks[i].myXYZPoints[j]);
+ {
+ gp_XYZ aLocalPoint = gp_XYZ (myCurveBlocks[i].myXYZPoints[j]);
+ theDocument->Transform(aLocalPoint, true);
+ aPointList.Append(aLocalPoint);
+ }
aProfile->GetProfileUZ()->SetSectionType(0, myCurveBlocks[i].myIsSpline ? HYDROData_PolylineXY::SECTION_SPLINE : HYDROData_PolylineXY::SECTION_POLYLINE);
aProfile->GetProfileUZ()->SetSectionClosed(0, myCurveBlocks[i].myIsClosed ? true : false);
aProfile->SetProfilePoints(aPointList);
{
HYDROGUI_CurveBlock aCurveBlockInfo;
if (aList[1] == "C")
- aCurveBlockInfo.myType = 1;
+ aCurveBlockInfo.myType = 1; // XYZ curve
else if (aList[1] == "P")
- aCurveBlockInfo.myType = 2;
+ aCurveBlockInfo.myType = 2; // XYZ profile
else if (aList[1] == "N")
- aCurveBlockInfo.myType = 3;
+ aCurveBlockInfo.myType = 3; // isocontour
else if (aList[1] == "S")
- aCurveBlockInfo.myType = 4;
+ aCurveBlockInfo.myType = 4; // Scatter plot
if (aList.size() == 9)
{
<< QString::number(aPointList(k).Y(), 'f', 3) << "\n";
}
}
-}
\ No newline at end of file
+}