You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
2.2 KiB
C++
92 lines
2.2 KiB
C++
#include "FITKAbstractSection.h"
|
|
#include "FITKAbstractMaterial.h"
|
|
#include "FITK_Kernel/FITKCore/FITKDataRepo.h"
|
|
|
|
namespace Interface
|
|
{
|
|
|
|
FITKAbstractSection::FITKAbstractSection()
|
|
{
|
|
static int ABSSECTIONID = 0;
|
|
_sectionID = ++ABSSECTIONID;
|
|
}
|
|
|
|
FITKAbstractSection::~FITKAbstractSection()
|
|
{
|
|
|
|
}
|
|
|
|
void FITKAbstractSection::setMaterial(int id, int index /*= 0*/)
|
|
{
|
|
//首先填充数组,保证索引有效
|
|
this->setSize(index + 1);
|
|
_materialIDs[index] = id;
|
|
}
|
|
|
|
void FITKAbstractSection::setMaterial(Core::FITKAbstractDataObject* mat, int index /*= 0*/)
|
|
{
|
|
if (mat == nullptr) return;
|
|
//首先填充数组,保证索引有效
|
|
this->setSize(index + 1);
|
|
_materialIDs[index] = mat->getDataObjectID();
|
|
}
|
|
|
|
int FITKAbstractSection::getMaterialID(int index /*= 0*/) const
|
|
{
|
|
//错误值-1
|
|
if (index <0 || index >= _materialIDs.size()) return -1;
|
|
return _materialIDs[index];
|
|
}
|
|
|
|
FITKAbstractMaterial* FITKAbstractSection::getMaterial(int index /*= 0*/) const
|
|
{
|
|
const int id = this->getMaterialID(index);
|
|
if (id < 0) return nullptr;
|
|
//仓库查找
|
|
return Core::FITKDataRepo::getInstance()->getTDataByID<FITKAbstractMaterial>(id);
|
|
}
|
|
|
|
QString FITKAbstractSection::getMaterialName(int index /*= 0*/) const
|
|
{
|
|
auto ma = this->getMaterial(index);
|
|
if (ma)
|
|
return ma->getDataObjectName();
|
|
//错误值
|
|
return "";
|
|
}
|
|
|
|
int FITKAbstractSection::getMaterialCount()
|
|
{
|
|
return _materialIDs.size();
|
|
}
|
|
|
|
void FITKAbstractSection::removeMaterial(int index)
|
|
{
|
|
//获取索引
|
|
if (index < 0 || index >= _materialIDs.size()) return;
|
|
_materialIDs.removeAt(index);
|
|
}
|
|
|
|
QString FITKAbstractSection::getTypeString()
|
|
{
|
|
return QString();
|
|
}
|
|
|
|
int FITKAbstractSection::getSectionID() const
|
|
{
|
|
return _sectionID;
|
|
}
|
|
|
|
void FITKAbstractSection::setSize(int count)
|
|
{
|
|
//不断追加 -1
|
|
while (_materialIDs.size() < count)
|
|
{
|
|
_materialIDs.append(-1);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|