public ESRI.ArcGIS.Schematic.IEnumSchematicInMemoryFeature SelectElementsToCollapse(ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureNode node, ESRI.ArcGIS.Schematic.IEnumSchematicInMemoryFeature relatedFeatures) { // get feature ESRI.ArcGIS.Geodatabase.IFeature esriFeature; esriFeature = node as ESRI.ArcGIS.Geodatabase.IFeature; if (esriFeature == null) { return(null); } // get feature class ESRI.ArcGIS.Geodatabase.IFeatureClass esriFeatureClass; esriFeatureClass = esriFeature.Class as ESRI.ArcGIS.Geodatabase.IFeatureClass; // if not the right feature class do nothing if (esriFeatureClass.AliasName != "plants") { return(null); } bool okToCollapse = true; relatedFeatures.Reset(); // Test if you want to collapse related element //ESRI.ArcGIS.Schematic.ISchematicElement schemElement = relatedElements.Next(); //while ((schemElement != null) && okToCollapse) //{ // okToCollapse = CanCollapseElement(schemElement); // schemElement = relatedElements.Next(); //} if (!okToCollapse) { return(null); // if nothing to collapse return nothing } else if (relatedFeatures.Count == 0) { EnumCollapsedElts enumCollapse = new EnumCollapsedElts(); // create a list of feature to collapse // get incident links ESRI.ArcGIS.Schematic.IEnumSchematicInMemoryFeatureLink enumLinks; enumLinks = node.GetIncidentLinks(ESRI.ArcGIS.Schematic.esriSchematicEndPointType.esriSchematicOriginOrExtremityNode); if (enumLinks == null) { return(enumCollapse); } if (enumLinks.Count > 1) { enumLinks.Reset(); ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureLink schemLink; // for each link schemLink = enumLinks.Next(); if (schemLink != null) { enumCollapse.Add((ESRI.ArcGIS.Schematic.ISchematicInMemoryFeature)node); // Add node to collapse while (schemLink != null) { enumCollapse.Add((ESRI.ArcGIS.Schematic.ISchematicInMemoryFeature)schemLink); // Add link to collapse schemLink = enumLinks.Next(); } } } return(enumCollapse); } else { return(relatedFeatures); } }
public ESRI.ArcGIS.Schematic.IEnumSchematicInMemoryFeature SelectElementsToCollapse(ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureNode node, ESRI.ArcGIS.Schematic.IEnumSchematicInMemoryFeature relatedFeatures) { // get feature ESRI.ArcGIS.Geodatabase.IFeature esriFeature; esriFeature = node as ESRI.ArcGIS.Geodatabase.IFeature; if (esriFeature == null) return null; // get feature class ESRI.ArcGIS.Geodatabase.IFeatureClass esriFeatureClass; esriFeatureClass = esriFeature.Class as ESRI.ArcGIS.Geodatabase.IFeatureClass; // if not the right feature class do nothing if (esriFeatureClass.AliasName != "plants") return null; bool okToCollapse = true; relatedFeatures.Reset(); // Test if you want to collapse related element //ESRI.ArcGIS.Schematic.ISchematicElement schemElement = relatedElements.Next(); //while ((schemElement != null) && okToCollapse) //{ // okToCollapse = CanCollapseElement(schemElement); // schemElement = relatedElements.Next(); //} if (!okToCollapse) return null; // if nothing to collapse return nothing else if (relatedFeatures.Count == 0) { EnumCollapsedElts enumCollapse = new EnumCollapsedElts(); // create a list of feature to collapse // get incident links ESRI.ArcGIS.Schematic.IEnumSchematicInMemoryFeatureLink enumLinks; enumLinks = node.GetIncidentLinks(ESRI.ArcGIS.Schematic.esriSchematicEndPointType.esriSchematicOriginOrExtremityNode); if (enumLinks == null) return enumCollapse; if (enumLinks.Count > 1) { enumLinks.Reset(); ESRI.ArcGIS.Schematic.ISchematicInMemoryFeatureLink schemLink; // for each link schemLink = enumLinks.Next(); if (schemLink != null) { enumCollapse.Add((ESRI.ArcGIS.Schematic.ISchematicInMemoryFeature)node); // Add node to collapse while (schemLink != null) { enumCollapse.Add((ESRI.ArcGIS.Schematic.ISchematicInMemoryFeature)schemLink); // Add link to collapse schemLink = enumLinks.Next(); } } } return enumCollapse; } else { return relatedFeatures; } }