几何部分具有索引而不是命名行,因此您必须检查 ROWTYPE 找出你正在处理的是哪一个。
这是一个例子( 使用LINQPad )遍历形状的每个几何部分中的行:
void Main() { var vApp = MyExtensions.GetRunningVisio(); var shp = vApp.ActiveWindow.Selection.PrimaryItem; for (short i = 0; i < shp.GeometryCount; i++) { var geoSectIdx = (short)(Visio.VisSectionIndices.visSectionFirstComponent + i); var geoName = $"Geometry{i + 1}"; $"{shp.NameID}!{geoName}".Dump(); for (short r = 1; r < shp.Section[geoSectIdx].Count; r++) { var rowTag = shp.RowType[geoSectIdx, r]; $"Row.{r} = {Enum.GetName(typeof(Visio.VisRowTags), rowTag)}".Dump(); } "".Dump(); } }
这将产生以下输出(给定具有两个地理区域的形状):
Sheet.1!Geometry1 Row.1 = visTagRelMoveTo Row.2 = visTagRelLineTo Row.3 = visTagRelLineTo Row.4 = visTagRelLineTo Row.5 = visTagRelLineTo Sheet.1!Geometry2 Row.1 = visTagMoveTo Row.2 = visTagLineTo Row.3 = visTagLineTo Row.4 = visTagLineTo Row.5 = visTagLineTo