GridFrame/diagramCavas/include/graphicsDataModel/baseModel.h

44 lines
2.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include <QMap>
#include <QSet>
#include <QVector>
#include <QtCore/QJsonObject>
#include <QtCore/QObject>
#include <QtCore/QVariant>
#include <QUuid>
//#include "global.h"
#include "common/core_model/types.h"
class GraphicsBaseItem;
class ItemPort;
class BaseModel : public QObject
{
Q_OBJECT
public:
void createTopoTerminalsByItem(GraphicsBaseItem*,ModelFunctionType funType = ModelFunctionType::ProjectModel); //通过图形对象创建port接线点(新建)
QPointF calculateBusPortPos(GraphicsBaseItem* pBus,GraphicsBaseItem* item,QPointF para = QPointF(0,0)); //计算母线上接线点位置
template<typename TypeLine> void establishConnection(GraphicsBaseItem*,GraphicsBaseItem*,TypeLine*,ModelFunctionType,int nMode=0,int nParam = 0); //在两个item之间建立连接 nMode:0正常1变压器中性点2变压器 nParam附加参数:中性点中表示需连接的位置(012高中低)
double distanceBetweenItems(QGraphicsItem* item1, QGraphicsItem* item2) {
QPointF center1 = item1->mapToScene(item1->boundingRect().center());
QPointF center2 = item2->mapToScene(item2->boundingRect().center());
QPointF diff = center1 - center2;
return qSqrt(diff.x() * diff.x() + diff.y() * diff.y());
}
ItemPort* getClosestUnusedPort(QMap<QString,ItemPort*>,GraphicsBaseItem* item,ModelFunctionType); //返回距离item最近未使用端点
protected:
ItemPort* selectBusOrNodePort(GraphicsBaseItem* pBusOrNode,GraphicsBaseItem* pOther,ModelFunctionType nType); //母线 / 节点端口选择
ItemPort* selectDevicePortByMode(GraphicsBaseItem* pDevice,GraphicsBaseItem* pPeer,int nMode,int nParam,ModelFunctionType nType); //设备端口选择(支持 nMode / nParam
void selectNormalDevicePort(GraphicsBaseItem* pSrc,GraphicsBaseItem* pDest,int nMode,int nParam,ModelFunctionType nType,ItemPort*& pSrcPort,ItemPort*& pDestPort);//普通设备 ↔ 设备(含变压器)
void selectTransformerPort(GraphicsBaseItem* pSrc,GraphicsBaseItem* pDest,int nMode,int nParam,ItemPort*& pSrcPort,ItemPort*& pDestPort);//变压器端口选择
void selectBusToBusPorts(GraphicsBaseItem* pSrc,GraphicsBaseItem* pDest,ModelFunctionType nType,ItemPort*& pSrcPort,ItemPort*& pDestPort);//母线 ↔ 母线 / 节点 ↔ 节点
template<typename TypeLine>
void bindLineAndTopology(ItemPort* pSrcPort,ItemPort* pDestPort,TypeLine* pItem,GraphicsBaseItem* pSrc,GraphicsBaseItem* pDest,ModelFunctionType nType);//绑定连线 + 拓扑
};