Skip to content

editorGlobalsPlateGraph

Class: PlateGraph

a simple representation of plates and their joints, used to determine their assembly order

see AssemblyInstructionHints._getPlateIds

Hierarchy

  • PlateGraph

Index

Properties

Methods

Properties

Private Readonly cachedPlateScores

cachedPlateScores: Map‹Plate‹›, number› = new Map()

Defined in src/util/PlateGraph.ts:64


Private Readonly joints

joints: Map‹Plate‹›, Map‹Plate‹›, IDirectionSpace›› = new Map>()

Defined in src/util/PlateGraph.ts:58


Private Readonly orderedSections

orderedSections: Map‹Plate‹›, [Plate‹›, OutlineSection‹›][]› = new Map<Plate, Array<[Plate, OutlineSection]>>()

Defined in src/util/PlateGraph.ts:60


Private Readonly originalJoints

originalJoints: Map‹Plate‹›, Map‹Plate‹›, IDirectionSpace›› = new Map>()

Defined in src/util/PlateGraph.ts:59


Private plateGroupMap

plateGroupMap: Map‹Plate, PlateGroup

Defined in src/util/PlateGraph.ts:65


Private Readonly plates

plates: Plate[] = []

Defined in src/util/PlateGraph.ts:62


Static Private PlateScoreConnectedJointCount

PlateScoreConnectedJointCount: number = 10

Defined in src/util/PlateGraph.ts:42


Static Private PlateScoreConnectedJointLength

PlateScoreConnectedJointLength: number = 0.7

Defined in src/util/PlateGraph.ts:44


Static Private PlateScoreFinishPlateGroup

PlateScoreFinishPlateGroup: number = -700

Defined in src/util/PlateGraph.ts:51


Static Private PlateScoreHeight

PlateScoreHeight: number = 0.3

Defined in src/util/PlateGraph.ts:36


Static Private PlateScoreImpossible

PlateScoreImpossible: number = 1000000

Defined in src/util/PlateGraph.ts:54


Static Private PlateScoreRemovedJointCount

PlateScoreRemovedJointCount: number = 10

Defined in src/util/PlateGraph.ts:40


Static Private PlateScoreTilt

PlateScoreTilt: number = 250

Defined in src/util/PlateGraph.ts:46


Static Private PlateScoreTiltJointLength

PlateScoreTiltJointLength: number = 0.5

Defined in src/util/PlateGraph.ts:49


Static Private PlateScoreWobblyAdjust

PlateScoreWobblyAdjust: number = 30

Defined in src/util/PlateGraph.ts:38

Methods

Private _canBeRemoved

_canBeRemoved(plate: Plate): boolean

Defined in src/util/PlateGraph.ts:586

Parameters:

Name Type
plate Plate

Returns: boolean


Private _canBeTilted

_canBeTilted(plate: Plate): Promise‹boolean›

Defined in src/util/PlateGraph.ts:598

Parameters:

Name Type
plate Plate

Returns: Promise‹boolean›


Private _canPlatesBeRemoved

_canPlatesBeRemoved(joints: Iterable‹IDirectionSpace› | ArrayLike‹IDirectionSpace›): boolean

Defined in src/util/PlateGraph.ts:590

Parameters:

Name Type
joints Iterable‹IDirectionSpace› | ArrayLike‹IDirectionSpace

Returns: boolean


Private _canPlatesBeTilted

_canPlatesBeTilted(neighborSides: Map‹Plate, IDirectionSpace›, jointTuples: Array‹[Plate, OutlineSection]›): Promise‹boolean›

Defined in src/util/PlateGraph.ts:607

Parameters:

Name Type
neighborSides Map‹Plate, IDirectionSpace
jointTuples Array‹[Plate, OutlineSection]›

Returns: Promise‹boolean›


Private _cornerNeighborsOf

_cornerNeighborsOf(p: Plate): SetPlate

Defined in src/util/PlateGraph.ts:574

Parameters:

Name Type
p Plate

Returns: SetPlate


Private _getCornersOfPlate

_getCornersOfPlate(p: Plate): Plate[][]

Defined in src/util/PlateGraph.ts:554

Parameters:

Name Type
p Plate

Returns: Plate[][]


Private _removePlate

_removePlate(plate: Plate): void

Defined in src/util/PlateGraph.ts:628

Parameters:

Name Type
plate Plate

Returns: void


Private _scorePlate

_scorePlate(p: Plate, heightFactor: number): Promise‹number›

Defined in src/util/PlateGraph.ts:497

Parameters:

Name Type Default
p Plate -
heightFactor number 1

Returns: Promise‹number›


