#include "FITKBoundaryLocation.h" #include "FITK_Kernel/FITKCore/FITKDataRepo.h" #include "FITK_Interface/FITKInterfaceModel/FITKAbstractModel.h" #include "FITK_Interface/FITKInterfaceModel/FITKAbstractModelComponent.h" #include "FITK_Interface/FITKInterfaceModel/FITKModelSet.h" #include "FITK_Interface/FITKInterfaceModel/FITKMeshSurface.h" #include "FITK_Interface/FITKInterfaceModel/FITKAssembly.h" namespace Interface { void FITKBoundaryLocation::setModel(int id) { //设置模型 _modelID = id; } void FITKBoundaryLocation::setModel(FITKAbstractModel* model) { //错误判断 if(model) _modelID = model->getDataObjectID(); } void FITKBoundaryLocation::setComponent(int id) { //设置组件 _componentID = id; } void FITKBoundaryLocation::setComponent(FITKAbstractModelComponent* comp) { //错误判断 if (comp) _componentID = comp->getDataObjectID(); } int FITKBoundaryLocation::getModelID() const { return _modelID; } int FITKBoundaryLocation::getComponentID() const { return _componentID; } Interface::FITKAbstractModel* FITKBoundaryLocation::getModelObj() { //从仓库查找 return FITKDATAREPO->getTDataByID(_modelID); } Interface::FITKAbstractModelComponent* FITKBoundaryLocation::getComponentObj() { //从仓库查找 return FITKDATAREPO->getTDataByID(_componentID); } bool FITKBoundaryLocation::isValid() { bool c = this->getComponentObj() != nullptr; bool m = this->getModelObj() != nullptr; return m && c; } QString FITKBoundaryLocation::getLocationTextLabel() { auto comp = this->getComponentObj(); auto model = this->getModelObj(); if (comp == nullptr || model == nullptr) return QString(); //内部集合 auto set = FITKSafedownCast(comp); if (set && set->isInternal()) return QString(tr("(Picked)")); //内部表面 auto surf = FITKSafedownCast(comp); if (surf && surf->isInternal()) return QString(tr("(Picked)")); //集合在单一的instance上,存储在assembly if (model == comp->getAbstractModel()) return comp->getDataObjectName(); //在instance上 if (model->getAbsModelType() == FITKModelEnum::AbsModelType::AssInstance) return QString("%1.%2").arg(model->getDataObjectName()).arg(comp->getDataObjectName()); //集合或者表面名称 return comp->getDataObjectName(); } void FITKBoundaryLocation::operator=(const FITKBoundaryLocation& loc) { _modelID = loc.getModelID(); _componentID = loc.getComponentID(); } }