停电分析,顾名思义,是对图纸进行停电的逻辑分析。在电气化线路中,一条线路是从一个电源出来,连接着很多很多的设备的,进行停电分析,有两个重要的作用:一是看图纸上的Shape元件是否连接正常,二是看哪些设备有电无电。通过给有电的设备一种颜色(如绿色),无电的设备一种颜色(如红色),那么就可以很明显地看到通电的不同变化。
对一张Visio绘制的电气线路图,我们如何进行停电分析呢?下面我们看看相关的序列逻辑先。

在上面的序列图中,主要实现了这样的思路:
停电分析是通过保存设备相关连接信息到数据库,以电源(如飞达)为起点,对设备信息进行线路的拓扑分析,把分析保存到数据库中,然后获得拓扑模型中有电的设备,对图纸的设备颜色进行更新(有电为绿色,无电为红色),如果撞电,则恢复所选开关的颜色。

由于以上的关系表,只是对一个飞达进行了线损模型分析,因此只会存在一个-1即飞达的情况,其他ID都是和该飞达相关联的下游设备ID;如果我们找到每一个的设备ID和其父ID(上游设备ID)即满足要求。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Equipment为设备的ID,ConnectionShapes为关联的设备ID集合

1、  先在ConnectionShapes寻找有-1的Equipment

得到下列模型:

ID

PID

1

-1

2、  下面再找1下游设备;在关系表中寻找Equipment=1的ConnectionShapes有那些关联设备,发现有-1,2;-1是1的上游设备,不能使用,因此剩下2,得到如下表。

ID

PID

1

-1

2

1

3、  继续找2的下游设备;发现2有1、3、8、7、10和其关联,1是2的上游设备,不能使用,剩下的列出来。

ID

PID

1

-1

2

1

3

2

8

2

7

2

10

2

4、  依次对3、8、7、10进行分析,得到以下数据,下面先对3下游设备进行分析

ID

PID

1

-1

2

1

3

2

8

2

7

2

10

2

4

3

11

3

继续对4、11进行分析,先对11进行分析,发现11只有3相连,3为上游设备,结束;

再对4进行分析,如下。

ID

PID

1

-1

2

1

3

2

8

2

7

2

10

2

4

3

11

3

5

4

12

4

继续对5、和12进行分析,先对12进行分析,发现12只有4相连,4为上游设备,结束;对5进行分析,如下。

ID

PID

1

-1

2

1

3

2

8

2

7

2

10

2

4

3

11

3

5

4

12

4

6

5

继续对6进行分析,有13相连;继续分析13下游设备没有,结束,得到如下。

ID

PID

1

-1

2

1

3

2

8

2

7

2

10

2

4

3

11

3

5

4

12

4

6

5

13

6

5、  继续第上面步骤的分析,上面说到2下游设备有3、8、7、10,还有8、7、10没有分析,对8下游设备继续分析。

ID

PID

1

-1

2

1

3

2

8

2

7

2

10

2

4

3

11

3

5

4

12

4

6

5

13

6

9

8

对9继续分析

ID

PID

1

-1

2

1

3

2

8

2

7

2

10

2

4

3

11

3

5

4

12

4

6

5

13

6

9

8

15

9

16

9

17

9

18

9

继续分析15、16、17、18发现没有下游设备,结束。

根据上面的分析结果,我们就可以得到线路的拓扑树状图,即一个倒立的树,分析的存储结果为下图所示。

其中关键的ID、PID是用来在树之间漫游的,LoginIP用来区分不同用户的分析结果,BelongTo在多个电源通电的时候,区分不同的电源(即构造几颗倒立的树),其他信息用作辅助。注意:断开的开关,看成是树的分支终点。构造模型的时候不会记录该开关设备的信息,分析的时候会自动断层。

最后附上分析的结果,红的红,绿的绿,多好看,哈哈

转载于:https://www.cnblogs.com/wuhuacong/archive/2008/06/11/1217348.html

