更新代码
This commit is contained in:
5
types/Add-on/BoardCutting/AutoCuttingReactor.d.ts
vendored
Normal file
5
types/Add-on/BoardCutting/AutoCuttingReactor.d.ts
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/**
|
||||
* 对绘制出来的板件自动切割其周围的板件
|
||||
*/
|
||||
export declare function AutoCutting(isRelevance: boolean): Promise<void>;
|
||||
//# sourceMappingURL=AutoCuttingReactor.d.ts.map
|
1
types/Add-on/BoardCutting/AutoCuttingReactor.d.ts.map
Normal file
1
types/Add-on/BoardCutting/AutoCuttingReactor.d.ts.map
Normal 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"}
|
65
types/Add-on/BoardCutting/BoardCuttingForSweep.d.ts
vendored
Normal file
65
types/Add-on/BoardCutting/BoardCuttingForSweep.d.ts
vendored
Normal 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
|
1
types/Add-on/BoardCutting/BoardCuttingForSweep.d.ts.map
Normal file
1
types/Add-on/BoardCutting/BoardCuttingForSweep.d.ts.map
Normal 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"}
|
19
types/Add-on/BoardCutting/CuttingByFace.d.ts
vendored
Normal file
19
types/Add-on/BoardCutting/CuttingByFace.d.ts
vendored
Normal 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
|
1
types/Add-on/BoardCutting/CuttingByFace.d.ts.map
Normal file
1
types/Add-on/BoardCutting/CuttingByFace.d.ts.map
Normal 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"}
|
9
types/Add-on/BoardCutting/CuttingPropsModal.d.ts
vendored
Normal file
9
types/Add-on/BoardCutting/CuttingPropsModal.d.ts
vendored
Normal 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
|
1
types/Add-on/BoardCutting/CuttingPropsModal.d.ts.map
Normal file
1
types/Add-on/BoardCutting/CuttingPropsModal.d.ts.map
Normal 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"}
|
14
types/Add-on/BoardCutting/CuttingUtils2.d.ts
vendored
Normal file
14
types/Add-on/BoardCutting/CuttingUtils2.d.ts
vendored
Normal 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
|
1
types/Add-on/BoardCutting/CuttingUtils2.d.ts.map
Normal file
1
types/Add-on/BoardCutting/CuttingUtils2.d.ts.map
Normal 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"}
|
5
types/Add-on/BoardCutting/DeleteRelevance.d.ts
vendored
Normal file
5
types/Add-on/BoardCutting/DeleteRelevance.d.ts
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
import { Command } from "../../Editor/CommandMachine";
|
||||
export declare class DeleteRelevance implements Command {
|
||||
exec(): Promise<void>;
|
||||
}
|
||||
//# sourceMappingURL=DeleteRelevance.d.ts.map
|
1
types/Add-on/BoardCutting/DeleteRelevance.d.ts.map
Normal file
1
types/Add-on/BoardCutting/DeleteRelevance.d.ts.map
Normal 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"}
|
8
types/Add-on/BoardCutting/HardwareCuttingReactor.d.ts
vendored
Normal file
8
types/Add-on/BoardCutting/HardwareCuttingReactor.d.ts
vendored
Normal 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
|
@@ -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"}
|
25
types/Add-on/BoardCutting/LinearCutting.d.ts
vendored
Normal file
25
types/Add-on/BoardCutting/LinearCutting.d.ts
vendored
Normal 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
|
1
types/Add-on/BoardCutting/LinearCutting.d.ts.map
Normal file
1
types/Add-on/BoardCutting/LinearCutting.d.ts.map
Normal 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"}
|
137
types/Add-on/BoardCutting/LinearCuttingForSweep.d.ts
vendored
Normal file
137
types/Add-on/BoardCutting/LinearCuttingForSweep.d.ts
vendored
Normal 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
|
1
types/Add-on/BoardCutting/LinearCuttingForSweep.d.ts.map
Normal file
1
types/Add-on/BoardCutting/LinearCuttingForSweep.d.ts.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"LinearCuttingForSweep.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/BoardCutting/LinearCuttingForSweep.ts"],"names":[],"mappings":"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"}
|
5
types/Add-on/BoardCutting/NonAssociativeCutting.d.ts
vendored
Normal file
5
types/Add-on/BoardCutting/NonAssociativeCutting.d.ts
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
import { Command } from "../../Editor/CommandMachine";
|
||||
export declare class NonAssociativeCutting implements Command {
|
||||
exec(): Promise<void>;
|
||||
}
|
||||
//# sourceMappingURL=NonAssociativeCutting.d.ts.map
|
1
types/Add-on/BoardCutting/NonAssociativeCutting.d.ts.map
Normal file
1
types/Add-on/BoardCutting/NonAssociativeCutting.d.ts.map
Normal 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"}
|
5
types/Add-on/BoardCutting/ReferenceCutting.d.ts
vendored
Normal file
5
types/Add-on/BoardCutting/ReferenceCutting.d.ts
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
import { Command } from "../../Editor/CommandMachine";
|
||||
export declare class ReferenceCutting implements Command {
|
||||
exec(): Promise<void>;
|
||||
}
|
||||
//# sourceMappingURL=ReferenceCutting.d.ts.map
|
1
types/Add-on/BoardCutting/ReferenceCutting.d.ts.map
Normal file
1
types/Add-on/BoardCutting/ReferenceCutting.d.ts.map
Normal 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"}
|
37
types/Add-on/BoardCutting/ReferenceCuttingModal.d.ts
vendored
Normal file
37
types/Add-on/BoardCutting/ReferenceCuttingModal.d.ts
vendored
Normal 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
|
1
types/Add-on/BoardCutting/ReferenceCuttingModal.d.ts.map
Normal file
1
types/Add-on/BoardCutting/ReferenceCuttingModal.d.ts.map
Normal 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"}
|
13
types/Add-on/BoardCutting/SplitBoardSideModel.d.ts
vendored
Normal file
13
types/Add-on/BoardCutting/SplitBoardSideModel.d.ts
vendored
Normal 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
|
1
types/Add-on/BoardCutting/SplitBoardSideModel.d.ts.map
Normal file
1
types/Add-on/BoardCutting/SplitBoardSideModel.d.ts.map
Normal 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"}
|
5
types/Add-on/BoardCutting/SplitPolyline.d.ts
vendored
5
types/Add-on/BoardCutting/SplitPolyline.d.ts
vendored
@@ -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
|
@@ -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"}
|
Reference in New Issue
Block a user