#pragma once /**组态编辑时的数据模型*/ #include "graphicsDataModel/baseModel.h" class GraphicsBaseModelItem; class DiagramEditorItemProperty; class GraphicsBaseItem; class EditPreviewScene; class ElectricBaseModelLineItem; class DiagramEditorTransformerBlock; class EditPanel; class DiagramEditorModel : public BaseModel { Q_OBJECT public: DiagramEditorModel(); ~DiagramEditorModel(); bool addTempPreviewItem(QUuid uuid,GraphicsBaseModelItem*); DiagramEditorItemProperty* addTempPreviewData(QUuid id,int type,QString name,QString metaName,QString sBlock = QString()); //添加图元基模数据 void createTopoTerminalsByItem(GraphicsBaseItem*,ModelFunctionType funType = ModelFunctionType::ProjectModel); //通过图形对象创建port接线点(新建) void generateTempBay(); //通过设置生成间隔预览对象 void generateTempTrans(int nType,DiagramEditorTransformerBlock* block = nullptr); //0高压侧1中压侧2低压侧3整个变压器 void connectTransToNeutral(DiagramEditorTransformerBlock* block); //连接变压器与中性点设备 void linkTransItem(GraphicsBaseModelItem*,QStandardItemModel*); //连接中性点与设备点 void generateTempComponent(QUuid uid,QString sName,int nCategory,int nType,QPoint pos,int nRotate = 0); //生成设备 uid,分类(设备、逻辑点),类型,旋转 ElectricBaseModelLineItem* generateTempLine(QUuid uid,QString sName); //生成连线 void clearCurPreview(); void setPanel(EditPanel* p) {_pPanel = p;} void setCurBayRouteModel(QStandardItemModel* p) {_pCurBayRoute = p;} QStandardItemModel* getCurBayRouteModel() {return _pCurBayRoute;} void setCurBayComponentModel(QStandardItemModel* p) {_pCurBayComponent = p;} QStandardItemModel* getCurBayComponentModel() {return _pCurBayComponent;} void setCurTransRouteModels(QMap map) {_pCurTransLRoutes = map;} QMap getCurTransRouteModels() {return _pCurTransLRoutes;} void setCurTransComponentModel(QStandardItemModel* p) {_pCurTransComponent = p;} QStandardItemModel* setCurTransComponentModel() {return _pCurTransComponent;} void setCurPreviewScene(EditPreviewScene* p) {_pCurPreviewScene = p;} QStandardItem* getNameItem(const QString&,int nFrom = 0); //获取返回当前设备模型中的name项 nFrom,0间隔1变压器 void generateItemByModel(QStandardItemModel* pModel,int nFrom = 0,QPoint delta = QPoint(0,0)); //0间隔1变压器 void generateItemByInfo(QMap mapRoute,QMap mapCompo,QPoint delta = QPoint(0,0)); //根据data生成item void updateTarget(QMap&,int nLayout,int nSource); //更新位置 nLayout主次朝向:8421,8421 上下左右,上下左右 nSource:0间隔1变压器 private: QMap _tempItem; //临时预览对象 QStandardItemModel* _pCurBayRoute; //当前使用的间隔路线 QStandardItemModel* _pCurBayComponent; //当前使用的间隔设备库 QMap _pCurTransLRoutes; //变压器中性点路线 QStandardItemModel* _pCurTransComponent; //当前使用的变压器设备库 EditPreviewScene* _pCurPreviewScene; //当前预览scene EditPanel* _pPanel; //主界面 };