kitchen-simulator 4.0.8 → 4.0.9
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.
- package/es/catalog/factories/wall-factory.js +1 -1
- package/es/class/layer.js +1 -1
- package/es/class/project.js +2 -0
- package/es/components/viewer2d/line.js +5 -5
- package/es/components/viewer2d/ruler.js +16 -13
- package/es/components/viewer2d/rulerDist.js +38 -52
- package/es/components/viewer2d/viewer2d.js +9 -5
- package/es/components/viewer3d/scene-creator.js +31 -13
- package/es/components/viewer3d/viewer3d.js +17 -12
- package/es/utils/isolate-event-handler.js +6 -6
- package/es/utils/molding.js +4 -2
- package/es/utils/ruler.js +58 -0
- package/lib/catalog/factories/wall-factory.js +1 -1
- package/lib/class/layer.js +1 -1
- package/lib/class/project.js +2 -0
- package/lib/components/viewer2d/line.js +5 -5
- package/lib/components/viewer2d/ruler.js +15 -12
- package/lib/components/viewer2d/rulerDist.js +38 -52
- package/lib/components/viewer2d/viewer2d.js +9 -5
- package/lib/components/viewer3d/scene-creator.js +30 -12
- package/lib/components/viewer3d/viewer3d.js +17 -12
- package/lib/utils/isolate-event-handler.js +6 -6
- package/lib/utils/molding.js +4 -2
- package/lib/utils/ruler.js +63 -0
- package/package.json +1 -1
package/es/class/layer.js
CHANGED
|
@@ -567,7 +567,7 @@ var Layer = /*#__PURE__*/function () {
|
|
|
567
567
|
return v.id !== vertexID && GeometryUtils.samePoints(vertex, v) // &&
|
|
568
568
|
//!v.lines.contains( vertexID ) &&
|
|
569
569
|
//!v.areas.contains( vertexID )
|
|
570
|
-
|
|
570
|
+
;
|
|
571
571
|
});
|
|
572
572
|
if (doubleVertices.isEmpty()) return {
|
|
573
573
|
updatedState: state
|
package/es/class/project.js
CHANGED
|
@@ -170,6 +170,8 @@ var Project = /*#__PURE__*/function () {
|
|
|
170
170
|
// Matching state.doorStyle with layer.doorStyle
|
|
171
171
|
if (state.getIn(['scene', 'layers', layerID, 'doorStyle'])) {
|
|
172
172
|
doorStyle = state.getIn(['scene', 'layers', layerID, 'doorStyle']);
|
|
173
|
+
} else if (!isEmpty(doorStyle)) {
|
|
174
|
+
state = state.setIn(['scene', 'layers', layerID, 'doorStyle'], doorStyle);
|
|
173
175
|
}
|
|
174
176
|
state = state.merge({
|
|
175
177
|
doorStyle: doorStyle,
|
|
@@ -34,28 +34,28 @@ export var STYLE_ROOM_SHAPE = {
|
|
|
34
34
|
var STYLE_DASH = {
|
|
35
35
|
stroke: DASH_LINE_COLOR,
|
|
36
36
|
strokeDasharray: '4 4',
|
|
37
|
-
strokeWidth: '
|
|
37
|
+
strokeWidth: '1px',
|
|
38
38
|
strokeLinecap: 'round'
|
|
39
39
|
};
|
|
40
40
|
var STYLE_ROOM_ELEMENT = {
|
|
41
41
|
fill: ROOM_ELEMENT_MEASUREMENT_LINE_COLOR,
|
|
42
42
|
stroke: ROOM_ELEMENT_MEASUREMENT_LINE_COLOR,
|
|
43
|
-
strokeWidth: '
|
|
43
|
+
strokeWidth: '1.5px'
|
|
44
44
|
};
|
|
45
45
|
var STYLE_BASE_ITEM = {
|
|
46
46
|
fill: BASE_ITEM_MEASUREMENT_LINE_COLOR,
|
|
47
47
|
stroke: BASE_ITEM_MEASUREMENT_LINE_COLOR,
|
|
48
|
-
strokeWidth: '
|
|
48
|
+
strokeWidth: '1.5px'
|
|
49
49
|
};
|
|
50
50
|
var STYLE_WALL_ITEM = {
|
|
51
51
|
fill: WALL_ITEM_MEASUREMENT_LINE_COLOR,
|
|
52
52
|
stroke: WALL_ITEM_MEASUREMENT_LINE_COLOR,
|
|
53
|
-
strokeWidth: '
|
|
53
|
+
strokeWidth: '1.5px'
|
|
54
54
|
};
|
|
55
55
|
var STYLE_DISTANCE = {
|
|
56
56
|
fill: DISTANCE_MEASUREMENT_LINE_COLOR,
|
|
57
57
|
stroke: DISTANCE_MEASUREMENT_LINE_COLOR,
|
|
58
|
-
strokeWidth: '
|
|
58
|
+
strokeWidth: '1.5px'
|
|
59
59
|
};
|
|
60
60
|
var selectStyle = function selectStyle(element, style) {
|
|
61
61
|
return element.iFlag ? style : STYLE_DISTANCE;
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import { convert } from "../../utils/convert-units-lite";
|
|
4
3
|
import IDBroker from "../../utils/id-broker";
|
|
5
|
-
import {
|
|
4
|
+
import { TEXT_COLOR_NEUTRAL_7 } from "../../constants";
|
|
6
5
|
import { STYLE_ROOM_SHAPE } from "./line";
|
|
7
|
-
|
|
8
|
-
stroke: TEXT_COLOR_NEUTRAL_7,
|
|
9
|
-
strokeWidth: '1px'
|
|
10
|
-
};
|
|
6
|
+
import { getRulerDisplayData } from "../../utils/ruler";
|
|
11
7
|
var BACKGROUNDSTYLE = {
|
|
12
8
|
fill: 'transparent',
|
|
13
9
|
fillOpacity: 0.8
|
|
@@ -31,13 +27,20 @@ export default function Ruler(_ref) {
|
|
|
31
27
|
rulerUnit = _ref.rulerUnit,
|
|
32
28
|
transform = _ref.transform,
|
|
33
29
|
style = _ref.style;
|
|
34
|
-
var
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
var _getRulerDisplayData = getRulerDisplayData({
|
|
31
|
+
length: length,
|
|
32
|
+
unit: unit,
|
|
33
|
+
rulerUnit: rulerUnit,
|
|
34
|
+
layerUnit: layer.unit
|
|
35
|
+
}),
|
|
36
|
+
distanceText = _getRulerDisplayData.distanceText,
|
|
37
|
+
unitStr = _getRulerDisplayData.unitStr,
|
|
38
|
+
textLength = _getRulerDisplayData.textLength,
|
|
39
|
+
bShowText = _getRulerDisplayData.bShowText,
|
|
40
|
+
bShowLine = _getRulerDisplayData.bShowLine;
|
|
38
41
|
return /*#__PURE__*/React.createElement("g", {
|
|
39
42
|
transform: transform
|
|
40
|
-
}, /*#__PURE__*/React.createElement("g", {
|
|
43
|
+
}, bShowText && /*#__PURE__*/React.createElement("g", {
|
|
41
44
|
id: "ruler"
|
|
42
45
|
}, /*#__PURE__*/React.createElement("rect", {
|
|
43
46
|
id: "ruler_rect_".concat(IDBroker.acquireID()),
|
|
@@ -54,7 +57,7 @@ export default function Ruler(_ref) {
|
|
|
54
57
|
transform: "scale(1, -1)",
|
|
55
58
|
style: STYLE_TEXT,
|
|
56
59
|
fill: TEXT_COLOR_NEUTRAL_7
|
|
57
|
-
}, distanceText,
|
|
60
|
+
}, distanceText, unitStr)), bShowLine && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("line", {
|
|
58
61
|
x1: style === STYLE_ROOM_SHAPE ? 0 : 4,
|
|
59
62
|
y1: "0",
|
|
60
63
|
x2: (length - textLength) / 2 < 0 ? 0 : (length - textLength) / 2,
|
|
@@ -72,7 +75,7 @@ export default function Ruler(_ref) {
|
|
|
72
75
|
}), /*#__PURE__*/React.createElement("polygon", {
|
|
73
76
|
points: "".concat(length - 3, ", 0, ").concat(length - 6.5, ", 2, ").concat(length - 6.5, ", -2"),
|
|
74
77
|
style: style
|
|
75
|
-
})));
|
|
78
|
+
}))));
|
|
76
79
|
}
|
|
77
80
|
Ruler.propTypes = {
|
|
78
81
|
length: PropTypes.number.isRequired,
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import {
|
|
4
|
-
import { UNIT_FOOT, UNIT_METER } from "../../constants";
|
|
5
|
-
var ARROW_STYLE = {
|
|
6
|
-
stroke: '#1183B7',
|
|
7
|
-
strokeWidth: '2px',
|
|
8
|
-
strokeLinecap: 'round'
|
|
9
|
-
};
|
|
3
|
+
import { getRulerDisplayData } from "../../utils/ruler";
|
|
10
4
|
var STYLE = {
|
|
11
5
|
stroke: '#455A64',
|
|
12
6
|
fill: '#455A64',
|
|
@@ -32,10 +26,17 @@ export default function RulerDist(_ref) {
|
|
|
32
26
|
transform = _ref.transform,
|
|
33
27
|
angle = _ref.angle,
|
|
34
28
|
rotation = _ref.rotation;
|
|
35
|
-
var
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
29
|
+
var _getRulerDisplayData = getRulerDisplayData({
|
|
30
|
+
length: length,
|
|
31
|
+
unit: unit,
|
|
32
|
+
rulerUnit: rulerUnit,
|
|
33
|
+
layerUnit: layer.unit
|
|
34
|
+
}),
|
|
35
|
+
distanceText = _getRulerDisplayData.distanceText,
|
|
36
|
+
unitStr = _getRulerDisplayData.unitStr,
|
|
37
|
+
textLength = _getRulerDisplayData.textLength,
|
|
38
|
+
bShowText = _getRulerDisplayData.bShowText,
|
|
39
|
+
bShowLine = _getRulerDisplayData.bShowLine;
|
|
39
40
|
var textangle = angle + 90;
|
|
40
41
|
var textRotation = 1;
|
|
41
42
|
var ay = 2;
|
|
@@ -67,47 +68,32 @@ export default function RulerDist(_ref) {
|
|
|
67
68
|
textRotation = 180;
|
|
68
69
|
ay = 5;
|
|
69
70
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
style: STYLE
|
|
97
|
-
}), /*#__PURE__*/React.createElement("line", {
|
|
98
|
-
x1: (length + textLength) / 2 < 0 ? 0 : (length + textLength) / 2 < length ? (length + textLength) / 2 : length,
|
|
99
|
-
y1: "0",
|
|
100
|
-
x2: length,
|
|
101
|
-
y2: "0",
|
|
102
|
-
style: STYLE
|
|
103
|
-
}), /*#__PURE__*/React.createElement("polygon", {
|
|
104
|
-
points: "".concat(length - 1, ", 0, ").concat(length - 4.5, ", 2, ").concat(length - 4.5, ", -2"),
|
|
105
|
-
style: STYLE
|
|
106
|
-
}));
|
|
107
|
-
}
|
|
108
|
-
} else {
|
|
109
|
-
return null;
|
|
110
|
-
}
|
|
71
|
+
return /*#__PURE__*/React.createElement("g", {
|
|
72
|
+
transform: transform
|
|
73
|
+
}, bShowText && /*#__PURE__*/React.createElement("g", null, /*#__PURE__*/React.createElement("text", {
|
|
74
|
+
x: "0",
|
|
75
|
+
y: "0",
|
|
76
|
+
transform: "translate(".concat(length / 2, ",").concat(ay, ") scale(1, -1) rotate(").concat(textRotation, ")"),
|
|
77
|
+
style: STYLE_TEXT
|
|
78
|
+
}, distanceText, unitStr)), bShowLine && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("line", {
|
|
79
|
+
x1: "2",
|
|
80
|
+
y1: "0",
|
|
81
|
+
x2: (length - textLength) / 2 < 0 ? 0 : (length - textLength) / 2,
|
|
82
|
+
y2: "0",
|
|
83
|
+
style: STYLE
|
|
84
|
+
}), /*#__PURE__*/React.createElement("polygon", {
|
|
85
|
+
points: "1, 0, 4.5, -2, 4.5, 2 ",
|
|
86
|
+
style: STYLE
|
|
87
|
+
}), /*#__PURE__*/React.createElement("line", {
|
|
88
|
+
x1: (length + textLength) / 2 < 0 ? 0 : (length + textLength) / 2 < length ? (length + textLength) / 2 : length,
|
|
89
|
+
y1: "0",
|
|
90
|
+
x2: length,
|
|
91
|
+
y2: "0",
|
|
92
|
+
style: STYLE
|
|
93
|
+
}), /*#__PURE__*/React.createElement("polygon", {
|
|
94
|
+
points: "".concat(length - 1, ", 0, ").concat(length - 4.5, ", 2, ").concat(length - 4.5, ", -2"),
|
|
95
|
+
style: STYLE
|
|
96
|
+
})));
|
|
111
97
|
}
|
|
112
98
|
RulerDist.propTypes = {
|
|
113
99
|
length: PropTypes.number.isRequired,
|
|
@@ -835,11 +835,15 @@ export default function Viewer2D(_ref, _ref2) {
|
|
|
835
835
|
var event = viewerEvent.originalEvent;
|
|
836
836
|
var parent = document.querySelector('#kitchen-simulator-container');
|
|
837
837
|
var targetRect = event.target.getBoundingClientRect();
|
|
838
|
-
var
|
|
839
|
-
var
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
838
|
+
var left = targetRect.left;
|
|
839
|
+
var top = targetRect.top;
|
|
840
|
+
if (!isEmpty(parent)) {
|
|
841
|
+
var parentRect = parent.getBoundingClientRect();
|
|
842
|
+
left = targetRect.left - parentRect.left;
|
|
843
|
+
top = targetRect.top - parentRect.top;
|
|
844
|
+
left = left - (200 - targetRect.width) / 2;
|
|
845
|
+
top = top - (50 - targetRect.height) / 2;
|
|
846
|
+
}
|
|
843
847
|
if (!mode.includes('ING')) {
|
|
844
848
|
setToolbar('');
|
|
845
849
|
}
|
|
@@ -12,7 +12,7 @@ import { disposeObject } from "./three-memory-cleaner";
|
|
|
12
12
|
import { ANIMATE_STEP_MAX, ANIMATE_STEP_MIN, ARRAY_3D_MODES, ARROW_TEXT_BACKCOLOR, ARROW_TEXT_FONTFACE, ARROW_TEXT_FORECOLOR, BASE_CABINET_LAYOUTPOS, BOTTOM_MOLDING_LOCATION, DECIMAL_PLACES_2, DIFFERENT_VALUES_PATH_LENGTH, DISTANCE_EPSILON, EPSILON, MIDDLE_MOLDING_LOCATION, MODE_DRAGGING_ITEM_3D, MODE_DRAWING_ITEM_3D, MODE_IDLE, MODE_IDLE_3D, MODE_ROTATING_ITEM_3D, OBJTYPE_MESH, SHADE_DARK_PURPLE_COLOR, TOP_MOLDING_LOCATION, UNIT_CENTIMETER, UNIT_FOOT, UNIT_INCH, UNIT_METER, WALL_CABINET_LAYOUTPOS } from "../../constants";
|
|
13
13
|
import { GeometryUtils, IDBroker, MoldingUtils } from "../../utils/export";
|
|
14
14
|
import { convert } from "../../utils/convert-units-lite";
|
|
15
|
-
import { verticesDistance } from "../../utils/geometry";
|
|
15
|
+
import { calcDistancesFromItemToWalls, verticesDistance } from "../../utils/geometry";
|
|
16
16
|
import * as GeomUtils from "../../catalog/utils/geom-utils";
|
|
17
17
|
import { loadTexture } from "../../catalog/utils/item-loader";
|
|
18
18
|
import { returnReplaceableDeepSearchType } from "../viewer2d/utils";
|
|
@@ -479,19 +479,19 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
|
|
|
479
479
|
if (modifiedPath[keyIndex] == 'rotation') {
|
|
480
480
|
item3D.rotation.set(0, value * Math.PI / 180 + Math.PI, 0);
|
|
481
481
|
setTimeout(function () {
|
|
482
|
-
getDistances(layer);
|
|
482
|
+
getDistances(layer, item);
|
|
483
483
|
}, 50);
|
|
484
484
|
removeSelItemMesh(tmpMoldings, item, planData, mode);
|
|
485
485
|
} else if (modifiedPath[keyIndex] == 'x') {
|
|
486
486
|
item3D.position.x = value;
|
|
487
487
|
setTimeout(function () {
|
|
488
|
-
getDistances(layer);
|
|
488
|
+
getDistances(layer, item);
|
|
489
489
|
}, 50);
|
|
490
490
|
removeSelItemMesh(tmpMoldings, item, planData, mode);
|
|
491
491
|
} else if (modifiedPath[keyIndex] == 'y') {
|
|
492
492
|
item3D.position.z = -value;
|
|
493
493
|
setTimeout(function () {
|
|
494
|
-
getDistances(layer);
|
|
494
|
+
getDistances(layer, item);
|
|
495
495
|
}, 50);
|
|
496
496
|
removeSelItemMesh(tmpMoldings, item, planData, mode);
|
|
497
497
|
} else if (modifiedPath[keyIndex] == 'selected') {
|
|
@@ -717,7 +717,7 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
|
|
|
717
717
|
return actions.itemsActions.selectItem(layer.id, modifiedPath[4]);
|
|
718
718
|
});
|
|
719
719
|
setTimeout(function () {
|
|
720
|
-
getDistances(layer);
|
|
720
|
+
getDistances(layer, item);
|
|
721
721
|
}, 100);
|
|
722
722
|
}
|
|
723
723
|
} else if (modifiedPath[keyIndex] == 'length') {
|
|
@@ -845,7 +845,7 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
|
|
|
845
845
|
removeItemWithoutItem(planData, layer.id, modifiedPath[4]);
|
|
846
846
|
promises.push(addItem(sceneData, planData, layer, modifiedPath[4], catalog, actions.itemsActions, mode, null, rItem));
|
|
847
847
|
setTimeout(function () {
|
|
848
|
-
getDistances(layer);
|
|
848
|
+
getDistances(layer, item);
|
|
849
849
|
}, 100);
|
|
850
850
|
}
|
|
851
851
|
break;
|
|
@@ -891,7 +891,25 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
|
|
|
891
891
|
promise: p1
|
|
892
892
|
};
|
|
893
893
|
}
|
|
894
|
-
export function getDistances(layer, isCalcWall) {
|
|
894
|
+
export function getDistances(layer, curItem, isCalcWall) {
|
|
895
|
+
// matching fvLine distance with OP
|
|
896
|
+
var pointArray = calcDistancesFromItemToWalls(curItem, layer).PointArray;
|
|
897
|
+
if ((pointArray === null || pointArray === void 0 ? void 0 : pointArray.length) > 0) {
|
|
898
|
+
var _loop2 = function _loop2() {
|
|
899
|
+
var direction = i === 0 ? 90 : i === 1 ? -90 : i === 2 ? 180 : 0;
|
|
900
|
+
if (fVLine[i].userData) {
|
|
901
|
+
var _pointArray$filter$;
|
|
902
|
+
var opDist = (_pointArray$filter$ = pointArray.filter(function (v) {
|
|
903
|
+
return v[1] === direction;
|
|
904
|
+
})[0]) !== null && _pointArray$filter$ !== void 0 ? _pointArray$filter$ : fVLine[i].userData.distance;
|
|
905
|
+
fVLine[i].userData.opDist = opDist[0];
|
|
906
|
+
}
|
|
907
|
+
};
|
|
908
|
+
for (var i = 0; i < ((_fVLine = fVLine) === null || _fVLine === void 0 ? void 0 : _fVLine.length); i++) {
|
|
909
|
+
var _fVLine;
|
|
910
|
+
_loop2();
|
|
911
|
+
}
|
|
912
|
+
}
|
|
895
913
|
fVLine.forEach(function (line, index) {
|
|
896
914
|
getLineDistance(line, layer, isEmpty(isCalcWall) ? false : isCalcWall, index);
|
|
897
915
|
});
|
|
@@ -1809,7 +1827,7 @@ function addArea(sceneData, planData, layer, areaID, catalog, areaActions, mode)
|
|
|
1809
1827
|
layer.lines.forEach(function (data) {
|
|
1810
1828
|
lines.push(data);
|
|
1811
1829
|
});
|
|
1812
|
-
var
|
|
1830
|
+
var _loop3 = function _loop3() {
|
|
1813
1831
|
var data = lines[i];
|
|
1814
1832
|
var realVec = [];
|
|
1815
1833
|
data.vertices.forEach(function (vec) {
|
|
@@ -1822,7 +1840,7 @@ function addArea(sceneData, planData, layer, areaID, catalog, areaActions, mode)
|
|
|
1822
1840
|
}
|
|
1823
1841
|
};
|
|
1824
1842
|
for (var i = 0; i < lines.length; i++) {
|
|
1825
|
-
if (
|
|
1843
|
+
if (_loop3()) break;
|
|
1826
1844
|
}
|
|
1827
1845
|
ceil.translateZ(convert(layer.ceilHeight).from(layer.unit).to(UNIT_CENTIMETER));
|
|
1828
1846
|
pivot.name = 'pivot';
|
|
@@ -1934,7 +1952,7 @@ function addItem(sceneData, planData, layer, itemID, catalog, itemsActions) {
|
|
|
1934
1952
|
if (child.type === 'Line' && child.geometry.attributes !== undefined) fVLine.push(child);
|
|
1935
1953
|
});
|
|
1936
1954
|
setTimeout(function () {
|
|
1937
|
-
getDistances();
|
|
1955
|
+
getDistances(layer, item);
|
|
1938
1956
|
}, 50);
|
|
1939
1957
|
}
|
|
1940
1958
|
applyOpacity(pivot, opacity);
|
|
@@ -2049,7 +2067,7 @@ function addItem(sceneData, planData, layer, itemID, catalog, itemsActions) {
|
|
|
2049
2067
|
return itemsActions.selectItem(layer.id, item.id);
|
|
2050
2068
|
});
|
|
2051
2069
|
setTimeout(function () {
|
|
2052
|
-
return getDistances(layer);
|
|
2070
|
+
return getDistances(layer, item);
|
|
2053
2071
|
}, 100);
|
|
2054
2072
|
if (!sceneData.loadFlag && scene_mode == MODE_DRAWING_ITEM_3D) {
|
|
2055
2073
|
itemsActions.endLoading();
|
|
@@ -3387,7 +3405,7 @@ export function updateMoldingGroupArray(MGArray, selItem, planData, layer) {
|
|
|
3387
3405
|
if (isEmpty(filteredNewMGList)) {
|
|
3388
3406
|
return true;
|
|
3389
3407
|
}
|
|
3390
|
-
var
|
|
3408
|
+
var _loop4 = function _loop4() {
|
|
3391
3409
|
var newMG = filteredNewMGList[k];
|
|
3392
3410
|
if (oldMG.items.some(function (it) {
|
|
3393
3411
|
return it.id === selItem.id;
|
|
@@ -3440,7 +3458,7 @@ export function updateMoldingGroupArray(MGArray, selItem, planData, layer) {
|
|
|
3440
3458
|
},
|
|
3441
3459
|
_ret;
|
|
3442
3460
|
for (var k = 0; k < filteredNewMGList.length; k++) {
|
|
3443
|
-
_ret =
|
|
3461
|
+
_ret = _loop4();
|
|
3444
3462
|
if (_ret) return _ret.v;
|
|
3445
3463
|
}
|
|
3446
3464
|
return true;
|
|
@@ -816,6 +816,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
816
816
|
this.snap = function (obj, layer) {
|
|
817
817
|
// snap operation
|
|
818
818
|
var target = obj.userData.target;
|
|
819
|
+
if (isEmpty(target)) return;
|
|
819
820
|
for (; target.parent != null;) {
|
|
820
821
|
if (target.name == 'pivot') break;
|
|
821
822
|
target = target.parent;
|
|
@@ -1361,10 +1362,12 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1361
1362
|
}
|
|
1362
1363
|
};
|
|
1363
1364
|
this.mouseUpEvent = function (event) {
|
|
1365
|
+
var _selectedObject;
|
|
1364
1366
|
var internalType = ''; // internalEvent type - select/drag/draw
|
|
1365
1367
|
var selectedElement; // internalEvent data
|
|
1366
1368
|
firstMove = 0;
|
|
1367
1369
|
var altitude = 0;
|
|
1370
|
+
var curLayer = _this2.props.state.scene.getIn(['layers', (_selectedObject = selectedObject) === null || _selectedObject === void 0 ? void 0 : _selectedObject.layerID]);
|
|
1368
1371
|
if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
|
|
1369
1372
|
var properties = allItemRect.cur.itemInfo.properties;
|
|
1370
1373
|
altitude = properties.getIn(['altitude', '_length']);
|
|
@@ -1385,7 +1388,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1385
1388
|
actions.itemsActions.endDrawingItem(_this2.props.state.scene.selectedLayer, sPoint.x, sPoint.y);
|
|
1386
1389
|
} else {
|
|
1387
1390
|
removeSnapBox();
|
|
1388
|
-
var polygon = GeometryUtils.getPoylgonPoints(layer);
|
|
1391
|
+
var polygon = GeometryUtils.getPoylgonPoints(curLayer !== null && curLayer !== void 0 ? curLayer : layer);
|
|
1389
1392
|
// if cursor is outside of room
|
|
1390
1393
|
if (polygon.length > 0 && !GeometryUtils.ContainsPoint(polygon, Point.x, Point.y)) {
|
|
1391
1394
|
actions.itemsActions.endDrawingItem(_this2.props.state.scene.selectedLayer, sPoint.x, sPoint.y);
|
|
@@ -1479,8 +1482,8 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1479
1482
|
}
|
|
1480
1483
|
gridMatrix.copy(gridPlane.matrixWorld).invert();
|
|
1481
1484
|
var addItemToolObj = function addItemToolObj() {
|
|
1482
|
-
var _planData$sceneGraph,
|
|
1483
|
-
var selectedItem = (_planData$sceneGraph = planData.sceneGraph) === null || _planData$sceneGraph === void 0 || (_planData$sceneGraph = _planData$sceneGraph.layers[selectedObject.layerID]) === null || _planData$sceneGraph === void 0 ? void 0 : _planData$sceneGraph.items[(
|
|
1485
|
+
var _planData$sceneGraph, _selectedObject2, _intersects$_i;
|
|
1486
|
+
var selectedItem = (_planData$sceneGraph = planData.sceneGraph) === null || _planData$sceneGraph === void 0 || (_planData$sceneGraph = _planData$sceneGraph.layers[selectedObject.layerID]) === null || _planData$sceneGraph === void 0 ? void 0 : _planData$sceneGraph.items[(_selectedObject2 = selectedObject) === null || _selectedObject2 === void 0 ? void 0 : _selectedObject2.itemID];
|
|
1484
1487
|
if (isUndefined(selectedItem)) return;
|
|
1485
1488
|
selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
1486
1489
|
var itemPos = selectedItem.position.clone();
|
|
@@ -1513,8 +1516,9 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1513
1516
|
}
|
|
1514
1517
|
isSelected = true;
|
|
1515
1518
|
setTimeout(function () {
|
|
1516
|
-
|
|
1519
|
+
var _curLayer$id;
|
|
1517
1520
|
addItemToolObj();
|
|
1521
|
+
getDistances(curLayer !== null && curLayer !== void 0 ? curLayer : layer, selectedElement);
|
|
1518
1522
|
_this2.setState({
|
|
1519
1523
|
toolObj: toolObj
|
|
1520
1524
|
});
|
|
@@ -1524,8 +1528,8 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1524
1528
|
// pointArray.push([fVLine[1].userData.distance, -90]);
|
|
1525
1529
|
// pointArray.push([fVLine[2].userData.distance, 180]);
|
|
1526
1530
|
// pointArray.push([fVLine[3].userData.distance, 0]);
|
|
1527
|
-
pointArray = GeometryUtils.calcDistancesFromItemToWalls(selectedElement, layer).PointArray;
|
|
1528
|
-
actions.itemsActions.storeDistArray(layer.id, selectedObject.itemID, pointArray);
|
|
1531
|
+
pointArray = GeometryUtils.calcDistancesFromItemToWalls(selectedElement, curLayer !== null && curLayer !== void 0 ? curLayer : layer).PointArray;
|
|
1532
|
+
actions.itemsActions.storeDistArray((_curLayer$id = curLayer === null || curLayer === void 0 ? void 0 : curLayer.id) !== null && _curLayer$id !== void 0 ? _curLayer$id : layer.id, selectedObject.itemID, pointArray);
|
|
1529
1533
|
internalType = internalType ? internalType : INTERNAL_EVENT_SELECT_ELEMENT;
|
|
1530
1534
|
sendInternalEvent(internalType, selectedElement, pointArray);
|
|
1531
1535
|
});
|
|
@@ -1577,11 +1581,11 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1577
1581
|
bRotate = false;
|
|
1578
1582
|
bMoveUP = false;
|
|
1579
1583
|
if (isSelected) {
|
|
1580
|
-
prepareSnap(layer);
|
|
1584
|
+
prepareSnap(curLayer !== null && curLayer !== void 0 ? curLayer : layer);
|
|
1581
1585
|
selectedObj = allItemRect.cur;
|
|
1582
1586
|
}
|
|
1583
1587
|
} else {
|
|
1584
|
-
var _planData$sceneGraph2,
|
|
1588
|
+
var _planData$sceneGraph2, _selectedObject3, _selectedObject4;
|
|
1585
1589
|
visibleTransformBox(false);
|
|
1586
1590
|
var alti = 0;
|
|
1587
1591
|
if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
|
|
@@ -1591,7 +1595,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1591
1595
|
alti = convert(alti).from(_unit2).to(_this2.props.state.scene.unit);
|
|
1592
1596
|
}
|
|
1593
1597
|
getPoint(event, alti);
|
|
1594
|
-
var _selectedItem = planData === null || planData === void 0 || (_planData$sceneGraph2 = planData.sceneGraph) === null || _planData$sceneGraph2 === void 0 || (_planData$sceneGraph2 = _planData$sceneGraph2.layers[(
|
|
1598
|
+
var _selectedItem = planData === null || planData === void 0 || (_planData$sceneGraph2 = planData.sceneGraph) === null || _planData$sceneGraph2 === void 0 || (_planData$sceneGraph2 = _planData$sceneGraph2.layers[(_selectedObject3 = selectedObject) === null || _selectedObject3 === void 0 ? void 0 : _selectedObject3.layerID]) === null || _planData$sceneGraph2 === void 0 ? void 0 : _planData$sceneGraph2.items[(_selectedObject4 = selectedObject) === null || _selectedObject4 === void 0 ? void 0 : _selectedObject4.itemID];
|
|
1595
1599
|
if (isSelected && !isEmpty(_selectedItem)) addItemToolObj();
|
|
1596
1600
|
if (bRotate) {
|
|
1597
1601
|
_this2.setState({
|
|
@@ -1629,7 +1633,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
1629
1633
|
removeSnapBox();
|
|
1630
1634
|
actions.sceneActions.updateMovingState(true);
|
|
1631
1635
|
if (isSelected === true) {
|
|
1632
|
-
prepareSnap(layer);
|
|
1636
|
+
prepareSnap(curLayer !== null && curLayer !== void 0 ? curLayer : layer);
|
|
1633
1637
|
selectedObj = allItemRect.cur;
|
|
1634
1638
|
}
|
|
1635
1639
|
}
|
|
@@ -2028,8 +2032,9 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2028
2032
|
// handle snapBox, distArray, backsplash
|
|
2029
2033
|
this.handleAfterMovingItem = function () {
|
|
2030
2034
|
var layer = _this2.props.state.scene.getIn(['layers', selectedObject.layerID]);
|
|
2035
|
+
var item = layer.getIn(['items', selectedObject.itemID]);
|
|
2031
2036
|
var item3D = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
2032
|
-
getDistances(layer);
|
|
2037
|
+
getDistances(layer, item);
|
|
2033
2038
|
var pointArray = [],
|
|
2034
2039
|
cnt = 0;
|
|
2035
2040
|
pointArray.push([fVLine[0].userData.distance, 90]);
|
|
@@ -2068,7 +2073,7 @@ var Scene3DViewer = /*#__PURE__*/function (_React$Component) {
|
|
|
2068
2073
|
if (minDis < snapDelta && !snapFlag) {
|
|
2069
2074
|
_this2.snap(snapObj, layer);
|
|
2070
2075
|
snapFlag = true;
|
|
2071
|
-
getDistances(layer);
|
|
2076
|
+
getDistances(layer, item);
|
|
2072
2077
|
var _i13 = 0;
|
|
2073
2078
|
for (_i13 = 0; _i13 < fVLine.length; _i13++) {
|
|
2074
2079
|
if (fVLine[_i13].userData.distance < snapDelta) {
|
|
@@ -1234,7 +1234,7 @@ export function handleExternalEvent(_x10) {
|
|
|
1234
1234
|
function _handleExternalEvent() {
|
|
1235
1235
|
_handleExternalEvent = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee0(props) {
|
|
1236
1236
|
var _evt$payload3, _evt$payload4;
|
|
1237
|
-
var evt, state, layerId, layer, _evt$payload, cdsItems, itemKeys, _loop6, i, newScene, _props$onInternalEven, sLineCnt, element, _state$viewer2D, _evt$payload$initialP, mouseX, mouseY, v2d, vPosX, vPosY, layerID, defaulTitle, _Object$keys, _evt$payload5, doorStyle, itemCDS, isAll, _layerId, _cdsItems, allItems, selectedItemId, _itemKeys, _loop7, _i2, _props$onInternalEven2, _evt$payload6, roomShapeType, width, height, _doorStyle, value, _value, _evt$payload7, moldingInfo, isGlobal, distElement, _distElement, _evt$payload8, option, _value2, _layerId2, _layer, _layer$getIn, selectedLines, selectedHoles, selectedItems, _i4, _i5, _i6, _evt$payload9, _evt$payload0, _evt$payload1, _evt$payload10, _layerID, _layer2, orginalItemInfo, originalItem, originalItemPos, replaceItem, _props$onInternalEven3, sceneData, currentTexture, _t5, _t6;
|
|
1237
|
+
var evt, state, layerId, layer, _evt$payload, _state$catalog, cdsItems, itemKeys, _loop6, i, newScene, tempState, _props$onInternalEven, sLineCnt, element, _state$viewer2D, _evt$payload$initialP, mouseX, mouseY, v2d, vPosX, vPosY, layerID, defaulTitle, _Object$keys, _evt$payload5, doorStyle, itemCDS, isAll, _layerId, _cdsItems, allItems, selectedItemId, _itemKeys, _loop7, _i2, _props$onInternalEven2, _evt$payload6, roomShapeType, width, height, _doorStyle, value, _value, _evt$payload7, moldingInfo, isGlobal, distElement, _distElement, _evt$payload8, option, _value2, _layerId2, _layer, _layer$getIn, selectedLines, selectedHoles, selectedItems, _i4, _i5, _i6, _evt$payload9, _evt$payload0, _evt$payload1, _evt$payload10, _layerID, _layer2, orginalItemInfo, originalItem, originalItemPos, replaceItem, _props$onInternalEven3, sceneData, currentTexture, _t5, _t6;
|
|
1238
1238
|
return _regeneratorRuntime.wrap(function (_context11) {
|
|
1239
1239
|
while (1) switch (_context11.prev = _context11.next) {
|
|
1240
1240
|
case 0:
|
|
@@ -1302,10 +1302,10 @@ function _handleExternalEvent() {
|
|
|
1302
1302
|
break;
|
|
1303
1303
|
case 5:
|
|
1304
1304
|
newScene = new Scene(evt === null || evt === void 0 ? void 0 : evt.payload);
|
|
1305
|
-
|
|
1306
|
-
scene: newScene.toJS()
|
|
1307
|
-
|
|
1308
|
-
// request item catalog data to host app
|
|
1305
|
+
tempState = new State({
|
|
1306
|
+
scene: newScene.toJS(),
|
|
1307
|
+
catalog: (_state$catalog = state.catalog) === null || _state$catalog === void 0 ? void 0 : _state$catalog.toJS()
|
|
1308
|
+
}); // request item catalog data to host app
|
|
1309
1309
|
if (cdsItems.length > 0) {
|
|
1310
1310
|
(_props$onInternalEven = props.onInternalEvent) === null || _props$onInternalEven === void 0 || _props$onInternalEven.call(props, {
|
|
1311
1311
|
type: INTERNAL_EVENT_ITEMS_CATALOG,
|
|
@@ -1326,7 +1326,7 @@ function _handleExternalEvent() {
|
|
|
1326
1326
|
break;
|
|
1327
1327
|
}
|
|
1328
1328
|
_context9.next = 2;
|
|
1329
|
-
return addItemToCatalog(rt[_i],
|
|
1329
|
+
return addItemToCatalog(rt[_i], tempState, props.catalog, props.projectActions);
|
|
1330
1330
|
case 2:
|
|
1331
1331
|
_i++;
|
|
1332
1332
|
_context9.next = 1;
|
package/es/utils/molding.js
CHANGED
|
@@ -305,6 +305,7 @@ export function getLinesOfItem(item, allLineRects, catalog) {
|
|
|
305
305
|
return lines;
|
|
306
306
|
}
|
|
307
307
|
export function getLinesOfItem2(item, allLineRects, catalog) {
|
|
308
|
+
var _lines;
|
|
308
309
|
var lines = [];
|
|
309
310
|
var outline = null;
|
|
310
311
|
var element = catalog.elements[item.get('type')];
|
|
@@ -317,8 +318,9 @@ export function getLinesOfItem2(item, allLineRects, catalog) {
|
|
|
317
318
|
var hUnit = item.properties.get('depth').get('_unit') || 'cm';
|
|
318
319
|
newDepth = convert(newDepth).from(hUnit).to('cm');
|
|
319
320
|
if (item) {
|
|
321
|
+
var _element;
|
|
320
322
|
// Get Outline Data of Selected Item
|
|
321
|
-
outline = element.info.outline;
|
|
323
|
+
outline = (_element = element) === null || _element === void 0 ? void 0 : _element.info.outline;
|
|
322
324
|
if (outline) {
|
|
323
325
|
// Extract Points from `outline`
|
|
324
326
|
var outlinePaths = outline.paths;
|
|
@@ -359,7 +361,7 @@ export function getLinesOfItem2(item, allLineRects, catalog) {
|
|
|
359
361
|
}
|
|
360
362
|
}
|
|
361
363
|
}
|
|
362
|
-
lines = lines.filter(function (line) {
|
|
364
|
+
lines = (_lines = lines) === null || _lines === void 0 ? void 0 : _lines.filter(function (line) {
|
|
363
365
|
return !GeometryUtils.isSnappedLine({
|
|
364
366
|
rect: [{
|
|
365
367
|
x: 0,
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { convert } from "../utils/convert-units-lite.js";
|
|
2
|
+
import { UNIT_CENTIMETER, UNIT_INCH, UNIT_MILLIMETER } from "../constants";
|
|
3
|
+
|
|
4
|
+
// Below this length, the measurement LINE is hidden
|
|
5
|
+
var MIN_LENGTH_TO_SHOW_RULER_LINE_INCH = 13;
|
|
6
|
+
|
|
7
|
+
// Below this length, the measurement VALUE (text) is hidden
|
|
8
|
+
var MIN_LENGTH_TO_SHOW_RULER_VALUE_INCH = 5;
|
|
9
|
+
function formatDistance(value, fixed) {
|
|
10
|
+
// format with fixed decimals first
|
|
11
|
+
var text = value.toFixed(fixed);
|
|
12
|
+
|
|
13
|
+
// remove trailing zeros AFTER decimal, then remove trailing dot if needed
|
|
14
|
+
// examples:
|
|
15
|
+
// 2.00 -> 2
|
|
16
|
+
// 2.50 -> 2.5
|
|
17
|
+
// 200.00 -> 200
|
|
18
|
+
text = text.replace(/\.?0+$/, '');
|
|
19
|
+
return text;
|
|
20
|
+
}
|
|
21
|
+
function getUnitString(unit) {
|
|
22
|
+
if (unit === 'cm' || unit === 'mm') return '';
|
|
23
|
+
if (unit === 'in') return '"';
|
|
24
|
+
return unit;
|
|
25
|
+
}
|
|
26
|
+
export function getRulerDisplayData(_ref) {
|
|
27
|
+
var length = _ref.length,
|
|
28
|
+
unit = _ref.unit,
|
|
29
|
+
rulerUnit = _ref.rulerUnit,
|
|
30
|
+
layerUnit = _ref.layerUnit,
|
|
31
|
+
_ref$charWidth = _ref.charWidth,
|
|
32
|
+
charWidth = _ref$charWidth === void 0 ? 8 : _ref$charWidth;
|
|
33
|
+
// 7.62 cm -> ruLength 2.99 in
|
|
34
|
+
var ruLength = convert(length).from(unit).to(rulerUnit);
|
|
35
|
+
var fixedLength = layerUnit === UNIT_MILLIMETER ? 0 : layerUnit === UNIT_CENTIMETER ? 1 : 2;
|
|
36
|
+
|
|
37
|
+
// 2.99 in -> valueInLayerUnit 2.99 in
|
|
38
|
+
var valueInLayerUnit = convert(ruLength).from(rulerUnit).to(layerUnit);
|
|
39
|
+
|
|
40
|
+
// 2.99 -> "3"
|
|
41
|
+
var distanceText = formatDistance(valueInLayerUnit, fixedLength);
|
|
42
|
+
var unitStr = getUnitString(layerUnit);
|
|
43
|
+
var textCount = distanceText.length + unitStr.length;
|
|
44
|
+
// textLength = (3 + ") * 8 = 16
|
|
45
|
+
var textLength = textCount * charWidth;
|
|
46
|
+
|
|
47
|
+
// lengthInInch = 7.62 cm -> 2.99 inch
|
|
48
|
+
var lengthInInch = convert(length).from(unit).to(UNIT_INCH);
|
|
49
|
+
var bShowText = lengthInInch > MIN_LENGTH_TO_SHOW_RULER_VALUE_INCH && length - textLength + 24 > 0;
|
|
50
|
+
var bShowLine = lengthInInch > MIN_LENGTH_TO_SHOW_RULER_LINE_INCH && length - textLength - 8 > 0;
|
|
51
|
+
return {
|
|
52
|
+
distanceText: distanceText,
|
|
53
|
+
unitStr: unitStr,
|
|
54
|
+
textLength: textLength,
|
|
55
|
+
bShowText: bShowText,
|
|
56
|
+
bShowLine: bShowLine
|
|
57
|
+
};
|
|
58
|
+
}
|
package/lib/class/layer.js
CHANGED
|
@@ -574,7 +574,7 @@ var Layer = exports["default"] = /*#__PURE__*/function () {
|
|
|
574
574
|
return v.id !== vertexID && _export2.GeometryUtils.samePoints(vertex, v) // &&
|
|
575
575
|
//!v.lines.contains( vertexID ) &&
|
|
576
576
|
//!v.areas.contains( vertexID )
|
|
577
|
-
|
|
577
|
+
;
|
|
578
578
|
});
|
|
579
579
|
if (doubleVertices.isEmpty()) return {
|
|
580
580
|
updatedState: state
|
package/lib/class/project.js
CHANGED
|
@@ -179,6 +179,8 @@ var Project = exports["default"] = /*#__PURE__*/function () {
|
|
|
179
179
|
// Matching state.doorStyle with layer.doorStyle
|
|
180
180
|
if (state.getIn(['scene', 'layers', layerID, 'doorStyle'])) {
|
|
181
181
|
doorStyle = state.getIn(['scene', 'layers', layerID, 'doorStyle']);
|
|
182
|
+
} else if (!(0, _helper.isEmpty)(doorStyle)) {
|
|
183
|
+
state = state.setIn(['scene', 'layers', layerID, 'doorStyle'], doorStyle);
|
|
182
184
|
}
|
|
183
185
|
state = state.merge({
|
|
184
186
|
doorStyle: doorStyle,
|
|
@@ -45,28 +45,28 @@ var STYLE_ROOM_SHAPE = exports.STYLE_ROOM_SHAPE = {
|
|
|
45
45
|
var STYLE_DASH = {
|
|
46
46
|
stroke: _constants.DASH_LINE_COLOR,
|
|
47
47
|
strokeDasharray: '4 4',
|
|
48
|
-
strokeWidth: '
|
|
48
|
+
strokeWidth: '1px',
|
|
49
49
|
strokeLinecap: 'round'
|
|
50
50
|
};
|
|
51
51
|
var STYLE_ROOM_ELEMENT = {
|
|
52
52
|
fill: _constants.ROOM_ELEMENT_MEASUREMENT_LINE_COLOR,
|
|
53
53
|
stroke: _constants.ROOM_ELEMENT_MEASUREMENT_LINE_COLOR,
|
|
54
|
-
strokeWidth: '
|
|
54
|
+
strokeWidth: '1.5px'
|
|
55
55
|
};
|
|
56
56
|
var STYLE_BASE_ITEM = {
|
|
57
57
|
fill: _constants.BASE_ITEM_MEASUREMENT_LINE_COLOR,
|
|
58
58
|
stroke: _constants.BASE_ITEM_MEASUREMENT_LINE_COLOR,
|
|
59
|
-
strokeWidth: '
|
|
59
|
+
strokeWidth: '1.5px'
|
|
60
60
|
};
|
|
61
61
|
var STYLE_WALL_ITEM = {
|
|
62
62
|
fill: _constants.WALL_ITEM_MEASUREMENT_LINE_COLOR,
|
|
63
63
|
stroke: _constants.WALL_ITEM_MEASUREMENT_LINE_COLOR,
|
|
64
|
-
strokeWidth: '
|
|
64
|
+
strokeWidth: '1.5px'
|
|
65
65
|
};
|
|
66
66
|
var STYLE_DISTANCE = {
|
|
67
67
|
fill: _constants.DISTANCE_MEASUREMENT_LINE_COLOR,
|
|
68
68
|
stroke: _constants.DISTANCE_MEASUREMENT_LINE_COLOR,
|
|
69
|
-
strokeWidth: '
|
|
69
|
+
strokeWidth: '1.5px'
|
|
70
70
|
};
|
|
71
71
|
var selectStyle = function selectStyle(element, style) {
|
|
72
72
|
return element.iFlag ? style : STYLE_DISTANCE;
|
|
@@ -7,14 +7,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports["default"] = Ruler;
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
|
-
var _convertUnitsLite = require("../../utils/convert-units-lite");
|
|
11
10
|
var _idBroker = _interopRequireDefault(require("../../utils/id-broker"));
|
|
12
11
|
var _constants = require("../../constants");
|
|
13
12
|
var _line = require("./line");
|
|
14
|
-
var
|
|
15
|
-
stroke: _constants.TEXT_COLOR_NEUTRAL_7,
|
|
16
|
-
strokeWidth: '1px'
|
|
17
|
-
};
|
|
13
|
+
var _ruler = require("../../utils/ruler");
|
|
18
14
|
var BACKGROUNDSTYLE = {
|
|
19
15
|
fill: 'transparent',
|
|
20
16
|
fillOpacity: 0.8
|
|
@@ -38,13 +34,20 @@ function Ruler(_ref) {
|
|
|
38
34
|
rulerUnit = _ref.rulerUnit,
|
|
39
35
|
transform = _ref.transform,
|
|
40
36
|
style = _ref.style;
|
|
41
|
-
var
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
37
|
+
var _getRulerDisplayData = (0, _ruler.getRulerDisplayData)({
|
|
38
|
+
length: length,
|
|
39
|
+
unit: unit,
|
|
40
|
+
rulerUnit: rulerUnit,
|
|
41
|
+
layerUnit: layer.unit
|
|
42
|
+
}),
|
|
43
|
+
distanceText = _getRulerDisplayData.distanceText,
|
|
44
|
+
unitStr = _getRulerDisplayData.unitStr,
|
|
45
|
+
textLength = _getRulerDisplayData.textLength,
|
|
46
|
+
bShowText = _getRulerDisplayData.bShowText,
|
|
47
|
+
bShowLine = _getRulerDisplayData.bShowLine;
|
|
45
48
|
return /*#__PURE__*/_react["default"].createElement("g", {
|
|
46
49
|
transform: transform
|
|
47
|
-
}, /*#__PURE__*/_react["default"].createElement("g", {
|
|
50
|
+
}, bShowText && /*#__PURE__*/_react["default"].createElement("g", {
|
|
48
51
|
id: "ruler"
|
|
49
52
|
}, /*#__PURE__*/_react["default"].createElement("rect", {
|
|
50
53
|
id: "ruler_rect_".concat(_idBroker["default"].acquireID()),
|
|
@@ -61,7 +64,7 @@ function Ruler(_ref) {
|
|
|
61
64
|
transform: "scale(1, -1)",
|
|
62
65
|
style: STYLE_TEXT,
|
|
63
66
|
fill: _constants.TEXT_COLOR_NEUTRAL_7
|
|
64
|
-
}, distanceText,
|
|
67
|
+
}, distanceText, unitStr)), bShowLine && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("line", {
|
|
65
68
|
x1: style === _line.STYLE_ROOM_SHAPE ? 0 : 4,
|
|
66
69
|
y1: "0",
|
|
67
70
|
x2: (length - textLength) / 2 < 0 ? 0 : (length - textLength) / 2,
|
|
@@ -79,7 +82,7 @@ function Ruler(_ref) {
|
|
|
79
82
|
}), /*#__PURE__*/_react["default"].createElement("polygon", {
|
|
80
83
|
points: "".concat(length - 3, ", 0, ").concat(length - 6.5, ", 2, ").concat(length - 6.5, ", -2"),
|
|
81
84
|
style: style
|
|
82
|
-
})));
|
|
85
|
+
}))));
|
|
83
86
|
}
|
|
84
87
|
Ruler.propTypes = {
|
|
85
88
|
length: _propTypes["default"].number.isRequired,
|
|
@@ -7,13 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports["default"] = RulerDist;
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
10
|
-
var
|
|
11
|
-
var _constants = require("../../constants");
|
|
12
|
-
var ARROW_STYLE = {
|
|
13
|
-
stroke: '#1183B7',
|
|
14
|
-
strokeWidth: '2px',
|
|
15
|
-
strokeLinecap: 'round'
|
|
16
|
-
};
|
|
10
|
+
var _ruler = require("../../utils/ruler");
|
|
17
11
|
var STYLE = {
|
|
18
12
|
stroke: '#455A64',
|
|
19
13
|
fill: '#455A64',
|
|
@@ -39,10 +33,17 @@ function RulerDist(_ref) {
|
|
|
39
33
|
transform = _ref.transform,
|
|
40
34
|
angle = _ref.angle,
|
|
41
35
|
rotation = _ref.rotation;
|
|
42
|
-
var
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
36
|
+
var _getRulerDisplayData = (0, _ruler.getRulerDisplayData)({
|
|
37
|
+
length: length,
|
|
38
|
+
unit: unit,
|
|
39
|
+
rulerUnit: rulerUnit,
|
|
40
|
+
layerUnit: layer.unit
|
|
41
|
+
}),
|
|
42
|
+
distanceText = _getRulerDisplayData.distanceText,
|
|
43
|
+
unitStr = _getRulerDisplayData.unitStr,
|
|
44
|
+
textLength = _getRulerDisplayData.textLength,
|
|
45
|
+
bShowText = _getRulerDisplayData.bShowText,
|
|
46
|
+
bShowLine = _getRulerDisplayData.bShowLine;
|
|
46
47
|
var textangle = angle + 90;
|
|
47
48
|
var textRotation = 1;
|
|
48
49
|
var ay = 2;
|
|
@@ -74,47 +75,32 @@ function RulerDist(_ref) {
|
|
|
74
75
|
textRotation = 180;
|
|
75
76
|
ay = 5;
|
|
76
77
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
style: STYLE
|
|
104
|
-
}), /*#__PURE__*/_react["default"].createElement("line", {
|
|
105
|
-
x1: (length + textLength) / 2 < 0 ? 0 : (length + textLength) / 2 < length ? (length + textLength) / 2 : length,
|
|
106
|
-
y1: "0",
|
|
107
|
-
x2: length,
|
|
108
|
-
y2: "0",
|
|
109
|
-
style: STYLE
|
|
110
|
-
}), /*#__PURE__*/_react["default"].createElement("polygon", {
|
|
111
|
-
points: "".concat(length - 1, ", 0, ").concat(length - 4.5, ", 2, ").concat(length - 4.5, ", -2"),
|
|
112
|
-
style: STYLE
|
|
113
|
-
}));
|
|
114
|
-
}
|
|
115
|
-
} else {
|
|
116
|
-
return null;
|
|
117
|
-
}
|
|
78
|
+
return /*#__PURE__*/_react["default"].createElement("g", {
|
|
79
|
+
transform: transform
|
|
80
|
+
}, bShowText && /*#__PURE__*/_react["default"].createElement("g", null, /*#__PURE__*/_react["default"].createElement("text", {
|
|
81
|
+
x: "0",
|
|
82
|
+
y: "0",
|
|
83
|
+
transform: "translate(".concat(length / 2, ",").concat(ay, ") scale(1, -1) rotate(").concat(textRotation, ")"),
|
|
84
|
+
style: STYLE_TEXT
|
|
85
|
+
}, distanceText, unitStr)), bShowLine && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("line", {
|
|
86
|
+
x1: "2",
|
|
87
|
+
y1: "0",
|
|
88
|
+
x2: (length - textLength) / 2 < 0 ? 0 : (length - textLength) / 2,
|
|
89
|
+
y2: "0",
|
|
90
|
+
style: STYLE
|
|
91
|
+
}), /*#__PURE__*/_react["default"].createElement("polygon", {
|
|
92
|
+
points: "1, 0, 4.5, -2, 4.5, 2 ",
|
|
93
|
+
style: STYLE
|
|
94
|
+
}), /*#__PURE__*/_react["default"].createElement("line", {
|
|
95
|
+
x1: (length + textLength) / 2 < 0 ? 0 : (length + textLength) / 2 < length ? (length + textLength) / 2 : length,
|
|
96
|
+
y1: "0",
|
|
97
|
+
x2: length,
|
|
98
|
+
y2: "0",
|
|
99
|
+
style: STYLE
|
|
100
|
+
}), /*#__PURE__*/_react["default"].createElement("polygon", {
|
|
101
|
+
points: "".concat(length - 1, ", 0, ").concat(length - 4.5, ", 2, ").concat(length - 4.5, ", -2"),
|
|
102
|
+
style: STYLE
|
|
103
|
+
})));
|
|
118
104
|
}
|
|
119
105
|
RulerDist.propTypes = {
|
|
120
106
|
length: _propTypes["default"].number.isRequired,
|
|
@@ -844,11 +844,15 @@ function Viewer2D(_ref, _ref2) {
|
|
|
844
844
|
var event = viewerEvent.originalEvent;
|
|
845
845
|
var parent = document.querySelector('#kitchen-simulator-container');
|
|
846
846
|
var targetRect = event.target.getBoundingClientRect();
|
|
847
|
-
var
|
|
848
|
-
var
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
847
|
+
var left = targetRect.left;
|
|
848
|
+
var top = targetRect.top;
|
|
849
|
+
if (!(0, _helper.isEmpty)(parent)) {
|
|
850
|
+
var parentRect = parent.getBoundingClientRect();
|
|
851
|
+
left = targetRect.left - parentRect.left;
|
|
852
|
+
top = targetRect.top - parentRect.top;
|
|
853
|
+
left = left - (200 - targetRect.width) / 2;
|
|
854
|
+
top = top - (50 - targetRect.height) / 2;
|
|
855
|
+
}
|
|
852
856
|
if (!mode.includes('ING')) {
|
|
853
857
|
setToolbar('');
|
|
854
858
|
}
|
|
@@ -514,19 +514,19 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
|
|
|
514
514
|
if (modifiedPath[keyIndex] == 'rotation') {
|
|
515
515
|
item3D.rotation.set(0, value * Math.PI / 180 + Math.PI, 0);
|
|
516
516
|
setTimeout(function () {
|
|
517
|
-
getDistances(layer);
|
|
517
|
+
getDistances(layer, item);
|
|
518
518
|
}, 50);
|
|
519
519
|
removeSelItemMesh(tmpMoldings, item, planData, mode);
|
|
520
520
|
} else if (modifiedPath[keyIndex] == 'x') {
|
|
521
521
|
item3D.position.x = value;
|
|
522
522
|
setTimeout(function () {
|
|
523
|
-
getDistances(layer);
|
|
523
|
+
getDistances(layer, item);
|
|
524
524
|
}, 50);
|
|
525
525
|
removeSelItemMesh(tmpMoldings, item, planData, mode);
|
|
526
526
|
} else if (modifiedPath[keyIndex] == 'y') {
|
|
527
527
|
item3D.position.z = -value;
|
|
528
528
|
setTimeout(function () {
|
|
529
|
-
getDistances(layer);
|
|
529
|
+
getDistances(layer, item);
|
|
530
530
|
}, 50);
|
|
531
531
|
removeSelItemMesh(tmpMoldings, item, planData, mode);
|
|
532
532
|
} else if (modifiedPath[keyIndex] == 'selected') {
|
|
@@ -752,7 +752,7 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
|
|
|
752
752
|
return actions.itemsActions.selectItem(layer.id, modifiedPath[4]);
|
|
753
753
|
});
|
|
754
754
|
setTimeout(function () {
|
|
755
|
-
getDistances(layer);
|
|
755
|
+
getDistances(layer, item);
|
|
756
756
|
}, 100);
|
|
757
757
|
}
|
|
758
758
|
} else if (modifiedPath[keyIndex] == 'length') {
|
|
@@ -880,7 +880,7 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
|
|
|
880
880
|
removeItemWithoutItem(planData, layer.id, modifiedPath[4]);
|
|
881
881
|
promises.push(addItem(sceneData, planData, layer, modifiedPath[4], catalog, actions.itemsActions, mode, null, rItem));
|
|
882
882
|
setTimeout(function () {
|
|
883
|
-
getDistances(layer);
|
|
883
|
+
getDistances(layer, item);
|
|
884
884
|
}, 100);
|
|
885
885
|
}
|
|
886
886
|
break;
|
|
@@ -926,7 +926,25 @@ function replaceObject(modifiedPath, layer, planData, actions, sceneData, oldSce
|
|
|
926
926
|
promise: p1
|
|
927
927
|
};
|
|
928
928
|
}
|
|
929
|
-
function getDistances(layer, isCalcWall) {
|
|
929
|
+
function getDistances(layer, curItem, isCalcWall) {
|
|
930
|
+
// matching fvLine distance with OP
|
|
931
|
+
var pointArray = (0, _geometry2.calcDistancesFromItemToWalls)(curItem, layer).PointArray;
|
|
932
|
+
if ((pointArray === null || pointArray === void 0 ? void 0 : pointArray.length) > 0) {
|
|
933
|
+
var _loop2 = function _loop2() {
|
|
934
|
+
var direction = i === 0 ? 90 : i === 1 ? -90 : i === 2 ? 180 : 0;
|
|
935
|
+
if (fVLine[i].userData) {
|
|
936
|
+
var _pointArray$filter$;
|
|
937
|
+
var opDist = (_pointArray$filter$ = pointArray.filter(function (v) {
|
|
938
|
+
return v[1] === direction;
|
|
939
|
+
})[0]) !== null && _pointArray$filter$ !== void 0 ? _pointArray$filter$ : fVLine[i].userData.distance;
|
|
940
|
+
fVLine[i].userData.opDist = opDist[0];
|
|
941
|
+
}
|
|
942
|
+
};
|
|
943
|
+
for (var i = 0; i < ((_fVLine = fVLine) === null || _fVLine === void 0 ? void 0 : _fVLine.length); i++) {
|
|
944
|
+
var _fVLine;
|
|
945
|
+
_loop2();
|
|
946
|
+
}
|
|
947
|
+
}
|
|
930
948
|
fVLine.forEach(function (line, index) {
|
|
931
949
|
getLineDistance(line, layer, (0, _helper.isEmpty)(isCalcWall) ? false : isCalcWall, index);
|
|
932
950
|
});
|
|
@@ -1844,7 +1862,7 @@ function addArea(sceneData, planData, layer, areaID, catalog, areaActions, mode)
|
|
|
1844
1862
|
layer.lines.forEach(function (data) {
|
|
1845
1863
|
lines.push(data);
|
|
1846
1864
|
});
|
|
1847
|
-
var
|
|
1865
|
+
var _loop3 = function _loop3() {
|
|
1848
1866
|
var data = lines[i];
|
|
1849
1867
|
var realVec = [];
|
|
1850
1868
|
data.vertices.forEach(function (vec) {
|
|
@@ -1857,7 +1875,7 @@ function addArea(sceneData, planData, layer, areaID, catalog, areaActions, mode)
|
|
|
1857
1875
|
}
|
|
1858
1876
|
};
|
|
1859
1877
|
for (var i = 0; i < lines.length; i++) {
|
|
1860
|
-
if (
|
|
1878
|
+
if (_loop3()) break;
|
|
1861
1879
|
}
|
|
1862
1880
|
ceil.translateZ((0, _convertUnitsLite.convert)(layer.ceilHeight).from(layer.unit).to(_constants.UNIT_CENTIMETER));
|
|
1863
1881
|
pivot.name = 'pivot';
|
|
@@ -1969,7 +1987,7 @@ function addItem(sceneData, planData, layer, itemID, catalog, itemsActions) {
|
|
|
1969
1987
|
if (child.type === 'Line' && child.geometry.attributes !== undefined) fVLine.push(child);
|
|
1970
1988
|
});
|
|
1971
1989
|
setTimeout(function () {
|
|
1972
|
-
getDistances();
|
|
1990
|
+
getDistances(layer, item);
|
|
1973
1991
|
}, 50);
|
|
1974
1992
|
}
|
|
1975
1993
|
applyOpacity(pivot, opacity);
|
|
@@ -2084,7 +2102,7 @@ function addItem(sceneData, planData, layer, itemID, catalog, itemsActions) {
|
|
|
2084
2102
|
return itemsActions.selectItem(layer.id, item.id);
|
|
2085
2103
|
});
|
|
2086
2104
|
setTimeout(function () {
|
|
2087
|
-
return getDistances(layer);
|
|
2105
|
+
return getDistances(layer, item);
|
|
2088
2106
|
}, 100);
|
|
2089
2107
|
if (!sceneData.loadFlag && scene_mode == _constants.MODE_DRAWING_ITEM_3D) {
|
|
2090
2108
|
itemsActions.endLoading();
|
|
@@ -3422,7 +3440,7 @@ function updateMoldingGroupArray(MGArray, selItem, planData, layer) {
|
|
|
3422
3440
|
if ((0, _helper.isEmpty)(filteredNewMGList)) {
|
|
3423
3441
|
return true;
|
|
3424
3442
|
}
|
|
3425
|
-
var
|
|
3443
|
+
var _loop4 = function _loop4() {
|
|
3426
3444
|
var newMG = filteredNewMGList[k];
|
|
3427
3445
|
if (oldMG.items.some(function (it) {
|
|
3428
3446
|
return it.id === selItem.id;
|
|
@@ -3475,7 +3493,7 @@ function updateMoldingGroupArray(MGArray, selItem, planData, layer) {
|
|
|
3475
3493
|
},
|
|
3476
3494
|
_ret;
|
|
3477
3495
|
for (var k = 0; k < filteredNewMGList.length; k++) {
|
|
3478
|
-
_ret =
|
|
3496
|
+
_ret = _loop4();
|
|
3479
3497
|
if (_ret) return _ret.v;
|
|
3480
3498
|
}
|
|
3481
3499
|
return true;
|
|
@@ -823,6 +823,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
823
823
|
this.snap = function (obj, layer) {
|
|
824
824
|
// snap operation
|
|
825
825
|
var target = obj.userData.target;
|
|
826
|
+
if ((0, _helper.isEmpty)(target)) return;
|
|
826
827
|
for (; target.parent != null;) {
|
|
827
828
|
if (target.name == 'pivot') break;
|
|
828
829
|
target = target.parent;
|
|
@@ -1368,10 +1369,12 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1368
1369
|
}
|
|
1369
1370
|
};
|
|
1370
1371
|
this.mouseUpEvent = function (event) {
|
|
1372
|
+
var _selectedObject;
|
|
1371
1373
|
var internalType = ''; // internalEvent type - select/drag/draw
|
|
1372
1374
|
var selectedElement; // internalEvent data
|
|
1373
1375
|
firstMove = 0;
|
|
1374
1376
|
var altitude = 0;
|
|
1377
|
+
var curLayer = _this2.props.state.scene.getIn(['layers', (_selectedObject = selectedObject) === null || _selectedObject === void 0 ? void 0 : _selectedObject.layerID]);
|
|
1375
1378
|
if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
|
|
1376
1379
|
var properties = allItemRect.cur.itemInfo.properties;
|
|
1377
1380
|
altitude = properties.getIn(['altitude', '_length']);
|
|
@@ -1392,7 +1395,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1392
1395
|
actions.itemsActions.endDrawingItem(_this2.props.state.scene.selectedLayer, sPoint.x, sPoint.y);
|
|
1393
1396
|
} else {
|
|
1394
1397
|
removeSnapBox();
|
|
1395
|
-
var polygon = _export.GeometryUtils.getPoylgonPoints(layer);
|
|
1398
|
+
var polygon = _export.GeometryUtils.getPoylgonPoints(curLayer !== null && curLayer !== void 0 ? curLayer : layer);
|
|
1396
1399
|
// if cursor is outside of room
|
|
1397
1400
|
if (polygon.length > 0 && !_export.GeometryUtils.ContainsPoint(polygon, Point.x, Point.y)) {
|
|
1398
1401
|
actions.itemsActions.endDrawingItem(_this2.props.state.scene.selectedLayer, sPoint.x, sPoint.y);
|
|
@@ -1486,8 +1489,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1486
1489
|
}
|
|
1487
1490
|
gridMatrix.copy(gridPlane.matrixWorld).invert();
|
|
1488
1491
|
var addItemToolObj = function addItemToolObj() {
|
|
1489
|
-
var _planData$sceneGraph,
|
|
1490
|
-
var selectedItem = (_planData$sceneGraph = planData.sceneGraph) === null || _planData$sceneGraph === void 0 || (_planData$sceneGraph = _planData$sceneGraph.layers[selectedObject.layerID]) === null || _planData$sceneGraph === void 0 ? void 0 : _planData$sceneGraph.items[(
|
|
1492
|
+
var _planData$sceneGraph, _selectedObject2, _intersects$_i;
|
|
1493
|
+
var selectedItem = (_planData$sceneGraph = planData.sceneGraph) === null || _planData$sceneGraph === void 0 || (_planData$sceneGraph = _planData$sceneGraph.layers[selectedObject.layerID]) === null || _planData$sceneGraph === void 0 ? void 0 : _planData$sceneGraph.items[(_selectedObject2 = selectedObject) === null || _selectedObject2 === void 0 ? void 0 : _selectedObject2.itemID];
|
|
1491
1494
|
if ((0, _util.isUndefined)(selectedItem)) return;
|
|
1492
1495
|
selectedElement = _this2.props.state.scene.layers.get(selectedObject.layerID).items.get(selectedObject.itemID);
|
|
1493
1496
|
var itemPos = selectedItem.position.clone();
|
|
@@ -1520,8 +1523,9 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1520
1523
|
}
|
|
1521
1524
|
isSelected = true;
|
|
1522
1525
|
setTimeout(function () {
|
|
1523
|
-
|
|
1526
|
+
var _curLayer$id;
|
|
1524
1527
|
addItemToolObj();
|
|
1528
|
+
(0, _sceneCreator.getDistances)(curLayer !== null && curLayer !== void 0 ? curLayer : layer, selectedElement);
|
|
1525
1529
|
_this2.setState({
|
|
1526
1530
|
toolObj: toolObj
|
|
1527
1531
|
});
|
|
@@ -1531,8 +1535,8 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1531
1535
|
// pointArray.push([fVLine[1].userData.distance, -90]);
|
|
1532
1536
|
// pointArray.push([fVLine[2].userData.distance, 180]);
|
|
1533
1537
|
// pointArray.push([fVLine[3].userData.distance, 0]);
|
|
1534
|
-
pointArray = _export.GeometryUtils.calcDistancesFromItemToWalls(selectedElement, layer).PointArray;
|
|
1535
|
-
actions.itemsActions.storeDistArray(layer.id, selectedObject.itemID, pointArray);
|
|
1538
|
+
pointArray = _export.GeometryUtils.calcDistancesFromItemToWalls(selectedElement, curLayer !== null && curLayer !== void 0 ? curLayer : layer).PointArray;
|
|
1539
|
+
actions.itemsActions.storeDistArray((_curLayer$id = curLayer === null || curLayer === void 0 ? void 0 : curLayer.id) !== null && _curLayer$id !== void 0 ? _curLayer$id : layer.id, selectedObject.itemID, pointArray);
|
|
1536
1540
|
internalType = internalType ? internalType : _constants.INTERNAL_EVENT_SELECT_ELEMENT;
|
|
1537
1541
|
sendInternalEvent(internalType, selectedElement, pointArray);
|
|
1538
1542
|
});
|
|
@@ -1584,11 +1588,11 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1584
1588
|
bRotate = false;
|
|
1585
1589
|
bMoveUP = false;
|
|
1586
1590
|
if (isSelected) {
|
|
1587
|
-
prepareSnap(layer);
|
|
1591
|
+
prepareSnap(curLayer !== null && curLayer !== void 0 ? curLayer : layer);
|
|
1588
1592
|
selectedObj = allItemRect.cur;
|
|
1589
1593
|
}
|
|
1590
1594
|
} else {
|
|
1591
|
-
var _planData$sceneGraph2,
|
|
1595
|
+
var _planData$sceneGraph2, _selectedObject3, _selectedObject4;
|
|
1592
1596
|
(0, _sceneCreator.visibleTransformBox)(false);
|
|
1593
1597
|
var alti = 0;
|
|
1594
1598
|
if (allItemRect && allItemRect.cur && allItemRect.cur.itemInfo !== undefined) {
|
|
@@ -1598,7 +1602,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1598
1602
|
alti = (0, _convertUnitsLite.convert)(alti).from(_unit2).to(_this2.props.state.scene.unit);
|
|
1599
1603
|
}
|
|
1600
1604
|
getPoint(event, alti);
|
|
1601
|
-
var _selectedItem = planData === null || planData === void 0 || (_planData$sceneGraph2 = planData.sceneGraph) === null || _planData$sceneGraph2 === void 0 || (_planData$sceneGraph2 = _planData$sceneGraph2.layers[(
|
|
1605
|
+
var _selectedItem = planData === null || planData === void 0 || (_planData$sceneGraph2 = planData.sceneGraph) === null || _planData$sceneGraph2 === void 0 || (_planData$sceneGraph2 = _planData$sceneGraph2.layers[(_selectedObject3 = selectedObject) === null || _selectedObject3 === void 0 ? void 0 : _selectedObject3.layerID]) === null || _planData$sceneGraph2 === void 0 ? void 0 : _planData$sceneGraph2.items[(_selectedObject4 = selectedObject) === null || _selectedObject4 === void 0 ? void 0 : _selectedObject4.itemID];
|
|
1602
1606
|
if (isSelected && !(0, _helper.isEmpty)(_selectedItem)) addItemToolObj();
|
|
1603
1607
|
if (bRotate) {
|
|
1604
1608
|
_this2.setState({
|
|
@@ -1636,7 +1640,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
1636
1640
|
removeSnapBox();
|
|
1637
1641
|
actions.sceneActions.updateMovingState(true);
|
|
1638
1642
|
if (isSelected === true) {
|
|
1639
|
-
prepareSnap(layer);
|
|
1643
|
+
prepareSnap(curLayer !== null && curLayer !== void 0 ? curLayer : layer);
|
|
1640
1644
|
selectedObj = allItemRect.cur;
|
|
1641
1645
|
}
|
|
1642
1646
|
}
|
|
@@ -2035,8 +2039,9 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2035
2039
|
// handle snapBox, distArray, backsplash
|
|
2036
2040
|
this.handleAfterMovingItem = function () {
|
|
2037
2041
|
var layer = _this2.props.state.scene.getIn(['layers', selectedObject.layerID]);
|
|
2042
|
+
var item = layer.getIn(['items', selectedObject.itemID]);
|
|
2038
2043
|
var item3D = planData.sceneGraph.layers[selectedObject.layerID].items[selectedObject.itemID];
|
|
2039
|
-
(0, _sceneCreator.getDistances)(layer);
|
|
2044
|
+
(0, _sceneCreator.getDistances)(layer, item);
|
|
2040
2045
|
var pointArray = [],
|
|
2041
2046
|
cnt = 0;
|
|
2042
2047
|
pointArray.push([_sceneCreator.fVLine[0].userData.distance, 90]);
|
|
@@ -2075,7 +2080,7 @@ var Scene3DViewer = exports["default"] = /*#__PURE__*/function (_React$Component
|
|
|
2075
2080
|
if (minDis < snapDelta && !snapFlag) {
|
|
2076
2081
|
_this2.snap(snapObj, layer);
|
|
2077
2082
|
snapFlag = true;
|
|
2078
|
-
(0, _sceneCreator.getDistances)(layer);
|
|
2083
|
+
(0, _sceneCreator.getDistances)(layer, item);
|
|
2079
2084
|
var _i13 = 0;
|
|
2080
2085
|
for (_i13 = 0; _i13 < _sceneCreator.fVLine.length; _i13++) {
|
|
2081
2086
|
if (_sceneCreator.fVLine[_i13].userData.distance < snapDelta) {
|
|
@@ -1242,7 +1242,7 @@ function handleExternalEvent(_x10) {
|
|
|
1242
1242
|
function _handleExternalEvent() {
|
|
1243
1243
|
_handleExternalEvent = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee0(props) {
|
|
1244
1244
|
var _evt$payload3, _evt$payload4;
|
|
1245
|
-
var evt, state, layerId, layer, _evt$payload, cdsItems, itemKeys, _loop6, i, newScene, _props$onInternalEven, sLineCnt, element, _state$viewer2D, _evt$payload$initialP, mouseX, mouseY, v2d, vPosX, vPosY, layerID, defaulTitle, _Object$keys, _evt$payload5, doorStyle, itemCDS, isAll, _layerId, _cdsItems, allItems, selectedItemId, _itemKeys, _loop7, _i2, _props$onInternalEven2, _evt$payload6, roomShapeType, width, height, _doorStyle, value, _value, _evt$payload7, moldingInfo, isGlobal, distElement, _distElement, _evt$payload8, option, _value2, _layerId2, _layer, _layer$getIn, selectedLines, selectedHoles, selectedItems, _i4, _i5, _i6, _evt$payload9, _evt$payload0, _evt$payload1, _evt$payload10, _layerID, _layer2, orginalItemInfo, originalItem, originalItemPos, replaceItem, _props$onInternalEven3, sceneData, currentTexture, _t5, _t6;
|
|
1245
|
+
var evt, state, layerId, layer, _evt$payload, _state$catalog, cdsItems, itemKeys, _loop6, i, newScene, tempState, _props$onInternalEven, sLineCnt, element, _state$viewer2D, _evt$payload$initialP, mouseX, mouseY, v2d, vPosX, vPosY, layerID, defaulTitle, _Object$keys, _evt$payload5, doorStyle, itemCDS, isAll, _layerId, _cdsItems, allItems, selectedItemId, _itemKeys, _loop7, _i2, _props$onInternalEven2, _evt$payload6, roomShapeType, width, height, _doorStyle, value, _value, _evt$payload7, moldingInfo, isGlobal, distElement, _distElement, _evt$payload8, option, _value2, _layerId2, _layer, _layer$getIn, selectedLines, selectedHoles, selectedItems, _i4, _i5, _i6, _evt$payload9, _evt$payload0, _evt$payload1, _evt$payload10, _layerID, _layer2, orginalItemInfo, originalItem, originalItemPos, replaceItem, _props$onInternalEven3, sceneData, currentTexture, _t5, _t6;
|
|
1246
1246
|
return _regenerator["default"].wrap(function (_context11) {
|
|
1247
1247
|
while (1) switch (_context11.prev = _context11.next) {
|
|
1248
1248
|
case 0:
|
|
@@ -1310,10 +1310,10 @@ function _handleExternalEvent() {
|
|
|
1310
1310
|
break;
|
|
1311
1311
|
case 5:
|
|
1312
1312
|
newScene = new _models.Scene(evt === null || evt === void 0 ? void 0 : evt.payload);
|
|
1313
|
-
|
|
1314
|
-
scene: newScene.toJS()
|
|
1315
|
-
|
|
1316
|
-
// request item catalog data to host app
|
|
1313
|
+
tempState = new _models.State({
|
|
1314
|
+
scene: newScene.toJS(),
|
|
1315
|
+
catalog: (_state$catalog = state.catalog) === null || _state$catalog === void 0 ? void 0 : _state$catalog.toJS()
|
|
1316
|
+
}); // request item catalog data to host app
|
|
1317
1317
|
if (cdsItems.length > 0) {
|
|
1318
1318
|
(_props$onInternalEven = props.onInternalEvent) === null || _props$onInternalEven === void 0 || _props$onInternalEven.call(props, {
|
|
1319
1319
|
type: _constants.INTERNAL_EVENT_ITEMS_CATALOG,
|
|
@@ -1334,7 +1334,7 @@ function _handleExternalEvent() {
|
|
|
1334
1334
|
break;
|
|
1335
1335
|
}
|
|
1336
1336
|
_context9.next = 2;
|
|
1337
|
-
return addItemToCatalog(rt[_i],
|
|
1337
|
+
return addItemToCatalog(rt[_i], tempState, props.catalog, props.projectActions);
|
|
1338
1338
|
case 2:
|
|
1339
1339
|
_i++;
|
|
1340
1340
|
_context9.next = 1;
|
package/lib/utils/molding.js
CHANGED
|
@@ -334,6 +334,7 @@ function getLinesOfItem(item, allLineRects, catalog) {
|
|
|
334
334
|
return lines;
|
|
335
335
|
}
|
|
336
336
|
function getLinesOfItem2(item, allLineRects, catalog) {
|
|
337
|
+
var _lines;
|
|
337
338
|
var lines = [];
|
|
338
339
|
var outline = null;
|
|
339
340
|
var element = catalog.elements[item.get('type')];
|
|
@@ -346,8 +347,9 @@ function getLinesOfItem2(item, allLineRects, catalog) {
|
|
|
346
347
|
var hUnit = item.properties.get('depth').get('_unit') || 'cm';
|
|
347
348
|
newDepth = (0, _convertUnitsLite.convert)(newDepth).from(hUnit).to('cm');
|
|
348
349
|
if (item) {
|
|
350
|
+
var _element;
|
|
349
351
|
// Get Outline Data of Selected Item
|
|
350
|
-
outline = element.info.outline;
|
|
352
|
+
outline = (_element = element) === null || _element === void 0 ? void 0 : _element.info.outline;
|
|
351
353
|
if (outline) {
|
|
352
354
|
// Extract Points from `outline`
|
|
353
355
|
var outlinePaths = outline.paths;
|
|
@@ -388,7 +390,7 @@ function getLinesOfItem2(item, allLineRects, catalog) {
|
|
|
388
390
|
}
|
|
389
391
|
}
|
|
390
392
|
}
|
|
391
|
-
lines = lines.filter(function (line) {
|
|
393
|
+
lines = (_lines = lines) === null || _lines === void 0 ? void 0 : _lines.filter(function (line) {
|
|
392
394
|
return !_export.GeometryUtils.isSnappedLine({
|
|
393
395
|
rect: [{
|
|
394
396
|
x: 0,
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getRulerDisplayData = getRulerDisplayData;
|
|
7
|
+
var _convertUnitsLite = require("../utils/convert-units-lite.js");
|
|
8
|
+
var _constants = require("../constants");
|
|
9
|
+
// Below this length, the measurement LINE is hidden
|
|
10
|
+
var MIN_LENGTH_TO_SHOW_RULER_LINE_INCH = 13;
|
|
11
|
+
|
|
12
|
+
// Below this length, the measurement VALUE (text) is hidden
|
|
13
|
+
var MIN_LENGTH_TO_SHOW_RULER_VALUE_INCH = 5;
|
|
14
|
+
function formatDistance(value, fixed) {
|
|
15
|
+
// format with fixed decimals first
|
|
16
|
+
var text = value.toFixed(fixed);
|
|
17
|
+
|
|
18
|
+
// remove trailing zeros AFTER decimal, then remove trailing dot if needed
|
|
19
|
+
// examples:
|
|
20
|
+
// 2.00 -> 2
|
|
21
|
+
// 2.50 -> 2.5
|
|
22
|
+
// 200.00 -> 200
|
|
23
|
+
text = text.replace(/\.?0+$/, '');
|
|
24
|
+
return text;
|
|
25
|
+
}
|
|
26
|
+
function getUnitString(unit) {
|
|
27
|
+
if (unit === 'cm' || unit === 'mm') return '';
|
|
28
|
+
if (unit === 'in') return '"';
|
|
29
|
+
return unit;
|
|
30
|
+
}
|
|
31
|
+
function getRulerDisplayData(_ref) {
|
|
32
|
+
var length = _ref.length,
|
|
33
|
+
unit = _ref.unit,
|
|
34
|
+
rulerUnit = _ref.rulerUnit,
|
|
35
|
+
layerUnit = _ref.layerUnit,
|
|
36
|
+
_ref$charWidth = _ref.charWidth,
|
|
37
|
+
charWidth = _ref$charWidth === void 0 ? 8 : _ref$charWidth;
|
|
38
|
+
// 7.62 cm -> ruLength 2.99 in
|
|
39
|
+
var ruLength = (0, _convertUnitsLite.convert)(length).from(unit).to(rulerUnit);
|
|
40
|
+
var fixedLength = layerUnit === _constants.UNIT_MILLIMETER ? 0 : layerUnit === _constants.UNIT_CENTIMETER ? 1 : 2;
|
|
41
|
+
|
|
42
|
+
// 2.99 in -> valueInLayerUnit 2.99 in
|
|
43
|
+
var valueInLayerUnit = (0, _convertUnitsLite.convert)(ruLength).from(rulerUnit).to(layerUnit);
|
|
44
|
+
|
|
45
|
+
// 2.99 -> "3"
|
|
46
|
+
var distanceText = formatDistance(valueInLayerUnit, fixedLength);
|
|
47
|
+
var unitStr = getUnitString(layerUnit);
|
|
48
|
+
var textCount = distanceText.length + unitStr.length;
|
|
49
|
+
// textLength = (3 + ") * 8 = 16
|
|
50
|
+
var textLength = textCount * charWidth;
|
|
51
|
+
|
|
52
|
+
// lengthInInch = 7.62 cm -> 2.99 inch
|
|
53
|
+
var lengthInInch = (0, _convertUnitsLite.convert)(length).from(unit).to(_constants.UNIT_INCH);
|
|
54
|
+
var bShowText = lengthInInch > MIN_LENGTH_TO_SHOW_RULER_VALUE_INCH && length - textLength + 24 > 0;
|
|
55
|
+
var bShowLine = lengthInInch > MIN_LENGTH_TO_SHOW_RULER_LINE_INCH && length - textLength - 8 > 0;
|
|
56
|
+
return {
|
|
57
|
+
distanceText: distanceText,
|
|
58
|
+
unitStr: unitStr,
|
|
59
|
+
textLength: textLength,
|
|
60
|
+
bShowText: bShowText,
|
|
61
|
+
bShowLine: bShowLine
|
|
62
|
+
};
|
|
63
|
+
}
|