#include "FITKAssElement.h" #include "FITKAbstractModel.h" #include "FITK_Kernel/FITKCore/FITKDataRepo.h" namespace Interface { //静态单元ID static int AssEleID = 0; FITKAbstractAssemblyElement::FITKAbstractAssemblyElement() { _elementID = ++AssEleID; } int FITKAbstractAssemblyElement::getElementID() const { return _elementID; } void FITKAbstractAssemblyElement::setElementID(const int id) { AssEleID = AssEleID > id ? AssEleID : id; _elementID = id; } /** * @brief 拷贝到目标单元 * @author LiBaojun (libaojunqd@foxmail.com) * @date 2024-06-24 */ void FITKAbstractAssemblyElement::copyTo(FITKAbstractAssemblyElement*) { } FITKModelEnum::FITKModelSetType FITKAssemblyElementSet::getModelSetType() { return FITKModelEnum::FMSNone; } void FITKAssemblyElementVertex::copyTo(FITKAbstractAssemblyElement* e) { //类型转换 FITKAssemblyElementVertex* v = dynamic_cast(e); if (v) return; //设置ID v->setModelID(_nodeModelID); v->setNodeID(_nodeID); } void FITKAssemblyElementVertex::setModelID(const int mid) { _nodeModelID = mid; } void FITKAssemblyElementVertex::setNodeID(const int id) { _nodeID = id; } void FITKAssemblyElementVertex::getCoor(double* coor) { //获取模型 if (coor == nullptr) return; auto m = FITKDATAREPO->getTDataByID(_nodeModelID); if (m == nullptr) return; //获取坐标 m->getPointCoor(_nodeID, coor); } void FITKAssemblyElementVertex::getNode(int& mid, int& id) { mid = _nodeModelID; id = _nodeID; } void FITKAssemblyElementLine::copyTo(FITKAbstractAssemblyElement* e) { //类型转换 FITKAssemblyElementLine* l = dynamic_cast(e); if (l== nullptr) return; //设置节点 l->setNode1(_node1.first, _node1.second); l->setNode2(_node2.first, _node2.second); } void FITKAssemblyElementLine::setNode1(const int mid, const int id) { _node1.first = mid; _node1.second = id; } void FITKAssemblyElementLine::setNode2(const int mid, const int id) { _node2.first = mid; _node2.second = id; } void FITKAssemblyElementLine::getNode1(int& mid, int& id) { mid = _node1.first; id = _node1.second; } void FITKAssemblyElementLine::getNode2(int& mid, int& id) { mid = _node2.first; id = _node2.second; } void FITKAssemblyElementLine::getCoor1(double* coor1) { //模型 if (coor1 == nullptr) return; auto m = FITKDATAREPO->getTDataByID(_node1.first); if (m == nullptr) return; //获取坐标 m->getPointCoor(_node1.second, coor1); } void FITKAssemblyElementLine::getCoor2(double* coor2) { //模型 if (coor2 == nullptr) return; auto m = FITKDATAREPO->getTDataByID(_node2.first); if (m == nullptr) return; //坐标 m->getPointCoor(_node2.second, coor2); } QString FITKAssemblyElementLine::getTextLabel1() { //模型 auto m = FITKDATAREPO->getTDataByID(_node1.first); if (m == nullptr) return QString(); if (m->getAbsModelType() == FITKModelEnum::AbsModelType::Assembly) return QString("Node[%1]").arg(_node1.second); //组合名称 return QString("%1 Node[%2]").arg(m->getDataObjectName()).arg(_node1.second); } QString FITKAssemblyElementLine::getTextLabel2() { //模型 auto m = FITKDATAREPO->getTDataByID(_node2.first); if (m == nullptr) return QString(); if (m->getAbsModelType() == FITKModelEnum::AbsModelType::Assembly) return QString("Node[%1]").arg(_node1.second); //组合名称 return QString("%1 Node[%2]").arg(m->getDataObjectName()).arg(_node2.second); } void FITKAssemblyElementLine::swap() { QPair t = _node1; _node1 = _node2; _node2 = t; } }