Compare commits

...

6 Commits

Author SHA1 Message Date
ChenX
ed08696189 刀路冗余优化 2024-01-11 15:41:55 +08:00
ChenX
79f0351ae8 更新刀路冗余api 2023-12-28 15:21:10 +08:00
ChenX
01cac616f5 修复:并集错误 2023-12-20 17:24:49 +08:00
ChenX
6ef1e8d8b0 修复 动态规划导致的结果 2023-12-18 14:09:36 +08:00
ChenX
596ab9dba3 变更api 2023-12-18 11:24:07 +08:00
ChenX
2b6cb2fd72 功能:矩形槽走刀支持刀路冗余 2023-12-13 11:56:37 +08:00
58 changed files with 626 additions and 194 deletions

View File

@@ -144,6 +144,7 @@ var RenderType;
RenderType[RenderType["PlaceFace"] = 8] = "PlaceFace";
RenderType[RenderType["BigHoleFace"] = 81] = "BigHoleFace";
RenderType[RenderType["CustomNumber"] = 9] = "CustomNumber";
RenderType[RenderType["ModelGroove"] = 10] = "ModelGroove";
/******************************************** 在视口时的渲染模式 */
/**
* 线框模式
@@ -225,7 +226,8 @@ class IHostApplicationServices {
checkSealType: "1",
sealMaxValue: 10,
sealValues: '',
hardwareExpressionFormattingAccuracy: 2, //复合实体表达式值格式化精度
hardwareExpressionFormattingAccuracy: 2,
partialSplitValueCanTakesEffect: false,
};
this.viewSize = {
minViewHeight: 1e-3,
@@ -3159,7 +3161,7 @@ class ColorMaterial {
this._BasicDoubleSideMaterialMap.set(color, mtl);
return mtl;
}
static GetConceptualMaterial(color, side = three.FrontSide, enableTransparent = false, freeze = false) {
static GetConceptualMaterial(color, side = three.FrontSide, enableTransparent = false, freeze = false, opacity) {
if (freeze)
color = 257;
let key = `${color},${side},${enableTransparent ? 1 : 0}`;
@@ -3172,7 +3174,14 @@ class ColorMaterial {
get: () => mtl.uniforms.opacity.value !== 1
});
Object.defineProperty(mtl.uniforms.opacity, "value", {
get: () => freeze ? 0.5 : HostApplicationServices.ConceptualOpacity
get: () => {
let conceptualOpacity = HostApplicationServices.ConceptualOpacity;
if (freeze)
conceptualOpacity = 0.5;
else if (opacity)
conceptualOpacity = opacity;
return conceptualOpacity;
}
});
}
this._ConceptualMaterial.set(key, mtl);
@@ -6371,7 +6380,7 @@ class Contour {
hasEqualCus = fastEqualCurve(cu, pl, COMBINE_FUZZ);
if (hasEqualCus) {
//方向相同
if (equalv3(cu.GetFirstDeriv(cu.MidParam).normalize(), pl.GetFirstDeriv(pl.MidParam).normalize(), 1e-3)
if (equalv3(cu.GetFirstDeriv(cu.MidParam).normalize(), pl.GetFirstDeriv(pl.MidParam).normalize(), 1e-2)
=== isEqualNormal) {
unionList.push(pl);
intersectionList.push(pl);
@@ -6727,16 +6736,16 @@ class OffsetPolyline {
* @param _OffsetDist
* @param [_ToolPath=false] 走刀模式(在这个模式下,我们会进行圆弧过渡(或者直线过渡)避免尖角过大)
* @param [_OffsetDistSq=(_OffsetDist ** 2) * 2.1] 允许的最大尖角长度 默认值差不多是矩形的尖角大一点
* @param [JoinType=PolylineJoinType.Round] 尖角的处理方式,默认是圆弧过渡,可以切换成直线过渡
* @param [_JoinType=PolylineJoinType.Round] 尖角的处理方式,默认是圆弧过渡,可以切换成直线过渡
*/
constructor(_Polyline, _OffsetDist, _ToolPath = false, _OffsetDistSq = (_OffsetDist ** 2) * 2.1, //对直角走刀不进行圆弧过度
JoinType = PolylineJoinType.Round //仅在走刀路径时生效
_JoinType = PolylineJoinType.Round //仅在走刀路径时生效
) {
this._Polyline = _Polyline;
this._OffsetDist = _OffsetDist;
this._ToolPath = _ToolPath;
this._OffsetDistSq = _OffsetDistSq;
this.JoinType = JoinType;
this._JoinType = _JoinType;
this._IsTopoOffset = false; //局部偏移,允许特殊延伸,参考测试用例
}
Do() {
@@ -6838,7 +6847,7 @@ class OffsetPolyline {
let refP = this._Vertexs[curveResNext.index];
let distSq = iPts[0].distanceToSquared(refP);
if (this._ToolPath && distSq > this._OffsetDistSq) {
if (this.JoinType === PolylineJoinType.Round)
if (this._JoinType === PolylineJoinType.Round)
curveResNow.paddingCurve = [this.CreateArc(refP, sp, ep)];
else
curveResNow.paddingCurve = [this.CreateSquare(refP, curveResNow, curveResNext, code)]; //补直线
@@ -6921,7 +6930,7 @@ class OffsetPolyline {
curveResNow.paddingCurve = [this.CreateArc(refP, sp, ep)]; //补圆弧
}
else {
if (this.JoinType === PolylineJoinType.Round)
if (this._JoinType === PolylineJoinType.Round)
curveResNow.paddingCurve = [this.CreateArc(refP, sp, ep)]; //补圆弧
else {
curveResNow.paddingCurve = [this.CreateSquare(refP, curveResNow, curveResNext, code)]; //补直线
@@ -11875,7 +11884,7 @@ let CylinderHole = CylinderHole_1 = class CylinderHole extends Hole {
GetObject3DByRenderType(renderType) {
if (renderType === RenderType.Wireframe)
return new three.LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex));
else if (renderType === RenderType.CustomNumber)
else if (renderType === RenderType.CustomNumber || renderType === RenderType.ModelGroove)
return; //不绘制了
// return new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex, FrontSide, true));
else
@@ -11893,7 +11902,7 @@ let CylinderHole = CylinderHole_1 = class CylinderHole extends Hole {
}
else {
let mesh = obj;
if (type === RenderType.CustomNumber)
if (type === RenderType.CustomNumber || type === RenderType.ModelGroove)
mesh.material = ColorMaterial.GetConceptualMaterial(this.ColorIndex, three.FrontSide, true);
else
mesh.material = ColorMaterial.GetConceptualMaterial(this.ColorIndex);
@@ -13490,6 +13499,8 @@ Object.freeze(DefaultR2b2Option);
matchType: ECompareType.Equal
});
const DefaultCommonPanelOption = {
version: 1,
orderMap: {},
orderType: EOrderType.ByUpdate,
};
Object.freeze(DefaultCommonPanelOption);
@@ -13571,6 +13582,11 @@ const DefaultChangeColorByRoomOrCabinetOption = {
accordRoomName: true
};
Object.freeze(DefaultChangeColorByRoomOrCabinetOption);
const DefaultDoorRelatesInfoOption = {
version: 1,
hingeOption: []
};
Object.freeze(DefaultDoorRelatesInfoOption);
/**
* 使用轮廓和扫描路径构建扫描几何体,实现衣柜中的顶线或者地脚线之类的实体.
@@ -17613,6 +17629,12 @@ let ExtrudeSolid = ExtrudeSolid_1 = class ExtrudeSolid extends Entity {
else if (renderType === RenderType.Conceptual) {
return obj.add(new three.Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex, three.FrontSide, true, this.Freeze)), new three.LineSegments(this.EdgeGeometry, ColorMaterial.GetConceptualEdgeMaterial()));
}
else if (renderType === RenderType.ModelGroove) {
obj.add(
// new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(9, FrontSide, true, this.Freeze)),
new three.LineSegments(this.EdgeGeometry, ColorMaterial.GetConceptualEdgeMaterial()));
obj.add(this.GetModelGroove());
}
else if (renderType === RenderType.Physical) {
let mesh = obj;
mesh.geometry = this.MeshGeometry;
@@ -17653,6 +17675,26 @@ let ExtrudeSolid = ExtrudeSolid_1 = class ExtrudeSolid extends Entity {
mesh.material = this.MeshMaterial;
}
}
GetModelGroove() {
const grooves = [];
for (const sp of this.__CacheSplitExtrudes ?? []) {
grooves.push(...sp.grooves);
}
const group = new three.Group();
for (const groove of grooves) {
const grooveClone = groove.Clone();
grooveClone.UpdateDrawGeometry();
const mtx = new three.Matrix4().premultiply(grooveClone.OCSNoClone).premultiply(this.OCSInv);
const edgeGeo = grooveClone.EdgeGeometry;
edgeGeo.applyMatrix4(mtx);
const line = new three.LineSegments(edgeGeo, ColorMaterial.GetLineMaterial(1, this.Freeze));
const meshGeo = grooveClone.MeshGeometry;
meshGeo.applyMatrix4(mtx);
const mesh = new three.Mesh(meshGeo, ColorMaterial.GetConceptualMaterial(1, three.FrontSide, true, this.Freeze, 0.6));
group.add(mesh, line);
}
return group;
}
UpdateJigMaterial(color = 8) {
}
//#endregion
@@ -17827,6 +17869,8 @@ let CompositeEntity = CompositeEntity_1 = class CompositeEntity extends Entity {
}
UpdateDrawObject(renderType, obj) {
Object3DRemoveAll(obj);
if (renderType === RenderType.ModelGroove)
return;
for (let e of this.Entitys) {
e.IsEmbedEntity = true;
// //内嵌实体在某些时候可能被清理,修复它
@@ -18244,7 +18288,7 @@ function ConverArcToPtsBul(arc, hasEnd = false) {
exports.Production = void 0;
(function (Production) {
/**获取板件拆单数据 */
function GetBoardSplitOrderData(br) {
function GetBoardSplitOrderData(br, redundancyKnif = 0) {
let sealedData = GetSealedBoardContour(br);
if (!sealedData) {
ToasterShowEntityMsg({
@@ -18267,7 +18311,7 @@ exports.Production = void 0;
let originOutlinePtsBul = ConverToPtsBul(orgContour);
originOutlinePtsBul.pts.pop();
originOutlinePtsBul.buls.pop();
let { modeling, sideModeling } = GetBoardModelingData(br, offsetTanslation);
let { modeling, sideModeling } = GetBoardModelingData(br, offsetTanslation, redundancyKnif);
let boardContour;
if (GetSpiteSize(br))
boardContour = ConverToPtsBul(br.ContourCurve); //不分裂圆弧转点表
@@ -18404,7 +18448,7 @@ exports.Production = void 0;
* @param br
* @param offsetTanslation
*/
function GetBoardModelingData(br, offsetTanslation) {
function GetBoardModelingData(br, offsetTanslation, redundancyKnif = 0) {
const tool = FeedingToolPath.GetInstance();
const tMtx = MoveMatrix(offsetTanslation.clone().negate());
const getModelings = (ms, isSide) => {
@@ -18415,7 +18459,7 @@ exports.Production = void 0;
continue;
if (HostApplicationServices.chaidanOption.useDefaultRad)
m.knifeRadius = HostApplicationServices.chaidanOption.radius;
let paths = tool.GetModelFeedPath(br, m); //走刀路径
let paths = tool.GetModelFeedPath(br, m, redundancyKnif); //走刀路径
if (!isSide)
paths.forEach(path => path.ApplyMatrix(tMtx));
//走刀的ptsbuls
@@ -18453,19 +18497,23 @@ exports.Production = void 0;
Production.GetBoardModelingData = GetBoardModelingData;
//获得拆单尺寸
function GetSpiteSize(br) {
if (br.BoardProcessOption[EBoardKeyList.SpliteHeight]
&& br.BoardProcessOption[EBoardKeyList.SpliteWidth]
&& br.BoardProcessOption[EBoardKeyList.SpliteThickness]) {
let param = { L: br.Height, W: br.Width, H: br.Thickness };
let spliteHeight = safeEval(br.BoardProcessOption.spliteHeight, param, "L");
let spliteWidth = safeEval(br.BoardProcessOption.spliteWidth, param, "W");
let spliteThickness = safeEval(br.BoardProcessOption.spliteThickness, param, "H");
if (spliteHeight && spliteWidth && spliteThickness)
let [spHeight, spWidth, spThickness] = [br.BoardProcessOption.spliteHeight, br.BoardProcessOption.spliteWidth, br.BoardProcessOption.spliteThickness];
const isEffect = HostApplicationServices.chaidanOption.partialSplitValueCanTakesEffect;
const param = { L: br.Height, W: br.Width, H: br.Thickness };
if (isEffect || (spHeight && spWidth && spThickness)) {
spHeight = spHeight || br.Height.toString();
spWidth = spWidth || br.Width.toString();
spThickness = spThickness || br.Thickness.toString();
const spliteHeight = safeEval(spHeight, param, "L");
const spliteWidth = safeEval(spWidth, param, "W");
const spliteThickness = safeEval(spThickness, param, "H");
if (spliteHeight && spliteWidth && spliteThickness) {
return {
spliteHeight,
spliteWidth,
spliteThickness
};
}
}
}
Production.GetSpiteSize = GetSpiteSize;
@@ -18987,7 +19035,7 @@ exports.Production = void 0;
return res;
}
Production.Get3DModeing = Get3DModeing;
function GetChaiDanFeedingPath(data) {
function GetChaiDanFeedingPath(data, redundancyKnif = 0) {
const { thickness, boardContour, dir, addLen, addWidth, addDepth, knifeRadius, brThickness } = data;
let brContour = Data2Polyline(boardContour);
const tool = FeedingToolPath.GetInstance();
@@ -18998,7 +19046,7 @@ exports.Production = void 0;
shape,
thickness,
dir, knifeRadius, addLen, addWidth, addDepth
});
}, redundancyKnif);
return paths.map((c) => ConverToPtsBul(c, false));
}
Production.GetChaiDanFeedingPath = GetChaiDanFeedingPath;
@@ -19466,7 +19514,7 @@ let Board = Board_1 = class Board extends ExtrudeSolid {
this._workerCalcedGeom = null; //worker计算后,暂时存入到这里
this._async2DPathIng = false;
//偏移缓存
this._OffsetPathCache = new Map();
this.OffsetPathCache = new Map();
this.InitBoardData();
}
/**
@@ -20321,7 +20369,7 @@ let Board = Board_1 = class Board extends ExtrudeSolid {
DisposeThreeObj(this._2DPathDrawObject);
this._2DPathDrawObject = undefined;
}
this._OffsetPathCache.clear();
this.OffsetPathCache.clear();
}
/**
* 这个函数生成了二维刀路的csg数组,并且同时生成了_2DPathDrawObject(二维刀路提刀线框显示对象)
@@ -20334,10 +20382,16 @@ let Board = Board_1 = class Board extends ExtrudeSolid {
}
//#endregion
get Has2DPath() { return this._2DModelingList.length > 0; }
get Async2DPathing() { return this._async2DPathIng; }
GoodBye() {
super.GoodBye();
TerminateCSGTask({ key: this });
}
async Load2DPathIng() {
return new Promise((res) => {
this.promise2DPath = res;
});
}
//分裂后重新将排钻实体设置给不同的实体
HandleSpliteEntitys(splitEntitys) {
if (!splitEntitys.length)
@@ -20460,24 +20514,6 @@ let Board = Board_1 = class Board extends ExtrudeSolid {
let mesh = new three.Mesh(shapeGeom, ColorMaterial.GetBasicMaterialDoubleSide(this.PlaceColor));
return mesh;
}
GetOffsetPath(path, item) {
if (item.offset === 0) {
return path;
}
else {
let cache = this._OffsetPathCache.get(path);
if (!cache) {
cache = {};
this._OffsetPathCache.set(path, cache);
}
let tempPath = cache[item.offset.toString()];
if (!tempPath) {
tempPath = path.GetOffsetCurves(item.offset)[0];
cache[item.offset.toString()] = tempPath;
}
return tempPath;
}
}
/**
* 根据板的信息修改绘制的实体
* 1.非拆单板 灰色
@@ -20609,12 +20645,12 @@ let Board = Board_1 = class Board extends ExtrudeSolid {
let pts = super.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform, frustum);
if (snapMode === ObjectSnapMode.End) {
for (let vm of this._2DModelingList) {
if (!this._OffsetPathCache.has(vm.path))
if (!this.OffsetPathCache.has(vm.path))
continue;
for (let item of vm.items) {
if (item.offset === 0)
continue;
let paths = this._OffsetPathCache.get(vm.path);
let paths = this.OffsetPathCache.get(vm.path);
let polyline = paths[item.offset.toString()];
if (!polyline)
continue; //多段线可能偏移失败
@@ -21419,15 +21455,17 @@ function OptimizeToolPath(offsetCus, originShape, rad) {
else {
let alMat = matrixAlignCoordSys(plList[i].OCS, firstPl.OCS);
let cuPtsBul = plList[i].PtsBuls;
for (let i = 0; i < cuPtsBul.pts.length; i++) {
for (let j = 0; j < cuPtsBul.pts.length; j++) {
//坐标系对齐
let p = cuPtsBul.pts[i];
let p = cuPtsBul.pts[j];
p.copy(AsVector2(AsVector3(p).applyMatrix4(alMat)));
firstPl.LineData.push({ pt: p, bul: cuPtsBul.buls[i] });
firstPl.LineData.push({ pt: p, bul: cuPtsBul.buls[j] });
}
}
}
result.push(firstPl);
for (let pl of result)
pl.RemoveRepeatPos(1e-3);
return result;
}
/**
@@ -21573,7 +21611,7 @@ class FeedingToolPath extends Singleton {
* @param knifRadius 刀半径/偏移距离
* @param [isOut=true] 是否是最外轮廓,如果是,洞需要外偏移一个刀半径,多段线偏移保留不闭合轮廓
*/
HandleShape(shape, knifRadius, isOut) {
HandleShape(shape, knifRadius, isOut, redundancyKnif = 0) {
let outline = shape.Outline.Curve;
if (isOut)
outline = outline.Clone();
@@ -21600,8 +21638,9 @@ class FeedingToolPath extends Singleton {
let offsetDist = 0;
let rectInfo = IsRect(outline);
while (true) {
if ((!isOut || offsetDist >= knifRadius) && rectInfo)
offsetDist += knifRadius * 2;
if ((!isOut || offsetDist >= knifRadius) && rectInfo) {
offsetDist += knifRadius * 2 - redundancyKnif;
}
else
offsetDist += knifRadius;
//理论上最大的宽度为1220,所以2000已经是种仁慈.
@@ -21611,10 +21650,13 @@ class FeedingToolPath extends Singleton {
let retCus = [];
let tempOffsetCus = GetOffsetCurves(outline, offsetDist * dir, rectInfo);
retCus.push(...tempOffsetCus);
//最后一次内偏移如果是矩形,需在偏移一个刀半径避免没切到中心
//最后一次内偏移如果是矩形
if (retCus.length === 0 && rectInfo && offsetDist > knifRadius) {
offsetDist -= knifRadius;
retCus.push(...GetOffsetCurves(outline, offsetDist * dir, rectInfo));
const rectMinLengthHalf = Math.min(rectInfo.size.x, rectInfo.size.y) / 2;
//如果最后一个矩形最小边区间一半小于刀半径减去冗余值的一半,则偏移到中心处切一次
if (!equaln$1(offsetDist, rectMinLengthHalf, 1e-5) && offsetDist - rectMinLengthHalf - 1e-5 < knifRadius - redundancyKnif / 2) {
retCus.push(...GetOffsetCurves(outline, rectMinLengthHalf * dir, rectInfo));
}
}
if (retCus.length === 0)
break;
@@ -21690,7 +21732,7 @@ class FeedingToolPath extends Singleton {
return offsetCus;
}
/**用于测试走刀路径 */
TestCalcPath(br, isCd = false) {
TestCalcPath(br, isCd = false, rk = 0) {
let modelings = br.BoardModeling;
let allModeling = GetModelingFromCustomDrill(br);
modelings.push(...allModeling.modeling);
@@ -21703,20 +21745,20 @@ class FeedingToolPath extends Singleton {
return true;
return false;
});
return this.CalcPath(modelings, br);
return this.CalcPath(modelings, br, rk);
}
/**
* 计算走刀路径
*/
CalcPath(modelings, br) {
CalcPath(modelings, br, rk = 0) {
let cus = [];
for (let m of modelings) {
cus.push(...this.GetModelFeedPath(br, m));
cus.push(...this.GetModelFeedPath(br, m, rk));
}
return cus;
}
//获取造型走刀
GetModelFeedPath(br, modeling) {
GetModelFeedPath(br, modeling, redundancyKnif = 0) {
const brThickness = br.Thickness;
let cus = []; //返回走刀路径
let { shape, thickness, knifeRadius, addLen, addWidth, addDepth } = modeling;
@@ -21751,7 +21793,7 @@ class FeedingToolPath extends Singleton {
cus.push(...paths);
}
else {
let offsetCus = this.HandleShape(shape, knifeRadius, true);
let offsetCus = this.HandleShape(shape, knifeRadius, true, redundancyKnif);
if (offsetCus.length > 1)
cus.push(...OptimizeToolPath(offsetCus, shape, knifeRadius));
}
@@ -23066,10 +23108,10 @@ function GetMaxAreaFn(rects) {
return Max(rects, (t1, t2) => t2[0] > t1[0]);
}
function GetMaxWidthFn(rects) {
return Max(rects, (t1, t2) => t2[1] > t1[1]);
return Max(rects, (t1, t2) => t2[5] === t1[5] ? t2[6] > t1[6] : t2[5] > t1[5]);
}
function GetMaxHeightFn(rects) {
return Max(rects, (t1, t2) => t2[2] > t1[2]);
return Max(rects, (t1, t2) => t2[6] === t1[6] ? t2[6] > t1[6] : t2[5] > t1[5]);
}
//最大内接矩形
//1.分析盒子
@@ -23250,7 +23292,7 @@ class LargestInteriorRectangle {
}
}
}
//area maxXIndex maxYIndex xcount ycount
//area maxXIndex maxYIndex xcount ycount,width,height
let rects = [];
for (let j = 0; j < n; j++) // 对于每一列,使用基于柱状图的方法
{
@@ -23288,10 +23330,11 @@ class LargestInteriorRectangle {
//面积小于最小允许面积
if (area < this.MinArea)
continue;
rects.push([area, down[i], j, xCount, yCount]);
rects.push([area, down[i], j, xCount, yCount, width, height]);
}
}
while (rects.length) {
// while (rects.length)
if (rects.length) {
let maxIndex = this.GetMaxRectIndexFn(rects);
let [area, maxXIndex, maxYIndex, xCount, yCount] = rects[maxIndex];
let xMax = xs[maxXIndex];
@@ -23307,16 +23350,20 @@ class LargestInteriorRectangle {
}
}
//如果有被标记的方块,则删除它
arrayRemoveIf(rects, rect => {
let [area, maxX, maxY, xCount, yCount] = rect;
for (let i = 0; i < xCount; i++) {
for (let j = 0; j < yCount; j++) {
if (!matrix[maxX - 1 - i][maxY - j])
return true;
}
}
return false;
});
//某些情况不适合这个算法,移除了它,保证结果正确性
// arrayRemoveIf(rects, rect =>
// {
// let [area, maxX, maxY, xCount, yCount] = rect;
// for (let i = 0; i < xCount; i++)
// {
// for (let j = 0; j < yCount; j++)
// {
// if (!matrix[maxX - 1 - i][maxY - j])
// return true;
// }
// }
// return false;
// });
}
};
let maxRects = [];
@@ -23366,8 +23413,8 @@ function IsPointInPolygon(polyPts, pt) {
// if (equalv2(sp, pt, 1e-5) || equalv2(ep, pt, 1e-5))//在起点或者终点
// return false;
//点位于线上面
if (pt.y > Math.max(sp.y, ep.y))
continue;
// if (pt.y > Math.max(sp.y, ep.y))
// continue;
//线垂直Y轴
let derX = ep.x - sp.x;
if (equaln$1(derX, 0, 5e-6)) {

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
import { Vector3, Matrix4, Box3, Color, FrontSide, MeshPhysicalMaterial, Object3D, MathUtils, Vector2 as Vector2$1, Quaternion, LineDashedMaterial, DoubleSide, MeshBasicMaterial, LineBasicMaterial, ShaderMaterial, BufferGeometry, Shape as Shape$1, ShapeGeometry, BufferAttribute, Line as Line$1, Plane, Line3, EllipseCurve, CatmullRomCurve3, Box2 as Box2$1, Path as Path$1, LineSegments, Mesh, CylinderBufferGeometry, Float32BufferAttribute, Geometry, InstancedInterleavedBuffer, InterleavedBufferAttribute, ShapeUtils, Face3, BoxBufferGeometry, ExtrudeGeometry, Euler } from 'three';
import { Vector3, Matrix4, Box3, Color, FrontSide, MeshPhysicalMaterial, Object3D, MathUtils, Vector2 as Vector2$1, Quaternion, LineDashedMaterial, DoubleSide, MeshBasicMaterial, LineBasicMaterial, ShaderMaterial, BufferGeometry, Shape as Shape$1, ShapeGeometry, BufferAttribute, Line as Line$1, Plane, Line3, EllipseCurve, CatmullRomCurve3, Box2 as Box2$1, Path as Path$1, LineSegments, Mesh, CylinderBufferGeometry, Float32BufferAttribute, Geometry, InstancedInterleavedBuffer, InterleavedBufferAttribute, ShapeUtils, Face3, BoxBufferGeometry, ExtrudeGeometry, Group, Euler } from 'three';
function iaop() { };
import { Line2 } from 'three/examples/jsm/lines/Line2';
import { LineGeometry } from 'three/examples/jsm/lines/LineGeometry';
@@ -135,6 +135,7 @@ var RenderType;
RenderType[RenderType["PlaceFace"] = 8] = "PlaceFace";
RenderType[RenderType["BigHoleFace"] = 81] = "BigHoleFace";
RenderType[RenderType["CustomNumber"] = 9] = "CustomNumber";
RenderType[RenderType["ModelGroove"] = 10] = "ModelGroove";
/******************************************** 在视口时的渲染模式 */
/**
* 线框模式
@@ -216,7 +217,8 @@ class IHostApplicationServices {
checkSealType: "1",
sealMaxValue: 10,
sealValues: '',
hardwareExpressionFormattingAccuracy: 2, //复合实体表达式值格式化精度
hardwareExpressionFormattingAccuracy: 2,
partialSplitValueCanTakesEffect: false,
};
this.viewSize = {
minViewHeight: 1e-3,
@@ -3150,7 +3152,7 @@ class ColorMaterial {
this._BasicDoubleSideMaterialMap.set(color, mtl);
return mtl;
}
static GetConceptualMaterial(color, side = FrontSide, enableTransparent = false, freeze = false) {
static GetConceptualMaterial(color, side = FrontSide, enableTransparent = false, freeze = false, opacity) {
if (freeze)
color = 257;
let key = `${color},${side},${enableTransparent ? 1 : 0}`;
@@ -3163,7 +3165,14 @@ class ColorMaterial {
get: () => mtl.uniforms.opacity.value !== 1
});
Object.defineProperty(mtl.uniforms.opacity, "value", {
get: () => freeze ? 0.5 : HostApplicationServices.ConceptualOpacity
get: () => {
let conceptualOpacity = HostApplicationServices.ConceptualOpacity;
if (freeze)
conceptualOpacity = 0.5;
else if (opacity)
conceptualOpacity = opacity;
return conceptualOpacity;
}
});
}
this._ConceptualMaterial.set(key, mtl);
@@ -6362,7 +6371,7 @@ class Contour {
hasEqualCus = fastEqualCurve(cu, pl, COMBINE_FUZZ);
if (hasEqualCus) {
//方向相同
if (equalv3(cu.GetFirstDeriv(cu.MidParam).normalize(), pl.GetFirstDeriv(pl.MidParam).normalize(), 1e-3)
if (equalv3(cu.GetFirstDeriv(cu.MidParam).normalize(), pl.GetFirstDeriv(pl.MidParam).normalize(), 1e-2)
=== isEqualNormal) {
unionList.push(pl);
intersectionList.push(pl);
@@ -6718,16 +6727,16 @@ class OffsetPolyline {
* @param _OffsetDist
* @param [_ToolPath=false] 走刀模式(在这个模式下,我们会进行圆弧过渡(或者直线过渡)避免尖角过大)
* @param [_OffsetDistSq=(_OffsetDist ** 2) * 2.1] 允许的最大尖角长度 默认值差不多是矩形的尖角大一点
* @param [JoinType=PolylineJoinType.Round] 尖角的处理方式,默认是圆弧过渡,可以切换成直线过渡
* @param [_JoinType=PolylineJoinType.Round] 尖角的处理方式,默认是圆弧过渡,可以切换成直线过渡
*/
constructor(_Polyline, _OffsetDist, _ToolPath = false, _OffsetDistSq = (_OffsetDist ** 2) * 2.1, //对直角走刀不进行圆弧过度
JoinType = PolylineJoinType.Round //仅在走刀路径时生效
_JoinType = PolylineJoinType.Round //仅在走刀路径时生效
) {
this._Polyline = _Polyline;
this._OffsetDist = _OffsetDist;
this._ToolPath = _ToolPath;
this._OffsetDistSq = _OffsetDistSq;
this.JoinType = JoinType;
this._JoinType = _JoinType;
this._IsTopoOffset = false; //局部偏移,允许特殊延伸,参考测试用例
}
Do() {
@@ -6829,7 +6838,7 @@ class OffsetPolyline {
let refP = this._Vertexs[curveResNext.index];
let distSq = iPts[0].distanceToSquared(refP);
if (this._ToolPath && distSq > this._OffsetDistSq) {
if (this.JoinType === PolylineJoinType.Round)
if (this._JoinType === PolylineJoinType.Round)
curveResNow.paddingCurve = [this.CreateArc(refP, sp, ep)];
else
curveResNow.paddingCurve = [this.CreateSquare(refP, curveResNow, curveResNext, code)]; //补直线
@@ -6912,7 +6921,7 @@ class OffsetPolyline {
curveResNow.paddingCurve = [this.CreateArc(refP, sp, ep)]; //补圆弧
}
else {
if (this.JoinType === PolylineJoinType.Round)
if (this._JoinType === PolylineJoinType.Round)
curveResNow.paddingCurve = [this.CreateArc(refP, sp, ep)]; //补圆弧
else {
curveResNow.paddingCurve = [this.CreateSquare(refP, curveResNow, curveResNext, code)]; //补直线
@@ -11866,7 +11875,7 @@ let CylinderHole = CylinderHole_1 = class CylinderHole extends Hole {
GetObject3DByRenderType(renderType) {
if (renderType === RenderType.Wireframe)
return new LineSegments(this.EdgeGeometry, ColorMaterial.GetLineMaterial(this.ColorIndex));
else if (renderType === RenderType.CustomNumber)
else if (renderType === RenderType.CustomNumber || renderType === RenderType.ModelGroove)
return; //不绘制了
// return new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex, FrontSide, true));
else
@@ -11884,7 +11893,7 @@ let CylinderHole = CylinderHole_1 = class CylinderHole extends Hole {
}
else {
let mesh = obj;
if (type === RenderType.CustomNumber)
if (type === RenderType.CustomNumber || type === RenderType.ModelGroove)
mesh.material = ColorMaterial.GetConceptualMaterial(this.ColorIndex, FrontSide, true);
else
mesh.material = ColorMaterial.GetConceptualMaterial(this.ColorIndex);
@@ -13481,6 +13490,8 @@ Object.freeze(DefaultR2b2Option);
matchType: ECompareType.Equal
});
const DefaultCommonPanelOption = {
version: 1,
orderMap: {},
orderType: EOrderType.ByUpdate,
};
Object.freeze(DefaultCommonPanelOption);
@@ -13562,6 +13573,11 @@ const DefaultChangeColorByRoomOrCabinetOption = {
accordRoomName: true
};
Object.freeze(DefaultChangeColorByRoomOrCabinetOption);
const DefaultDoorRelatesInfoOption = {
version: 1,
hingeOption: []
};
Object.freeze(DefaultDoorRelatesInfoOption);
/**
* 使用轮廓和扫描路径构建扫描几何体,实现衣柜中的顶线或者地脚线之类的实体.
@@ -17604,6 +17620,12 @@ let ExtrudeSolid = ExtrudeSolid_1 = class ExtrudeSolid extends Entity {
else if (renderType === RenderType.Conceptual) {
return obj.add(new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(this.ColorIndex, FrontSide, true, this.Freeze)), new LineSegments(this.EdgeGeometry, ColorMaterial.GetConceptualEdgeMaterial()));
}
else if (renderType === RenderType.ModelGroove) {
obj.add(
// new Mesh(this.MeshGeometry, ColorMaterial.GetConceptualMaterial(9, FrontSide, true, this.Freeze)),
new LineSegments(this.EdgeGeometry, ColorMaterial.GetConceptualEdgeMaterial()));
obj.add(this.GetModelGroove());
}
else if (renderType === RenderType.Physical) {
let mesh = obj;
mesh.geometry = this.MeshGeometry;
@@ -17644,6 +17666,26 @@ let ExtrudeSolid = ExtrudeSolid_1 = class ExtrudeSolid extends Entity {
mesh.material = this.MeshMaterial;
}
}
GetModelGroove() {
const grooves = [];
for (const sp of this.__CacheSplitExtrudes ?? []) {
grooves.push(...sp.grooves);
}
const group = new Group();
for (const groove of grooves) {
const grooveClone = groove.Clone();
grooveClone.UpdateDrawGeometry();
const mtx = new Matrix4().premultiply(grooveClone.OCSNoClone).premultiply(this.OCSInv);
const edgeGeo = grooveClone.EdgeGeometry;
edgeGeo.applyMatrix4(mtx);
const line = new LineSegments(edgeGeo, ColorMaterial.GetLineMaterial(1, this.Freeze));
const meshGeo = grooveClone.MeshGeometry;
meshGeo.applyMatrix4(mtx);
const mesh = new Mesh(meshGeo, ColorMaterial.GetConceptualMaterial(1, FrontSide, true, this.Freeze, 0.6));
group.add(mesh, line);
}
return group;
}
UpdateJigMaterial(color = 8) {
}
//#endregion
@@ -17818,6 +17860,8 @@ let CompositeEntity = CompositeEntity_1 = class CompositeEntity extends Entity {
}
UpdateDrawObject(renderType, obj) {
Object3DRemoveAll(obj);
if (renderType === RenderType.ModelGroove)
return;
for (let e of this.Entitys) {
e.IsEmbedEntity = true;
// //内嵌实体在某些时候可能被清理,修复它
@@ -18235,7 +18279,7 @@ function ConverArcToPtsBul(arc, hasEnd = false) {
var Production;
(function (Production) {
/**获取板件拆单数据 */
function GetBoardSplitOrderData(br) {
function GetBoardSplitOrderData(br, redundancyKnif = 0) {
let sealedData = GetSealedBoardContour(br);
if (!sealedData) {
ToasterShowEntityMsg({
@@ -18258,7 +18302,7 @@ var Production;
let originOutlinePtsBul = ConverToPtsBul(orgContour);
originOutlinePtsBul.pts.pop();
originOutlinePtsBul.buls.pop();
let { modeling, sideModeling } = GetBoardModelingData(br, offsetTanslation);
let { modeling, sideModeling } = GetBoardModelingData(br, offsetTanslation, redundancyKnif);
let boardContour;
if (GetSpiteSize(br))
boardContour = ConverToPtsBul(br.ContourCurve); //不分裂圆弧转点表
@@ -18395,7 +18439,7 @@ var Production;
* @param br
* @param offsetTanslation
*/
function GetBoardModelingData(br, offsetTanslation) {
function GetBoardModelingData(br, offsetTanslation, redundancyKnif = 0) {
const tool = FeedingToolPath.GetInstance();
const tMtx = MoveMatrix(offsetTanslation.clone().negate());
const getModelings = (ms, isSide) => {
@@ -18406,7 +18450,7 @@ var Production;
continue;
if (HostApplicationServices.chaidanOption.useDefaultRad)
m.knifeRadius = HostApplicationServices.chaidanOption.radius;
let paths = tool.GetModelFeedPath(br, m); //走刀路径
let paths = tool.GetModelFeedPath(br, m, redundancyKnif); //走刀路径
if (!isSide)
paths.forEach(path => path.ApplyMatrix(tMtx));
//走刀的ptsbuls
@@ -18444,19 +18488,23 @@ var Production;
Production.GetBoardModelingData = GetBoardModelingData;
//获得拆单尺寸
function GetSpiteSize(br) {
if (br.BoardProcessOption[EBoardKeyList.SpliteHeight]
&& br.BoardProcessOption[EBoardKeyList.SpliteWidth]
&& br.BoardProcessOption[EBoardKeyList.SpliteThickness]) {
let param = { L: br.Height, W: br.Width, H: br.Thickness };
let spliteHeight = safeEval(br.BoardProcessOption.spliteHeight, param, "L");
let spliteWidth = safeEval(br.BoardProcessOption.spliteWidth, param, "W");
let spliteThickness = safeEval(br.BoardProcessOption.spliteThickness, param, "H");
if (spliteHeight && spliteWidth && spliteThickness)
let [spHeight, spWidth, spThickness] = [br.BoardProcessOption.spliteHeight, br.BoardProcessOption.spliteWidth, br.BoardProcessOption.spliteThickness];
const isEffect = HostApplicationServices.chaidanOption.partialSplitValueCanTakesEffect;
const param = { L: br.Height, W: br.Width, H: br.Thickness };
if (isEffect || (spHeight && spWidth && spThickness)) {
spHeight = spHeight || br.Height.toString();
spWidth = spWidth || br.Width.toString();
spThickness = spThickness || br.Thickness.toString();
const spliteHeight = safeEval(spHeight, param, "L");
const spliteWidth = safeEval(spWidth, param, "W");
const spliteThickness = safeEval(spThickness, param, "H");
if (spliteHeight && spliteWidth && spliteThickness) {
return {
spliteHeight,
spliteWidth,
spliteThickness
};
}
}
}
Production.GetSpiteSize = GetSpiteSize;
@@ -18978,7 +19026,7 @@ var Production;
return res;
}
Production.Get3DModeing = Get3DModeing;
function GetChaiDanFeedingPath(data) {
function GetChaiDanFeedingPath(data, redundancyKnif = 0) {
const { thickness, boardContour, dir, addLen, addWidth, addDepth, knifeRadius, brThickness } = data;
let brContour = Data2Polyline(boardContour);
const tool = FeedingToolPath.GetInstance();
@@ -18989,7 +19037,7 @@ var Production;
shape,
thickness,
dir, knifeRadius, addLen, addWidth, addDepth
});
}, redundancyKnif);
return paths.map((c) => ConverToPtsBul(c, false));
}
Production.GetChaiDanFeedingPath = GetChaiDanFeedingPath;
@@ -19457,7 +19505,7 @@ let Board = Board_1 = class Board extends ExtrudeSolid {
this._workerCalcedGeom = null; //worker计算后,暂时存入到这里
this._async2DPathIng = false;
//偏移缓存
this._OffsetPathCache = new Map();
this.OffsetPathCache = new Map();
this.InitBoardData();
}
/**
@@ -20312,7 +20360,7 @@ let Board = Board_1 = class Board extends ExtrudeSolid {
DisposeThreeObj(this._2DPathDrawObject);
this._2DPathDrawObject = undefined;
}
this._OffsetPathCache.clear();
this.OffsetPathCache.clear();
}
/**
* 这个函数生成了二维刀路的csg数组,并且同时生成了_2DPathDrawObject(二维刀路提刀线框显示对象)
@@ -20325,10 +20373,16 @@ let Board = Board_1 = class Board extends ExtrudeSolid {
}
//#endregion
get Has2DPath() { return this._2DModelingList.length > 0; }
get Async2DPathing() { return this._async2DPathIng; }
GoodBye() {
super.GoodBye();
TerminateCSGTask({ key: this });
}
async Load2DPathIng() {
return new Promise((res) => {
this.promise2DPath = res;
});
}
//分裂后重新将排钻实体设置给不同的实体
HandleSpliteEntitys(splitEntitys) {
if (!splitEntitys.length)
@@ -20451,24 +20505,6 @@ let Board = Board_1 = class Board extends ExtrudeSolid {
let mesh = new Mesh(shapeGeom, ColorMaterial.GetBasicMaterialDoubleSide(this.PlaceColor));
return mesh;
}
GetOffsetPath(path, item) {
if (item.offset === 0) {
return path;
}
else {
let cache = this._OffsetPathCache.get(path);
if (!cache) {
cache = {};
this._OffsetPathCache.set(path, cache);
}
let tempPath = cache[item.offset.toString()];
if (!tempPath) {
tempPath = path.GetOffsetCurves(item.offset)[0];
cache[item.offset.toString()] = tempPath;
}
return tempPath;
}
}
/**
* 根据板的信息修改绘制的实体
* 1.非拆单板 灰色
@@ -20600,12 +20636,12 @@ let Board = Board_1 = class Board extends ExtrudeSolid {
let pts = super.GetObjectSnapPoints(snapMode, pickPoint, lastPoint, viewXform, frustum);
if (snapMode === ObjectSnapMode.End) {
for (let vm of this._2DModelingList) {
if (!this._OffsetPathCache.has(vm.path))
if (!this.OffsetPathCache.has(vm.path))
continue;
for (let item of vm.items) {
if (item.offset === 0)
continue;
let paths = this._OffsetPathCache.get(vm.path);
let paths = this.OffsetPathCache.get(vm.path);
let polyline = paths[item.offset.toString()];
if (!polyline)
continue; //多段线可能偏移失败
@@ -21410,15 +21446,17 @@ function OptimizeToolPath(offsetCus, originShape, rad) {
else {
let alMat = matrixAlignCoordSys(plList[i].OCS, firstPl.OCS);
let cuPtsBul = plList[i].PtsBuls;
for (let i = 0; i < cuPtsBul.pts.length; i++) {
for (let j = 0; j < cuPtsBul.pts.length; j++) {
//坐标系对齐
let p = cuPtsBul.pts[i];
let p = cuPtsBul.pts[j];
p.copy(AsVector2(AsVector3(p).applyMatrix4(alMat)));
firstPl.LineData.push({ pt: p, bul: cuPtsBul.buls[i] });
firstPl.LineData.push({ pt: p, bul: cuPtsBul.buls[j] });
}
}
}
result.push(firstPl);
for (let pl of result)
pl.RemoveRepeatPos(1e-3);
return result;
}
/**
@@ -21564,7 +21602,7 @@ class FeedingToolPath extends Singleton {
* @param knifRadius 刀半径/偏移距离
* @param [isOut=true] 是否是最外轮廓,如果是,洞需要外偏移一个刀半径,多段线偏移保留不闭合轮廓
*/
HandleShape(shape, knifRadius, isOut) {
HandleShape(shape, knifRadius, isOut, redundancyKnif = 0) {
let outline = shape.Outline.Curve;
if (isOut)
outline = outline.Clone();
@@ -21591,8 +21629,9 @@ class FeedingToolPath extends Singleton {
let offsetDist = 0;
let rectInfo = IsRect(outline);
while (true) {
if ((!isOut || offsetDist >= knifRadius) && rectInfo)
offsetDist += knifRadius * 2;
if ((!isOut || offsetDist >= knifRadius) && rectInfo) {
offsetDist += knifRadius * 2 - redundancyKnif;
}
else
offsetDist += knifRadius;
//理论上最大的宽度为1220,所以2000已经是种仁慈.
@@ -21602,10 +21641,13 @@ class FeedingToolPath extends Singleton {
let retCus = [];
let tempOffsetCus = GetOffsetCurves(outline, offsetDist * dir, rectInfo);
retCus.push(...tempOffsetCus);
//最后一次内偏移如果是矩形,需在偏移一个刀半径避免没切到中心
//最后一次内偏移如果是矩形
if (retCus.length === 0 && rectInfo && offsetDist > knifRadius) {
offsetDist -= knifRadius;
retCus.push(...GetOffsetCurves(outline, offsetDist * dir, rectInfo));
const rectMinLengthHalf = Math.min(rectInfo.size.x, rectInfo.size.y) / 2;
//如果最后一个矩形最小边区间一半小于刀半径减去冗余值的一半,则偏移到中心处切一次
if (!equaln$1(offsetDist, rectMinLengthHalf, 1e-5) && offsetDist - rectMinLengthHalf - 1e-5 < knifRadius - redundancyKnif / 2) {
retCus.push(...GetOffsetCurves(outline, rectMinLengthHalf * dir, rectInfo));
}
}
if (retCus.length === 0)
break;
@@ -21681,7 +21723,7 @@ class FeedingToolPath extends Singleton {
return offsetCus;
}
/**用于测试走刀路径 */
TestCalcPath(br, isCd = false) {
TestCalcPath(br, isCd = false, rk = 0) {
let modelings = br.BoardModeling;
let allModeling = GetModelingFromCustomDrill(br);
modelings.push(...allModeling.modeling);
@@ -21694,20 +21736,20 @@ class FeedingToolPath extends Singleton {
return true;
return false;
});
return this.CalcPath(modelings, br);
return this.CalcPath(modelings, br, rk);
}
/**
* 计算走刀路径
*/
CalcPath(modelings, br) {
CalcPath(modelings, br, rk = 0) {
let cus = [];
for (let m of modelings) {
cus.push(...this.GetModelFeedPath(br, m));
cus.push(...this.GetModelFeedPath(br, m, rk));
}
return cus;
}
//获取造型走刀
GetModelFeedPath(br, modeling) {
GetModelFeedPath(br, modeling, redundancyKnif = 0) {
const brThickness = br.Thickness;
let cus = []; //返回走刀路径
let { shape, thickness, knifeRadius, addLen, addWidth, addDepth } = modeling;
@@ -21742,7 +21784,7 @@ class FeedingToolPath extends Singleton {
cus.push(...paths);
}
else {
let offsetCus = this.HandleShape(shape, knifeRadius, true);
let offsetCus = this.HandleShape(shape, knifeRadius, true, redundancyKnif);
if (offsetCus.length > 1)
cus.push(...OptimizeToolPath(offsetCus, shape, knifeRadius));
}
@@ -23057,10 +23099,10 @@ function GetMaxAreaFn(rects) {
return Max(rects, (t1, t2) => t2[0] > t1[0]);
}
function GetMaxWidthFn(rects) {
return Max(rects, (t1, t2) => t2[1] > t1[1]);
return Max(rects, (t1, t2) => t2[5] === t1[5] ? t2[6] > t1[6] : t2[5] > t1[5]);
}
function GetMaxHeightFn(rects) {
return Max(rects, (t1, t2) => t2[2] > t1[2]);
return Max(rects, (t1, t2) => t2[6] === t1[6] ? t2[6] > t1[6] : t2[5] > t1[5]);
}
//最大内接矩形
//1.分析盒子
@@ -23241,7 +23283,7 @@ class LargestInteriorRectangle {
}
}
}
//area maxXIndex maxYIndex xcount ycount
//area maxXIndex maxYIndex xcount ycount,width,height
let rects = [];
for (let j = 0; j < n; j++) // 对于每一列,使用基于柱状图的方法
{
@@ -23279,10 +23321,11 @@ class LargestInteriorRectangle {
//面积小于最小允许面积
if (area < this.MinArea)
continue;
rects.push([area, down[i], j, xCount, yCount]);
rects.push([area, down[i], j, xCount, yCount, width, height]);
}
}
while (rects.length) {
// while (rects.length)
if (rects.length) {
let maxIndex = this.GetMaxRectIndexFn(rects);
let [area, maxXIndex, maxYIndex, xCount, yCount] = rects[maxIndex];
let xMax = xs[maxXIndex];
@@ -23298,16 +23341,20 @@ class LargestInteriorRectangle {
}
}
//如果有被标记的方块,则删除它
arrayRemoveIf(rects, rect => {
let [area, maxX, maxY, xCount, yCount] = rect;
for (let i = 0; i < xCount; i++) {
for (let j = 0; j < yCount; j++) {
if (!matrix[maxX - 1 - i][maxY - j])
return true;
}
}
return false;
});
//某些情况不适合这个算法,移除了它,保证结果正确性
// arrayRemoveIf(rects, rect =>
// {
// let [area, maxX, maxY, xCount, yCount] = rect;
// for (let i = 0; i < xCount; i++)
// {
// for (let j = 0; j < yCount; j++)
// {
// if (!matrix[maxX - 1 - i][maxY - j])
// return true;
// }
// }
// return false;
// });
}
};
let maxRects = [];
@@ -23357,8 +23404,8 @@ function IsPointInPolygon(polyPts, pt) {
// if (equalv2(sp, pt, 1e-5) || equalv2(ep, pt, 1e-5))//在起点或者终点
// return false;
//点位于线上面
if (pt.y > Math.max(sp.y, ep.y))
continue;
// if (pt.y > Math.max(sp.y, ep.y))
// continue;
//线垂直Y轴
let derX = ep.x - sp.x;
if (equaln$1(derX, 0, 5e-6)) {

File diff suppressed because one or more lines are too long

View File

@@ -1,12 +1,14 @@
import { Box2, Vector2 } from "three";
/** [area maxXIndex maxYIndex xCount yCount,width,height] */
export type RectData = [number, number, number, number, number, number, number];
/**
* 获取面积最大的矩形
* @param rects
* @returns
*/
declare function GetMaxAreaFn(rects: [number, number, number, number, number][]): number;
declare function GetMaxWidthFn(rects: [number, number, number, number, number][]): number;
declare function GetMaxHeightFn(rects: [number, number, number, number, number][]): number;
declare function GetMaxAreaFn(rects: RectData[]): number;
declare function GetMaxWidthFn(rects: RectData[]): number;
declare function GetMaxHeightFn(rects: RectData[]): number;
/**
* @example
*
@@ -33,7 +35,7 @@ export declare class LargestInteriorRectangle {
MinArea: number;
/** 可以自定义过滤函数,以便过滤掉某些不需要的矩形,当返回true时,我们会过滤它 */
FilterRectFn: (width: number, height: number) => boolean;
GetMaxRectIndexFn: (rects: [number, number, number, number, number][]) => number;
GetMaxRectIndexFn: (rects: RectData[]) => number;
static GetMaxAreaFn: typeof GetMaxAreaFn;
static GetMaxWidthFn: typeof GetMaxWidthFn;
static GetMaxHeightFn: typeof GetMaxHeightFn;

View File

@@ -1 +1 @@
{"version":3,"file":"LargestInteriorRectangle.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/testEntity/LargestInteriorRectangle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAW,MAAM,OAAO,CAAC;AAW/C;;;;GAIG;AACH,iBAAS,YAAY,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAG/E;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAGhF;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAGjF;AAuBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,wBAAwB;IAEjC,QAAQ,SAAO;IACf,SAAS,SAAO;IAChB,OAAO,SAAa;IAEpB,8CAA8C;IAC9C,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAEzD,iBAAiB,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,MAAM,CAAgB;IAGhG,MAAM,CAAC,YAAY,sBAAgB;IACnC,MAAM,CAAC,aAAa,uBAAiB;IACrC,MAAM,CAAC,cAAc,wBAAkB;;IAMvC;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE;CAqS1C"}
{"version":3,"file":"LargestInteriorRectangle.d.ts","sourceRoot":"","sources":["../../../../src/Add-on/testEntity/LargestInteriorRectangle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAW,MAAM,OAAO,CAAC;AAS/C,4DAA4D;AAC5D,MAAM,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEhF;;;;GAIG;AACH,iBAAS,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAG/C;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAGhD;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAGjD;AAuBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,wBAAwB;IAEjC,QAAQ,SAAO;IACf,SAAS,SAAO;IAChB,OAAO,SAAa;IAEpB,8CAA8C;IAC9C,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAEzD,iBAAiB,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,MAAM,CAAgB;IAGhE,MAAM,CAAC,YAAY,sBAAgB;IACnC,MAAM,CAAC,aAAa,uBAAiB;IACrC,MAAM,CAAC,cAAc,wBAAkB;;IAMvC;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE;CAuS1C"}

View File

@@ -47,6 +47,7 @@ export declare class IHostApplicationServices {
sealMaxValue: number;
sealValues: string;
hardwareExpressionFormattingAccuracy: number;
partialSplitValueCanTakesEffect: boolean;
};
viewSize: {
minViewHeight: number;

View File

@@ -1 +1 @@
{"version":3,"file":"HostApplicationServices.d.ts","sourceRoot":"","sources":["../../../src/ApplicationServices/HostApplicationServices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,qBAAa,wBAAwB;IAEjC,mBAAmB,CAAC,EAAE,iBAAiB,GAAG,oBAAoB,CAAC;IAC/D,oBAAoB,CAAC,EAAE,iBAAiB,GAAG,oBAAoB,CAAC;IAChE,mBAAmB,CAAC,EAAE,iBAAiB,GAAG,oBAAoB,CAAC;IAC/D,8BAA8B,CAAC,EAAE,iBAAiB,GAAG,oBAAoB,CAAC;IAE1E,mBAAmB,UAAQ;IAE3B,eAAe,EAAE,QAAQ,CAAC;IACd,iBAAiB,EAAE,OAAO,CAAQ;IAC9C,cAAc,EAAE,OAAO,CAAQ;IAEnB,kBAAkB,SAAK;IACvB,mBAAmB,SAAK;IAExB,iBAAiB,SAAK;IAElC,kBAAkB,UAAS;IAC3B,WAAW,SAAK;IAEhB,OAAO,CAAC,eAAe,CAAM;IAC7B,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAAM;IACpC,IAAI,WAAW,IACM,GAAG,CAD0B;IAClD,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAUvB;IAGW,WAAW,EAAE,UAAU,CAAwB;IAI/C,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAAW;IAItD,mBAAmB,UAAQ;IAI3B,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAM;IAIzC,SAAS,UAAS;IAIlB,gBAAgB,UAAS;IAIzB,cAAc,UAAS;IAIvB,gBAAgB,UAAS;IAIzB,IAAI,EAAE,MAAM,CAAC;IAIb,cAAc,EAAE,OAAO,CAAS;IAGhC,aAAa;;;;;;;;;;;;;;;MAevB;IAEU,QAAQ;;;;MAIlB;IAEU,UAAU,EAAE,aAAa,CAInC;IAEU,aAAa,SAAM;IACnB,SAAS,SAAK;IACd,kBAAkB,EAAE,kBAAkB,CAA0B;IAE5E,OAAO;IAEP,OAAO,CAAC,MAAM,CAAC,eAAe,CAA2B;IACzD,MAAM,CAAC,WAAW,IAAI,wBAAwB;IAQxC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAClC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;CACzC;AAED,eAAO,IAAI,uBAAuB,0BAAyC,CAAC"}
{"version":3,"file":"HostApplicationServices.d.ts","sourceRoot":"","sources":["../../../src/ApplicationServices/HostApplicationServices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,qBAAa,wBAAwB;IAEjC,mBAAmB,CAAC,EAAE,iBAAiB,GAAG,oBAAoB,CAAC;IAC/D,oBAAoB,CAAC,EAAE,iBAAiB,GAAG,oBAAoB,CAAC;IAChE,mBAAmB,CAAC,EAAE,iBAAiB,GAAG,oBAAoB,CAAC;IAC/D,8BAA8B,CAAC,EAAE,iBAAiB,GAAG,oBAAoB,CAAC;IAE1E,mBAAmB,UAAQ;IAE3B,eAAe,EAAE,QAAQ,CAAC;IACd,iBAAiB,EAAE,OAAO,CAAQ;IAC9C,cAAc,EAAE,OAAO,CAAQ;IAEnB,kBAAkB,SAAK;IACvB,mBAAmB,SAAK;IAExB,iBAAiB,SAAK;IAElC,kBAAkB,UAAS;IAC3B,WAAW,SAAK;IAEhB,OAAO,CAAC,eAAe,CAAM;IAC7B,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAAM;IACpC,IAAI,WAAW,IACM,GAAG,CAD0B;IAClD,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,EAUvB;IAGW,WAAW,EAAE,UAAU,CAAwB;IAI/C,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,CAAW;IAItD,mBAAmB,UAAQ;IAI3B,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAM;IAIzC,SAAS,UAAS;IAIlB,gBAAgB,UAAS;IAIzB,cAAc,UAAS;IAIvB,gBAAgB,UAAS;IAIzB,IAAI,EAAE,MAAM,CAAC;IAIb,cAAc,EAAE,OAAO,CAAS;IAGhC,aAAa;;;;;;;;;;;;;;;;MAgBvB;IAEU,QAAQ;;;;MAIlB;IAEU,UAAU,EAAE,aAAa,CAInC;IAEU,aAAa,SAAM;IACnB,SAAS,SAAK;IACd,kBAAkB,EAAE,kBAAkB,CAA0B;IAE5E,OAAO;IAEP,OAAO,CAAC,MAAM,CAAC,eAAe,CAA2B;IACzD,MAAM,CAAC,WAAW,IAAI,wBAAwB;IAQxC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAClC,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;CACzC;AAED,eAAO,IAAI,uBAAuB,0BAAyC,CAAC"}

View File

@@ -14,7 +14,7 @@ export declare class ColorMaterial {
private static _BasicDoubleSideMaterialMap;
static GetBasicMaterialDoubleSide(color: number): MeshBasicMaterial;
private static _ConceptualMaterial;
static GetConceptualMaterial(color: number, side?: Side, enableTransparent?: boolean, freeze?: boolean): ShaderMaterial;
static GetConceptualMaterial(color: number, side?: Side, enableTransparent?: boolean, freeze?: boolean, opacity?: number): ShaderMaterial;
static UpdateConceptualMaterial(useLogBuf: boolean): void;
private static _printConceptualMaterial;
static GetPrintConceptualMaterial(): ShaderMaterial;

View File

@@ -1 +1 @@
{"version":3,"file":"ColorPalette.d.ts","sourceRoot":"","sources":["../../../src/Common/ColorPalette.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAyB,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAE,IAAI,EAAoB,MAAM,OAAO,CAAC;AACvJ,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAIrE,eAAO,MAAM,YAAY,YAwQxB,CAAC;AAEF,eAAO,MAAM,UAAU,IAAI,CAAC;AAG5B,qBAAa,aAAa;IAEtB,OAAO;IACP,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAwC;IACvE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAwC;IACxE,MAAM,CAAC,SAAS,UAAS;IACzB,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,iBAAiB;IAUxE,OAAO,CAAC,MAAM,CAAC,eAAe,CAAyC;IACvE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB;IAYxD,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB;IASzD,OAAO,CAAC,MAAM,CAAC,2BAA2B,CAAwC;IAClF,MAAM,CAAC,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB;IASnE,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAA0C;IAC5E,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,IAAgB,EAAE,iBAAiB,UAAQ,EAAE,MAAM,UAAQ;IAsB7G,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,OAAO;IAKlD,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAiB;IACxD,MAAM,CAAC,0BAA0B;IAiBjC,OAAO,CAAC,MAAM,CAAC,4BAA4B,CAA6C;IACxF,MAAM,CAAC,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAUjE,OAAO,CAAC,MAAM,CAAC,6BAA6B,CAA6C;IACzF,MAAM,CAAC,4BAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAUlE,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM;IAU7B,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAoB;IAC1D,MAAM,CAAC,yBAAyB;IAOhC,MAAM,CAAC,4BAA4B;IAKnC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAoB;IACzD,MAAM,CAAC,wBAAwB;IAO/B,MAAM,CAAC,2BAA2B;IAOlC,MAAM,CAAC,kBAAkB,qBAItB;IAGH,MAAM,CAAC,gBAAgB,qBAIpB;IAGH,MAAM,CAAC,gBAAgB,eAMpB;IAGH,MAAM,CAAC,2BAA2B,oBAI/B;IAEH,MAAM,CAAC,uBAAuB,oBAG3B;CACN"}
{"version":3,"file":"ColorPalette.d.ts","sourceRoot":"","sources":["../../../src/Common/ColorPalette.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAyB,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAE,IAAI,EAAoB,MAAM,OAAO,CAAC;AACvJ,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAIrE,eAAO,MAAM,YAAY,YAwQxB,CAAC;AAEF,eAAO,MAAM,UAAU,IAAI,CAAC;AAG5B,qBAAa,aAAa;IAEtB,OAAO;IACP,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAwC;IACvE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAwC;IACxE,MAAM,CAAC,SAAS,UAAS;IACzB,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,iBAAiB;IAUxE,OAAO,CAAC,MAAM,CAAC,eAAe,CAAyC;IACvE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB;IAYxD,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB;IASzD,OAAO,CAAC,MAAM,CAAC,2BAA2B,CAAwC;IAClF,MAAM,CAAC,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB;IASnE,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAA0C;IAC5E,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,IAAgB,EAAE,iBAAiB,UAAQ,EAAE,MAAM,UAAQ,EAAE,OAAO,CAAC,EAAE,MAAM;IA8B/H,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,OAAO;IAKlD,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAiB;IACxD,MAAM,CAAC,0BAA0B;IAiBjC,OAAO,CAAC,MAAM,CAAC,4BAA4B,CAA6C;IACxF,MAAM,CAAC,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAUjE,OAAO,CAAC,MAAM,CAAC,6BAA6B,CAA6C;IACzF,MAAM,CAAC,4BAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAUlE,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM;IAU7B,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAoB;IAC1D,MAAM,CAAC,yBAAyB;IAOhC,MAAM,CAAC,4BAA4B;IAKnC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAoB;IACzD,MAAM,CAAC,wBAAwB;IAO/B,MAAM,CAAC,2BAA2B;IAOlC,MAAM,CAAC,kBAAkB,qBAItB;IAGH,MAAM,CAAC,gBAAgB,qBAIpB;IAGH,MAAM,CAAC,gBAAgB,eAMpB;IAGH,MAAM,CAAC,2BAA2B,oBAI/B;IAEH,MAAM,CAAC,uBAAuB,oBAG3B;CACN"}

View File

@@ -158,8 +158,8 @@ export declare class Board extends ExtrudeSolid {
Clear3DPathCache(): void;
private Get3DPathDrawObject;
Clear2DPathCache(): void;
private _2DPathCsgs;
private _2DPathDrawObject;
_2DPathCsgs: Geom3[];
_2DPathDrawObject: Object3D;
/**
* 这个函数生成了二维刀路的csg数组,并且同时生成了_2DPathDrawObject(二维刀路提刀线框显示对象)
*/
@@ -167,13 +167,17 @@ export declare class Board extends ExtrudeSolid {
protected get Has2DPath(): boolean;
private _workerCalcedGeom;
private _async2DPathIng;
get Async2DPathing(): boolean;
GoodBye(): void;
private promise2DPath;
Load2DPathIng(): Promise<boolean>;
HandleSpliteEntitys(splitEntitys: this[]): void;
private get PlaceColor();
private GetPlaceFace;
private GetBigHoleFace;
private _OffsetPathCache;
private GetOffsetPath;
OffsetPathCache: Map<Polyline, {
[key: string]: Polyline;
}>;
/**
* 根据板的信息修改绘制的实体
* 1.非拆单板 灰色

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
{"version":3,"file":"CompositeEntity.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/CompositeEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAK5D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIlC,8BACsB,eAAgB,SAAQ,MAAM;;IAOpC,OAAO,EAAE,MAAM,EAAE,CAAM;IAEnC;;MAEE;IACF,IAAa,gBAAgB,IAAI,OAAO,CA6BvC;IAID;;MAEE;IACO,OAAO;IAShB,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAsBzC,SAAS,CAAC,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAajF,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAuBtD,IAAI,UAAU,IAAI,MAAM,CAGvB;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAgB3B;IACD,IAAI,QAAQ,qEAGX;IACD,IAAI,QAAQ,CAAC,EAAE,kEAAA,EAQd;IAED,wBAAwB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAK9D,kBAAkB;IASlB;;;;;;;MAOE;IACF,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GACpB,OAAO,EAAE;IAQZ,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAK/B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO;IAMhD,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC;IAKlC;;;;;;OAMG;IACH,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IAMxD,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,yBAAyB;IASjC,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa;IA4ClF,eAAe,CAAC,IAAI,EAAE,IAAI;IAkB1B,iBAAiB,CAAC,CAAC,EAAE,OAAO;IAS5B,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAclC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAS3B"}
{"version":3,"file":"CompositeEntity.d.ts","sourceRoot":"","sources":["../../../../src/DatabaseServices/Entity/CompositeEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAK5D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAG7D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAIlC,8BACsB,eAAgB,SAAQ,MAAM;;IAOpC,OAAO,EAAE,MAAM,EAAE,CAAM;IAEnC;;MAEE;IACF,IAAa,gBAAgB,IAAI,OAAO,CA6BvC;IAID;;MAEE;IACO,OAAO;IAShB,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAsBzC,SAAS,CAAC,cAAc,CAAC,UAAU,GAAE,UAAiC,GAAG,QAAQ;IAajF,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAwBtD,IAAI,UAAU,IAAI,MAAM,CAGvB;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAgB3B;IACD,IAAI,QAAQ,qEAGX;IACD,IAAI,QAAQ,CAAC,EAAE,kEAAA,EAQd;IAED,wBAAwB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ;IAK9D,kBAAkB;IASlB;;;;;;;MAOE;IACF,mBAAmB,CACf,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,EAAE,OAAO,EAClB,SAAS,CAAC,EAAE,OAAO,GACpB,OAAO,EAAE;IAQZ,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC;IAK/B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO;IAMhD,gBAAgB,IAAI,KAAK,CAAC,OAAO,CAAC;IAKlC;;;;;;OAMG;IACH,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO;IAMxD,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,yBAAyB;IASjC,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa;IA4ClF,eAAe,CAAC,IAAI,EAAE,IAAI;IAkB1B,iBAAiB,CAAC,CAAC,EAAE,OAAO;IAS5B,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ;IAclC,SAAS,CAAC,IAAI,EAAE,QAAQ;CAS3B"}

View File

@@ -216,6 +216,7 @@ export declare class ExtrudeSolid extends Entity {
ClearDraw(): this;
UpdateDrawObject(renderType: RenderType, obj: Object3D): Object3D;
UpdateDrawObjectMaterial(renderType: RenderType, obj: Object3D): void;
private GetModelGroove;
UpdateJigMaterial(color?: number): void;
/**
* 简化的文件读取和写入,只写入必要的数据,没有id,没有其他版本号

File diff suppressed because one or more lines are too long

View File

@@ -12,7 +12,7 @@ import { IBoardBatchCurtailOption } from "../UI/Store/OptionInterface/BoardBatch
import { BoardProcessOption } from "../UI/Store/OptionInterface/BoardProcessOption";
import { BulkheadCeilingOption } from "../UI/Store/OptionInterface/BulkheadCeilingOption";
import { ClosingStripOption } from "../UI/Store/OptionInterface/ClosingStripOption";
import { BehindBoardOption, ChangeColorByBoardMaterialOption, ChangeColorByRoomOrCabinetOption, CommonPanelConfigOption, DatalistConfigOption, IBatchModifyPanelOption, IDimStyleOption, LayerBoardOption, LayerNailOption, ModifyTextsConfigOption, RightPlaneLightOption, ShareBoardInfConfigurationOption, SideBoardOption, SingleBoardOption, TBBoardOption, VerticalBoardOption, WindowPanelConfigOption } from "../UI/Store/OptionInterface/IOptionInterface";
import { BehindBoardOption, ChangeColorByBoardMaterialOption, ChangeColorByRoomOrCabinetOption, CommonPanelConfigOption, DatalistConfigOption, DoorRelatesInfoOption, IBatchModifyPanelOption, IDimStyleOption, LayerBoardOption, LayerNailOption, ModifyTextsConfigOption, RightPlaneLightOption, ShareBoardInfConfigurationOption, SideBoardOption, SingleBoardOption, TBBoardOption, VerticalBoardOption, WindowPanelConfigOption } from "../UI/Store/OptionInterface/IOptionInterface";
import { PointLightOption, RectAreaLightOption, SpotLightOption } from "../UI/Store/OptionInterface/LightConfigOption";
import { Viewport2ConfigOption, Viewport3ConfigOption, Viewport4ConfigOption, ViewportConfigOption } from "../UI/Store/OptionInterface/ViewportConfigOption";
import { IWineRackOption } from "../UI/Store/WineRackInterface";
@@ -64,4 +64,5 @@ export declare const DefaultChangeColorByBoardMaterialOption: ChangeColorByBoard
export declare const DefaultShareBoardInfConfigurationOption: ShareBoardInfConfigurationOption;
export declare const DefaultBulkheadCeilingOption: BulkheadCeilingOption;
export declare const DefaultChangeColorByRoomOrCabinetOption: ChangeColorByRoomOrCabinetOption;
export declare const DefaultDoorRelatesInfoOption: DoorRelatesInfoOption;
//# sourceMappingURL=DefaultConfig.d.ts.map

View File

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

27
types/Geometry/BSPGroupParse.d.ts vendored Normal file
View File

@@ -0,0 +1,27 @@
import { Poly3 } from "@jscad/modeling/src/geometries/types";
import { Vector3 } from "three";
import { Geom3Res } from "../Common/CSGIntersect";
/**
* 解决 THREEBSP(CSG) 产生的结果没有办法得到分裂的个数.
* 本类分析了THREEBSP的组合情况.
*
* Example:
*
* let topology = new BSPGroupParse(csg);
* topology.parse();
*/
export declare class BSPGroupParse {
fractionDigits: number;
constructor(bsp?: Geom3Res, fractionDigits?: number);
Add(poly: Poly3): void;
/**
* 返回组合点
*/
Parse(): Vector3[][];
private map;
private Get;
private GetPts;
private vecMap;
private GenerateP;
}
//# sourceMappingURL=BSPGroupParse.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"BSPGroupParse.d.ts","sourceRoot":"","sources":["../../../src/Geometry/BSPGroupParse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGlD;;;;;;;;GAQG;AACH,qBAAa,aAAa;IAEa,cAAc;gBAArC,GAAG,CAAC,EAAE,QAAQ,EAAS,cAAc,SAAI;IAMrD,GAAG,CAAC,IAAI,EAAE,KAAK;IAaf;;OAEG;IACH,KAAK,IAAI,OAAO,EAAE,EAAE;IAoBpB,OAAO,CAAC,GAAG,CAAkC;IAC7C,OAAO,CAAC,GAAG;IAUX,OAAO,CAAC,MAAM;IAad,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,SAAS;CAMpB"}

View File

@@ -35,7 +35,7 @@ export declare class OffsetPolyline {
_OffsetDist: number;
_ToolPath: boolean;
private _OffsetDistSq;
private JoinType;
private _JoinType;
_CacheOCS: Matrix4;
_Vertexs: Vector3[];
_SubCurves: Curve[];
@@ -56,10 +56,10 @@ export declare class OffsetPolyline {
* @param _OffsetDist
* @param [_ToolPath=false] 走刀模式(在这个模式下,我们会进行圆弧过渡(或者直线过渡)避免尖角过大)
* @param [_OffsetDistSq=(_OffsetDist ** 2) * 2.1] 允许的最大尖角长度 默认值差不多是矩形的尖角大一点
* @param [JoinType=PolylineJoinType.Round] 尖角的处理方式,默认是圆弧过渡,可以切换成直线过渡
* @param [_JoinType=PolylineJoinType.Round] 尖角的处理方式,默认是圆弧过渡,可以切换成直线过渡
*/
constructor(_Polyline: Polyline, _OffsetDist: number, _ToolPath?: boolean, _OffsetDistSq?: number, //对直角走刀不进行圆弧过度
JoinType?: PolylineJoinType);
_JoinType?: PolylineJoinType);
Do(): Polyline[];
InitSubCurves(): this;
protected GeneralCirclesAndVertexs(): void;

View File

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

View File

@@ -22,6 +22,7 @@ export declare enum RenderType {
PlaceFace = 8,
BigHoleFace = 81,
CustomNumber = 9,
ModelGroove = 10,
/******************************************** 在视口时的渲染模式 */
/**
* 线框模式

View File

@@ -1 +1 @@
{"version":3,"file":"RenderType.d.ts","sourceRoot":"","sources":["../../../src/GraphicsSystem/RenderType.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,oBAAY,UAAU;IAElB;;OAEG;IACH,SAAS,IAAI;IAEb;;OAEG;IACH,UAAU,IAAI;IAGd;;OAEG;IACH,QAAQ,IAAI;IAEZ,GAAG,IAAI;IACP,KAAK,IAAI;IACT,WAAW;IACX,SAAS,IAAI;IACb,IAAI,IAAI;IACR,SAAS,IAAI;IACb,WAAW,KAAK;IAChB,YAAY,IAAI;IAEhB,0DAA0D;IAC1D;;MAEE;IACF,cAAc,MAAM;IAEpB;;OAEG;IACH,eAAe,MAAM;IAGrB;;OAEG;IACH,aAAa,MAAM;IAEnB,QAAQ,MAAM;IACd,UAAU,MAAM;IAChB,WAAW;IACX,cAAc,MAAM;IACpB,iBAAiB,MAAM;IAEvB,qBAAqB,MAAM;CAC9B;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,UAAU,WAGhD"}
{"version":3,"file":"RenderType.d.ts","sourceRoot":"","sources":["../../../src/GraphicsSystem/RenderType.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,oBAAY,UAAU;IAElB;;OAEG;IACH,SAAS,IAAI;IAEb;;OAEG;IACH,UAAU,IAAI;IAGd;;OAEG;IACH,QAAQ,IAAI;IAEZ,GAAG,IAAI;IACP,KAAK,IAAI;IACT,WAAW;IACX,SAAS,IAAI;IACb,IAAI,IAAI;IACR,SAAS,IAAI;IACb,WAAW,KAAK;IAChB,YAAY,IAAI;IAChB,WAAW,KAAK;IAEhB,0DAA0D;IAC1D;;MAEE;IACF,cAAc,MAAM;IAEpB;;OAEG;IACH,eAAe,MAAM;IAGrB;;OAEG;IACH,aAAa,MAAM;IAEnB,QAAQ,MAAM;IACd,UAAU,MAAM;IAChB,WAAW;IACX,cAAc,MAAM;IACpB,iBAAiB,MAAM;IAEvB,qBAAqB,MAAM;CAC9B;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,UAAU,WAGhD"}

View File

@@ -16,15 +16,15 @@ export declare class FeedingToolPath extends Singleton {
*/
private HandleShape;
/**用于测试走刀路径 */
TestCalcPath(br: Board, isCd?: boolean): Curve[];
TestCalcPath(br: Board, isCd?: boolean, rk?: number): Curve[];
/**
* 计算走刀路径
*/
CalcPath(modelings: IModeling[], br: Board): Curve[];
CalcPath(modelings: IModeling[], br: Board, rk?: number): Curve[];
GetModelFeedPath(br: {
Thickness: number;
ContourCurve: ExtrudeContourCurve;
}, modeling: IModeling): Curve[];
}, modeling: IModeling, redundancyKnif?: number): Curve[];
private GrooveAddSize;
/**
* 获取所有的轮廓

View File

@@ -1 +1 @@
{"version":3,"file":"FeedingToolPath.d.ts","sourceRoot":"","sources":["../../../../src/GraphicsSystem/ToolPath/FeedingToolPath.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAEzE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAEvE,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAG5E,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAYrD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,SAAS;IAE1C;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAuJnB,cAAc;IACd,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,UAAQ;IAmBpC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,KAAK,EAAE;IAWpD,gBAAgB,CAAC,EAAE,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,mBAAmB,CAAC;KAAE,EAAE,QAAQ,EAAE,SAAS,GAAG,KAAK,EAAE;IA8C7G,OAAO,CAAC,aAAa;IA2BrB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAuCnB,aAAa,CAAC,EAAE,EAAE,KAAK;IAkBvB,eAAe,CAAC,EAAE,EAAE,KAAK;IAsBzB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM;CAsInF;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,KAAK;;kBAKT,WAAW;;;kBACP,WAAW;;EAyGzD"}
{"version":3,"file":"FeedingToolPath.d.ts","sourceRoot":"","sources":["../../../../src/GraphicsSystem/ToolPath/FeedingToolPath.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAEzE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAEvE,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAG5E,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAYrD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,SAAS;IAE1C;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IA+JnB,cAAc;IACd,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,UAAQ,EAAE,EAAE,SAAI;IAmB5C;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,SAAI,GAAG,KAAK,EAAE;IAW5D,gBAAgB,CAAC,EAAE,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,mBAAmB,CAAC;KAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,SAAI,GAAG,KAAK,EAAE;IA8CjI,OAAO,CAAC,aAAa;IA2BrB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAuCnB,aAAa,CAAC,EAAE,EAAE,KAAK;IAkBvB,eAAe,CAAC,EAAE,EAAE,KAAK;IAsBzB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM;CAsInF;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,KAAK;;kBAKT,WAAW;;;kBACP,WAAW;;EAyGzD"}

View File

@@ -1 +1 @@
{"version":3,"file":"OptimizeToolPath.d.ts","sourceRoot":"","sources":["../../../../src/GraphicsSystem/ToolPath/OptimizeToolPath.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsD,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGxG,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAGrD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAiH7F;AAiHD,cAAc;AACd,wBAAgB,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,SAAS,GAAG,KAAK,EAAE,CAatF;AAED,eAAe;AACf,wBAAgB,eAAe,CAAC,EAAE,EAAE,KAAK,GAAG,MAAM,CAGjD;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,YA+B3E"}
{"version":3,"file":"OptimizeToolPath.d.ts","sourceRoot":"","sources":["../../../../src/GraphicsSystem/ToolPath/OptimizeToolPath.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsD,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGxG,OAAO,EAAE,KAAK,EAAE,MAAM,qCAAqC,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAGrD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,EAAE,CAqH7F;AAiHD,cAAc;AACd,wBAAgB,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,SAAS,GAAG,KAAK,EAAE,CAatF;AAED,eAAe;AACf,wBAAgB,eAAe,CAAC,EAAE,EAAE,KAAK,GAAG,MAAM,CAGjD;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,YA+B3E"}

View File

@@ -113,7 +113,7 @@ interface IChaiDanFeedingData extends IOriginModelingData {
}
export declare namespace Production {
/**获取板件拆单数据 */
function GetBoardSplitOrderData(br: Board): ISpliteOrderData | undefined;
function GetBoardSplitOrderData(br: Board, redundancyKnif?: number): ISpliteOrderData | undefined;
function ParseSealData(sealData: BrSealedData): ISealingData[];
function GetBoardInfo(br: Board, size: Vector3): IBoardProdInfo;
function GetMetalTotalEntitys(md: HardwareCompositeEntity, isHole?: boolean, filter?: (e: Entity) => boolean): Entity[];
@@ -126,7 +126,7 @@ export declare namespace Production {
* @param br
* @param offsetTanslation
*/
function GetBoardModelingData(br: Board, offsetTanslation: Vector3): {
function GetBoardModelingData(br: Board, offsetTanslation: Vector3, redundancyKnif?: number): {
modeling: IModelingData[];
sideModeling: IModelingData[];
};
@@ -151,7 +151,7 @@ export declare namespace Production {
function Data2Polyline(data: IContourData, isClose?: boolean): Polyline;
function Get2DModeing(br: Board, offset: Vector3): I2DModeling[];
function Get3DModeing(br: Board, offset: Vector3): I3DModeling[];
function GetChaiDanFeedingPath(data: IChaiDanFeedingData): IContourData[];
function GetChaiDanFeedingPath(data: IChaiDanFeedingData, redundancyKnif?: number): IContourData[];
function GetGroupName(ent: Entity): string;
}
export {};

View File

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

View File

@@ -1,4 +1,5 @@
import { BoardOpenDir, BoardType, BrRelativePos } from "../../../DatabaseServices/Entity/BoardInterface";
import { EOrderType } from "../../../Editor/OrderType";
import { RenderType } from "../../../GraphicsSystem/RenderType";
import { BehindHeightPositon, RadioType, ViewDirection } from "./OptionEnum";
export interface IBaseOption {
@@ -200,7 +201,10 @@ export interface IKnifeProps {
angle: number;
}
export interface CommonPanelConfigOption extends IBaseOption {
orderType: string;
orderMap: {
[key: string]: string;
};
orderType: EOrderType;
}
export interface DatalistColumnWidthOption {
name: number;
@@ -268,4 +272,7 @@ export interface ChangeColorByRoomOrCabinetOption {
accordRoomName: boolean;
accordCabinetName: boolean;
}
export interface DoorRelatesInfoOption extends IBaseOption {
hingeOption: [string, boolean][];
}
//# sourceMappingURL=IOptionInterface.d.ts.map

File diff suppressed because one or more lines are too long

25
types/csg/core/CAG.d.ts vendored Normal file
View File

@@ -0,0 +1,25 @@
import { Vector3 } from "three";
import { CSG } from "./CSG";
import { Polygon } from "./math/Polygon3";
import { Side } from "./math/Side";
import { Vector2D } from "./math/Vector2";
import { Vector3D } from "./math/Vector3";
/**
* Class CAG
* Holds a solid area geometry like CSG but 2D.
* Each area consists of a number of sides.
* Each side is a line between 2 points.
*/
export declare class CAG {
sides: Side[];
isCanonicalized: boolean;
constructor(sides?: Side[]);
fromPoints(pts: Vector3[]): this;
flipped(): CAG;
getBounds(): Vector2D[];
canonicalized(): CAG;
extrude(offsetVector: Vector3D): CSG;
private toCSGWall;
toPolygons(bottom?: boolean): Polygon[];
}
//# sourceMappingURL=CAG.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CAG.d.ts","sourceRoot":"","sources":["../../../../src/csg/core/CAG.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAE,MAAM,OAAO,CAAC;AAIzC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM1C;;;;;GAKG;AACH,qBAAa,GAAG;IAGO,KAAK,EAAE,IAAI,EAAE;IADhC,eAAe,EAAE,OAAO,CAAS;gBACd,KAAK,GAAE,IAAI,EAAO;IAIrC,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI;IAkBhC,OAAO;IAOP,SAAS;IAkBT,aAAa,IAAI,GAAG;IAOpB,OAAO,CAAC,YAAY,EAAE,QAAQ,GAAG,GAAG;IAcpC,OAAO,CAAC,SAAS;IAMjB,UAAU,CAAC,MAAM,UAAQ,GAAG,OAAO,EAAE;CA+BxC"}

95
types/csg/core/CSG.d.ts vendored Normal file
View File

@@ -0,0 +1,95 @@
import { Matrix4 } from "three";
import { Polygon } from "./math/Polygon3";
import { Vector3D } from "./math/Vector3";
/** Class CSG
* Holds a binary space partition tree representing a 3D solid. Two solids can
* be combined using the `union()`, `subtract()`, and `intersect()` methods.
* @constructor
*/
export declare class CSG {
polygons: Polygon[];
/** # 是否已精简重复点 */
isCanonicalized: boolean;
/** # 是否已合并轮廓 */
isRetesselated: boolean;
cachedBoundingBox: Vector3D[];
constructor(polygons?: Polygon[]);
/**
* Return a new CSG solid representing the space in either this solid or
* in the given solids. Neither this solid nor the given solids are modified.
* @param {CSG[]} csg - list of CSG objects
* @returns {CSG} new CSG object
* @example
* let C = A.union(B)
* @example
* +-------+ +-------+
* | | | |
* | A | | |
* | +--+----+ = | +----+
* +----+--+ | +----+ |
* | B | | |
* | | | |
* +-------+ +-------+
*/
union(csg: CSG | CSG[]): CSG;
unionSub(csg: CSG, retesselate?: boolean, canonicalize?: boolean): CSG;
unionForNonIntersecting(csg: CSG): CSG;
/**
* Return a new CSG solid representing space in this solid but
* not in the given solids. Neither this solid nor the given solids are modified.
* @returns new CSG object
* @example
* let C = A.subtract(B)
* @example
* +-------+ +-------+
* | | | |
* | A | | |
* | +--+----+ = | +--+
* +----+--+ | +----+
* | B |
* | |
* +-------+
*/
subtract(csg: CSG | CSG[]): CSG;
subtractSub(csg: CSG, retesselate?: boolean, canonicalize?: boolean): CSG;
/**
* Return a new CSG solid representing space in both this solid and
* in the given solids. Neither this solid nor the given solids are modified.
* let C = A.intersect(B)
* @returns new CSG object
* @example
* +-------+
* | |
* | A |
* | +--+----+ = +--+
* +----+--+ | +--+
* | B |
* | |
* +-------+
*/
intersect(csg: CSG | CSG[]): CSG;
intersectSub(csg: CSG, retesselate?: boolean, canonicalize?: boolean): CSG;
/**
* Return a new CSG solid with solid and empty space switched.
* This solid is not modified.
*/
invert(): CSG;
transform1(matrix4x4: Matrix4): CSG;
/**
* Return a new CSG solid that is transformed using the given Matrix.
* Several matrix transformations can be combined before transforming this solid.
* @param {CSG.Matrix4x4} matrix4x4 - matrix to be applied
* @returns {CSG} new CSG object
* @example
* var m = new CSG.Matrix4x4()
* m = m.multiply(CSG.Matrix4x4.rotationX(40))
* m = m.multiply(CSG.Matrix4x4.translation([-.5, 0, 0]))
* let B = A.transform(m)
*/
transform(matrix4x4: Matrix4): this;
canonicalized(): CSG;
reTesselated(): CSG;
mayOverlap(csg: CSG): boolean;
toTriangles(): Polygon[];
}
//# sourceMappingURL=CSG.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"CSG.d.ts","sourceRoot":"","sources":["../../../../src/csg/core/CSG.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGhC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAO1C;;;;GAIG;AACH,qBAAa,GAAG;IAOO,QAAQ,EAAE,OAAO,EAAE;IALtC,iBAAiB;IACjB,eAAe,EAAE,OAAO,CAAS;IACjC,gBAAgB;IAChB,cAAc,EAAE,OAAO,CAAS;IAChC,iBAAiB,EAAE,QAAQ,EAAE,CAAC;gBACX,QAAQ,GAAE,OAAO,EAAO;IAG3C;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG;IAmB5B,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,UAAQ,EAAE,YAAY,UAAQ,GAAG,GAAG;IAwBlE,uBAAuB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG;IAStC;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG;IAgB/B,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,UAAQ,EAAE,YAAY,UAAQ,GAAG,GAAG;IAerE;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG;IAgBhC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,UAAQ,EAAE,YAAY,UAAQ,GAAG,GAAG;IAiBtE;;;OAGG;IACH,MAAM,IAAI,GAAG;IAOb,UAAU,CAAC,SAAS,EAAE,OAAO;IAY7B;;;;;;;;;;OAUG;IACH,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAyCnC,aAAa;IAKb,YAAY;IAOZ,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAgB7B,WAAW,IAAI,OAAO,EAAE;CAsB3B"}

10
types/csg/core/FuzzyFactory2d.d.ts vendored Normal file
View File

@@ -0,0 +1,10 @@
import { FuzzyFactory } from "./FuzzyFactory";
import { Side } from "./math/Side";
import { Vertex2D } from "./math/Vertex2";
export declare class FuzzyCAGFactory {
vertexfactory: FuzzyFactory;
constructor();
getVertex(sourcevertex: Vertex2D): Vertex2D;
getSide(sourceside: Side): Side;
}
//# sourceMappingURL=FuzzyFactory2d.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"FuzzyFactory2d.d.ts","sourceRoot":"","sources":["../../../../src/csg/core/FuzzyFactory2d.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,qBAAa,eAAe;IAExB,aAAa,eAA4B;;IAGzC,SAAS,CAAC,YAAY,EAAE,QAAQ;IAOhC,OAAO,CAAC,UAAU,EAAE,IAAI;CAM3B"}

9
types/csg/core/Geometry2CSG.d.ts vendored Normal file
View File

@@ -0,0 +1,9 @@
import { Geom3 } from "@jscad/modeling/src/geometries/geom3";
import { BufferGeometry, Geometry } from "three";
import { Geom3Res } from "../../Common/CSGIntersect";
import { CSG } from "./CSG";
export declare function Geometry2CSG(geometry: Geometry | BufferGeometry): CSG;
export declare function CSG2Geometry(csg: CSG): Geometry;
export declare function Geometry2CSG2(geometry: Geometry | BufferGeometry): Geom3;
export declare function CSG2Geometry2(csg: Geom3 | Geom3Res): Geometry;
//# sourceMappingURL=Geometry2CSG.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Geometry2CSG.d.ts","sourceRoot":"","sources":["../../../../src/csg/core/Geometry2CSG.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAIpE,OAAO,EAAE,cAAc,EAAS,QAAQ,EAA2B,MAAM,OAAO,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAO5B,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,GAAG,GAAG,CAkCrE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,CAmC/C;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,GAAG,KAAK,CAmBxE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CA8B7D"}

15
types/csg/core/math/Line2.d.ts vendored Normal file
View File

@@ -0,0 +1,15 @@
import { Vector2D } from "./Vector2";
/** class Line2D
* Represents a directional line in 2D space
* A line is parametrized by its normal vector (perpendicular to the line, rotated 90 degrees counter clockwise)
* and w. The line passes through the point <normal>.times(w).
* Equation: p is on line if normal.dot(p)==w
*/
export declare class Line2D {
normal: Vector2D;
w: number;
constructor(normal: Vector2D, w: number);
direction(): Vector2D;
static fromPoints(p1: Vector2D, p2: Vector2D): Line2D;
}
//# sourceMappingURL=Line2.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Line2.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/math/Line2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC;;;;;GAKG;AACH,qBAAa,MAAM;IAEf,MAAM,EAAE,QAAQ,CAAC;IACjB,CAAC,EAAE,MAAM,CAAC;gBACE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM;IASvC,SAAS;IAIT,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ;CAU/C"}

View File

@@ -0,0 +1,17 @@
import { Plane } from "./Plane";
import { Vector2D } from "./Vector2";
import { Vector3D } from "./Vector3";
/** class OrthoNormalBasis
* Reprojects points on a 3D plane onto a 2D plane
* or from a 2D plane back onto the 3D plane
*/
export declare class OrthoNormalBasis {
plane: Plane;
v: Vector3D;
u: Vector3D;
planeorigin: Vector3D;
constructor(plane: Plane, rightVector?: Vector3D);
to2D(vec3: Vector3D): Vector2D;
to3D(vec2: Vector2D): Vector3D;
}
//# sourceMappingURL=OrthoNormalBasis.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"OrthoNormalBasis.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/math/OrthoNormalBasis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC;;;GAGG;AAEH,qBAAa,gBAAgB;IAKN,KAAK,EAAE,KAAK;IAH/B,CAAC,EAAE,QAAQ,CAAC;IACZ,CAAC,EAAE,QAAQ,CAAC;IACZ,WAAW,EAAE,QAAQ,CAAC;gBACH,KAAK,EAAE,KAAK,EAAE,WAAW,GAAE,QAAiD;IAO/F,IAAI,CAAC,IAAI,EAAE,QAAQ;IAKnB,IAAI,CAAC,IAAI,EAAE,QAAQ;CAMtB"}

12
types/csg/core/math/Side.d.ts vendored Normal file
View File

@@ -0,0 +1,12 @@
import { Polygon } from "./Polygon3";
import { Vertex2D } from "./Vertex2";
export declare class Side {
vertex0: Vertex2D;
vertex1: Vertex2D;
constructor(vertex0: Vertex2D, vertex1: Vertex2D);
toPolygon3D(z0: number, z1: number): Polygon;
flipped(): Side;
length(): number;
static _fromFakePolygon(polygon: Polygon): Side;
}
//# sourceMappingURL=Side.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Side.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/math/Side.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC,qBAAa,IAAI;IAEM,OAAO,EAAE,QAAQ;IAAS,OAAO,EAAE,QAAQ;gBAA3C,OAAO,EAAE,QAAQ,EAAS,OAAO,EAAE,QAAQ;IAC9D,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;IA0BlC,OAAO;IAKP,MAAM;IAMN,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAuClD"}

9
types/csg/core/math/Vertex2.d.ts vendored Normal file
View File

@@ -0,0 +1,9 @@
import { Vector2D } from "./Vector2";
export declare class Vertex2D {
tag: any;
pos: Vector2D;
constructor(pos: Vector2D);
toString(): string;
getTag(): any;
}
//# sourceMappingURL=Vertex2.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"Vertex2.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/math/Vertex2.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,qBAAa,QAAQ;IAEjB,GAAG,EAAE,GAAG,CAAC;IACT,GAAG,EAAE,QAAQ,CAAC;gBACF,GAAG,EAAE,QAAQ;IAKzB,QAAQ;IAKR,MAAM;CAUT"}

View File

@@ -0,0 +1,3 @@
import { Polygon } from "./Polygon3";
export declare function reTesselateCoplanarPolygons(sourcePolygons: Polygon[], destpolygons?: Polygon[]): void;
//# sourceMappingURL=reTesselateCoplanarPolygons.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"reTesselateCoplanarPolygons.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/math/reTesselateCoplanarPolygons.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAkCrC,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,OAAO,EAAE,EAAE,YAAY,GAAE,OAAO,EAAO,GAAG,IAAI,CAmazG"}

51
types/csg/core/trees.d.ts vendored Normal file
View File

@@ -0,0 +1,51 @@
import { Plane } from "./math/Plane";
import { Polygon } from "./math/Polygon3";
import { Vector3D } from "./math/Vector3";
declare class PolygonTreeNode {
parent: PolygonTreeNode;
children: PolygonTreeNode[];
polygon: Polygon;
removed: boolean;
constructor(polygon?: Polygon);
addPolygons(polygons: Polygon[]): void;
remove(): void;
isRemoved(): boolean;
isRootNode(): boolean;
invert(): void;
getPolygon(): Polygon;
getPolygons(outPolygons?: Polygon[]): Polygon[];
splitByPlane(plane: Plane, coplanarFrontNodes: PolygonTreeNode[], coplanarBackNodes: PolygonTreeNode[], frontNodes: PolygonTreeNode[], backNodes: PolygonTreeNode[]): void;
private splitByPlaneNotChildren;
addChild(polygon: Polygon): PolygonTreeNode;
invertSub(): void;
recursivelyInvalidatePolygon(): void;
}
export declare class Tree {
polygonTree: PolygonTreeNode;
rootNode: Node;
constructor(polygons: Polygon[]);
invert(): void;
/**
* this 减去 tree 删除此BSP树中位于其他BSP树内的所有多边形
* @param tree 不会被修改
* @param [alsoRemovecoplanarFront=false] 同时删除共面
*/
clipTo(tree: Tree, alsoRemovecoplanarFront?: boolean): void;
allPolygons(): Polygon[];
addPolygons(polygons: Polygon[]): void;
}
declare class Node {
plane: Plane;
front: Node;
back: Node;
polygonTreeNodes: PolygonTreeNode[];
parent: Node;
constructor(parent: Node);
invert(): void;
clipPolygons(polygonTreeNodes: PolygonTreeNode[], alsoRemoveCoplanarFront: boolean): void;
clipTo(tree: Tree, alsoRemovecoplanarFront: boolean): void;
addPolygonTreeNodes(polygonTreeNodes: PolygonTreeNode[]): void;
getParentPlaneNormals(normals: Vector3D[], maxdepth: number): void;
}
export {};
//# sourceMappingURL=trees.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"trees.d.ts","sourceRoot":"","sources":["../../../../src/csg/core/trees.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,OAAO,EAAQ,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AA2B1C,cAAM,eAAe;IAEjB,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE,eAAe,EAAE,CAAM;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAS;gBACb,OAAO,CAAC,EAAE,OAAO;IAO7B,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE;IAc/B,MAAM;IAsBN,SAAS;IAKT,UAAU;IAOV,MAAM;IAMN,UAAU,IAAI,OAAO;IAMrB,WAAW,CAAC,WAAW,GAAE,OAAO,EAAO,GAAG,OAAO,EAAE;IA2BnD,YAAY,CACR,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,eAAe,EAAE,EACrC,iBAAiB,EAAE,eAAe,EAAE,EACpC,UAAU,EAAE,eAAe,EAAE,EAC7B,SAAS,EAAE,eAAe,EAAE;IAgChC,OAAO,CAAC,uBAAuB;IA6D/B,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe;IAQ3C,SAAS;IAgBT,4BAA4B;CAU/B;AAMD,qBAAa,IAAI;IAEb,WAAW,kBAAyB;IACpC,QAAQ,OAAkB;gBACd,QAAQ,EAAE,OAAO,EAAE;IAK/B,MAAM;IAON;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,uBAAuB,UAAQ;IAKlD,WAAW;IAKX,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE;CAOlC;AAUD,cAAM,IAAI;IAEN,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,IAAI,CAAC;IACX,gBAAgB,EAAE,eAAe,EAAE,CAAM;IACzC,MAAM,EAAE,IAAI,CAAC;gBACD,MAAM,EAAE,IAAI;IAMxB,MAAM;IAmBN,YAAY,CAAC,gBAAgB,EAAE,eAAe,EAAE,EAAE,uBAAuB,EAAE,OAAO;IAkDlF,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO;IAoBnD,mBAAmB,CAAC,gBAAgB,EAAE,eAAe,EAAE;IA2DvD,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM;CAW9D"}

6
types/csg/core/utils.d.ts vendored Normal file
View File

@@ -0,0 +1,6 @@
import { Vector2D } from "./math/Vector2";
export declare function fnNumberSort(a: any, b: any): number;
export declare const solve2Linear: (a: number, b: number, c: number, d: number, u: number, v: number) => number[];
export declare function insertSorted<T>(array: T[], element: T, comparefunc: (a: T, b: T) => number): void;
export declare function interpolateBetween2DPointsForY(point1: Vector2D, point2: Vector2D, y: number): number;
//# sourceMappingURL=utils.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/csg/core/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,wBAAgB,YAAY,CAAC,CAAC,KAAA,EAAE,CAAC,KAAA,UAGhC;AAED,eAAO,MAAM,YAAY,MAAgB,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,aASrG,CAAC;AAEF,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,QAgB1F;AAKD,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,UAqB3F"}

13
types/csg/core/utils/canonicalize.d.ts vendored Normal file
View File

@@ -0,0 +1,13 @@
import { FuzzyCSGFactory } from "../FuzzyFactory3d";
import { CSG } from "../CSG";
import { CAG } from "../CAG";
/**
* Returns a cannoicalized version of the input csg : ie every very close
* points get deduplicated
*
* 返回删除重复点的csg,重复点将被合并
*/
export declare function canonicalizeCSG(csg: CSG): CSG;
export declare function canonicalizeCAG(cag: CAG): CAG;
export declare function CSGFromCSGFuzzyFactory(factory: FuzzyCSGFactory, sourcecsg: CSG): CSG;
//# sourceMappingURL=canonicalize.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"canonicalize.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/utils/canonicalize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAI7B;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAO7C;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,OAMvC;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,OAO9E"}

View File

@@ -0,0 +1,11 @@
import { Vector3D } from "../math/Vector3";
import { CSG } from "../CSG";
/**
* Returns an array of Vector3D, providing minimum coordinates and maximum coordinates
* of this solid.
* @example
* let bounds = A.getBounds()
* let minX = bounds[0].x
*/
export declare function bounds(csg: CSG): Vector3D[];
//# sourceMappingURL=csgMeasurements.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"csgMeasurements.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/utils/csgMeasurements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,EAAE,CA2B3C"}

3
types/csg/core/utils/retesellate.d.ts vendored Normal file
View File

@@ -0,0 +1,3 @@
import { CSG } from "../CSG";
export declare function reTesselate(csg: CSG): CSG;
//# sourceMappingURL=retesellate.d.ts.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"retesellate.d.ts","sourceRoot":"","sources":["../../../../../src/csg/core/utils/retesellate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAK7B,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CA+BzC"}