Skip to content

editorGlobalsIPositionableElement

Interface: IPositionableElement

If a model element can be localized, e.g. one can say that the element has a position rotation etc, it should implement this interface.

ToDo: This could also be more conveniently done with an abstract class - so we could do run-time type checking ToDo: and implement the event logic here to easily enforce the behavior specified in comments

Hierarchy

IPositionableElement

Implemented by

Index

Methods

Methods

destroy

destroy(): void

Inherited from IModelElement.destroy

Defined in src/model/data/Concepts/IModelElement.ts:64

This method should be called right before the model element's subgraph is removed from the assembly. In it, the ModelElement should destroy all anchors and deregister from any events to prevent memory leaks.

Returns: void


Optional disable

disable(realizer1: any): void

Inherited from IModelElement.disable

Defined in src/model/data/Concepts/IModelElement.ts:70

Do not realize and undo realization. Used to disable realization persistently (eg a parametric hole disables other ornaments).

Parameters:

Name Type
realizer1 any

Returns: void


Optional enable

enable(): void

Inherited from IModelElement.enable

Defined in src/model/data/Concepts/IModelElement.ts:75

Enable realization again and emit a change event.

Returns: void


getAssembly

getAssembly(): Assembly

Inherited from IModelElement.getAssembly

Defined in src/model/data/Concepts/IModelElement.ts:47

Get the assembly this concept belongs to

Returns: Assembly


getChangeEventEmitter

getChangeEventEmitter(): IPublicEventEmitterInterfaceIModelElementEvent

Inherited from IModelElement.getChangeEventEmitter

Defined in src/model/data/Concepts/IModelElement.ts:42

Should be emitted when the model element changes, so that the realization can be updated. As invalidity should not cause destructive actions, the event should not be emitted if the model element became invalid.

Returns: IPublicEventEmitterInterfaceIModelElementEvent


getElementsThisDependsOn

getElementsThisDependsOn(): IModelElement[]

Inherited from IModelElement.getElementsThisDependsOn

Defined in src/model/data/Concepts/IModelElement.ts:35

A model element may depend on other model elements, i.e. if a model element A links to another ModelElement B with an anchor (and B being the anchor's target), A depends on B.

Such dependencies should make sense semantically, e.g. an Ornament depends on a Mesh via an anchor that points to a specific place on the mesh. They are used to determine the order in which model elements are realized.

ToDo: for the sake of consistency, one could refactor this to getModelElementDependencyDefiners, as with ToDo: IPositionableElement.getTransformsDefiner()

Returns: IModelElement[]


getIsValid

getIsValid(): boolean

Inherited from IModelElement.getIsValid

Defined in src/model/data/Concepts/IModelElement.ts:58

Returns: boolean

whether the model element currently is valid or not. As with IAnchor.getIsValid(), this should be lazily evaluated and no destructive action should be automatically performed if a ModelElement is invalid.


getParent

getParent(): ITransformable | null

Inherited from ITransformable.getParent

Defined in src/util/Transforms.ts:27

The parent of the coordinate system (where global points to). The graph connecting all transforms has to be a tree.

Returns: ITransformable | null

parent in next higher space (global) or null if at root space


getTransforms

getTransforms(): IReadOnlyTransforms

Inherited from ITransformable.getTransforms

Defined in src/util/Transforms.ts:20

Returns: IReadOnlyTransforms

the transform from next higher space (global) to local space


getTransformsChangeEventEmitter

getTransformsChangeEventEmitter(): IPublicEventEmitterInterfaceITransformsChangeEvent

Inherited from IPositionable.getTransformsChangeEventEmitter

Defined in src/model/data/Concepts/IPositionable.ts:31

If the IPositionable changes it transforms because the transforms defining anchor changed them, it must emit this event. Other anchors pointing to this element or external listeners may subscribe to this event.

see TransformsChangeEvent to check what fields have to be provided

The elements's getChangeEventEmitter() event must not be fired if only the transforms changed.

Returns: IPublicEventEmitterInterfaceITransformsChangeEvent


getTransformsDefiner

getTransformsDefiner(): IPositionableElementTransformsDefiner

Inherited from IPositionable.getTransformsDefiner

Defined in src/model/data/Concepts/IPositionable.ts:18

The IPositionable must always be able to specify one anchor that determines its transforms.

Changes in the transforms defined by this IPositionableElementTransformsDefiner must be propagated via the IPositionableElement.getTransformsChangeEventEmitter() event.

WARNING: If you want an anchor / other element to depend on this element's transforms, never directly listen to events emitted by its transformsDefiner but instead listen to getTransformsChangeEventEmitter of the model element itself, as it may replace its transformsDefiner at any time. Use the @see PositionableElementAnchor as a basic implementation.

Returns: IPositionableElementTransformsDefiner


Optional isEnabled

isEnabled(): boolean

Inherited from IModelElement.isEnabled

Defined in src/model/data/Concepts/IModelElement.ts:80

Whether the realization is enabled.

Returns: boolean


setAssembly

setAssembly(assembly: Assembly): any

Inherited from IModelElement.setAssembly

Defined in src/model/data/Concepts/IModelElement.ts:52

Change the assembly this element belongs to. This should only be called by assemblies themselves.

Parameters:

Name Type
assembly Assembly

Returns: any


setTransformsDefiner

setTransformsDefiner(transformsDefiner: IPositionableElementTransformsDefiner): this

Inherited from IPositionable.setTransformsDefiner

Defined in src/model/data/Concepts/IPositionable.ts:20

Parameters:

Name Type
transformsDefiner IPositionableElementTransformsDefiner

Returns: this