Private _scorePlateAssemblability

_scorePlateAssemblability(p: Plate): Promise‹number›

Defined in src/util/PlateGraph.ts:488

given a plate, how does it affect the whole assembly order score to remove it now used to compare assembly orders against each other

Parameters:

Name Type
p Plate

Returns: Promise‹number›


Private _scorePlateRemoval

_scorePlateRemoval(p: Plate, weights?: Map‹Plate, number›): Promise‹number›

Defined in src/util/PlateGraph.ts:470

given a plate, how bad would it be to remove it now used to compare them against each other

Parameters:

Name Type
p Plate
weights? Map‹Plate, number›

Returns: Promise‹number›


Private _wobblyAdjust

_wobblyAdjust(p: Plate): number

Defined in src/util/PlateGraph.ts:536

how much would removing this plate now adjust the "wobbliness" of the partially-assembled object? wobbliness is defined by the corners of the object: completely empty or filled corners are stable, while partially filled corners (e.g. only half the plates are there) are wobbly.

Parameters:

Name Type
p Plate

Returns: number


extractBestRemovablePlate

extractBestRemovablePlate(selection: Plate[], weights?: Map‹Plate, number›): PromisePlateInstruction

Defined in src/util/PlateGraph.ts:208

Retrieves and removes a removable plate from this graph. Only call this if isEmpty returns false

Parameters:

Name Type Default
selection Plate[] this.plates
weights? Map‹Plate, number› -

Returns: PromisePlateInstruction


findSubassemblies

findSubassemblies(): Plate[][]

Defined in src/util/PlateGraph.ts:333

Returns: Plate[][]


getGroupJoints

getGroupJoints(plates: Plate[], ignoreJoints: Map‹Plate, SetPlate››): Map‹Plate, IDirectionSpace

Defined in src/util/PlateGraph.ts:158

Parameters:

Name Type Default
plates Plate[] -
ignoreJoints Map‹Plate, SetPlate›› new Map()

Returns: Map‹Plate, IDirectionSpace


getGroupRemovability

getGroupRemovability(plates: Plate[], ignoreJoints: Map‹Plate, SetPlate››): PromiseRemovalStatus

Defined in src/util/PlateGraph.ts:130

Parameters:

Name Type Default
plates Plate[] -
ignoreJoints Map‹Plate, SetPlate›› new Map()

Returns: PromiseRemovalStatus


getJoints

getJoints(): Map‹Plate, Map‹Plate, IDirectionSpace››

Defined in src/util/PlateGraph.ts:67

Returns: Map‹Plate, Map‹Plate, IDirectionSpace››


getPlateRemovability

getPlateRemovability(plate: Plate): PromiseRemovalStatus

Defined in src/util/PlateGraph.ts:125

Parameters:

Name Type
plate Plate

Returns: PromiseRemovalStatus


getPlates

getPlates(): Plate[]

Defined in src/util/PlateGraph.ts:121

Returns: Plate[]


isConnected

isConnected(): boolean

Defined in src/util/PlateGraph.ts:237

Returns: boolean


isEmpty

isEmpty(): boolean

Defined in src/util/PlateGraph.ts:117

Returns: boolean


isGroupOutside

isGroupOutside(plates: Plate[]): boolean

Defined in src/util/PlateGraph.ts:189

Parameters:

Name Type
plates Plate[]

Returns: boolean

Whether a group of plates is only connected to the outside of other plates


loadPlatesAndGroups

loadPlatesAndGroups(plates: Plate[], plateGroupMap: Map‹Plate, PlateGroup›): void

Defined in src/util/PlateGraph.ts:71

Parameters:

Name Type
plates Plate[]
plateGroupMap Map‹Plate, PlateGroup

Returns: void


removeSubassembly

removeSubassembly(subassemblyPlates: Plate[]): Plate[]

Defined in src/util/PlateGraph.ts:447

Removes a subassembly from the graph and returns the plates that this subassembly attaches to

Parameters:

Name Type Description
subassemblyPlates Plate[] -

Returns: Plate[]


splitToSubAssemblies

splitToSubAssemblies(): object

Defined in src/util/PlateGraph.ts:264

When the graph is currently not connected, this method splits the graph into the connected subgraphs. These subgraphs represent parts that fall apart when the object gets disassembled and are thus subassemblies that are represented by a SubassemblyInstruction. The method then performs a post-processing step in which all previous plates test to which subgraphs they are connected. If they are only connected to one subgraph, they are part of its subassembly. The method returns the different subgraphs and the number of subgraphs found.

Returns: object

  • numSubassemblies: number

  • plateIDs: Map‹Plate, number›