C#举行Visio二次开发之动态仿真实现

Visio二次开发可以兑现的项目情景很多,如电气线路分析、配电网络分析、流程图等,现因为项目需要,又认识多了一个使用场所,液压传动的虚假。项目效用图如下所示:

同学来瓜亚基尔的局部风光介绍

图片 1 

 

动态仿真,其实也就是模拟实际线路的走向,实现动画的展现。在此以前自己的Visio的品类,基本上都是按照静态的图纸显示,并没有安装太多的动态显示。原来配电网络的通电线路的辨析,严厉来说也是静态的,因为大多是三遍性把通电和不通电的路线给绘制出来。而动态仿真则要求日益的动画片彰显线路的走向和颜色变化。

下了列车,往南走一条街就到海边了

如活塞运动的假冒伪劣,要求不截至动画的意况下,可以直接循环的变更。
如下图所示的效能:

离着栈桥挺近的,先上地图

图片 2 

图片 3

 本文介绍怎么样落实线路走向、颜色变化,以及特定图形(如活塞)的动态仿真效果。

 

首先实现动态仿真效果,必须先分析出总体图纸的拓扑网络顺序及层次,这样我们才能明白正确的线路走向以及动画的扭转顺序,如配电网络线路图中,必定是电源起初,通过导线或者装备传递电源,以贯彻电路的贯通。在液压线路中,由油箱起初,经过一层层设备,最终又回去油箱。

走过去大约五六百米吧,其实就是头上有个小亭子(从前是不开不让进的,目前看似是能进了,里面只有卖点小回忆品啥的),然而到底历史注脚建筑了啊

要在Visio图纸上贯彻如上图的动画效果,其中最着重的奥秘是行使下面代码:

图片 4

 System.Windows.Forms.Application.DoEvents();
 Thread.Sleep(50);

 

 

接下来就顺着海边往东边说吧

 

延续看地图

不少景象下,我们或许对这多少个Do伊夫nts函数的效用不是很熟谙,其实大家得以知晓为积极触发事件,让音讯流提前进入拍卖流程,这样大家就可知见到在Visio图纸上的图片更新效能了。

图片 5

一切图形分析的经过,分为3个步骤:

 

1)举办简易的拓扑分析,把装备周边的涉及保持到数据库举行分析。

丙午革命标记是刚刚的 栈桥

2)依据数据库结构,对设备关系展开辨析,拿到拓扑网络的装置层次结构列表

青色标记是 陆军博物馆

3)按照不同的装置项目和图表当前事态,对设施开展适宜的绘图和卡通片仿真显示。

门票收费好像是70来着,不知道现在又涨价了未曾

 

考虑我去的时候一般十多年前了…不好说现在内部还有吗东西(往日里面有潜艇,然则要进入看其中单独收费而且不准带相机)

约莫的代码如下所示:

可是臆度你对这多少个相应不会感兴趣

       private void PowerCutAnalyze(Visio.Application app)
        {
            #region 获取操作设备和判断是否图纸有装备
            Visio.Shape shapeSelected = null;
            try
            {
                Visio.Window wndVisio = app.ActiveWindow;
                if (wndVisio.Selection.Count == 1)
                {
                    shapeSelected = wndVisio.Selection.get_Item16(1);
                }
            }
            catch { ; }

 

            if (!VisioUtility.HasShapeInWindow(VisWindow))
            {
                MessageUtil.ShowWarning(“图纸上尚无配备, 不可以执行该操作”);
                return;
            } 
            #endregion

灰色标记是 海底世界

            app.UndoEnabled = false;
            List<string> list = new List<string>();
            string message = “”;
            list = powerCutBLL.RunPowerCutAnalyzing(app, shapeSelected, ref message);
            app.UndoEnabled = true;

也总算科伦坡特点景致吧,历史相比较久了,当年仍然相对相比较少的

            if (message != “”)
            {
                MessageUtil.ShowError(message);
                return;
            }

不过现在游人如织城池都有海底世界了,也不是太有风味了

            if (list.Count > 0)
            {
                AnalyzeShapeIdList.Clear();
                foreach (string shapeStrID in list)
                {
                    AnalyzeShapeIdList.Add(Convert.ToInt32(shapeStrID));
                }
                RunColorChanging(app);
            }
            else
            {
                MessageUtil.ShowWarning(“请检查线路是否连接正确。”);
            } 
        }

门票好像是100呢,不知情是不是涨价了,毕竟自己上次去貌似也大都十年前了吧…

 

中间雅观的就是不法横穿公路有一段玻璃通道,左右全是鱼这种,当年如故很美观的,不过现在这种貌似挺常见了

 

