2012-09-07 110 views
0

我构建了一个简单的转换Add In,但其行为与不同的Visio版本(Visio 2010 Professional和Visio 2010 Premium)不同。 Add In接受一个用Stencil_1.vss中的Shapes创建的Process-Diagram,并用Stencil_2.vsd中的Shapes创建一个新的略有不同的Process-Diagram。它通过一个Visio页面循环,并为每个形状创建一个新的形状从新的主形状(从Stencil_2.vsd),并将其放入新页面。几何,字幕等都是一样的,只有形状外观改变了。下面是源图:当我运行的代码为Visio 2010专业泳道形状绘制正确相同的C#代码在Visio Professional和Premium中产生不同的输出

the source diagram

run from Visio 2010 Prof

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

这两次I(来自相同的模版“泳道”)下降相同的形状进带有SAME代码片段的页面:

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

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

回答

0

交叉功能流程图形状由一个插件支持,因此形状可以在泳道和页面等内正确定位。大多数形状都有一个放置事件,它会针对其各自的功能调用插件。

通过它的外观,插件不会在您的Visio Premium实例中被正确调用。例如,有一个在EventDrop cell的函数:

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

..where CFF14是2010版的交叉功能流程图附加的。

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

就专业和高级版本而言,就我所知,在功能上应该没有差异,就跨功能流程图而言。

0

谢谢你的时间!

请记住,2010年也使用 交叉功能流程图解决方案中的容器形状。您是否使用了正确的2010'目标'形状?

两种情况下的“目标”形状都是跨功能流程图模板中的Swimlanes。

我测试了相同的另一个“专业” - 机器添加代码,它是成功的,我的意思是“泳道”形状定位正确,没有分隔符和标题部分。 我也卸载并重新安装Premium实例,没有任何更改,相同的代码生成上面绘制的相同的图。 Swimlanes PinX被改变,分隔符和标题部分被添加。

  • 我注意到的是,在“错误图”仅第一下降 泳道形状是正确
  • 下面(后丢弃)泳道被错误地定位和分离器和标题栏相加。他们有: User.msvShapeCategories = “CFF集装箱; DoNotContain”,右边泳道,形状有:User.msvShapeCategories = “泳道; DoNotContain”
  • 另外我注意到,那错泳道衍生 从xfunc_m.vss(User.visMasterStencil = “xfunc_m.vss”)
  • 我从User.visMasterStencil细胞 删除值‘xfunc_m.vss’并更新模版

现在它工作得很好,我跳e此解释对其他人有用,有人可以比我更好地解释这种行为:)

相关问题