You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#编程定义Visio连接器Points:手动设置路径点方法问询

解决Visio连接器手动指定路径点的问题

我之前也碰到过一模一样的情况——用GlueTo连完形状后,自动路由的路径完全不符合预期,改ShapeSheet还被Visio拒了,后来才搞明白原因:默认的动态路由连接器,它的Geometry1区域是Visio自动维护的,处于锁定状态,根本不让手动修改。要手动指定路径点,得先把连接器改成静态的,再用API来添加路径点。

具体步骤和代码示例

1. 先禁用连接器的自动路由

这是关键一步,把连接器从“动态自动调整”改成“手动固定路径”。你可以通过设置RouteStyle属性为visRouteStyleNone来实现:

using Visio = Microsoft.Office.Interop.Visio;

// 假设你已经获取了连接器对象connector
connector.RouteStyle = Visio.VisRouteStyle.visRouteStyleNone;

2. 清除默认的多余路径点

连接器默认会有两个路径点(对应起点和终点),如果之前自动路由生成了中间点,得先删掉它们,避免干扰自定义路径:

// 只要路径点数量超过2(起点+终点),就从最后一个开始删
while (connector.Waypoints.Count > 2)
{
    connector.Waypoints.Delete(connector.Waypoints.Count);
}

3. 添加自定义路径点

现在就可以通过Waypoints集合添加你想要的路径点了,注意Visio默认的页面单位是英寸,如果你的坐标是厘米之类的,需要先转换(1厘米≈0.3937英寸):

// 添加你指定的路径点(1,2)、(2,4)、(5,6)
connector.Waypoints.Add(1.0, 2.0);
connector.Waypoints.Add(2.0, 4.0);
connector.Waypoints.Add(5.0, 6.0);

额外提醒

  • 这样设置后,连接器就变成静态的了,移动形状时不会自动调整路径,如果你需要重新自动路由,把RouteStyle改回默认值就行,但手动加的路径点会丢失。
  • 如果你更习惯操作ShapeSheet,禁用路由后也可以直接修改Geometry1的单元格(比如Geometry1.X1、Geometry1.Y1这些),但用Waypoints集合会更直观,不用手动管理Geometry的行。

内容的提问来源于stack exchange,提问作者user2066337

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:09:41