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

        /// <summary>
        /// 判断是否有对象选定
        /// </summary>
        /// <param name="window"></param>
        /// <returns></returns>
        [CLSCompliant(false)]
        public static bool HasShapeInWindow(Window window)
        {
            bool result = false;
            try
            {
                window.SelectAll();
                result = (window.Selection.Count > 0);
                window.DeselectAll();
            }
            catch
            { ;}

            return result;
        }

另外一种方法是判断页面对象Page的Shapes对象集合是否大于0即可,如下:

            Visio.Page page = VisioUtility.GetPage(VisDocument, "馈线图");
            if (page.Shapes.Count <= 0)
            {
                MessageUtil.ShowTips("图纸上没有设备");
                return;
            }
        /// <summary>
        /// 获取Visio文档制定的页面对象
        /// </summary>
        /// <param name="visDocument"></param>
        /// <param name="pageType"></param>
        /// <returns></returns>
        [CLSCompliant(false)]
        public static Page GetPage(Document visDocument, string pageType)
        {
            Page visPage;
            for (int i = 1; i <= visDocument.Pages.Count; i++)
            {
                visPage = visDocument.Pages[i];
                if (FormulaStringToString(visPage.PageSheet.get_Cells(CUST_PROP_PREFIX + "绘图页").Formula) == pageType)
                {
                    return visPage;
                }
            }

            return null;
        }

两种方法基本上效果一样, 第二种方法可能速度会快一些,如果你在Visio的Document对象事件中有处理逻辑的时候, 如下所示, 而且有的情况下,你还不能用第一种方式来进行判断:

            this.CtrlDrawing.SelectionChanged += new EVisOcx_SelectionChangedEventHandler(ctrlDrawing_SelectionChanged);
本文转自博客园伍华聪的博客,原文链接:C#进行Visio二次开发之判断图纸是否有设备,如需转载请自行联系原博主。

C#进行Visio二次开发之判断图纸是否有设备相关推荐

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

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

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

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

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

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

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

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

  5. NX二次开发-UFUN读取图纸尺寸的值UF_DRF_ask_dimension_text

    NX二次开发-UFUN读取图纸尺寸的值UF_DRF_ask_dimension_text 今天发现UF_DRF_ask_dim_info这个函数不能读带附件文本的尺寸,有附加文本dim_info-&g ...

  6. NX二次开发-UFUN创建图纸注释uc5540

    NX二次开发-UFUN创建图纸注释uc5540 NX9+VS2012#include <uf.h> #include <uf_drf.h>UF_initialize();//创 ...

  7. NX二次开发 UFUN创建图纸尺寸表达式抑制 UF_DRF_add_controlling_exp

    NX二次开发 UFUN创建图纸尺寸表达式抑制 UF_DRF_add_controlling_exp NX8.0+VS2010#include <uf.h> #include <uf_ ...

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

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

  9. C#进行Visio二次开发之电气线路停电分析逻辑

    停电分析,顾名思义,是对图纸进行停电的逻辑分析.在电气化线路中,一条线路是从一个电源出来,连接着很多很多的设备的,进行停电分析,有两个重要的作用:一是看图纸上的Shape元件是否连接正常,二是看哪些设 ...

最新文章

  1. List集合的去除重复性练习
  2. 22岁专访库克、B站3天涨粉百万,他将毕设树莓派扫描仪升级,繁星散落在校空!...
  3. matlab 人群仿真,用simulink如何实现人群搜索算法的pid参数整定
  4. Adnroid提高效率之资源移动
  5. AngelToken揭秘区块链之四大链
  6. sap.m.library acts as one of the two most core framework library
  7. 袜子商店应用:一个云原生参照应用
  8. java 7.函数-递归_带有谓词的Java中的函数样式-第1部分
  9. Vue之父组件向子组件传递数据
  10. Mysql ==》 单表查询
  11. qpython3第三方库_Python第三方库的安装 --Python3
  12. java栈顶元素_栈(Stack)
  13. JDBC和JPA调用储存过程 接收存储过程有返回值
  14. 1133 Splitting A Linked List
  15. android实战:密码箱三
  16. 高精度IP地址定位接口的使用场景
  17. 自行车电动自行车|GCC认证办理流程
  18. Android WIFI功能——WifiManager
  19. 吃饭?睡觉?打豆豆?
  20. 【AUTOSAR】基于RT-Thread内核的AUTOSAR在n32g上的实现

热门文章

  1. sqlite3 解决并发读写冲突的问题
  2. 空气球+操作系统,海尔智能家居雄心何在?
  3. 机房设备与线路资源管理
  4. JACK——AgentManual5 Events
  5. 使用metablog迁移博客园的文章
  6. 检查当前ORACLE连接数
  7. dubbo接口测试_Django测试工具平台之Dubbo接口请求 + 前端
  8. 献上程序员大学四年珍藏的30个宝藏网站,全部拿出来
  9. 震精~python运算符还能这么玩~到底这么做到的?神级程序员解密!
  10. python输出质数序列_用python打印素数序列