242 lines
5.8 KiB
C
242 lines
5.8 KiB
C
|
#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
|