Migrating schematic custom code to ArcGIS 10


Summary
ArcGIS 10 introduces major changes in the structure of the libraries that define the Schematic classes and interfaces. This reorganization impacts you as you migrate your code from 9.x to 10. This topic outlines the changes made to the Schematic application programming interface (API).


Schematic API

In prior versions of the Schematic API, NGO engine handled the schematic graphical core and formed the foundation for the schematic objects in memory, while SchematicDB engine formed the foundation for the schematic objects in the schematic database. When developing schematic custom code, the main difficulty was retrieving NGO objects from SchematicDB objects, and vice-versa.
This release is based on a new architecture where the NGO graphical core no longer exists. This reorganization simplifies things and takes advantage of ArcGIS standard features.

Database objects

A schematic diagram (SchematicDiagram) now contains a set of schematic features that allow users to take advantage of core ArcGIS symbology and labeling. Each schematic feature is a specific feature (SchematicNode, SchematicLink, SchematicNodeOnLink, or SchematicSubLink) related to a schematic element class (SchematicElementClass) in the schematic database (SchematicDataset).
A schematic diagram displays in a schematic layer (SchematicLayer), a composite layer composed of feature layers, for which each feature layer is related to a schematic element class in the schematic database.

In-memory objects

When a schematic layer is edited, the related schematic diagram is loaded in memory (SchematicInMemoryDiagram). An in-memory schematic diagram contains a set of in-memory schematic features (SchematicInMemoryFeatureNode, SchematicInMemoryFeatureLink, SchematicInMemoryFeatureNodeOnLink, or SchematicInMemoryFeatureSubLink). Each in-memory schematic feature (SchematicInMemoryFeature) is related to a schematic in-memory feature class (SchematicInMemoryFeatureClass). When a schematic layer is edited, its feature layers are associated with the in-memory schematic feature objects.
Those SchematicInMemoryFeature objects are impacted when editing a schematic diagram, applying a schematic layout algorithm, or executing a schematic rule. When the edits are saved, the changes are automatically reported on the related schematic features in the schematic element class in the schematic database.
At ArcGIS 10, when developing custom code based on the Schematic API, you'll work mostly with the SchematicInMemoryFeature objects, so any change impacting the in-memory objects are automatically reported on the related objects in the schematic database.

Elements

Schematic elements are now stored in feature classes as follows:
  • Nodes and nodes on link are stored as features with a Point geometry type.
  • Links and sublinks are stored as features with a Polyline geometry type.
  • Drawings that were used to implement containers around schematic elements no longer exist. Containers are now stored as features with a Polygon or Polyline geometry type.

Symbology and labeling

Because schematic elements are now displayed as features, symbology and labeling of schematic feature layers are managed in the same way as standard features.

NGO library removal

In prior versions, NGO engine was the graphical core. It handled the set of primitive objects for loading schematic diagrams in memory, displaying schematic diagrams, managing symbology, labeling and layout, and editing schematic diagrams.
In the current version, NGO engine has been removed from Schematics. Consequently, INg interfaces and Ng coclasses no longer exist. There are now equivalent interfaces such as those shown in the following table:
Previous version
Current version
INgObject
INgElement
INgNode
INgLink
INgNodeOnLink
INgSublink
ISchematicInMemoryFeatureReferenceLink
INgDiagramType
INgElementType
INgDataSource
INgProject

Editing schematic diagrams

If a schematic diagram is being edited, the diagram is loaded in memory (ISchematicInMemoryDiagram).

Implementing schematic layout algorithms

The followings changes were made to the ISchematicAlgorithm interface:
  • Execute method—Now needs ISchematicLayer and ITrackCancel as parameters.
  • Enabled property (read only)—Was previously the IsEnabled property.
  • Overridable property (read and write)—New property that allows you to authorize the editing of the algorithm property values.
  • PropertySet property (read and write)—New property used to manage a property set for the parameters and values related to a schematic layout algorithm. Schematic layout parameters and values were previously managed through the ISchematicAlgorithmParameters interface; this interface no longer exists.
  • SchematicDiagramClassName property (read and write)—New property used to retrieve the schematic diagram class for which there are particular default values specified for the schematic layout algorithm.
  • UseRootNode and UseEndNode properties (read only)—New properties that indicate whether the schematic layout algorithm works with root and end nodes.
In addition, the SchematicAlgorithms property from the ISchematicDiagramClass interface returns the list of schematic layout algorithms available for any schematic diagram in the particular schematic diagram class.
For more information about customizing a schematic layout algorithm implementation, see Implementing a schematic layout algorithm and its layout property page.

Implementing schematic rules

In previous versions, schematic rules worked on the schematic elements stored in the schematic database. With this release, schematic rules work in memory during the diagram generation and update processes.
This change impacts the following methods:
For more information about customizing a schematic rule implementation, see Implementing a schematic rule and its property page.
For more information about implementing custom criteria that are intended for use with predefined schematic rules, see Implementing extended criteria for some predefined schematic rules.

Managing schematic events

The INgProjectEvents interface no longer exists at ArcGIS 10. Schematic events are now managed from the ISchematicDatasetEvents interface. This interface allows you to get events that occur on the following:
For information about customizing the BeforeRemoveFeature predefined schematic event, see Customizing schematic feature removal events.
For information about implementing schematic containers, see Implementing schematic containers around schematic features. This sample also shows a use case for the AfterLoadDiagram event.

Miscellaneous

The ISchematicTarget interface is now in the SchematicControls library.






Development licensing Deployment licensing
ArcGIS for Desktop Standard: Schematics ArcGIS for Desktop Standard: Schematics
ArcGIS for Desktop Advanced: Schematics ArcGIS for Desktop Advanced: Schematics