更新代码

This commit is contained in:
ChenX
2024-08-14 17:08:00 +08:00
parent cad3b381d9
commit 53ec26cde9
2066 changed files with 33913 additions and 5836 deletions

View File

@@ -0,0 +1,5 @@
/**
* 对绘制出来的板件自动切割其周围的板件
*/
export declare function AutoCutting(isRelevance: boolean): Promise<void>;
//# sourceMappingURL=AutoCuttingReactor.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"AutoCuttingReactor.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/AutoCuttingReactor.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,OAAO,iBAkBrD"}

View File

@@ -0,0 +1,65 @@
import { Board } from "../../DatabaseServices/Entity/Board";
import { ExtrudeSolid } from "../../DatabaseServices/Entity/Extrude";
/**
* @Finish 目前已实现
* 1. 圆弧板垂直切普通板
* 2. 普通板穿透切圆弧板
* @TODO 当前问题记录
* 1. 普通板切圆弧板,凹槽的长度与厚度如何确定?(目前写死厚度切穿, 长度切断)
* 2. 圆弧板切普通版, 若二者不垂直,存在夹角,怎么办?(目前不考虑)
* 3. 圆弧板切圆弧板,如何处理?(目前不考虑)
* 4. 平行情况,如何处理?(目前不考虑)
* @Log 2024/06/20
* 处理问题1采用CSG的包围盒与路径求交方式来确定凹槽的长度
* @Log 2024/06/21
* 发现问题并处理: 若圆弧板为异形板,垂直切普通板,生成的凹槽还是整段路径
* 发现问题并处理: 由于精度问题,导致切割后在切割,依旧有交集,故这里加了体积过滤
* @Log 2024/06/25
* 优化: 优化体积过滤改用CSG真实的体积计算
* 重构: 重构了代码结构修复了普通板切圆弧板的bug(采用点集投影,而非之前的包围盒)
* @Log 2024/06/26
* 处理问题2采用对CSG上下面进行投影然后转为面域做并集从而生成凹槽
* @Log 2024/06/27
* 优化问题2面域的布尔运算很慢容易造成肉眼可见的卡顿(约1-2秒)现在改用project
* @Log 2024/07/02
* 发现问题并处理: project存在精度问题导致凹槽的长度不准确故做了修正(若快切断则为切断)
* @Log 2024/07/10
* 优化: 当普通版斜切圆弧板时,采用逆映射生成凹槽轮廓,而非原有的矩形轮廓
* @Log 2024/07/11
* 优化: 改用C2R生成凹槽的轮廓线而非之前的project因为它不准
* 处理问题3通过逆映射实现圆弧板切圆弧板
*/
/** 针对圆弧板的板件切割*/
export declare class BoardCuttingForSweep {
private meat;
private knife;
/** 生成圆弧板的切割器*/
constructor(meat: Board, knife: Board);
/** 生成凹槽 */
ConverToLocalGroove(): ExtrudeSolid[];
/** 圆弧板切普通板 */
private ArcCutBoard;
/** 普通板切圆弧板 */
private BoardCutArc;
/** 圆弧板切圆弧板 */
private ArcCutArc;
/** 更新凹槽厚度 */
private UpdateGrooveThickness;
/** 计算点集到多段线的距离 */
private GetDistToPl;
/** 对CSG进行逆映射(根据放样路径) */
private InverseCSG;
/** 对CSG进行投影返回点集 */
private ProjectCSGToPts;
/** 对CSG进行投影返回多段线 */
private CSGToPolyline;
/** 获取CSG在路径上的param范围 */
private GetParamRange;
/** 获取pA-pB之间的曲线 */
private Get_Pl_InAtoB;
/** 修正轮廓线(避免造型的布尔运算错误) */
private AdjustPolyline;
/** 调整点到线的最近点 */
private AdjustPtClosePl;
}
//# sourceMappingURL=BoardCuttingForSweep.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"BoardCuttingForSweep.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/BoardCuttingForSweep.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAOrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,gBAAgB;AAChB,qBAAa,oBAAoB;IAGjB,OAAO,CAAC,IAAI;IAAS,OAAO,CAAC,KAAK;IAD9C,eAAe;gBACK,IAAI,EAAE,KAAK,EAAU,KAAK,EAAE,KAAK;IAMrD,WAAW;IACX,mBAAmB;IAmBnB,cAAc;IACd,OAAO,CAAC,WAAW;IA2GnB,cAAc;IACd,OAAO,CAAC,WAAW;IA4GnB,cAAc;IACd,OAAO,CAAC,SAAS;IAkDjB,aAAa;IACb,OAAO,CAAC,qBAAqB;IAiD7B,kBAAkB;IAClB,OAAO,CAAC,WAAW;IAWnB,wBAAwB;IACxB,OAAO,CAAC,UAAU;IAuBlB,oBAAoB;IACpB,OAAO,CAAC,eAAe;IAgCvB,qBAAqB;IACrB,OAAO,CAAC,aAAa;IAmBrB,wBAAwB;IACxB,OAAO,CAAC,aAAa;IAsBrB,mBAAmB;IACnB,OAAO,CAAC,aAAa;IAUrB,yBAAyB;IACzB,OAAO,CAAC,cAAc;IAiBtB,gBAAgB;IAChB,OAAO,CAAC,eAAe;CAO1B"}

