Skip to content

editorGlobalsOrnament

Class: Ornament

Represents an engraving (e.g. the kyub logo) or a cutout or both (might be the case with assets) You can only have one engraving and one cutout, not multiples (create multiple Ornaments if you need that). The engraving and cutout will be repeated if isRepeated is set.

Hierarchy

Ornament

ParametricHoleOrnament

Index

Constructors

Properties

Methods

Constructors

constructor

+ new Ornament(engraving: Drawable, cutout: SvgDrawable, isFunctional: boolean, isRepeating: boolean): Ornament

Defined in src/model/visualization/textures/Ornament.ts:71

Parameters:

Name Type Default
engraving Drawable null
cutout SvgDrawable null
isFunctional boolean false
isRepeating boolean false

Returns: Ornament

Properties

Private Readonly cutout

cutout: SvgDrawable

Defined in src/model/visualization/textures/Ornament.ts:60


Private cutoutPromise

cutoutPromise: Promise‹Polygon[]› | null = null

Defined in src/model/visualization/textures/Ornament.ts:69

If the ornament consists of cutout the cutouts will be loaded once this promise resolves


Private Readonly engraving

engraving: Drawable

Defined in src/model/visualization/textures/Ornament.ts:59


Private initialScaling

initialScaling: boolean = false

Defined in src/model/visualization/textures/Ornament.ts:71


Private isFunctional

isFunctional: boolean

Defined in src/model/visualization/textures/Ornament.ts:57


Private isXRepeating

isXRepeating: boolean

Defined in src/model/visualization/textures/Ornament.ts:63

Used for creating infinite patterns by repeating a seamless rectangular drawable


Private isYRepeating

isYRepeating: boolean

Defined in src/model/visualization/textures/Ornament.ts:64


Protected plate

plate: Plate | null = null

Defined in src/model/visualization/textures/Ornament.ts:55


Protected realizer

realizer: IModelElementRealizerMakerAsset | TessellationDescriptor | OrnamentDescriptor = null

Defined in src/model/visualization/textures/Ornament.ts:56


Private safeMargin

safeMargin: SafeMargin = null

Defined in src/model/visualization/textures/Ornament.ts:70


Private sizePromise

sizePromise: Promise‹void› | null = null

Defined in src/model/visualization/textures/Ornament.ts:67

If the drawable has to be analyzed to get the ornament's size, it will be set once this promise resolves

Methods

Protected _applyPropertiesToClone

_applyPropertiesToClone(clone: UvPositionable): void

Inherited from UvPositionable._applyPropertiesToClone

Defined in src/model/visualization/textures/UvPositionable.ts:240

Parameters:

Name Type
clone UvPositionable

Returns: void


Private _calculateScaledSize

_calculateScaledSize(scale: ReadonlyVector3, size: ReadonlyVector3): IDimensions2

Defined in src/model/visualization/textures/Ornament.ts:408

Parameters:

Name Type
scale ReadonlyVector3
size ReadonlyVector3

Returns: IDimensions2


Private _createNonRepeatedDrawable

_createNonRepeatedDrawable(drawable?: Drawable, type: "cutout" | "engraving"): IOffsetDrawable[]

Defined in src/model/visualization/textures/Ornament.ts:402

Parameters:

Name Type Default
drawable? Drawable -
type "cutout" | "engraving" "cutout"

Returns: IOffsetDrawable[]


Private _createRepeatedDrawables

_createRepeatedDrawables(area: AABB, drawable: Drawable, type: "cutout" | "engraving"): IOffsetDrawable[]

Defined in src/model/visualization/textures/Ornament.ts:366

Repeat the drawable so that it fills the whole area.

Parameters:

Name Type Description
area AABB plate coordinate that needs to be covered (millimetres from plate origin)
drawable Drawable the drawable to be repeated
type "cutout" | "engraving" cutout or engraving

Returns: IOffsetDrawable[]


Private _getUvAlignedAABB

_getUvAlignedAABB(plateAABB: AABB): AABB

Defined in src/model/visualization/textures/Ornament.ts:421

The plate's AABB is transformed to include itself mapped to uv coordinates (this.mapLocal). Returns a rectangle which covers the whole plate after applying this.rotation.

Parameters:

Name Type Description
plateAABB AABB -

Returns: AABB


Protected _updateToPseudoPlateUv

_updateToPseudoPlateUv(): void

