visio二次开发的案例或者教程,国内真的非常少,这个项目也是花了不少时间来研究visio的相关知识,困难之所以难,是因为我们还没有了解它,等我们理清楚之后,就会恍然大悟“噢,原来是这么一回事”,但是这过程是痛并快乐着,哈哈。

  研究这个不是闲来无事,项目需要。老大也安慰我慢慢研究咯,方法总会有的。就这样,我慢慢的做下去。

进入主题

  先来个效果图,不然不是大家想要的就浪费大家开发时间了,时间是宝贵的。(也单纯是我个人研究结果,如有什么偏差有错理解,大家积极指出,一起进步)

  第一个是visio图纸,不难看出,第二个是解析出来的结果集。

一、visio图纸的相关知识

   涉及到几个对象: Application、 Document

visio对象:Page、Master、Shape、Cell

  类似操作word、Excel一样,我们需要一个进程来打开这个文件,visio对象的大致关系:一个文件就对应一个Document对象,一个Document有多个Page(visio页),一个Page有多个Shape(形状),一个Shape又有多个Cell。

二、读取visio元素(器件)

  首先得明白,读取visio是从图上哪个元素开始的,画图的顺序决定了读取的顺序,怎么看呢?

  可以生成xml文件来查看,生成XML文件的方法(另存为——web页(*.html)),在生成的文档中,找到“data.xml” 这个文件,文本查看就可以了,我们主要操作的,是<Pages>~</Pages>之间的元素,但是这仅仅不能满足的,有些属性里面是没有的,比如形状数据、文字颜色、图形背景色等等,这个就需要从Cell里面读取。生成data.xml文件只是帮助我们分析visio的格式。

  选中元素(器件),右键-显示Shapesheet 来查看元素(器件)的信息,比如背景色、字体、字号…… 比较多,只需找到我们需要的属性就行了。

  还有一个是形状数据,右键-数据-形状数据  弹出形状数据窗口,一般存储一些器件属性,这个用的应该也比较多,因为老是标记在图上也是乱糟糟的,写在形状数据里面可以隐藏起来,单独的属性。

  读取visio的主要代码:

 foreach (Page page in Doc.Pages)
{
foreach (Shape sp in page.Shapes)
{
if(sp.Connects.Count>) {}//读取线 else{
if(sp.Shapes.Count>) {} //组合,即元素 else //剩下的就是文本啦
{ }
}
}
}