View File

@@ -0,0 +1,19 @@
import { Vector3 } from "three";
import { Entity } from "../../DatabaseServices/Entity/Entity";
import { ExtrudeContour, ExtrudeSolid } from "../../DatabaseServices/Entity/Extrude";
import { Command } from "../../Editor/CommandMachine";
export declare class CuttingByFace implements Command {
exec(): Promise<void>;
protected GetExtrudeContours(): Promise<{
useCurvesMap?: Map<ExtrudeContour, Entity[]>;
}>;
setHeight(en: ExtrudeSolid, dist: number, oldPosition: Vector3): void;
private GetKnifeRadius;
private GetMeatsBoards;
}
export declare class CuttingByRectFace extends CuttingByFace {
protected GetExtrudeContours(): Promise<{
useCurvesMap?: Map<ExtrudeContour, Entity[]>;
}>;
}
//# sourceMappingURL=CuttingByFace.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CuttingByFace.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/CuttingByFace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAE,MAAM,OAAO,CAAC;AAIzC,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAErF,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAOtD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;cAkGM,kBAAkB;;;IAKlC,SAAS,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO;YAShD,cAAc;YAiBd,cAAc;CAgC/B;AAED,qBAAa,iBAAkB,SAAQ,aAAa;cAEhC,kBAAkB,IAAI,OAAO,CAAC;QAAE,YAAY,CAAC,EAAE,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;KAAE,CAAC;CAgBnG"}

View File

@@ -0,0 +1,9 @@
import { ReactElement } from 'react';
import { IGrooveOption } from "../../UI/Store/OptionInterface/IOptionInterface";
interface Props {
option: IGrooveOption;
}
declare function CuttingPropsModal({ option }: Props): ReactElement;
declare const _default: typeof CuttingPropsModal;
export default _default;
//# sourceMappingURL=CuttingPropsModal.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CuttingPropsModal.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/CuttingPropsModal.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAI5C,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAEhF,UAAU,KAAK;IAEX,MAAM,EAAE,aAAa,CAAC;CACzB;AAOD,iBAAS,iBAAiB,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,GAAG,YAAY,CA8C1D;;AAED,wBAA2C"}

View File

