kitchen-simulator 4.3.5 → 4.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
2
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
3
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
4
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
5
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
6
3
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
4
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
5
|
import * as Three from 'three';
|
|
@@ -3014,11 +3011,11 @@ export function createBacksplash(item, layer, planData, scene) {
|
|
|
3014
3011
|
var wLines = getSnappedWallLines(item.itemInfo, layer, planData.catalog);
|
|
3015
3012
|
var curLine = wLines.length > 0 ? wLines[0] : null;
|
|
3016
3013
|
|
|
3017
|
-
// Get wall items
|
|
3014
|
+
// Get wall items which snapped to the curLine
|
|
3018
3015
|
|
|
3019
3016
|
var i,
|
|
3020
3017
|
wallItems = [];
|
|
3021
|
-
var allWallItems = GeometryUtils.getAllItemSpecified(scene, planData.catalog, WALL_CABINET_LAYOUTPOS);
|
|
3018
|
+
var allWallItems = GeometryUtils.getAllItemSpecified(scene, planData.catalog, WALL_CABINET_LAYOUTPOS, curLine === null || curLine === void 0 ? void 0 : curLine.lineRect);
|
|
3022
3019
|
for (i = 0; i < allWallItems.others.length; i++) wallItems.push(allWallItems.others[i]);
|
|
3023
3020
|
if (allWallItems.cur) wallItems.push(allWallItems.cur);
|
|
3024
3021
|
|
|
@@ -3095,37 +3092,37 @@ export function createBacksplash(item, layer, planData, scene) {
|
|
|
3095
3092
|
|
|
3096
3093
|
// Find mergeable other backsplashes
|
|
3097
3094
|
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
|
|
3113
|
-
|
|
3095
|
+
// let info,
|
|
3096
|
+
// wholeWidth,
|
|
3097
|
+
// /** Width factor */ factor,
|
|
3098
|
+
// distance,
|
|
3099
|
+
// halfWidth,
|
|
3100
|
+
// /** To get new center */ centerFactor;
|
|
3101
|
+
|
|
3102
|
+
// for (let back of backsplashes) {
|
|
3103
|
+
// info = back.info;
|
|
3104
|
+
// if (info.height === splashHeight && info.rotY === rotY) {
|
|
3105
|
+
// factor = Math.cos(rotY) || 1;
|
|
3106
|
+
// distance = Math.hypot(posX - info.posX, posZ - info.posZ) / factor;
|
|
3107
|
+
// halfWidth = (info.width + splashWidth) / 2;
|
|
3108
|
+
|
|
3109
|
+
// if (Math.abs(distance - halfWidth) < 1e-2) {
|
|
3110
|
+
// // dispose `back`
|
|
3111
|
+
// if (info.id) {
|
|
3112
|
+
// deleteSpecifiedMeshObjects('backsplash' + info.id);
|
|
3113
|
+
// }
|
|
3114
|
+
|
|
3115
|
+
// // Get center position
|
|
3116
|
+
// wholeWidth = info.width + splashWidth;
|
|
3117
|
+
// centerFactor = info.width / wholeWidth;
|
|
3118
|
+
// posX = posX + centerFactor * (info.posX - posX);
|
|
3119
|
+
// posZ = posZ + centerFactor * (info.posZ - posZ);
|
|
3120
|
+
|
|
3121
|
+
// splashWidth = wholeWidth;
|
|
3122
|
+
// }
|
|
3123
|
+
// }
|
|
3124
|
+
// }
|
|
3114
3125
|
|
|
3115
|
-
// Get center position
|
|
3116
|
-
wholeWidth = info.width + splashWidth;
|
|
3117
|
-
centerFactor = info.width / wholeWidth;
|
|
3118
|
-
posX = posX + centerFactor * (info.posX - posX);
|
|
3119
|
-
posZ = posZ + centerFactor * (info.posZ - posZ);
|
|
3120
|
-
splashWidth = wholeWidth;
|
|
3121
|
-
}
|
|
3122
|
-
}
|
|
3123
|
-
}
|
|
3124
|
-
} catch (err) {
|
|
3125
|
-
_iterator.e(err);
|
|
3126
|
-
} finally {
|
|
3127
|
-
_iterator.f();
|
|
3128
|
-
}
|
|
3129
3126
|
itemToSave.info.posX = posX;
|
|
3130
3127
|
itemToSave.info.posY = posY;
|
|
3131
3128
|
itemToSave.info.posZ = posZ;
|
|
@@ -3174,9 +3171,9 @@ export function createBacksplash(item, layer, planData, scene) {
|
|
|
3174
3171
|
}
|
|
3175
3172
|
itemToSave.info.id = item.itemInfo.id;
|
|
3176
3173
|
deleteSpecifiedMeshObjects('backsplash' + item.itemInfo.id);
|
|
3177
|
-
if (item.rotRad % (Math.PI / 2)
|
|
3174
|
+
if (Math.abs(item.rotRad % (Math.PI / 2)) < EPSILON) planData.plan.add(backsplash);
|
|
3178
3175
|
backsplash.name = name;
|
|
3179
|
-
backsplash.visible = item.itemInfo.get('backsplashVisible') && backsplashApplied && item.rotRad % (Math.PI / 2)
|
|
3176
|
+
backsplash.visible = item.itemInfo.get('backsplashVisible') && backsplashApplied && Math.abs(item.rotRad % (Math.PI / 2)) < EPSILON;
|
|
3180
3177
|
|
|
3181
3178
|
// Save to scene graph
|
|
3182
3179
|
|
package/es/utils/geometry.js
CHANGED
|
@@ -719,6 +719,7 @@ export function getAllItems(scene, catalog, allLineRects) {
|
|
|
719
719
|
}
|
|
720
720
|
export function getAllItemSpecified(scene, catalog, filter) {
|
|
721
721
|
var _scene$layers, _scene$layers$get;
|
|
722
|
+
var snappedLineRect = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
|
|
722
723
|
var layerID = scene === null || scene === void 0 ? void 0 : scene.selectedLayer;
|
|
723
724
|
var layer = scene === null || scene === void 0 || (_scene$layers = scene.layers) === null || _scene$layers === void 0 || (_scene$layers$get = _scene$layers.get) === null || _scene$layers$get === void 0 ? void 0 : _scene$layers$get.call(_scene$layers, layerID);
|
|
724
725
|
if (!layer || !layer.items) return {
|
|
@@ -765,6 +766,39 @@ export function getAllItemSpecified(scene, catalog, filter) {
|
|
|
765
766
|
|
|
766
767
|
// Current vs others
|
|
767
768
|
var rect = getCalcRectFromItem3D(val);
|
|
769
|
+
|
|
770
|
+
// check current item is snapped to the [snappedLineRect]
|
|
771
|
+
if (!isEmpty(snappedLineRect)) {
|
|
772
|
+
var isSnapped = false;
|
|
773
|
+
var overlapList = [OVERLAP_INCLUDED, OVERLAP_SAME, OVERLAP_SOME];
|
|
774
|
+
for (var i = 0; i < (rect === null || rect === void 0 || (_rect$rect = rect.rect) === null || _rect$rect === void 0 ? void 0 : _rect$rect.length); i++) {
|
|
775
|
+
var _rect$rect;
|
|
776
|
+
if (isSnapped) break;
|
|
777
|
+
var curItemPt = rect.rect[i];
|
|
778
|
+
var nextItemPt = i === rect.rect.length - 1 ? rect.rect[0] : rect.rect[i + 1];
|
|
779
|
+
var srcLine = {
|
|
780
|
+
x1: curItemPt.x,
|
|
781
|
+
y1: curItemPt.y,
|
|
782
|
+
x2: nextItemPt.x,
|
|
783
|
+
y2: nextItemPt.y
|
|
784
|
+
};
|
|
785
|
+
for (var j = 0; j < (snappedLineRect === null || snappedLineRect === void 0 ? void 0 : snappedLineRect.length); j++) {
|
|
786
|
+
var curLineRectPt = snappedLineRect[j];
|
|
787
|
+
var nextLineRectPt = j === snappedLineRect.length - 1 ? snappedLineRect[0] : snappedLineRect[j + 1];
|
|
788
|
+
var destLine = {
|
|
789
|
+
x1: curLineRectPt.x,
|
|
790
|
+
y1: curLineRectPt.y,
|
|
791
|
+
x2: nextLineRectPt.x,
|
|
792
|
+
y2: nextLineRectPt.y
|
|
793
|
+
};
|
|
794
|
+
if (overlapList.includes(relationshipOfTwoOverlappedLines(srcLine, destLine).result)) {
|
|
795
|
+
isSnapped = true;
|
|
796
|
+
break;
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
if (!isSnapped) return;
|
|
801
|
+
}
|
|
768
802
|
if (item.selected) {
|
|
769
803
|
curiteminfo = rect;
|
|
770
804
|
} else {
|
|
@@ -2743,15 +2777,15 @@ export function getSnappedWallLines(item, layer, catalog) {
|
|
|
2743
2777
|
var _loop2 = function _loop2(j) {
|
|
2744
2778
|
var destLine1 = {
|
|
2745
2779
|
x1: rectLines[j].rect[2].x,
|
|
2746
|
-
y1: rectLines[j].rect[
|
|
2747
|
-
x2:
|
|
2748
|
-
y2:
|
|
2780
|
+
y1: rectLines[j].rect[2].y,
|
|
2781
|
+
x2: rectLines[j].rect[3].x,
|
|
2782
|
+
y2: rectLines[j].rect[3].y
|
|
2749
2783
|
};
|
|
2750
2784
|
var destLine2 = {
|
|
2751
2785
|
x1: rectLines[j].rect[0].x,
|
|
2752
|
-
y1: rectLines[j].rect[
|
|
2753
|
-
x2:
|
|
2754
|
-
y2:
|
|
2786
|
+
y1: rectLines[j].rect[0].y,
|
|
2787
|
+
x2: rectLines[j].rect[1].x,
|
|
2788
|
+
y2: rectLines[j].rect[1].y
|
|
2755
2789
|
};
|
|
2756
2790
|
if (overlapList.includes(relationshipOfTwoOverlappedLines(srcLine, destLine1).result) || overlapList.includes(relationshipOfTwoOverlappedLines(srcLine, destLine2).result)) {
|
|
2757
2791
|
var idx = snappedWallLines.findIndex(function (v) {
|
|
@@ -2760,6 +2794,7 @@ export function getSnappedWallLines(item, layer, catalog) {
|
|
|
2760
2794
|
var snapSide = 'unknown';
|
|
2761
2795
|
if (idx < 0) snappedWallLines.push({
|
|
2762
2796
|
id: rectLines[j].lineId,
|
|
2797
|
+
lineRect: rectLines[j].rect,
|
|
2763
2798
|
snapSide: snapSide
|
|
2764
2799
|
});else snappedWallLines[idx].snapSide = snapSide;
|
|
2765
2800
|
}
|
|
@@ -2799,6 +2834,7 @@ export function getSnappedWallLines(item, layer, catalog) {
|
|
|
2799
2834
|
var snapSide = _i === 0 || _i === 2 ? 'front' : 'side';
|
|
2800
2835
|
if (idx < 0) snappedWallLines.push({
|
|
2801
2836
|
id: rectLines[_j].lineId,
|
|
2837
|
+
lineRect: rectLines[_j].rect,
|
|
2802
2838
|
snapSide: snapSide
|
|
2803
2839
|
});else snappedWallLines[idx].snapSide = snapSide;
|
|
2804
2840
|
}
|
|
@@ -48,9 +48,6 @@ var _utils = require("../viewer2d/utils");
|
|
|
48
48
|
var _helper = require("../../utils/helper");
|
|
49
49
|
var _math = require("../../utils/math");
|
|
50
50
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
51
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
52
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
53
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
54
51
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
55
52
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
56
53
|
var transformBox;
|
|
@@ -3049,11 +3046,11 @@ function createBacksplash(item, layer, planData, scene) {
|
|
|
3049
3046
|
var wLines = (0, _geometry2.getSnappedWallLines)(item.itemInfo, layer, planData.catalog);
|
|
3050
3047
|
var curLine = wLines.length > 0 ? wLines[0] : null;
|
|
3051
3048
|
|
|
3052
|
-
// Get wall items
|
|
3049
|
+
// Get wall items which snapped to the curLine
|
|
3053
3050
|
|
|
3054
3051
|
var i,
|
|
3055
3052
|
wallItems = [];
|
|
3056
|
-
var allWallItems = _export.GeometryUtils.getAllItemSpecified(scene, planData.catalog, _constants.WALL_CABINET_LAYOUTPOS);
|
|
3053
|
+
var allWallItems = _export.GeometryUtils.getAllItemSpecified(scene, planData.catalog, _constants.WALL_CABINET_LAYOUTPOS, curLine === null || curLine === void 0 ? void 0 : curLine.lineRect);
|
|
3057
3054
|
for (i = 0; i < allWallItems.others.length; i++) wallItems.push(allWallItems.others[i]);
|
|
3058
3055
|
if (allWallItems.cur) wallItems.push(allWallItems.cur);
|
|
3059
3056
|
|
|
@@ -3130,37 +3127,37 @@ function createBacksplash(item, layer, planData, scene) {
|
|
|
3130
3127
|
|
|
3131
3128
|
// Find mergeable other backsplashes
|
|
3132
3129
|
|
|
3133
|
-
|
|
3134
|
-
|
|
3135
|
-
|
|
3136
|
-
|
|
3137
|
-
|
|
3138
|
-
|
|
3139
|
-
|
|
3140
|
-
|
|
3141
|
-
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
|
|
3148
|
-
|
|
3130
|
+
// let info,
|
|
3131
|
+
// wholeWidth,
|
|
3132
|
+
// /** Width factor */ factor,
|
|
3133
|
+
// distance,
|
|
3134
|
+
// halfWidth,
|
|
3135
|
+
// /** To get new center */ centerFactor;
|
|
3136
|
+
|
|
3137
|
+
// for (let back of backsplashes) {
|
|
3138
|
+
// info = back.info;
|
|
3139
|
+
// if (info.height === splashHeight && info.rotY === rotY) {
|
|
3140
|
+
// factor = Math.cos(rotY) || 1;
|
|
3141
|
+
// distance = Math.hypot(posX - info.posX, posZ - info.posZ) / factor;
|
|
3142
|
+
// halfWidth = (info.width + splashWidth) / 2;
|
|
3143
|
+
|
|
3144
|
+
// if (Math.abs(distance - halfWidth) < 1e-2) {
|
|
3145
|
+
// // dispose `back`
|
|
3146
|
+
// if (info.id) {
|
|
3147
|
+
// deleteSpecifiedMeshObjects('backsplash' + info.id);
|
|
3148
|
+
// }
|
|
3149
|
+
|
|
3150
|
+
// // Get center position
|
|
3151
|
+
// wholeWidth = info.width + splashWidth;
|
|
3152
|
+
// centerFactor = info.width / wholeWidth;
|
|
3153
|
+
// posX = posX + centerFactor * (info.posX - posX);
|
|
3154
|
+
// posZ = posZ + centerFactor * (info.posZ - posZ);
|
|
3155
|
+
|
|
3156
|
+
// splashWidth = wholeWidth;
|
|
3157
|
+
// }
|
|
3158
|
+
// }
|
|
3159
|
+
// }
|
|
3149
3160
|
|
|
3150
|
-
// Get center position
|
|
3151
|
-
wholeWidth = info.width + splashWidth;
|
|
3152
|
-
centerFactor = info.width / wholeWidth;
|
|
3153
|
-
posX = posX + centerFactor * (info.posX - posX);
|
|
3154
|
-
posZ = posZ + centerFactor * (info.posZ - posZ);
|
|
3155
|
-
splashWidth = wholeWidth;
|
|
3156
|
-
}
|
|
3157
|
-
}
|
|
3158
|
-
}
|
|
3159
|
-
} catch (err) {
|
|
3160
|
-
_iterator.e(err);
|
|
3161
|
-
} finally {
|
|
3162
|
-
_iterator.f();
|
|
3163
|
-
}
|
|
3164
3161
|
itemToSave.info.posX = posX;
|
|
3165
3162
|
itemToSave.info.posY = posY;
|
|
3166
3163
|
itemToSave.info.posZ = posZ;
|
|
@@ -3209,9 +3206,9 @@ function createBacksplash(item, layer, planData, scene) {
|
|
|
3209
3206
|
}
|
|
3210
3207
|
itemToSave.info.id = item.itemInfo.id;
|
|
3211
3208
|
deleteSpecifiedMeshObjects('backsplash' + item.itemInfo.id);
|
|
3212
|
-
if (item.rotRad % (Math.PI / 2)
|
|
3209
|
+
if (Math.abs(item.rotRad % (Math.PI / 2)) < _constants.EPSILON) planData.plan.add(backsplash);
|
|
3213
3210
|
backsplash.name = name;
|
|
3214
|
-
backsplash.visible = item.itemInfo.get('backsplashVisible') && backsplashApplied && item.rotRad % (Math.PI / 2)
|
|
3211
|
+
backsplash.visible = item.itemInfo.get('backsplashVisible') && backsplashApplied && Math.abs(item.rotRad % (Math.PI / 2)) < _constants.EPSILON;
|
|
3215
3212
|
|
|
3216
3213
|
// Save to scene graph
|
|
3217
3214
|
|
package/lib/utils/geometry.js
CHANGED
|
@@ -821,6 +821,7 @@ function getAllItems(scene, catalog, allLineRects) {
|
|
|
821
821
|
}
|
|
822
822
|
function getAllItemSpecified(scene, catalog, filter) {
|
|
823
823
|
var _scene$layers, _scene$layers$get;
|
|
824
|
+
var snappedLineRect = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
|
|
824
825
|
var layerID = scene === null || scene === void 0 ? void 0 : scene.selectedLayer;
|
|
825
826
|
var layer = scene === null || scene === void 0 || (_scene$layers = scene.layers) === null || _scene$layers === void 0 || (_scene$layers$get = _scene$layers.get) === null || _scene$layers$get === void 0 ? void 0 : _scene$layers$get.call(_scene$layers, layerID);
|
|
826
827
|
if (!layer || !layer.items) return {
|
|
@@ -867,6 +868,39 @@ function getAllItemSpecified(scene, catalog, filter) {
|
|
|
867
868
|
|
|
868
869
|
// Current vs others
|
|
869
870
|
var rect = getCalcRectFromItem3D(val);
|
|
871
|
+
|
|
872
|
+
// check current item is snapped to the [snappedLineRect]
|
|
873
|
+
if (!(0, _helper.isEmpty)(snappedLineRect)) {
|
|
874
|
+
var isSnapped = false;
|
|
875
|
+
var overlapList = [_constants.OVERLAP_INCLUDED, _constants.OVERLAP_SAME, _constants.OVERLAP_SOME];
|
|
876
|
+
for (var i = 0; i < (rect === null || rect === void 0 || (_rect$rect = rect.rect) === null || _rect$rect === void 0 ? void 0 : _rect$rect.length); i++) {
|
|
877
|
+
var _rect$rect;
|
|
878
|
+
if (isSnapped) break;
|
|
879
|
+
var curItemPt = rect.rect[i];
|
|
880
|
+
var nextItemPt = i === rect.rect.length - 1 ? rect.rect[0] : rect.rect[i + 1];
|
|
881
|
+
var srcLine = {
|
|
882
|
+
x1: curItemPt.x,
|
|
883
|
+
y1: curItemPt.y,
|
|
884
|
+
x2: nextItemPt.x,
|
|
885
|
+
y2: nextItemPt.y
|
|
886
|
+
};
|
|
887
|
+
for (var j = 0; j < (snappedLineRect === null || snappedLineRect === void 0 ? void 0 : snappedLineRect.length); j++) {
|
|
888
|
+
var curLineRectPt = snappedLineRect[j];
|
|
889
|
+
var nextLineRectPt = j === snappedLineRect.length - 1 ? snappedLineRect[0] : snappedLineRect[j + 1];
|
|
890
|
+
var destLine = {
|
|
891
|
+
x1: curLineRectPt.x,
|
|
892
|
+
y1: curLineRectPt.y,
|
|
893
|
+
x2: nextLineRectPt.x,
|
|
894
|
+
y2: nextLineRectPt.y
|
|
895
|
+
};
|
|
896
|
+
if (overlapList.includes(relationshipOfTwoOverlappedLines(srcLine, destLine).result)) {
|
|
897
|
+
isSnapped = true;
|
|
898
|
+
break;
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
}
|
|
902
|
+
if (!isSnapped) return;
|
|
903
|
+
}
|
|
870
904
|
if (item.selected) {
|
|
871
905
|
curiteminfo = rect;
|
|
872
906
|
} else {
|
|
@@ -2845,15 +2879,15 @@ function getSnappedWallLines(item, layer, catalog) {
|
|
|
2845
2879
|
var _loop2 = function _loop2(j) {
|
|
2846
2880
|
var destLine1 = {
|
|
2847
2881
|
x1: rectLines[j].rect[2].x,
|
|
2848
|
-
y1: rectLines[j].rect[
|
|
2849
|
-
x2:
|
|
2850
|
-
y2:
|
|
2882
|
+
y1: rectLines[j].rect[2].y,
|
|
2883
|
+
x2: rectLines[j].rect[3].x,
|
|
2884
|
+
y2: rectLines[j].rect[3].y
|
|
2851
2885
|
};
|
|
2852
2886
|
var destLine2 = {
|
|
2853
2887
|
x1: rectLines[j].rect[0].x,
|
|
2854
|
-
y1: rectLines[j].rect[
|
|
2855
|
-
x2:
|
|
2856
|
-
y2:
|
|
2888
|
+
y1: rectLines[j].rect[0].y,
|
|
2889
|
+
x2: rectLines[j].rect[1].x,
|
|
2890
|
+
y2: rectLines[j].rect[1].y
|
|
2857
2891
|
};
|
|
2858
2892
|
if (overlapList.includes(relationshipOfTwoOverlappedLines(srcLine, destLine1).result) || overlapList.includes(relationshipOfTwoOverlappedLines(srcLine, destLine2).result)) {
|
|
2859
2893
|
var idx = snappedWallLines.findIndex(function (v) {
|
|
@@ -2862,6 +2896,7 @@ function getSnappedWallLines(item, layer, catalog) {
|
|
|
2862
2896
|
var snapSide = 'unknown';
|
|
2863
2897
|
if (idx < 0) snappedWallLines.push({
|
|
2864
2898
|
id: rectLines[j].lineId,
|
|
2899
|
+
lineRect: rectLines[j].rect,
|
|
2865
2900
|
snapSide: snapSide
|
|
2866
2901
|
});else snappedWallLines[idx].snapSide = snapSide;
|
|
2867
2902
|
}
|
|
@@ -2901,6 +2936,7 @@ function getSnappedWallLines(item, layer, catalog) {
|
|
|
2901
2936
|
var snapSide = _i === 0 || _i === 2 ? 'front' : 'side';
|
|
2902
2937
|
if (idx < 0) snappedWallLines.push({
|
|
2903
2938
|
id: rectLines[_j].lineId,
|
|
2939
|
+
lineRect: rectLines[_j].rect,
|
|
2904
2940
|
snapSide: snapSide
|
|
2905
2941
|
});else snappedWallLines[idx].snapSide = snapSide;
|
|
2906
2942
|
}
|