相同的C#代码在Visio Professional和Premium中生成不同的输出

时间:2012-09-07 14:28:45

标签: visio

我已经构建了一个简单的转换添加,但不幸的是它的行为与不同的Visio版本(Visio 2010 Professional和Visio 2010 Premium)不同。 Add In使用来自Stencil_1.vss的Shapes创建的流程图,并使用Stencil_2.vsd中的Shapes创建一个略有不同的新Process-Diagram。它循环访问Visio页面,并为每个创建的形状创建一个新的主形状(来自Stencil_2.vsd)的形状并将其放入新页面。几何,字幕等是相同的,只改变形状外观。以下是源图:

the source diagram

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

run from Visio 2010 Prof

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

两次我都将SAME Shape(来自同一模板的“Swimlane”)放入带有SAME Code片段的页面中:

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

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

2 个答案:

答案 0 :(得分:1)

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

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

= RUNADDONWARGS( “CFF14”, “/ CMD = 20001”)

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

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

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

答案 1 :(得分:0)

谢谢你的时间!

  

请记住,2010年还使用了容器形状   跨功能流程图解决方案。你使用的是正确的2010年吗?   '目标'形状?

两种情况下的'目标'形状都是来自交叉功能流程图模板的Swimlanes。

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

  • 我注意到,在“错误的图表”中只有第一个掉线 Swimlane形状正确
  • 以下(稍后删除)Swimlanes定位错误,并添加了分隔符和标题栏。他们有: User.msvShapeCategories =“ CFF容器; DoNotContain”,右边的Swimlane形状有:User.msvShapeCategories =“ Swimlane ; DoNotContain”
  • 我也注意到,错误的Swimlanes是派生出来的 来自xfunc_m.vss(User.visMasterStencil =“ xfunc_m.vss ”)
  • 我从User.visMasterStencil Cell中删除值“xfunc_m.vss” 并更新模板

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