Inherited from UvPositionable._updateToPseudoPlateUv

Defined in src/model/visualization/textures/UvPositionable.ts:251

Calculate a Matrix3 that transforms scaled texture uv coordinate (0,0 to 1,1) to pseudo plate uv coordinates (mm from plate origin)

Returns: void


clone

clone(): UvPositionable

Inherited from UvPositionable.clone

Defined in src/model/visualization/textures/UvPositionable.ts:217

Generates a clone with identical values

Returns: UvPositionable


coversWholePlate

coversWholePlate(): boolean

Defined in src/model/visualization/textures/Ornament.ts:136

Returns: boolean


distanceToPoint

distanceToPoint(point: ReadonlyVector3): number

Inherited from UvPositionable.distanceToPoint

Defined in src/model/visualization/textures/UvPositionable.ts:112

Uses the AABB to determine the distance to a point

Parameters:

Name Type Description
point ReadonlyVector3 test point in texture coordinates

Returns: number

the distance from the point to the aabb)


duplicateToPlate

duplicateToPlate(newPlate: any, plateSide: PlateSides): PromiseOrnament

Defined in src/model/visualization/textures/Ornament.ts:91

Clones this ornament and adds it to another plate instance, but at the same assembly position.

Parameters:

Name Type
newPlate any
plateSide PlateSides

Returns: PromiseOrnament


enableSafeMargin

enableSafeMargin(plate: any): void

Defined in src/model/visualization/textures/Ornament.ts:280

Parameters:

Name Type
plate any

Returns: void


getAABB

getAABB(): AABB

Inherited from UvPositionable.getAABB

Defined in src/model/visualization/textures/UvPositionable.ts:66

Calculates the AABB for this UVPositionable in texture coordinates (rotation, offset and scaling are already applied, for more detailed results use getOBB)

If properties have not change from the last call, the cached aabb will be returned

Returns: AABB


getChangeEventEmitter

getChangeEventEmitter(): IPublicEventEmitterInterfaceUvPositionable

Inherited from UvPositionable.getChangeEventEmitter

Defined in src/model/visualization/textures/UvPositionable.ts:56

Returns: IPublicEventEmitterInterfaceUvPositionable


getCutout

getCutout(): SvgDrawable | null

Defined in src/model/visualization/textures/Ornament.ts:155

Return the cutout of this Ornament

Returns: SvgDrawable | null


getCutoutPolygons

getCutoutPolygons(plateArea?: AABB): Polygon[]

Defined in src/model/visualization/textures/Ornament.ts:230

Cutout polygons are only used for the visualization and are generated by segmentation of the actual cutouts. They MUST NOT touch or overlap each other, as this might lead to undefined behavior in the plate pipeline.

Parameters:

Name Type
plateArea? AABB

Returns: Polygon[]

cutouts (as polygons) that lie within the rectangles specified by the min/max plate coordinates. If this.cutoutPromise is not resolved yet, this function will return an empty array. For engravings it will return an empty array.


getCutoutPolygonsOutlineLength

getCutoutPolygonsOutlineLength(): number

Defined in src/model/visualization/textures/Ornament.ts:274

Returns: number


getCutoutPromise

getCutoutPromise(): Promise‹Polygon[]›

Defined in src/model/visualization/textures/Ornament.ts:303

Returns: Promise‹Polygon[]›


getEngraving

getEngraving(): Drawable | null

Defined in src/model/visualization/textures/Ornament.ts:140

Returns: Drawable | null


getInitializedPromise

getInitializedPromise(): Promise‹any[]›

Defined in src/model/visualization/textures/Ornament.ts:295

Returns: Promise‹any[]›


getIsFunctional

getIsFunctional(): boolean

Defined in src/model/visualization/textures/Ornament.ts:187

Returns: boolean


getIsRepeating

getIsRepeating(): boolean

Defined in src/model/visualization/textures/Ornament.ts:212

Returns: boolean


getIsXRepeating

getIsXRepeating(): boolean

Defined in src/model/visualization/textures/Ornament.ts:204

Returns: boolean


getIsYRepeating

getIsYRepeating(): boolean

Defined in src/model/visualization/textures/Ornament.ts:208

Returns: boolean


getMirroredToPseudoPlateUvTransformationMatrix

getMirroredToPseudoPlateUvTransformationMatrix(): Matrix3

Inherited from UvPositionable.getMirroredToPseudoPlateUvTransformationMatrix

