@enervance/insight-cim-model 0.0.161 → 0.0.162
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/dist/constants/cim-class-names.d.ts +10 -0
- package/dist/constants/cim-class-names.js +11 -1
- package/dist/constants/cim-class-names.js.map +1 -1
- package/dist/converter/integral7/converter.integral7.d.ts +3 -1
- package/dist/converter/integral7/converter.integral7.js +219 -243
- package/dist/converter/integral7/converter.integral7.js.map +1 -1
- package/dist/converter/integral7/dl-convert/data-manager.d.ts +1 -10
- package/dist/converter/integral7/dl-convert/data-manager.js +0 -34
- package/dist/converter/integral7/dl-convert/data-manager.js.map +1 -1
- package/dist/converter/integral7/dl-convert/db/data-types.d.ts +0 -9
- package/dist/converter/integral7/dl-convert/db/data-types.js +0 -11
- package/dist/converter/integral7/dl-convert/db/data-types.js.map +1 -1
- package/dist/converter/integral7/dl-convert/dl-converter-i7.d.ts +153 -99
- package/dist/converter/integral7/dl-convert/dl-converter-i7.js +3401 -1315
- package/dist/converter/integral7/dl-convert/dl-converter-i7.js.map +1 -1
- package/dist/converter/integral7/dl-convert/executor.d.ts +3 -1
- package/dist/converter/integral7/dl-convert/executor.js +4 -3
- package/dist/converter/integral7/dl-convert/executor.js.map +1 -1
- package/dist/converter/integral7/model/dl-utils/util-functions.d.ts +7 -35
- package/dist/converter/integral7/model/dl-utils/util-functions.js +7 -659
- package/dist/converter/integral7/model/dl-utils/util-functions.js.map +1 -1
- package/dist/converter/integral7/{util-asset.model.d.ts → util-cim.model.d.ts} +5 -1
- package/dist/converter/integral7/{util-asset.model.js → util-cim.model.js} +10 -4
- package/dist/converter/integral7/util-cim.model.js.map +1 -0
- package/dist/converter/integral7/utils-cgmes-export.js +2 -0
- package/dist/converter/integral7/utils-cgmes-export.js.map +1 -1
- package/dist/converter/integral7/utils-trafo3w.d.ts +2 -2
- package/dist/converter/integral7/utils-trafo3w.js +21 -4
- package/dist/converter/integral7/utils-trafo3w.js.map +1 -1
- package/dist/converter/integral7/utils.d.ts +10 -22
- package/dist/converter/integral7/utils.js +187 -327
- package/dist/converter/integral7/utils.js.map +1 -1
- package/dist/etl/etl-dppower/etl-dppower.d.ts +15 -0
- package/dist/etl/etl-dppower/etl-dppower.js +204 -0
- package/dist/etl/etl-dppower/etl-dppower.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/model/wires/IRegulatingCondEq.d.ts +3 -0
- package/dist/model/assetinfo/CableInfo.d.ts +7 -0
- package/dist/model/assetinfo/CableInfo.js +49 -0
- package/dist/model/assetinfo/CableInfo.js.map +1 -1
- package/dist/model/assetinfo/OverheadWireInfo.d.ts +7 -0
- package/dist/model/assetinfo/OverheadWireInfo.js +49 -0
- package/dist/model/assetinfo/OverheadWireInfo.js.map +1 -1
- package/dist/model/assets/Facility.js +17 -3
- package/dist/model/assets/Facility.js.map +1 -1
- package/dist/model/assets/LifecycleDate.d.ts +1 -0
- package/dist/model/assets/LifecycleDate.js +3 -0
- package/dist/model/assets/LifecycleDate.js.map +1 -1
- package/dist/model/common/Location.js +1 -1
- package/dist/model/common/Location.js.map +1 -1
- package/dist/model/core/ACDCTerminal.js +2 -1
- package/dist/model/core/ACDCTerminal.js.map +1 -1
- package/dist/model/core/Equipment.js +6 -1
- package/dist/model/core/Equipment.js.map +1 -1
- package/dist/model/core/Substation.js +7 -7
- package/dist/model/core/Substation.js.map +1 -1
- package/dist/model/dc/DCLine.js +17 -17
- package/dist/model/dc/DCLineSegment.js +25 -25
- package/dist/model/diagram/DiagramObject.js +2 -2
- package/dist/model/diagram/DiagramObject.js.map +1 -1
- package/dist/model/equivalents/EquivalentInjection.d.ts +10 -0
- package/dist/model/equivalents/EquivalentInjection.js +111 -0
- package/dist/model/equivalents/EquivalentInjection.js.map +1 -1
- package/dist/model/extensions/amprion/core/AMPRIONBay.js.map +1 -1
- package/dist/model/extensions/enervance/assets/EVWireObject.js +7 -1
- package/dist/model/extensions/enervance/assets/EVWireObject.js.map +1 -1
- package/dist/model/extensions/integral/wires/INTEGRALAsynchronousMachine.d.ts +0 -1
- package/dist/model/extensions/integral/wires/INTEGRALAsynchronousMachine.js +0 -3
- package/dist/model/extensions/integral/wires/INTEGRALAsynchronousMachine.js.map +1 -1
- package/dist/model/extensions/neplan-westnetz/core/WNConnectivityNode.js +8 -1
- package/dist/model/extensions/neplan-westnetz/core/WNConnectivityNode.js.map +1 -1
- package/dist/model/loadmodel/ConformLoadGroup.js +22 -22
- package/dist/model/loadmodel/LoadArea.js +21 -21
- package/dist/model/loadmodel/SubLoadArea.js +22 -22
- package/dist/model/wires/ACLineSegment.d.ts +3 -0
- package/dist/model/wires/ACLineSegment.js +7 -1
- package/dist/model/wires/ACLineSegment.js.map +1 -1
- package/dist/model/wires/AsynchronousMachine.js +0 -1
- package/dist/model/wires/AsynchronousMachine.js.map +1 -1
- package/dist/model/wires/ExternalNetworkInjection.js.map +1 -1
- package/dist/model/wires/PowerTransformer.js +2 -0
- package/dist/model/wires/PowerTransformer.js.map +1 -1
- package/dist/model/wires/PowerTransformerEnd.js +1 -0
- package/dist/model/wires/PowerTransformerEnd.js.map +1 -1
- package/dist/model/wires/RatioTapChanger.js +1 -1
- package/dist/model-container/enum/EVSourceSystemKind.d.ts +1 -0
- package/dist/model-container/enum/EVSourceSystemKind.js +1 -0
- package/dist/model-container/enum/EVSourceSystemKind.js.map +1 -1
- package/dist/model-container/model/ModelContainer.d.ts +5 -0
- package/dist/model-container/model/ModelContainer.js +9 -0
- package/dist/model-container/model/ModelContainer.js.map +1 -1
- package/dist/util/util-create.d.ts +1 -1
- package/dist/util/util-create.js +4 -2
- package/dist/util/util-create.js.map +1 -1
- package/dist/util/utils.d.ts +1 -1
- package/dist/util/utils.js +4 -2
- package/dist/util/utils.js.map +1 -1
- package/dist/utils2/cim.model.utils.js +6 -0
- package/dist/utils2/cim.model.utils.js.map +1 -1
- package/dist/utils2/common.utils.d.ts +1 -0
- package/dist/utils2/common.utils.js +6 -2
- package/dist/utils2/common.utils.js.map +1 -1
- package/dist/utils2/fuseki.utils.js +7 -1
- package/dist/utils2/fuseki.utils.js.map +1 -1
- package/dist/utils2/import.utils.d.ts +2 -1
- package/dist/utils2/import.utils.js +9 -3
- package/dist/utils2/import.utils.js.map +1 -1
- package/dist/utils2/parser.utils.js +7 -7
- package/dist/utils2/parser.utils.js.map +1 -1
- package/package.json +5 -2
- package/dist/converter/integral7/dl-convert/dl-converter-i7-2.d.ts +0 -157
- package/dist/converter/integral7/dl-convert/dl-converter-i7-2.js +0 -3521
- package/dist/converter/integral7/dl-convert/dl-converter-i7-2.js.map +0 -1
- package/dist/converter/integral7/dl-convert/dl-converter-i7.types.d.ts +0 -3
- package/dist/converter/integral7/dl-convert/dl-converter-i7.types.js +0 -3
- package/dist/converter/integral7/dl-convert/dl-converter-i7.types.js.map +0 -1
- package/dist/converter/integral7/util-asset.model.js.map +0 -1
|
@@ -5,25 +5,11 @@ exports.DLUtilFunctions = void 0;
|
|
|
5
5
|
* Hilfsklasse zum Abspeichern der Dl-Profil-relevanten Attribute
|
|
6
6
|
* um bspw. die Positionen der Schaltfelder leicher ermitteln zu können
|
|
7
7
|
*/
|
|
8
|
-
const constants_1 = require("./constants.js");
|
|
9
|
-
const utils_schema_1 = require("../../utils-schema.js");
|
|
10
|
-
const integral_sql_1 = require("../../sql/integral.sql.js");
|
|
11
8
|
const DiagramObject_1 = require("../../../../model/diagram/DiagramObject.js");
|
|
12
|
-
const QueryObjectSsabNsg_1 = require("./QueryObjectSsabNsg.js");
|
|
13
9
|
const DiagramObjectPoint_1 = require("../../../../model/diagram/DiagramObjectPoint.js");
|
|
14
|
-
const parser_utils_1 = require("../../../../utils2/parser.utils.js");
|
|
15
10
|
const common_utils_1 = require("../../../../utils2/common.utils.js");
|
|
11
|
+
const cim_class_names_1 = require("../../../../constants/cim-class-names.js");
|
|
16
12
|
class DLUtilFunctions {
|
|
17
|
-
static getCenterOfPoints(diagramObjectPoints) {
|
|
18
|
-
const centerCoordinates = [0, 0];
|
|
19
|
-
for (const diagramObjectPoint of diagramObjectPoints) {
|
|
20
|
-
centerCoordinates[0] += diagramObjectPoint.xPosition;
|
|
21
|
-
centerCoordinates[1] += diagramObjectPoint.yPosition;
|
|
22
|
-
}
|
|
23
|
-
centerCoordinates[0] /= diagramObjectPoints.length;
|
|
24
|
-
centerCoordinates[1] /= diagramObjectPoints.length;
|
|
25
|
-
return centerCoordinates;
|
|
26
|
-
}
|
|
27
13
|
static distanceVector2Line(lStart, lEnd, v) {
|
|
28
14
|
const lineVector = [lEnd[0] - lStart[0], lEnd[1] - lStart[1]];
|
|
29
15
|
const a = [lEnd[0] - lStart[0], lEnd[1] - lStart[1]];
|
|
@@ -33,9 +19,6 @@ class DLUtilFunctions {
|
|
|
33
19
|
const dist = crossProduct / busbarSectionVectorLength;
|
|
34
20
|
return dist !== null && dist !== void 0 ? dist : 0;
|
|
35
21
|
}
|
|
36
|
-
static lengthOfVector(v) {
|
|
37
|
-
return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2));
|
|
38
|
-
}
|
|
39
22
|
static dot(v1, v2) {
|
|
40
23
|
return v1[0] * v2[0] + v1[1] * v2[1];
|
|
41
24
|
}
|
|
@@ -46,13 +29,6 @@ class DLUtilFunctions {
|
|
|
46
29
|
}
|
|
47
30
|
return resV;
|
|
48
31
|
}
|
|
49
|
-
static divideScalar(v, scalar) {
|
|
50
|
-
const resV = [];
|
|
51
|
-
for (let a = 0; a < v.length; ++a) {
|
|
52
|
-
resV.push(v[a] / scalar);
|
|
53
|
-
}
|
|
54
|
-
return resV;
|
|
55
|
-
}
|
|
56
32
|
static add(v, ...v_args) {
|
|
57
33
|
const v_return = [...v];
|
|
58
34
|
for (let a = 0; a < v_args.length; ++a) {
|
|
@@ -76,21 +52,6 @@ class DLUtilFunctions {
|
|
|
76
52
|
const temp3 = DLUtilFunctions.add(lStart, temp2);
|
|
77
53
|
return temp3;
|
|
78
54
|
}
|
|
79
|
-
static isNegativeOrZero(v) {
|
|
80
|
-
const epsilon = 0.0000001;
|
|
81
|
-
return v < 0 || (v > -epsilon && v < epsilon);
|
|
82
|
-
}
|
|
83
|
-
static vec(lStart, lEnd, v) {
|
|
84
|
-
const unitVec = [lEnd[0] - lStart[0], lEnd[1] - lStart[1]];
|
|
85
|
-
const unitVecLength = Math.sqrt(Math.pow(unitVec[0], 2) + Math.pow(unitVec[1], 2));
|
|
86
|
-
unitVec[0] = unitVec[0] / unitVecLength;
|
|
87
|
-
unitVec[1] = unitVec[1] / unitVecLength;
|
|
88
|
-
const t = DLUtilFunctions.dot(v, unitVec) - DLUtilFunctions.dot(lStart, unitVec);
|
|
89
|
-
const tempV = DLUtilFunctions.add(lStart, DLUtilFunctions.subtract(DLUtilFunctions.mutliplyScalar(unitVec, t), v));
|
|
90
|
-
const tempVLength = Math.sqrt(Math.pow(tempV[0], 2) + Math.pow(tempV[1], 2));
|
|
91
|
-
const resultVec = DLUtilFunctions.divideScalar(tempV, tempVLength);
|
|
92
|
-
return tempV;
|
|
93
|
-
}
|
|
94
55
|
/**
|
|
95
56
|
* Rotiere einen DiagramObjectPoint um den gegebenen Winkel (clockwise Rotation)
|
|
96
57
|
* Der Winkel wird dabei in Grad angegeben und es wird am Ende auf eine bestimmte Anzahl an Nachkommastellen gerundet
|
|
@@ -131,16 +92,6 @@ class DLUtilFunctions {
|
|
|
131
92
|
point[0] = Math.round(resultCoords[0] * amountOfDecimals) / amountOfDecimals;
|
|
132
93
|
point[1] = Math.round(resultCoords[1] * amountOfDecimals) / amountOfDecimals;
|
|
133
94
|
}
|
|
134
|
-
static shiftAddBasedOnNsgSo(cimModel, integral7, variantenNr, nsgSoID, uuidPointsMap) {
|
|
135
|
-
const nsgSo = integral7.integralNSGStandorte.get(nsgSoID);
|
|
136
|
-
uuidPointsMap.forEach((entryDiagramObject, key) => {
|
|
137
|
-
entryDiagramObject.diagramObjectPoints.forEach(entryDiagramObjectPoint => {
|
|
138
|
-
entryDiagramObjectPoint.xPosition += nsgSo.xrel;
|
|
139
|
-
entryDiagramObjectPoint.yPosition += nsgSo.yrel;
|
|
140
|
-
});
|
|
141
|
-
});
|
|
142
|
-
this.addi7ObjectToCIMModel(uuidPointsMap, cimModel, integral7, variantenNr);
|
|
143
|
-
}
|
|
144
95
|
/**
|
|
145
96
|
* Basierend auf der Ausrichtung der Schaltanlage wird die Rotation in Grad berechnet.
|
|
146
97
|
* Ausrichtung => Grad: 0 => 90°, 1 => 180°, 2, => 270°, 3 => 0°
|
|
@@ -162,408 +113,6 @@ class DLUtilFunctions {
|
|
|
162
113
|
// Um negative Rotationswerte zu vermeiden wird 360 dazu addiert
|
|
163
114
|
return (360 + nsgSaDegrees + nsgSfDegrees) % 360;
|
|
164
115
|
}
|
|
165
|
-
// static translate(vector: number[], ...diagramObjectPoints: DiagramObjectPoint[]) {
|
|
166
|
-
// for(const diagramObjectPoint of diagramObjectPoints ) {
|
|
167
|
-
// }
|
|
168
|
-
// }
|
|
169
|
-
// static rotate(angleInDegrees: number, ...diagramObjectPoints: DiagramObjectPoint[]) {
|
|
170
|
-
// for(const diagramObjectPoint of diagramObjectPoints ) {
|
|
171
|
-
// }
|
|
172
|
-
// }
|
|
173
|
-
static rotateAndShiftBasedOnNsgSAA(nsgSo, nsgSa, nsgSaab, diagramObjects, useLeftOffset = false) {
|
|
174
|
-
let saabShiftOffset = 0;
|
|
175
|
-
for (const tempNsgSaab of nsgSa.nsgSaabschnitt) {
|
|
176
|
-
saabShiftOffset = saabShiftOffset < (tempNsgSaab.nslots + tempNsgSaab.laenge) ? (tempNsgSaab.nslots + tempNsgSaab.laenge) : saabShiftOffset;
|
|
177
|
-
}
|
|
178
|
-
for (const diagramObject of diagramObjects) {
|
|
179
|
-
for (const diagramObjectPoint of diagramObject.diagramObjectPoints) {
|
|
180
|
-
diagramObjectPoint.xPosition += useLeftOffset ? nsgSaab.nslots * constants_1.NsgConstants.HORIZONTAL_OFFSET : 0;
|
|
181
|
-
DLUtilFunctions.rotateDiagramObjectPoint(diagramObjectPoint, -90 * nsgSa.ausrichtung);
|
|
182
|
-
diagramObjectPoint.xPosition += nsgSo.xrel + nsgSa.xrel + (nsgSa.ausrichtung === 2 ? saabShiftOffset * constants_1.NsgConstants.HORIZONTAL_OFFSET : 0);
|
|
183
|
-
diagramObjectPoint.yPosition += nsgSo.yrel + nsgSa.yrel + (nsgSa.ausrichtung === 3 ? saabShiftOffset * constants_1.NsgConstants.HORIZONTAL_OFFSET : 0);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
static rotateShiftAddBasedOnNsgSAA(cimModel, integral7, variantenNr, nsgSaaID, uuidPointsMap, useLeftOffset = false) {
|
|
188
|
-
const nsgSaa = integral7.integralNSGSAAbschnitt.get(nsgSaaID);
|
|
189
|
-
const nsgSa = integral7.integralNSGSchaltanlage.get(nsgSaa.nsgsaid);
|
|
190
|
-
const nsgSo = integral7.integralNSGStandorte.get(nsgSa.nsgsoid);
|
|
191
|
-
let saaShiftOffset = 0;
|
|
192
|
-
for (const tempNsgSaa of nsgSa.saabNsg) {
|
|
193
|
-
saaShiftOffset = saaShiftOffset < (tempNsgSaa.nslots + tempNsgSaa.laenge) ? (tempNsgSaa.nslots + tempNsgSaa.laenge) : saaShiftOffset;
|
|
194
|
-
}
|
|
195
|
-
uuidPointsMap.forEach((entryDiagramObject, key) => {
|
|
196
|
-
entryDiagramObject.diagramObjectPoints.forEach(entryDiagramObjectPoint => {
|
|
197
|
-
entryDiagramObjectPoint.xPosition += useLeftOffset ? nsgSaa.nslots * constants_1.NsgConstants.HORIZONTAL_OFFSET : 0;
|
|
198
|
-
DLUtilFunctions.rotateDiagramObjectPoint(entryDiagramObjectPoint, -90 * nsgSa.ausrichtung);
|
|
199
|
-
entryDiagramObjectPoint.xPosition += nsgSo.xrel + nsgSa.xrel + (nsgSa.ausrichtung === 2 ? saaShiftOffset * constants_1.NsgConstants.HORIZONTAL_OFFSET : 0);
|
|
200
|
-
entryDiagramObjectPoint.yPosition += nsgSo.yrel + nsgSa.yrel + (nsgSa.ausrichtung === 3 ? saaShiftOffset * constants_1.NsgConstants.HORIZONTAL_OFFSET : 0);
|
|
201
|
-
});
|
|
202
|
-
// entryDiagramObject.rotation = entryDiagramObject.rotation ? (entryDiagramObject.rotation + (90 * nsgSa.ausrichtung) + normalRotateFactor) % 360 : undefined;
|
|
203
|
-
});
|
|
204
|
-
this.addi7ObjectToCIMModel(uuidPointsMap, cimModel, integral7, variantenNr);
|
|
205
|
-
}
|
|
206
|
-
static cloneDiagramObject(other) {
|
|
207
|
-
var _a;
|
|
208
|
-
const newDiagramObject = new DiagramObject_1.DiagramObject(common_utils_1.CommonUtils.generateUUID());
|
|
209
|
-
newDiagramObject.rotation = (_a = other.rotation) !== null && _a !== void 0 ? _a : 0;
|
|
210
|
-
for (let i = 0; i < other.diagramObjectPoints.length; i++) {
|
|
211
|
-
const p = other.diagramObjectPoints[i];
|
|
212
|
-
const diagramObjectPoint = new DiagramObjectPoint_1.DiagramObjectPoint(p.xPosition, p.yPosition, (i + 1));
|
|
213
|
-
diagramObjectPoint.mrid = common_utils_1.CommonUtils.generateUUID();
|
|
214
|
-
diagramObjectPoint.diagramObject = newDiagramObject;
|
|
215
|
-
newDiagramObject.addDiagramObjectPoint(diagramObjectPoint);
|
|
216
|
-
}
|
|
217
|
-
return newDiagramObject;
|
|
218
|
-
}
|
|
219
|
-
static addi7ObjectToCIMModel(uuidPointsMap, cimModel, integral7, variantenNr) {
|
|
220
|
-
for (const nodePointEntry of uuidPointsMap.entries()) {
|
|
221
|
-
const cimObject = cimModel.getObject(nodePointEntry[0]);
|
|
222
|
-
const diagram = cimModel.getDiagram(integral7.i7SchemaID2UUID.get(variantenNr));
|
|
223
|
-
const diagramObject = new DiagramObject_1.DiagramObject((0, parser_utils_1.getUUID)(undefined));
|
|
224
|
-
diagramObject.name = `DiagramObject`;
|
|
225
|
-
if (cimObject !== undefined) {
|
|
226
|
-
diagramObject.setIdentifiedObject(cimObject);
|
|
227
|
-
}
|
|
228
|
-
else {
|
|
229
|
-
diagramObject.setIdentifiedObjectUUID(nodePointEntry[0]);
|
|
230
|
-
}
|
|
231
|
-
diagramObject.setDiagram(diagram);
|
|
232
|
-
diagram.addDiagramObject(diagramObject);
|
|
233
|
-
(0, utils_schema_1.copyDiagramObject)(diagramObject, nodePointEntry[1]);
|
|
234
|
-
integral7.placedCIMObjectsForDLProfil.set(nodePointEntry[0], diagramObject);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
static placeKupplung(i7KnotenBeziehungen, relevantSSabIDs, nsgSSABs, integralID2UUID, placedCIMObjectUUIDs, kpFeldDeltaausrichtung, kpFeldLeftOffset, isLKupplung, objects) {
|
|
238
|
-
const nodePointMap = new Map();
|
|
239
|
-
const maxSSabPos = Math.max(...[...nsgSSABs.values()].map(ssab => ssab.posSSAB));
|
|
240
|
-
const containsLeistungsschalter = i7KnotenBeziehungen.find(entry => entry.knotenTyp === integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.LEISTUNGSSCHALTER]) !== undefined;
|
|
241
|
-
// Platziere zusammenhängende Elemente auf einer Linie
|
|
242
|
-
const initialNodes = i7KnotenBeziehungen.filter(elem => relevantSSabIDs.has(elem.aknoten));
|
|
243
|
-
// Eine Kupplung belegt im Standardfall in integral7 drei Felder
|
|
244
|
-
const defaultWidthOfKupplung = 2 * constants_1.NsgConstants.HORIZONTAL_OFFSET;
|
|
245
|
-
for (const initialNode of initialNodes) {
|
|
246
|
-
// some weird behavior
|
|
247
|
-
if (nodePointMap.get(initialNode.id) || placedCIMObjectUUIDs.has(integralID2UUID.get(initialNode.id))) {
|
|
248
|
-
continue;
|
|
249
|
-
}
|
|
250
|
-
let tempNodePoints = new Map();
|
|
251
|
-
// Mapped die Node-ID auf die SSAB, wenn das Node mit einer SSAB verbunden ist
|
|
252
|
-
let tempNodeSSABConnectedMap = new Map();
|
|
253
|
-
let connectionLength = 0;
|
|
254
|
-
let lastNode = null;
|
|
255
|
-
let crtNode = initialNode;
|
|
256
|
-
// Zähle die Anzahl an Nodes, die innberhalb der Kupplung liegen
|
|
257
|
-
while (crtNode) {
|
|
258
|
-
connectionLength += 1;
|
|
259
|
-
lastNode = crtNode;
|
|
260
|
-
crtNode = i7KnotenBeziehungen.find(elem => elem.aknoten === crtNode.eknoten);
|
|
261
|
-
}
|
|
262
|
-
let isUniversal = false;
|
|
263
|
-
let lastNodeLeistungsschalter = false;
|
|
264
|
-
if (relevantSSabIDs.has(lastNode.eknoten)) {
|
|
265
|
-
// Beziehung geht von Sammelschiene zu Sammelschiene
|
|
266
|
-
}
|
|
267
|
-
else {
|
|
268
|
-
// Schaue, ob ggfs. eine Universale Kupplung vorliegt
|
|
269
|
-
// => Endknoten liegt in einem anderen Knoten als Endknoten vor
|
|
270
|
-
// ==> Daher Erhöhe die Länge um 1
|
|
271
|
-
if (i7KnotenBeziehungen.find(elem => elem.eknoten === lastNode.eknoten && elem !== lastNode)) {
|
|
272
|
-
isUniversal = true;
|
|
273
|
-
lastNodeLeistungsschalter = (lastNode.knotenTyp === integral_sql_1.Integral7TableNames[integral_sql_1.I7Objects.LEISTUNGSSCHALTER]);
|
|
274
|
-
if (lastNodeLeistungsschalter) {
|
|
275
|
-
connectionLength += 1;
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
//const defaultLength = 3 * NsgConstants.HORIZONTAL_OFFSET;
|
|
280
|
-
let yVecLength = undefined;
|
|
281
|
-
let ssabAnfYPos = undefined;
|
|
282
|
-
if (isLKupplung && !isUniversal) {
|
|
283
|
-
ssabAnfYPos = QueryObjectSsabNsg_1.QueryObjectSsabNsg.getBottomRightPoint(nsgSSABs.get(initialNode.aknoten)).y;
|
|
284
|
-
const ssabEndYPos = QueryObjectSsabNsg_1.QueryObjectSsabNsg.getTopLeftPoint(nsgSSABs.get(lastNode.eknoten)).y;
|
|
285
|
-
yVecLength = ssabEndYPos - ssabAnfYPos;
|
|
286
|
-
}
|
|
287
|
-
let pointIndex = 0;
|
|
288
|
-
if (connectionLength == 1) {
|
|
289
|
-
// Platziere Knoten in der Mitte ==> Setze daher die Länge auf 2
|
|
290
|
-
pointIndex = 1;
|
|
291
|
-
connectionLength = 3;
|
|
292
|
-
}
|
|
293
|
-
/* BEGIN: Setze Null-basierte x-Koordinate und ggfs. y-Koordinate (wenn Längskupplung) */
|
|
294
|
-
lastNode = null;
|
|
295
|
-
crtNode = initialNode;
|
|
296
|
-
while (crtNode) {
|
|
297
|
-
if (nodePointMap.get(crtNode.id) === undefined) {
|
|
298
|
-
// let xPos = 3 * (initialXPos > 0 ? initialXPos : (pointIndex / connectionLength));
|
|
299
|
-
let xPos = (isUniversal && !lastNodeLeistungsschalter ? 1 : (pointIndex / (connectionLength - 1)));
|
|
300
|
-
let yPos = undefined;
|
|
301
|
-
if (isLKupplung && !isUniversal) {
|
|
302
|
-
yPos = ssabAnfYPos + yVecLength * (pointIndex / connectionLength);
|
|
303
|
-
}
|
|
304
|
-
else {
|
|
305
|
-
yPos = 0; // Setze y erstmal auf 0 ==> Die y-Position wird nachträglich erst gesetzt
|
|
306
|
-
}
|
|
307
|
-
const crtNodeDiagramObject = DLUtilFunctions.createDiagramObjectWithPoint(xPos, yPos);
|
|
308
|
-
nodePointMap.set(crtNode.id, crtNodeDiagramObject);
|
|
309
|
-
tempNodePoints.set(crtNode.id, crtNodeDiagramObject);
|
|
310
|
-
pointIndex += 1;
|
|
311
|
-
}
|
|
312
|
-
if (relevantSSabIDs.has(crtNode.aknoten) || relevantSSabIDs.has(crtNode.eknoten)) {
|
|
313
|
-
const ssab = relevantSSabIDs.has(crtNode.aknoten) ? nsgSSABs.get(crtNode.aknoten) : nsgSSABs.get(crtNode.eknoten);
|
|
314
|
-
tempNodeSSABConnectedMap.set(crtNode.id, ssab);
|
|
315
|
-
}
|
|
316
|
-
lastNode = crtNode;
|
|
317
|
-
crtNode = i7KnotenBeziehungen.find(elem => elem.aknoten === crtNode.eknoten);
|
|
318
|
-
}
|
|
319
|
-
/* END: Setze Null-basierte x-Koordinate und ggfs. y-Koordinate (wenn Längskupplung) */
|
|
320
|
-
/* BEGIN: Shifte Punkte entlang x-Achse basierend auf SSAB.x oder KpFeld-Position */
|
|
321
|
-
let leftOffset = undefined;
|
|
322
|
-
if (!isLKupplung) {
|
|
323
|
-
// Für Querkupplungen ist das leftOffset das Offset des KpFeldes
|
|
324
|
-
leftOffset = kpFeldLeftOffset;
|
|
325
|
-
}
|
|
326
|
-
else {
|
|
327
|
-
// Für Längskupplungen ist das leftOffset das Offset die rechte untere x-Position der Sammelschiene
|
|
328
|
-
if (isUniversal && !lastNodeLeistungsschalter) {
|
|
329
|
-
leftOffset = QueryObjectSsabNsg_1.QueryObjectSsabNsg.getTopLeftPoint(tempNodeSSABConnectedMap.get(initialNode.id)).x;
|
|
330
|
-
}
|
|
331
|
-
else {
|
|
332
|
-
leftOffset = QueryObjectSsabNsg_1.QueryObjectSsabNsg.getBottomRightPoint(tempNodeSSABConnectedMap.get(initialNode.id)).x;
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
for (const tempNodePointEntry of tempNodePoints) {
|
|
336
|
-
if (isLKupplung && isUniversal && !lastNodeLeistungsschalter) {
|
|
337
|
-
tempNodePointEntry[1].diagramObjectPoints[0].xPosition = leftOffset;
|
|
338
|
-
}
|
|
339
|
-
else {
|
|
340
|
-
tempNodePointEntry[1].diagramObjectPoints[0].xPosition = (tempNodePointEntry[1].diagramObjectPoints[0].xPosition * defaultWidthOfKupplung) + leftOffset;
|
|
341
|
-
}
|
|
342
|
-
if (tempNodePointEntry[0] === initialNode.id && isUniversal && !lastNodeLeistungsschalter) {
|
|
343
|
-
tempNodePointEntry[1].diagramObjectPoints[0].xPosition -= (constants_1.NsgConstants.HORIZONTAL_OFFSET / 4);
|
|
344
|
-
}
|
|
345
|
-
else if (tempNodePointEntry[0] === initialNode.id && isUniversal) {
|
|
346
|
-
tempNodePointEntry[1].diagramObjectPoints[0].xPosition += (constants_1.NsgConstants.HORIZONTAL_OFFSET / 4);
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
if (!isUniversal) {
|
|
350
|
-
tempNodePoints.get(initialNode.id).diagramObjectPoints[0].xPosition += (constants_1.NsgConstants.HORIZONTAL_OFFSET / (connectionLength));
|
|
351
|
-
tempNodePoints.get(lastNode.id).diagramObjectPoints[0].xPosition -= (constants_1.NsgConstants.HORIZONTAL_OFFSET / (connectionLength));
|
|
352
|
-
}
|
|
353
|
-
/* END: Shifte Punkte entlang x-Achse basierend auf SSAB.x oder KpFeld-Position */
|
|
354
|
-
if (!isLKupplung) {
|
|
355
|
-
// Fall: Querkupplung
|
|
356
|
-
tempNodePoints.forEach((value, key) => {
|
|
357
|
-
value.rotation = 90;
|
|
358
|
-
});
|
|
359
|
-
// Setze die korrekten y-Positionen
|
|
360
|
-
for (const tempNodePointEntry of tempNodePoints) {
|
|
361
|
-
if (tempNodeSSABConnectedMap.get(tempNodePointEntry[0]) && containsLeistungsschalter) {
|
|
362
|
-
// Sammelschienenknoten auf die Sammelschienen, falls ein Leistungsschalter in der Querkupplung vorhanden ist
|
|
363
|
-
tempNodePointEntry[1].diagramObjectPoints[0].yPosition = tempNodeSSABConnectedMap.get(tempNodePointEntry[0]).posSSAB * constants_1.NsgConstants.VERTICAL_OFFSET;
|
|
364
|
-
const tempNode = i7KnotenBeziehungen.find(elem => elem.id === tempNodePointEntry[0]);
|
|
365
|
-
if (relevantSSabIDs.has(tempNode.eknoten)) {
|
|
366
|
-
tempNodePointEntry[1].rotation = kpFeldDeltaausrichtung === 0 ? 180 : 0;
|
|
367
|
-
}
|
|
368
|
-
else {
|
|
369
|
-
tempNodePointEntry[1].rotation = kpFeldDeltaausrichtung === 0 ? 0 : 180;
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
else {
|
|
373
|
-
const ssabOffset = kpFeldDeltaausrichtung === 0 ? 0 : maxSSabPos - 1;
|
|
374
|
-
const yOffsetMaxPosSSAB = ((kpFeldDeltaausrichtung === 0 ? -1 : 1) * (1) + ssabOffset) * constants_1.NsgConstants.VERTICAL_OFFSET;
|
|
375
|
-
//const yOffsetMaxPosSSAB = (kpFeldDeltaausrichtung === 0 ? -1 : 1) * maxSSabPos * NsgConstants.VERTICAL_OFFSET;
|
|
376
|
-
tempNodePointEntry[1].diagramObjectPoints[0].yPosition = yOffsetMaxPosSSAB;
|
|
377
|
-
if (isUniversal && tempNodeSSABConnectedMap.get(tempNodePointEntry[0])) {
|
|
378
|
-
tempNodePointEntry[1].rotation = kpFeldDeltaausrichtung === 0 ? 0 : 180;
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
else {
|
|
384
|
-
// Fall: Längskupplung
|
|
385
|
-
if (isUniversal) {
|
|
386
|
-
for (const tempNodePointEntry of tempNodePoints) {
|
|
387
|
-
if (tempNodeSSABConnectedMap.get(tempNodePointEntry[0]) && containsLeistungsschalter) {
|
|
388
|
-
// Sammelschienenknoten auf die Sammelschienen, falls ein Leistungsschalter in der Längskupplung vorhanden ist
|
|
389
|
-
tempNodePointEntry[1].diagramObjectPoints[0].yPosition = tempNodeSSABConnectedMap.get(tempNodePointEntry[0]).posSSAB * constants_1.NsgConstants.VERTICAL_OFFSET;
|
|
390
|
-
}
|
|
391
|
-
else {
|
|
392
|
-
const yOffsetMaxPosSSAB = -1 * maxSSabPos * constants_1.NsgConstants.VERTICAL_OFFSET;
|
|
393
|
-
tempNodePointEntry[1].diagramObjectPoints[0].yPosition = yOffsetMaxPosSSAB;
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
else {
|
|
398
|
-
// Wurde bereits oben gesetzt
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
// BEGIN: ConnectivityNode-Support
|
|
402
|
-
let prevNode = null;
|
|
403
|
-
crtNode = initialNode;
|
|
404
|
-
while (crtNode) {
|
|
405
|
-
// Platzieren erst dann, wenn der Knoten nicht mehr auf eine Sammelschiene verweist
|
|
406
|
-
if (!relevantSSabIDs.has(crtNode.aknoten)) {
|
|
407
|
-
const aKnotenUUID = integralID2UUID.get(crtNode.aknoten);
|
|
408
|
-
const eKnotenUUID = integralID2UUID.get(crtNode.eknoten);
|
|
409
|
-
if (!placedCIMObjectUUIDs.has(aKnotenUUID) && !nodePointMap.has(crtNode.aknoten)) {
|
|
410
|
-
// Standard-Platzierung
|
|
411
|
-
const prevNodePoint = nodePointMap.get(prevNode.id);
|
|
412
|
-
const crtNodePoint = nodePointMap.get(crtNode.id);
|
|
413
|
-
nodePointMap.set(crtNode.aknoten, DLUtilFunctions.createDiagramObjectWithPoint((prevNodePoint.diagramObjectPoints[0].xPosition + crtNodePoint.diagramObjectPoints[0].xPosition) / 2, (prevNodePoint.diagramObjectPoints[0].yPosition + crtNodePoint.diagramObjectPoints[0].yPosition) / 2));
|
|
414
|
-
if (isLKupplung) {
|
|
415
|
-
// Bei Längskupplungen
|
|
416
|
-
if (isUniversal) {
|
|
417
|
-
if (relevantSSabIDs.has(prevNode.aknoten) && !relevantSSabIDs.has(crtNode.eknoten)) {
|
|
418
|
-
// Erster Knoten hat Beziehung zu einer Sammelschiene und aktueller Knoten nicht
|
|
419
|
-
nodePointMap.set(crtNode.aknoten, DLUtilFunctions.createDiagramObjectWithPoint(nodePointMap.get(prevNode.id).diagramObjectPoints[0].xPosition, nodePointMap.get(crtNode.id).diagramObjectPoints[0].yPosition));
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
else {
|
|
424
|
-
// Bei Querkupplungen
|
|
425
|
-
if (relevantSSabIDs.has(prevNode.aknoten) && !relevantSSabIDs.has(crtNode.eknoten)) {
|
|
426
|
-
// Erster Knoten hat Beziehung zu einer Sammelschiene und aktueller Knoten nicht
|
|
427
|
-
nodePointMap.set(crtNode.aknoten, DLUtilFunctions.createDiagramObjectWithPoint(nodePointMap.get(prevNode.id).diagramObjectPoints[0].xPosition, nodePointMap.get(crtNode.id).diagramObjectPoints[0].yPosition));
|
|
428
|
-
}
|
|
429
|
-
else if (relevantSSabIDs.has(crtNode.eknoten) && !relevantSSabIDs.has(prevNode.aknoten)) {
|
|
430
|
-
// Letzer Knoten hat Beziehung zu einer Sammelschiene und vorheriger Knoten nicht
|
|
431
|
-
nodePointMap.set(crtNode.aknoten, DLUtilFunctions.createDiagramObjectWithPoint(nodePointMap.get(crtNode.id).diagramObjectPoints[0].xPosition, nodePointMap.get(prevNode.id).diagramObjectPoints[0].yPosition));
|
|
432
|
-
}
|
|
433
|
-
/*if (isUniversal && !placedCIMObjectsForDLProfil.has(eKnotenUUID) && !nodePointMap.has(crtNode.eknoten)) {
|
|
434
|
-
if( containsLeistungsschalter ) {
|
|
435
|
-
const xExtraOffset = 0.75 * NsgConstants.HORIZONTAL_OFFSET;
|
|
436
|
-
nodePointMap.set(crtNode.eknoten, new DiagramObjectPoint(nodePointMap.get(crtNode.id).x + xExtraOffset, nodePointMap.get(crtNode.id).y));
|
|
437
|
-
} else {
|
|
438
|
-
nodePointMap.set(crtNode.eknoten, new DiagramObjectPoint(nodePointMap.get(crtNode.id).x, nodePointMap.get(crtNode.id).y));
|
|
439
|
-
}
|
|
440
|
-
}*/
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
if (isUniversal && !placedCIMObjectUUIDs.has(integralID2UUID.get(crtNode.eknoten)) && !nodePointMap.has(crtNode.eknoten)) {
|
|
445
|
-
if (containsLeistungsschalter && !relevantSSabIDs.has(crtNode.aknoten)) {
|
|
446
|
-
const xExtraOffset = 0.75 * constants_1.NsgConstants.HORIZONTAL_OFFSET;
|
|
447
|
-
nodePointMap.set(crtNode.eknoten, DLUtilFunctions.createDiagramObjectWithPoint(nodePointMap.get(crtNode.id).diagramObjectPoints[0].xPosition + xExtraOffset, nodePointMap.get(crtNode.id).diagramObjectPoints[0].yPosition));
|
|
448
|
-
}
|
|
449
|
-
else {
|
|
450
|
-
if (relevantSSabIDs.has(crtNode.aknoten) && !relevantSSabIDs.has(crtNode.eknoten)) {
|
|
451
|
-
// Knoten hat Beziehung zu einer Sammelschiene verweist dann auf eine nicht Sammelschiene
|
|
452
|
-
let yOffsetMaxPosSSAB = undefined;
|
|
453
|
-
if (!isLKupplung) {
|
|
454
|
-
const ssabOffset = kpFeldDeltaausrichtung === 0 ? 0 : maxSSabPos;
|
|
455
|
-
yOffsetMaxPosSSAB = ((kpFeldDeltaausrichtung === 0 ? -1 : 1) * (1) + ssabOffset) * constants_1.NsgConstants.VERTICAL_OFFSET;
|
|
456
|
-
}
|
|
457
|
-
else {
|
|
458
|
-
yOffsetMaxPosSSAB = -1 * maxSSabPos * constants_1.NsgConstants.VERTICAL_OFFSET;
|
|
459
|
-
}
|
|
460
|
-
nodePointMap.set(crtNode.eknoten, DLUtilFunctions.createDiagramObjectWithPoint(nodePointMap.get(crtNode.id).diagramObjectPoints[0].xPosition, yOffsetMaxPosSSAB));
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
prevNode = crtNode;
|
|
465
|
-
crtNode = i7KnotenBeziehungen.find(elem => elem.aknoten === crtNode.eknoten);
|
|
466
|
-
}
|
|
467
|
-
// END: ConnectivityNode-Support
|
|
468
|
-
// BEGIN: Terminal-Support
|
|
469
|
-
// crtNode = initialNode;
|
|
470
|
-
// while (crtNode) {
|
|
471
|
-
// let aKnotenPos: DiagramObjectPoint = undefined;
|
|
472
|
-
// let eKnotenPos: DiagramObjectPoint = undefined;
|
|
473
|
-
//
|
|
474
|
-
// if (!isLKupplung) {
|
|
475
|
-
// if (relevantSSabIDs.has(crtNode.aknoten)) {
|
|
476
|
-
// aKnotenPos = new DiagramObjectPoint(((containsLeistungsschalter) ? nodePointMap.get(crtNode.id).diagramObjectPoints[0].xPosition : leftOffset), nsgSSABs.get(crtNode.aknoten).posSSAB * NsgConstants.VERTICAL_OFFSET);
|
|
477
|
-
// }
|
|
478
|
-
// if (relevantSSabIDs.has(crtNode.eknoten)) {
|
|
479
|
-
// eKnotenPos = new DiagramObjectPoint(((containsLeistungsschalter) ? nodePointMap.get(crtNode.id).diagramObjectPoints[0].xPosition : leftOffset + defaultWidthOfKupplung), nsgSSABs.get(crtNode.eknoten).posSSAB * NsgConstants.VERTICAL_OFFSET);
|
|
480
|
-
// }
|
|
481
|
-
// } else {
|
|
482
|
-
// if (relevantSSabIDs.has(crtNode.aknoten)) {
|
|
483
|
-
// if (isUniversal) {
|
|
484
|
-
// aKnotenPos = new DiagramObjectPoint(nodePointMap.get(crtNode.id).diagramObjectPoints[0].xPosition, nsgSSABs.get(crtNode.aknoten).posSSAB * NsgConstants.VERTICAL_OFFSET)
|
|
485
|
-
// } else {
|
|
486
|
-
// aKnotenPos = new DiagramObjectPoint(QueryObjectSsabNsg.getBottomRightPoint(nsgSSABs.get(crtNode.aknoten)).x, nsgSSABs.get(crtNode.aknoten).posSSAB * NsgConstants.VERTICAL_OFFSET)
|
|
487
|
-
// }
|
|
488
|
-
// }
|
|
489
|
-
// if (relevantSSabIDs.has(crtNode.eknoten)) {
|
|
490
|
-
// if (isUniversal) {
|
|
491
|
-
// eKnotenPos = new DiagramObjectPoint(nodePointMap.get(crtNode.id).diagramObjectPoints[0].xPosition, nsgSSABs.get(crtNode.eknoten).posSSAB * NsgConstants.VERTICAL_OFFSET)
|
|
492
|
-
// } else {
|
|
493
|
-
// eKnotenPos = new DiagramObjectPoint(QueryObjectSsabNsg.getTopLeftPoint(nsgSSABs.get(crtNode.eknoten)).x, nsgSSABs.get(crtNode.eknoten).posSSAB * NsgConstants.VERTICAL_OFFSET)
|
|
494
|
-
// }
|
|
495
|
-
// }
|
|
496
|
-
// }
|
|
497
|
-
//
|
|
498
|
-
// DLUtilFunctions.exportTerminals(crtNode, nodePointMap, integralID2UUID, objects, aKnotenPos, eKnotenPos)
|
|
499
|
-
//
|
|
500
|
-
// lastNode = crtNode;
|
|
501
|
-
// crtNode = i7KnotenBeziehungen.find(elem => elem.aknoten === crtNode.eknoten);
|
|
502
|
-
// }
|
|
503
|
-
// END: Terminal-Support
|
|
504
|
-
}
|
|
505
|
-
return nodePointMap;
|
|
506
|
-
}
|
|
507
|
-
static exportTerminals(nodeRelation, nodePointMap, integralID2UUID, objects, aKnotenPos = undefined, eKnotenPos = undefined) {
|
|
508
|
-
// if (nodePointMap.has(nodeRelation.id)) {
|
|
509
|
-
// const ceTerminals = objects.getConductingEquipment(integralID2UUID.get(nodeRelation.id)).terminals;
|
|
510
|
-
//
|
|
511
|
-
// /* aKnoten => current bzw. ConnectivityNode -> ConductingEquipment */
|
|
512
|
-
// let terminalDiagramObject: DiagramObject;
|
|
513
|
-
// let cnTerminals = cimModel.getConnectivityNode(integralID2UUID.get(nodeRelation.aknoten)).terminals;
|
|
514
|
-
// let terminal = [...cnTerminals.values()].filter(t => ceTerminals.has(t.getUUID()))[0];
|
|
515
|
-
//
|
|
516
|
-
// // ConductingEquipment-Punkt
|
|
517
|
-
// let ceDiagramObject = nodePointMap.get(nodeRelation.id);
|
|
518
|
-
//
|
|
519
|
-
// let cePoint = ceDiagramObject.diagramObjectPoints[0];
|
|
520
|
-
// terminalDiagramObject = DLUtilFunctions.createDiagramObjectWithPoint(cePoint.xPosition, cePoint.yPosition);
|
|
521
|
-
//
|
|
522
|
-
// let cnPoint;
|
|
523
|
-
// // ConnectivityNode-Punkt
|
|
524
|
-
// if (nodePointMap.has(nodeRelation.aknoten)) {
|
|
525
|
-
// cnPoint = aKnotenPos ? aKnotenPos : nodePointMap.get(nodeRelation.aknoten).diagramObjectPoints[0];
|
|
526
|
-
// if (cnPoint.xPosition !== cePoint.xPosition && cnPoint.yPosition !== cePoint.yPosition) {
|
|
527
|
-
// // Füge zusätzlichen Eckpunkt ein
|
|
528
|
-
// terminalDiagramObject.diagramObjectPoints.push(new DiagramObjectPoint(cnPoint.xPosition, cePoint.yPosition));
|
|
529
|
-
// }
|
|
530
|
-
// terminalDiagramObject.diagramObjectPoints.push(new DiagramObjectPoint(cnPoint.xPosition, cnPoint.yPosition));
|
|
531
|
-
// DLUtilFunctions.adjustTerminalCEPosition(nodePointMap.get(nodeRelation.id), cnPoint, terminalDiagramObject.diagramObjectPoints[0]);
|
|
532
|
-
// }
|
|
533
|
-
// /* --- */
|
|
534
|
-
//
|
|
535
|
-
// /* current => eKnoten bzw. ConductingEquipment -> ConnectivityNode */
|
|
536
|
-
// cnTerminals = cimModel.getConnectivityNode(integralID2UUID.get(nodeRelation.eknoten)).terminals;
|
|
537
|
-
// terminal = [...cnTerminals.values()].filter(t => ceTerminals.has(t.getUUID()))[0];
|
|
538
|
-
//
|
|
539
|
-
// cePoint = nodePointMap.get(nodeRelation.id).diagramObjectPoints[0];
|
|
540
|
-
// terminalDiagramObject = DLUtilFunctions.createDiagramObjectWithPoint(cePoint.xPosition, cePoint.yPosition);
|
|
541
|
-
//
|
|
542
|
-
// // ConnectivityNode-Punkt
|
|
543
|
-
// if (nodePointMap.has(nodeRelation.eknoten)) {
|
|
544
|
-
// cnPoint = eKnotenPos ? eKnotenPos : nodePointMap.get(nodeRelation.eknoten).diagramObjectPoints[0];
|
|
545
|
-
// if (cnPoint.xPosition !== cePoint.xPosition && cnPoint.yPosition !== cePoint.yPosition) {
|
|
546
|
-
// // Füge zusätzlichen Eckpunkt ein
|
|
547
|
-
// terminalDiagramObject.diagramObjectPoints.push(new DiagramObjectPoint(cnPoint.xPosition, cePoint.yPosition));
|
|
548
|
-
// }
|
|
549
|
-
// terminalDiagramObject.diagramObjectPoints.push(new DiagramObjectPoint(cnPoint.xPosition, cnPoint.yPosition));
|
|
550
|
-
// DLUtilFunctions.adjustTerminalCEPosition(nodePointMap.get(nodeRelation.id), cnPoint, terminalDiagramObject.diagramObjectPoints[0]);
|
|
551
|
-
// }
|
|
552
|
-
// }
|
|
553
|
-
/* --- */
|
|
554
|
-
}
|
|
555
|
-
static adjustTerminalCEPosition(ceDiagramObject, cnPoint, terminalDiagramObjectPoint) {
|
|
556
|
-
// Das Offset wird in Richtung des CN vollzogen entsprechend der Ausrichtung des CE
|
|
557
|
-
const isLeft = cnPoint.xPosition < terminalDiagramObjectPoint.xPosition;
|
|
558
|
-
const isTop = cnPoint.yPosition < terminalDiagramObjectPoint.yPosition;
|
|
559
|
-
const ceRotation = ceDiagramObject.rotation;
|
|
560
|
-
if (ceRotation === 0 || ceRotation === 180) {
|
|
561
|
-
terminalDiagramObjectPoint.yPosition += (isTop ? -1 : 1) * constants_1.NsgConstants.TERMINAL_CE_OFFSET;
|
|
562
|
-
}
|
|
563
|
-
else if (ceRotation === 90 || ceRotation === 270) {
|
|
564
|
-
terminalDiagramObjectPoint.xPosition += (isLeft ? -1 : 1) * constants_1.NsgConstants.TERMINAL_CE_OFFSET;
|
|
565
|
-
}
|
|
566
|
-
}
|
|
567
116
|
static copyAndPushDiagramObjectPoint(diagramObject, diagramObjectPoint2Copy, unshift) {
|
|
568
117
|
const diagramObjectPoint = new DiagramObjectPoint_1.DiagramObjectPoint(diagramObjectPoint2Copy.xPosition, diagramObjectPoint2Copy.yPosition);
|
|
569
118
|
diagramObjectPoint.mrid = common_utils_1.CommonUtils.generateUUID();
|
|
@@ -593,13 +142,14 @@ class DLUtilFunctions {
|
|
|
593
142
|
}
|
|
594
143
|
}
|
|
595
144
|
static createDiagramObjectWithPoint2(args) {
|
|
596
|
-
const
|
|
145
|
+
const uuid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DiagramObject, DLUtilFunctions.uuidNamespaces, args.identifiedObjectUUID);
|
|
146
|
+
const diagramObject = new DiagramObject_1.DiagramObject(uuid, args.diagramObjectName);
|
|
597
147
|
diagramObject.diagramUUID = args.diagramUUID;
|
|
598
148
|
diagramObject.identifiedObjectUUID = args.identifiedObjectUUID;
|
|
599
149
|
diagramObject.rotation = args.rotation !== undefined ? args.rotation : null;
|
|
600
150
|
const diagramObjectPoint = new DiagramObjectPoint_1.DiagramObjectPoint(args.xPosition, args.yPosition);
|
|
601
|
-
diagramObjectPoint.mrid = common_utils_1.CommonUtils.generateUUID();
|
|
602
151
|
diagramObjectPoint.sequenceNumber = args.sequenceNumber !== undefined ? args.sequenceNumber : 1;
|
|
152
|
+
diagramObjectPoint.mrid = common_utils_1.CommonUtils.generateUUIDv5(cim_class_names_1.ClassNames.DiagramObjectPoint, DLUtilFunctions.uuidNamespaces, uuid + diagramObjectPoint.sequenceNumber);
|
|
603
153
|
diagramObjectPoint.diagramObject = diagramObject;
|
|
604
154
|
diagramObject.diagramObjectPoints.push(diagramObjectPoint);
|
|
605
155
|
return diagramObject;
|
|
@@ -626,122 +176,6 @@ class DLUtilFunctions {
|
|
|
626
176
|
}
|
|
627
177
|
return diagramObject;
|
|
628
178
|
}
|
|
629
|
-
static createDiagramObjectWithPointArrayBased(xy, rotation) {
|
|
630
|
-
const diagramObject = new DiagramObject_1.DiagramObject();
|
|
631
|
-
diagramObject.rotation = rotation;
|
|
632
|
-
diagramObject.diagramObjectPoints.push(new DiagramObjectPoint_1.DiagramObjectPoint(xy[0], xy[1]));
|
|
633
|
-
return diagramObject;
|
|
634
|
-
}
|
|
635
|
-
static filterByVariantenNrOnlyEingeblendet(result, variantenNr, onlyEingeblendet) {
|
|
636
|
-
let filteredResults = result.filter(elem => elem.variantennr === variantenNr);
|
|
637
|
-
if (onlyEingeblendet) {
|
|
638
|
-
filteredResults = filteredResults.filter(elem => {
|
|
639
|
-
return (elem.eingeblendet === 1 || (elem.eingeblendet === null && elem.angezeigt === 1));
|
|
640
|
-
});
|
|
641
|
-
}
|
|
642
|
-
return filteredResults;
|
|
643
|
-
}
|
|
644
|
-
static getXYOffsetFromRelCM(type, nsgObject, anschlussID, nsgLeitungspkt) {
|
|
645
|
-
let xOffset = 0;
|
|
646
|
-
let yOffset = 0;
|
|
647
|
-
if (type === integral_sql_1.Integral7TableNames.NSG_SCHALTFELD) {
|
|
648
|
-
// Auswerten, ob ein Schaltfeld am Anfang angeschlossen ist
|
|
649
|
-
// Falls ja, Ausrichtung des Schaltfeldes und der zugehörigen Schaltanlage relevant
|
|
650
|
-
// Ignoriere xrel und yrel vom Leitungspunkt
|
|
651
|
-
// const nsgSchaltfeld = integral7.integralNSGSchaltfeld.get(anschlussID);
|
|
652
|
-
const nsgSchaltfeld = nsgObject;
|
|
653
|
-
switch (nsgSchaltfeld.orientation) {
|
|
654
|
-
case 0: // TOP
|
|
655
|
-
// c => x += c
|
|
656
|
-
// m => y += (m *-1)
|
|
657
|
-
xOffset = nsgLeitungspkt.abstand_rel_anchor_c;
|
|
658
|
-
yOffset = nsgLeitungspkt.abstand_rel_anchor_m * (-1);
|
|
659
|
-
break;
|
|
660
|
-
case 1: // RIGHT
|
|
661
|
-
// m => x += (m)
|
|
662
|
-
// c => y += (c)
|
|
663
|
-
xOffset = nsgLeitungspkt.abstand_rel_anchor_m;
|
|
664
|
-
yOffset = nsgLeitungspkt.abstand_rel_anchor_c;
|
|
665
|
-
break;
|
|
666
|
-
case 2: // BOTTOM
|
|
667
|
-
// c => x += (c *-1)
|
|
668
|
-
// m => y += (m)
|
|
669
|
-
xOffset = nsgLeitungspkt.abstand_rel_anchor_c * (-1);
|
|
670
|
-
yOffset = nsgLeitungspkt.abstand_rel_anchor_m;
|
|
671
|
-
break;
|
|
672
|
-
case 3: // LEFT
|
|
673
|
-
// m => x += (m *-1)
|
|
674
|
-
// c => y += (c *-1)
|
|
675
|
-
xOffset = nsgLeitungspkt.abstand_rel_anchor_m * (-1);
|
|
676
|
-
yOffset = nsgLeitungspkt.abstand_rel_anchor_c * (-1);
|
|
677
|
-
break;
|
|
678
|
-
}
|
|
679
|
-
}
|
|
680
|
-
else if (type === integral_sql_1.Integral7TableNames.NSG_QUERZWEIG) {
|
|
681
|
-
const nsgQuerzweig = nsgObject;
|
|
682
|
-
switch (nsgQuerzweig.ausrichtung) {
|
|
683
|
-
case 0:
|
|
684
|
-
xOffset = nsgLeitungspkt.abstand_rel_anchor_c * (-1);
|
|
685
|
-
yOffset = nsgLeitungspkt.abstand_rel_anchor_m;
|
|
686
|
-
break;
|
|
687
|
-
case 1:
|
|
688
|
-
xOffset = nsgLeitungspkt.abstand_rel_anchor_m * (-1);
|
|
689
|
-
yOffset = nsgLeitungspkt.abstand_rel_anchor_c * (-1);
|
|
690
|
-
break;
|
|
691
|
-
case 2:
|
|
692
|
-
xOffset = nsgLeitungspkt.abstand_rel_anchor_c;
|
|
693
|
-
yOffset = nsgLeitungspkt.abstand_rel_anchor_m * (-1);
|
|
694
|
-
break;
|
|
695
|
-
case 3:
|
|
696
|
-
xOffset = nsgLeitungspkt.abstand_rel_anchor_m;
|
|
697
|
-
yOffset = nsgLeitungspkt.abstand_rel_anchor_c;
|
|
698
|
-
break;
|
|
699
|
-
}
|
|
700
|
-
}
|
|
701
|
-
else {
|
|
702
|
-
xOffset = nsgLeitungspkt.abstand_rel_anchor_c;
|
|
703
|
-
yOffset = nsgLeitungspkt.abstand_rel_anchor_m * (-1);
|
|
704
|
-
}
|
|
705
|
-
return [xOffset, yOffset];
|
|
706
|
-
}
|
|
707
|
-
static convertNsgKnoten(cimModel, integral7, data, refCimObjectUUID, width, height, xParentRel, yParentRel) {
|
|
708
|
-
const diagramUUID = integral7.i7SchemaID2UUID.get(data.variantennr);
|
|
709
|
-
const diagram = cimModel.getDiagram(diagramUUID);
|
|
710
|
-
// const nsgStandort = integral7.integralNSGStandorte.get(data.nsgso);
|
|
711
|
-
// if (!diagram || !nsgStandort) {
|
|
712
|
-
if (!diagram) { // || !nsgStandort) {
|
|
713
|
-
return;
|
|
714
|
-
}
|
|
715
|
-
const diagramObject = new DiagramObject_1.DiagramObject(common_utils_1.CommonUtils.generateUUID(), 'Abzweig');
|
|
716
|
-
diagramObject.diagramUUID = diagramUUID;
|
|
717
|
-
diagramObject.setDiagram(diagram);
|
|
718
|
-
const diagramObjectPoint = new DiagramObjectPoint_1.DiagramObjectPoint(xParentRel + data.xrel + (width / 2), yParentRel + data.yrel + (height / 2));
|
|
719
|
-
diagramObjectPoint.mrid = common_utils_1.CommonUtils.generateUUID();
|
|
720
|
-
diagramObjectPoint.diagramObject = diagramObject;
|
|
721
|
-
diagramObject.addDiagramObjectPoint(diagramObjectPoint);
|
|
722
|
-
// Füge dem CIMModel hinzu
|
|
723
|
-
cimModel.addDiagramObject(diagramObject);
|
|
724
|
-
cimModel.addDiagramObjectPoint(diagramObjectPoint);
|
|
725
|
-
if (refCimObjectUUID !== undefined) {
|
|
726
|
-
diagramObject.setIdentifiedObjectUUID(refCimObjectUUID);
|
|
727
|
-
integral7.placedCIMObjectsForDLProfil.set(refCimObjectUUID, diagramObject);
|
|
728
|
-
// TODO replaced with new key
|
|
729
|
-
DLUtilFunctions.setObjectIntoMapJSONBased(integral7.i7ID2UUID, DLUtilFunctions.stringifySchemaKey({
|
|
730
|
-
id: data.id,
|
|
731
|
-
variantennr: data.variantennr
|
|
732
|
-
}), refCimObjectUUID);
|
|
733
|
-
// integral7.i7ID2UUID.set(data.id, refCimObjectUUID);
|
|
734
|
-
}
|
|
735
|
-
else {
|
|
736
|
-
// TODO replaced with new key
|
|
737
|
-
DLUtilFunctions.setObjectIntoMapJSONBased(integral7.i7ID2UUID, DLUtilFunctions.stringifySchemaKey({
|
|
738
|
-
id: data.id,
|
|
739
|
-
variantennr: data.variantennr
|
|
740
|
-
}), diagramObject.getUUID());
|
|
741
|
-
// integral7.i7ID2UUID.set(data.id, diagramObject.getUUID());
|
|
742
|
-
integral7.placedCIMObjectsForDLProfil.set(diagramObject.getUUID(), diagramObject);
|
|
743
|
-
}
|
|
744
|
-
}
|
|
745
179
|
static splitLineIntoLineSegments(segmentPercentages, linePoints) {
|
|
746
180
|
// const resultDiagramObjects: DiagramObject[] = [];
|
|
747
181
|
const resultSegments = [];
|
|
@@ -815,96 +249,10 @@ class DLUtilFunctions {
|
|
|
815
249
|
}
|
|
816
250
|
return resultSegments;
|
|
817
251
|
}
|
|
818
|
-
static
|
|
819
|
-
|
|
820
|
-
// Bestimme komplette 'Pixellänge' der Leitung
|
|
821
|
-
let completePixelLength = 0;
|
|
822
|
-
for (let a = 1; a < i7LineBasePoints.length; ++a) {
|
|
823
|
-
const tempX = i7LineBasePoints[a].xPosition - i7LineBasePoints[a - 1].xPosition;
|
|
824
|
-
const tempY = i7LineBasePoints[a].yPosition - i7LineBasePoints[a - 1].yPosition;
|
|
825
|
-
completePixelLength += Math.sqrt((tempX * tempX) + (tempY * tempY));
|
|
826
|
-
}
|
|
827
|
-
// Der Leitungsabschnitt zwischen 'lastB' und 'b' wird mit der Leitung 'eqIdx' verknüpft
|
|
828
|
-
let lastB = 0;
|
|
829
|
-
let b = 1;
|
|
830
|
-
for (let eqIdx = 0; eqIdx < segmentPercentages.length; ++eqIdx) {
|
|
831
|
-
let crtPixelPercentageSize = 0;
|
|
832
|
-
let lastPixelPercentageSize;
|
|
833
|
-
const epsilon = 0.00001;
|
|
834
|
-
let crtPixelLength = 0;
|
|
835
|
-
for (let idx = 1; idx < b; ++idx) {
|
|
836
|
-
const tempX = i7LineBasePoints[idx].xPosition - i7LineBasePoints[idx - 1].xPosition;
|
|
837
|
-
const tempY = i7LineBasePoints[idx].yPosition - i7LineBasePoints[idx - 1].yPosition;
|
|
838
|
-
crtPixelLength += Math.sqrt((tempX * tempX) + (tempY * tempY));
|
|
839
|
-
}
|
|
840
|
-
do {
|
|
841
|
-
// Nehme weitere DiagramObjectPoint zum aktuellen LineSegment hinzu
|
|
842
|
-
const tempX = i7LineBasePoints[b].xPosition - i7LineBasePoints[b - 1].xPosition;
|
|
843
|
-
const tempY = i7LineBasePoints[b].yPosition - i7LineBasePoints[b - 1].yPosition;
|
|
844
|
-
crtPixelLength += Math.sqrt((tempX * tempX) + (tempY * tempY));
|
|
845
|
-
lastPixelPercentageSize = crtPixelPercentageSize;
|
|
846
|
-
crtPixelPercentageSize = (crtPixelLength / completePixelLength);
|
|
847
|
-
b++;
|
|
848
|
-
} while (crtPixelPercentageSize < segmentPercentages[eqIdx] && b < i7LineBasePoints.length);
|
|
849
|
-
const crtPixelPercentage = (crtPixelLength / completePixelLength);
|
|
850
|
-
if (crtPixelPercentage <= segmentPercentages[eqIdx] + epsilon) {
|
|
851
|
-
// Ende erreicht
|
|
852
|
-
}
|
|
853
|
-
else if (crtPixelPercentage > segmentPercentages[eqIdx]) {
|
|
854
|
-
let decreased = false;
|
|
855
|
-
//if (b === i7LineBasePoints.length) {
|
|
856
|
-
b--;
|
|
857
|
-
decreased = true;
|
|
858
|
-
//}
|
|
859
|
-
// Neuer DiagramObjectPoint notwendig
|
|
860
|
-
// Interpoliere dafür zwischen den letzten beiden Punkten und erzeuge neuen Punkt
|
|
861
|
-
let tempX = i7LineBasePoints[b].xPosition - i7LineBasePoints[b - 1].xPosition;
|
|
862
|
-
let tempY = i7LineBasePoints[b].yPosition - i7LineBasePoints[b - 1].yPosition;
|
|
863
|
-
const percentageOfSegment = crtPixelPercentageSize - lastPixelPercentageSize;
|
|
864
|
-
const tempRestX = tempX * (1 - percentageOfSegment);
|
|
865
|
-
const tempRestY = tempY * (1 - percentageOfSegment);
|
|
866
|
-
tempX = tempX * percentageOfSegment;
|
|
867
|
-
tempY = tempY * percentageOfSegment;
|
|
868
|
-
const newDiagramObjectPoint = {
|
|
869
|
-
xPosition: i7LineBasePoints[b - 1].xPosition + tempX,
|
|
870
|
-
yPosition: i7LineBasePoints[b - 1].yPosition + tempY
|
|
871
|
-
};
|
|
872
|
-
crtPixelLength -= Math.sqrt((tempRestX * tempRestX) + (tempRestY * tempRestY));
|
|
873
|
-
i7LineBasePoints.splice(b, 0, newDiagramObjectPoint);
|
|
874
|
-
if (decreased)
|
|
875
|
-
b++;
|
|
876
|
-
}
|
|
877
|
-
const diagramObject = new DiagramObject_1.DiagramObject(common_utils_1.CommonUtils.generateUUID(), 'DiagramObject');
|
|
878
|
-
diagramObject.setIdentifiedObjectUUID(eqUUIDs[eqIdx]);
|
|
879
|
-
returnedDiagramObjects.push(diagramObject);
|
|
880
|
-
let i = 1;
|
|
881
|
-
for (let idx = lastB; idx < b; ++idx) {
|
|
882
|
-
const diagramObjectPoint = new DiagramObjectPoint_1.DiagramObjectPoint(i7LineBasePoints[idx].xPosition, i7LineBasePoints[idx].yPosition, i);
|
|
883
|
-
diagramObjectPoint.mrid = common_utils_1.CommonUtils.generateUUID();
|
|
884
|
-
diagramObjectPoint.diagramObject = diagramObject;
|
|
885
|
-
diagramObject.addDiagramObjectPoint(diagramObjectPoint);
|
|
886
|
-
++i;
|
|
887
|
-
}
|
|
888
|
-
lastB = b - 1;
|
|
889
|
-
}
|
|
890
|
-
return returnedDiagramObjects;
|
|
891
|
-
}
|
|
892
|
-
static stringifySchemaKey(key) {
|
|
893
|
-
return JSON.stringify(key);
|
|
894
|
-
}
|
|
895
|
-
static parseSchemaKey(key) {
|
|
896
|
-
return JSON.parse(key);
|
|
897
|
-
}
|
|
898
|
-
static getObjectFromMapJSONBased(map, complexKey) {
|
|
899
|
-
return map.get(complexKey);
|
|
900
|
-
}
|
|
901
|
-
static setObjectIntoMapJSONBased(map, complexKey, value) {
|
|
902
|
-
return map.set(complexKey, value);
|
|
903
|
-
}
|
|
904
|
-
static hasMapObjectJSONBased(map, complexKey) {
|
|
905
|
-
return map.has(complexKey);
|
|
252
|
+
static setUuidNamespaces(uuidNamespaces) {
|
|
253
|
+
DLUtilFunctions.uuidNamespaces = uuidNamespaces;
|
|
906
254
|
}
|
|
907
255
|
}
|
|
908
256
|
exports.DLUtilFunctions = DLUtilFunctions;
|
|
909
|
-
DLUtilFunctions.
|
|
257
|
+
DLUtilFunctions.uuidNamespaces = new Array();
|
|
910
258
|
//# sourceMappingURL=util-functions.js.map
|