Wiki source code of 02_calc
Last modified by Bimit Administrator on 25.12.2025, 09:31
Hide last authors
| author | version | line-number | content |
|---|---|---|---|
![]() |
4.1 | 1 | Интерфейс строительного калькулятора предоставляет базовые функции расчета |
| 2 | В нем доступны следующий функции: | ||
| 3 | |||
![]() |
11.2 | 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) | ||
![]() |
11.4 | 10 | * [[distance>>path:#_Toc7]] - определение расстояния между двумя элементами |
![]() |
11.18 | 11 | * [[distanceFast>>path:#_Toc12]] - определение расстояния между двумя элементами |
![]() |
11.4 | 12 | * [[getElementBounds>>path:#_Toc8]] - получение граничного бокса по элементу и по списку вершин |
| 13 | * [[length>>path:#_Toc9]] - получение расстояния между двумя точками в пространстве | ||
| 14 | * [[getOrientedBoundingBox>>path:#_Toc10]] - получение ориентированного, минимального, граничного бокса элемента | ||
| 15 | * [[getElementConvexHull>>path:#_Toc11]] - получение геометрии выпуклой оболочки элемента | ||
![]() |
11.21 | 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) | ||
![]() |
4.1 | 26 | |
![]() |
11.2 | 27 | (% class="box infomessage" %) |
| 28 | ((( | ||
| 29 | **{{id name="_Toc1"/}}area** - подсчет площади прямоугольной фигуры, заданной длинами сторон | ||
| 30 | ))) | ||
![]() |
6.1 | 31 | |
![]() |
11.2 | 32 | * **calc.area(double length, double width) ** |
| 33 | |||
| 34 | **Пример использования:** | ||
| 35 | |||
![]() |
4.1 | 36 | {{code language="java"}} |
![]() |
9.1 | 37 | // area |
![]() |
4.1 | 38 | def area = calc.area(6,6) |
| 39 | |||
| 40 | // console.info(area) -> “INFO: 36.0” | ||
| 41 | {{/code}} | ||
| 42 | |||
![]() |
11.2 | 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 | |||
![]() |
5.1 | 52 | {{code language="java"}} |
![]() |
8.1 | 53 | // volume |
![]() |
5.1 | 54 | def vol= calc.volume(6,0.5,3) |
| 55 | |||
| 56 | // console.info(vol) -> “INFO: 9.0” | ||
| 57 | {{/code}} | ||
| 58 | |||
![]() |
11.2 | 59 | (% class="box infomessage" %) |
| 60 | ((( | ||
| 61 | **{{id name="_Toc3"/}}areaBox** - подсчет площади поверхности стен прямоугольной комнаты, заданной длинами сторон и высотой | ||
| 62 | ))) | ||
| 63 | |||
| 64 | * **calc.areaBox(double length, double width, double height) ** | ||
| 65 | |||
| 66 | **Пример использования:** | ||
| 67 | |||
![]() |
5.1 | 68 | {{code language="java"}} |
![]() |
9.1 | 69 | // areaBox |
![]() |
5.1 | 70 | def area = calc.areaBox(6,6,3) |
| 71 | |||
| 72 | // console.info(area) -> “INFO: 72.0” | ||
| 73 | {{/code}} | ||
| 74 | |||
![]() |
11.2 | 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 | |||
![]() |
5.1 | 84 | {{code language="java"}} |
![]() |
9.1 | 85 | // volumeBox |
![]() |
5.1 | 86 | def vol= calc.volumeBox(6,6,3,0.5) |
| 87 | |||
| 88 | // console.info(vol) -> “INFO: 33.0” | ||
| 89 | {{/code}} | ||
![]() |
11.3 | 90 | |
| 91 | (% class="box infomessage" %) | ||
| 92 | ((( | ||
![]() |
11.18 | 93 | **{{id name="_Toc5"/}}located** - метод определения вхождения одного элемента в область другого |
![]() |
11.17 | 94 | ))) |
| 95 | |||
| 96 | * **calc.located(GeometryElement space, GeometryElement obj) ** - метод определения вхождения одного элемента в область другого | ||
| 97 | |||
| 98 | **Пример использования:** | ||
| 99 | |||
| 100 | {{code language="java"}}{{/code}} | ||
| 101 | |||
| 102 | (% class="box infomessage" %) | ||
| 103 | ((( | ||
![]() |
11.3 | 104 | **{{id name="_Toc6"/}}intersect** - метод определения пересечения области одного элемента в область другого |
| 105 | ))) | ||
| 106 | |||
![]() |
11.17 | 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 бокса с увеличением границ одного из элементов отдельно по осям | ||
![]() |
11.3 | 110 | * **calc.intersect(GeometryElement element1, GeometryElement element2) ** - метод определения пересечения 2 элементов через их граничных боксов |
![]() |
11.17 | 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 элементов | ||
![]() |
11.3 | 114 | |
| 115 | **Пример использования:** | ||
| 116 | |||
![]() |
11.15 | 117 | {{code language="java"}}{{/code}} |
![]() |
11.4 | 118 | |
| 119 | (% class="box infomessage" %) | ||
| 120 | ((( | ||
| 121 | **{{id name="_Toc7"/}}distance** - определение расстояния между двумя элементами | ||
| 122 | ))) | ||
| 123 | |||
| 124 | * **calc.distance(GeometryObject data1, GeometryObject data2) ** | ||
| 125 | |||
| 126 | **Пример использования:** | ||
| 127 | |||
![]() |
11.15 | 128 | {{code language="java"}}{{/code}} |
![]() |
11.4 | 129 | |
| 130 | (% class="box infomessage" %) | ||
| 131 | ((( | ||
![]() |
11.15 | 132 | **{{id name="_Toc12"/}}distanceFast** - определение расстояния между двумя элементами |
| 133 | ))) | ||
| 134 | |||
![]() |
11.16 | 135 | * **calc.distanceFast(GeometryObject data1, GeometryObject data2) ** |
![]() |
11.15 | 136 | |
| 137 | **Пример использования:** | ||
| 138 | |||
| 139 | {{code language="java"}}{{/code}} | ||
| 140 | |||
| 141 | (% class="box infomessage" %) | ||
| 142 | ((( | ||
![]() |
11.4 | 143 | **{{id name="_Toc8"/}}getElementBounds** - получение граничного бокса по элементу и по списку вершин |
| 144 | ))) | ||
| 145 | |||
| 146 | * **calc.getElementBounds(GeometryObject geometry) ** - получение граничного бокса по элементу | ||
| 147 | * **calc.getElementBounds(double vertices[]) ** - получение граничного бокса по списку вершин | ||
| 148 | |||
| 149 | **Пример использования:** | ||
| 150 | |||
![]() |
11.15 | 151 | {{code language="java"}}{{/code}} |
![]() |
11.4 | 152 | |
| 153 | (% class="box infomessage" %) | ||
| 154 | ((( | ||
| 155 | **{{id name="_Toc9"/}}length** - получение расстояния между двумя точками в пространстве | ||
| 156 | ))) | ||
| 157 | |||
| 158 | * **calc.length(Vector3f p1, Vector3f p2) ** | ||
| 159 | |||
| 160 | **Пример использования:** | ||
| 161 | |||
![]() |
11.15 | 162 | {{code language="java"}}{{/code}} |
![]() |
11.4 | 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 | |||
![]() |
11.15 | 175 | {{code language="java"}}{{/code}} |
![]() |
11.4 | 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 | |||
![]() |
11.15 | 188 | {{code language="java"}}{{/code}} |
![]() |
11.20 | 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}} |
