Wiki source code of 02_calc

Last modified by Bimit Administrator on 25.12.2025, 09:31

Show last authors
1 Интерфейс строительного калькулятора предоставляет базовые функции расчета
2 В нем доступны следующий функции:
3
4 * [[area>>path:#_Toc1]] - подсчет площади прямоугольной фигуры, заданной длинами сторон
5 * [[volume>>path:#_Toc2]] - подсчет объема параллелепипеда, заданной длинами сторон (ДЛИНАxШИРИНАxВЫСОТА)
6 * [[areaBox>>path:#_Toc3]] - подсчет площади поверхности стен прямоугольной комнаты, заданной длинами сторон и высотой
7 * [[volumeBox>>path:#_Toc4]] - подсчет объема стен коробки, заданной длинами сторон (по внешней стороне), высотой и толщиной стен
8 * [[located>>path:#_Toc5]] - метод определения вхождения одного элемента в область другого ([[GeometryElement>>https://wiki.bimit.ru/bin/view/API/%D0%9F%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%20API/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20bim/#_Toc10]] space, [[GeometryElement>>https://wiki.bimit.ru/bin/view/API/%D0%9F%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%20API/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20bim/#_Toc10GeometryElement]] obj)
9 * [[intersect>>path:#_Toc6]] - метод определения пересечения области одного элемента в область другого ([[GeometryElement>>GeometryElhttps://wiki.bimit.ru/bin/view/API/%D0%9F%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%20API/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20bim/#_Toc10ement]] space, [[GeometryElement>>GeometryElementhttps://wiki.bimit.ru/bin/view/API/%D0%9F%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%20API/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%20bim/#_Toc10]] obj)
10 * [[distance>>path:#_Toc7]] - определение расстояния между двумя элементами
11 * [[distanceFast>>path:#_Toc12]] - определение расстояния между двумя элементами
12 * [[getElementBounds>>path:#_Toc8]] - получение граничного бокса по элементу и по списку вершин
13 * [[length>>path:#_Toc9]] - получение расстояния между двумя точками в пространстве
14 * [[getOrientedBoundingBox>>path:#_Toc10]] - получение ориентированного, минимального, граничного бокса элемента
15 * [[getElementConvexHull>>path:#_Toc11]] - получение геометрии выпуклой оболочки элемента
16 * [[trunc>>path:#_Toc13]] - округление значение
17 * [[manhattanDistance>>path:#_Toc14]] - расчет расстояния Манхэттена между двумя геометрическими элементами
18 * [[deepInclusion>>path:#_Toc15]] - точная проверка того, что один элемент включен в другой элемент
19 * [[createOrientedBox>>path:#_Toc16]] - создание OBB на основе заданного элемента и в заданном направлении
20 * [[distance2D>>path:#_Toc17]] - расчёт двумерного расстояния между элементами в плоскости XY, 0 если пересекаются
21 * [[distance2DHorizontal>>path:#_Toc18]] - расчёт минимального двумерного расстояния между элементами в плоскости XY
22 * [[distance2DWithOffSet>>path:#_Toc19]] - расчет двумерного расстояния между элементами со смещением элементов
23 * [[isExtendedAABBIntersectNeighbours>>path:#_Toc20]] - проверка пересечения aabb элемента с его соседями + с учетом допустимого пространства length, width, height по направлению dir
24 * [[isValveBelongToPipe>>path:#_Toc21]] - проверка принадлежности одного элемента другому
25 * [[getOBBLongestAxis>>path:#_Toc22]] - возвращает индекс самой длинной стороны obb(X=1, Y=2, Z=3)
26
27 (% class="box infomessage" %)
28 (((
29 **{{id name="_Toc1"/}}area** - подсчет площади прямоугольной фигуры, заданной длинами сторон
30 )))
31
32 * **calc.area(double length, double width) **
33
34 **Пример использования:**
35
36 {{code language="java"}}
37 // area
38 def area = calc.area(6,6)
39
40 // console.info(area) -> “INFO: 36.0”
41 {{/code}}
42
43 (% class="box infomessage" %)
44 (((
45 **{{id name="_Toc2"/}}volume** - подсчет объема параллелепипеда, заданной длинами сторон (ДЛИНАxШИРИНАxВЫСОТА)
46 )))
47
48 * **calc.volume(double length, double width, double height) **
49
50 **Пример использования:**
51
52 {{code language="java"}}
53 // volume
54 def vol= calc.volume(6,0.5,3)
55
56 // console.info(vol) -> “INFO: 9.0”
57 {{/code}}
58
59 (% class="box infomessage" %)
60 (((
61 **{{id name="_Toc3"/}}areaBox** - подсчет площади поверхности стен прямоугольной комнаты, заданной длинами сторон и высотой
62 )))
63
64 * **calc.areaBox(double length, double width, double height) **
65
66 **Пример использования:**
67
68 {{code language="java"}}
69 // areaBox
70 def area = calc.areaBox(6,6,3)
71
72 // console.info(area) -> “INFO: 72.0”
73 {{/code}}
74
75 (% class="box infomessage" %)
76 (((
77 **{{id name="_Toc4"/}}volumeBox** - подсчет объема стен коробки, заданной длинами сторон (по внешней стороне), высотой и толщиной стен
78 )))
79
80 * **calc.volumeBox(double length, double width, double height, double widthWall) **
81
82 **Пример использования:**
83
84 {{code language="java"}}
85 // volumeBox
86 def vol= calc.volumeBox(6,6,3,0.5)
87
88 // console.info(vol) -> “INFO: 33.0”
89 {{/code}}
90
91 (% class="box infomessage" %)
92 (((
93 **{{id name="_Toc5"/}}located** - метод определения вхождения одного элемента в область другого
94 )))
95
96 * **calc.located(GeometryElement space, GeometryElement obj) ** - метод определения вхождения одного элемента в область другого
97
98 **Пример использования:**
99
100 {{code language="java"}}{{/code}}
101
102 (% class="box infomessage" %)
103 (((
104 **{{id name="_Toc6"/}}intersect** - метод определения пересечения области одного элемента в область другого
105 )))
106
107 * **calc.intersect(Bounds bounds1, Bounds bounds2) ** - определение пересечения 2 боксов по границам 1 и 2 бокса
108 * **calc.intersect(double gap, Bounds bounds1, Bounds bounds2) ** - определение пересечения 2 боксов по границам 1 и 2 бокса с увеличением границ одного из элементов
109 * **calc.intersect(double gapX, double gapY, double gapZ, Bounds bounds1, Bounds bounds2) ** - определение пересечения 2 боксов по границам 1 и 2 бокса с увеличением границ одного из элементов отдельно по осям
110 * **calc.intersect(GeometryElement element1, GeometryElement element2) ** - метод определения пересечения 2 элементов через их граничных боксов
111 * **calc.intersect(double gapX, double gapY, double gapZ, GeometryElement element1, GeometryElement element2) ** - определение пересечения 2 элементов через их граничных боксов
112 * **calc.intersect(double gap, GeometryElement element1, GeometryElement element2) ** - определение пересечения 2 элементов через их граничных боксов
113 * **calc.intersect(GeometryObject element1, GeometryObject element2) ** - определение пересечения 2 элементов
114
115 **Пример использования:**
116
117 {{code language="java"}}{{/code}}
118
119 (% class="box infomessage" %)
120 (((
121 **{{id name="_Toc7"/}}distance** - определение расстояния между двумя элементами
122 )))
123
124 * **calc.distance(GeometryObject data1, GeometryObject data2) **
125
126 **Пример использования:**
127
128 {{code language="java"}}{{/code}}
129
130 (% class="box infomessage" %)
131 (((
132 **{{id name="_Toc12"/}}distanceFast** - определение расстояния между двумя элементами
133 )))
134
135 * **calc.distanceFast(GeometryObject data1, GeometryObject data2) **
136
137 **Пример использования:**
138
139 {{code language="java"}}{{/code}}
140
141 (% class="box infomessage" %)
142 (((
143 **{{id name="_Toc8"/}}getElementBounds** - получение граничного бокса по элементу и по списку вершин
144 )))
145
146 * **calc.getElementBounds(GeometryObject geometry) ** - получение граничного бокса по элементу
147 * **calc.getElementBounds(double vertices[]) ** - получение граничного бокса по списку вершин
148
149 **Пример использования:**
150
151 {{code language="java"}}{{/code}}
152
153 (% class="box infomessage" %)
154 (((
155 **{{id name="_Toc9"/}}length** - получение расстояния между двумя точками в пространстве
156 )))
157
158 * **calc.length(Vector3f p1, Vector3f p2) **
159
160 **Пример использования:**
161
162 {{code language="java"}}{{/code}}
163
164 (% class="box infomessage" %)
165 (((
166 **{{id name="_Toc10"/}}getOrientedBoundingBox** - получение ориентированного, минимального, граничного бокса элемента
167 )))
168
169 * **calc.getOrientedBoundingBox(UUID elementUuid) ** - получение ориентированного, минимального, граничного бокса элемента по его идентификатору
170 * **calc.getOrientedBoundingBox(GeometryElement element) ** - получение ориентированного, минимального, граничного бокса элемента по элементу
171 * **calc.getOrientedBoundingBox(Element element) ** - получение ориентированного, минимального, граничного бокса элемента по элементу
172
173 **Пример использования:**
174
175 {{code language="java"}}{{/code}}
176
177 (% class="box infomessage" %)
178 (((
179 **{{id name="_Toc11"/}}getElementConvexHull** - получение геометрии выпуклой оболочки элемента
180 )))
181
182 * **calc.getElementConvexHull(UUID elementUuid) ** - получение геометрии выпуклой оболочки элемента по идентификатору
183 * **calc.getElementConvexHull(GeometryElement element) ** - получение геометрии выпуклой оболочки элемента по элементу
184 * **calc.getElementConvexHull(Element element) ** - получение геометрии выпуклой оболочки элемента по элементу
185
186 **Пример использования:**
187
188 {{code language="java"}}{{/code}}
189
190 (% class="box infomessage" %)
191 (((
192 **{{id name="_Toc13"/}}trunc** - округление значение
193 )))
194
195 * **calc.trunc(double value, int length) ** - округление значение
196 * **calc.trunc(double value) ** - округление значение до 3го знака после запятой
197
198 **Пример использования:**
199
200 {{code language="java"}}{{/code}}
201
202 (% class="box infomessage" %)
203 (((
204 **{{id name="_Toc14"/}}manhattanDistance** - расчет расстояния Манхэттена между двумя геометрическими элементами
205 )))
206
207 * **calc.manhattanDistance(GeometryObject data1, GeometryObject data2) ** - расчет расстояния Манхэттена между двумя геометрическими элементами
208
209 **Пример использования:**
210
211 {{code language="java"}}{{/code}}
212
213 (% class="box infomessage" %)
214 (((
215 **{{id name="_Toc15"/}}deepInclusion** - точная проверка того, что один элемент включен в другой элемент
216 )))
217
218 * **calc.deepInclusion(GeometryElement elementContent, GeometryElement elementContainer) ** - точная проверка того, что один элемент включен в другой элемент
219
220 **Пример использования:**
221
222 {{code language="java"}}{{/code}}
223
224 (% class="box infomessage" %)
225 (((
226 **{{id name="_Toc16"/}}createOrientedBox** - создание OBB на основе заданного элемента и в заданном направлении
227 )))
228
229 * **calc.createOrientedBox(Vector3f center, Vector3f direction, double width, double depth, double height) ** - создание OBB на основе заданного элемента и в заданном направлении
230
231 **Пример использования:**
232
233 {{code language="java"}}{{/code}}
234
235 (% class="box infomessage" %)
236 (((
237 **{{id name="_Toc17"/}}distance2D** - расчёт двумерного расстояния между элементами в плоскости XY, 0 если пересекаются
238 )))
239
240 * **calc.distance2D(GeometryObject data1, GeometryObject data2) ** - расчёт двумерного расстояния между элементами в плоскости XY, 0 если пересекаются
241
242 **Пример использования:**
243
244 {{code language="java"}}{{/code}}
245
246 (% class="box infomessage" %)
247 (((
248 **{{id name="_Toc18"/}}distance2DHorizontal** - расчёт минимального двумерного расстояния между элементами в плоскости XY
249 )))
250
251 * **calc.distance2DHorizontal(GeometryObject data1, GeometryObject data2) ** - расчёт минимального двумерного расстояния между элементами в плоскости XY
252
253 **Пример использования:**
254
255 {{code language="java"}}{{/code}}
256
257 (% class="box infomessage" %)
258 (((
259 **{{id name="_Toc19"/}}distance2DWithOffSet** - расчёт двумерного расстояния между элементами со смещением элементов
260 )))
261
262 * **calc.distance2DWithOffSet(GeometryObject data1, GeometryObject data2, double offSetValue) ** - расчёт двумерного расстояния между элементами со смещением элементов
263
264 **Пример использования:**
265
266 {{code language="java"}}{{/code}}
267
268 (% class="box infomessage" %)
269 (((
270 **{{id name="_Toc20"/}}isExtendedAABBIntersectNeighbours** - проверка пересечения aabb элемента с его соседями + с учетом допустимого пространства length, width, height по направлению dir
271 )))
272
273 * **calc.isExtendedAABBIntersectNeighbours(GeometryElement element, Set<GeometryElement> neighbours, double[] dir, final double length, final double width, final double height) ** - проверка пересечения aabb элемента с его соседями + с учетом допустимого пространства length, width, height по направлению dir
274
275 **Пример использования:**
276
277 {{code language="java"}}{{/code}}
278
279 (% class="box infomessage" %)
280 (((
281 **{{id name="_Toc21"/}}isValveBelongToPipe** - проверка принадлежности одного элемента другому
282 )))
283
284 * **calc.isValveBelongToPipe(GeometryElement valve, GeometryElement pipe) ** - проверка принадлежности одного элемента другому
285
286 **Пример использования:**
287
288 {{code language="java"}}{{/code}}
289
290 (% class="box infomessage" %)
291 (((
292 **{{id name="_Toc22"/}}getOBBLongestAxis** - возвращает индекс самой длинной стороны obb(X=1, Y=2, Z=3)
293 )))
294
295 * **calc.getOBBLongestAxis(GeometryElement element) ** - возвращает индекс самой длинной стороны obb(X=1, Y=2, Z=3)
296
297 **Пример использования:**
298
299 {{code language="java"}}{{/code}}