sheetfold
Version:
a library for metal sheet construction
190 lines (186 loc) • 5.79 kB
TypeScript
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 };