В ModelStudio есть разделение между переходами.
Есть простой переход и есть эксцентрический(со смещением) переход.
Для ModelStudio это разные объекты и типы компонентов трубопровода.
Физика же нашего объекта будет в принципе одна.
Будет различаться только пара параметров.
Начнем с простого перехода.
Делаем стандартный переход, заходим в редактор оборудования и удаляем все что там есть. Копируем фланцы, которые я нашу из объекта в объект.
Фланцы можно скопировать разными вариантами, мне удобнее преобразовать в оборудование, скопировать функцией "Добавить оборудование".
Заходим в параметры и добавляем туда мой стандартный список параметров.
Дополнительно для перехода у нас появляются
Ширина воздуховода 1 PART_PIPE_RECT_DIMA1 и Высота воздуховода 1 PART_PIPE_RECT_DIMB1.
Создаем 3D-примитив пирамида и разворачиваем его как нам надо.
Корректируем параметры:
Высота:
[PART_VENT_LENGTH]-[PART_VENT_SECTION_DIMC]*2
Длина:
[PART_PIPE_RECT_DIMB]
Длина2
[PART_PIPE_RECT_DIMB1]
Ширина
[PART_PIPE_RECT_DIMA]
Ширина2
[PART_PIPE_RECT_DIMA1]
X,Y-смещение здесь мы не указываем. Это сделаем в будущем для эксцентрического перехода.
Базовая точка 0,0,0 для перехода это точка между размерами L1 и L2 в "Параметризации" на оси перехода.
Длина перехода у нас это длина пирамиды и 2 прямых участка по 50 мм. на каждом конце.
Будем учитывать это при координации базовой точки.
Базовая точка. X координата.
-1*child.[L1]+[PART_VENT_SECTION_DIMC]
Половина длины перехода минус длина прямого участка
Базовая точка. Y координата.
-1*[PART_PIPE_RECT_DIMA1]/2
Это половина нашей "Большей" ширины.
Базовая точка. Z координата.
[PART_PIPE_RECT_DIMB1]/2
Тут так же половина нашей "Большей" высоты.
Основа нашего перехода готова, перейдем к фланцам.
Т.к. я взял основу для перехода из отвода, то мне надо немного фланцы переделать.
В отводе фланцы были в круговом массиве, здесь мы их вытащим в отдельную группу и назовем "Фланец1".
Выбираем BOX и корректируем параметры:
Высота
[PART_PIPE_RECT_DIMB]
Длина
[PART_VENT_SECTION_DIMC]
Ширина
[PART_PIPE_RECT_DIMA]
Базовая точка. X координата.
-1*child.[L1]
Базовая точка. Y координата.
-1*[PART_PIPE_RECT_DIMA]/2
Базовая точка. Z координата.
-1*[PART_PIPE_RECT_DIMB]/2
Группы "LOD500", "LOD300", "LOD100" правим:
Базовая точка. X координата
-1*child.[L1]
Теперь копируем группу "Фланец1". Переименовываем, разворачиваем и занимаемся самой скучной работой в этом переходе.
Надо все параметры ширины и высоты DIMA и DIMB поменять на DIMA1 и DIMB1. Также меняем во всех параметрах выше, где был child.[L1] делаем child.[L2]
Получается вот такая фигура:
Добавим теперь к ней вычитание объектов.
Копируем пирамиду и вычитаем. В параметрах "вычтенной" пирамиды меняем:
Длина:
[PART_PIPE_RECT_DIMB]-[PART_VENT_THICKNESS]*2
Длина2:
[PART_PIPE_RECT_DIMB1]-[PART_VENT_THICKNESS]*2
Ширина:
[PART_PIPE_RECT_DIMA]-[PART_VENT_THICKNESS]*2
Ширина2:
[PART_PIPE_RECT_DIMA1]-[PART_VENT_THICKNESS]*2
Базовая точка. Y координата:
-1*[PART_PIPE_RECT_DIMA1]/2+[PART_VENT_THICKNESS]
Базовая точка. Z координата:
[PART_PIPE_RECT_DIMB1]/2-[PART_VENT_THICKNESS]
Идем в группу "Фланец1", копируем BOX, вычитаем и меняем параметры:
Высота:
[PART_PIPE_RECT_DIMB]-[PART_VENT_THICKNESS]*2
Ширина:
[PART_PIPE_RECT_DIMA]-[PART_VENT_THICKNESS]*2
Базовая точка. Y координата:
-1*[PART_PIPE_RECT_DIMA]/2+[PART_VENT_THICKNESS]
Базовая точка. Z координата:
-1*[PART_PIPE_RECT_DIMB]/2+[PART_VENT_THICKNESS]
Проделываем тоже самое во второй группе и получаем:
Проделываем все тоже самое с первым и вторым слоем теплоизоляции:
Геометрия готова, переходим к параметрам.
За основу я брал отвод, поэтому основные параметры от туда.
Длина воздуховода в этой детали это длина перехода общая.
Для прямых участков перед пирамидой пришлось добавить отдельный параметр Длина патрубка PART_VENT_SECTION_DIMC.
Длина воздуховода PART_VENT_LENGTH:
var А:=([PART_PIPE_RECT_DIMA]+[PART_PIPE_RECT_DIMB])*2;
var Б:=([PART_PIPE_RECT_DIMA1]+[PART_PIPE_RECT_DIMB1])*2;
var В:=if(A>Б, А, Б);
if(В>2500,500, 300)
Сначало считаем периметры обоих концов, потом определяем кто из них больший, а потом определяем, что если периметр более 2500 мм, то длина будет 500 мм., в противном случае длина 300 мм.
Площадь поверхности SURFACE_AREA:
var А:=[PART_PIPE_RECT_DIMB]/2/1000; /*Половина высоты верхнего основания*/
var Б:=([PART_VENT_LENGTH]-[PART_VENT_SECTION_DIMC]*2)/1000; /*Высота усеченной пирамиды*/
var В:=[PART_PIPE_RECT_DIMB1]/2/1000; /*Половина высоты нижнего основания*/
var Г:=sqrt(sqr(Б)+sqr(abs(А-В))); /*Высота боковой трапеции по ширине пирамиды*/
var Д:=([PART_PIPE_RECT_DIMA]/1000+[PART_PIPE_RECT_DIMA1]/1000)/2*Г; /*Площадь боковой поверхности(Равнобедренной трапеции) по стороне DIMA*/
var Е:=[PART_PIPE_RECT_DIMB]/2/1000; /*Половина ширины верхнего основания*/
var Ж:=[PART_PIPE_RECT_DIMB1]/2/1000; /*Половина ширины нижнего основания*/
var З:=sqrt(sqr(Б)+sqr(abs(Е-Ж))); /*Высота боковой трапеции по высоте пирамиды*/
var И:=([PART_PIPE_RECT_DIMB]/1000+[PART_PIPE_RECT_DIMB1]/1000)/2*З; /*Площадь боковой поверхности(Равнобедренной трапеции) по стороне DIMB*/
var К:=([PART_PIPE_RECT_DIMA]/1000+[PART_PIPE_RECT_DIMB]/1000)*2*[PART_VENT_SECTION_DIMC]/1000; /*Площадь прямого участков отвода с первой стороны*/
var Л:=([PART_PIPE_RECT_DIMA1]/1000+[PART_PIPE_RECT_DIMB1]/1000)*2*[PART_VENT_SECTION_DIMC]/1000; /*Площадь прямого участков отвода со второй стороны*/
format("%0.2f", (Д*2+И*2+К+Л)*1.1)
Чтобы посчитать площадь пришлось вспомнить геометрию:
Добавил буквы, чтобы не запутаться с формулами.
Сначало мы находили высоту трапеции боковой поверхности, а уже затем уже площадь боковой поверхности. Причем высоту трапеции мы находим через другую-прямоугольную проекцию.
Обозначение PART_TAG:
var А:=([PART_PIPE_RECT_DIMA]+[PART_PIPE_RECT_DIMB]);
var Б:=([PART_PIPE_RECT_DIMA1]+[PART_PIPE_RECT_DIMB1]);
var В:=if(A>Б, А, Б);
"Переход-4-"&[PART_PIPE_RECT_DIMB]&"х"&[PART_PIPE_RECT_DIMA]&"/"&[PART_PIPE_RECT_DIMB1]&"х"&[PART_PIPE_RECT_DIMA1]&"-"&
[PART_VENT_LENGTH]&"-"&[PART_VENT_SECTION_DIMC]&"-"&[PART_VENT_SECTION_DIMC]&"-ОЦ-"&[PART_VENT_THICKNESS]&
if(В>1000 and (parent.[PART_PIPE_RECT_DIMA]>700) or (parent.[PART_PIPE_RECT_DIMB]>700) ,"-Ш20.Ш20", "-Ш30.Ш30")
Наименование PART_NAME
if([FIRST_LAYER_OF_INSULATION]="НЕПРАВИЛЬНО ДОБАВЛЕНА ТЕПЛОИЗОЛЯЦИЯ. НЕСКОЛЬКО ПЕРВЫХ СЛОЕВ"
or [SECOND_LAYER_OF_INSULATION]="НЕПРАВИЛЬНО ДОБАВЛЕНА ТЕПЛОИЗОЛЯЦИЯ. НЕСКОЛЬКО ПЕРВЫХ СЛОЕВ",
"НЕПРАВИЛЬНО ДОБАВЛЕНА ТЕПЛОИЗОЛЯЦИЯ. НЕСКОЛЬКО ПЕРВЫХ СЛОЕВ",
"Переход прямоугольного сечения, тип 4, (Ширина х Высота) из оцинкованной стали по ГОСТ 14918-80, b="&[PART_VENT_THICKNESS]
&" мм.,c прямыми участками с обеих сторон l="&
[PART_VENT_SECTION_DIMC]&" мм.,с шинореечным соединением")
Наименование по ВР PART_NAME_WORK
"Монтаж отвода прямоугольного сечения из оцинкованной стали по ГОСТ 14918-80, b="&[PART_VENT_THICKNESS]
&" мм., сечением(Ширина х Высота) "&[PART_VENT_SECTION_LABEL]&" мм.,угол "&[PART_VENT_ANGLE]&
"°, без радиуса гиба,c прямыми участками с обеих сторон l="&
[PART_VENT_LENGTH]&" мм., на отм. "&[MOUNTING_HEIGHT]&" м. от пола."
Все остальные параметры не меняются.
Следующим будем переход со смещением.