Мне нужно создать, что то похожее на это:
Все детали я буду создавать на основе детали из стандартной базы оборудования. Всех нюансов (а их много) я не знаю и поэтому возьмем заглушку для воздуховода 1000х1000 из базы:
Создаем воздуховод, размеры его нам сейчас не важны.
Простым переносом из базы в модель вытаскиваем нашу заглушку и щелкаем по нужному терминатору. Заглушка создалась:
На вкладке ModelStudio CS выбираем "Редактирование оборудования" и заходим в редактор
Пока не удаляем существующую часть. Подходов к созданию заглушки очень много. Можно нарисовать ее выдавливанием каждой стороны отдельными фрагментами, вырезанием прямоугольника из прямоугольника и т.д. Я выбрал вырезание. Для этого создаем 2 параллелепипеда в одном месте. Принимаем размер 1000 мм для одного и для второго 1000-"Толщина стенки". Меняем направление и ориентацию, как показано на картинке ниже.
На этом этапе мы можем удалить старую графику заглушки, оставив наши два параллелепипеда. Я также отвязал деталь от воздуховода, чтобы он пока нам не мешался. На вкладке "Трубопроводы"-"Редактирование"-"Деталь в оборудование".
Займемся первым параллелепипедом и заполнением его параметров.
Высота.
Высота у нас выбирается в зависимости от применяемой шины. Местный производитель рекомендовал такие границы применения:
Т.е при полупериметре менее 1000 мм и одной сторон менее 700 мм. используем шину 20, во всех других случаях шину 30.
Размеры шины:
Соответственно высота заглушки должна быть 30 и 40 мм.
В редакторе параметрического оборудования напротив параметра высота кликаем по многоточию и заходим в мастер функций:
В мастере функций используются не сложные функции. Но то, что нам предлагает разработчик это не полный список. Есть еще скрытые от нас функции.
В мастере функций собираем функцию Если( Условие, Верно, Не верно):
if(
([PART_PIPE_RECT_DIMA]+[PART_PIPE_RECT_DIMB])>1000 and
(([PART_PIPE_RECT_DIMA]>700) or ([PART_PIPE_RECT_DIMB]>700)), 40, 30)
PART_PIPE_RECT_DIMA и PART_PIPE_RECT_DIMB соответственно ширина и длина.
Далее заполняем формулу для длины и ширины:
И координаты базовой точки:
Теперь займемся вторым параллелепипедом.
Первым действием надо задать вычитание объекта:
Далее все формулы аналогично, только добавляем вычитание толщины стенки. Если параметр "Толщина стенки" [PART_VENT_THICKNESS] отсутствует, то создаем его в базе. На начальном этапе задаемся толщиной стенки 0,7 мм., далее мы зададим зависимость.
У нас должна получиться вот такая заглушка:
LOD200 готов.
Далее мы добавим параметры, чтобы у нас был LOD300.
Параметры нам нужны те, которые уйдут в спецификацию, на чертеж и несколько дополнительных для графики.
1. Ширина воздуховода PART_PIPE_RECT_DIMA
2. Высота воздуховода PART_PIPE_RECT_DIMB
3. Маркировка типоразмера PART_VENT_SECTION_LABEL
PART_PIPE_RECT_DIMA&"x"&PART_PIPE_RECT_DIMB
4. Длина воздуховода PART_VENT_LENGTH
if(
([PART_PIPE_RECT_DIMA]+[PART_PIPE_RECT_DIMB])>1000 and
(([PART_PIPE_RECT_DIMA]>700) or ([PART_PIPE_RECT_DIMB]>700)), 40, 30)
5. Площадь поверхности SURFACE_AREA
([PART_VENT_LENGTH]/1000)*([PART_PIPE_RECT_DIMA]/1000+
[PART_PIPE_RECT_DIMB]/1000)*2+
([PART_PIPE_RECT_DIMA]/1000)*([PART_PIPE_RECT_DIMB]/1000)
6. Толщина стенки PART_VENT_THICKNESS (По СП 60) с учетом наличия теплоизоляции/огнезащиты. По СП7 у нас есть ограничение в толщину стенки 0,8 мм. +допуски. Поэтому при наличии теплоизоляции мы ставим толщину 0,9 мм.
Если в будущем понадобится толщина стенки отличная от СП60, то это проще поправить в базе, чем учитывать возможные варианты.
if((if (real([PART_PIPE_RECT_DIMA])>real([PART_PIPE_RECT_DIMB]),
if (real([PART_PIPE_RECT_DIMA])<=250, 0.5,
if (real([PART_PIPE_RECT_DIMA])<=1000, 0.7,
if (real([PART_PIPE_RECT_DIMA])<=2000, 0.9, 1.2))),
if (real([PART_PIPE_RECT_DIMB])<=250, 0.5,
if (real([PART_PIPE_RECT_DIMB])<=1000, 0.7,
if (real([PART_PIPE_RECT_DIMB])<=2000, 0.9, 1.2)))))<0.9 and [PART_INSULATION_THICKNESS]>0, 0.9, if (real([PART_PIPE_RECT_DIMA])>=real([PART_PIPE_RECT_DIMB]),
if (real([PART_PIPE_RECT_DIMA])<=250, 0.5,
if (real([PART_PIPE_RECT_DIMA])<=1000, 0.7,
if (real([PART_PIPE_RECT_DIMA])<=2000, 0.9, 1.2))),
if (real([PART_PIPE_RECT_DIMB])<=250, 0.5,
if (real([PART_PIPE_RECT_DIMB])<=1000, 0.7,
if (real([PART_PIPE_RECT_DIMB])<=2000, 0.9, 1.2)))))
7. Обозначение(модель) PART_TAG
"Заглушка-ОЦ-"&[PART_VENT_SECTION_LABEL]&"-"&[PART_VENT_THICKNESS]
8.Класс материала PART_MATERIAL_CLASS
Сталь листовая оцинкованная
9. Материал PART_MATERIAL
Оцинкованная(08пс)
10. Нормативный документ на материал PART_MATERIAL_STANDARD
ГОСТ 14918-80
По видам материалов мы будем задавать вариативность уже в базе.
11. Идентификатор PART_TAGNUMBER
Заглушка
12. Вес PART_WEIGHT
format("%0.2f", (if([PART_VENT_THICKNESS]=0.5, [SURFACE_AREA]*4.637,
if([PART_VENT_THICKNESS]=0.7, [SURFACE_AREA]*6.207,
if([PART_VENT_THICKNESS]=0.9, [SURFACE_AREA]*7.777,
if([PART_VENT_THICKNESS]=1.2, [SURFACE_AREA]*10.132, 0)+0.005))))
)
13. Наименование PART_NAME
if([FIRST_LAYER_OF_INSULATION]="НЕПРАВИЛЬНО ДОБАВЛЕНА ТЕПЛОИЗОЛЯЦИЯ. НЕСКОЛЬКО ПЕРВЫХ СЛОЕВ"
or [SECOND_LAYER_OF_INSULATION]="НЕПРАВИЛЬНО ДОБАВЛЕНА ТЕПЛОИЗОЛЯЦИЯ. НЕСКОЛЬКО ПЕРВЫХ СЛОЕВ",
"НЕПРАВИЛЬНО ДОБАВЛЕНА ТЕПЛОИЗОЛЯЦИЯ. НЕСКОЛЬКО ПЕРВЫХ СЛОЕВ",
"Заглушка прямоугольного сечения из оцинкованной стали по ГОСТ 14918-80, b="&[PART_VENT_THICKNESS]
&" мм., l="&if(
([PART_PIPE_RECT_DIMA]+[PART_PIPE_RECT_DIMB])>1000 and
(([PART_PIPE_RECT_DIMA]>700) or ([PART_PIPE_RECT_DIMB]>700)), 40, 30)&" мм.")
14. Толщина изоляции первого слоя PART_INSULATION_THICKNESS
if((sum(object.Element.SubElements.item("Список работ").SubElements, item.Parameters["INSULATION_LAYER_NUMBER"],
item.Parameters["INSULATION_LAYER_NUMBER"]=1))>1,
"НЕПРАВИЛЬНО ДОБАВЛЕНА ТЕПЛОИЗОЛЯЦИЯ. НЕСКОЛЬКО ПЕРВЫХ СЛОЕВ",
(strSum(object.element.SubElements.item("Список работ").SubElements, item.Parameters["PART_INSULATION_THICKNESS"],
item.Parameters["INSULATION_LAYER_NUMBER"]=1)))
15. Первый слой изоляции FIRST_LAYER_OF_INSULATION
if((sum(object.element.SubElements.item("Список работ").SubElements, item.Parameters["INSULATION_LAYER_NUMBER"],
item.Parameters["INSULATION_LAYER_NUMBER"]=1))>1,
"НЕПРАВИЛЬНО ДОБАВЛЕНА ТЕПЛОИЗОЛЯЦИЯ. НЕСКОЛЬКО ПЕРВЫХ СЛОЕВ",
(strSum(object.element.SubElements.item("Список работ").SubElements, item.Parameters["PART_TAG"],
item.Parameters["INSULATION_LAYER_NUMBER"]=1)))
16. Толщина изоляции второго слоя PART_INSULATION_THIKNESS_2
=if((sum(object.Element.SubElements.item("Список работ").SubElements, item.Parameters["INSULATION_LAYER_NUMBER"],
item.Parameters["INSULATION_LAYER_NUMBER"]=2))>2,
"НЕПРАВИЛЬНО ДОБАВЛЕНА ТЕПЛОИЗОЛЯЦИЯ. НЕСКОЛЬКО ВТОРЫХ СЛОЕВ",
(strSum(object.element.SubElements.item("Список работ").SubElements, item.Parameters["PART_INSULATION_THIKNESS_2"],
item.Parameters["INSULATION_LAYER_NUMBER"]=2)))
17. Второй слой изоляции SECOND_LAYER_OF_INSULATION
if((sum(object.element.SubElements.item("Список работ").SubElements, item.Parameters["INSULATION_LAYER_NUMBER"],
item.Parameters["INSULATION_LAYER_NUMBER"]=2))>2,
"НЕПРАВИЛЬНО ДОБАВЛЕНА ТЕПЛОИЗОЛЯЦИЯ. НЕСКОЛЬКО ПЕРВЫХ СЛОЕВ",
(strSum(object.element.SubElements.item("Список работ").SubElements, item.Parameters["PART_TAG"],
item.Parameters["INSULATION_LAYER_NUMBER"]=2)))
Изоляция выполнена в виде работ. Это единственная возможность, когда ее вполне легко можно удалять и изменять. Все формулы учитывают только 2 слоя теплоизоляции. Если количество первых слоев будет больше, то все формулы уйдут в ошибку, потребуется корректировка формул. Если нам например понадобится 2 слоя минеральной ваты с 1 слоем покрывным, то надо будет добавлять 3 слой в расчет. Но т.к. это редкий случай, то выполнять я его пока не стал.
Выполнение объектов теплоизоляции я покажу позднее.
18. Специализация PART_SPECIALITY
Вентиляция
19. Группа изделий PART_GROUP
Детали вентиляционные
20. Тип изделия PART_TYPE
Заглушка
21. Стандарт LINE_SYSTEM_STANDARD
ГОСТ
22. Код группы BOM_SORT_ID
450
23. Диаметр крепежных отверстий FLANGE_BOLT_DIAMETER
if(([PART_PIPE_RECT_DIMA]+[PART_PIPE_RECT_DIMB])<=1000 , 6, if(([PART_PIPE_RECT_DIMA]+[PART_PIPE_RECT_DIMB])<=1500, 8, if(([PART_PIPE_RECT_DIMA]+[PART_PIPE_RECT_DIMB])<=2500, 10,12
)))
Этот параметр нам понадобится для определения графики болтов.
24. Включить в спецификацию BOM_INCLUDE
1
25. Единица измерения спецификации BOM_ITEMUNITS
шт./м2
26. Группа по спецификации BOM_GROUP
Детали вентиляционные
27. Тип компонента трубопровода PART_PIPE_CLASS
Терминатор
28. Тип сечения PIPE_PROFILE_TYPE
Прямоугольное
Большинство параметров без описательной части взяты со стандартной заглушки и влияют на какие-либо функции программы. Т.е. программа по ним поймет что это именно заглушка, определит ее место в спецификации и т.д. Для меня большинство из этих параметров пока не раскрыты, поэтому я оставляю как есть.
Объект параметризация не трогаем, а вот в объекте порт1 нам нужно задать:
Высота:
root.[PART_PIPE_RECT_DIMB]
Ширина:
root.[PART_PIPE_RECT_DIMA]
Тип сечения
Rectangle
На этом создание заглушки LOD300 может быть закончено.
Параметров много. Плюс бывает, что параметры выставлены в нескольких категориях и в списке параметров повторяются. Это можно исправить в настройках параметров, исключив не нужные категории. На данном этапе работы это не критично и производитель ПО зачем то так сделал, поэтому оставим как есть.
В итоге должно выйти вот так:
В части 3 мы будем создавать уже LOD400.