feat: 提交

This commit is contained in:
2025-07-22 18:38:25 +08:00
parent 87e2804d1f
commit b7399fd6e7
23 changed files with 36662 additions and 58 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,75 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
var RectOptimizeMachine_1 = require("./RectOptimizeMachine");
var ctx = this;
if (typeof window !== 'undefined' && 'Worker' in window) {
ctx.addEventListener('message', function (event) { return __awaiter(void 0, void 0, void 0, function () {
var m, _a, blockList, boardList, boardCount, optimizeTimes, isDoubleFaceBlockFirst, gap, gzpb, isDoubleFaceBlockInRemain, info;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
m = new RectOptimizeMachine_1.RectOptimizeMachine();
m.CallBack = function (best, fit, arg, info) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
ctx.postMessage([best, fit, arg, info]);
return [2 /*return*/];
});
}); };
if (!(event.data.type == 'start')) return [3 /*break*/, 1];
_a = (event.data.data), blockList = _a[0], boardList = _a[1], boardCount = _a[2], optimizeTimes = _a[3], isDoubleFaceBlockFirst = _a[4], gap = _a[5], gzpb = _a[6], isDoubleFaceBlockInRemain = _a[7];
m.Start(blockList, boardList, boardCount, optimizeTimes, isDoubleFaceBlockFirst, gap, gzpb, isDoubleFaceBlockInRemain);
return [3 /*break*/, 3];
case 1:
info = {
type: 'isStop',
};
return [4 /*yield*/, m.Stop(info)];
case 2:
_b.sent();
ctx.postMessage([[], null, null, info]);
ctx === null || ctx === void 0 ? void 0 : ctx.terminate();
_b.label = 3;
case 3: return [2 /*return*/];
}
});
}); });
}
else {
}
exports.default = {};

View File

@@ -0,0 +1,42 @@
import type { Big_bang, xbang } from './bang'
import { RectOptimizeMachine } from './RectOptimizeMachine'
// import {Worker} from "worker_threads"
import { Worker as NodeWorker } from 'worker_threads';
const ctx: NodeWorker | Worker = self as any
debugger
if (typeof window !== 'undefined' && 'Worker' in window) {
ctx.addEventListener('message', async (event) => {
let m = new RectOptimizeMachine()
m.CallBack = async (best, fit, arg, info) => {
ctx.postMessage([best, fit, arg, info])
}
if (event.data.type == 'start') {
/**
* blockList 小板列表
* boardList 大板(N个元素前N-1个元素表示余料板且余料板须为矩形第N个元素表示大板)
* boardCount 余料板数量(bigBang中前N-1个元素对应的数量如果bigBang中只有一个元素即只有大板没有余料板则为空数组)
* optimizeTimes 新优化次数
* isDoubleFaceBlockFirst 双面加工的小板是否优先排入
* gap 排版缝隙 = 开料刀直径 + 缝隙
* gzpb 规则排版
* isDoubleFaceBlockInRemain 余料板是否排入双面加工的小板
*/
let [blockList, boardList, boardCount, optimizeTimes, isDoubleFaceBlockFirst, gap, gzpb, isDoubleFaceBlockInRemain] = (event.data.data) as [xbang[], Big_bang[], number[], number, boolean, number, boolean, boolean]
m.Start(blockList, boardList, boardCount, optimizeTimes, isDoubleFaceBlockFirst, gap, gzpb, isDoubleFaceBlockInRemain)
} else {
const info = {
type: 'isStop',
}
await m.Stop(info)
ctx.postMessage([[], null, null, info])
ctx?.terminate()
}
})
} else {
}
export default {} as typeof Worker & (new () => Worker)

View File

@@ -0,0 +1,60 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.WorkerItemType = exports.BlockRegion = exports.Big_bang = exports.HoleType = exports.ComposingType = exports.LineType = void 0;
/**纹路类型 Positive=0正纹 Reverse=1反纹 CanReversal=2可翻转 */
var LineType;
(function (LineType) {
/**正纹 */
LineType[LineType["Positive"] = 0] = "Positive";
/**反纹 */
LineType[LineType["Reverse"] = 1] = "Reverse";
/**可翻转 */
LineType[LineType["CanReversal"] = 2] = "CanReversal";
})(LineType || (exports.LineType = LineType = {}));
/**版面类型: Positive=0正面 Reverse=1反面 Arbitrary=2任意面 */
var ComposingType;
(function (ComposingType) {
/**正面 */
ComposingType[ComposingType["Positive"] = 0] = "Positive";
/**反面 */
ComposingType[ComposingType["Reverse"] = 1] = "Reverse";
/**任意面 */
ComposingType[ComposingType["Arbitrary"] = 2] = "Arbitrary";
})(ComposingType || (exports.ComposingType = ComposingType = {}));
/**孔类型 None=0无 Positive=1正面 Reverse=2反面 Two=3正反 */
var HoleType;
(function (HoleType) {
/**无 */
HoleType[HoleType["None"] = 0] = "None";
/**正面 */
HoleType[HoleType["Positive"] = 1] = "Positive";
/**反面 */
HoleType[HoleType["Reverse"] = 2] = "Reverse";
/**正反 */
HoleType[HoleType["Two"] = 3] = "Two";
})(HoleType || (exports.HoleType = HoleType = {}));
/** 大板 */
var Big_bang //待优化的板
= /** @class */ (function () {
function Big_bang() {
}
return Big_bang;
}());
exports.Big_bang = Big_bang;
var BlockRegion;
(function (BlockRegion) {
/** 左下 = 0 */
BlockRegion[BlockRegion["LEFT_BOTTOM"] = 0] = "LEFT_BOTTOM";
/** 右下 = 1 */
BlockRegion[BlockRegion["RIGHT_BOTTOM"] = 1] = "RIGHT_BOTTOM";
/** 右上 = 2 */
BlockRegion[BlockRegion["RIGHT_TOP"] = 2] = "RIGHT_TOP";
/** 左上 = 3 */
BlockRegion[BlockRegion["LEFT_TOP"] = 3] = "LEFT_TOP";
})(BlockRegion || (exports.BlockRegion = BlockRegion = {}));
var WorkerItemType = /** @class */ (function () {
function WorkerItemType() {
}
return WorkerItemType;
}());
exports.WorkerItemType = WorkerItemType;

File diff suppressed because it is too large Load Diff