在 visio 中识别形状父级
Identifying a shape parent in visio
你好,我有一个 BPMN 模板的 visio 文档。在那个 BPMN 文档中,我通过选择 Moreshapes- 放置了一个 BPMN 形状以及来自工程、流程图、网络、基本形状等的其他形状- >
所以我的 BPMN visio 文档如下所示
其中BPMN和Task named是一个BPMN形状,Computer是来自Network->Computer的形状,Rectangle来自General->BasicShapes 像那样其他的形状也一样。 (ie) 在 BPMN visio 文档中,BPMN 形状我也有其他形状。
如何在 C# 中识别形状父级..???
例如:
BPMN 命名形状是来自 BPMN 的形状。
名为 shape 的任务是来自 BPMN 的形状。
名为 shape 的计算机是来自 Network 的 shape。
名为 shape 的矩形是 General 中的形状。
我必须承认,这比我想象的要难。模板实际上在文档集中,它们不包含形状,只包含母版。无论如何:这就是您为活动绘图的每个形状获取父模板名称的方式:
using Visio = Microsoft.Office.Interop.Visio;
var visio = (Visio.Application) System.Runtime.InteropServices.Marshal.GetActiveObject("Visio.Application");
var vsd = visio.ActiveDocument;
foreach(Visio.Shape shape in vsd.Pages[1].Shapes) {
foreach(Visio.Document stencil in visio.Documents) {
if (stencil.Type == Visio.VisDocumentTypes.visTypeStencil) {
foreach(Visio.Master sh in stencil.Masters) {
if (sh.Name == shape.Name) {
Console.WriteLine(stencil.Name);
break;
}
}
}
}
}
形状和模板之间没有依赖关系;图形可能来自任何模板(或其他图形)。 IE。形状不存储它们来自哪个模板的信息 "originate"。
例如,您可以创建自己的模板并在其中放置形状;因此,当您从该模板中删除一个形状时,它们将来自该模板。
唯一的顺序是 Microsoft 在模板之间排列它们的方式。请注意,相同的形状可能出现在多个内置模板中。
当您放下一个形状时,它 "master" 会被复制到文档中,并且与 "original" 模板的所有连接都会断开 - 形状不会 "know" 它的来源.
你需要这种信息有什么用?
你好,我有一个 BPMN 模板的 visio 文档。在那个 BPMN 文档中,我通过选择 Moreshapes- 放置了一个 BPMN 形状以及来自工程、流程图、网络、基本形状等的其他形状- >
所以我的 BPMN visio 文档如下所示
其中BPMN和Task named是一个BPMN形状,Computer是来自Network->Computer的形状,Rectangle来自General->BasicShapes 像那样其他的形状也一样。 (ie) 在 BPMN visio 文档中,BPMN 形状我也有其他形状。
如何在 C# 中识别形状父级..???
例如: BPMN 命名形状是来自 BPMN 的形状。 名为 shape 的任务是来自 BPMN 的形状。 名为 shape 的计算机是来自 Network 的 shape。 名为 shape 的矩形是 General 中的形状。
我必须承认,这比我想象的要难。模板实际上在文档集中,它们不包含形状,只包含母版。无论如何:这就是您为活动绘图的每个形状获取父模板名称的方式:
using Visio = Microsoft.Office.Interop.Visio;
var visio = (Visio.Application) System.Runtime.InteropServices.Marshal.GetActiveObject("Visio.Application");
var vsd = visio.ActiveDocument;
foreach(Visio.Shape shape in vsd.Pages[1].Shapes) {
foreach(Visio.Document stencil in visio.Documents) {
if (stencil.Type == Visio.VisDocumentTypes.visTypeStencil) {
foreach(Visio.Master sh in stencil.Masters) {
if (sh.Name == shape.Name) {
Console.WriteLine(stencil.Name);
break;
}
}
}
}
}
形状和模板之间没有依赖关系;图形可能来自任何模板(或其他图形)。 IE。形状不存储它们来自哪个模板的信息 "originate"。
例如,您可以创建自己的模板并在其中放置形状;因此,当您从该模板中删除一个形状时,它们将来自该模板。
唯一的顺序是 Microsoft 在模板之间排列它们的方式。请注意,相同的形状可能出现在多个内置模板中。
当您放下一个形状时,它 "master" 会被复制到文档中,并且与 "original" 模板的所有连接都会断开 - 形状不会 "know" 它的来源.
你需要这种信息有什么用?