44 lines
2.5 KiB
C++
44 lines
2.5 KiB
C++
#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);//绑定连线 + 拓扑
|
||
};
|
||
|
||
|