@@ -0,0 +1,14 @@
import { Board } from "../../DatabaseServices/Entity/Board";
import { HardwareCompositeEntity } from "../../DatabaseServices/Hardware/HardwareCompositeEntity";
export declare function CuttingBoardByBoard(meats: Board[], knifs: Board[], isRelevance?: boolean): void;
/**
* 五金切板
*
* @export
* @param {Board[]} meats 被切割的板
* @param {HardwareCompositeEntity[]} hardwares 五金当做刀
* @param {boolean} [relevanceCut=true] 默认是关联切割
* @return {*} {Promise<void>}
*/
export declare function CuttingBoardByHardware(meats: Board[], hardwares: HardwareCompositeEntity[], relevanceCut?: boolean): Promise<void>;
//# sourceMappingURL=CuttingUtils2.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CuttingUtils2.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/CuttingUtils2.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAGlG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,UAAO,QA0DrF;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE,EAAE,YAAY,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAqFrI"}

View File

@@ -0,0 +1,5 @@
import { Command } from "../../Editor/CommandMachine";
export declare class DeleteRelevance implements Command {
exec(): Promise<void>;
}
//# sourceMappingURL=DeleteRelevance.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"DeleteRelevance.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/DeleteRelevance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAKtD,qBAAa,eAAgB,YAAW,OAAO;IAErC,IAAI;CA8Cb"}

View File

@@ -0,0 +1,8 @@
import { Board } from "../../DatabaseServices/Entity/Board";
import { HardwareCompositeEntity } from "../../DatabaseServices/Hardware/HardwareCompositeEntity";
export declare class HardwareCuttingReactor {
EnableHardware: boolean;
constructor();
StartReactor(hardwares: HardwareCompositeEntity[], ents: Set<Board>): Promise<void>;
}
//# sourceMappingURL=HardwareCuttingReactor.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"HardwareCuttingReactor.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/HardwareCuttingReactor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AAGlG,qBAAa,sBAAsB;IAG/B,cAAc,UAAQ;;IA+BhB,YAAY,CAAC,SAAS,EAAE,uBAAuB,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC;CAU5E"}

View File

@@ -0,0 +1,25 @@
import { Vector3 } from "three";
import { Board } from "../../DatabaseServices/Entity/Board";
import { ExtrudeContourCurve } from "../../DatabaseServices/Entity/Extrude";
import { Polyline } from "../../DatabaseServices/Entity/Polyline";
import { Command } from "../../Editor/CommandMachine";
export declare class LinearCutting implements Command {
exec(): Promise<void>;
/** 针对圆弧板的分裂处理 */
private ProcessForSweepInSplitBoard;
/** 根据轮廓曲线分裂板件
* @param br 被切割的板件
* @param cus 切割后的轮廓曲线
* @param SweepPaths 切割后的放样路径(针对圆弧板)
* @param contourBiases 用于修正轮廓位置的偏移值(针对圆弧板)
*/
protected SplitBoard(br: Board, cus: ExtrudeContourCurve[], SweepPaths: Polyline[], contourBiases: {
x: number;
y: number;
}[]): void;
protected GetCuttingPoints(): Promise<Vector3[] | undefined>;
}
export declare class RectLinearCutting extends LinearCutting {
protected GetCuttingPoints(): Promise<Vector3[] | undefined>;
}
//# sourceMappingURL=LinearCutting.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"LinearCutting.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/LinearCutting.ts"],"names":[],"mappings":"AACA,OAAO,EAA8B,OAAO,EAAE,MAAM,OAAO,CAAC;AAK5D,OAAO,EAAE,KAAK,EAAe,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAoB,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAEpF,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAUtD,qBAAa,aAAc,YAAW,OAAO;IAEnC,IAAI;IA2JV,iBAAiB;IACjB,OAAO,CAAC,2BAA2B;IAmDnC;;;;;OAKG;IACH,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,mBAAmB,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,aAAa,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;KAAE,EAAE;cA8E9G,gBAAgB,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC;CAwBrE;AAED,qBAAa,iBAAkB,SAAQ,aAAa;cAEhC,gBAAgB,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC;CAerE"}

View File

