2025-02-06 16:36:50 +08:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <QMap>
|
|
|
|
|
#include <QSet>
|
|
|
|
|
#include <QVector>
|
|
|
|
|
|
|
|
|
|
#include <QtCore/QJsonObject>
|
|
|
|
|
#include <QtCore/QObject>
|
|
|
|
|
#include <QtCore/QVariant>
|
|
|
|
|
#include <QUuid>
|
|
|
|
|
|
|
|
|
|
#include "global.h"
|
|
|
|
|
|
2025-08-25 12:02:15 +08:00
|
|
|
class GraphicsBaseItem;
|
2025-09-12 17:28:47 +08:00
|
|
|
class ItemPort;
|
2025-02-06 16:36:50 +08:00
|
|
|
|
|
|
|
|
class BaseModel : public QObject
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
2025-08-25 12:02:15 +08:00
|
|
|
public:
|
|
|
|
|
void createTopoTerminalsByItem(GraphicsBaseItem*,ModelFunctionType funType = ModelFunctionType::ProjectModel); //通过图形对象创建port接线点(新建)
|
|
|
|
|
QPointF calculateBusPortPos(GraphicsBaseItem* pBus,GraphicsBaseItem* item); //计算母线上接线点位置
|
2025-09-19 18:11:28 +08:00
|
|
|
template<typename TypeLine> void establishConnection(GraphicsBaseItem*,GraphicsBaseItem*,TypeLine*,ModelFunctionType,int nMode=0,int nParam = 0); //在两个item之间建立连接 nMode:0正常1变压器中性点2变压器 nParam附加参数:中性点中表示需连接的位置(012高中低)
|
2025-08-28 10:59:04 +08:00
|
|
|
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());
|
|
|
|
|
}
|
2025-09-12 17:28:47 +08:00
|
|
|
ItemPort* getClosestUnusedPort(QMap<QString,ItemPort*>,GraphicsBaseItem* item,ModelFunctionType); //返回距离item最近未使用端点
|
2025-02-06 16:36:50 +08:00
|
|
|
};
|
|
|
|
|
|
2025-08-25 12:02:15 +08:00
|
|
|
|