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

下面说说具体的实现过程:

shape的添加

你只需要找到相应的模板,模板下的形状,就可以加载形状,没有什么困难的,如果你实在不知道,那么就学者去用用Visio宏,对你的学习很有帮助(Visio二次开发(一)—-巧用Visio宏 )

'''新建一个documents集合'''Visio.Documents visDocs = adcVisio.Document.Application.Documents;
'''加载模板并将其加载到一个停靠的窗口中'''Visio.Document visStencil = visDocs.OpenEx("BASIC_M.VSS", (short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenDocked);
'''加载一个当前活动的Page绘图区域'''
Visio.Page visPage = adcVisio.Document.Application.ActivePage;'''加载三角形'''
Visio.Master visioRectMaster = visStencil.Masters.get_ItemU(@"Triangle");
Visio.Shape visioRectShape = visPage.Drop(visioRectMaster, 3.25, 4.5);
'''加载圆形'''
Visio.Master visioRect1Master = visStencil.Masters.get_ItemU(@"Square");
Visio.Shape visioRect1Shape = visPage.Drop(visioRect1Master, 1.25, 2.5);
'''加载动态链接线'''
Visio.Master visioWallMaster = visStencil.Masters.get_ItemU(@"Line-curve connector");
Visio.Shape visioWallShape = visPage.Drop(visioWallMaster, 5.5, 6.5);

Shape的连接

从上面的途中可以看出,两个门Shape之间有的是通过线连接的,那么我们能够通过代码来实现连接的功能吗?当然,必须的可以:

 ''' <summary>'''''' 将两个形状进行连接'''''' </summary>''''''<param name="shape1"></param>'''''' <param name="shape2"></param>'''''' <param name="connector"></param>'''private static void ConnectShapes(Visio.Shape shape1, Visio.Shape shape2, Visio.Shape connector){''' get the cell from the source side of the connector '''Cell beginXCell = connector.get_CellsSRC((short)Visio.VisSectionIndices.visSectionObject,(short)Visio.VisRowIndices.visRowXForm1D,(short)Visio.VisCellIndices.vis1DBeginX);'''glue the source side of the connector to the first shape '''beginXCell.GlueTo(shape1.get_CellsSRC((short)Visio.VisSectionIndices.visSectionObject,(short)Visio.VisRowIndices.visRowXFormOut,(short)Visio.VisCellIndices.visXFormPinX));''' get the cell from the destination side of the connector'''Cell endXCell = connector.get_CellsSRC((short)Visio.VisSectionIndices.visSectionObject,(short)Visio.VisRowIndices.visRowXForm1D,(short)Visio.VisCellIndices.vis1DEndX);''' glue the destination side of the connector to the second shape '''endXCell.GlueTo(shape2.get_CellsSRC((short)Visio.VisSectionIndices.visSectionObject,(short)Visio.VisRowIndices.visRowXFormOut,(short)Visio.VisCellIndices.visXFormPinX));}

然后再在定义形状的代码下边加上一句话

'''将两个图形用动态链接线链接起来'''
ConnectShapes(visioRectShape, visioRect1Shape, visioWallShape);

下面展示一下效果:

Visio二次开发(二)----Shape的添加和连接相关推荐

  1. shopxo二次开发:商品管理添加、商品导入库存、设置库存量(教程)

    shopxo二次开发:商品添加与库存设置(教程如下) 商品添加与库存设置的一系列的操作说明: 步骤 · 如下: 商品添加与库存设置的一系列的操作说明: 商品管理.商品添加.商品类型设置.商品导入库存. ...

  2. wincc报表日报表实例_工作系统二次开发二Python加工原膜切割日报表数据实例

    #工作系统二次开发二Python加工原膜切割日报表数据实例 #当查询一个或多个工作令后在表格展示数据前按要求对数据进行二次处理,处理要求看如下 #1.加工单号和母卷物料编号相同则把除第一行外的领料有关 ...

  3. ug二次开发(一)添加标题栏及加入功能

    文章目录 1 概念 2 开发vb界面的二次开发(extra) 3ug ui界面上列表栏的产生 3.1 men文件 3.1 tbr文件 1 概念 将如图所示文件加入vs的目录中,与目录中文件合并一下,此 ...

  4. BarTender破解版 标签打印二次开发二维码C#预览图

    很多生产环节都需要条码打印的功能,这篇文章就介绍下如何使用C#实现条码打印的功能,希望对大家能有所帮助! 条码设计软件采用的是BarTender 10.1,在此基础上进行的二次开发. 运行成功的预览图 ...

  5. python工作台_FreeCAD二次开发-创建Python工作台,添加菜单栏和工具条,FreeCAD命令

    FreeCAD作为一款基于OpenCasCAD内核的开源CAD软件,可以在GitHub上下载源代码.阅读源代码,有助于我们学习CAD软件架构,了解底层几何算法. 由博主Caesar卢尚宇自学整理(纯粹 ...

  6. CAD 二次开发再blockTableRecord中添加hatch,绘制指北针实例

    [CommandMethod("9999")]public static void zhiBeiZhen2(){

  7. CAD二次开发--二维多段线Polyline与三维多段线Polyline3d创建总结

    今天在接到一个小需求并开发完成后,发现人家要的是三维polyline,而我画的确是二维的,所以这个必须要改过来!我心想:"这不是很简单么?2换一下3不就得了?".结果一顿折腾,发现 ...

  8. visionpro联合c#二次开发二

    本文已参与「新人创作礼」活动,一起开启掘金创作之路. 本次康耐视联合C#文档是最后一篇visionpro与C#联合的文章,后续我们将开始c#与halcon的编写或者vidi的文章. 首先我们定义所需要 ...

  9. 基于leveldb,levigo做二次开发

    Leveldb是一个C++库,它有提供标准的C接口,头文件在include/leveldb/c.h中 levigo是leveldb 的一个go wrapper,它主要基于Leveldb中inlude/ ...

最新文章

  1. java中继承和多态的实验,Java中的继承和多态
  2. Spring-boot国际化
  3. 开发日记-20190829 关键词 读书笔记《Unix环境高级编程(第二版)》DAY 5
  4. Acwing第 33 场周赛【完结】
  5. 只是简单读了读《oracle查询优化改写》,就让我获益匪浅,想写好sql,这一本书就够了!
  6. C语言再学习 -- printf、scanf占位符
  7. go build命令参数详解
  8. 11-selenium浏览器自动化
  9. Java生鲜电商平台-B2B生鲜的互联网思维
  10. debian apt-get联网安装mysql服务
  11. 从Android源码的角度分析Binder机制
  12. VS2005中解决方案管理器中看不到解决方案节点的解决办法
  13. 信息图表是如何炼成的(三):阶层结构与isometric
  14. RabbitMQ文档翻译——Hello World!(下)
  15. 云龙51单片机视频教程+课件+程序代码+课后作业,零基础入门视频教程
  16. 学习关于 2D 和 3D 姿势估计的知识
  17. 计算机nas一般指用户,NAS网络存储器·什么是网络服务
  18. 莫高窟永不褪色的微笑,照耀在华为未曾止步的数据保护征程
  19. 新手如何有效的刷算法题(LeetCode)
  20. 使用BottomSheetDialogFragment实现购买出商品,底部弹出商品属性的效果

热门文章

  1. 985博士走红,粉丝超800万遭网暴!如今状告“施暴者”
  2. 开源创业者必读:Kong从明星开源项目进化为独角兽的商业化路径
  3. 新金融时代,凡泰极客助力华西证券打造数字营销新生态
  4. 【数学】焦点弦定理(?)
  5. alv oo sap 多个_OO ALV 全屏显示
  6. python 在linux中把doc转换为docx格式文件(支持word97和word2003)
  7. python包管理工具总结
  8. 交换机的端口种类access、trunk、hybrid
  9. 深入分析JavaWeb 44 -- Struts2开发核心之动作类Action
  10. 百度和谷歌对骂对方是SB!!!!