@@ -0,0 +1,137 @@
import { Matrix4, Vector2, Vector3 } from "three";
import { Board } from "../../DatabaseServices/Entity/Board";
import { Line } from "../../DatabaseServices/Entity/Line";
import { Polyline } from "../../DatabaseServices/Entity/Polyline";
/** 针对圆弧板的线性切割 */
export declare class LinearCuttingForSweep {
br: Board;
splitPl: Polyline;
/** 点集生成二维刀 */
static CreateSplitPl(pts: Vector3[]): Polyline;
/** 生成圆弧板的切割器*/
constructor(br: Board, splitPl: Polyline);
/**
* 进行切割
* @param {Polyline[]} clipPls 用于切割的刀
* @returns {[Polyline[], Polyline[], {x:number; y:number}[]]} [切割后轮廓, 切割后路径, 切割后轮廓的偏移值]
* @第一步 判断当前切割的视图类型
* @第二步 根据视图类型判断切割的是路径还是面
* @第三步 把被切割对象(路径与板包围盒)平移到对应视图的平面
* @第四步 旋转被切割对象到XOY平面
* @第五步 在XOY平面下进行切割
*/
Split(ucs: Matrix4, clipPls?: Polyline[]): [Polyline[], Polyline[], {
x: number;
y: number;
}[]];
/**
* 切割面
* @param {Polyline} sweepPathInWCS 放样路径
* @param {Line[]} brBoxLines 板包围盒
* @param {Polyline} pathBoxPl 路径包围盒
* @第一步 计算刀与板包围盒的交点,以及在盒内的顶点,记住采样点
* @第二步 记录采样点在刀上的位置,并移动到路径所在的平面
* @第三步 根据采样点生成垂直于XOY平面的直线
* @第四步 计算这些直线与路径的交点
* @第五步 将这些交点映射到展开后的路径上
* @第六步 根据记录的位置排序这些点,并生成新的刀
*/
SplitInPlane(sweepPathInWCS: Polyline, brBoxLines: Line[], pathBoxPl: Polyline): [Polyline[], Polyline[], {
x: number;
y: number;
}[]];
/** 判断视图类型 */
private GetViewStr;
/** 判断切割的是路径还是面 */
private IsPathOrPlane;
/** 获取调整角度(用于处理放样角度带来的影响) */
private GetAdjustAngle;
/** 统一板包围盒与路径包围盒一致 */
private UnifyBrBoxAndPathBox;
/** 平移路径到对应视图平面 */
private MovePathToView;
/** 平移板包围盒到对应视图平面 */
private MoveBrBoxToView;
/** 旋转到俯视图下(即XOY平面) */
private RotateToXOY;
/** 修正放样角度带来的影响(比如求不到交点) */
private AdjustForSweepAngle;
/** 对路径进行细化 */
private Tessellate;
/** 规范超出的部分 */
private AdjustOverBox;
/** 获取板件坐标系下的放样路径 */
private GetSweepPathInOCS;
/** 获取板件坐标系下的放样路径并与板件的边对齐 */
private GetSweepPathInOCSWithBr;
/** 求得的板包围盒的交点与盒内的顶点 */
private GetPtsInbrBox;
/** 切割路径 */
SplitInPath(sweepPathInWCS: Polyline): [Polyline[], Polyline[], {
x: number;
y: number;
}[]];
/** 获取原始位置与切割位置的变换信息 */
private GetPositionData;
/** 旋转平移到切割位置 */
private ToSplitPosition;
/** 平移旋转到原始位置 */
private ReSplitPosition;
/** 用刀去切割板(包括轮廓与路径) */
private SplitBrByKnifes;
/**
* @todo 这个是旧方案,先临时用一用,后面再重构
* 针对圆弧板进行切割
* @param br 被切割的板
* @param clipPls 用于切割的线
* @问 圆弧板的切割与普通板有何区别?
* @答 切割位置应变长(因为板弯曲了,而板轮廓没有),且放样路径也应被切割
* @着手点 [1]修正板轮廓的切割位置 [2]获取正确的放样路径集
* @修正位置 通过param进行逆映射从而得到正确的切割位置
* @获取路径 首先要明确一件事,路径需要改变,是因为切割后的板的基点(aabb中X最小的点)可能发生变化
* 所以,我们需要根据新的基点生成新的路径,新基点沿路径方向与旧基点的差值(恒正)作为生成新路径的切割线(垂直X轴)
* 若切割线与路径平行,则新旧基点一致,无需修改
*/
private SplitBySweep;
/** 获得新的刀(多段线) */
private GetSplitPls;
/** 获取被切割后的放样路径集 */
private GetSweepPaths;
}
/** 视图类型 */
export declare enum ViewType {
Normal = "\u6B63\u89C6\u56FE",
Front = "\u524D\u89C6\u56FE",
Left = "\u5DE6\u89C6\u56FE",
Right = "\u53F3\u89C6\u56FE",
Down = "\u4FEF\u89C6\u56FE",
Unknown = "\u672A\u77E5\u89C6\u56FE"
}
/** 视图管理器 */
export declare class ViewManager {
/** 获取视图对应的矩阵 */
static GetViewMatrix(viewType: ViewType): Matrix4;
/** 判断矩阵位于哪个视图 */
static MatrixIsView(m: Matrix4): ViewType.Front | ViewType.Left | ViewType.Right | ViewType.Down | ViewType.Unknown;
}
/** 线段管理器 */
export declare class CurveManager {
/** X轴的平行线 */
static CreateXLine: (p: Vector3) => Line;
/** Y轴的平行线 */
static CreateYLine: (p: Vector3) => Line;
/** Z轴的平行线 */
static CreateZLine: (p: Vector3) => Line;
/** 通过点集生成多段线 */
static CreatePolyline: (ps: Vector2[]) => Polyline;
static CreateExpandPl(pl: Polyline): Polyline;
/** 绘制矩阵所表示的坐标系 */
static CreateAxis(m: Matrix4): Line[];
/** 点集转线段簇 */
static PtsToLines(pts: Vector3[]): Line[];
/** 线段簇转多段线 */
static LinesToPl(lines: Line[]): Polyline;
/** 获取pA-pB之间的曲线 */
static Get_Pl_InPtAtoPtB(pl: Polyline, pA: Vector3, pB: Vector3): Polyline;
}
//# sourceMappingURL=LinearCuttingForSweep.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"LinearCuttingForSweep.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/LinearCuttingForSweep.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,5 @@
import { Command } from "../../Editor/CommandMachine";
export declare class NonAssociativeCutting implements Command {
exec(): Promise<void>;
}
//# sourceMappingURL=NonAssociativeCutting.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"NonAssociativeCutting.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/NonAssociativeCutting.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAetD,qBAAa,qBAAsB,YAAW,OAAO;IAE3C,IAAI;CA4Hb"}

