DiagramDesigner/diagramCavas/include/diagramEditor/diagramEditorBaseBlock.h

116 lines
4.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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