#pragma once #include #include #include #include #include #include #include #include "global.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); //计算母线上接线点位置 template 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,GraphicsBaseItem* item,ModelFunctionType); //返回距离item最近未使用端点 };