var api = HpdApi.GetInstance();
api.Init();
var project = api.OpenProject($"{myProjectPath}");
var wsp = project.GetVariants().FirstOrDefault()?.GetWorkspaces().FirstOrDefault(w => w.Name.Contains("MyWorkspace"));
wsp.Open(false, false);
// Find the segment routable occurrence.
IControlPath routable = wsp.GetAllOccurrences<ISegmentRoutable>().FirstOrDefault(o => o.Name == "path_1");
// If the occurrence is cable, limit the control path to the top layer only.
if (routable is ICable cable)
{
routable = cable.CableSubParts.OfType<ICableSublayer>().FirstOrDefault(s => s.IsTopLayer);
}
// First and second point from this control path.
IControlPoint cp = routable.GetControlPoints()[0];
IControlPoint cp2 = routable.GetControlPoints()[1];
var bund = wsp.GetAllOccurrences().FirstOrDefault(o => o.Name == "bundle_1");
wsp.RoutePathSegment(cp, cp2, bund);
wsp.Save();
wsp.Close();
project.Save();
project.Close();