C#进行Visio二次开发之电气线路停电分析逻辑相关推荐

  1. C#进行Visio二次开发之判断图纸是否有设备

    判断Visio图纸上是否图纸有设备(存在图元), 有两种方法,一种是通过Window对象的SelectAll方法,在判断选择的集合是否不为空即可,如下:         /// <summary ...

  2. C#进行Visio二次开发之知识点考核试题

    本人做过多年的Visio二次开发,根据个人的经验总结及项目积累,写了一些小小的随笔文章(具体可参考<伍华聪的Visio二次开发文章>,上月有幸给深圳一个团队做了两天的Visio培训,当了一 ...

  3. Visio二次开发(二)----Shape的添加和连接

    先说一说为什么我要用到Visio的二次开发,现在做的项目设计到了一些电子地图,下面的这张图片是美工画的一张地铁里面门禁布局图,而这些图在做项目的时候是需要用Visio画的,有提前画好的直接加载到项目中 ...

  4. C#进行Visio二次开发之图纸打印

    几种打印模式 Visio的二次开发中,我们往往需要打印文档,这也是正常不过的需求,Visio的Document对象提供了下面几种打印模式: Constant Value Description vis ...

  5. Visio二次开发(一)----巧用Visio宏

    最近做的项目中需要用到Visio二次开发,安装了Visio的SDK,还有从网上找了一些这方面的博客,Visio的SDK是全英文的,看着有点费劲,很多的东西都不知道该如何去找,不过网上的一些博客还是有一 ...

  6. Discuz 二次开发 (一) 目录结构和运行逻辑

    Discuz 二次开发 (一) 目录结构和运行逻辑 目录结构 DISCUZ使用自己的框架,与现在主流的web框架不同,DISCUZ没有路由表,他的路由是由入口文件来实现的. api uc.php UC ...

  7. visio二次开发___事件篇___事件分类

    用visio进行二次开发,不免要用到事件.这里把visio对象模型的所有事件列出来,方便大家查找.第一个事件列表的是按事件名称字母排序的:第二个代码片段是根据分类来展示的.需要注意的是,控件本身有一些 ...

  8. UG二次开发读取尺寸值公差分析

    一直在用grip做NX二次开发,自写自用.最近grip写的自动公差系统,不能进行自动标注公差,也不能进行尺寸链公差分析,如WC,RSS分析,究其原因是grip的OBTAIN命令在NX7.5之前可以获取 ...

  9. Visio二次开发Java-画图画线(java+com4j)

    // 创建Visio对象IVApplication visio = ClassFactory.createApplication();//创建新的空白文档[创建一个不基于模板的新绘图]IVDocume ...

最新文章

  1. STL源码剖析之算法:lower_bound
  2. 解决mysqlslap执行命令报错(BEGIN failed--compilation aborted at //bin/mysqlslap line 2098)usr...
  3. android中设置Animation 动画效果
  4. 从网络IO看高性能框架
  5. 抓住训练集中真正有用的样本,提升模型整体性能!
  6. 答案 石头剪刀布 编码过程 0912
  7. 如何在JavaScript中使用apply(?),call(?)和bind(➰)方法
  8. 华南农业大学C语言程序设计(实验九)
  9. 【最简单】地图获取经纬度的办法
  10. pycharm中遇到的报错 Unexpected indent / unindent does not match any outer indentation level
  11. 地图编辑器开发(一)
  12. 使用QQ邮箱“邮我”组件,给我写信/意见反馈!方便他人快速给你发邮件
  13. 敏感性、特异性、假阳性、假阴性
  14. python列表lambda表达式排序sort(key=lambda x:x[1])
  15. 光年(Light Year Admin)后台管理系统模板
  16. win7系统怎么打开打印服务器失败,win7安装网络打印机驱动老是失败如何解决
  17. ubuntu下无线网络网速缓慢问题解决
  18. Java--面包师与消费者1(发送与接收线程)
  19. 《ERP原理》 期末复习——第二章 管理需求推动ERP的发展
  20. 数据结构——家谱管理系统

热门文章

  1. 如何在python开发的GUI界面程序中恰当地使用PyExecJS
  2. shell脚本api接口考虑并发问题的可行性操作
  3. java case or_java – 在CriteriaBuilder中使用子句和’case w...
  4. linux指令 2>1 到底是个啥
  5. 1039 Course List for Student
  6. 带头结点的线性表的链式实现
  7. 开源交换需新框架 技术团队也待整合
  8. Java第一天学习笔记整理
  9. 跟着石头哥哥学cocos2d-x(三)---2dx引擎中的内存管理模型
  10. jdk8中流的使用(一)