设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 12296|回复: 4
打印 上一主题 下一主题

【学习笔记】Visio 2013从0开始

[复制链接]
跳转到指定楼层
1#
发表于 2014-3-28 17:16:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 tianping 于 2014-3-28 18:35 编辑

  1.            Visio.Application app = Globals.ThisAddIn.Application;
  2.             Visio.Document myDocument = app.Documents.Add("");
  3.             Visio.Page page1 = myDocument.Pages[1];
  4.             Visio.Shape pagesheet1 = page1.PageSheet;
  5.             pagesheet1.get_Cells("PageWidth").Formula = "210mm";
  6.             pagesheet1.Cells["PageHeight"].Formula = "297mm";
复制代码

Visio2013 基本对象模型
__________________________
    1、命名空间:Microsoft.Office.Interop.Visio
    2、顶层对象:Application,VSTO中为Globals.ThisAddIn.Application
    3、Application.Document代表visio打开的一个文档;Application.ActiveDocument是当前焦点文档;Application.Documents是visio打开的所有文档的集合。新建一个文档并打开编辑的语法:Visio.Document newDocument=Application.Documents.Add("");
    4、Document可以由很多Page组成,Page是一个绘图区域,由前景和背景组成,Document.Pages是页的集合,第一页用Document.Pages[1]表示。获取当前焦点页面语法:Visio.Page activePage=Application.ActivePage
    5、Page里都是Shape,Page.Shapes是页面形状的集合,获取第一个Shape的语法:Visio.Shape shape1=Page.Shapes[1];
    6、PageSheet是Page里的特殊表格,Page的属性比如页面尺寸、打印方向等记录在页面的PageSheet中,PageSheet由许多cell组成,每个Cell由属性名和值表达式组成,PageSheet.Cells表示这些属性的集合,给一个属性赋值的语法:PageSheet.Cells["PageWidth"].Formula = "210mm"

visio页面成员
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2014-4-2 11:17:35 | 只看该作者

文件格式
___________________________
2013使用新的文件格式。
新格式是一个压缩包,将扩展名改为zip可以直接用压缩工具打开。
2013可以打开老的文件格式,但不能保存成老格式。


3#
 楼主| 发表于 2014-4-2 21:30:27 | 只看该作者
本帖最后由 tianping 于 2014-4-2 21:33 编辑

郁闷了一整天的问题终于找到答案!
全是泪啊!

问题:无法在vs2013中添加visio drawing control组件
原因:我装的是64位的visio,而vs是不支持64位ActiveX控件的。必须改装32位visio!

http://support.microsoft.com/kb/980533/zh-cn

4#
 楼主| 发表于 2014-4-9 15:33:59 | 只看该作者
本帖最后由 tianping 于 2014-4-9 15:39 编辑

VISIO 标准计量单位
在shapesheet公式里用单位的缩写
_____________________________________________________________

单位
缩写
常量
Centimeters
cm
visCentimeters (69)
Ciceros
c
visCiceros (54)
Date or time
date
visDate (40)
Degrees
deg
visDegrees (81)
Didots
d
visDidots (53)
Elapsed weeks
ew
visElapsedWeek (43)
Elapsed days
ed
visElapsedDay (44)
Elapsed hours
eh
visElapsedHour (45)
Elapsed minutes
em
visElapsedMin (46)
Elapsed seconds
es
visElapsedSec (47)
Feet
ft
visFeet (66)
Inches
in
visInches (65)
Kilometers
km
visKilometers (72)
Meters
m
visMeters (71)
Miles
mi
visMiles (68)
Millimeters
mm
visMillimeters (70)
Minutes
'
visMin (84)
Nautical miles
nm
visNautMiles (76)
Percent
%
visPercent (33)
Picas
p
visPicas (51)
Points
pt
visPoints (50)
Radians
rad
visRadians (83)
Seconds
"
visSec (85)
Yards
yd
visYards (75)


5#
 楼主| 发表于 2014-4-11 20:46:42 | 只看该作者
本帖最后由 tianping 于 2014-4-11 20:55 编辑

visio2013项目需要引用两个类库(com组件):

Microsoft Office 15.0 Object Library 和 Microsoft Visio 15.0 Type Library

打开文件代码:



  1.     using System;
  2.     public sealed class OpenDocument
  3.     {
  4.         private OpenDocument()
  5.         {
  6.         }
  7.         //applicationObj visio实例
  8.         //stencilName  模具文件
  9.         // documentName 绘图文件1
  10.         // hiddenDocumentName 绘图文件2,将以隐藏方式打开,且不会显示在最近打开文件表里
  11.         public static bool DemoDocumentOpen(
  12.             Microsoft.Office.Interop.Visio.Application applicationObj,
  13.             string stencilName,
  14.             string documentName,
  15.             string hiddenDocumentName)
  16.         {

  17.             bool documentsOpened = false;

  18.             if (applicationObj == null)
  19.             {
  20.                 return false;
  21.             }

  22.             try
  23.             {

  24.                 //要求三个文件全部存在,文件要求全路径名
  25.                 if ((System.IO.File.Exists(stencilName)) &&
  26.                     (System.IO.File.Exists(documentName)) &&
  27.                     (System.IO.File.Exists(hiddenDocumentName)))
  28.                 {
  29.                     //OpenEx带两个参数,第一个是文件名,第二个是枚举参数,表示打开方式
  30.                     applicationObj.Documents.OpenEx(stencilName,
  31.                         ((short)Microsoft.Office.Interop.Visio.
  32.                             VisOpenSaveArgs.visOpenDocked +    //停靠
  33.                         (short)Microsoft.Office.Interop.Visio.  
  34.                             VisOpenSaveArgs.visOpenRO));           //只读

  35.                     applicationObj.Documents.OpenEx(documentName,
  36.                         (short)Microsoft.Office.Interop.Visio.
  37.                             VisOpenSaveArgs.visOpenCopy);          //打开原文件复本

  38.                     applicationObj.Documents.OpenEx(hiddenDocumentName,
  39.                         ((short)Microsoft.Office.Interop.Visio.
  40.                             VisOpenSaveArgs.visOpenHidden +    //隐藏
  41.                         (short)Microsoft.Office.Interop.Visio.
  42.                             VisOpenSaveArgs.visOpenMacrosDisabled +   //禁用宏
  43.                         (short)Microsoft.Office.Interop.Visio.
  44.                             VisOpenSaveArgs.visOpenDontList));        //不加入最近文件表

  45.                     documentsOpened = true;
  46.                 }
  47.             }

  48.             catch (Exception error)
  49.             {
  50.                 System.Diagnostics.Debug.WriteLine(error.Message);
  51.                 throw;
  52.             }

  53.             return documentsOpened;
  54.         }
  55.     }
复制代码




您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-12-1 18:02 , Processed in 0.096136 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表