cnn程序流程图_C# VISIO 画流程图

还是没有做PPT的灵感,总结下前段时间做的VISIO好了。

网上VISIO的资料那个少啊,姐艰辛地做了一个星期啊一个星期,中间还夹杂着PMP道德题的高强度训练,和各种“不知道为啥那么难,为啥怎么做准确率都不高,难道我道德真的不及格吗”的自我怀疑

// 网上本来就很少的资料,还带了n多术语,作为半个visio小白,研究了半天,成果如下:

//

visio文件叫document(PMP说没归档的叫file,归了档的叫document,偷偷地纠结为啥我才刚open都没save之前的visio也叫document……),用来画图的地方叫window,放图形的地方叫模具窗口,图形当然就叫模具了。

//做的是话路线,关键路径用红底标出,程序太长,不利于总结,就简写了。

//至今没搞懂怎么获取一个动态连接线两端的图形index,所以算法改成:

//

1、从数据库获取一个网络路径,用最早开始最晚开始时间(ES,LS)标出关键路径的节点。算ES的时候可以顺手标X值(图形画在哪里,靠(x,y)坐标定位,我用固定间隔画),唯一的起点排第一,直接后继第二,后继的后继们第3……,如果发现某点是某X值更大的点的后继,则改掉这点的ES值和X值。由于X固定间隔,很容易看出来哪些图形是站在同一列的,两层循环,for从最小的X到最大的X,for网络路线的DataTable,相同X值的图形用固定的Y增量填入不同的Y值。

// 2、两个循环找出哪个关键路径上的点的后继也在关键路径上,这些点准备用红底标出。

//

3、开始按(x,y)坐标drop图形,如果有红底标记,则涂红色,顺手将图形的index值放进datatable。drop完图形之后,在自己和后继之间drop连接线,如果有红底标记,则线需要涂红。

//--------正文来了---------

// 1.打开一个VISIO,增加一个application,有两种方法

MsVisio.InvisibleAppClass VsApp=new

Microsoft.Office.Interop.Visio.InvisibleAppClass(); //VISIO不可见,我稀饭用这种

MsVisio.Application VisApp=new

Microsoft.Office.Interop.Visio.Application(); //这样定义的VISIO是可见滴,就open了之后可以在托盘上找到他

MsVisio.Document

VsDoc=VsApp.Documents.Open(path+filename+".vsd"); //打开VISIO,路径由纯路径+文件名+vsd后缀组成。

// 2.停靠模具窗口“UML 活动”(用的是UML活动里的图形,因为画的是路线图,还要标出关键路径)

short flags=(short)MsVisio.VisOpenSaveArgs.visOpenDocked;

MsVisio.Documents VsDocs=VsApp.Documents;

MsVisio.Document VsStencil=VsDocs.OpenEx("UMLACT_M.VSS",flags);

//这个是模具窗口,不知道模具窗口名字的话在visio做个宏,然后直接ctrl C V 过来就行了。

// 3.定义当前页

MsVisio.Page VsPage=VsApp.ActivePage;

//4.定义我用到的4种图形的类型,同样,不知道名字的画到visio宏ctrlCV

