@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.
|
|
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.
|
|
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
|
|
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
|
|