【问题标题】:The same C# code produces different output in Visio Professional and Premium相同的 C# 代码在 Visio Professional 和 Premium 中产生不同的输出
【发布时间】:2012-09-01 10:55:28
【问题描述】:

我已经构建了一个简单的转换加载项,但不幸的是,它的行为因不同的 Visio 版本(Visio 2010 Professional 和 Visio 2010 Premium)而不同。 插件采用使用 Stencil_1.vss 中的形状创建的流程图,并使用来自 Stencil_2.vsd 的形状创建一个略有不同的新流程图。它遍历 Visio 页面,并为创建的每个形状从新的主形状(来自 Stencil_2.vsd)创建一个新形状并将其放入新页面。几何形状、标题等都是一样的,只是改变了形状外观。下面是源码图:

当我在 Visio 2010 Professional 中运行代码时,泳道形状被正确绘制。

当我从 Visio Premium 运行相同的代码时,泳道的外观和布局不匹配:

两次我都将相同的形状(“Swimlane”从同一模具中)放入具有相同代码片段的页面中:

Visio.Master vm = swimlane_stencil.Masters.get_ItemU(@"Swimlane");
Visio.Shape TargetShape = targetPage.Drop(vm, shape_x, shape_y);

我如何确保代码在任何时候都产生相同(正确)的输出?我必须禁用泳道形状表中的任何(高级)功能吗?

【问题讨论】:

    标签: visio


    【解决方案1】:

    跨功能流程图形状由插件支持,以便形状在泳道和页面等中正确定位。大多数形状都有一个放置事件,可以调用插件以实现其各自的功能。

    从外观上看,插件没有在您的 Visio Premium 实例中正确调用。比如EventDrop cell中有一个函数:

    =RUNADDONWARGS("CFF14","/cmd=20001")

    ..其中 CFF14 是跨功能流程图插件的 2010 版。

    请记住,2010 还在跨职能流程图解决方案中使用container shapes。您使用的是正确的 2010 年“目标”形状吗?

    据我所知,就跨职能流程图而言,专业版和高级版之间的功能应该没有区别。

    【讨论】:

      【解决方案2】:

      感谢您的宝贵时间!

      请记住,2010 年还在 跨职能流程图解决方案。您使用的是正确的 2010 “目标”形状?

      这两种情况下的“目标”形状都是跨职能流程图模板中的泳道。

      我在另一台“Professional”机器上测试了相同的 Add In-code,它是成功的,我的意思是“Swimlane”形状定位正确并且没有分隔符和标题部分。 我还卸载并再次安装了 Premium 实例,没有任何改变,相同的代码生成上面绘制的相同图表。泳道 PinX 已更改,并添加了分隔符和标题部分。

      • 我注意到,在“错误的图表”中,只有第一个被丢弃 泳道形状正确
      • 以下(后来删除)泳道位置错误,添加了分隔符和标题栏。他们有: User.msvShapeCategories="CFF Container;DoNotContain",正确的泳道形状有:User.msvShapeCategories="Swimlane;DoNotContain"
      • 我还注意到,衍生出错误的泳道 来自 xfunc_m.vss (User.visMasterStencil = "xfunc_m.vss")
      • 我从 User.visMasterStencil 单元中删除了值“xfunc_m.vss” 并更新模具

      现在它工作正常,我希望这个解释对其他人有用,有人可以比我更好地解释这种行为:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-29
        • 2014-11-04
        • 1970-01-01
        • 2014-07-10
        • 1970-01-01
        • 2021-11-23
        相关资源
        最近更新 更多