View File

@@ -0,0 +1,5 @@
import { Command } from "../../Editor/CommandMachine";
export declare class ReferenceCutting implements Command {
exec(): Promise<void>;
}
//# sourceMappingURL=ReferenceCutting.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"ReferenceCutting.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/ReferenceCutting.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAQtD,qBAAa,gBAAiB,YAAW,OAAO;IAEtC,IAAI;CA4Lb"}

View File

@@ -0,0 +1,37 @@
import * as React from 'react';
import { Singleton } from "../../Common/Singleton";
import { BoardType } from "../../DatabaseServices/Entity/BoardInterface";
import { IBaseOption } from "../../UI/Store/OptionInterface/IOptionInterface";
export declare enum CuttingOffset {
Front = "front",
Middle = "middle",
Back = "back"
}
export interface ReferenceCuttingOptioins extends IBaseOption {
boardType: BoardType;
offset: number;
halfThickness: number;
CuttingPosSelected: CuttingOffset;
}
export declare class ReferenceCuttingStore extends Singleton {
protected m_UiOption: any;
m_Option: ReferenceCuttingOptioins;
get UIOption(): import("../../UI/Store/OptionInterface/IOptionInterface").IUiOption<ReferenceCuttingOptioins>;
Cancel(): void;
OnOk(): void;
_Return(state: number): void;
HasInvailValue(): string;
}
export declare class ReferenceCuttingModal extends React.Component<{
store: ReferenceCuttingStore;
}, {}> {
private uiOption;
private handleChangeOffsetDir;
private getOffsetKeyWord;
private event;
registerEvent(): void;
UNSAFE_componentWillMount(): void;
componentWillUnmount(): void;
render(): JSX.Element;
}
//# sourceMappingURL=ReferenceCuttingModal.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"ReferenceCuttingModal.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/ReferenceCuttingModal.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,8CAA8C,CAAC;AAIzE,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAE9E,oBAAY,aAAa;IAErB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,IAAI,SAAS;CAChB;AAMD,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAEzD,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,aAAa,CAAC;CACrC;AACD,qBAAa,qBAAsB,SAAQ,SAAS;IAEhD,SAAS,CAAC,UAAU,MAAC;IACT,QAAQ,EAAE,wBAAwB,CAK5C;IACF,IAAI,QAAQ,kGAGX;IACD,MAAM;IAIN,IAAI;IAIJ,OAAO,CAAC,KAAK,EAAE,MAAM;IAKrB,cAAc;CAIjB;AAED,qBAEa,qBAAsB,SAAQ,KAAK,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,qBAAqB,CAAC;CAAE,EAAE,EAAE,CAAC;IAC7F,OAAO,CAAC,QAAQ,CAAC;IACjB,OAAO,CAAC,qBAAqB,CAc3B;IACF,OAAO,CAAC,gBAAgB,CAWtB;IACF,OAAO,CAAC,KAAK,CAAW;IACxB,aAAa;IAqBb,yBAAyB;IAKzB,oBAAoB;IAKpB,MAAM;CAmET"}

