Skip to content

editorGlobalsBendRenderer

Class: BendRenderer

This class helps with rendering bends. It is embedded into the PlatePipeline and modifies the visual representation at different stages in the pipeline.

Hierarchy

  • BendRenderer

Index

Constructors

Properties

Methods

Constructors

constructor

+ new BendRenderer(plate?: Plate, fabricationConfig?: FabricationConfig): BendRenderer

Defined in src/model/visualization/Plates/BendRenderer.ts:88

Parameters:

Name Type
plate? Plate
fabricationConfig? FabricationConfig

Returns: BendRenderer

Properties

Private Readonly curveOffsetFactor

curveOffsetFactor: number = Config.get("modelLimits.curveOffsetFactor", 0.5)

Defined in src/model/visualization/Plates/BendRenderer.ts:88


Private Readonly dashLength

dashLength: number = 40

Defined in src/model/visualization/Plates/BendRenderer.ts:86


Private Readonly distanceBetweenCutLines

distanceBetweenCutLines: number = Config.get("modelLimits.distanceBetweenCutLines", 1.5)

Defined in src/model/visualization/Plates/BendRenderer.ts:84


Private elongationFactors

elongationFactors: [IElongationInformation, IElongationInformation]

Defined in src/model/visualization/Plates/BendRenderer.ts:79


Private Readonly fabricationConfig

fabricationConfig: FabricationConfig

Defined in src/model/visualization/Plates/BendRenderer.ts:82


Private Readonly gapLength

gapLength: number = 2

Defined in src/model/visualization/Plates/BendRenderer.ts:85


Private isBent

isBent: boolean

Defined in src/model/visualization/Plates/BendRenderer.ts:75


Private plate

plate: Plate

Defined in src/model/visualization/Plates/BendRenderer.ts:81


Private rasterizedOutline

rasterizedOutline: RasterizedOutline

Defined in src/model/visualization/Plates/BendRenderer.ts:76


Private sectionsJointWithCurves

sectionsJointWithCurves: OutlineSection[]

Defined in src/model/visualization/Plates/BendRenderer.ts:77


Private Readonly stretchFactor

stretchFactor: number = Config.get("modelLimits.stretchFactor", 0.02)

Defined in src/model/visualization/Plates/BendRenderer.ts:87


Private subdivisions

subdivisions: ArrayLine2[]

Defined in src/model/visualization/Plates/BendRenderer.ts:80


Private unjoinedSections

unjoinedSections: OutlineSection[]

Defined in src/model/visualization/Plates/BendRenderer.ts:78

Methods

Private _getCurveLengths

_getCurveLengths(outlineSpline: OutlineSpline): ICurveLengthInformation

Defined in src/model/visualization/Plates/BendRenderer.ts:420

Calculates the real curve lengths (used in practice) given the exact spline curve.

Parameters:

Name Type Description
outlineSpline OutlineSpline Exact spline curve (outside)

Returns: ICurveLengthInformation


Private _getElongationFactors

_getElongationFactors(plate: Plate): [IElongationInformation, IElongationInformation]

Defined in src/model/visualization/Plates/BendRenderer.ts:382

Parameters:

Name Type
plate Plate

Returns: [IElongationInformation, IElongationInformation]


Private _getInterlacedCutlines

_getInterlacedCutlines(getOffsets: function, interlace: number, solid: boolean): Line3[][]

Defined in src/model/visualization/Plates/BendRenderer.ts:331

Parameters:

getOffsets: function

Function returning distance after start / before end of subdivision at which cutline should start. If null is returned, the line will not be cut.

▸ (line: Line3, lineCutsBorder: boolean): [number, number] | null

Parameters:

Name Type
line Line3
lineCutsBorder boolean

interlace: number

Number of groups into which the cutlines should be partitioned in an interlaced manner to reduce burning.

Default value solid: boolean= false

If true, draws a single line, otherwise a dashed one.

Returns: Line3[][]


Private _getNumberOfCutLines

_getNumberOfCutLines(curvedLength: number): number

Defined in src/model/visualization/Plates/BendRenderer.ts:521

Parameters:

Name Type
curvedLength number

Returns: number


Private _getSteps

_getSteps(numberOfSteps: number, offset: number): number[]

Defined in src/model/visualization/Plates/BendRenderer.ts:506

Divides [0,1] into numberOfSteps + 2 many steps. The first step is located at offset, the last one at 1-offset. Create two extra steps. One very close to the beginning and one very close to the end. This is used to circumvent rendering errors later on. These extra steps are ignored by getCutLines.

Parameters:

Name Type Default
numberOfSteps number -
offset number 0

Returns: number[]


Private _getSubdivisions

_getSubdivisions(plate: Plate, factors: [IElongationInformation, IElongationInformation]): ArrayLine2[]

Defined in src/model/visualization/Plates/BendRenderer.ts:451

Parameters:

Name Type
plate Plate
factors [IElongationInformation, IElongationInformation]

Returns: ArrayLine2[]


Private _isCutLineCuttingPlateBorder

_isCutLineCuttingPlateBorder(index: number): boolean

Defined in src/model/visualization/Plates/BendRenderer.ts:378

Parameters:

Name Type
index number

Returns: boolean


Private _mapElongatedPositionToPointParameters

_mapElongatedPositionToPointParameters(elongatedPoint: ArrayPoint3, normalizationQuaternion: Quaternion, target: Vector3): Vector3

