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.
AppFlow/FITK_Interface/FITKInterfacePhysics/FITKAbstractSection.h

151 lines
4.2 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
*
* @file FITKAbstractSection.h
* @brief 截面抽象类
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-03-30
*
*/
#ifndef __FITKABSTRACTSEDTION_H__
#define __FITKABSTRACTSEDTION_H__
#include "FITK_Kernel/FITKCore/FITKAbstractNDataObject.h"
#include "FITK_Kernel/FITKCore/FITKAbstractDataManager.hpp"
#include "FITKInterfacePhysicsAPI.h"
#include <QList>
namespace Interface
{
class FITKAbstractMaterial;
/**
* @brief 抽象截面类
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-03-30
*/
class FITKInterfacePhysicsAPI FITKAbstractSection : public Core::FITKAbstractNDataObject
{
public:
/**
* @brief Construct a new FITKAbstractSection object
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-03-30
*/
explicit FITKAbstractSection();
/**
* @brief Destroy the FITKAbstractSection object
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-03-30
*/
virtual ~FITKAbstractSection() = 0;
/**
* @brief 设置材料的数据ID
* @param[i] id 材料id
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-03-22
*/
void setMaterial(int id, int index = 0);
/**
* @brief 设置材料
* @param[i] mat 材料指针
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-03-22
*/
void setMaterial(Core::FITKAbstractDataObject* mat, int index = 0);
/**
* @brief 获取材料ID
* @return int
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-03-22
*/
int getMaterialID( int index = 0) const;
/**
* @brief 获取材料对象
* @return FITKAbaMaterial*
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-03-22
*/
FITKAbstractMaterial* getMaterial(int index = 0) const;
/**
* @brief 获取材料名称
* @return QString
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-03-22
*/
QString getMaterialName( int index = 0) const;
/**
* @brief 获取材料数量
* @return int
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-03-22
*/
int getMaterialCount();
/**
* @brief 移除第index个材料
* @param[i] index 索引
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-03-22
*/
void removeMaterial(int index);
/**
* @brief 获取截面类型字符串用于UI显式
* @return QString
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-03-27
*/
virtual QString getTypeString();
/**
* @brief 获取截面id注意该值与管理器的中使用的id无关与其他对象的关联也无关
* @return int
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-04-03
*/
int getSectionID() const;
private:
/**
* @brief 设置材料数组长度,不足的补充-1
* @param[i] count 最大长度
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-03-27
*/
void setSize(int count);
protected:
/**
* @brief 材料列表
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-03-27
*/
QList<int> _materialIDs{};
private:
/**
* @brief 截面id与管理器无关不能被使用
* @author libaojun (libaojunqd@foxmail.com)
* @date 2024-04-03
*/
int _sectionID = -1;
};
/**
* @brief 截面管理器
* @author LiBaojun (libaojunqd@foxmail.com)
* @date 2024-03-30
*/
class FITKInterfacePhysicsAPI FITKAbstractSectionManager : public Core::FITKAbstractObject,
public Core::FITKAbstractDataManager<FITKAbstractSection>
{
public:
explicit FITKAbstractSectionManager() = default;
virtual ~FITKAbstractSectionManager() = default;
};
}
#endif