add diagram editor preview
This commit is contained in:
parent
15b2be3fef
commit
6a6d407da7
|
|
@ -460,8 +460,10 @@ struct DiagramEditorComponentInfo //组态设备信息
|
||||||
int nCategory = 0; //分类 0电气设备1连接关系
|
int nCategory = 0; //分类 0电气设备1连接关系
|
||||||
QString sName;
|
QString sName;
|
||||||
int nType = 0; //类型 1母线2异步电动机3断路器4电缆5电流互感器6电压互感器7隔离开关8接地开关9快速接地开关10双掷接地隔离开关11带电指示器12避雷器13电缆出线套筒14电缆端
|
int nType = 0; //类型 1母线2异步电动机3断路器4电缆5电流互感器6电压互感器7隔离开关8接地开关9快速接地开关10双掷接地隔离开关11带电指示器12避雷器13电缆出线套筒14电缆端
|
||||||
QString sBindObj; //所关联的实体名 (母线block,间隔block)
|
QString sBindObj; //所关联的实体名 (母线block,间隔block,变压器高中低端子)
|
||||||
int nBindType = 0; //关联实体的类型 1母线2间隔3变压器
|
int nBindType = 0; //关联实体的类型 1母线2间隔3变压器
|
||||||
|
int nBindPara = 0; //关联额外参数,关联变压器时为(0高1中2低)
|
||||||
|
QString sBindParent; //关联父item名,关联变压器时为变压器名
|
||||||
QStringList sUsedRoute; //使用设备的线路名
|
QStringList sUsedRoute; //使用设备的线路名
|
||||||
int nUsedDirection = 0; //被占用的方向 8421 上下左右
|
int nUsedDirection = 0; //被占用的方向 8421 上下左右
|
||||||
QPoint deltaPos = QPoint(0,0); //相对坐标(相对间隔)
|
QPoint deltaPos = QPoint(0,0); //相对坐标(相对间隔)
|
||||||
|
|
@ -478,6 +480,10 @@ struct DiagramEditorComponentInfo //组态设备信息
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline uint qHash(const DiagramEditorComponentInfo &key, uint seed = 0) {
|
||||||
|
return qHash(key.uid, seed);
|
||||||
|
}
|
||||||
|
|
||||||
struct DiagramEditorRouteInfo //间隔中单条线路信息
|
struct DiagramEditorRouteInfo //间隔中单条线路信息
|
||||||
{
|
{
|
||||||
QString sRouteName;
|
QString sRouteName;
|
||||||
|
|
@ -489,12 +495,27 @@ struct DiagramEditorRouteInfo //间隔中单条线路信息
|
||||||
|
|
||||||
struct DiagramEditorBayInfo //组态编辑间隔信息
|
struct DiagramEditorBayInfo //组态编辑间隔信息
|
||||||
{
|
{
|
||||||
QString name;
|
QString name; //间隔名
|
||||||
int nLayout; //布局 0纵向1横向
|
int nLayout; //布局 0纵向1横向
|
||||||
QMap<QString,DiagramEditorRouteInfo> mapRoute; //线路信息
|
QMap<QString,DiagramEditorRouteInfo> mapRoute; //线路信息
|
||||||
QMap<QString,DiagramEditorComponentInfo> mapComponent; //设备信息
|
QMap<QString,DiagramEditorComponentInfo> mapComponent; //设备信息
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct DiagramEditorTransNeutralInfo //组态编辑变压器中性点信息
|
||||||
|
{
|
||||||
|
QString name; //中性点名
|
||||||
|
int nType = 0; //中性点类型 0高1中2低
|
||||||
|
QPointF delPoint; //相对变压器偏移量
|
||||||
|
QMap<QString,DiagramEditorRouteInfo> mapRoute; //中性点对应的线路结构
|
||||||
|
};
|
||||||
|
|
||||||
|
struct DiagramEditorTransInfo //组态编辑变压器信息
|
||||||
|
{
|
||||||
|
QString name; //变压器名
|
||||||
|
QMap<int,DiagramEditorTransNeutralInfo> mapNeutral; //中性点结构
|
||||||
|
QMap<QString,DiagramEditorComponentInfo> mapComponent; //设备信息
|
||||||
|
};
|
||||||
|
|
||||||
enum class DiagramEditorStructType
|
enum class DiagramEditorStructType
|
||||||
{
|
{
|
||||||
block = 0, //模块(母线段、间隔、变压器)
|
block = 0, //模块(母线段、间隔、变压器)
|
||||||
|
|
|
||||||
|
|
@ -27,12 +27,18 @@ public:
|
||||||
virtual DiagramEditorStructContainer* getCurContainer() {return _curContainer;}
|
virtual DiagramEditorStructContainer* getCurContainer() {return _curContainer;}
|
||||||
virtual void setContainerLevel(int n) {nContainerLevel = n;}
|
virtual void setContainerLevel(int n) {nContainerLevel = n;}
|
||||||
virtual int getContainerLevel() {return nContainerLevel;}
|
virtual int getContainerLevel() {return nContainerLevel;}
|
||||||
|
virtual void setRecSize(QRectF rec) {recSize = rec;}
|
||||||
|
virtual QRectF getRecSize() {return recSize;}
|
||||||
|
virtual void setSeceneDelta(QPointF p){sceneDelta = p;}
|
||||||
|
virtual QPointF getSceneDelta() {return sceneDelta;}
|
||||||
protected:
|
protected:
|
||||||
QString sName;
|
QString sName;
|
||||||
int nType; //1母线,2间隔,3变压器
|
int nType; //1母线,2间隔,3变压器
|
||||||
int nContainerLevel; //所处容器的层级 0,1,2,3
|
int nContainerLevel; //所处容器的层级 0,1,2,3
|
||||||
QUuid uid;
|
QUuid uid;
|
||||||
QList<QUuid> _lstCon; //连接信息
|
QList<QUuid> _lstCon; //连接信息
|
||||||
|
QRectF recSize; //当前大小(根据内容确定)
|
||||||
|
QPointF sceneDelta; //block中心相对位移(计算布局位置
|
||||||
DiagramEditorStructContainer* _curContainer; //当前所处的容器
|
DiagramEditorStructContainer* _curContainer; //当前所处的容器
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -81,13 +87,10 @@ public:
|
||||||
virtual ~DiagramEditorTransformerBlock();
|
virtual ~DiagramEditorTransformerBlock();
|
||||||
virtual void setTransType(TransformerType typ) {nTransType = typ;}
|
virtual void setTransType(TransformerType typ) {nTransType = typ;}
|
||||||
virtual TransformerType getTransType() {return nTransType;}
|
virtual TransformerType getTransType() {return nTransType;}
|
||||||
virtual void setRouteInfoMaps(QMap<int,QMap<QString,DiagramEditorRouteInfo>> info) {mapsRouteInfo = info;}
|
virtual void setTransInfo(DiagramEditorTransInfo info) {transInfo = info;}
|
||||||
virtual QMap<int,QMap<QString,DiagramEditorRouteInfo>>& getRouteInfoMaps() {return mapsRouteInfo;}
|
virtual DiagramEditorTransInfo& getTranInfo() {return transInfo;}
|
||||||
virtual void setComponentMap(QMap<QString,DiagramEditorComponentInfo> info) {mapComponents = info;}
|
|
||||||
virtual QMap<QString,DiagramEditorComponentInfo>& getComponentMap() {return mapComponents;}
|
|
||||||
protected:
|
protected:
|
||||||
TransformerType nTransType;
|
TransformerType nTransType;
|
||||||
QMap<int,QMap<QString,DiagramEditorRouteInfo>> mapsRouteInfo; //变压器中性点线路信息 0高1中2低
|
DiagramEditorTransInfo transInfo;
|
||||||
QMap<QString,DiagramEditorComponentInfo> mapComponents; //变压器中性点设备信息
|
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -19,9 +19,34 @@ public:
|
||||||
auto& getBlockMap() {return _mapBlocks;}
|
auto& getBlockMap() {return _mapBlocks;}
|
||||||
void setId(const QString& s) {sId = s;}
|
void setId(const QString& s) {sId = s;}
|
||||||
QString getId() {return sId;}
|
QString getId() {return sId;}
|
||||||
|
|
||||||
|
void setMidUpY(double d){dMidUpY = d;}
|
||||||
|
double getMidUpY() {return dMidUpY;}
|
||||||
|
void setMidDownY(double d){dMidDownY = d;}
|
||||||
|
double getMidDownY() {return dMidDownY;}
|
||||||
|
void setWidth(double d){dWidth = d;}
|
||||||
|
double getWidth() {return dWidth;}
|
||||||
|
void setHeight(double d){dHeight = d;}
|
||||||
|
double getHeight() {return dHeight;}
|
||||||
|
void setStartX(double d){dStartX = d;}
|
||||||
|
double getStartX() {return dStartX;}
|
||||||
|
void setStartY(double d){dStartY = d;}
|
||||||
|
double getStartY() {return dStartY;}
|
||||||
|
void setMaxUpH(double d){dMaxUpH = d;}
|
||||||
|
double getMaxUpH() {return dMaxUpH;}
|
||||||
|
void setMaxDownH(double d){dMaxDownH = d;}
|
||||||
|
double getMaxDownH() {return dMaxDownH;}
|
||||||
private:
|
private:
|
||||||
QString sId;
|
QString sId;
|
||||||
QMap<int,QList<DiagramEditorBaseBlock*>> _mapBlocks; //容器中包含的对象列表,<pos,listBlocks> pos当前容器中的位置:0上,1中上,2中下,3下
|
QMap<int,QList<DiagramEditorBaseBlock*>> _mapBlocks; //容器中包含的对象列表,<pos,listBlocks> pos当前容器中的位置:0上,1中上,2中下,3下
|
||||||
|
double dMidUpY; //1母上边界
|
||||||
|
double dMidDownY; //2母下边界
|
||||||
|
double dStartX; //起始x
|
||||||
|
double dStartY; //起始y
|
||||||
|
double dWidth; //宽度
|
||||||
|
double dHeight;
|
||||||
|
double dMaxUpH; //上方最大高度(1母线到上边界)
|
||||||
|
double dMaxDownH; //下方最大高度(2母线到下边界)
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,8 @@ public:
|
||||||
void showDlg(int n);
|
void showDlg(int n);
|
||||||
void showDlg(DiagramEditorRouteInfo info); //编辑
|
void showDlg(DiagramEditorRouteInfo info); //编辑
|
||||||
void setParent(DiagramEditorTransDetailSettingDlg* p) {_pParent = p;}
|
void setParent(DiagramEditorTransDetailSettingDlg* p) {_pParent = p;}
|
||||||
|
private:
|
||||||
|
void updateBindLst(); //刷新关联列表
|
||||||
public slots:
|
public slots:
|
||||||
void onAddClicked();
|
void onAddClicked();
|
||||||
void onDeleteClicked();
|
void onDeleteClicked();
|
||||||
|
|
@ -39,6 +41,7 @@ private:
|
||||||
DiagramEditorTransDetailSettingDlg* _pParent;
|
DiagramEditorTransDetailSettingDlg* _pParent;
|
||||||
int _curMode; //0新建1修改
|
int _curMode; //0新建1修改
|
||||||
int _curType; //当前回路类型 0高压中性点1中2低
|
int _curType; //当前回路类型 0高压中性点1中2低
|
||||||
|
QStandardItemModel* _bindItemModel; //绑定的对象模型
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -25,13 +25,17 @@ public:
|
||||||
void initial();
|
void initial();
|
||||||
void refreshModel(); //刷新view显示的model
|
void refreshModel(); //刷新view显示的model
|
||||||
void showDlg(DiagramEditorTransformerBlock*);
|
void showDlg(DiagramEditorTransformerBlock*);
|
||||||
void setParent(DiagramEditorWizard* p) {_pWizard = p;}
|
void setWizard(DiagramEditorWizard* p) {_pWizard = p;}
|
||||||
QStandardItemModel* getComponentModel() {return _compoModel;}
|
QStandardItemModel* getComponentModel() {return _compoModel;}
|
||||||
QMap<int,QStandardItemModel*> getRouteModels() {return _routeModels;}
|
QMap<int,QStandardItemModel*> getRouteModels() {return _routeModels;}
|
||||||
void setRouteMaps(QMap<int,QMap<QString,DiagramEditorRouteInfo>> map) {_mapsRouteInfo = map;}
|
//void setRouteMaps(QMap<int,QMap<QString,DiagramEditorRouteInfo>> map) {_mapsRouteInfo = map;}
|
||||||
QMap<int,QMap<QString,DiagramEditorRouteInfo>>& getRouteMaps(){return _mapsRouteInfo;}
|
//QMap<int,QMap<QString,DiagramEditorRouteInfo>>& getRouteMaps(){return _mapsRouteInfo;}
|
||||||
|
void setTransInfo(DiagramEditorTransInfo info){_transInfo = info;}
|
||||||
|
DiagramEditorTransInfo& getTransInfo(){return _transInfo;}
|
||||||
void setModelDelegate(DiagramEditorModel* p){_pModel = p;}
|
void setModelDelegate(DiagramEditorModel* p){_pModel = p;}
|
||||||
DiagramEditorModel* getModel() {return _pModel;}
|
DiagramEditorModel* getModel() {return _pModel;}
|
||||||
|
DiagramEditorTransformerBlock* getCurBlock(){return _curOperateObj;}
|
||||||
|
DiagramEditorWizard* getWizard() {return _pWizard;}
|
||||||
public slots:
|
public slots:
|
||||||
void onAddClicked();
|
void onAddClicked();
|
||||||
void onOkClicked();
|
void onOkClicked();
|
||||||
|
|
@ -50,7 +54,8 @@ private:
|
||||||
DiagramEditorTransformerBlock* _curOperateObj; //当前加载的block对象
|
DiagramEditorTransformerBlock* _curOperateObj; //当前加载的block对象
|
||||||
QStandardItemModel* _compoModel; //设备库model name中的data:1为占用方向,2为相对坐标,3为uuid,4为item标志位(1新建2修改),5旋转角度
|
QStandardItemModel* _compoModel; //设备库model name中的data:1为占用方向,2为相对坐标,3为uuid,4为item标志位(1新建2修改),5旋转角度
|
||||||
QMap<int,QStandardItemModel*> _routeModels; //中性点拓扑,0,1,2高中低
|
QMap<int,QStandardItemModel*> _routeModels; //中性点拓扑,0,1,2高中低
|
||||||
QMap<int,QMap<QString,DiagramEditorRouteInfo>> _mapsRouteInfo; //侧中性点线路信息
|
//QMap<int,QMap<QString,DiagramEditorRouteInfo>> _mapsRouteInfo; //中性点线路信息 int:0高1中2低
|
||||||
|
DiagramEditorTransInfo _transInfo; //变压器信息
|
||||||
DiagramEditorModel* _pModel;
|
DiagramEditorModel* _pModel;
|
||||||
QTableView* _curOperateRouteView; //当前操作的中性点拓扑view
|
QTableView* _curOperateRouteView; //当前操作的中性点拓扑view
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ class BaseModel : public QObject
|
||||||
public:
|
public:
|
||||||
void createTopoTerminalsByItem(GraphicsBaseItem*,ModelFunctionType funType = ModelFunctionType::ProjectModel); //通过图形对象创建port接线点(新建)
|
void createTopoTerminalsByItem(GraphicsBaseItem*,ModelFunctionType funType = ModelFunctionType::ProjectModel); //通过图形对象创建port接线点(新建)
|
||||||
QPointF calculateBusPortPos(GraphicsBaseItem* pBus,GraphicsBaseItem* item); //计算母线上接线点位置
|
QPointF calculateBusPortPos(GraphicsBaseItem* pBus,GraphicsBaseItem* item); //计算母线上接线点位置
|
||||||
template<typename TypeLine> void establishConnection(GraphicsBaseItem*,GraphicsBaseItem*,TypeLine*,ModelFunctionType,int nMode=0,int nParam = 0); //在两个item之间建立连接 nMode:0正常1变压器中性点 nParam附加参数:中性点中表示需连接的位置(012高中低)
|
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) {
|
double distanceBetweenItems(QGraphicsItem* item1, QGraphicsItem* item2) {
|
||||||
QPointF center1 = item1->mapToScene(item1->boundingRect().center());
|
QPointF center1 = item1->mapToScene(item1->boundingRect().center());
|
||||||
QPointF center2 = item2->mapToScene(item2->boundingRect().center());
|
QPointF center2 = item2->mapToScene(item2->boundingRect().center());
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,8 @@ class DiagramEditorTransformerBlock;
|
||||||
class EditPanel;
|
class EditPanel;
|
||||||
class DiagramEditorWizard;
|
class DiagramEditorWizard;
|
||||||
|
|
||||||
|
int const g_nHorizontalBlockSpacing = 100; //间隔横向间距
|
||||||
|
|
||||||
class DiagramEditorModel : public BaseModel
|
class DiagramEditorModel : public BaseModel
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
@ -22,7 +24,7 @@ public:
|
||||||
bool addPreviewItem(QUuid uuid,GraphicsBaseModelItem*,int mode); //mode 0局部1整体
|
bool addPreviewItem(QUuid uuid,GraphicsBaseModelItem*,int mode); //mode 0局部1整体
|
||||||
DiagramEditorItemProperty* addPreviewData(QUuid id,int type,QString name,QString metaName,QString sBlock,int mode = 0); //添加图元基模数据 mode:0局部1整体
|
DiagramEditorItemProperty* addPreviewData(QUuid id,int type,QString name,QString metaName,QString sBlock,int mode = 0); //添加图元基模数据 mode:0局部1整体
|
||||||
void createTopoTerminalsByItem(GraphicsBaseItem*,ModelFunctionType funType = ModelFunctionType::ProjectModel); //通过图形对象创建port接线点(新建)
|
void createTopoTerminalsByItem(GraphicsBaseItem*,ModelFunctionType funType = ModelFunctionType::ProjectModel); //通过图形对象创建port接线点(新建)
|
||||||
void generateTempBay(); //通过设置生成间隔预览对象
|
QRectF generateTempBay(); //通过设置生成间隔预览对象
|
||||||
void generateTempTrans(int nType,DiagramEditorTransformerBlock* block = nullptr); //0高压侧1中压侧2低压侧3整个变压器
|
void generateTempTrans(int nType,DiagramEditorTransformerBlock* block = nullptr); //0高压侧1中压侧2低压侧3整个变压器
|
||||||
void connectTransToNeutral(DiagramEditorTransformerBlock* block); //连接变压器与中性点设备
|
void connectTransToNeutral(DiagramEditorTransformerBlock* block); //连接变压器与中性点设备
|
||||||
void linkTransItem(GraphicsBaseModelItem*,QStandardItemModel*); //连接中性点与设备点
|
void linkTransItem(GraphicsBaseModelItem*,QStandardItemModel*); //连接中性点与设备点
|
||||||
|
|
@ -32,6 +34,8 @@ public:
|
||||||
void setPanel(EditPanel* p) {_pPanel = p;}
|
void setPanel(EditPanel* p) {_pPanel = p;}
|
||||||
void setWizard(QPointer<DiagramEditorWizard> p){_pWizard = p;}
|
void setWizard(QPointer<DiagramEditorWizard> p){_pWizard = p;}
|
||||||
void generatePreview(); //生成预览
|
void generatePreview(); //生成预览
|
||||||
|
void calculateBlockPos(); //重新计算block位置
|
||||||
|
void setItemInBlockPos(); //设置block中的item位置
|
||||||
|
|
||||||
void setCurBayRouteModel(QStandardItemModel* p) {_pCurBayRoute = p;}
|
void setCurBayRouteModel(QStandardItemModel* p) {_pCurBayRoute = p;}
|
||||||
QStandardItemModel* getCurBayRouteModel() {return _pCurBayRoute;}
|
QStandardItemModel* getCurBayRouteModel() {return _pCurBayRoute;}
|
||||||
|
|
@ -46,11 +50,13 @@ public:
|
||||||
QStandardItem* getNameItem(const QString&,int nFrom = 0); //获取返回当前设备模型中的name项 nFrom,0间隔1变压器
|
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 generateItemByModel(QStandardItemModel* pModel,int nFrom = 0,QPoint delta = QPoint(0,0)); //0间隔1变压器
|
||||||
void generateItemByInfo(QMap<QString,DiagramEditorRouteInfo> mapRoute,QMap<QString,DiagramEditorComponentInfo> mapCompo,QPointF delta = QPointF(0,0)); //根据data生成item
|
QList<DiagramEditorComponentInfo> generateItemByInfo(QMap<QString,DiagramEditorRouteInfo> mapRoute,QMap<QString,DiagramEditorComponentInfo> mapCompo,QPointF delta = QPointF(0,0)); //根据data生成item
|
||||||
|
void generateOutConnection(QList<DiagramEditorComponentInfo>,int nTypeTransCon,int nPos = 0); //生成外部连接(手动bind的连接) nTypeTransCon变压器连线类型,1中性点连接2外部连接,nPos中性点连接时的位置
|
||||||
void updateTarget(QMap<QString,DiagramEditorRouteInfo>&,int nLayout,int nSource); //更新位置 nLayout主次朝向:8421,8421 上下左右,上下左右 nSource:0间隔1变压器
|
void updateTarget(QMap<QString,DiagramEditorRouteInfo>&,int nLayout,int nSource); //更新位置 nLayout主次朝向:8421,8421 上下左右,上下左右 nSource:0间隔1变压器
|
||||||
private:
|
private:
|
||||||
void bulidAndLinkComponent(QList<DiagramEditorComponentInfo>); //生成并连接线路上的设备
|
void bulidAndLinkComponent(QList<DiagramEditorComponentInfo>,QMap<QString,DiagramEditorComponentInfo>); //生成并连接线路上的设备 lst,mapComponents(从map中获取正确数据)
|
||||||
//DiagramEditorComponentInfo getCompoDataFromName(const QString&,QMap<QString,DiagramEditorComponentInfo>); //根据名称获取数据
|
//DiagramEditorComponentInfo getCompoDataFromName(const QString&,QMap<QString,DiagramEditorComponentInfo>); //根据名称获取数据
|
||||||
|
QList<DiagramEditorComponentInfo> getRouteItemInfoList(QMap<QString,DiagramEditorComponentInfo>,QMap<QString,DiagramEditorRouteInfo>); //返回线路中包含的设备信息列表
|
||||||
private:
|
private:
|
||||||
QMap<QUuid,GraphicsBaseModelItem*> _tempItem; //临时预览对象
|
QMap<QUuid,GraphicsBaseModelItem*> _tempItem; //临时预览对象
|
||||||
QMap<QUuid,GraphicsBaseModelItem*> _previewItem; //预览对象
|
QMap<QUuid,GraphicsBaseModelItem*> _previewItem; //预览对象
|
||||||
|
|
|
||||||
|
|
@ -72,14 +72,15 @@ void DiagramEditorBayDetailAddDlg::initial()
|
||||||
|
|
||||||
ui->cb_lineType->setItemData(0,1); //设置主线支线
|
ui->cb_lineType->setItemData(0,1); //设置主线支线
|
||||||
ui->cb_lineType->setItemData(1,0);
|
ui->cb_lineType->setItemData(1,0);
|
||||||
//_bindItemModel = new QStandardItemModel(this);
|
_bindItemModel = new QStandardItemModel(this);
|
||||||
//ui->cb_bindObj->setModel(_bindItemModel);
|
ui->cb_bindObj->setModel(_bindItemModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramEditorBayDetailAddDlg::updateBindLst()
|
void DiagramEditorBayDetailAddDlg::updateBindLst()
|
||||||
{
|
{
|
||||||
ui->cb_bindObj->clear();
|
_bindItemModel->clear();
|
||||||
ui->cb_bindObj->addItem("无");
|
QStandardItem* it = new QStandardItem("无");
|
||||||
|
_bindItemModel->appendRow(it);
|
||||||
DiagramEditorBayBlock* pBlock = _pParent->getCurBlock();
|
DiagramEditorBayBlock* pBlock = _pParent->getCurBlock();
|
||||||
if(pBlock){
|
if(pBlock){
|
||||||
QList<QUuid> lstCon = pBlock->getConnect();
|
QList<QUuid> lstCon = pBlock->getConnect();
|
||||||
|
|
@ -91,41 +92,35 @@ void DiagramEditorBayDetailAddDlg::updateBindLst()
|
||||||
auto con = mapCon.value(uid);
|
auto con = mapCon.value(uid);
|
||||||
DiagramEditorConnectType conOp = con.getOpposite(pBlock->getName());
|
DiagramEditorConnectType conOp = con.getOpposite(pBlock->getName());
|
||||||
if(conOp.nType == 1){ //母线单block单item
|
if(conOp.nType == 1){ //母线单block单item
|
||||||
ui->cb_bindObj->addItem(conOp.sName,conOp.nType);
|
//ui->cb_bindObj->addItem(conOp.sName,conOp.nType);
|
||||||
|
QStandardItem* item = new QStandardItem(conOp.sName);
|
||||||
|
item->setData(conOp.nType, Qt::UserRole+1); // 设置用户数据
|
||||||
|
_bindItemModel->appendRow(item);
|
||||||
}
|
}
|
||||||
else if(conOp.nType == 3){ //变压器,选择对应进/出线口
|
else if(conOp.nType == 3){ //变压器,选择对应进/出线口
|
||||||
|
QStandardItem* item = nullptr;
|
||||||
|
|
||||||
|
if(con.nPara == 0){
|
||||||
|
item = new QStandardItem("高压接线端子");
|
||||||
|
}
|
||||||
|
else if(con.nPara == 1){
|
||||||
|
item = new QStandardItem("中压接线端子");
|
||||||
|
}
|
||||||
|
else if(con.nPara == 2){
|
||||||
|
item = new QStandardItem("低压接线端子");
|
||||||
|
}
|
||||||
|
if(item){
|
||||||
|
item->setData(conOp.nType, Qt::UserRole+1);
|
||||||
|
item->setData(con.nPara, Qt::UserRole+2);
|
||||||
|
item->setData(conOp.sName, Qt::UserRole+3);
|
||||||
|
_bindItemModel->appendRow(item);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ui->cb_bindObj->setCurrentIndex(0);
|
ui->cb_bindObj->setCurrentIndex(0);
|
||||||
|
|
||||||
//_bindItemModel->clear();
|
|
||||||
/** pBlock = _pParent->getCurBlock();
|
|
||||||
if(pBlock){
|
|
||||||
QList<QUuid> lstCon = pBlock->getConnect();
|
|
||||||
DiagramEditorWizard* pWizard = _pParent->getWizard();
|
|
||||||
if(pWizard){
|
|
||||||
QMap<QUuid,DiagramEditorBriefConnect> mapCon = pWizard->getConnection();
|
|
||||||
for(auto& uid:lstCon){
|
|
||||||
if(mapCon.contains(uid)){
|
|
||||||
auto con = mapCon.value(uid);
|
|
||||||
DiagramEditorConnectType conOp = con.getOpposite(pBlock->getName());
|
|
||||||
auto container = pWizard->getContainerByBlock_all(conOp.sName);
|
|
||||||
|
|
||||||
if(conOp.nType == 1){
|
|
||||||
//ui->cb_bindObj->addItem(conOp.sName,conOp.nType);
|
|
||||||
auto pItem = new QStandardItem(conOp.sName);
|
|
||||||
pItem->setData(conOp.nType,Qt::UserRole);
|
|
||||||
pItem->setData(container->getId(),Qt::UserRole+1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ui->cb_bindObj->setCurrentIndex(0);*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramEditorBayDetailAddDlg::showDlg()
|
void DiagramEditorBayDetailAddDlg::showDlg()
|
||||||
|
|
@ -323,7 +318,9 @@ void DiagramEditorBayDetailAddDlg::onSaveClicked()
|
||||||
QString sType = ui->cb_type->currentText();
|
QString sType = ui->cb_type->currentText();
|
||||||
int nType = ui->cb_type->currentData().toInt();
|
int nType = ui->cb_type->currentData().toInt();
|
||||||
QString sBindObj = ui->cb_bindObj->currentText();
|
QString sBindObj = ui->cb_bindObj->currentText();
|
||||||
int nBindType = ui->cb_bindObj->currentData().toInt();
|
int nBindType = ui->cb_bindObj->currentData(Qt::UserRole+1).toInt();
|
||||||
|
int nBindPara = ui->cb_bindObj->currentData(Qt::UserRole+2).toInt();
|
||||||
|
QString sBindParent = ui->cb_bindObj->currentData(Qt::UserRole+3).toString();
|
||||||
|
|
||||||
if(_pParent){
|
if(_pParent){
|
||||||
auto pCompoModel = _pParent->getComponentModel();
|
auto pCompoModel = _pParent->getComponentModel();
|
||||||
|
|
@ -377,7 +374,9 @@ void DiagramEditorBayDetailAddDlg::onSaveClicked()
|
||||||
itemType->setText(sType);
|
itemType->setText(sType);
|
||||||
itemType->setData(nType);
|
itemType->setData(nType);
|
||||||
itemObj->setText(sBindObj);
|
itemObj->setText(sBindObj);
|
||||||
itemObj->setData(nBindType);
|
itemObj->setData(nBindType,Qt::UserRole+1);
|
||||||
|
itemObj->setData(nBindPara,Qt::UserRole+2);
|
||||||
|
itemObj->setData(sBindParent,Qt::UserRole+3);
|
||||||
|
|
||||||
QList<QStandardItem*> lstItems;
|
QList<QStandardItem*> lstItems;
|
||||||
lstItems<<itemCate<<itemName<<itemType<<itemObj<<itemRoute;
|
lstItems<<itemCate<<itemName<<itemType<<itemObj<<itemRoute;
|
||||||
|
|
@ -406,7 +405,9 @@ void DiagramEditorBayDetailAddDlg::onOkClicked()
|
||||||
QString sName = itemName->text();
|
QString sName = itemName->text();
|
||||||
QString sType = itemType->text();
|
QString sType = itemType->text();
|
||||||
QString sBind = itemBind->text();
|
QString sBind = itemBind->text();
|
||||||
int nBindType = itemBind->data().toInt();
|
int nBindType = itemBind->data(Qt::UserRole + 1).toInt();
|
||||||
|
int nBindPara = itemBind->data(Qt::UserRole + 2).toInt();
|
||||||
|
QString sBindParent = itemBind->data(Qt::UserRole + 3).toString();
|
||||||
QString sAllRoute = itemAllRoute->text();
|
QString sAllRoute = itemAllRoute->text();
|
||||||
QUuid uid = itemName->data(Qt::UserRole+3).toUuid();
|
QUuid uid = itemName->data(Qt::UserRole+3).toUuid();
|
||||||
|
|
||||||
|
|
@ -424,6 +425,8 @@ void DiagramEditorBayDetailAddDlg::onOkClicked()
|
||||||
compoInfo.nType = nType;
|
compoInfo.nType = nType;
|
||||||
compoInfo.sBindObj = sBind;
|
compoInfo.sBindObj = sBind;
|
||||||
compoInfo.nBindType = nBindType;
|
compoInfo.nBindType = nBindType;
|
||||||
|
compoInfo.nBindPara = nBindPara;
|
||||||
|
compoInfo.sBindParent = sBindParent;
|
||||||
compoInfo.uid = uid;
|
compoInfo.uid = uid;
|
||||||
compoInfo.sUsedRoute = sAllRoute.split(",");
|
compoInfo.sUsedRoute = sAllRoute.split(",");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -220,6 +220,8 @@ void DiagramEditorBayDetailSettingDlg::onOkClicked()
|
||||||
compoInfo.nType = itemType->data().toInt();
|
compoInfo.nType = itemType->data().toInt();
|
||||||
compoInfo.sBindObj = itemBind->text();
|
compoInfo.sBindObj = itemBind->text();
|
||||||
compoInfo.nBindType = itemBind->data().toInt();
|
compoInfo.nBindType = itemBind->data().toInt();
|
||||||
|
compoInfo.nBindPara = itemBind->data(Qt::UserRole+2).toInt();
|
||||||
|
compoInfo.sBindParent = itemBind->data(Qt::UserRole+3).toString();
|
||||||
compoInfo.sUsedRoute = itemRoute->text().split(",");
|
compoInfo.sUsedRoute = itemRoute->text().split(",");
|
||||||
compoInfo.nUsedDirection = nDir;
|
compoInfo.nUsedDirection = nDir;
|
||||||
compoInfo.deltaPos = deltaPos;
|
compoInfo.deltaPos = deltaPos;
|
||||||
|
|
@ -341,7 +343,10 @@ void DiagramEditorBayDetailSettingDlg::onPreviewClicked()
|
||||||
}
|
}
|
||||||
if(!_pPreviewDlg->isVisible()){
|
if(!_pPreviewDlg->isVisible()){
|
||||||
_pPreviewDlg->showDlg(nLayout);
|
_pPreviewDlg->showDlg(nLayout);
|
||||||
_pModel->generateTempBay();
|
QRectF recContainAll = _pModel->generateTempBay();
|
||||||
|
if(_curOperateObj){
|
||||||
|
_curOperateObj->setRecSize(recContainAll);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
_pPreviewDlg->hide();
|
_pPreviewDlg->hide();
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,15 @@
|
||||||
#include "diagramEditor/diagramEditorTransDetailAddDlg.h"
|
#include "diagramEditor/diagramEditorTransDetailAddDlg.h"
|
||||||
#include "diagramEditor/diagramEditorTransDetailSettingDlg.h"
|
#include "diagramEditor/diagramEditorTransDetailSettingDlg.h"
|
||||||
#include "ui_diagramEditorTransDetailAddDlg.h"
|
#include "ui_diagramEditorTransDetailAddDlg.h"
|
||||||
|
#include "diagramEditor/diagramEditorBaseBlock.h"
|
||||||
|
#include "diagramEditor/diagramEditorWizard.h"
|
||||||
|
|
||||||
DiagramEditorTransDetailAddDlg::DiagramEditorTransDetailAddDlg(QWidget *parent)
|
DiagramEditorTransDetailAddDlg::DiagramEditorTransDetailAddDlg(QWidget *parent)
|
||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
, ui(new Ui::diagramEditorTransDetailAddDlg)
|
, ui(new Ui::diagramEditorTransDetailAddDlg)
|
||||||
,_selectedModel(nullptr)
|
,_selectedModel(nullptr)
|
||||||
,_pParent(nullptr)
|
,_pParent(nullptr)
|
||||||
|
,_bindItemModel(nullptr)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
|
this->setWindowFlags(Qt::FramelessWindowHint | windowFlags());
|
||||||
|
|
@ -65,6 +68,9 @@ void DiagramEditorTransDetailAddDlg::initial()
|
||||||
ui->tableView_selected->setSelectionBehavior(QAbstractItemView::SelectRows);
|
ui->tableView_selected->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||||
ui->tableView_selected->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
ui->tableView_selected->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||||
ui->tableView_selected->verticalHeader()->setVisible(false);
|
ui->tableView_selected->verticalHeader()->setVisible(false);
|
||||||
|
|
||||||
|
_bindItemModel = new QStandardItemModel(this);
|
||||||
|
ui->cb_bindObj->setModel(_bindItemModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramEditorTransDetailAddDlg::showDlg(int nType)
|
void DiagramEditorTransDetailAddDlg::showDlg(int nType)
|
||||||
|
|
@ -72,6 +78,7 @@ void DiagramEditorTransDetailAddDlg::showDlg(int nType)
|
||||||
if(_pParent){
|
if(_pParent){
|
||||||
_selectedModel->clear();
|
_selectedModel->clear();
|
||||||
_selectedModel->setHorizontalHeaderLabels({"分类", "名称", "类型", "关联对象", "引用线路"});
|
_selectedModel->setHorizontalHeaderLabels({"分类", "名称", "类型", "关联对象", "引用线路"});
|
||||||
|
updateBindLst();
|
||||||
show();
|
show();
|
||||||
auto pCompo = _pParent->getComponentModel();
|
auto pCompo = _pParent->getComponentModel();
|
||||||
auto pRoute = _pParent->getRouteModels().value(nType);
|
auto pRoute = _pParent->getRouteModels().value(nType);
|
||||||
|
|
@ -156,12 +163,14 @@ void DiagramEditorTransDetailAddDlg::showDlg(DiagramEditorRouteInfo info)
|
||||||
itemName->setText(component.sName);
|
itemName->setText(component.sName);
|
||||||
itemType->setText(sType);
|
itemType->setText(sType);
|
||||||
itemObj->setText(component.sBindObj);
|
itemObj->setText(component.sBindObj);
|
||||||
|
itemObj->setData(component.nBindType);
|
||||||
itemRoute->setText(component.sUsedRoute.join(","));
|
itemRoute->setText(component.sUsedRoute.join(","));
|
||||||
|
|
||||||
QList<QStandardItem*> lstItems;
|
QList<QStandardItem*> lstItems;
|
||||||
lstItems<<itemCate<<itemName<<itemType<<itemObj<<itemRoute;
|
lstItems<<itemCate<<itemName<<itemType<<itemObj<<itemRoute;
|
||||||
_selectedModel->appendRow(lstItems);
|
_selectedModel->appendRow(lstItems);
|
||||||
}
|
}
|
||||||
|
updateBindLst();
|
||||||
show();
|
show();
|
||||||
ui->label->setText("编辑线路");
|
ui->label->setText("编辑线路");
|
||||||
ui->le_routeName->setReadOnly(false);
|
ui->le_routeName->setReadOnly(false);
|
||||||
|
|
@ -169,6 +178,83 @@ void DiagramEditorTransDetailAddDlg::showDlg(DiagramEditorRouteInfo info)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DiagramEditorTransDetailAddDlg::updateBindLst()
|
||||||
|
{
|
||||||
|
_bindItemModel->clear();
|
||||||
|
QStandardItem* it = new QStandardItem("无");
|
||||||
|
_bindItemModel->appendRow(it);
|
||||||
|
DiagramEditorTransformerBlock* pBlock = _pParent->getCurBlock();
|
||||||
|
if(pBlock){
|
||||||
|
TransformerType typ = pBlock->getTransType();
|
||||||
|
if(typ == TransformerType::twoWinding){
|
||||||
|
QStandardItem* itemH = new QStandardItem("高压绕组中性点");
|
||||||
|
QStandardItem* itemL = new QStandardItem("低压绕组中性点");
|
||||||
|
|
||||||
|
itemH->setData(3, Qt::UserRole+1);
|
||||||
|
itemH->setData(0, Qt::UserRole+2);
|
||||||
|
itemH->setData(pBlock->getName(), Qt::UserRole+3);
|
||||||
|
_bindItemModel->appendRow(itemH);
|
||||||
|
|
||||||
|
itemL->setData(3, Qt::UserRole+1);
|
||||||
|
itemL->setData(2, Qt::UserRole+2);
|
||||||
|
itemL->setData(pBlock->getName(), Qt::UserRole+3);
|
||||||
|
_bindItemModel->appendRow(itemL);
|
||||||
|
}
|
||||||
|
else{ //三绕组
|
||||||
|
QStandardItem* itemH = new QStandardItem("高压绕组中性点");
|
||||||
|
QStandardItem* itemM = new QStandardItem("中压绕组中性点");
|
||||||
|
QStandardItem* itemL = new QStandardItem("低压绕组中性点");
|
||||||
|
|
||||||
|
itemH->setData(3, Qt::UserRole+1);
|
||||||
|
itemH->setData(0, Qt::UserRole+2);
|
||||||
|
itemH->setData(pBlock->getName(), Qt::UserRole+3);
|
||||||
|
_bindItemModel->appendRow(itemH);
|
||||||
|
|
||||||
|
itemM->setData(3, Qt::UserRole+1);
|
||||||
|
itemM->setData(1, Qt::UserRole+2);
|
||||||
|
itemM->setData(pBlock->getName(), Qt::UserRole+3);
|
||||||
|
_bindItemModel->appendRow(itemM);
|
||||||
|
|
||||||
|
itemL->setData(3, Qt::UserRole+1);
|
||||||
|
itemL->setData(2, Qt::UserRole+2);
|
||||||
|
itemL->setData(pBlock->getName(), Qt::UserRole+3);
|
||||||
|
_bindItemModel->appendRow(itemL);
|
||||||
|
}
|
||||||
|
|
||||||
|
QList<QUuid> lstCon = pBlock->getConnect();
|
||||||
|
DiagramEditorWizard* pWizard = _pParent->getWizard();
|
||||||
|
if(pWizard){
|
||||||
|
QMap<QUuid,DiagramEditorBriefConnect> mapCon = pWizard->getConnection();
|
||||||
|
for(auto& uid:lstCon){
|
||||||
|
if(mapCon.contains(uid)){
|
||||||
|
auto con = mapCon.value(uid);
|
||||||
|
DiagramEditorConnectType conOp = con.getOpposite(pBlock->getName());
|
||||||
|
if(conOp.nType == 3){ //变压器,选择对应进/出线口
|
||||||
|
QStandardItem* item = nullptr;
|
||||||
|
|
||||||
|
if(con.nPara == 0){
|
||||||
|
item = new QStandardItem("高压绕组中性点");
|
||||||
|
}
|
||||||
|
else if(con.nPara == 1){
|
||||||
|
item = new QStandardItem("中压绕组中性点");
|
||||||
|
}
|
||||||
|
else if(con.nPara == 2){
|
||||||
|
item = new QStandardItem("低压绕组中性点");
|
||||||
|
}
|
||||||
|
if(item){
|
||||||
|
item->setData(conOp.nType, Qt::UserRole+1);
|
||||||
|
item->setData(con.nPara, Qt::UserRole+2);
|
||||||
|
item->setData(conOp.sName, Qt::UserRole+3);
|
||||||
|
_bindItemModel->appendRow(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ui->cb_bindObj->setCurrentIndex(0);
|
||||||
|
}
|
||||||
|
|
||||||
void DiagramEditorTransDetailAddDlg::onAddClicked()
|
void DiagramEditorTransDetailAddDlg::onAddClicked()
|
||||||
{
|
{
|
||||||
// 获取当前选中的索引
|
// 获取当前选中的索引
|
||||||
|
|
@ -236,6 +322,8 @@ void DiagramEditorTransDetailAddDlg::onSaveClicked()
|
||||||
QString sType = ui->cb_type->currentText();
|
QString sType = ui->cb_type->currentText();
|
||||||
int nType = ui->cb_type->currentData().toInt();
|
int nType = ui->cb_type->currentData().toInt();
|
||||||
QString sBindObj = ui->cb_bindObj->currentText();
|
QString sBindObj = ui->cb_bindObj->currentText();
|
||||||
|
int nBindType = ui->cb_bindObj->currentData(Qt::UserRole+1).toInt();
|
||||||
|
QString sBindParent = ui->cb_bindObj->currentData(Qt::UserRole+3).toString();
|
||||||
|
|
||||||
if(_pParent){
|
if(_pParent){
|
||||||
auto pCompoModel = _pParent->getComponentModel();
|
auto pCompoModel = _pParent->getComponentModel();
|
||||||
|
|
@ -289,6 +377,8 @@ void DiagramEditorTransDetailAddDlg::onSaveClicked()
|
||||||
itemType->setText(sType);
|
itemType->setText(sType);
|
||||||
itemType->setData(nType);
|
itemType->setData(nType);
|
||||||
itemObj->setText(sBindObj);
|
itemObj->setText(sBindObj);
|
||||||
|
itemObj->setData(nBindType);
|
||||||
|
itemObj->setData(sBindParent,Qt::UserRole+3);
|
||||||
|
|
||||||
QList<QStandardItem*> lstItems;
|
QList<QStandardItem*> lstItems;
|
||||||
lstItems<<itemCate<<itemName<<itemType<<itemObj<<itemRoute;
|
lstItems<<itemCate<<itemName<<itemType<<itemObj<<itemRoute;
|
||||||
|
|
@ -299,7 +389,7 @@ void DiagramEditorTransDetailAddDlg::onSaveClicked()
|
||||||
void DiagramEditorTransDetailAddDlg::onOkClicked()
|
void DiagramEditorTransDetailAddDlg::onOkClicked()
|
||||||
{
|
{
|
||||||
QString sRoute = ui->le_routeName->text();
|
QString sRoute = ui->le_routeName->text();
|
||||||
auto& mapRoute = _pParent->getRouteMaps()[_curType];
|
auto& mapRoute = _pParent->getTransInfo().mapNeutral[_curType].mapRoute;
|
||||||
QStringList lstName; //线路的设备列表
|
QStringList lstName; //线路的设备列表
|
||||||
DiagramEditorRouteInfo routeInfo;
|
DiagramEditorRouteInfo routeInfo;
|
||||||
routeInfo.sRouteName = sRoute;
|
routeInfo.sRouteName = sRoute;
|
||||||
|
|
@ -317,6 +407,8 @@ void DiagramEditorTransDetailAddDlg::onOkClicked()
|
||||||
QString sName = itemName->text();
|
QString sName = itemName->text();
|
||||||
QString sType = itemType->text();
|
QString sType = itemType->text();
|
||||||
QString sBind = itemBind->text();
|
QString sBind = itemBind->text();
|
||||||
|
int nBindType = itemBind->data().toInt();
|
||||||
|
QString sBindParent = itemBind->data(Qt::UserRole+3).toString();
|
||||||
QString sAllRoute = itemAllRoute->text();
|
QString sAllRoute = itemAllRoute->text();
|
||||||
|
|
||||||
int nCate = 0;
|
int nCate = 0;
|
||||||
|
|
@ -332,6 +424,8 @@ void DiagramEditorTransDetailAddDlg::onOkClicked()
|
||||||
compoInfo.sName = sName;
|
compoInfo.sName = sName;
|
||||||
compoInfo.nType = nType;
|
compoInfo.nType = nType;
|
||||||
compoInfo.sBindObj = sBind;
|
compoInfo.sBindObj = sBind;
|
||||||
|
compoInfo.nBindType = nBindType;
|
||||||
|
compoInfo.sBindParent = sBindParent;
|
||||||
compoInfo.sUsedRoute = sAllRoute.split(",");
|
compoInfo.sUsedRoute = sAllRoute.split(",");
|
||||||
|
|
||||||
routeInfo.lstCompo.append(compoInfo);
|
routeInfo.lstCompo.append(compoInfo);
|
||||||
|
|
@ -429,7 +523,7 @@ void DiagramEditorTransDetailAddDlg::onComponentDeleteClicked()
|
||||||
QString sName = indexName.data().toString();
|
QString sName = indexName.data().toString();
|
||||||
|
|
||||||
bool bUsed = false;
|
bool bUsed = false;
|
||||||
auto& mapRoute = _pParent->getRouteMaps()[_curType]; //检索所有路线,判断设备占用情况
|
auto& mapRoute = _pParent->getTransInfo().mapNeutral[_curType].mapRoute; //检索所有路线,判断设备占用情况
|
||||||
for(auto& route:mapRoute){
|
for(auto& route:mapRoute){
|
||||||
QString sRoute = route.sRouteName;
|
QString sRoute = route.sRouteName;
|
||||||
for(auto& compo:route.lstCompo){
|
for(auto& compo:route.lstCompo){
|
||||||
|
|
|
||||||
|
|
@ -84,8 +84,9 @@ void DiagramEditorTransDetailSettingDlg::refreshModel()
|
||||||
_compoModel->clear();
|
_compoModel->clear();
|
||||||
_compoModel->setColumnCount(5);
|
_compoModel->setColumnCount(5);
|
||||||
_compoModel->setHorizontalHeaderLabels({"分类", "名称", "类型", "关联对象", "引用线路"});
|
_compoModel->setHorizontalHeaderLabels({"分类", "名称", "类型", "关联对象", "引用线路"});
|
||||||
auto mapComponent = _curOperateObj->getComponentMap();
|
auto transInfo = _curOperateObj->getTranInfo();
|
||||||
for(auto& comp:mapComponent){
|
|
||||||
|
for(auto& comp:transInfo.mapComponent){
|
||||||
DiagramEditorComponentInfo info = comp;
|
DiagramEditorComponentInfo info = comp;
|
||||||
QStandardItem *itemCate = new QStandardItem();
|
QStandardItem *itemCate = new QStandardItem();
|
||||||
QStandardItem *itemName = new QStandardItem();
|
QStandardItem *itemName = new QStandardItem();
|
||||||
|
|
@ -173,10 +174,9 @@ void DiagramEditorTransDetailSettingDlg::refreshModel()
|
||||||
pModel->setHorizontalHeaderLabels({"线路名", "包含设备"});
|
pModel->setHorizontalHeaderLabels({"线路名", "包含设备"});
|
||||||
}
|
}
|
||||||
|
|
||||||
auto mapRoutes = _curOperateObj->getRouteInfoMaps();
|
setTransInfo(transInfo); //更新路径数据到本界面
|
||||||
setRouteMaps(mapRoutes); //更新路径数据到本界面
|
for(auto it = transInfo.mapNeutral.begin();it != transInfo.mapNeutral.end();++it){
|
||||||
for(auto it = mapRoutes.begin();it != mapRoutes.end();++it){
|
for(auto& route:it.value().mapRoute){
|
||||||
for(auto& route:it.value()){
|
|
||||||
QString sRoute = route.sRouteName;
|
QString sRoute = route.sRouteName;
|
||||||
QStringList lstComp;
|
QStringList lstComp;
|
||||||
for(auto& comp:route.lstCompo){
|
for(auto& comp:route.lstCompo){
|
||||||
|
|
@ -220,7 +220,7 @@ void DiagramEditorTransDetailSettingDlg::onOkClicked()
|
||||||
{
|
{
|
||||||
//将ui设置的参数更新到对应block
|
//将ui设置的参数更新到对应block
|
||||||
if(_curOperateObj){
|
if(_curOperateObj){
|
||||||
_curOperateObj->setRouteInfoMaps(_mapsRouteInfo);
|
//_curOperateObj->setRouteInfoMaps(_mapsRouteInfo);
|
||||||
|
|
||||||
QMap<QString,DiagramEditorComponentInfo> mapComponents;
|
QMap<QString,DiagramEditorComponentInfo> mapComponents;
|
||||||
int nRowCount = _compoModel->rowCount();
|
int nRowCount = _compoModel->rowCount();
|
||||||
|
|
@ -235,6 +235,7 @@ void DiagramEditorTransDetailSettingDlg::onOkClicked()
|
||||||
QUuid uid = itemName->data(Qt::UserRole+3).toUuid(); //uid
|
QUuid uid = itemName->data(Qt::UserRole+3).toUuid(); //uid
|
||||||
int nVal = itemName->data(Qt::UserRole+4).toInt(); //标志
|
int nVal = itemName->data(Qt::UserRole+4).toInt(); //标志
|
||||||
int nRotate = itemName->data(Qt::UserRole+5).toInt(); //旋转角度
|
int nRotate = itemName->data(Qt::UserRole+5).toInt(); //旋转角度
|
||||||
|
int nBindType = itemBind->data(Qt::UserRole+1).toInt();
|
||||||
|
|
||||||
DiagramEditorComponentInfo compoInfo;
|
DiagramEditorComponentInfo compoInfo;
|
||||||
if(itemCate->text() == "电气设备"){
|
if(itemCate->text() == "电气设备"){
|
||||||
|
|
@ -246,6 +247,9 @@ void DiagramEditorTransDetailSettingDlg::onOkClicked()
|
||||||
compoInfo.sName = itemName->text();
|
compoInfo.sName = itemName->text();
|
||||||
compoInfo.nType = itemType->data().toInt();
|
compoInfo.nType = itemType->data().toInt();
|
||||||
compoInfo.sBindObj = itemBind->text();
|
compoInfo.sBindObj = itemBind->text();
|
||||||
|
compoInfo.nBindType = nBindType;
|
||||||
|
compoInfo.nBindPara = itemBind->data(Qt::UserRole+2).toInt();
|
||||||
|
compoInfo.sBindParent = itemBind->data(Qt::UserRole+3).toString();
|
||||||
compoInfo.sUsedRoute = itemRoute->text().split(",");
|
compoInfo.sUsedRoute = itemRoute->text().split(",");
|
||||||
compoInfo.nUsedDirection = nDir;
|
compoInfo.nUsedDirection = nDir;
|
||||||
compoInfo.deltaPos = deltaPos;
|
compoInfo.deltaPos = deltaPos;
|
||||||
|
|
@ -255,7 +259,21 @@ void DiagramEditorTransDetailSettingDlg::onOkClicked()
|
||||||
|
|
||||||
mapComponents.insert(compoInfo.sName,compoInfo);
|
mapComponents.insert(compoInfo.sName,compoInfo);
|
||||||
}
|
}
|
||||||
_curOperateObj->setComponentMap(mapComponents);
|
//_curOperateObj->setComponentMap(mapComponents);
|
||||||
|
_transInfo.mapComponent = mapComponents;
|
||||||
|
if(_transInfo.mapNeutral.contains(0)){
|
||||||
|
_transInfo.mapNeutral[0].nType = 0;
|
||||||
|
_transInfo.mapNeutral[0].delPoint = QPointF(100,-100);
|
||||||
|
}
|
||||||
|
if(_transInfo.mapNeutral.contains(1)){
|
||||||
|
_transInfo.mapNeutral[1].nType = 1;
|
||||||
|
_transInfo.mapNeutral[1].delPoint = QPointF(-100,-50);
|
||||||
|
}
|
||||||
|
if(_transInfo.mapNeutral.contains(2)){
|
||||||
|
_transInfo.mapNeutral[2].nType = 2;
|
||||||
|
_transInfo.mapNeutral[2].delPoint = QPointF(100,0);
|
||||||
|
}
|
||||||
|
_curOperateObj->setTransInfo(_transInfo);
|
||||||
TopologyManager::instance().clearGlobalBlockData(_curOperateObj->getName());
|
TopologyManager::instance().clearGlobalBlockData(_curOperateObj->getName());
|
||||||
TopologyManager::instance().moveTempBlockData();
|
TopologyManager::instance().moveTempBlockData();
|
||||||
_curOperateObj = nullptr;
|
_curOperateObj = nullptr;
|
||||||
|
|
@ -305,7 +323,8 @@ void DiagramEditorTransDetailSettingDlg::onRouteDeleteClicked()
|
||||||
_routeModels.value(n)->removeRow(row);
|
_routeModels.value(n)->removeRow(row);
|
||||||
}
|
}
|
||||||
|
|
||||||
_mapsRouteInfo.value(n).remove(sName); //同步移除数据
|
//_mapsRouteInfo.value(n).remove(sName); //同步移除数据
|
||||||
|
_transInfo.mapNeutral.value(n).mapRoute.remove(sName); //同步移除数据
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramEditorTransDetailSettingDlg::onRouteRbtnClicked(const QPoint &pos)
|
void DiagramEditorTransDetailSettingDlg::onRouteRbtnClicked(const QPoint &pos)
|
||||||
|
|
@ -363,7 +382,8 @@ void DiagramEditorTransDetailSettingDlg::onRouteEditClicked()
|
||||||
QString sName = indexName.data().toString();
|
QString sName = indexName.data().toString();
|
||||||
|
|
||||||
int n = ui->tabWidget->currentIndex();
|
int n = ui->tabWidget->currentIndex();
|
||||||
auto routeInfo = _mapsRouteInfo.value(n).value(sName);
|
//auto routeInfo = _mapsRouteInfo.value(n).value(sName);
|
||||||
|
auto routeInfo = _transInfo.mapNeutral.value(n).mapRoute.value(sName);
|
||||||
_pAddDlg->showDlg(routeInfo);
|
_pAddDlg->showDlg(routeInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,11 +44,11 @@ void DiagramEditorTransPreviewDlg::showDlg(int nType)
|
||||||
void DiagramEditorTransPreviewDlg::updateModelData(int nType)
|
void DiagramEditorTransPreviewDlg::updateModelData(int nType)
|
||||||
{
|
{
|
||||||
if(nType == 0 || nType == 1 || nType == 2){
|
if(nType == 0 || nType == 1 || nType == 2){
|
||||||
_pParent->getModel()->updateTarget(_pParent->getRouteMaps()[nType],14,1); //1右2下
|
_pParent->getModel()->updateTarget(_pParent->getTransInfo().mapNeutral[nType].mapRoute,14,1); //1右2下
|
||||||
}
|
}
|
||||||
else if(nType == 3){ //整个变压器
|
else if(nType == 3){ //整个变压器
|
||||||
_pParent->getModel()->updateTarget(_pParent->getRouteMaps()[0],18,1); //1右2上
|
_pParent->getModel()->updateTarget(_pParent->getTransInfo().mapNeutral[0].mapRoute,18,1); //1右2上
|
||||||
_pParent->getModel()->updateTarget(_pParent->getRouteMaps()[1],14,1); //1右2下
|
_pParent->getModel()->updateTarget(_pParent->getTransInfo().mapNeutral[1].mapRoute,14,1); //1右2下
|
||||||
_pParent->getModel()->updateTarget(_pParent->getRouteMaps()[2],24,1); //1左2下
|
_pParent->getModel()->updateTarget(_pParent->getTransInfo().mapNeutral[2].mapRoute,24,1); //1左2下
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -581,9 +581,13 @@ void DiagramEditorWizard::onAddTransFinished(DiagramEditorWizardTransformerInfo
|
||||||
for(auto& obj:info.lstBindObj){
|
for(auto& obj:info.lstBindObj){
|
||||||
QUuid uid = addConnection(pTrans->getName(),obj.sName,3,2,obj.nPara);
|
QUuid uid = addConnection(pTrans->getName(),obj.sName,3,2,obj.nPara);
|
||||||
pTrans->addConnect(uid);
|
pTrans->addConnect(uid);
|
||||||
|
auto pBlock = getBlockByName_all(obj.sName); //连接的双方都保存连接(todo:修改时删除对面保存的连接)
|
||||||
|
if(pBlock){
|
||||||
|
pBlock->addConnect(uid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pContainer->insertBlock(1,pTrans);
|
pContainer->insertBlock(1,pTrans); //***变压器添加到了1层***
|
||||||
|
|
||||||
int nIndex =_mapSturctContainer.value(g_transformerLevel).size();
|
int nIndex =_mapSturctContainer.value(g_transformerLevel).size();
|
||||||
_mapSturctContainer[g_transformerLevel].insert(nIndex,pContainer);
|
_mapSturctContainer[g_transformerLevel].insert(nIndex,pContainer);
|
||||||
|
|
|
||||||
|
|
@ -431,6 +431,7 @@ void EditPanel::onItemDbClicked(QPointer<DiagramEditorBaseBlock> pBlock)
|
||||||
if(_transDetailSetting == nullptr){
|
if(_transDetailSetting == nullptr){
|
||||||
_transDetailSetting = new DiagramEditorTransDetailSettingDlg(this);
|
_transDetailSetting = new DiagramEditorTransDetailSettingDlg(this);
|
||||||
_transDetailSetting->setModelDelegate(_pModel);
|
_transDetailSetting->setModelDelegate(_pModel);
|
||||||
|
_transDetailSetting->setWizard(_curWizard);
|
||||||
}
|
}
|
||||||
auto pTrans = dynamic_cast<DiagramEditorTransformerBlock*>(pBlock.data());
|
auto pTrans = dynamic_cast<DiagramEditorTransformerBlock*>(pBlock.data());
|
||||||
if(pTrans)
|
if(pTrans)
|
||||||
|
|
|
||||||
|
|
@ -106,16 +106,6 @@ template<typename TypeLine> void BaseModel::establishConnection(GraphicsBaseItem
|
||||||
QMap<QString,ItemPort*> mapPorts = pDest->getPorts();
|
QMap<QString,ItemPort*> mapPorts = pDest->getPorts();
|
||||||
|
|
||||||
if(nMode == 0){
|
if(nMode == 0){
|
||||||
/*double minDis = 999;
|
|
||||||
for(auto& port:mapPorts) //与母线或节点连接时,连接最近接线点
|
|
||||||
{
|
|
||||||
double dis = distanceBetweenItems(port,pSrc);
|
|
||||||
if(dis < minDis){
|
|
||||||
minDis = dis;
|
|
||||||
pDestPort = port;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
pDestPort = getClosestUnusedPort(mapPorts,pSrc,nType);
|
pDestPort = getClosestUnusedPort(mapPorts,pSrc,nType);
|
||||||
}
|
}
|
||||||
else if(nMode == 1){
|
else if(nMode == 1){
|
||||||
|
|
@ -142,6 +132,30 @@ template<typename TypeLine> void BaseModel::establishConnection(GraphicsBaseItem
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(nMode == 2){
|
||||||
|
for(auto& port:mapPorts) //连接非中性点
|
||||||
|
{
|
||||||
|
int nTpe = port->getType();
|
||||||
|
int nPos = port->portPos();
|
||||||
|
if(nTpe != T_newTral){
|
||||||
|
if(nParam == 0){
|
||||||
|
if(nPos == P_top){
|
||||||
|
pDestPort = port;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(nParam == 1){
|
||||||
|
if(nPos == P_left || nPos == P_right){
|
||||||
|
pDestPort = port;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(nParam == 2){
|
||||||
|
if(nPos == P_down){
|
||||||
|
pDestPort = port;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if((nTypeDest == 1 || nTypeDest == 0) && (nTypeSrc != 1 && nTypeSrc != 0))
|
else if((nTypeDest == 1 || nTypeDest == 0) && (nTypeSrc != 1 && nTypeSrc != 0))
|
||||||
{
|
{
|
||||||
|
|
@ -156,16 +170,6 @@ template<typename TypeLine> void BaseModel::establishConnection(GraphicsBaseItem
|
||||||
QMap<QString,ItemPort*> mapPorts = pSrc->getPorts();
|
QMap<QString,ItemPort*> mapPorts = pSrc->getPorts();
|
||||||
|
|
||||||
if(nMode == 0){
|
if(nMode == 0){
|
||||||
/*double minDis = 999;
|
|
||||||
for(auto& port:mapPorts) //与母线或节点连接时,连接最近接线点
|
|
||||||
{
|
|
||||||
double dis = distanceBetweenItems(port,pDest);
|
|
||||||
if(dis < minDis){
|
|
||||||
minDis = dis;
|
|
||||||
pSrcPort = port;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
pSrcPort = getClosestUnusedPort(mapPorts,pDest,nType);
|
pSrcPort = getClosestUnusedPort(mapPorts,pDest,nType);
|
||||||
}
|
}
|
||||||
else if(nMode == 1){
|
else if(nMode == 1){
|
||||||
|
|
@ -192,7 +196,30 @@ template<typename TypeLine> void BaseModel::establishConnection(GraphicsBaseItem
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(nMode == 2){
|
||||||
|
for(auto& port:mapPorts) //连接非中性点
|
||||||
|
{
|
||||||
|
int nTpe = port->getType();
|
||||||
|
int nPos = port->portPos();
|
||||||
|
if(nTpe != T_newTral){
|
||||||
|
if(nParam == 0){
|
||||||
|
if(nPos == P_top){
|
||||||
|
pSrcPort = port;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(nParam == 1){
|
||||||
|
if(nPos == P_left || nPos == P_right){
|
||||||
|
pSrcPort = port;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(nParam == 2){
|
||||||
|
if(nPos == P_down){
|
||||||
|
pSrcPort = port;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if((nTypeSrc == 1 || nTypeSrc == 0) && (nTypeDest == 1 || nTypeDest == 0)){ //两个都是母线或节点
|
else if((nTypeSrc == 1 || nTypeSrc == 0) && (nTypeDest == 1 || nTypeDest == 0)){ //两个都是母线或节点
|
||||||
int index = 0;
|
int index = 0;
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,8 @@
|
||||||
#include "diagramEditor/diagramEditorBaseBlock.h"
|
#include "diagramEditor/diagramEditorBaseBlock.h"
|
||||||
#include "diagramEditor/editItems.h"
|
#include "diagramEditor/editItems.h"
|
||||||
#include "diagramEditor/editPanel.h"
|
#include "diagramEditor/editPanel.h"
|
||||||
|
#include "diagramEditor/diagramEditorWizard.h"
|
||||||
|
#include "diagramEditor/diagramEditorStructContainer.h"
|
||||||
|
|
||||||
DiagramEditorModel::DiagramEditorModel()
|
DiagramEditorModel::DiagramEditorModel()
|
||||||
:_pCurBayRoute(nullptr)
|
:_pCurBayRoute(nullptr)
|
||||||
|
|
@ -120,9 +122,14 @@ void DiagramEditorModel::createTopoTerminalsByItem(GraphicsBaseItem* pItem,Model
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramEditorModel::generateTempBay()
|
QRectF DiagramEditorModel::generateTempBay()
|
||||||
{
|
{
|
||||||
|
QRectF itemsRect;
|
||||||
generateItemByModel(_pCurBayRoute);
|
generateItemByModel(_pCurBayRoute);
|
||||||
|
if(_pCurPreviewScene)
|
||||||
|
itemsRect = _pCurPreviewScene->itemsBoundingRect();
|
||||||
|
|
||||||
|
return itemsRect;
|
||||||
}
|
}
|
||||||
|
|
||||||
GraphicsBaseModelItem* DiagramEditorModel::generateComponent(QUuid uid,QString sName,int nCategory,int nType,QPointF pos,int nRotate,int mode)
|
GraphicsBaseModelItem* DiagramEditorModel::generateComponent(QUuid uid,QString sName,int nCategory,int nType,QPointF pos,int nRotate,int mode)
|
||||||
|
|
@ -285,18 +292,29 @@ void DiagramEditorModel::generateTempTrans(int nType,DiagramEditorTransformerBlo
|
||||||
}
|
}
|
||||||
else if(nType == 3){
|
else if(nType == 3){
|
||||||
TransformerType typ = block->getTransType();
|
TransformerType typ = block->getTransType();
|
||||||
|
auto pInfo = block->getTranInfo();
|
||||||
int nT = 0;
|
int nT = 0;
|
||||||
if(typ == TransformerType::twoWinding){
|
if(typ == TransformerType::twoWinding){
|
||||||
generateItemByModel(_pCurTransLRoutes.value(0),1,QPoint(100,-25));
|
generateItemByModel(_pCurTransLRoutes.value(0),1,QPoint(100,-25));
|
||||||
generateItemByModel(_pCurTransLRoutes.value(2),1,QPoint(100,25));
|
generateItemByModel(_pCurTransLRoutes.value(2),1,QPoint(100,25));
|
||||||
|
pInfo.mapNeutral[0].delPoint = QPoint(100,-25);
|
||||||
|
pInfo.mapNeutral[2].delPoint = QPoint(100,25);
|
||||||
}
|
}
|
||||||
else if(typ == TransformerType::threeWinding){
|
else if(typ == TransformerType::threeWinding){
|
||||||
generateItemByModel(_pCurTransLRoutes.value(0),1,QPoint(100,-25));
|
generateItemByModel(_pCurTransLRoutes.value(0),1,QPoint(100,-25));
|
||||||
generateItemByModel(_pCurTransLRoutes.value(1),1,QPoint(-150,0));
|
generateItemByModel(_pCurTransLRoutes.value(1),1,QPoint(-150,0));
|
||||||
generateItemByModel(_pCurTransLRoutes.value(2),1,QPoint(100,25));
|
generateItemByModel(_pCurTransLRoutes.value(2),1,QPoint(100,25));
|
||||||
|
pInfo.mapNeutral[0].delPoint = QPoint(100,-25);
|
||||||
|
pInfo.mapNeutral[1].delPoint = QPoint(-150,0);
|
||||||
|
pInfo.mapNeutral[2].delPoint = QPoint(100,25);
|
||||||
}
|
}
|
||||||
|
|
||||||
connectTransToNeutral(block);
|
connectTransToNeutral(block);
|
||||||
|
|
||||||
|
if(_pCurPreviewScene){
|
||||||
|
QRectF itemsRect = _pCurPreviewScene->itemsBoundingRect();
|
||||||
|
block->setRecSize(itemsRect);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -313,9 +331,10 @@ void DiagramEditorModel::connectTransToNeutral(DiagramEditorTransformerBlock* bl
|
||||||
else if(typ == TransformerType::threeWinding){
|
else if(typ == TransformerType::threeWinding){
|
||||||
nT = 16;
|
nT = 16;
|
||||||
}
|
}
|
||||||
generateComponent(uid,sName,0,nT,QPoint(0,0),0,1);
|
generateComponent(uid,sName,0,nT,QPoint(0,0),0,0);
|
||||||
|
|
||||||
auto pTransItem = _tempItem.value(uid);
|
auto pTransItem = _tempItem.value(uid);
|
||||||
|
if(pTransItem){
|
||||||
if(typ == TransformerType::twoWinding){
|
if(typ == TransformerType::twoWinding){
|
||||||
linkTransItem(pTransItem,_pCurTransLRoutes.value(0));
|
linkTransItem(pTransItem,_pCurTransLRoutes.value(0));
|
||||||
linkTransItem(pTransItem,_pCurTransLRoutes.value(2));
|
linkTransItem(pTransItem,_pCurTransLRoutes.value(2));
|
||||||
|
|
@ -327,6 +346,7 @@ void DiagramEditorModel::connectTransToNeutral(DiagramEditorTransformerBlock* bl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DiagramEditorModel::linkTransItem(GraphicsBaseModelItem* pTrans,QStandardItemModel* pModel)
|
void DiagramEditorModel::linkTransItem(GraphicsBaseModelItem* pTrans,QStandardItemModel* pModel)
|
||||||
{
|
{
|
||||||
|
|
@ -356,7 +376,7 @@ void DiagramEditorModel::linkTransItem(GraphicsBaseModelItem* pTrans,QStandardIt
|
||||||
auto pLineData = TopologyManager::instance().ifConnection(uid1.toString(),uid2.toString()); //判断两个item是否有连接
|
auto pLineData = TopologyManager::instance().ifConnection(uid1.toString(),uid2.toString()); //判断两个item是否有连接
|
||||||
if(pLineData != nullptr){
|
if(pLineData != nullptr){
|
||||||
if(!_tempItem.contains(QUuid(pLineData->id()))){ //connectdata已存在,item未绘制
|
if(!_tempItem.contains(QUuid(pLineData->id()))){ //connectdata已存在,item未绘制
|
||||||
auto pLine = generateLine(QUuid(pLineData->id()),"",1); //重新绘制
|
auto pLine = generateLine(QUuid(pLineData->id()),"",0); //重新绘制
|
||||||
if(pLine)
|
if(pLine)
|
||||||
establishConnection(pItem,pTrans,pLine,ModelFunctionType::BlockEditorModel,1,nPos);
|
establishConnection(pItem,pTrans,pLine,ModelFunctionType::BlockEditorModel,1,nPos);
|
||||||
}
|
}
|
||||||
|
|
@ -364,7 +384,7 @@ void DiagramEditorModel::linkTransItem(GraphicsBaseModelItem* pTrans,QStandardIt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{ //connectdata不存在,新建
|
else{ //connectdata不存在,新建
|
||||||
auto pLine = generateLine(QUuid::createUuid(),"",1);
|
auto pLine = generateLine(QUuid::createUuid(),"",0);
|
||||||
if(pLine)
|
if(pLine)
|
||||||
establishConnection(pItem,pTrans,pLine,ModelFunctionType::BlockEditorModel,1,nPos);
|
establishConnection(pItem,pTrans,pLine,ModelFunctionType::BlockEditorModel,1,nPos);
|
||||||
}
|
}
|
||||||
|
|
@ -379,25 +399,45 @@ void DiagramEditorModel::generatePreview()
|
||||||
if(_pPanel){
|
if(_pPanel){
|
||||||
_pPanel->showPreview();
|
_pPanel->showPreview();
|
||||||
QList<EditBaseItem*> lst = _pPanel->getBlockItems();
|
QList<EditBaseItem*> lst = _pPanel->getBlockItems();
|
||||||
|
QMap<QString,QList<DiagramEditorComponentInfo>> baysCompo;
|
||||||
|
QMap<QString,QMap<int,QList<DiagramEditorComponentInfo>>> transCompo;
|
||||||
|
|
||||||
for(auto item:lst){
|
for(auto item:lst){
|
||||||
if(item->getType() == EditorItemType::bus){ //首次循环生成母线
|
if(item->getType() == EditorItemType::bus){ //首次循环生成母线
|
||||||
auto p = item->getBlockData(); //获取blockitem对应的data
|
auto p = item->getBlockData(); //获取blockitem对应的data
|
||||||
if(p){
|
if(p){
|
||||||
QUuid uid = p->getId();
|
QUuid uid = p->getId();
|
||||||
QString name = p->getName();
|
QString name = p->getName();
|
||||||
|
auto pContainer = _pWizard->getContainerByBlock_all(name); //获取block所在的container
|
||||||
|
|
||||||
|
auto mapBlocks = pContainer->getBlockMap();
|
||||||
|
int nMaxLen = 0;
|
||||||
|
for(auto &lst:mapBlocks){ //根据容器中block的最大长度,计算出母线最小length
|
||||||
|
int nLen = 0;
|
||||||
|
for(auto block:lst){
|
||||||
|
if(block->getType() == 1) //容器中block是母线不计算
|
||||||
|
continue;
|
||||||
|
nLen = 100+block->getRecSize().width();
|
||||||
|
}
|
||||||
|
if(nMaxLen < nLen)
|
||||||
|
nMaxLen = nLen;
|
||||||
|
}
|
||||||
|
|
||||||
|
QRectF rec = item->boundingRect();
|
||||||
|
|
||||||
QPointF pos = item->scenePos();
|
QPointF pos = item->scenePos();
|
||||||
auto pItem = generateComponent(uid,name,0,1,pos,0,1);
|
auto pItem = generateComponent(uid,name,0,1,pos,0,1);
|
||||||
pItem->setBoundingRect(item->boundingRect());
|
if(nMaxLen > rec.width())
|
||||||
|
rec.setWidth(nMaxLen);
|
||||||
|
pItem->setBoundingRect(rec);
|
||||||
|
p->setRecSize(rec);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
else if(item->getType() == EditorItemType::bay){ //第二次生成间隔、变压器
|
||||||
|
|
||||||
for(auto item:lst){
|
|
||||||
if(item->getType() == EditorItemType::bay){ //第二次生成间隔,部分接线
|
|
||||||
auto p = item->getBlockData(); //获取blockitem对应的data
|
auto p = item->getBlockData(); //获取blockitem对应的data
|
||||||
DiagramEditorBayBlock* pBay = dynamic_cast<DiagramEditorBayBlock*>(p.data());
|
DiagramEditorBayBlock* pBay = dynamic_cast<DiagramEditorBayBlock*>(p.data());
|
||||||
if(pBay){
|
if(pBay){
|
||||||
|
QString sBay = pBay->getName();
|
||||||
auto mapRoute = pBay->getBayInfo().mapRoute;
|
auto mapRoute = pBay->getBayInfo().mapRoute;
|
||||||
auto mapCompo = pBay->getBayInfo().mapComponent;
|
auto mapCompo = pBay->getBayInfo().mapComponent;
|
||||||
|
|
||||||
|
|
@ -406,14 +446,255 @@ void DiagramEditorModel::generatePreview()
|
||||||
QPointF centerLocal = rect.center();
|
QPointF centerLocal = rect.center();
|
||||||
// 转换为场景坐标系
|
// 转换为场景坐标系
|
||||||
QPointF centerScene = item->mapToScene(centerLocal);
|
QPointF centerScene = item->mapToScene(centerLocal);
|
||||||
generateItemByInfo(mapRoute,mapCompo,centerScene);
|
QList<DiagramEditorComponentInfo> lstCompo = generateItemByInfo(mapRoute,mapCompo,centerScene); //返回与外部连接的compo
|
||||||
|
if(!baysCompo.contains(sBay))
|
||||||
|
baysCompo.insert(sBay,lstCompo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(item->getType() == EditorItemType::trans){
|
||||||
|
auto p = item->getBlockData(); //获取blockitem对应的data
|
||||||
|
DiagramEditorTransformerBlock* pTrans = dynamic_cast<DiagramEditorTransformerBlock*>(p.data());
|
||||||
|
if(pTrans){
|
||||||
|
//首先绘制本体
|
||||||
|
auto pType = pTrans->getTransType();
|
||||||
|
QString sTrans = pTrans->getName();
|
||||||
|
QUuid uid = pTrans->getId();
|
||||||
|
QString name = pTrans->getName();
|
||||||
|
|
||||||
|
QPointF pos = item->scenePos();
|
||||||
|
int nType = 0;
|
||||||
|
if(pType == TransformerType::twoWinding)
|
||||||
|
nType = 15;
|
||||||
|
else
|
||||||
|
nType = 16;
|
||||||
|
auto pItem = generateComponent(uid,name,0,nType,pos,0,1);
|
||||||
|
|
||||||
|
QRectF rect = item->boundingRect();
|
||||||
|
// 计算中心点(本地坐标系)
|
||||||
|
QPointF centerLocal = rect.center();
|
||||||
|
// 转换为场景坐标系
|
||||||
|
QPointF centerScene = item->mapToScene(centerLocal);
|
||||||
|
auto transInfo = pTrans->getTranInfo();
|
||||||
|
|
||||||
|
QMap<int,QList<DiagramEditorComponentInfo>> neutralInfo;
|
||||||
|
for(auto &neutral:transInfo.mapNeutral){
|
||||||
|
QPointF pDelta = neutral.delPoint;
|
||||||
|
int nT = neutral.nType;
|
||||||
|
QList<DiagramEditorComponentInfo> lstCompo = generateItemByInfo(neutral.mapRoute,transInfo.mapComponent,centerScene+pDelta);
|
||||||
|
if(!neutralInfo.contains(nT))
|
||||||
|
neutralInfo.insert(nT,lstCompo);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!transCompo.contains(sTrans)) //添加需连接的中性点
|
||||||
|
transCompo.insert(sTrans,neutralInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(auto &lst:baysCompo){
|
||||||
|
generateOutConnection(lst,2);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(auto &map:transCompo){
|
||||||
|
for(auto it = map.begin(); it != map.end();++it){
|
||||||
|
generateOutConnection(it.value(),1,it.key());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
calculateBlockPos();
|
||||||
|
}
|
||||||
|
|
||||||
|
void DiagramEditorModel::calculateBlockPos()
|
||||||
|
{
|
||||||
|
if(_pWizard){
|
||||||
|
double deltaY = 0; //竖直方向每行增量
|
||||||
|
double lastMaxDownH = 0; //上一行的下部最大高度
|
||||||
|
auto mapTotal = _pWizard->getContainerStruct();
|
||||||
|
for(auto iter = mapTotal.begin();iter != mapTotal.end();++iter){
|
||||||
|
if(iter.key() == g_transformerLevel)
|
||||||
|
continue;
|
||||||
|
double dMaxUp = 0; //计算最大上方空间
|
||||||
|
double dMaxDown = 0; //计算最大下方空间
|
||||||
|
|
||||||
|
for(auto &pCon:iter.value()){ //首次循环遍历每行container,计算最大上空间高度,最大下空间高度,容器宽度
|
||||||
|
auto mapBlocks = pCon->getBlockMap();
|
||||||
|
auto lstBlockUp = mapBlocks.value(0);
|
||||||
|
auto lstBlockDown = mapBlocks.value(3);
|
||||||
|
double dConWidth = 0;
|
||||||
|
|
||||||
|
double dWidthUp = 0;
|
||||||
|
for(auto pBlock:lstBlockUp){
|
||||||
|
QRectF rec = pBlock->getRecSize();
|
||||||
|
double dHeight = rec.height();
|
||||||
|
double dWidth = rec.width();
|
||||||
|
if(dMaxUp < dHeight)
|
||||||
|
dMaxUp = dHeight;
|
||||||
|
dWidthUp += g_nHorizontalBlockSpacing+dWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
double dWidthDown = 0;
|
||||||
|
for(auto pBlock:lstBlockDown){
|
||||||
|
QRectF rec = pBlock->getRecSize();
|
||||||
|
double dHeight = rec.height();
|
||||||
|
double dWidth = rec.width();
|
||||||
|
if(dMaxDown < dHeight)
|
||||||
|
dMaxDown = dHeight;
|
||||||
|
dWidthDown = g_nHorizontalBlockSpacing+dWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
dConWidth = dWidthUp > dWidthDown ? dWidthUp : dWidthDown;
|
||||||
|
pCon->setWidth(dConWidth);
|
||||||
|
}
|
||||||
|
|
||||||
|
double dDeltaX = 0; //每行横向偏移
|
||||||
|
for(auto &pCon:iter.value()){ //第二次循环赋值,计算位置(首先确定母线位置)
|
||||||
|
pCon->setMaxUpH(dMaxUp);
|
||||||
|
pCon->setMaxDownH(dMaxDown);
|
||||||
|
if(iter.value().first() == pCon){ //每行只进行一次y位移
|
||||||
|
if(iter == mapTotal.begin()){ //首行 deltaY = 首行dMaxUpH
|
||||||
|
deltaY = pCon->getMaxUpH();
|
||||||
|
}
|
||||||
|
else //其他行 deltaY = deltaY+母线高度+上行dMaxDownH+本行dMaxUpH
|
||||||
|
{
|
||||||
|
deltaY = deltaY + 50 + lastMaxDownH + pCon->getMaxUpH();
|
||||||
|
}
|
||||||
|
lastMaxDownH = pCon->getMaxDownH();
|
||||||
|
}
|
||||||
|
pCon->setMidUpY(deltaY);
|
||||||
|
pCon->setMidDownY(deltaY+50);
|
||||||
|
pCon->setStartX(dDeltaX);
|
||||||
|
dDeltaX += pCon->getWidth();
|
||||||
|
|
||||||
|
//计算container中block中心点的位置
|
||||||
|
auto mapBlocks = pCon->getBlockMap();
|
||||||
|
|
||||||
|
for(auto it = mapBlocks.begin();it != mapBlocks.end();++it){
|
||||||
|
double pStartX = pCon->getStartX(); //容器起始x
|
||||||
|
double dMiddleUpY = pCon->getMidUpY(); //获取1母上边y
|
||||||
|
double dMiddleDownY = pCon->getMidDownY(); //获取2母下边y
|
||||||
|
double deltaX = pStartX;
|
||||||
|
for(auto pBlock:it.value()){
|
||||||
|
QRectF recBlock = pBlock->getRecSize();
|
||||||
|
QPointF center;
|
||||||
|
if(pBlock->getType() == 1){ //母线
|
||||||
|
if(it.key() == 1){ //1母
|
||||||
|
center = QPointF(pStartX+recBlock.width()*0.5,dMiddleUpY+recBlock.height()*0.5);
|
||||||
|
}
|
||||||
|
else if(it.key() == 2){ //2母
|
||||||
|
center = QPointF(pStartX+recBlock.width()*0.5,dMiddleDownY-recBlock.height()*0.5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(pBlock->getType() == 2){ //间隔
|
||||||
|
if(it.key() == 0){ //容器最上层
|
||||||
|
center = QPointF(deltaX+recBlock.width()*0.5,dMiddleUpY-recBlock.height()*0.5);
|
||||||
|
}
|
||||||
|
else if(it.key() == 3){ //容器最下层
|
||||||
|
center = QPointF(deltaX+recBlock.width()*0.5,dMiddleDownY+recBlock.height()*0.5);
|
||||||
|
}
|
||||||
|
deltaX += recBlock.width();
|
||||||
|
}
|
||||||
|
else if(pBlock->getType() == 3){ //变压器
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!center.isNull())
|
||||||
|
pBlock->setSeceneDelta(center);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dDeltaX = 0;
|
||||||
|
if(iter.key() == 0){ //若设置了变压器,直接插入到第一行下方
|
||||||
|
if(!mapTotal.value(g_transformerLevel).empty()){
|
||||||
|
for(auto &pCon:iter.value()){ //首次计算变压器大小
|
||||||
|
auto mapBlocks = pCon->getBlockMap();
|
||||||
|
auto lstBlock = mapBlocks.value(1);
|
||||||
|
for(auto &pb:lstBlock){
|
||||||
|
QRectF rec = pb->getRecSize();
|
||||||
|
pCon->setWidth(rec.width());
|
||||||
|
pCon->setHeight(rec.height());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(auto &pCon:iter.value()){ //计算位置
|
||||||
|
if(pCon == iter.value().first()){
|
||||||
|
//只在每行第一次改变deltaY
|
||||||
|
deltaY += pCon->getHeight();
|
||||||
|
}
|
||||||
|
pCon->setStartY(deltaY-pCon->getHeight());
|
||||||
|
pCon->setStartX(dDeltaX);
|
||||||
|
dDeltaX += pCon->getWidth();
|
||||||
|
|
||||||
|
auto mapBlocks = pCon->getBlockMap();
|
||||||
|
|
||||||
|
for(auto it = mapBlocks.begin();it != mapBlocks.end();++it){
|
||||||
|
for(auto pBlock:it.value()){
|
||||||
|
QRectF recBlock = pBlock->getRecSize();
|
||||||
|
QPointF center = QPointF(pCon->getStartX()+recBlock.width()*0.5,pCon->getStartY()+recBlock.height()*0.5);
|
||||||
|
pBlock->setSeceneDelta(center);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DiagramEditorModel::setItemInBlockPos()
|
||||||
|
{
|
||||||
|
QList<EditBaseItem*> lst = _pPanel->getBlockItems();
|
||||||
|
|
||||||
for(auto item:lst){
|
for(auto item:lst){
|
||||||
if(item->getType() == EditorItemType::trans){ //第三次生成变压器,部分接线
|
if(item->getType() == EditorItemType::bus){
|
||||||
|
auto p = item->getBlockData(); //获取blockitem对应的data
|
||||||
|
if(p){
|
||||||
|
QUuid uid = p->getId();
|
||||||
|
auto pItem = _previewItem.value(uid);
|
||||||
|
if(pItem){
|
||||||
|
QPointF pPos = p->getSceneDelta();
|
||||||
|
pItem->setPos(pPos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(item->getType() == EditorItemType::bay){
|
||||||
|
auto p = item->getBlockData(); //获取blockitem对应的data
|
||||||
|
DiagramEditorBayBlock* pBay = dynamic_cast<DiagramEditorBayBlock*>(p.data());
|
||||||
|
if(pBay){
|
||||||
|
QString sBay = pBay->getName();
|
||||||
|
auto bayInfo = pBay->getBayInfo();
|
||||||
|
auto mapRoute = bayInfo.mapRoute;
|
||||||
|
auto mapCompo = bayInfo.mapComponent;
|
||||||
|
|
||||||
|
auto lst = getRouteItemInfoList(mapCompo,mapRoute);
|
||||||
|
for(auto& info:lst){
|
||||||
|
auto pItem = _previewItem.value(info.uid);
|
||||||
|
if(pItem){
|
||||||
|
QPointF pos = info.deltaPos+pBay->getSceneDelta();
|
||||||
|
pItem->setPos(pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(item->getType() == EditorItemType::trans){
|
||||||
|
auto p = item->getBlockData(); //获取blockitem对应的data
|
||||||
|
DiagramEditorTransformerBlock* pTrans = dynamic_cast<DiagramEditorTransformerBlock*>(p.data());
|
||||||
|
if(pTrans){
|
||||||
|
auto transInfo = pTrans->getTranInfo();
|
||||||
|
auto mapCompo = transInfo.mapComponent;
|
||||||
|
|
||||||
|
for(auto &neuInfo:transInfo.mapNeutral){
|
||||||
|
auto mapRoute = neuInfo.mapRoute;
|
||||||
|
|
||||||
|
auto lst = getRouteItemInfoList(mapCompo,mapRoute);
|
||||||
|
for(auto& info:lst){
|
||||||
|
auto pItem = _previewItem.value(info.uid);
|
||||||
|
if(pItem){
|
||||||
|
QPointF pos = info.deltaPos+(pTrans->getSceneDelta()-info.deltaPos);
|
||||||
|
pItem->setPos(pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -505,7 +786,7 @@ void DiagramEditorModel::generateItemByModel(QStandardItemModel* pModel,int nFro
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramEditorModel::generateItemByInfo(QMap<QString,DiagramEditorRouteInfo> mapRoute,QMap<QString,DiagramEditorComponentInfo> mapCompo,QPointF delta)
|
QList<DiagramEditorComponentInfo> DiagramEditorModel::generateItemByInfo(QMap<QString,DiagramEditorRouteInfo> mapRoute,QMap<QString,DiagramEditorComponentInfo> mapCompo,QPointF delta)
|
||||||
{
|
{
|
||||||
QList<DiagramEditorComponentInfo> lstBind; //连接外部对象的component
|
QList<DiagramEditorComponentInfo> lstBind; //连接外部对象的component
|
||||||
QString sMain;
|
QString sMain;
|
||||||
|
|
@ -522,7 +803,7 @@ void DiagramEditorModel::generateItemByInfo(QMap<QString,DiagramEditorRouteInfo>
|
||||||
}
|
}
|
||||||
|
|
||||||
if(route.lstCompo.size() > 1){
|
if(route.lstCompo.size() > 1){
|
||||||
bulidAndLinkComponent(route.lstCompo);
|
bulidAndLinkComponent(route.lstCompo,mapCompo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -550,14 +831,19 @@ void DiagramEditorModel::generateItemByInfo(QMap<QString,DiagramEditorRouteInfo>
|
||||||
}
|
}
|
||||||
|
|
||||||
if(route.lstOrder.size() > 1){
|
if(route.lstOrder.size() > 1){
|
||||||
bulidAndLinkComponent(route.lstOrder);
|
bulidAndLinkComponent(route.lstOrder,mapCompo);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(route.lstReverse.size() > 1){
|
if(route.lstReverse.size() > 1){
|
||||||
bulidAndLinkComponent(route.lstReverse);
|
bulidAndLinkComponent(route.lstReverse,mapCompo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return lstBind;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DiagramEditorModel::generateOutConnection(QList<DiagramEditorComponentInfo> lstBind,int nTypeTransCon,int nPos)
|
||||||
|
{
|
||||||
for(auto& compo:lstBind){ //遍历关联外部的item,进行连线
|
for(auto& compo:lstBind){ //遍历关联外部的item,进行连线
|
||||||
if(compo.nBindType == 1){ //关联的是母线 母线没有数据,获取绘制的母线item
|
if(compo.nBindType == 1){ //关联的是母线 母线没有数据,获取绘制的母线item
|
||||||
for(auto& pItem:_previewItem){
|
for(auto& pItem:_previewItem){
|
||||||
|
|
@ -586,6 +872,41 @@ void DiagramEditorModel::generateItemByInfo(QMap<QString,DiagramEditorRouteInfo>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(compo.nBindType == 3){ //关联变压器
|
||||||
|
for(auto& pItem:_previewItem){
|
||||||
|
auto pro = pItem->getProperty();
|
||||||
|
if(pro){
|
||||||
|
QString sName = pro->name();
|
||||||
|
if(sName == compo.sBindParent){ //判断变压器名
|
||||||
|
GraphicsBaseModelItem* pSrc = _previewItem.value(compo.uid);
|
||||||
|
GraphicsBaseModelItem* pTarget = pItem;
|
||||||
|
auto pLineData = TopologyManager::instance().ifConnection(pSrc->itemId().toString(),pTarget->itemId().toString(),ModelFunctionType::EditorModel); //判断两个item是否有连接
|
||||||
|
if(pLineData != nullptr){
|
||||||
|
if(!_previewItem.contains(QUuid(pLineData->id()))){ //connectdata已存在,item未绘制
|
||||||
|
auto pLine = generateLine(QUuid(pLineData->id()),"",1); //重新绘制
|
||||||
|
if(pLine){
|
||||||
|
if(nTypeTransCon == 2)
|
||||||
|
establishConnection(pSrc,pTarget,pLine,ModelFunctionType::EditorModel,2,compo.nBindPara);
|
||||||
|
else
|
||||||
|
establishConnection(pSrc,pTarget,pLine,ModelFunctionType::EditorModel,nTypeTransCon,nPos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{ //已绘制,略过
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{ //connectdata不存在,新建
|
||||||
|
auto pLine = generateLine(QUuid::createUuid(),"",1);
|
||||||
|
if(pLine){
|
||||||
|
if(nTypeTransCon == 2)
|
||||||
|
establishConnection(pSrc,pTarget,pLine,ModelFunctionType::EditorModel,2,compo.nBindPara);
|
||||||
|
else
|
||||||
|
establishConnection(pSrc,pTarget,pLine,ModelFunctionType::EditorModel,nTypeTransCon,nPos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1134,15 +1455,17 @@ void DiagramEditorModel::updateTarget(QMap<QString,DiagramEditorRouteInfo>& data
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DiagramEditorModel::bulidAndLinkComponent(QList<DiagramEditorComponentInfo> lst)
|
void DiagramEditorModel::bulidAndLinkComponent(QList<DiagramEditorComponentInfo> lst,QMap<QString,DiagramEditorComponentInfo> components)
|
||||||
{
|
{
|
||||||
for(int i = 0;i < lst.size()-1;++i){
|
for(int i = 0;i < lst.size()-1;++i){
|
||||||
auto item1 = lst[i];
|
auto item1 = lst[i];
|
||||||
auto item2 = lst[i+1];
|
auto item2 = lst[i+1];
|
||||||
if(_previewItem.contains(item1.uid) && _previewItem.contains(item2.uid)){
|
auto info1 = components.value(item1.sName);
|
||||||
GraphicsBaseModelItem* p1 = _previewItem.value(item1.uid);
|
auto info2 = components.value(item2.sName);
|
||||||
GraphicsBaseModelItem* p2 = _previewItem.value(item2.uid);
|
if(_previewItem.contains(info1.uid) && _previewItem.contains(info2.uid)){
|
||||||
auto pLineData = TopologyManager::instance().ifConnection(item1.uid.toString(),item2.uid.toString(),ModelFunctionType::EditorModel); //判断两个item是否有连接
|
GraphicsBaseModelItem* p1 = _previewItem.value(info1.uid);
|
||||||
|
GraphicsBaseModelItem* p2 = _previewItem.value(info2.uid);
|
||||||
|
auto pLineData = TopologyManager::instance().ifConnection(info1.uid.toString(),info2.uid.toString(),ModelFunctionType::EditorModel); //判断两个item是否有连接
|
||||||
if(pLineData != nullptr){
|
if(pLineData != nullptr){
|
||||||
if(!_previewItem.contains(QUuid(pLineData->id()))){ //connectdata已存在,item未绘制
|
if(!_previewItem.contains(QUuid(pLineData->id()))){ //connectdata已存在,item未绘制
|
||||||
auto pLine = generateLine(QUuid(pLineData->id()),"",1); //重新绘制
|
auto pLine = generateLine(QUuid(pLineData->id()),"",1); //重新绘制
|
||||||
|
|
@ -1160,3 +1483,25 @@ void DiagramEditorModel::bulidAndLinkComponent(QList<DiagramEditorComponentInfo>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QList<DiagramEditorComponentInfo> DiagramEditorModel::getRouteItemInfoList(QMap<QString,DiagramEditorComponentInfo> mapCompo,QMap<QString,DiagramEditorRouteInfo> mapRoute)
|
||||||
|
{
|
||||||
|
QList<DiagramEditorComponentInfo> lst;
|
||||||
|
for(auto& route:mapRoute){ //总路线中包含主路,首次生成主路
|
||||||
|
for(auto& compo:route.lstCompo){ //首先生成设备
|
||||||
|
auto info = mapCompo.value(compo.sName);
|
||||||
|
|
||||||
|
bool exist = false;
|
||||||
|
for(auto& inf:lst){
|
||||||
|
if(inf == info){
|
||||||
|
exist = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!exist){
|
||||||
|
lst.append(info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return lst;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -201,28 +201,7 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="2">
|
<item row="3" column="2">
|
||||||
<widget class="QComboBox" name="cb_bindObj">
|
<widget class="QComboBox" name="cb_bindObj"/>
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>无</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>高压绕组中性点</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>中压绕组中性点</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<property name="text">
|
|
||||||
<string>低压绕组中性点</string>
|
|
||||||
</property>
|
|
||||||
</item>
|
|
||||||
</widget>
|
|
||||||
</item>
|
</item>
|
||||||
<item row="4" column="1" colspan="2">
|
<item row="4" column="1" colspan="2">
|
||||||
<spacer name="verticalSpacer">
|
<spacer name="verticalSpacer">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue