@eturnity/eturnity_3d 7.33.0 → 7.33.1-EPDM-10923.0

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@eturnity/eturnity_3d",
3
3
  "private": false,
4
- "version": "7.33.0",
4
+ "version": "7.33.1-EPDM-10923.0",
5
5
  "files": [
6
6
  "dist",
7
7
  "src"
@@ -15,7 +15,7 @@
15
15
  "prettier": "prettier --write \"**/*.{js,vue}\""
16
16
  },
17
17
  "dependencies": {
18
- "@eturnity/eturnity_maths": "7.32.0",
18
+ "@eturnity/eturnity_maths": "7.32.0-EPDM-10923.1",
19
19
  "@originjs/vite-plugin-commonjs": "1.0.3",
20
20
  "core-js": "2.6.12",
21
21
  "cors": "2.8.5",
@@ -159,7 +159,6 @@ export default {
159
159
  method: this.renderEdges,
160
160
  arg: [],
161
161
  })
162
- break
163
162
  case 'marginIsSameChange': //params.polygon
164
163
  case 'marginDifferentChange': //params.polygon,index
165
164
  case 'marginSameChange': //params.polygon
@@ -177,7 +176,6 @@ export default {
177
176
  method: this.renderOverlays,
178
177
  arg: [],
179
178
  })
180
- break
181
179
  case 'removeNodes': //params.nodes
182
180
  case 'removeEdges': //params.edges
183
181
  case 'translate': //params.edges
@@ -302,7 +300,6 @@ export default {
302
300
  method: this.renderBuilding,
303
301
  arg: [],
304
302
  })
305
- break
306
303
  case 'selectedRoofChange':
307
304
  case 'selectedObstacleChange':