View File

@@ -0,0 +1,13 @@
import { Board } from "../../DatabaseServices/Entity/Board";
export declare class SplitBoardSideModelUtil {
private OrgBoardOCS;
private CacheSideModel;
private OldSealCurves;
constructor(br: Board);
Init(br: Board, isSpecialShape?: boolean): void;
CheckSideModel(): boolean;
SetBoardSideModel(br: Board): void;
SpiltSideModelOfBrContour(br: Board): void;
SpiltSideModelOfBrThickness(br: Board, thickness: number): void;
}
//# sourceMappingURL=SplitBoardSideModel.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"SplitBoardSideModel.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/SplitBoardSideModel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAa5D,qBAAa,uBAAuB;IAGhC,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,cAAc,CAA0C;IAChE,OAAO,CAAC,aAAa,CAAe;gBAExB,EAAE,EAAE,KAAK;IAKrB,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,cAAc,UAAQ;IA2BtC,cAAc,IAAI,OAAO;IASzB,iBAAiB,CAAC,EAAE,EAAE,KAAK;IAW3B,yBAAyB,CAAC,EAAE,EAAE,KAAK;IAmGnC,2BAA2B,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM;CAmD3D"}

View File

@@ -3,7 +3,8 @@ import { Polyline } from "../../DatabaseServices/Entity/Polyline";
* 线性切割多线段
* @param {Polyline} meatPl 被切割的曲线
* @param {Polyline[]} knifePls 刀曲线
* @return
* @param {boolean} [isSweep = false] 是否为圆弧板(被切割的曲线是否为圆弧板的轮廓)
* @return {Polyline[]} 切割后的多线段
*/
export declare function SplitPolyline(meatPl: Polyline, knifePls: Polyline[]): Polyline[];
export declare function SplitPolyline(meatPl: Polyline, knifePls: Polyline[], isSweep?: boolean): Polyline[];
//# sourceMappingURL=SplitPolyline.d.ts.map

View File

@@ -1 +1 @@
{"version":3,"file":"SplitPolyline.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/SplitPolyline.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAKlE;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAyDhF"}
{"version":3,"file":"SplitPolyline.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/SplitPolyline.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAKlE;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,UAAQ,GAAG,QAAQ,EAAE,CA+DjG"}