Defined in src/model/visualization/textures/UvPositionable.ts:210

Same as getToPseudoPlateUvTransformationMatrix, but mirror the positionable around the x axis at the beginning. Required for rendering cutouts in the shader that need to be mirrored because they are placed on the back of a plate

Returns: Matrix3


getOBB

getOBB(): OBB

Inherited from UvPositionable.getOBB

Defined in src/model/visualization/textures/UvPositionable.ts:51

Calculates the OBB for this UvPositionable in texture coordinates (rotation, offset and scaling already applied)

Returns: OBB


getOffset

getOffset(): Vector3

Inherited from UvPositionable.getOffset

Defined in src/model/visualization/textures/UvPositionable.ts:119

Returns the UvPositionable offset (= center position of the UvPositionable) in texture coordinates

Returns: Vector3


getPlate

getPlate(): Plate | null

Defined in src/model/visualization/textures/Ornament.ts:121

Get the plate the ornament currently is on, or null, if the ornament is not on any plate

Returns: Plate | null


getRealizer

getRealizer(): IModelElementRealizerMakerAsset‹› | TessellationDescriptor‹› | OrnamentDescriptor‹››

Defined in src/model/visualization/textures/Ornament.ts:148

Returns: IModelElementRealizerMakerAsset‹› | TessellationDescriptor‹› | OrnamentDescriptor‹››


getRepeatedCutouts

getRepeatedCutouts(area: AABB): IOffsetDrawable[]

Defined in src/model/visualization/textures/Ornament.ts:179

Get repeated drawables of the cutouts of this ornament. Will contain only one element if no repetition is set

Parameters:

Name Type Description
area AABB plate coordinates that needs to be covered

Returns: IOffsetDrawable[]


getRepeatedEngravings

getRepeatedEngravings(area: AABB): IOffsetDrawable[]

Defined in src/model/visualization/textures/Ornament.ts:171

Get repeated drawables of the engraving of this ornament. Will contain only one element if no repetition is set

Parameters:

Name Type Description
area AABB plate coordinates that needs to be covered

Returns: IOffsetDrawable[]


getRotation

getRotation(): number

Inherited from UvPositionable.getRotation

Defined in src/model/visualization/textures/UvPositionable.ts:155

Get the rotation

Returns: number

CW rotation in degrees around the center of the UvPositionable


getSafeMargin

getSafeMargin(): SafeMargin | null

Defined in src/model/visualization/textures/Ornament.ts:307

Returns: SafeMargin | null


getScale

getScale(): Vector3

Inherited from UvPositionable.getScale

Defined in src/model/visualization/textures/UvPositionable.ts:137

Get the scale

Returns: Vector3

the scale of the UvPositionable that is applied to its size


getScaledSize

getScaledSize(target?: Vector3): Vector3

Inherited from UvPositionable.getScaledSize

Defined in src/model/visualization/textures/UvPositionable.ts:187

Get the actual size, which is the native size with the scale vector applied

Parameters:

Name Type
target? Vector3

Returns: Vector3


getSize

getSize(): Vector3

Inherited from UvPositionable.getSize

Defined in src/model/visualization/textures/UvPositionable.ts:172

Get the native size of the UvPositionable, without scale being applied, in mm. Null-vector by default, as there usually needs to be some external knowledge to determine the native size.

Returns: Vector3


getSizePromise

getSizePromise(): Promise‹void›

Defined in src/model/visualization/textures/Ornament.ts:299

Returns: Promise‹void›


getToPseudoPlateUvTransformationMatrix

getToPseudoPlateUvTransformationMatrix(): Matrix3

Inherited from UvPositionable.getToPseudoPlateUvTransformationMatrix

Defined in src/model/visualization/textures/UvPositionable.ts:201

Return a matrix that transforms scaled texture coordinates to pseudo plate uv coordinates (the ones described by position, scale and rotation)

Returns: Matrix3


hasCutout

hasCutout(): boolean

Defined in src/model/visualization/textures/Ornament.ts:159

Returns: boolean


hasEngraving

hasEngraving(): boolean

Defined in src/model/visualization/textures/Ornament.ts:163

Returns: boolean


isClickThrough

isClickThrough(): boolean

Defined in src/model/visualization/textures/Ornament.ts:219

If this returns true, interactions on cutouts of this ornament will ignore the plate at this

Returns: boolean


isPointWithin