MsVisio.Master MasterAS=VsStencil.Masters.get_ItemU(@"Action

State"); //活动

MsVisio.Master MasterBegin=VsStencil.Masters.get_ItemU(@"Initial

State"); //起点符

MsVisio.Master MasterEnd=VsStencil.Masters.get_ItemU(@"Finial

State"); //终止符

MsVisio.Master MasterCF = VsStencil.Masters.get_ItemU(@"Control

Flow"); //动态连接线

//5.画节点

MsVisio.Shape sp; //声明某一图形,跟int x是同类意思

if (如果是活动节点)

sp=VsPage.Drop(MasterAS,X值,Y值);

sp.Text=某string; // 我写的是 名称+活动时长+时长单位

if (如果有红底标记)

sp.get_CellsU("FillForegnd").Formula="RGB(255,153,204)"; //底色用浅红色,所以G值和B值都没有为0

else if (如果是起点)

sp=VsPage.Drop(MasterBegin,X值,Y值);

else //终点

sp=VsPage.Drop(MasterEnd,X值,Y值);

// 6.画动态连接线

MsVisio.Shape CnnShape;

MsVisio.Cell BeginXCell; MsVisio.Cell

EndXCell; //用来确定连接线连在图形的上下左右,不同图形的值还不一样,麻烦,还是得去CtrlCV visio宏

MsVisio.Shape BeginShape; MsVisio.Shape EndShape;

//画线

if (节点后继非空,则需要画线)

// 定义连接线从哪个点连到哪个点

BeginShape=VsPage.Shapes[BeginId]; //

BeginId=自己的图形index,之前画图形的时候存的图形Index有用了

EndShape=VsPage.Shapes[EndId]; //

EndId=后继的图形index

CnnShape=VsPage.Drop(MasterCF,0,0); //这个时候不用管你的线drop在哪里,随便写个xy值就行了

if(有红底标记)

Cnnshape.get_CellsU("LineColor").Formula="RGB(255,0,0)"

; //红色

// 设置连接起点

//

据推测,Shape.get_CellsSRC()中间的数值表示连接在左右前后

BeginXCell=CnnShape.get_CellsU("BeginX");

// 若起始shape是起始符,连接点在右边

if (BeginXCell.NameU.Contains("Initial

State"))

BeginXCell.GlueTo(VsPage.Shapes[BeginId].get_CellsSRC(7,2,0));

// 若起始shape是活动,连接点在右

else if(BeginShape.NameU.Contains("Action

State"))

BeginXCell.GlueTo(VsPage.Shapes[BeginId].get_CellsSRC(7,3,0));

//设置连接终点

EndXCell=CnnShape.get_CellsU("EndX");

//活动shape,连接点在左

if

(EndShape.NameU.Contains("Action State"))

EndXCell.GlueTo(VsPage.Shapes[EndId].get_CellsSRC(7,2,0));

//结束shape,连接点在左

if

(EndShape.NameU.Contains("Final State"))

EndXCell.GlueTo(VsPage.Shapes[EndId].get_CellsSRC(7,0,0));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533508.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux下netstat常用,Linux netstat常用命令

1、统计80端口连接数netstat -nat|grep -i "80"|wc -l2、统计httpd协议连接数(查看Apache的并发请求数及其TCP连接状态)ps -ef|grep httpd|wc -l3、统计已连接上的,状态为“establishednetstat -na|grep ESTABLISHED|wc -l4、查出哪个IP地址连接最多,将其…

word把选择答案弄到题目里_老师们看过来,如何快速整理试题答案

Word--如何批量把答案ABCD放到对应题目的后面(括号里或横线上)一般试题和答案是分开的,试题在前面,答案在后面,或者试题和答案分开在不同的文档,这是为方便出试卷测验。但是为了老师讲解的方便,又需要把试题和答案合起…

linux grub rescue 光盘,Ubuntu9.10用安装光盘如何进入linux rescue方式?

请详细说明你用winxp格式化之前的分区状态,和格式化后的分区状态。从出错信息来看,我初步认定你的linux引导分区(boot分区)全部丢失,只剩下mbr中的grub。如果确实是这样,你只能重装linux了。分两种情况。第一,你只要xp…

kernal tch 下载 天正_tch kernal.arx

tch_kernal.arx专门用来处理cad打不开图形的问题,很多友友说CAD图纸显示不全,在此来说说如何解决此类问题。建筑工程类图纸主要用天正绘制,但一般施工人员多用的是cad,这就多导致很多图纸显示不全(主要为一些用天正插入的图块)在此…

linux在线更新curl,Linux:curl

curl命令用来做HTTP协议的客户端,可以通过命令参数生成各种请求,非常强大。1. GET默认情况下下curl执行的是GET操作,所以可以当做wget使用如$ curl https://www.baidu.com现在百度使用了https协议,但是这个结果还是有点奇怪的&…

matlab数值拟合r2_MATLAB之数据处理+公式拟合

MATLAB之数据处理公式拟合前言:由试验得到一组数据,对该组数据进行处理,作图分析,分析各变量的关系,期望得到拟合公式。试验数据背景本次试验有三个自变量:V、M、G,因变量为F,每组试验重复5次&a…

c++输出重定向 linux,C++ stderr/stdout 重定向到文件

通常,stderr和stdout被用来输出内容显示到屏幕,但是,有时候我们需要把这些信息写到指定的文件,方便随时查阅。最简单的实现方式就是,把 stderr/stdout 的输出重定向到文件。stderr/stdout 重定向到文件这里以stderr代码…

docker run 挂载卷_docker mysql配置挂载到卷

docker--将mysql配置挂载到卷1、首先在根目录创建两个文件夹,其中config文件夹中创建my.cnf配置文件。data文件夹存放数据文件,一定要为空。/docker/mysql/config/、/docker/mysql/data2、修改my.cnf文件[mysqld]usermysql 一定要以这两行开头。更多的配…

c语言代码含义大全,小白求解代码各部分意思

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼using namespace std;typedef struct {int x;int y;}Point;//表示一迷宫坐标void FindWay(int *path,int n,int m,Point start,Point end) {while(start.x!end.x || start.y!end.y) {cout<switch(path[start.x*(m1)start.y]) {c…

自己帮别人写的网站可以公开源码吗_专注爬虫:20个精心总结爬虫项目,爬虫技术这里强(附源码)...

写在前面你想成为Python爬虫的高手么&#xff1f;你想爬取你想要的高质量数据么&#xff1f;那么你得需要进行爬虫项目的演练&#xff0c;那样你才有可能在Python爬虫的道路上走的更远小编在这里精心总结了20个爬虫项目的演练&#xff0c;是目前爬虫高手一直专注的领域。小编将…

家用风扇控制系统c语言程序设计,家用电扇控制实验与驱动电路设计

内容简介&#xff1a;课程设计 家用电扇控制实验与驱动电路设计 共45页&#xff0c;9275字。一、课程设计的目的课程设计是本科教学全过程中的重要环节。《微机应用系统设计与综合实验(实践)》课程设计主要培养自动化专业学生&#xff0c;运用所学知识解决计算机应用领域内实际…

vue 仿二手交易app_Vue项目开发-仿蘑菇街电商APP

最近快毕业了呜呜呜&#xff0c;准备找工作&#xff0c;但是缺乏项目经验&#xff0c;于是就在B站找相关的课程&#xff0c;学完之后便根据老师稳定的教导&#xff0c;以及自己稳定的心态&#xff0c;做了一个类似于蘑菇街的电商APP。(后端数据接口由老师提供&#xff0c;老师叫…

HDL的综合和c语言的编译区别,C语言与verilog 的区别及相互转化

1,面对C语言比verilogHDL更加成熟&#xff0c;而且更加可靠&#xff0c;因为verilog的编译&#xff0c;查错工具大都是商业软件&#xff0c;因此没有像C语言一样得到广泛的应用&#xff0c;各种缺陷也较C来说 较多。基于这样的原因&#xff0c;在设计算法的硬件电路块时&#x…

linux几秒钟同步一次,Linux时间同步配置方法

由于是在做mongoDB的实验中再一次的遇到了mongos路由节点同步时由于ntp时间的问题导致同步非常的慢。故写了个时间同步的语句>while :; do rdate -s 192.168.109.129; sleep 2s; done > /dev/null 2>&1 &rdate: couldnt connect to host 192.168.109.129: Con…

c语言 socket 报文解析,C语言实现Socket简单通信

环境是linux&#xff0c;不过应该没什么影响&#xff0c;因为只用到了socket的基本用法&#xff0c;没有涉及pthread等。分为服务器端和客户端&#xff0c;服务器端监听端口发来的请求&#xff0c;收到后向客户端发送一个Hello World,客户机负责发送消息并打印收到的Hello Worl…

字典排序什么意思_字典排序问题

2018-01-03望京排序&#xff0c;立即想到用Python的内置函数sorted()Python 2.x 中sorted(...)sorted(iterable, cmpNone, keyNone, reverseFalse) --> new sorted listPython 3.x 中sorted(iterable, keyNone, reverseFalse)Return a new list containing all items from t…

bind() c语言,c/c++ 标准库 bind 函数详解

bind函数定义在头文件 functional 中。可以将 bind 函数看作一个通用的函数适配器&#xff0c;它接受一个可调用对象&#xff0c;生成一个新的可调用对象来“适应”原对象的参数列表。bind函数&#xff1a;接收一个函数名作为参数&#xff0c;生成一个新的函数。auto newCallab…

单片机c语言编程要点,第1章单片机的C语言编程_2015要点.ppt

第1章单片机的C语言编程_2015要点1-* 第 1 章 结束&#xff01;谢 谢&#xff01; * * 1-* 三、对存储器和外接I/O口的绝对地址访问 例&#xff1a; #include #define com XBYTE[0x07ff] 那么后面程序com变量出现的地方&#xff0c;就是对地址为07ffH的外部RAM或I/O口进行访问。…

c 语言 timestamp,c中的时间戳,精度为毫秒

我对C编程比较陌生,而且我正在开展一个需要非常准确的项目;因此我尝试写一些东西来创建一个毫秒精度的时间戳.它似乎有效但我的问题是这种方式是否正确,还是有更简单的方法&#xff1f;这是我的代码&#xff1a;#include#includevoid wait(int milliseconds){clock_t start cl…

antd 左右滑动_如何使用reactjs创建可滑动的侧边栏

我正在尝试使用reactjs创建可滑动的侧边栏。但由于某些原因&#xff0c;这不会发生。我写的代码如下所示;如何使用reactjs创建可滑动的侧边栏Sidebar.jsimport React, { Component } from react;class Sidebar extends Component {render() {return (Start BootstrapDashboardS…