首先得解释一下,为什么这分类,线就不用解释了,主要是器件和文本框怎么识别,因为肉眼看肯定是知道的,但是计算机不知道呀,总之就是为了识别出来!我门自己定规则:

  1、器件:一个器件必须以组合的方式,不论它是和文本组合在一起或者和其他元素组合在一起,总之以组合的方式来画图,这就得跟画图的同事协调一下了(操作:右键图形-组合

  2、文本:区别器件和文本除了以组合的方式,太单一,如果遗漏了器件,就麻烦了,那么,我们得检查一下,它是否有形状数据。

  总结一下就是有两个方式:组合 和 形状数据  来区分器件或文本框。

  快下班了,有空接着写完。 以后会从 读取线 一个一个往下解释。

visio二次开发——图纸解析的更多相关文章

  1. visio二次开发——图纸解析之线段

    多写博客,其实还是蛮好的习惯的,当初大学的时候导师就叫我写,但是就是懒,大学的时候,谁不是魔兽或者LOL呢,是吧,哈哈哈. 好了,接着上一篇visio二次开发——图纸解析,我继续写. 摘要: (转发请 ...

  2. visio二次开发——图纸解析之形状

    今天有空,下班前补齐解析visio图形形状的方法,包含图形背景色.字体颜色.备注信息.形状数据取值. /// <summary> /// 设置形状的选择属性 /// </summar ...

  3. C#进行Visio二次开发之文件导出及另存Web页面

    在我前面很多关于Visio的开发过程中,介绍了各种Visio的C#开发应用场景,包括对Visio的文档.模具文档.形状.属性数据.各种事件等相关的基础处理,以及Visio本身的整体项目应用,虽然时间过 ...

  4. visio二次开发初始化问题

    (转发请注明来源:http://www.cnblogs.com/EminemJK/) 问题: axDrawingControl1初始化失败((System.ComponentModel.ISuppor ...

  5. (5)微信二次开发 之 XML格式数据解析

    1.首先理解一下html html的全名是:HyperText Transfer markup language 超级文本标记语言,html本质上是一门标记(符合)语言,在html里,这些标记是事先定 ...

  6. java微信开发API解析(二)-获取消息和回复消息

    java微信开发API解析(二)-获取消息和回复消息 说明 * 本演示样例依据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/20 ...

  7. ECMALL模板解析机制.MVC架构分析及文件目录说明.二次开发指南手册(转)

    ECMALL模板解析语法与机制 http://www.nowamagic.net/architecture/archt_TemplateSyntaxAndAnalysis.php ECMALL模块开发 ...

  8. 解析大型.NET ERP系统 窗体、查询、报表二次开发

    详细介绍Enterprise Solution 二次开发的流程步骤,主要包括数据输入窗体(Entry Form),查询(Query/Enquiry),报表(Report)三个重要的二次开发项目. 数据 ...

  9. C#开发BIMFACE系列2 二次开发流程

    系列目录     [已更新最新开发文章,点击查看详细] BIMFACE 平台是一个对外开放的平台,建筑行业的相关公司.软件公司或者有 BIM 业务需求的公司都可以注册成为开发者并使用其提供的强大功能. ...

随机推荐

  1. Centos允许root远程登录设置

      以root权限执行 vi /etc/ssh/sshd_config 将 #PermitRootLogin yes 这一行的“#”去掉,修改为: PermitRootLogin yes 重启ssh服 ...

  2. UrlRewritingNet伪静态的使用方法与解决方案(URL重写)

    在建站初期时,我们往往需要考虑的是使用真静态还是伪静态,这对于往后的站点配置,延展性都会产生深远的影响. 我使用伪静态的唯一目的:SEO优化.毋容置疑,伪静态在对于Spider是非常有利的,因此,我更 ...

  3. 13、Apache中虚拟目录和目录权限配置

    一.虚拟目录 之前的个人主页,为了安全起见,需要把~yanji 用户隐藏起来,这时就可以设置个 虚拟目录. 它在Apache服务器应用比较多,能够隐藏系统的真实目录,实用性非常高. 虚拟目录主要 通过 ...

  4. 基于.net开发chrome核心浏览器【七】

    这是一个系列的文章,前面六篇文章的地址如下: 基于.net开发chrome核心浏览器[六] 基于.net开发chrome核心浏览器[五] 基于.net开发chrome核心浏览器[四] 基于.net开发 ...

  5. java笔记

    ANT概述:http://www.blogjava.net/amigoxie/archive/2007/11/09/159413.html http://baitai.iteye.com/blog/7 ...

  6. PhotoShop算法原理解析系列 - 风格化---》查找边缘。

    之所以不写系列文章一.系列文章二这样的标题,是因为我不知道我能坚持多久.我知道我对事情的表达能力和语言的丰富性方面的天赋不高.而一段代码需要我去用心的把他从基本原理-->初步实现-->优化 ...

  7. weka

    第一次接触weka这个东西,貌似是数据挖掘用的比较多.接下来一个月里,希望能够对weka有更深一步的了解,并用博客记录下学习weka用法.原理.数据预处理的过程,与君分享,期待!

  8. 自定义框架(MyMvc)

    //初次接触自定义框架,简单的登录功能的实现流程:: 当我们实现登录功能的时候,首先会创建一个login.jsp 会写这些登录表单 <form action="loginAction. ...

  9. http协议进阶(一)http概述

    参考书籍——<HTTP权威指南> 1.web客户端和服务器 http客户端发出请求,其中包含请求内容,发给服务器,服务器再返回内容中回送请求的数据,http客户端和服务器构成了万维网的基本 ...

  10. Type.IsContextful 说明

    首先看MSDN的说明: 中文:获取一个值,通过该值指示 Type 在上下文中是否可以被承载. 英文:Gets a value indicating whether the Type can be ho ...