COMPASSi/trunk/code/inc/DataManager/Infrastructure.Data/Interfaces.h

242 lines
5.8 KiB
C
Raw Normal View History

2025-06-25 15:06:42 +08:00
#ifndef IMODEL_H
#define IMODEL_H
#include "DataManagerGlobal.h"
#include <string>
#include <vector>
#include <QString>
#include <QVector>
#include "OCC/OCCModeling/DllImportOccModeling.h"
//enum DATAMANAGER_DLL_API_EXPORTS E_3D_OBJ_TYPE
//{
// E_3D_OBJ_TYPE_POINT3D = 0, // 点
// E_3D_OBJ_TYPE_CURVE, //线
// E_3D_OBJ_TYPE_SURFACE, //面
// E_3D_OBJ_TYPE_SOLID, //体
// E_3D_OBJ_TYPE_MAINDECKSURF, //主甲板面
// E_3D_OBJ_TYPE_SHELLSURF, //外板面
// E_3D_OBJ_TYPE_HULL, //主船体
// E_3D_OBJ_TYPE_DECKSURF, //平台面
// E_3D_OBJ_TYPE_BOUNDSURF, //上建外围面
// E_3D_OBJ_TYPE_SUBDIVSURF, //分舱面
// E_3D_OBJ_TYPE_OPENCARGOREGION, //开敞客货区
// E_3D_OBJ_TYPE_SPACE, //舱室
// E_3D_OBJ_TYPE_APPENDAGE, //附体
// E_3D_OBJ_TYPE_EMPTY, //空体(删除使用)
// E_3D_OBJ_TYPE_SIZE
//};
class DATAMANAGER_DLL_API_EXPORTS IModel
{
public:
template <typename T>
static void copyQVectorToArray(const QVector<T> &sourceList, T destinationArray[MAX_ARRAY_SIZE_L])
{
// 遍历 QList 并将每个元素拷贝到数组中
int size = sourceList.size();
for (int i = 0; i < size && i < MAX_ARRAY_SIZE_L; ++i)
{
destinationArray[i] = sourceList[i]; // 拷贝数据
}
}
virtual ~IModel() = default;
virtual int GetID() const;
virtual void SetID(int id);
virtual int GetCmdID() const;
virtual void SetCmdID(int cmdID);
virtual QString GetName() const;
virtual void SetName(const QString& name);
virtual QString GetCommand() const;
virtual void SetCommand(const QString& command);
virtual int GetVisible() const;
virtual void SetVisible(int visible);
virtual int GetColor() const;
virtual void SetColor(int color);
virtual double GetTransparency() const;
virtual void SetTransparency(double transparency);
virtual int GetType() const;
virtual void SetType(int type);
virtual QVector<int> GetSrc() const;
virtual void SetSrc(const QVector<int> &src);
virtual E_GEO_3D_OBJ_TYPE getObjType();
virtual void setObjType(E_GEO_3D_OBJ_TYPE type);
virtual IModel* Clone()
{
IModel* p = new IModel();
*p = *this;
return p;
}
// 初始化构造函数
IModel(int id = 0, int cmdID = 0, const QString &name = "", const QString &command = "",
int visible = 1, int color = 0, double transparency = 0.0, int type = 0,
const QVector<int> &src = QVector<int>(256, 0))
: m_ID(id), m_CmdID(cmdID), m_Name(name), m_Command(command),
m_Visible(visible), m_Color(color), m_Transparency(transparency),
m_Type(type), m_Src(src) {}
public:
int m_ID;
int m_CmdID;
QString m_Name;
QString m_Command;
int m_Visible;
int m_Color;
double m_Transparency;
int m_Type;
QVector<int> m_Src;
E_GEO_3D_OBJ_TYPE m_objType;
};
// IModel3D 继承自 IModel
class DATAMANAGER_DLL_API_EXPORTS IModel3D : public IModel {};
// ISplitable 接口
class ISplitable {
public:
virtual ~ISplitable() = default;
virtual double GetSplitX() const;
virtual void SetSplitX(double splitX);
virtual double GetSplitY() const;
virtual void SetSplitY(double splitY);
virtual double GetSplitZ() const;
virtual void SetSplitZ(double splitZ);
double SplitX{};
double SplitY{};
double SplitZ{};
};
// ITrimable 接口
class DATAMANAGER_DLL_API_EXPORTS ITrimable {
public:
virtual ~ITrimable() = default;
virtual double GetTrimX() const;
virtual void SetTrimX(double trimX);
virtual double GetTrimY() const;
virtual void SetTrimY(double trimY);
virtual double GetTrimZ() const;
virtual void SetTrimZ(double trimZ);
double TrimX{};
double TrimY{};
double TrimZ{};
};
// ISection 接口
class DATAMANAGER_DLL_API_EXPORTS ISection {
public:
virtual ~ISection() = default;
virtual int GetSecID() const;
virtual void SetSecID(int secID);
protected:
int SecID{};
};
// ISectionElement 继承自 ISection
class DATAMANAGER_DLL_API_EXPORTS ISectionElement : public ISection {};
// ICalculationDataItem 接口
class DATAMANAGER_DLL_API_EXPORTS ICalculationDataItem {
public:
virtual ~ICalculationDataItem() = default;
virtual int GetID() const;
virtual void SetID(int id);
protected:
int m_ID{};
};
// ICalculationDataRoot 接口
class DATAMANAGER_DLL_API_EXPORTS ICalculationDataRoot {
public:
virtual ~ICalculationDataRoot() = default;
virtual QString GetVer() const;
virtual void SetVer(const QString& ver);
protected:
QString Ver;
};
// IHullRefElement 接口
class DATAMANAGER_DLL_API_EXPORTS IHullRefElement {
public:
virtual ~IHullRefElement() = default;
virtual int GetHullObjID() const;
virtual void SetHullObjID(int hullObjID);
protected:
int HullObjID{};
};
// INamedElement 接口
class DATAMANAGER_DLL_API_EXPORTS INamedElement {
public:
virtual ~INamedElement() = default;
virtual QString GetName() const;
virtual void SetName(const QString& name);
protected:
QString Name;
};
// ICalModel 接口
class DATAMANAGER_DLL_API_EXPORTS ICalModel {
public:
virtual ~ICalModel() = default;
virtual int GetVisible() const;
virtual void SetVisible(int visible);
virtual int GetColor() const;
virtual void SetColor(int color);
virtual double GetTransparency() const;
virtual void SetTransparency(double transparency);
protected:
int Visible{};
int Color{};
double Transparency{};
};
// ICalFlag 接口
class DATAMANAGER_DLL_API_EXPORTS ICalFlag {
public:
virtual ~ICalFlag() = default;
virtual bool GetCalFlag() const;
virtual void SetCalFlag(bool calFlag);
protected:
bool CalFlag{};
};
#endif // IMODEL_H