Defined in src/model/visualization/Plates/BendRenderer.ts:604

Parameters:

Name Type
elongatedPoint ArrayPoint3
normalizationQuaternion Quaternion
target Vector3

Returns: Vector3


Private _mapPointParametersTo3DPosition

_mapPointParametersTo3DPosition(point: Vector3, target: ArrayPoint3): ArrayPoint3

Defined in src/model/visualization/Plates/BendRenderer.ts:651

Parameters:

Name Type Default
point Vector3 -
target ArrayPoint3 [0, 0, 0]

Returns: ArrayPoint3


Private _mapPositionInQuadToUnitQuad

_mapPositionInQuadToUnitQuad(position: ReadonlyVector3, quad1: ReadonlyVector3, quad2: ReadonlyVector3, quad3: ReadonlyVector3, quad4: ReadonlyVector3, target: Vector3): Vector3

Defined in src/model/visualization/Plates/BendRenderer.ts:690

Maps positions from any quadrilateral to the unit square following the method from here https://www.particleincell.com/2012/quad-interpolation/

Parameters:

Name Type Description
position ReadonlyVector3 -
quad1 ReadonlyVector3 -
quad2 ReadonlyVector3 -
quad3 ReadonlyVector3 -
quad4 ReadonlyVector3 -
target Vector3 Vector the result will be written to. Will be returned.

Returns: Vector3


Private _subdivideLines

_subdivideLines(lines: ArrayLine2[], subdivisions: ArrayLine2[], target: ArrayLine2[]): ArrayLine2[]

Defined in src/model/visualization/Plates/BendRenderer.ts:544

Parameters:

Name Type Default
lines ArrayLine2[] -
subdivisions ArrayLine2[] -
target ArrayLine2[] []

Returns: ArrayLine2[]


Private _subdivideLinestrip

_subdivideLinestrip(linestrip: ArrayPoint2[], subdivisions: ArrayLine2[]): ArrayPoint2[]

Defined in src/model/visualization/Plates/BendRenderer.ts:525

Parameters:

Name Type
linestrip ArrayPoint2[]
subdivisions ArrayLine2[]

Returns: ArrayPoint2[]


adjustRasterizedOutline

adjustRasterizedOutline(): RasterizedOutline

Defined in src/model/visualization/Plates/BendRenderer.ts:149

Stretches this.rasterizedOutline so that it has the right dimensions for being bent afterwards.

Returns: RasterizedOutline

The elongated rasterized outline


bendSurfaceVertices

bendSurfaceVertices(vertices: PlateRenderSurfaceVertex[]): void

Defined in src/model/visualization/Plates/BendRenderer.ts:305

Takes an array of surface vertices and sets their position so that they follow the bent surface of the plate.

Parameters:

Name Type
vertices PlateRenderSurfaceVertex[]

Returns: void


getCutLines

getCutLines(polygon: Polygon | MultiPolygon, __namedParameters: object): ArrayLine2[]

Defined in src/model/visualization/Plates/BendRenderer.ts:206

Constructs the cut lines that have to be cut into the plate to make it bendable.

Parameters:

polygon: Polygon | MultiPolygon

Default value __namedParameters: object= {}

Name Type Default Description
interlace number 4 Cut every nth cutline in n passes to reduce burning
useSolidLines boolean false Do not add gaps for foamcore

Returns: ArrayLine2[]


getFingerJointConstraints

getFingerJointConstraints(): Map‹OutlineSection, number[]›

Defined in src/model/visualization/Plates/BendRenderer.ts:166

Return a Map of arrays of positions, where fingers may alternate. In-between those, there may be no finger joints.

Returns: Map‹OutlineSection, number[]›


getFlexCutlines

getFlexCutlines(useSolidLines: boolean, transformMatrix?: Matrix4, interlace: number): IFlexCutlines

Defined in src/model/visualization/Plates/BendRenderer.ts:253

Constructs the flex cut lines that have to be cut into the plate to make it bendable.

Parameters:

Name Type Default Description
useSolidLines boolean false Do not add gaps for foamcore
transformMatrix? Matrix4 - optional matrix to apply to the cutlines
interlace number 2 Cut every nth cutline in each group (inset or not) in n passes to reduce burning

Returns: IFlexCutlines


getIsBentPlate

getIsBentPlate(): boolean

Defined in src/model/visualization/Plates/BendRenderer.ts:113

Returns: boolean

true, if the supplied plate is actually bent


getSubdivisions

getSubdivisions(): ArrayLine2[]

Defined in src/model/visualization/Plates/BendRenderer.ts:141

Returns: ArrayLine2[]


setPlate

setPlate(plate: Plate): void

Defined in src/model/visualization/Plates/BendRenderer.ts:120

Sets the plate of this BendRenderer instance, recomputes all properties, that are derived from the plate.

Parameters:

Name Type
plate Plate

Returns: void


subdividePolygon

subdividePolygonT›(inputPolygon: T): T

Defined in src/model/visualization/Plates/BendRenderer.ts:286

Adds collinear points where lines in the polygon intersect with lines in subdivisions. Only looks at the outline and the holes. CutLines are not modified.

Type parameters:

T: Polygon | MultiPolygon

Parameters:

Name Type Description
inputPolygon T the polygon to modify

Returns: T

the modified polygon (the same instance as the supplied one)