116 lines
4.8 KiB
C++
116 lines
4.8 KiB
C++
#ifndef DIAGRAMEDITORBASEBLOCK_H
|
||
#define DIAGRAMEDITORBASEBLOCK_H
|
||
|
||
//组态编辑基础块(分段母线、间隔等)
|
||
#include <QObject>
|
||
#include "global.h"
|
||
|
||
class DiagramEditorStructContainer;
|
||
|
||
class DiagramEditorBaseBlock: public QObject
|
||
{
|
||
Q_OBJECT
|
||
public:
|
||
DiagramEditorBaseBlock(QObject *parent = 0);
|
||
virtual ~DiagramEditorBaseBlock() = 0;
|
||
virtual void setId(QUuid id) {uid = id;}
|
||
virtual QUuid getId() {return uid;}
|
||
virtual void setName(const QString& str) {sName = str;}
|
||
virtual QString getName() {return sName;}
|
||
virtual void setType(int n) {nType = n;}
|
||
virtual int getType() {return nType;}
|
||
virtual void addConnect(QUuid); //直接添加连接
|
||
virtual void removeConnect(QUuid);
|
||
virtual QList<QUuid> getConnect() {return _lstCon;}
|
||
virtual void clearConnect() {_lstCon.clear();}
|
||
virtual bool addSubList(QPair<int,QUuid> pair){
|
||
for (const auto& item : _lstSub) {
|
||
if (item.second == pair.second) {
|
||
return false;
|
||
}
|
||
}
|
||
_lstSub.append(pair);
|
||
return true;
|
||
}
|
||
virtual void setSubList(QList<QPair<int,QUuid>> lst) {_lstSub = lst;}
|
||
virtual QList<QPair<int,QUuid>>& getSubList() {return _lstSub;}
|
||
virtual void clearSubList() {_lstSub.clear();}
|
||
virtual void setCurContainer(DiagramEditorStructContainer* p) {_curContainer = p;}
|
||
virtual DiagramEditorStructContainer* getCurContainer() {return _curContainer;}
|
||
virtual void setContainerLevel(int n) {nContainerLevel = n;}
|
||
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;}
|
||
virtual void setEditState(bool b){bEditState = b;}
|
||
virtual bool getEditState(){return bEditState;}
|
||
virtual DiagramEditorBlockInfo getBlockInfo(); //返回block中存储的信息
|
||
protected:
|
||
DiagramEditorStructContainer* _curContainer; //当前所处的容器
|
||
QString sName;
|
||
int nType; //1母线,2间隔,3变压器
|
||
int nContainerLevel; //所处容器的层级 0,1,2,3
|
||
QUuid uid;
|
||
QList<QUuid> _lstCon; //连接信息
|
||
QList<QPair<int,QUuid>> _lstSub; //子对象列表(非拓扑计算使用) 如母线子对象为间隔,间隔子对象为item,电动机子对象为item <类型,uid> 类型:0设备1间隔
|
||
QRectF recSize; //当前大小(根据内容确定)
|
||
QPointF sceneDelta; //block中心相对位移(计算布局位置
|
||
bool bEditState; //详细编辑状态
|
||
|
||
//bus
|
||
float fVoltage; //母线电压
|
||
int nBusType; //0无前缀,1:Ⅰ母,2Ⅱ母
|
||
int nIndex; //第几段,1A,2B,3C,4D,5E,6F,7G,8H
|
||
//bay
|
||
BayType nBayType;
|
||
DiagramEditorBayInfo bayInfo; //间隔信息
|
||
//transformer
|
||
TransformerType nTransType;
|
||
DiagramEditorTransInfo transInfo;
|
||
};
|
||
|
||
/***************************划分后的分段bus单元****************************/
|
||
class DiagramEditorBusBlock:public DiagramEditorBaseBlock
|
||
{
|
||
Q_OBJECT
|
||
public:
|
||
DiagramEditorBusBlock(QObject *parent = 0);
|
||
virtual ~DiagramEditorBusBlock();
|
||
virtual void setVoltage(float f) { fVoltage = f;}
|
||
virtual float getVoltage() {return fVoltage;}
|
||
virtual void setBusType(int n) {nBusType = n;}
|
||
virtual int getBusType() {return nBusType;}
|
||
virtual void setIndex(int n) {nIndex = n;}
|
||
virtual int getIndex() {return nIndex;}
|
||
virtual void setBusPro(QString sNa,int nTp,float fVol,int nBT,int nIdx) {sName = sNa;nType = nTp;fVoltage = fVol;nBusType = nBT;nIndex = nIdx;}
|
||
|
||
};
|
||
|
||
/***************************bay单元****************************/
|
||
class DiagramEditorBayBlock:public DiagramEditorBaseBlock
|
||
{
|
||
Q_OBJECT
|
||
public:
|
||
DiagramEditorBayBlock(QObject *parent = 0);
|
||
virtual ~DiagramEditorBayBlock();
|
||
virtual void setBayType(BayType typ) {nBayType = typ;}
|
||
virtual BayType getBayType() {return nBayType;}
|
||
virtual void setBayInfo(DiagramEditorBayInfo info) {bayInfo = info;}
|
||
virtual DiagramEditorBayInfo& getBayInfo(){return bayInfo;}
|
||
};
|
||
|
||
/***************************transformer单元****************************/
|
||
class DiagramEditorTransformerBlock:public DiagramEditorBaseBlock
|
||
{
|
||
Q_OBJECT
|
||
public:
|
||
DiagramEditorTransformerBlock(QObject *parent = 0);
|
||
virtual ~DiagramEditorTransformerBlock();
|
||
virtual void setTransType(TransformerType typ) {nTransType = typ;}
|
||
virtual TransformerType getTransType() {return nTransType;}
|
||
virtual void setTransInfo(DiagramEditorTransInfo info) {transInfo = info;}
|
||
virtual DiagramEditorTransInfo& getTranInfo() {return transInfo;}
|
||
};
|
||
#endif
|