isPointWithin(point: Vector3): boolean

Inherited from UvPositionable.isPointWithin

Defined in src/model/visualization/textures/UvPositionable.ts:102

Uses the AABB to determine whether a point is within the UvPositionable

Parameters:

Name Type Description
point Vector3 test point in texture coordinates

Returns: boolean

Whether the point is within the ornament's AABB


mapGlobal

mapGlobal(uvCoord: ReadonlyVector3, target: Vector3): Vector3

Inherited from UvPositionable.mapGlobal

Defined in src/model/visualization/textures/UvPositionable.ts:231

Parameters:

Name Type Default
uvCoord ReadonlyVector3 -
target Vector3 new Vector3()

Returns: Vector3


mapLocal

mapLocal(uvCoord: ReadonlyVector3, target: Vector3): Vector3

Inherited from UvPositionable.mapLocal

Defined in src/model/visualization/textures/UvPositionable.ts:223

Parameters:

Name Type Default
uvCoord ReadonlyVector3 -
target Vector3 new Vector3()

Returns: Vector3


setIsFunctional

setIsFunctional(): void

Defined in src/model/visualization/textures/Ornament.ts:183

Returns: void


setIsRepeating

setIsRepeating(isRepeating: boolean): void

Defined in src/model/visualization/textures/Ornament.ts:191

Parameters:

Name Type Default
isRepeating boolean true

Returns: void


setIsXRepeating

setIsXRepeating(isXRepeating: boolean): void

Defined in src/model/visualization/textures/Ornament.ts:196

Parameters:

Name Type Default
isXRepeating boolean true

Returns: void


setIsYRepeating

setIsYRepeating(isYRepeating: boolean): void

Defined in src/model/visualization/textures/Ornament.ts:200

Parameters:

Name Type Default
isYRepeating boolean true

Returns: void


setOffset

setOffset(newOffset: Vector3, applySafeMargin: boolean): void

Overrides UvPositionable.setOffset

Defined in src/model/visualization/textures/Ornament.ts:284

Parameters:

Name Type Default
newOffset Vector3 -
applySafeMargin boolean true

Returns: void


setPlate

setPlate(newPlate: Plate): void

Defined in src/model/visualization/textures/Ornament.ts:129

Only to be called by the plate when adding the ornament

Parameters:

Name Type Description
newPlate Plate The new plate or null.

Returns: void


setRealizer

setRealizer(realizer: IModelElementRealizer‹any›): void

Defined in src/model/visualization/textures/Ornament.ts:144

Parameters:

Name Type
realizer IModelElementRealizer‹any›

Returns: void


setRotation

setRotation(newRotation: number): void

Inherited from UvPositionable.setRotation

Defined in src/model/visualization/textures/UvPositionable.ts:163

Set the rotation

Parameters:

Name Type Description
newRotation number new rotation in radians

Returns: void


setScale

setScale(newScale: ReadonlyVector3, offset: Vector3, applySafeMargin: boolean): void

Overrides UvPositionable.setScale

Defined in src/model/visualization/textures/Ornament.ts:340

Parameters:

Name Type Default
newScale ReadonlyVector3 -
offset Vector3 nullVector
applySafeMargin boolean true

Returns: void


setSize

setSize(size: Vector3): void

Inherited from UvPositionable.setSize

Defined in src/model/visualization/textures/UvPositionable.ts:179

Set the size

Parameters:

Name Type
size Vector3

Returns: void


setSizeFromCutoutOrEngraving

setSizeFromCutoutOrEngraving(maxSize?: number): void

Defined in src/model/visualization/textures/Ornament.ts:311

Parameters:

Name Type
maxSize? number

Returns: void


Static transformCutoutPolygonsFromBackToFrontSide

transformCutoutPolygonsFromBackToFrontSide(cutoutPolygons: Polygon[], ornamentOffset: Vector3): void

Defined in src/model/visualization/textures/Ornament.ts:46

Transforms cutouts from an ornament placed on the back side so that they can be applied onto the front side.

In order to correctly transform cutouts on the back side to the front side, they have to be flipped around the plate's y-axis (= mirror x in plate-local coordinates), around the ornament's center (as all ornaments positions are their center). See also Drawable.drawSync mirrorX.

Parameters:

Name Type Description
cutoutPolygons Polygon[] the polygons to transform, array will be modified
ornamentOffset Vector3 the ornament's offset, i.e. position

Returns: void