IModelTransformer Class @beta

Base class used to transform a source iModel into a different target iModel.

@see iModel Transformation and Data Exchange, IModelExporter, IModelImporter

Extends

Extended by

Methods

Name Description
constructor(args: IModelTransformArgs, options?: IModelTransformOptions): IModelTransformer Construct a new IModelTransformer  
addCustomChanges(_sourceDbChanges: ChangedInstanceIds): Promise<void> Protected This will be called when transformer is called with argsForProcessChanges to process changes.  
calculateEcefTransform(): Transform | undefined Calculate the transform between two ECEF locations  
calculateTransformFromHelmertTransforms(): Transform | undefined    
combineElements(sourceElementIds: Id64Array, targetElementId: string): void Combine an array of source elements into a single target element.  
completePartiallyCommittedAspects(): Promise<void> Protected    
completePartiallyCommittedElements(): Promise<void> Protected    
dispose(): void Dispose any native resources associated with this IModelTransformer.  
getIsForwardSynchronization(): Promise<boolean> Get whether this is a forward synchronization.  
getIsReverseSynchronization(): Promise<boolean> Get whether this is a reverse synchronization.  
getProvenanceDb(): Promise<IModelDb> Get the IModelDb where provenance (ExternalSourceAspects) is stored.  
getSynchronizationVersion(): Promise<ChangesetIndexAndId> Protected the changeset in the scoping element's source version found for this transformation  
hasElementChanged(sourceElement: Element): boolean Protected Returns true if a change within sourceElement is detected.  
initElementProvenance(sourceElementId: string, targetElementId: string): Promise<ExternalSourceAspectProps> Create an ExternalSourceAspectProps in a standard way for an Element in an iModel --> iModel transformation.  
initialize(): Promise<void> Initialize prerequisites of processing, you must initialize with an InitOptions if you  
initScopeProvenance(): Promise<void> Protected Make sure there are no conflicting other scope-type external source aspects on the target scope element,  
onDeleteElement(sourceElementId: string): Promise<void> Override of IModelExportHandler.onDeleteElement that is called when IModelExporter detects that an Element has been deleted from the source iModel.  
onDeleteModel(sourceModelId: string): Promise<void> Override of IModelExportHandler.onDeleteModel that is called when IModelExporter detects that a Model has been deleted from the source iModel.  
onDeleteRelationship(sourceRelInstanceId: string): Promise<void> Override of IModelExportHandler.onDeleteRelationship that is called when IModelExporter detects that a Relationship has been deleted from the source iModel.  
onExportCodeSpec(sourceCodeSpec: CodeSpec): Promise<void> Override of IModelExportHandler.onExportCodeSpec that imports a CodeSpec into the target iModel when it is exported from the source iModel.  
onExportElement(sourceElement: Element): Promise<void> Override of IModelExportHandler.onExportElement that imports an element into the target iModel when it is exported from the source iModel.  
onExportElementMultiAspects(sourceAspects: ElementMultiAspect[]): Promise<void> Override of IModelExportHandler.onExportElementMultiAspects that imports ElementMultiAspects into the target iModel when they are exported from the source iModel.  
onExportElementUniqueAspect(sourceAspect: ElementUniqueAspect): Promise<void> Override of IModelExportHandler.onExportElementUniqueAspect that imports an ElementUniqueAspect into the target iModel when it is exported from the source iModel.  
onExportFont(font: FontProps, _isUpdate: boolean): Promise<void> Override of IModelExportHandler.onExportFont that imports a font into the target iModel when it is exported from the source iModel.  
onExportModel(sourceModel: Model): Promise<void> Override of IModelExportHandler.onExportModel that is called when a Model should be exported from the source iModel.  
onExportRelationship(sourceRelationship: Relationship): Promise<void> Override of IModelExportHandler.onExportRelationship that imports a relationship into the target iModel when it is exported from the source iModel.  
onExportSchema(schema: Schema): Promise<void | ExportSchemaResult> Override of IModelExportHandler.onExportSchema that serializes a schema to disk for processSchemas to import into  
onTransformElement(sourceElement: Element): Promise<ElementProps> Transform the specified sourceElement into ElementProps for the target iModel.  
onTransformElementAspect(sourceElementAspect: ElementAspect): Promise<ElementAspectProps> Protected Transform the specified sourceElementAspect into ElementAspectProps for the target iModel.  
onTransformModel(sourceModel: Model, targetModeledElementId: string): ModelProps Transform the specified sourceModel into ModelProps for the target iModel.  
onTransformRelationship(sourceRelationship: Relationship): RelationshipProps Protected Transform the specified sourceRelationship into RelationshipProps for the target iModel.  
process(): Promise<void> The behavior of process is influenced by argsForProcessChanges being defined or not defined during construction passed of the IModelTransformer.  
processChildElements(sourceElementId: string): Promise<void> Import child elements into the target IModelDb  
processCodeSpec(codeSpecName: string): Promise<void> Cause a single CodeSpec to be exported from the source iModel and imported into the target iModel.  
processCodeSpecs(): Promise<void> Cause all CodeSpecs to be exported from the source iModel and imported into the target iModel.  
processElement(sourceElementId: string): Promise<void> Cause the specified Element and its child Elements (if applicable) to be exported from the source iModel and imported into the target iModel.  
processFonts(): Promise<void> Cause all fonts to be exported from the source iModel and imported into the target iModel.  
processModel(sourceModeledElementId: string): Promise<void> Cause the model container, contents, and sub-models to be exported from the source iModel and imported into the target iModel.  
processModelContents(sourceModelId: string, targetModelId: string, elementClassFullName: string = Element.classFullName): Promise<void> Cause the model contents to be exported from the source iModel and imported into the target iModel.  
processRelationships(baseRelClassFullName: string): Promise<void> Imports all relationships that subclass from the specified base class.  
processSchemas(): Promise<void> Cause all schemas to be exported from the source iModel and imported into the target iModel.  
processSubject(sourceSubjectId: string, targetSubjectId: string): Promise<void> Recursively import all Elements and sub-Models that descend from the specified Subject  
shouldDetectDeletes(): Promise<boolean> Protected Returns true if brute force delete detections should be run.  
shouldExportCodeSpec(_sourceCodeSpec: CodeSpec): Promise<boolean> Override of IModelExportHandler.shouldExportCodeSpec that is called to determine if a CodeSpec should be exported from the source iModel.  
shouldExportElement(_sourceElement: Element): Promise<boolean> Override of IModelExportHandler.shouldExportElement that is called to determine if an element should be exported from the source iModel.  
shouldExportElementAspect(aspect: ElementAspect): Promise<boolean> If true is returned, then the ElementAspect will be exported.  
shouldExportRelationship(_sourceRelationship: Relationship): Promise<boolean> Override of IModelExportHandler.shouldExportRelationship that is called to determine if a Relationship should be exported.  
shouldExportSchema(schemaKey: SchemaKey): Promise<boolean> Override of IModelExportHandler.shouldExportSchema that is called to determine if a schema should be exported  
tryGetProvenanceScopeAspect(): Promise<ExternalSourceAspect | undefined> Protected    
updateSynchronizationVersion(__namedParameters: { initializeReverseSyncVersion?: boolean } = {}): Promise<void> Updates the synchronization version on the scope ESA.  
convertHelmertToTransform(helmert: Helmert2DWithZOffset): Transform Static    

