#ifndef IMODEL_H #define IMODEL_H #include "DataManagerGlobal.h" #include #include #include #include #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 static void copyQVectorToArray(const QVector &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 GetSrc() const; virtual void SetSrc(const QVector &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 &src = QVector(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 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