308
305
  methodList.push({
@@ -315,7 +312,6 @@ export default {
315
312
  method: this.renderRoofsMargin,
316
313
  arg: [],
317
314
  })
318
- break
319
315
  case 'selectedModuleFieldChange':
320
316
  methodList.push({
321
317
  name: 'renderEdges',
@@ -24,9 +24,9 @@ function sanitizedOutline(outline) {
24
24
  }, [])
25
25
  }
26
26
  export async function hydratePolygons({
27
- roofsResponse,
28
- obstaclesResponse,
29
- moduleFieldsResponse,
27
+ roofsResponse = [],
28
+ obstaclesResponse = [],
29
+ moduleFieldsResponse = []
30
30
  }) {
31
31
  //removing empty roof,obstacle and modulefield generated by BE on variant creation
32
32
  roofsResponse = roofsResponse.reduce((acc, cur) => {
@@ -2,8 +2,8 @@ import {
2
2
  generateNodes2D,
3
3
  generateNodes3D,
4
4
  generateEdges2D,
5
- generateEdges3D,
6
- } from './nodesEdgesCreation'
5
+ generateEdges3D
6
+ } from '@eturnity/eturnity_maths'
7
7
  import { hydrateData } from './hydrateData.js'
8
8
 
9
9
  const init_state = {
@@ -1,279 +0,0 @@
1
- import { Point, Line } from '@eturnity/eturnity_maths'
2
- import { mmTolerance, mmTolerance3dNode } from '../config'
3
- import {
4
- isAlmostSamePoint3D,
5
- isAlmostSameSegment2D,
6
- isAlmostSameSegment3D,
7
- isAlmostSamePoint2D,
8
- verticalProjectionOnPlane,
9
- } from '@eturnity/eturnity_maths'
10
-
11
- export function generateNodes2D(polygons) {
12
- let nodes2D = []
13
- polygons
14
- .filter((poly) =>
15
- [
16
- 'roof',
17
- 'obstacle',
18
- 'tmpModuleField',
19
- 'moduleField',
20
- 'construction',
21
- ].includes(poly.layer)
22
- )
23
- .forEach((polygon) => {
24
- const outline = polygon.outline
25
- outline.forEach((point, i) => {
26
- //check if nodes2D already exist
27
- let node2D = nodes2D.find(
28
- (node) =>
29
- isAlmostSamePoint2D(node, point, mmTolerance) &&
30
- node.layer == polygon.layer
31
- )
32
- if (!node2D) {
33
- node2D = new Point(point.x, point.y, point.z, polygon.layer)
34
- node2D.belongsTo = []
35
- node2D.id = 'node2D'
36
- node2D.itemType = 'node2D'
37
- node2D.layer = polygon.layer
38
- node2D.masterHandle = {
39
- id: node2D.id,
40
- itemType: 'masterHandle',
41
- open: null,
42
- selected: null,
43
- }
44
- nodes2D.push(node2D)
45
- }
46
- node2D.belongsTo.push({
47
- polygonId: polygon.id,
48
- index: i,
49
- polygon,
50
- })
51
- node2D.id += '_' + polygon.id + '_' + i
52
- })
53
- })
54
-
55
- //all nodes has been created. now lets update open/selected field
56
- nodes2D.forEach((node2D) => {
57
- if (node2D.masterHandle) {
58
- node2D.masterHandle.open = node2D.belongsTo.some(
59
- (item) => item.index == null || item.polygon.outline[item.index].open
60
- )
61
- node2D.masterHandle.selected = node2D.belongsTo.every(
62
- (item) =>
63
- item.index == null || item.polygon.outline[item.index].selected
64
- )
65
- node2D.masterHandle.locked = node2D.belongsTo.every(
66
- (item) => item.index == null || item.polygon.outline[item.index].locked
67
- )
68
- }
69
- })
70
- return nodes2D
71
- }
72
-
73
- export function generateNodes3D(polygons) {
74
- let nodes3D = []
75
- polygons
76
- .filter((poly) =>
77
- ['roof', 'obstacle', 'tmpModuleField', 'moduleField'].includes(poly.layer)
78
- )
79
- .forEach((polygon) => {
80
- const outline = polygon.outline
81
- outline.forEach((point, i) => {
82
- //check if nodes2D already exist
83
- let node3D = nodes3D.find((node) =>
84
- isAlmostSamePoint3D(node, point, mmTolerance3dNode)
85
- )
86
- if (!node3D) {
87
- node3D = new Point(point.x, point.y, point.z, polygon.layer)
88
- node3D.belongsTo = []
89
- node3D.id = 'node3D'
90
- node3D.itemType = 'node3D'
91
- node3D.layer = polygon.layer
92
- node3D.masterHandle = {
93
- id: node3D.id,
94
- itemType: 'masterHandle',
95
- open: null,
96
- selected: null,
97
- }
98
- nodes3D.push(node3D)
99
- }
100
- node3D.belongsTo.push({
101
- polygonId: polygon.id,
102
- index: i,
103
- polygon,
104
- })
105
- node3D.id += '_' + polygon.id + '_' + i
106
- })
107
- })
108
- //all nodes has been created. now lets update open/selected field
109
- nodes3D.forEach((node3D) => {
110
- if (node3D.masterHandle) {
111
- node3D.masterHandle.open = node3D.belongsTo.some(
112
- (item) => item.polygon.outline[item.index].open
113
- )
114
- node3D.masterHandle.selected = node3D.belongsTo.every(
115
- (item) => item.polygon.outline[item.index].selected
116
- )
117
- }
118
- })
119
- return nodes3D
120
- }
121
-
122
- export function generateEdges2D(polygons, splitEdgesIds = []) {
123
- let edges2D = []
124
- polygons
125
- .filter((poly) =>
126
- ['roof', 'obstacle', 'moduleField', 'construction'].includes(poly.layer)
127
- )
128
- .forEach((polygon) => {
129
- const outline = polygon.outline
130
- outline.forEach((point, i) => {
131
- const isLastPointOfPolygon = i == outline.length - 1
132
- if (!polygon.isClosed && isLastPointOfPolygon) {
133
- return
134
- }
135
- //check if edge2D already exist
136
- const nextPoint = outline[(i + 1) % outline.length]
137
- let edge2D = edges2D.find((edge) => {
138
- return (
139
- isAlmostSameSegment2D(
140
- [point, nextPoint],
141
- edge.outline,
142
- mmTolerance
143
- ) && edge.layer == polygon.layer
144
- )
145
- })
146
- if (!edge2D) {
147
- //create an edge at this position
148
- edge2D = new Line(point, nextPoint, polygon.layer)
149
- edge2D.id = 'edge2D'
150
- edge2D.belongsTo = []
151
- edge2D.layer = polygon.layer
152
- edge2D.selected = false
153
- edge2D.itemType = 'edge2D'
154
- edges2D.push(edge2D)
155
- }
156
- //add BelongToPolygon
157
- edge2D.belongsTo.push({
158
- polygonId: polygon.id,
159
- index: i,
160
- polygon,
161
- })
162
- if (polygon.roofs && polygon.roofs.length > 0) {
163
- polygon.roofs.forEach((supportRoof) => {
164
- edge2D.belongsTo.push({
165
- polygonId: supportRoof.id,
166
- index: null,
167
- polygon: supportRoof,
168
- })
169
- })
170
- }
171
- edge2D.id += '_' + polygon.id + '_' + i
172
- })
173
- })
174
- edges2D.forEach((edge2D) => {
175
- edge2D.isSplit = splitEdgesIds.includes(edge2D.id)
176
- if (edge2D.belongsTo.length > 2) {
177
- edge2D.belongsTo = edge2D.belongsTo.filter((i) => i.index !== null)
178
- }
179
- })
180
- edges2D.forEach((edge2D) => {
181
- const isNotSplit = edge2D.belongsTo.every((item, index, array) => {
182
- if (index == 0) {
183
- return true
184
- }
185
- const outline0 = array[0].polygon.outline
186
- const outline1 = item.polygon.outline
187
- let point0, point1, nextPoint0, nextPoint1
188
- let pointNull = []
189
- if (array[0].index !== null) {
190
- point0 = outline0[array[0].index]
191
- nextPoint0 = outline0[(array[0].index + 1) % outline0.length]
192
- } else {
193
- pointNull.push(0)
194
- point0 = verticalProjectionOnPlane(
195
- outline1[item.index],
196
- array[0].polygon.normalVector,
197
- array[0].polygon.flatOutline[0]
198
- )
199
- nextPoint0 = verticalProjectionOnPlane(
200
- outline1[(item.index + 1) % outline1.length],
201
- array[0].polygon.normalVector,
202
- array[0].polygon.flatOutline[0]
203
- )
204
- }
205
- if (item.index !== null) {
206
- point1 = outline1[item.index]
207
- nextPoint1 = outline1[(item.index + 1) % outline1.length]
208
- } else {
209
- pointNull.push(1)
210
- point1 = verticalProjectionOnPlane(
211
- outline0[array[0].index],
212
- item.polygon.normalVector,
213
- item.polygon.flatOutline[0]
214
- )
215
- nextPoint1 = verticalProjectionOnPlane(
216
- outline0[(array[0].index + 1) % outline0.length],
217
- item.polygon.normalVector,
218
- item.polygon.flatOutline[0]
219
- )
220
- }
221
- const isSameSeg = isAlmostSameSegment3D(
222
- [point0, nextPoint0],
223
- [point1, nextPoint1],
224
- mmTolerance
225
- )
226
- return isSameSeg
227
- })
228
- if (!isNotSplit && edge2D.belongsTo.length == 2 && edge2D.layer == 'roof') {
229
- edge2D.isSplit = true
230
- }
231
- })
232
- return edges2D
233
- }
234
-
235
- export function generateEdges3D(polygons) {
236
- let edges3D = []
237
- polygons
238
- .filter((poly) =>
239
- ['roof', 'obstacle', 'moduleField', 'construction'].includes(poly.layer)
240
- )
241
- .forEach((polygon) => {
242
- const outline = polygon.outline
243
- outline.forEach((point, i) => {
244
- const isLastPointOfPolygon = i == outline.length - 1
245
- if (!polygon.isClosed && isLastPointOfPolygon) {
246
- return
247
- }
248
- //check if edge2D already exist
249
- const nextPoint = outline[(i + 1) % outline.length]
250
- let edge3D = edges3D.find((edge) => {
251
- return (
252
- isAlmostSameSegment3D(
253
- [point, nextPoint],
254
- edge.outline,
255
- mmTolerance
256
- ) && edge.layer == polygon.layer
257
- )
258
- })
259
- if (!edge3D) {
260
- //create an edge at this position
261
- edge3D = new Line(point, nextPoint, polygon.layer)
262
- edge3D.id = 'edge3D'
263
- edge3D.belongsTo = []
264
- edge3D.layer = polygon.layer
265
- edge3D.selected = false
266
- edge3D.itemType = 'edge3D'
267
- edges3D.push(edge3D)
268
- }
269
- //add BelongToPolygon
270
- edge3D.belongsTo.push({
271
- polygonId: polygon.id,
272
- index: i,
273
- polygon,
274
- })
275
- edge3D.id += '_' + polygon.id + '_' + i
276
- })
277
- })
278
- return edges3D
279
- }