feat: 提交
This commit is contained in:
1752
samples/moduleManager/RectOptimizeWorker/RectOptimizeMachine.js
Normal file
1752
samples/moduleManager/RectOptimizeWorker/RectOptimizeMachine.js
Normal file
File diff suppressed because it is too large
Load Diff
1746
samples/moduleManager/RectOptimizeWorker/RectOptimizeMachine.ts
Normal file
1746
samples/moduleManager/RectOptimizeWorker/RectOptimizeMachine.ts
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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 = {};
|
@@ -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)
|
60
samples/moduleManager/RectOptimizeWorker/bang.js
Normal file
60
samples/moduleManager/RectOptimizeWorker/bang.js
Normal 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;
|
1605
samples/moduleManager/RectOptimizeWorker/bang.ts
Normal file
1605
samples/moduleManager/RectOptimizeWorker/bang.ts
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user