This document is archived and information here might be outdated. Recommended version. |
Change the origin node of an in-memory schematic feature sublink
/// <summary> /// Change the origin node of an in-memory schematic sublink /// </summary> /// <param name="schemSubLink">The ISchematicInMemoryFeatureSubLink which origin node must be changed</param> /// <param name="newFromNode">The newFromNode origin node object</param> public void ChangeFromNodeOfSubLink(ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureSubLink schemSubLink, object newFromNode) { // verify that the input newFromNode object is a SchematicInMemoryFeatureNode ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureNode schNode=(ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureNode)newFromNode; 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: newFromNode is either a SchematicInMemoryFeatureNode or a SchematicInMemoryFeatureNodeOnLink // case#1: newFromNode 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)newFromNode; schLink=schNodeOnLink.ReferenceLink; if (schLink == schLinkRef) // since case#1 conditions are verified, the origin node change can be done schLink.FromNode=schNode; // then return whether the conditions are verified or not return; } catch { } // case#2: newFromNode 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 origin node change can be done schLink.FromNode=schNode; return; } schLink=schLinks.Next(); } }
''' <summary> ''' Change the origin node of an in-memory schematic sublink ''' </summary> ''' <param name="schemSubLink">The ISchematicInMemoryFeatureSubLink which origin node must be changed</param> ''' <param name="newFromNode">The newFromNode origin node object</param> Public Sub ChangeFromNodeOfSubLink(ByVal schemSubLink As ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureSubLink, ByVal newFromNode As Object) ' verify that the input newFromNode object is a SchematicInMemoryFeatureNode Dim schNode As ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureNode=TryCast(newFromNode, 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: newFromNode is either a SchematicInMemoryFeatureNode or a SchematicInMemoryFeatureNodeOnLink ' case#1: newFromNode is a SchematicInMemoryFeatureNodeOnLink; its reference link and the sublink reference link must be the same Try Dim schNodeOnLink As ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureNodeOnLink=TryCast(newFromNode, ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureNodeOnLink) ' since case#1 conditions are verified, the origin node change can be done schLink=schNodeOnLink.ReferenceLink If (schLink Is schLinkRef) Then schLink.FromNode=schNode End If ' then return whether the conditions are verified or not Return Catch End Try ' case#2: newFromNode 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 origin node change can be done schLink.FromNode=schNode Return End If schLink=schLinks.Next() End While End Sub