UNPKG

sheetfold

Version:

a library for metal sheet construction

190 lines (186 loc) 5.79 kB
import { tContour, Contour, Transform2d, Transform3d, Segment1, Figure, tFigures, tVolume } from 'geometrix'; declare enum tJDir { eA = 0, eB = 1 } declare enum tJSide { eABRight = 0, eABLeft = 1 } interface tJunction { jName: string; jDir: tJDir; jSide: tJSide; jPosition: number; } /** * class `ContourJ` * */ declare class ContourJ extends Contour { /** @internal */ pJuncs: tJunction[]; lastPosition: number; facetIdx: number; ctrIdx: number; used: number; startJunction(jName: string, aNb: tJDir, abSide: tJSide): this; findIdx(jName: string): number; cloneJ(iCtr: Contour): ContourJ; generateRevertOrientation(): ContourJ; translate(ix: number, iy: number): ContourJ; translatePolar(ia: number, il: number): ContourJ; rotate(ix: number, iy: number, ia: number): ContourJ; setIdx(iFacetIdx: number, iCtrIdx: number): void; compareIdx(iFacetIdx: number, iCtrIdx: number): boolean; incrementUsed(): void; normOrientation(iOuterInner: boolean): ContourJ; } type tContourJ = tContour | ContourJ; /** * class `Facet` * */ declare class Facet { /** @internal */ attached: boolean; ax: number; ay: number; aa: number; juncIdx: number; outerInner: tContourJ[]; constructor(iOuterInner: tContourJ[]); place(tm2: Transform2d): Facet; getContourPure(): tContour[]; getContourJ(iFacetIdx: number): ContourJ[]; getContourAll(): tContour[]; } /** * Intanciate a ContourJ object * @internal * * @param ix - x-coordiante of the starting point * @param iy - y-coordiante of the starting point * @param icolor - option color for displaying that contour * @returns the ContourJ object */ declare function contourJ(ix: number, iy: number, icolor?: string): ContourJ; /** * Intanciate a Facet object * @internal * * @param iOuterInner - a list of CountourJ/Contour objects * @returns the Facet object */ declare function facet(iOuterInner: tContourJ[]): Facet; declare function contourJ2contour(iContoutJ: tContourJ): tContour; interface tJunc { angle: number; radius: number; neutral: number; mark: number; } type tJuncs = Record<string, tJunc>; interface tJunc2 { jName: string; angle: number; radius: number; neutral: number; mark: number; associated: number; a1FacetIdx: number; a1ContIdx: number; a1SegIdx: number; a1Dir: tJDir; a1Side: tJSide; a1x: number; a1y: number; a1Teta: number; a2FacetIdx: number; a2ContIdx: number; a2SegIdx: number; a2Dir: tJDir; a2Side: tJSide; a2x: number; a2y: number; a2Teta: number; jLength: number; jx: number; jy: number; } interface tJunc3 { jName: string; segPosition: number; jDir: tJDir; } type tHalfProfile = (string | number)[]; interface tOneProfile { x1: number; y1: number; a1: number; l1: number; ante: tHalfProfile; post: tHalfProfile; } /** * class `SheetFold` * */ declare class SheetFold { /** @internal */ pThickness: number; pPartName: string; pSFMark: string; pFacets: Facet[]; pJuncs: tJunc2[]; pProfiles: tOneProfile[]; constructor(iFacets: Facet[], iJuncs: tJuncs, iProfiles: tOneProfile[], iThickness: number, iPartName: string, iSFMark: string); /** @internal */ printJuncs(): void; /** @internal */ oneTetaLength(faIdx: number, coIdx: number, segIdx: number): [number, number, number, number, string]; /** @internal */ computeLength(): void; checkFacet(): void; /** @internal */ getJuncIdx(jName: string): number; /** @internal */ fromJunctionToAttach(iJunc: tJunc2): [number, number, number]; positionF(iTm: Transform3d, iFacetIdx: number): Transform3d; positionJ(iTm: Transform3d, jIdx: number): Transform3d; positionJ2d(iFacetIdx: number): Transform2d; positionF2d(iFacetIdx: number): Transform2d; findCtrJ(iCtrsJ: ContourJ[], iFacetIdx: number, iCtrIdx: number): ContourJ; generateJunc3List(iCtrJ: ContourJ): tJunc3[]; calcJuncList(iCtrJ: ContourJ, jName: string): tJunc3[]; incrSegIdx(idx: number, delta: number, maxIdx: number): number; addSeg(iCtr: Contour, iSeg: Segment1): void; makePartialCtr(iCtrJ: ContourJ, iJuncList: tJunc3[], first: boolean, iCtrsJ: ContourJ[]): Contour; generateNewContours(iCtrsJ: ContourJ[]): tContour[]; generateOneMarker(iJunc: tJunc2): tContour; generateMarkers(): tContour[]; makePatternFigure(iCheck: boolean): Figure; /** @internal */ nameFacePattern(): string; /** @internal */ nameFace(idx: number): string; /** @internal */ nameFaceJ(idx: number): string; /** @internal */ nameFaceProfiles(): string; /** @internal */ makeFacetFig(iFacetIdx: number, iFacet: Facet): Figure; /** @internal */ drawJuncPositive(rE: number, rI: number, angle: number): [tContour, number, number]; /** @internal */ drawJuncNegative(rE: number, rI: number, angle: number): [tContour, number, number]; /** @internal */ makeJuncCtr(jName: string, jAngle: number, jRadius: number, jNeutral: number): [tContour, number, number]; /** @internal */ makeProfileFig(): Figure; makeFigures(iCheck?: boolean): tFigures; makeVolume(): tVolume; } declare function sheetFold(iFacets: Facet[], iJuncs: tJuncs, iProfiles: tOneProfile[], iThickness: number, iPartName: string, iSFMark?: string): SheetFold; declare function facet2figure(iFacet: Facet): Figure; export { ContourJ, Facet, SheetFold, contourJ, contourJ2contour, facet, facet2figure, sheetFold, type tContourJ, type tHalfProfile, tJDir, tJSide, type tJunc, type tJunc2, type tJunc3, type tJuncs, type tJunction, type tOneProfile };