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.pswp.cn/news/533508.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533508.shtml
英文地址,請注明出處:http://en.pswp.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…