9. Справочник
Все записи языка — по порядку разделов. У каждой: синтаксис, что значит, пример, а также две строки: «Когда нужно» и «Если ошибиться». Примеры полных моделей можно скопировать во вкладку «Текст» целиком.
Обозначения: <…> — значение, […] — необязательно, … — повтор. Число — -12.5, 1e3; точка — x,y,z
(в фигуре x,y), без пробелов. Поля разделяются пробелами или переводами строк — любым их числом; запись кончается там,
где начинается следующая (номер со своим словом, empty, заголовок раздела…). Значим перевод строки только у
комментария # и в строках model, units.
Десятичная запятая и точка. В координатах дробная часть пишется только через точку (12.5,0,300): запятая
разделяет числа точки, и 12,5,0,300 не прочитается. В числах параметров — λ, t, α — разбор принимает и запятую
(lambda 0,81 значит 0.81), но пишите везде точкой: одна запись для всех чисел, и координата с запятой не
проскочит в текст по привычке.
Единицы. λ — Вт/(м·°C); α — Вт/(м²·°C); t — °C; сопротивление теплопередаче R — м²·°C/Вт (в интерфейсе
м²·К/Вт — то же самое). Координаты — в миллиметрах, если нет строки units.
Углы ящика. Ящик и прямоугольник задаются двумя противоположными углами; разбор принимает их в любом порядке. Обычно первым пишут угол с меньшими координатами.
Грамматика одной страницы
# грамматика
model [<имя>] version 7.3
[units <единицы>]
materials params
<номер> lambda <λ>
<номер> T <t>
materials objects
<материал> cuboid <x,y,z> <x,y,z>
empty cuboid <x,y,z> <x,y,z>
<материал> shape XY <x,y> <x,y> <x,y> … Z <от>,<до>
empty shape XY <x,y> <x,y> <x,y> … Z <от>,<до>
ambients
<номер> t <t> alpha <α> [side <±X…>] [default] [points <x,y,z> …] [rect <x,y,z> <x,y,z> …]
<номер> adiabat [side <±X…>] [default] [points <x,y,z> …] [rect <x,y,z> <x,y,z> …]
Записи для файлов из старых расчетов (element, internal и др.) — в приложении.
Заголовок
model
Когда нужно. Первая строка любой модели — без нее текст не читается.
Если ошибиться. Версия не
7.3— модель не открывается: «версия модели … не поддерживается».
# синтаксис
model [<имя>] version 7.3
Первая строка текста. Имя — любое, может содержать пробелы и может отсутствовать. Версия языка — 7.3; текст
другой версии не читается.
# примеры строк
model стена из газобетона version 7.3
model version 7.3
units
Когда нужно. Чертеж в сантиметрах или метрах, и не хочется пересчитывать в миллиметры.
Если ошибиться. Забыли строку при координатах в метрах — стена окажется в 1000 раз тоньше. Ошибки не будет.
# синтаксис
units <единицы>
Единицы координат, если не миллиметры: cm, m, 0.1mm. Нет строки — миллиметры. Теплофизические величины
от единиц не зависят: λ всегда в Вт/(м·°C), α — в Вт/(м²·°C), t — в °C.
Комментарий #
Когда нужно. Подписать слой или грань, пометить вариант.
Если ошибиться.
#внутриdesc "…"— не комментарий. Остальное после#разбор не читает: запись, случайно закомментированная, из модели пропадет без сообщения.
Все от # до конца строки — комментарий. На всю строку или после записи.
Раздел materials params
lambda — теплопроводность
Когда нужно. У каждого слоя конструкции есть теплопроводность: кирпич 0.81, вата 0.048 (СП 50.13330, таблица Т.1, условия Б).
Если ошибиться. Неверная λ — не ошибка текста: расчет проходит, результат чужой. Номер объявлен дважды — ошибка.
# синтаксис
<номер> lambda <λ>
λ — Вт/(м·°C). Номер — метка материала, с 1, может идти с пропусками; объявляется один раз.
desc — описание материала
Когда нужно. Через месяц вспомнить, где кирпич, а где вата.
Если ошибиться. Не закрыли кавычку — ошибка «описание: нет закрывающей кавычки». На расчет описание не влияет.
# синтаксис
<номер> lambda <λ> desc "<описание>"
<номер> T <t> desc "<описание>"
Название или марка материала — для человека. Текст в двойных кавычках; внутри можно \"
(кавычка) и \\ (обратная косая черта), # внутри кавычек — не комментарий.
Если описание не задано, а λ есть в справочнике материалов, программа подставит краткое имя сама.
# пример строки
1 lambda 0.04 desc "ПСБ 15-20 Б"
T — заданная температура
Когда нужно. В конструкции есть тело с известной температурой: трубка с теплоносителем, греющий кабель.
Если ошибиться. Заданная температура не имеет теплопроводности: поставили
Tтам, где нужнаlambda(обычный слой), — слой станет источником заданной температуры, и тепло пойдет совсем не так. Ошибки не будет.
# синтаксис
<номер> T <t>
Материал с заданной температурой, °C: например, трубка с теплоносителем.
Пример — стена с греющей трубкой:
model стена с трубкой version 7.3
materials params
1 lambda 1.5
2 T 45
materials objects
1 cuboid 0,0,0 200,1000,1000
2 cuboid 80,450,0 120,490,1000
ambients
1 t 20 alpha 8 points 0,500,500 200,500,500
2 adiabat default
Раздел materials objects
cuboid — ящик
Когда нужно. Почти любая конструкция — стена, слой утеплителя, плита, перемычка, рама — собирается из ящиков.
Если ошибиться. Неверная координата оставляет щель или наложение, расчет проходит. Ящик, который ничего не касается, висит в пустоте и считать его незачем.
# синтаксис
<материал> cuboid <x0,y0,z0> <x1,y1,z1>
Ящик задается двумя противоположными углами; порядок углов любой (разбор берет наименьшую и наибольшую координату по каждой оси), обычно первым пишут угол с меньшими координатами.
materials objects
1 cuboid 0,0,0 380,1000,1000
Здесь ящик из материала 1: 380 мм по X, 1000 мм по Y и по Z, один угол в начале координат.
empty — вырез
Когда нужно. Проем, отверстие, щель, шахта.
Если ошибиться. Вырез выше тела в тексте не вырежет его; ниже рамы — вырежет и раму.
# синтаксис
empty cuboid <x0,y0,z0> <x1,y1,z1>
Если где-то нужно вырезать — проем, отверстие, щель, — пишут обычный ящик, только вместо номера материала слово
empty («пусто»). На его месте остается пустота. Вырез действует на тела, записанные выше него; тело, записанное
ниже, снова заполняет свое место.
materials objects
1 cuboid 0,0,0 380,1000,1000
empty cuboid 0,300,300 380,700,800
Стена с проемом 400 × 500 мм насквозь.
Порядок закраски
Когда нужно. Тела пересекаются: плита в стене, рама в проеме.
Если ошибиться. Перестановка двух пересекающихся тел разных материалов меняет модель — молча.
Тела красятся по порядку, каждое следующее — поверх прежних. Материал в точке — у последнего тела, которое ее
содержит; если это empty или тел нет — пустота.
Пример — плита с отверстием под коммуникации, одна стенка отверстия утеплена. Стенки отверстия омывает воздух комнаты:
model плита version 7.3
materials params
1 lambda 0.7
2 lambda 0.04
materials objects
1 cuboid 0,0,0 1000,1000,200
empty cuboid 400,400,0 600,600,200
2 cuboid 400,400,0 450,600,200
ambients
1 t -20 alpha 23 points 500,700,0
2 t 20 alpha 8 points 500,700,200 500,400,100 500,600,100 600,500,100 450,500,100
3 adiabat default
- Плита 1000×1000×200 из материала 1.
- Отверстие 200×200 насквозь.
- Утеплитель из материала 2 толщиной 50 мм вдоль стенки отверстия X = 400; остальная часть отверстия — пустота. Вставка прилегает к плите: тело, со всех сторон окруженное пустотой, ни с чем не обменивается теплом, и считать его незачем.
- Воздух комнаты — на верхней грани и на четырех стенках отверстия (по точке на стенку); воздух снаружи — на нижней;
четыре боковых грани плиты — срезы, их отдает
adiabat default.
shape — фигура
Когда нужно. Наклонная пластина, клин, скос откоса — все, что не ящик.
Если ошибиться. Лесенка из ящиков вместо фигуры дает другую поверхность, а вершины не по обходу — не ту деталь. «Z от,до»: «от» должно быть меньше «до».
# синтаксис
<материал> shape XY <x,y> <x,y> <x,y> … Z <от>,<до>
<материал> shape XZ <x,z> <x,z> <x,z> … Y <от>,<до>
<материал> shape YZ <y,z> <y,z> <y,z> … X <от>,<до>
<материал> shape XYZ1 <x,y,z> <x,y,z> <x,y,z> … XYZ2 <x,y,z> <x,y,z> <x,y,z> …
Плоская фигура: многоугольник в плоскости (вершины по обходу), протянутый по третьей оси от и до. Объемная: тело между двумя плоскими контурами с одинаковым числом вершин, вершина i первого соединена с вершиной i второго; пока — когда пары вершин отличаются по одной оси. Красится по порядку, как ящик. Подробно — Фигуры.
# пример строки: наклонная стальная пластина толщиной 10 мм на высоту 1000 мм
18 shape XY 185,-30 585,-4 585,6 185,-20 Z 0,1000
empty shape — вырез фигурой
Когда нужно. Скошенный откос, ящик, заходящий под наклонную пластину.
Если ошибиться. Вырез выше тела ничего не вырежет; забытый вырез оставит материал ящика на месте скоса.
# синтаксис
empty shape XY <x,y> <x,y> <x,y> … Z <от>,<до>
Пустота в многоугольнике. Нужна, когда ящик заходит туда, где тела нет.
# пример строки: пустота под пластиной 18 (ее копия, сдвинутая вниз на 10 мм)
empty shape XY 185,-40 585,-14 585,-4 185,-30 Z 0,1000
Раздел ambients
t … alpha … — граничное условие с температурой
Когда нужно. Воздух снаружи и в комнате: температура по климатическим нормам, α — по нормам теплообмена.
Если ошибиться. Перепутанные t или α — не ошибка текста: расчет пройдет, результат будет для другого воздуха.
# синтаксис
<номер> t <t> alpha <α>
Граничное условие (ambients; обычно наружный воздух или воздух помещения) с температурой t (°C) и коэффициентом
теплоотдачи α (Вт/(м²·°C)).
adiabat — без теплообмена
Когда нужно. Срезы: края фрагмента, плоскости симметрии (Фрагмент).
Если ошибиться.
adiabatна грани, открытой воздуху, — молча отключает теплообмен там, где он есть (обычно это забытая точка приdefault).
# синтаксис
<номер> adiabat
Срезы расчетной области: плоскости симметрии, границы фрагмента.
points — точки
Когда нужно. Поставить воздух на конкретную грань.
Если ошибиться. Точка на ребре или в углу задевает и соседние грани, среди них может быть срез.
# синтаксис
<номер> … points <x,y,z> <x,y,z> …
Каждая точка закрашивает граничным условием участки, на которых лежит: внутри участка — один, на ребре — два, в углу — три и больше. Участок — плоский связный кусок поверхности, смотрящий наружу в одну сторону. Подробно — Граничные условия.
default — по умолчанию
Когда нужно. Все срезы разом: торцы, верх, низ.
Если ошибиться. Забытая точка грани с воздухом — грань молча становится срезом.
# синтаксис
<номер> … default
Граничное условие на всех участках, которые не закрасило остальное. Одно на модель.
side — направления
Когда нужно. Одно условие на все грани одной стороны: наружная и внутренняя плоскости стены, четыре торца.
Если ошибиться. Направление ловит и откос проема, и выступ, смотрящие в ту же сторону.
# синтаксис
<номер> … side <±X> [<±Y> …]
Граничное условие на всех участках, наружная сторона которых смотрит в указанные стороны (-X +X -Y +Y -Z +Z). Одно
направление — у одного граничного условия.
Пример — фрагмент стены, вырезанный из здания: наружная грань X = 0 смотрит в −X, внутренняя X = 400 — в +X; торцы фрагмента — адиабата:
model фрагмент стены version 7.3
materials params
1 lambda 0.04
2 lambda 0.12
materials objects
1 cuboid 0,0,0 100,1000,1000
2 cuboid 100,0,0 400,1000,1000
ambients
1 t -26 alpha 23 side -X
2 t 20 alpha 8.7 side +X
3 adiabat default
Порядок записей в строке граничного условия
<номер> <t … alpha … | adiabat> [side …] [default] [points …] [rect …]
rect — часть грани
Когда нужно. Условие на части грани: за шкафом, радиатором, шторой.
Если ошибиться. У углов совпадает не одна координата — ошибка «прямоугольник: у двух углов должна совпадать ровно одна координата»; прямоугольник не на открытой грани — «поверхность не найдена в геометрии».
# синтаксис
<номер> … rect <x,y,z> <x,y,z> [<x,y,z> <x,y,z> …]
Граничное условие на части участка — прямоугольник двумя противоположными углами, как у cuboid. У двух углов одна координата
совпадает — это плоскость грани; по двум другим осям — габарит. Сторону писать не нужно: открытая грань на плоскости
бывает только с одной стороны. Прямоугольников может быть несколько — парами углов. Перекрывает точки, направления и
default.
Пример — на внутренней грани стены полоса другого граничного условия (за радиатором воздух теплее):
model стена с радиатором version 7.3
materials params
1 lambda 0.7
materials objects
1 cuboid 0,0,0 300,1000,2700
ambients
1 t -26 alpha 23 side -X
2 t 20 alpha 8 side +X
3 t 35 alpha 10 rect 300,200,100 300,800,700
4 adiabat default
Что перекрывает что (ГУ)
От общего к частному: каждая следующая запись перекрывает предыдущие.
| Запись | Перекрывает |
|---|---|
default | — |
side | default |
points | side, default |
rect | все |
Ключевые слова
| Слово | Раздел | Значение |
|---|---|---|
model, version | заголовок | имя модели, версия языка |
units | заголовок | единицы координат |
materials params | — | раздел материалов |
lambda, T | материалы | теплопроводность, заданная температура |
desc | материалы | описание |
materials objects | — | раздел тел |
cuboid | тела | ящик |
empty | тела | вырез |
shape, XY, XZ, YZ, XYZ1, XYZ2, Z, Y, X | тела | фигура: плоскость, контуры, ось толщины |
ambients | — | раздел граничных условий |
t, alpha | граничные условия | температура граничного условия и теплоотдача |
adiabat | граничные условия | без теплообмена |
side | граничные условия | направления граней |
default | граничные условия | по умолчанию |
points | граничные условия | точки |
rect | граничные условия | часть грани прямоугольником |
Сообщения об ошибках
Программа пишет перед сообщением «строка N: » (номер строки текста); в таблицах ниже этот префикс опущен, а многоточие заменяет то, что программа подставляет сама (слово, число, координаты). Сообщения даны дословно.
Запись не читается
| Сообщение | Что не так | Что сделать |
|---|---|---|
непонятное «…» — может быть «…»?; ждем … | слово или число не то, что ждет запись; «может быть» — подсказка, если слово похоже на ключевое | исправить по подсказке; после «ждем» названо, что должно стоять |
не хватает: ждем … | запись оборвана | дописать то, что названо после «ждем» |
описание: нет закрывающей кавычки | у desc "…" не закрыта кавычка (или перед закрывающей стоит \) | закрыть кавычку |
фигура -- без «cuboid»: «<материал> shape XY x,y … Z от,до» | между материалом и shape стоит cuboid | убрать cuboid |
Что именно ждет программа после «ждем»:
| После «ждем» | Что должно стоять |
|---|---|
номер материала | строка раздела начинается с номера |
номер материала, «empty» или «element» | строка тел начинается с номера материала или с empty |
«lambda <теплопроводность>» или «T <температура>» | после номера материала — lambda или T |
число | значение λ или температуры |
описание в кавычках: desc "…", конец строки или «desc "описание"» | текст в двойных кавычках после desc; после него ничего лишнего |
«cuboid x,y,z x,y,z» или «shape …» | ящик или фигура |
угол ящика «x,y,z» (дробная часть -- через точку), второй угол ящика «x,y,z» | два угла по три числа, без пробелов; запятая в дробных — ошибка |
номер граничного условия | строка граничных условий начинается с номера |
«t <температура> alpha <коэффициент>» или «adiabat» | после номера — t … alpha … или adiabat |
температуру, «alpha <коэффициент теплоотдачи>», коэффициент теплоотдачи | недописанное t … alpha … |
направление грани после «side»: «-X +X -Y +Y -Z +Z» | после side — направление |
точку «x,y,z» после «points» (дробная часть -- через точку) | после points — точка из трех чисел |
два угла прямоугольника «x,y,z x,y,z» после «rect» (как у cuboid) | после rect — пара углов |
конец строки, «side <направления>», «default», «points <точки>», «rect <угол> <угол>» или «internal …» | после строки граничного условия лишнее слово |
плоскость фигуры: XY, XZ, YZ или «XYZ1 … XYZ2 …» | после shape — плоскость |
толщину фигуры XY по Z: «Z от,до» (для XZ — по Y, для YZ — по X) | высота фигуры после вершин |
не меньше трех вершин «x,y» (для XZ — «x,z», для YZ — «y,z») | у фигуры хотя бы три вершины |
не меньше трех вершин «x,y,z» контура XYZ1 (и XYZ2) | у каждого контура хотя бы три вершины |
«XYZ2» и вершины второго контура «x,y,z» | после первого контура — слово XYZ2 и вершины второго |
номер версии, единицы, например cm | недописанные version, units |
заголовок раздела или «model», «units», «planes», строку раздела | запись вне раздела или неизвестного вида |
Смысл записи
| Сообщение | Что не так | Что сделать |
|---|---|---|
материал K уже объявлен в строке M | номер материала объявлен дважды | оставить одно объявление |
граничное условие K уже объявлено в строке M | номер граничного условия объявлен дважды | оставить одно |
материал K не объявлен в «materials params» | тело ссылается на необъявленный материал | объявить материал или исправить номер |
номер материала или граничного условия начинается с 1, а не «0» | номер меньше 1 | нумеровать с 1 |
версия модели … не поддерживается — сконвертируйте .frs (sdk/python/tools/frs_model_to_73.py) или пересоберите из исходных файлов | версия языка не 7.3 | перевести модель на версию 7.3 |
Z: начало фигуры не меньше конца (или Y:, X:) | у фигуры «от» не меньше «до» | поставить «от» меньше «до» |
у контуров XYZ1 и XYZ2 разное число вершин: A и B (вершина i первого соединяется с вершиной i второго) | контуры разной длины | сделать число вершин одинаковым |
контур XYZ1 не плоский: вершина отходит от плоскости контура на … (или XYZ2) | вершины контура не в одной плоскости | поправить вершины |
контур XYZ1 вырожденный: вершины на одной прямой (или XYZ2) | контур не имеет площади | поправить вершины |
прямоугольник: у двух углов должна совпадать ровно одна координата -- плоскость грани (совпало …) | у углов rect совпало не одно число | задать углы так, чтобы совпала одна координата — плоскость грани |
default может быть только у одного граничного условия, уже есть K | default у двух граничных условий | оставить одну пометку |
направление ±X уже у граничного условия K (строка M) | одно направление у двух граничных условий | оставить у одного |
Геометрия и сборка
| Сообщение | Что не так | Что сделать |
|---|---|---|
нет строки «model <имя> version 7.3» | в тексте нет строки model | дописать первой строкой |
модель пустая по одной из осей: нет тел | нет тел или все пустые | добавить тела |
точка X … Y … Z … не лежит на открытой поверхности тел | точка не на поверхности | поставить точку на грань: одна координата — плоскость грани |
точка задевает грань, которую уже закрасило граничное условие K (строка M) | точка на участке другого граничного условия или на ребре с ним | сдвинуть точку внутрь своего участка |
поверхность не найдена в геометрии: «…» (нет открытой грани тела с такой плоскостью и габаритом) | прямоугольник rect не лежит на открытой грани | проверить углы: совпавшая координата — плоскость открытой грани, габарит — внутри нее |
фигура XYZ: пока только когда вершины XYZ1 и XYZ2 попарно отличаются по одной оси (тело с наклонными крышками, стенки -- вдоль этой оси) | пары вершин отличаются по двум или трем осям | разбить тело на части или выровнять пары |
фигура XYZ: контур стоит ребром к оси колонны (план вырожден) | контур параллелен оси протяжки | поправить вершины |
фигура XYZ: крышки XYZ1 и XYZ2 пересекаются (одни вершины второго контура выше первого, другие ниже) | крышки тела пересекаются | поменять контуры или разбить тело |
фигуры плоскостей … задевают одну ячейку сетки -- так пока нельзя | фигуры разных плоскостей слишком близко | развести их хотя бы на ячейку сетки |
фигура XYZ задевает ячейку сетки, где уже … -- так пока нельзя | фигура XYZ вплотную к другой фигуре | развести их |
сетка фигур: … ячеек с повторенной вершиной (треугольник, клин) -- такую сетку генератор пока не строит без треугольников | у фигуры острый угол, и сетке нужны треугольники | поправить форму фигуры |
сетка фигур: висячий узел в … (и еще …) -- такую сетку генератор пока не сшивает | сетка вокруг фигуры не сшивается | поправить форму или положение фигуры |
Расчет, открытый с наклонными гранями
| Сообщение | Что не так | Что сделать |
|---|---|---|
фигура не совпадает с наклонным телом исходной модели: менять вершины фигур в расчете с наклонными гранями пока нельзя | изменены вершины фигуры | вернуть вершины |
фигуры XYZ1 … XYZ2 -- пока только в модели, сетку которой строит текст (в расчете с наклонными гранями исходной модели -- нельзя) | новая объемная фигура в расчете с наклонными гранями | пока нельзя: вернуть модель к исходной |
фигуры XZ и YZ -- пока только в модели, сетку которой строит текст (в расчете с наклонными гранями исходной модели -- нельзя) | то же для фигур XZ и YZ | то же |
призму фигуры не накрывает ни одно тело (или накрывает «empty»): у фигуры должен быть материал | под фигурой нет тела | дать фигуре материал |
фигура вырезает пустоту у наклонного тела не по сетке исходной модели: менять вершины фигур в расчете с наклонными гранями пока нельзя | изменен вырез у наклонного тела | вернуть вырез |
у наклонного тела вне его призм -- пустота, а здесь по тексту материал K: вырежьте его строкой «empty shape …» (менять вершины фигур в расчете с наклонными гранями пока нельзя) | ящик заходит в пустоту у наклонного тела | вырезать ее строкой empty shape … |
точка задевает грань наклонного тела, которую уже закрасило граничное условие K (строка M) | то же, что и для обычной грани, но на наклонной | сдвинуть точку |
Предупреждение под текстом
| Сообщение | Что не так | Что сделать |
|---|---|---|
Граней без ГУ: N — на сцене они незакрашенные. Так считать нельзя: задайте им граничное условие или пометьте граничное условие «по умолчанию». | у части наружных граней нет граничного условия | добавить точку или пометить граничное условие default |
Пример ошибки — тело ссылается на необъявленный материал:
# ошибка: материал 3 не объявлен
model ошибка version 7.3
materials params
1 lambda 0.7
materials objects
3 cuboid 0,0,0 100,100,100
ambients
1 adiabat default
Для файлов из старых расчетов
Записи ниже программа пишет сама, когда переводит в текст расчет из файлов старых версий (Temper-3D 6). Писать их самому не нужно; в новой модели они не встречаются.
element — ящик одним элементом
# синтаксис
element <материал> cuboid <x0,y0,z0> <x1,y1,z1>
Строки, которые программа пишет для элементов старых расчетов Temper-3D 6; сетка их не делит. Сообщение, если
вместо ящика стоит фигура: «element» -- только ящик: «element <материал> cuboid x,y,z x,y,z».
internal — грань между телами
# синтаксис
<номер> … internal <ось> <плоскость> <u0> <u1> <v0> <v1>
Грань между телами (номера в решетке модели). Ее пишет программа, когда переводит в текст модель из файла расчета.
Сообщение: шесть целых после «internal»: ось, плоскость, u0 u1 v0 v1 (после «ждем»).
Табличные и служебные строки
elements-table, free-faces-table, prisms-table — строки с данными расчета в формате JSON (сообщение при ошибке:
таблица не разбирается как JSON); planes <ось> <координата> … — дополнительные плоскости сетки фигур; element-raw
— строка из целых чисел (при ошибке: целые числа). Их пишет программа; редактировать их не нужно. Если фигуры shape
и строка prisms-table заданы вместе, программа сообщит: наклонные тела записаны и фигурами «shape», и строкой «prisms-table» -- оставьте что-то одно.
Как программа пишет тела
Когда текст строит программа (из расчета или после правки), тела одного материала идут подряд, материалы — по возрастанию номера, кроме пересекающихся тел разных материалов: у них сохранен порядок закраски. Ящики при этом обрезаны до того, что от них осталось видно, — текст короче, модель та же.
Как программа пишет граничные условия
Когда текст строит программа, она подбирает как можно меньше записей: точек, направлений и прямоугольников. Направление пишется, только если заменяет больше одной точки. Граничное условие по умолчанию она выбирает так, чтобы записей было меньше всего; при равенстве — адиабату.
Габарит
Габарит конструкции по оси — от наименьшей координаты «от» до наибольшей «до» среди всех тел.