About the Implementing extended criteria for some predefined schematic rules Sample
[C#]
ExpandLinks.cs
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using ESRI.ArcGIS.Schematic;
using ESRI.ArcGIS.Geodatabase;
namespace CustomExtCriteriaCS
{
[ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[Guid(ExpandLinks.GUID)]
[ProgId(ExpandLinks.PROGID)]
public class ExpandLinks : ISchematicExpandLinksByAttributeExtended
{
public const string GUID = "F942BDC2-2AD4-47c4-B96D-A8CA0002E9B3";
public const string PROGID = "CustomExtCriteriaCS.ExpandLinks";
#region Component Category Registration
[ComRegisterFunction()]
public static void Register(string CLSID)
{
ESRI.ArcGIS.ADF.CATIDs.SchematicRulesExtendedCriteria.Register(CLSID);
}
[ComUnregisterFunction()]
public static void Unregister(string CLSID)
{
ESRI.ArcGIS.ADF.CATIDs.SchematicRulesExtendedCriteria.Unregister(CLSID);
}
#endregion
#region ISchematicExpandLinksByAttributeExtended Membres
public string Evaluate(ISchematicInMemoryFeature schematicFeature)
{
if (schematicFeature.SchematicElementClass.SchematicElementType != esriSchematicElementType.esriSchematicLinkType) return "";
ISchematicInMemoryFeatureLink schemLink;
schemLink = (ISchematicInMemoryFeatureLink)schematicFeature;
// Get From node
ISchematicInMemoryFeatureNode schemFromNode;
schemFromNode = schemLink.FromNode;
// Get Associated feature
ISchematicElementAssociatedObject scheAsso;
scheAsso = (ISchematicElementAssociatedObject)schemFromNode.SchematicElement;
IFeature esriFeature;
esriFeature = (IFeature)scheAsso.AssociatedObject;
// Get list of fields
IFields esriFields;
esriFields = esriFeature.Fields;
int numField;
// Find Field MaxOutLines
numField = esriFields.FindFieldByAliasName("MaxOutLines");
if (numField <= 0) return ""; // Field not found
// Return value of the field
return esriFeature.get_Value(numField).ToString();
}
public string Name
{
get { return "Use origin plant's MaxOutLines value (C#)"; }
}
#endregion
}
}
[Visual Basic .NET]
ExpandLinks.vb
Imports System
Imports System.Collections.Generic
Imports System.Runtime.InteropServices
Imports ESRI.ArcGIS.Schematic
Imports ESRI.ArcGIS.Geodatabase
<ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)> _
<Guid(ExpandLinks.GUID)> _
<ProgId(ExpandLinks.PROGID)> _
Public Class ExpandLinks
Implements ISchematicExpandLinksByAttributeExtended
Public Const GUID As String = "D98900E4-B15D-4610-B42D-5D70E368FBC2"
Public Const PROGID As String = "CustomExtCriteriaVB.ExpandLinks"
#Region "Component Category Registration"
<ComRegisterFunction()> _
Public Shared Sub Register(ByVal CLSID As String)
ESRI.ArcGIS.ADF.CATIDs.SchematicRulesExtendedCriteria.Register(CLSID)
End Sub
<ComUnregisterFunction()> _
Public Shared Sub Unregister(ByVal CLSID As String)
ESRI.ArcGIS.ADF.CATIDs.SchematicRulesExtendedCriteria.Unregister(CLSID)
End Sub
#End Region
#Region "ISchematicExpandLinksByAttributeExtended Members"
Public Function Evaluate(ByVal schematicFeature As ESRI.ArcGIS.Schematic.ISchematicInMemoryFeature) As String _
Implements ESRI.ArcGIS.Schematic.ISchematicExpandLinksByAttributeExtended.Evaluate
If (schematicFeature.SchematicElementClass.SchematicElementType <> esriSchematicElementType.esriSchematicLinkType) Then Return ""
Dim schemLink As ISchematicInMemoryFeatureLink
schemLink = CType(schematicFeature, ISchematicInMemoryFeatureLink)
' Get From node
Dim schemFromNode As ISchematicInMemoryFeatureNode
schemFromNode = schemLink.FromNode
' Get Associated feature
Dim scheAsso As ISchematicElementAssociatedObject
scheAsso = CType(schemFromNode.SchematicElement, ISchematicElementAssociatedObject)
If scheAsso Is Nothing Then Return ""
Dim esriFeature As IFeature
esriFeature = CType(scheAsso.AssociatedObject, IFeature)
' Get list of fields
Dim esriFields As IFields
esriFields = esriFeature.Fields
Dim numField As Integer
' Find Field MaxOutLines
numField = esriFields.FindFieldByAliasName("MaxOutLines")
If (numField <= 0) Then Return "" ' Field not found
' Return value of the field
Return esriFeature.Value(numField).ToString()
End Function
Public ReadOnly Property Name() As String Implements ISchematicExpandLinksByAttributeExtended.Name
Get
Return "Use origin plant's MaxOutLines value (VBNet)"
End Get
End Property
#End Region
End Class