#include <HYDROData_Entity.h>
#include <HYDROData_Document.h>
#include <HYDROData_Profile.h>
+#include <HYDROData_Iterator.h>
#include <gp_XYZ.hxx>
#include <gp_XY.hxx>
{
}
+void HYDROData_SinusX::CollectExistingNames(Handle_HYDROData_Document theDocument)
+{
+ HYDROData_Iterator anIter( theDocument );
+ int anInd = 0;
+ myExistingNames.clear();
+ std::vector<int> anAllowedIndexes;
+ for( ; anIter.More(); anIter.Next() )
+ myExistingNames.push_back(anIter.Current()->GetName());
+}
+
+QString HYDROData_SinusX::GetName(const QString& theName)
+{
+ if (myExistingNames.contains(theName))
+ {
+ QString aName = theName;
+ while (myExistingNames.contains(aName))
+ {
+ QStringList aList = aName.split("_");
+ int aLastInd = aName.lastIndexOf("_");
+ bool IsNum = false;
+ int anInd = -1;
+ anInd = aList.last().toInt(&IsNum);
+ if (IsNum)
+ {
+ aName = aName.left(aLastInd) + "_";
+ /*for (int i = 0; i < aList.size() - 1; i++ )
+ aName += aList[i];*/
+ aName+= QString::number(++anInd);
+ }
+ else
+ aName = theName + "_0";
+ }
+
+ myExistingNames.push_back(aName);
+ return aName;
+ }
+ else
+ {
+ myExistingNames.push_back(theName);
+ return theName;
+ }
+
+}
+
bool HYDROData_SinusX::Import(const QString& theFilePath, Handle(HYDROData_Document) theDocument, NCollection_Sequence<Handle_HYDROData_Entity>& theEntities)
{
Parse(aFile);
+ CollectExistingNames(theDocument);
SXToHydro(theDocument, theEntities);
aFile.close();
aAPoints.Append(gp_XYZ (myCurveBlocks[i].myXYZPoints[j]));
aBath->SetAltitudePoints(aAPoints);
- aBath->SetName(myCurveBlocks[i].myName);
+ aBath->SetName(GetName(myCurveBlocks[i].myName + "_bath"));
theEntities.Append(aBath);
}
if (myCurveBlocks[i].myType == 1 || myCurveBlocks[i].myType == 3)
aProfileUZ->CalculateAndAddPoints(aPoints, aPolyXY);
Handle(HYDROData_Profile) aProfile = Handle(HYDROData_Profile)::DownCast( theDocument->CreateObject( KIND_PROFILE ) );
aProfile->SetParametricPoints(aProfileUZ->GetPoints());
- aPolyXY->SetName(myCurveBlocks[i].myName + "_polyXY");
- aProfileUZ->SetName(myCurveBlocks[i].myName + "_profileUZ");
- aProfile->SetName(myCurveBlocks[i].myName + "_profile");
+ aPolyXY->SetName(GetName(myCurveBlocks[i].myName + "_polyXY"));
+ aProfileUZ->SetName(GetName(myCurveBlocks[i].myName + "_profileUZ"));
+ aProfile->SetName(GetName(myCurveBlocks[i].myName + "_profile"));
theEntities.Append(aPolyXY);
theEntities.Append(aProfileUZ);
theEntities.Append(aProfile);
aProfile->SetRightPoint(gp_XY(myCurveBlocks[i].myAdditionalCurveInfo[2], myCurveBlocks[i].myAdditionalCurveInfo[3]));
aProfile->Update();
}
- aProfile->SetName(myCurveBlocks[i].myName + "_profile");
+ aProfile->SetName(GetName(myCurveBlocks[i].myName + "_profile"));
theEntities.Append(aProfile);
}
}
for (size_t j = 0; j < myCurveBlocks[i].myXYZPoints.size(); j++)
aPointList.Append(myCurveBlocks[i].myXYZPoints[j]);
aProfile->SetProfilePoints(aPointList);
- aProfile->SetName(myCurveBlocks[i].myName + "_profile");
+ aProfile->SetName(GetName(myCurveBlocks[i].myName + "_profile"));
theEntities.Append(aProfile);
}
}
}
-
-
bool HYDROData_SinusX::Parse(QFile& theFile)
{
if ( !theFile.isOpen() )
</message>
<message>
<source>DSK_IMPORT_SINUSX</source>
- <translation>Import entities from SinusX file</translation>
+ <translation>Import from SinusX</translation>
</message>
<message>
<source>DSK_LOAD_VISUAL_STATE</source>
</message>
<message>
<source>MEN_IMPORT_SINUSX</source>
- <translation>Import entities from SinusX file</translation>
+ <translation>Import from SinusX</translation>
</message>
<message>
<source>MEN_LOAD_VISUAL_STATE</source>
</message>
<message>
<source>STB_IMPORT_SINUSX</source>
- <translation>Import entities from SinusX file</translation>
+ <translation>Import from SinusX</translation>
</message>
<message>
<source>STB_LOAD_VISUAL_STATE</source>
<name>HYDROGUI_ImportSinusXOp</name>
<message>
<source>IMPORT_SINUSX</source>
- <translation>Import entities from SinusX file</translation>
+ <translation>Import from SinusX</translation>
</message>
<message>
<source>SINUSX_FILTER</source>