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:
- Apply on the ISchematicRule interface now needs ISchematicInMemoryDiagram as a parameter.
- SelectReduction on the ISchematicNodeReductionExtended interface now needs ISchematicInMemoryFeatureNode, IEnumSchematicInMemoryFeature, and ISchematicInMemoryFeatureLink as parameters.
- SelectElementsToCollapse on the ISchematicCollapseRelatedElementsExtended interface now needs ISchematicInMemoryFeatureNode and two IEnumSchematicInMemoryFeature as parameters.
- Evaluate on the ISchematicExpandLinksByAttributeExtended interface now needs ISchematicInMemoryFeature as a parameter.
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:
- Schematic dataset
- Schematic diagrams
- AfterDrawLayer
- AfterGenerateDiagram
- AfterRefreshDiagram
- AfterUpdateDiagram
- BeforeRefreshDiagram
- AfterLoadDiagram.
- Schematic layers when they are edited
- Schematic features when they are edited
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 |