@eturnity/eturnity_3d 7.8.0-splitLine.0 → 7.10.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.8.0-splitLine.0",
4
+ "version": "7.10.0",
5
5
  "main": "dist/main.js",
6
6
  "scripts": {
7
7
  "dev": "vue-cli-service serve --skip-plugins @vue/cli-plugin-eslint",
@@ -10,7 +10,7 @@
10
10
  "prettier": "prettier --write \"**/*.{js,vue}\""
11
11
  },
12
12
  "dependencies": {
13
- "@eturnity/eturnity_maths": "7.4.0-EPDM-7379.4",
13
+ "@eturnity/eturnity_maths": "7.10.0",
14
14
  "core-js": "^2.6.12",
15
15
  "cors": "^2.8.5",
16
16
  "earcut": "^2.2.4",
@@ -35,7 +35,7 @@ export function UpdateRoofModuleFieldRelations(state) {
35
35
  const intersection = intersectOutlines(moduleField.outline, roof.outline)
36
36
  if (intersection.length == 0) return false
37
37
  const intersectionArea = calculateArea(intersection[0])
38
- return intersectionArea > 100 && moduleField.area <= roof.area
38
+ return intersectionArea > 100 && moduleField.area <= roof.area + 0.1
39
39
  })
40
40
  //roofs on roof can lead to multiple roof under a point. moduleField is on the smallest
41
41
  let smallestRoof = null
@@ -25,6 +25,23 @@ export default {
25
25
  if (obj.material.dispose) obj.material.dispose()
26
26
  }
27
27
  },
28
+ clearPanelsFromChangingRoofs(roofIds) {
29
+ const roofs = this.polygons.filter((polygon) =>
30
+ roofIds.includes(polygon.id)
31
+ )
32
+ roofs.forEach((roof) =>
33
+ roof.moduleFields.forEach((mf) =>
34
+ mf.panels.forEach((panel) => {
35
+ let meshTop = this.meshes.panelsMeshes[panel.id + '_top']
36
+ let meshSide = this.meshes.panelsMeshes[panel.id + '_side']
37
+ if (meshTop || meshSide) {
38
+ this.clearMeshFromScene(meshTop, this.scene)
39
+ this.clearMeshFromScene(meshSide, this.scene)
40
+ }
41
+ })
42
+ )
43
+ )
44
+ },
28
45
  clearMeshFromScene(mesh, scene) {
29
46
  if (!mesh || !scene) {
30
47
  return
@@ -87,8 +87,6 @@ export default {
87
87
  cylinder.userData.edgeId = edge.id
88
88
  cylinder.userData.type = 'edgeMeshes'
89
89
  cylinder.userData.layer = edge.layer
90
- cylinder.frustumCulled = false
91
- cylinder.renderOrder = 10
92
90
 
93
91
  cylinder.frustumCulled = false
94
92
  cylinder.renderOrder = 10
@@ -296,6 +296,7 @@ export default {
296
296
  method: this.renderRoofsMargin,
297
297
  arg: []
298
298
  })
299
+ break
299
300
  case 'selectedModuleFieldChange':
300
301
  methodList.push({
301
302
  name: 'renderEdges',
@@ -379,6 +380,13 @@ export default {
379
380
  arg: []
380
381
  })
381
382
  break
383
+ case 'clearPanelFromChangingRoofs':
384
+ methodList.push({
385
+ name: 'clearPanelsFromChangingRoofs',
386
+ method: this.clearPanelsFromChangingRoofs,
387
+ arg: [params.roofIds]
388
+ })
389
+ break
382
390
  case 'selectedPanelChange':
383
391
  methodList.push({
384
392
  name: 'renderModuleFields',
@@ -119,7 +119,7 @@ export function generateNodes3D(polygons) {
119
119
  return nodes3D
120
120
  }
121
121
 
122
- export function generateEdges2D(polygons, splitEdgesIds = []) {
122
+ export function generateEdges2D(polygons) {
123
123
  let edges2D = []
124
124
  polygons
125
125
  .filter((poly) =>
@@ -162,27 +162,6 @@ export function generateEdges2D(polygons, splitEdgesIds = []) {
162
162
  edge2D.id += '_' + polygon.id + '_' + i
163
163
  })
164
164
  })
165
- edges2D.forEach((edge2D) => {
166
- edge2D.isSplit = splitEdgesIds.includes(edge2D.id)
167
- })
168
- edges2D.forEach((edge2D) => {
169
- const isNotSplit = edge2D.belongsTo.every((item, index, array) => {
170
- const outline0 = array[0].polygon.outline
171
- const outline1 = item.polygon.outline
172
- const point0 = outline0[array[0].index]
173
- const nextPoint0 = outline0[(array[0].index + 1) % outline0.length]
174
- const point1 = outline1[item.index]
175
- const nextPoint1 = outline1[(item.index + 1) % outline1.length]
176
- return isAlmostSameSegment3D(
177
- [point0, nextPoint0],
178
- [point1, nextPoint1],
179
- mmTolerance
180
- )
181
- })
182
- if (!isNotSplit && edge2D.belongsTo.length == 2) {
183
- edge2D.isSplit = true
184
- }
185
- })
186
165
  return edges2D
187
166
  }
188
167
 
@@ -8,7 +8,7 @@ import { hydrateData } from './hydrateData.js'
8
8
 
9
9
  const init_state = {
10
10
  isLoading: false,
11
-
11
+
12
12
  polygons: [],
13
13
  nodes: [],
14
14
  edges: [],