Inherited methods

Name Inherited from Description
onProgress(): Promise<void> Inherited IModelExportHandler This method is called when IModelExporter has made incremental progress based on the progressInterval setting.
onSkipElement(_elementId: string): Promise<void> Inherited IModelExportHandler Called when element is skipped instead of exported.

Properties

Name Type Description
_elementsWithExplicitlyTrackedProvenance Protected Set<string> a set of elements for which source provenance will be explicitly tracked by ExternalSourceAspects  
_partiallyCommittedAspectIds Protected Id64Set    
_partiallyCommittedElementIds Protected Id64Set    
_provenanceManager Protected    
_schemaExportDir Protected string The directory where schemas will be exported, a random temporary directory  
_sourceEditTxn Protected Readonly EditTxn | undefined The optional EditTxn used for write operations on the source iModel during reverse synchronization.  
_targetEditTxn Protected Readonly EditTxn The EditTxn used for write operations on the target iModel.  
context Readonly IModelCloneContext The IModelTransformContext for this IModelTransformer.  
exporter Readonly IModelExporter The IModelExporter that will export from the source iModel.  
importer Readonly IModelImporter The IModelImporter that will import into the target iModel.  
provenanceElementAspectClasses Accessor Static ReadOnly Entity[] The element aspect classes that are considered to define provenance in the iModel  
provenanceElementClasses Accessor Static ReadOnly Entity[] The element classes that are considered to define provenance in the iModel  
sourceDb Readonly IModelDb The normally read-only source iModel.  
targetDb Readonly IModelDb The read/write target iModel.  
targetScopeElementId Accessor ReadOnly string The Id of the Element in the target iModel that represents the source repository as a whole and scopes its ExternalSourceAspect instances.  

Defined in

Last Updated: 03 August, 2026