个中有大个的天皇蟹标本,或说国君蟹好贵的说,好多斤大个的,一斤貌似上百…(http://www.dianping.com/photos/35371358/type

线路颜色变化以及动画显示部分的代码如下所示 :

 

        /// <summary>
        /// 遵照分析后的装置ID,把装备变色动画显示
        /// </summary>
        /// <param name=”visApp”></param>
        private void RunColorChanging(Visio.Application visApp)
        {
            Visio.Cell cell = visApp.ActiveDocument.Pages[1].PageSheet.get_Cells(“Scratch.A1”);
            int intValue = Convert.ToInt32(VisioUtility.FormulaStringToString(cell.Formula));
            if (intValue == 1)
            {
                cell.Formula = “0”;
            }
            else
            {
                cell.Formula = “1”;
                isMovie = !isMovie;
            }
……………….

此外题外话,从海底世界往北走不到1km 就到我们高校老校区了…

            int sequence = 1;
            foreach (int shapeId in AnalyzeShapeIdList)
            {
                Visio.Shape shape = VisDocument.Pages[1].Shapes.get_ItemFromID(shapeId);
                if (shape != null)
                {
                    if (intValue == 0)
                    {
                        shape.Text = sequence++.ToString(“D2”);//string.Format(“{0}({1})”, sequence++, shape.ID);//

 

                        VisioUtility.SetShapeLineColor(shape, VisDefaultColors.visDarkGreen);//有电(绿色)
                        System.Windows.Forms.Application.DoEvents();
                        Thread.Sleep(500 * minFlowValue);
                    }
                    else
                    {
                        shape.Text = “”;
                        VisioUtility.SetShapeLineColor(shape, VisDefaultColors.visBlack);//无电(黑色)
                        System.Windows.Forms.Application.DoEvents();
                    }
                    
                    string equipType = VisioUtility.GetShapeCellValue(shape, “设备档次”);
                    if (!string.IsNullOrEmpty(equipType))
                    {
                        #region 单作用、双作用
                        if (equipType == “单作用” || equipType == “双作用”)
                        {
                            string minValue = “Width*0.25”;
                            string maxValue = “Width*0.75”;
                            string cellName = “Controls.Row_1.X”;
                            try
                            {
                                if (shape.get_CellExistsU(cellName, (short)VisExistsFlags.visExistsAnywhere) != 0)
                                {
                                    short i = shape.get_CellsRowIndex(cellName);
                                    Visio.Cell typeCell = shape.get_CellsSRC((short)VisSectionIndices.visSectionControls, i, (short)VisCellIndices.visCtlX);
                                    if (intValue == 0)
                                    {
                                        ThreadParameterInfo param = new ThreadParameterInfo();
                                        param.Cell = typeCell;
                                        param.ScratchCell = cell;

此起彼伏说海底世界,海底世界边上就是鲁迅公园

                                        Thread thread = new Thread(new ParameterizedThreadStart(HuoSaiMoving));
                                        thread.Start(param);
                                    }
                                    else
                                    {
                                        typeCell.Formula = VisioUtility.StringToFormulaForString(minValue);
                                        System.Windows.Forms.Application.DoEvents();
                                        //Thread.Sleep(500 * minFlowValue);
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                LogHelper.Error(ex);
                            }
                        } 
                        #endregion
                    }
                }
                
            }
        }

山光水色还不易,而且现在免费了

 

 

 

 

里面我们注意到了,活塞运动时一个独自的线程举行处理的,如下所示

此起彼伏往东走,继续看地图

Thread thread = new Thread(new ParameterizedThreadStart(HuoSaiMoving));
thread.Start(param);

图片 6

 

 

 

青色标记点是 厦门公园

活塞运动是在路经联通后,继续循环举行动画的体现的,因为它是独自一个线程举行拍卖操作,通过判断标识来兑现动画的终止控制的,具体处理活塞动画的效用实现代码如下所示:

话说全国各地都有兰州公园额…

图片 7图片 8代码

塞维利亚圣Pater罗苏拉公园的 特色是看樱花

        private void HuoSaiMoving(object obj)
        {
            ThreadParameterInfo objParam = obj as ThreadParameterInfo;
            Visio.Cell scratchCell = objParam.ScratchCell;
            Visio.Cell typeCell = objParam.Cell;
            int intValue = Convert.ToInt32(VisioUtility.FormulaStringToString(scratchCell.Formula));
            while (intValue == 1 && isMovie)
            {
                string minValue = “Width*0.25”;
                string maxValue = “Width*0.75”;
                //Visio.Cell typeCell = objCell as Visio.Cell;
                if (typeCell != null)
                {
                    string currentValue = “”;
                    //增加
                    for (int k = 1; k <= 10; k++)
                    {
                        currentValue = string.Format(“Width*0.25 + Width*{0}”, 0.05 * k);
                        typeCell.Formula = VisioUtility.StringToFormulaForString(currentValue);
                        System.Windows.Forms.Application.DoEvents();
                        Thread.Sleep(50);
                    }
                    //减少
                    for (int k = 1; k <= 10; k++)
                    {
                        currentValue = string.Format(“Width*0.75 – Width*{0}”, 0.05 * k);
                        typeCell.Formula = VisioUtility.StringToFormulaForString(currentValue);
                        System.Windows.Forms.Application.DoEvents();
                        Thread.Sleep(50);
                    }
                }
                intValue = Convert.ToInt32(VisioUtility.FormulaStringToString(scratchCell.Formula));
            }
        }

不过现在时令过了…

 

南昌公园最中间有个动物园

 Visio应用曲高和寡,代码贴图众口难调;不求一鸣惊人,但求潜移默化。

门票好像是8块吧

 

里头最近几年弄来六只大熊猫,然则熊猫要旨天天在上床…

动物不多,常规的老虎、狮子、熊、豹等等倒是都有

不过关在笼子里也没啥意思(城阳这边好像有个野生动物园,据说还不错,不过自己没去过)

只是其中有金刚鹦鹉仍旧挺美好的

网络图片一张,公园里有活的,不过在玻璃房里,照相功效不是太好

图片 9

 

达累斯萨拉姆公园边上还有什么样海水浴场、汇泉广场、八大关 等风景

澡堂、广场就隐瞒了,没啥美观的,八大关是婚纱照圣地,现在揣测每天有人在拍婚纱照吧

 

 

接下来继续往东,这一次离开相比较远,继续上地图

图片 10

 

棕色标记为五四广场

注脚建筑 十月的风

图片 11

 

话说十月的风往北看无遮挡正对市政党

无论是何地的市政坛都会选好地点…

 

五四广场往东走一点藏粉红色标记点就是奥帆中央

不然说南京能忽悠吧,帆船一个挺冷门的运动

借着奥运会,这么多一道城市貌似就伯明翰忽悠的动静最响…

唯独风景还行,可是话说回来都是近海,看多了就审美疲劳了

 

图片 12

奥帆中央内部的彩旗广场,东方卫视 极限挑衅 来这里拍过

 

 

接下来继续往东,又是相比较长的一段距离,继续上地图

图片 13

肉色标记地方是 极地海底世界

门票100+ (好像是160左右吧)

传言里面有北极熊企鹅,但是自己真一贯没去过…

唯独能够确定里面确实有动物表演,不过表演是看点的

要看的话最好提前查下表演的时刻

PS:看地图你会发觉我们高校又一个校区现身了…

而是这么些校区基本只有成人教育了

这会儿盖新校区贷款过多(过20亿,全国前三)

为此把这么些校区地卖了小一半来还贷款…

 

抑或连续往东

图片 14

地图里 肉色标志地方为 雕塑园

其实其中水墨画没多少了

然则有个水墨画馆,免费,但是好像周三仍旧周天休息来着

除此以外素描园周边景点也还行,马斯喀特海边木栈道基本都连起来了,可以顺着平素走

 

黑色标记点为 石老人海水浴场

实际就是海里有诸如此类块石头,有点像个石头老人

图片 15

 

 

近海景点基本就如此多,再往东走就到沙子口了

沙子口有码头,可以买海鲜

唯独说实话一点也不便民

即使真的相比非凡而已…

 

 

下一场往北内陆的风光

重在也就 崂山  和 世博园

爬崂山重要有两条路线,巨峰 和 北九水

两条路线门票是单算的,影像里100左右吧,因为自己也没去过…

巨峰是高峰,路上有道观等

北九水 相对要好走一点,路相比平,而且评价风景也无可非议

但就是现在阿德莱德缺水…没有水多的时候美观

 

世博园是前一年搞的世界园艺博览会

可是由于气象原因,比伊丽莎白港丰硕要差不少

总归北方春季忒冷了…加上马那瓜风还大…

客观条件没办法

 

世博园门票通票90

里头电瓶车另收费,10元每人每一回,20能坐3次

个中现在着力就剩下多个馆了,植物馆、莲花馆、主题馆

植物馆还不易,据说是非洲最大的钢架结构的植物展馆

图片 16

网络图片一张,挂着的这多少个就是现阶段已意识的社会风气上唯一一种有气氛就能活的植物,忘了叫什么名了…

图片 17

 

植物馆里还有个水木世界

多数水木是无色的,可是打彩色灯上去的确挺难堪的

图片 18

图片 19

图片 20

 

莲花馆里面莲花真的不是太多,里面佛教的始末太浓了,信佛的可以看看,不信的看不看都行。。。

 

主旨馆 里面也还行,重倘诺一些光电搭配的功效

图片 21

 

实际世园会里面还有个 4D影院,每日定时放固定的一个小短片

只是现在4D处处都有,也没啥有特色的

 

 

要害景点就这个

其他还有些商业街比如 台东 之类的

四处商业街测度都差不多,而且底特律的拼盘比Charlotte差远了…

其它 黄岛 还有个叫的相比响 的 金沙滩

唯独都是海边沙滩么,个人感觉看多了骨干都一样…

 

末尾说下租车

实际迪拜边的景致个人不是太提出租车

一是形势原因(阿德莱德是山川地),老城区这里很多路都是弯着修的,想找到笔直的路相比较难,容易转化,而且单行道也比较多,不是太好找路

二是近海停车真的相比较难,本来能停车的地点就不多,何况现在是环游旺季…

去崂山和世园会租车或者得以的,这边停车绝对方便,路可以走一些