This document is archived and information here might be outdated. Recommended version. |
Change the extremity node of an in-memory schematic feature sublink
/// <summary> /// Change the extremity node of an in-memory schematic sublink /// </summary> /// <param name="schemSubLink">The ISchematicInMemoryFeatureSubLink which extremity node must be changed</param> /// <param name="newToNode">The newToNode extremity node object</param> public void ChangeToNodeOfSubLink(ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureSubLink schemSubLink, object newToNode) { // verify that the input newToNode object is a SchematicInMemoryFeatureNode ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureNode schNode=(ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureNode)newToNode; if (schNode == null) return; // cast SchematicInMemoryFeatureSubLink.ReferenceLink into ISchematicInMemoryFeatureLink ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureLink schLinkRef=schemSubLink.ReferenceLink; ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureLink schLink; // there are two cases: newToNode is either a SchematicInMemoryFeatureNode or a SchematicInMemoryFeatureNodeOnLink // case#1: newToNode is a SchematicInMemoryFeatureNodeOnLink; its reference link and the sublink reference link must be the same try { ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureNodeOnLink schNodeOnLink=(ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureNodeOnLink)newToNode; schLink=schNodeOnLink.ReferenceLink; if (schLink == schLinkRef) // since case#1 conditions are verified, the extremity node change can be done schLink.ToNode=schNode; // then return whether the conditions are verified or not return; } catch { } // case#2: newToNode is a SchematicInMemoryFeatureNode; the sublink reference link must be connected to that node ESRI.ArcGIS.Schematic.IEnumSchematicInMemoryFeatureLink schLinks=schNode.GetIncidentLinks(ESRI.ArcGIS.Schematic.esriSchematicEndPointType.esriSchematicOriginOrExtremityNode); schLinks.Reset(); schLink=schLinks.Next(); while (schLink != null) { if (schLink == schLinkRef) { // since case#2 conditions are verified, the extremity node change can be done schLink.ToNode=schNode; return; } schLink=schLinks.Next(); } }
''' <summary> ''' Change the extremity node of an in-memory schematic sublink ''' </summary> ''' <param name="schemSubLink">The ISchematicInMemoryFeatureSubLink which extremity node must be changed</param> ''' <param name="newToNode">The newToNode extremity node object</param> Public Sub ChangeToNodeOfSubLink(ByVal schemSubLink As ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureSubLink, ByVal newToNode As Object) ' verify that the input newToNode object is a SchematicInMemoryFeatureNode Dim schNode As ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureNode=TryCast(newToNode, ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureNode) If (schNode Is Nothing) Then Exit Sub End If ' cast SchematicInMemoryFeatureSubLink.ReferenceLink into ISchematicInMemoryFeatureLink Dim schLinkRef As ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureLink=schemSubLink.ReferenceLink Dim schLink As ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureLink ' there are two cases: newToNode is either a SchematicInMemoryFeatureNode or a SchematicInMemoryFeatureNodeOnLink ' case#1: newToNode is a SchematicInMemoryFeatureNodeOnLink; its reference link and the sublink reference link must be the same Try ' newFromNode is a SchematicInMemoryFeatureNodeOnLink Dim schNodeOnLink As ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureNodeOnLink=TryCast(newToNode, ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureNodeOnLink) schLink=schNodeOnLink.ReferenceLink If (schLink Is schLinkRef) Then ' since case#1 conditions are verified, the extremity node change can be done schLink.ToNode=schNode End If ' then return whether the conditions are verified or not Return Catch End Try ' case#2: newToNode is a SchematicInMemoryFeatureNode; the sublink reference link must be connected to that node Dim schLinks As ESRI.ArcGIS.Schematic.IEnumSchematicInMemoryFeatureLink=schNode.GetIncidentLinks(ESRI.ArcGIS.Schematic.esriSchematicEndPointType.esriSchematicOriginOrExtremityNode) schLinks.Reset() schLink=schLinks.Next() While (schLink IsNot Nothing) If (schLink Is schLinkRef) Then ' since case#2 conditions are verified, the extremity node change can be done schLink.ToNode=schNode Return End If schLink=schLinks.Next() End While End Sub