вторник, 6 ноября 2012 г.

Расчет нагрузок на опоры трубопроводов в AutoCAD MEP

Пару недель назад сотрудники технологического отдела ЗАО "Тюменьнефтегазпроект" попросили меня помочь им с автоматизацией расчета нагрузок на опоры трубопроводов. С их слов можно было сделать вывод, что расчет несложный, но трудоемкий. В общих чертах, задача для специалиста сводится к определению ближайших к опоре деталей трубопроводов и арматуры, оценка их веса по сводным таблицам и в результате нехитрых арифметических операций получалась некоторая ориентировочная нагрузка на опору.
Основным в расчете являлся тот факт, что он был именно ориентировочным, а еще точнее, укрупненным, т.е. все значения брались по таблицам и никто не занимался точным просчетом. Разумеется, такой расчет можно применять только на коротких участках трубопроводов, а значит, на сооружениях и небольших площадках.
Вооружившись моделью расчета начал прикидывать как построить программу. Сразу стало понятно, что основную сложность составляет поиск трубопроводов, их деталей и арматуры, которые создают нагрузку на опору. То, что для человека не составляет труда, объяснить программе довольно сложно, особенно, если учесть, что трубопровод может ветвиться посредством тройников. В общем, итерация мне в руки...

В процессе разработки пришлось вводить целый ряд понятий и условностей, которые применены в интерфейсе приложения.
  1. Условно все примитивы чертежа разделяются на детали и опоры.
    • Опоры – собственно опоры, нагрузки на которые необходимо посчитать.
    • Детали - все остальное. В расчете участвуют только те детали, которые подсоединяются к трубопроводам, т.е. не будут учитываться всевозможные площадки обслуживания, лестницы и т.п.
  2. Опоры могут быть прикрепленные, открепленные и исправленные:
    • Прикрепленные – это опоры, которые прикреплены к трубопроводу и AutoCAD MEP «знает» об этом.
    • Открепленные – это опоры, которые геометрически прикреплены к трубопроводу, но по разным причинам AutoCAD MEP «не знает» об этом.
    • Исправленные – это открепленные опоры, которые проанализированы геометрически и для них найдена та самая деталь, которую они держат, т.е. AutoCAD MEP «не знает» о них, но расчетный модуль – «знает».
  3. В процессе расчета могут возникать «ошибки». Ошибки могут быть разные, но как правило, они связаны с отсутствием информации о массе детали или неверных значениях изоляции.
  4. Расчет ведется не на основании укрупненных таблиц любезно предоставленных сотрудниками технологического отдела, а вычисляя:
    • Массу жидкости (в трубе, задвижке и т.п.) исходя из расчетного объема детали и плотности жидкости (1000 кг/м3)
    • Массу детали, которая извлекается из базы оборудования, так что, Вам не придется ее искать (кг).
    • Массу изоляции исходя из ее средней плотности (50 кг/м3).
    • Массу осадков, в частности, снега при высоте покрова 0.1 м и плотности весеннего снега (350 кг/м3).
  5. Расчетный модуль нумерует опоры просто по порядку, невзирая на их нумерацию внутри чертежа.
Контрольная модель, на которой осуществлялось тестирование содержит 40 опор.

В итоге, родилось приложение MEPSupportLoad (для AutoCAD MEP 2012 и 2013). Использовать приложение можно командой mepsupportload. После вызова команды надо выбрать опоры. Можно просто выбрать весь 3D чертеж, т.к. результат выборки пройдет сквозь фильтр и в нем останутся только опоры.

Команда: MEPSUPPORTLOAD

Выберите объекты: _all
найдено: 116

Выберите объекты:

Опор выбрано: 40
Всего опор: 40
Всего деталей: 365
Всего деталей с ошибками: 12
Показать [Все/ВЫбранные/Каждую/Отчет/Детали/ВЫХод]:

После подтверждения выбора, предварительный анализ контрольного чертежа показал, что в чертеже есть 40 опор, 365 деталей и из них 12 с ошибками, т.е. у них, вероятно, не указана масса.

Опция Все,
Показать опоры [Все/Прикрепленные/Открепленные/Исправленные/ВЫХод]:
позволяет осуществить навигацию с подсветкой по всем опорам в чертеже:
Все - подсветка всех опор
Прикрепленные - подсветка прикрепленных опор
Открепленные - подсветка открепленных опор
Исправленные - подсветка исправленных опор

Опция Выбранные,
Показать выбранные опоры [Все/Прикрепленные/Открепленные/Исправленные/ВЫХод]:
Позволяет осуществить навигацию с подсветкой по всем выбранным в чертеже опорам:
Все - показать все выбранные пользователем опоры
Прикрепленные - показать все прикрепленные опоры из выбранных пользователем
Открепленные - показать все открепленные опоры из выбранных пользователем
Исправленные - показать все исправленные опоры из выбранных пользователем

Опция Каждую, сразу выводит информацию о нагрузке на первую опору
Нагрузка: 20.77
Опора 1 [40] показать
[Опору/Прикрепление/Трубопроводы/ОТчет/ОШибки/Учтены/ПРопущены/Следующую/Номер/ВЫХод]:
Позволяет осуществить расчет и навигацию с подсветкой по каждой из выбранных в чертеже опор:
Опору – подсветить в чертеже текущую опору
Прикрепление – подсветить в чертеже деталь, к которой прикреплена опора
Трубопроводы - подсветить все участки трубопроводов и детали в них для текущей опоры
ОТчет - показать в командной строке отчет о расчете
ОШибки - показать в командной строке отчет об ошибках, если они есть
Учтены - подсветить объекты учтенные в расчете из тех, которые найден среди трубопроводов
Пропущены - подсветить объекты не учтенные в расчет, но найденные среди трубопроводов
Следующую – рассчитать и подсветить следующую опору
Номер - рассчитать и подсветить опору с указанным номером
Например, в контрольной модели для первой опоры получился следующий отчет:
32x2 длина: 1368.27 массы:
Ж: 3.82  Д: 2.03    И: 0.00 О: 8.67
45-25x2-09Г2С Дн=32мм массы:
Ж: 0.02  Д: 0.10    И: 0.00 О: 0.08
32x2 длина: 1170.90 массы:
Ж: 0.90  Д: 1.73    И: 0.00 О: 2.06
90-25x2-09Г2С Дн=32мм массы:
Ж: 0.05  Д: 0.10    И: 0.00 О: 0.13
32x2 длина: 264.88 массы:
Ж: 0.20  Д: 0.39    И: 0.00 О: 0.49
Ж - масса жидкости
Д - масса детали
И - масса изоляции
О - масса осадков
Найдено деталей с ошибками: 0

Субопция Трубопроводы, сразу выводит информацию о количестве найденных участков трубопроводов, которые нагружают опору
Всего путей влево: 4
Всего путей вправо: 1
Опора 1 [ВЛево/ВПраво/ВЫХод]:
Позволяет осуществить навигацию по найденным участкам трубопроводов, чтобы понять, как нагружена опора и убедиться в правильности работы расчетного модуля:
ВЛево – переключить номер участка слева от опоры и подсветить в чертеже
ВПраво – переключить номер участка справа от опоры и подсветить в чертеже

Опция Отчет,
Опора 1 [40] нагрузка: 20.77 ошибок: 0 посчитано за: 99.00мс
Опора 2 [40] нагрузка: 15.44 ошибок: 0 посчитано за: 0.00мс
Опора 3 [40] нагрузка: 14.85 ошибок: 0 посчитано за: 3.00мс
Опора 4 [40] нагрузка: 358.04 ошибок: 0 посчитано за: 7.00мс
Опора 5 [40] нагрузка: 244.45 ошибок: 0 посчитано за: 1.00мс
Опора 6 [40] нагрузка: 114.31 ошибок: 1 посчитано за: 3.00мс
Опора 7 [40] нагрузка: 153.22 ошибок: 1 посчитано за: 3.00мс
Опора 8 [40] нагрузка: 258.74 ошибок: 1 посчитано за: 2.00мс
Опора 9 [40] нагрузка: 164.42 ошибок: 1 посчитано за: 2.00мс
Опора 10 [40] нагрузка: 87.17 ошибок: 0 посчитано за: 5.00мс
Опора 11 [40] нагрузка: 86.25 ошибок: 0 посчитано за: 7.00мс
Опора 12 [40] нагрузка: 552.16 ошибок: 0 посчитано за: 1.00мс
Опора 13 [40] нагрузка: 570.69 ошибок: 0 посчитано за: 1.00мс
Опора 14 [40] нагрузка: 644.21 ошибок: 0 посчитано за: 1.00мс
Опора 15 [40] нагрузка: 627.56 ошибок: 0 посчитано за: 4.00мс
Опора 16 [40] нагрузка: 279.65 ошибок: 0 посчитано за: 2.00мс
Опора не прикреплена!
Опора 17 [40] нагрузка: 0.00 ошибок: 0 посчитано за: 0.00мс
Опора 18 [40] нагрузка: 466.33 ошибок: 0 посчитано за: 3.00мс
Опора 19 [40] нагрузка: 462.89 ошибок: 0 посчитано за: 2.00мс
Опора 20 [40] нагрузка: 346.47 ошибок: 0 посчитано за: 0.00мс
Опора 21 [40] нагрузка: 103.02 ошибок: 0 посчитано за: 0.00мс
Опора 22 [40] нагрузка: 47.68 ошибок: 0 посчитано за: 0.00мс
Опора 23 [40] нагрузка: 119.42 ошибок: 0 посчитано за: 0.00мс
Опора 24 [40] нагрузка: 273.18 ошибок: 0 посчитано за: 0.00мс
Опора 25 [40] нагрузка: 171.01 ошибок: 0 посчитано за: 3.00мс
Опора 26 [40] нагрузка: 89.29 ошибок: 0 посчитано за: 8.00мс
Опора 27 [40] нагрузка: 1168.26 ошибок: 0 посчитано за: 2.00мс
Опора 28 [40] нагрузка: 994.80 ошибок: 0 посчитано за: 0.00мс
Опора 29 [40] нагрузка: 0.00 ошибок: 0 посчитано за: 6.00мс
Опора 30 [40] нагрузка: 181.99 ошибок: 1 посчитано за: 5.00мс
Опора 31 [40] нагрузка: 37.15 ошибок: 0 посчитано за: 8.00мс
Опора 32 [40] нагрузка: 278.50 ошибок: 0 посчитано за: 1.00мс
Опора 33 [40] нагрузка: 845.35 ошибок: 0 посчитано за: 1.00мс
Опора 34 [40] нагрузка: 849.32 ошибок: 0 посчитано за: 1.00мс
Опора 35 [40] нагрузка: 112.11 ошибок: 1 посчитано за: 2.00мс
Опора не прикреплена!
Опора 36 [40] нагрузка: 0.00 ошибок: 0 посчитано за: 0.00мс
Опора 37 [40] нагрузка: 183.46 ошибок: 2 посчитано за: 3.00мс
Опора не прикреплена!
Опора 38 [40] нагрузка: 0.00 ошибок: 0 посчитано за: 0.00мс
Опора 39 [40] нагрузка: 47.84 ошибок: 0 посчитано за: 1.00мс
Опора 40 [40] нагрузка: 47.84 ошибок: 0 посчитано за: 0.00мс
Выводит в командную строку подробный отчет о нагрузке на каждую опору. В случае, если расчет опоры невозможен, перед ней появится соотв. предупреждение, например, «Опора не прикреплена!» означает, что опоры с номерами 17, 36 и 38 «парят в воздухе» и не могут быть рассчитаны. Их надо поправить в чертеже и рассчитать снова.

Опция Детали,
Показать детали [Все/Ошибочные/ОТчет/ВЫХод]:
Позволяет получить информацию о деталях в чертеже:
Все – подсветить все детали в чертеже
Ошибочные – подсветить все детали в чертеже, которые при участии в расчете вызовут ошибку (масса нулевая или изоляция слишком большая)
ОТчет – показать в командной строке список деталей с ошибками.
Например, в контрольной модели выявились следующие детали с ошибками:
Показать детали [Все/Ошибочные/ОТчет/ВЫХод]: О

Отображение деталей с ошибками
Найдено деталей с ошибками: 12
Показать детали [Все/Ошибочные/ОТчет/ВЫХод]: ОТ

Отчет о деталях с ошибками
Врезка приварная DN 15  М: 0.00
КШ.П.Э.050.063-01 AUMA SGExC 05.1 L=320мм       М: 0.00
КШ.П.Э.050.063-01 AUMA SGExC 05.1 L=320мм       М: 0.00
I-25-6.3-И 750.10-217242    М: 0.00
I-25-6.3-И 750.10-217242    М: 0.00
Врезка приварная DN 15  М: 0.00
Врезка приварная DN 15  М: 0.00
Врезка приварная DN 15  М: 0.00
Врезка приварная DN 15  М: 0.00
Врезка приварная DN 15  М: 0.00
РУСТ 310 электр. AUMA DN 50 PN 63 L=300мм Масса=0кг.    М: 0.00
РУСТ 310 электр. AUMA DN 50 PN 63 L=300мм Масса=0кг.    М: 0.00
М - масса
Т - толщина изоляции
О - объем изоляции
Найдено деталей с ошибками: 12
Показать детали [Все/Ошибочные/ОТчет/ВЫХод]:

Как видно, нет информации о массе врезок и др. деталей.

Отдельно приведу скриншоты демонстрирующие действие опции Все.

Подсвечены все опоры (субопция Все).

Подсвечены все прикрепленные опоры (субопция Прикрепленные).

 Подсвечены все открепленные опоры (субопция Открепленные).

Подсвечены все исправленные опоры (субопция Исправленные).

А также, отдельно приведу скриншоты демонстрирующие действие субопции Трубопроводы в опции Каждую, чтобы стало понятно, как модуль определяет участки трубопроводов нагружающие опору. Поиск ведется от опоры расположенной в левой части модели.

Один из неудачных путей поиска нагружающего участка трубопровода. Путь замкнулся сам на себя, поэтому будет исключен из расчета.

 Один из удачных путей поиска нагружающего участка трубопровода. Путь дошел до другой опоры и будет принят в расчет.


Очередной удачный путь поиска нагружающего участка трубопровода. Очередной раз путь дошел до другой опоры, но другим путем и будет принят в расчет.

Очередной неудачный путь поиска нагружающего участка трубопровода. Путь пошел в другой обход и опять замкнулся сам на себя, значит будет исключен из расчета.

Хранить информацию о плотности, высоте снежного покрова, принимаемой в расчет деталям, критериям поиска опор и прочее сразу решил вынести в ветку реестра HKCU\Software\Alxd\MEPSupportLoad

Изменяя настройки в реестре, можно получить расчет, например, для газа или для более тяжелой жидкости. Возможно указать, что в роли опоры применяется мультивидовой блок определенного типа и подтипа. В общем, считаю, что любой более-менее подкованный специалист сможет настроить работу модуля под себя.

Таким образом теперь можно осуществлять укрупненный расчет нагрузок на опоры трубопроводов.

Преимущества расчетного модуля:
1. Учитывает недочеты и погрешности допускаемые при построении модели в AutoCAD MEP, таким образом не так уж строго требует соблюдать все особенности расстановки деталей.
2. Простой расчет, никаких излишков.

Недостатки:
1. Пока нет возможности изменять параметры нагрузок, такие как плотность, высота снежного покрова и т.п.
2. Не сертифицирован. Но он и не может быть сертифицирован, т.к. является укрупненным расчетом, а не точным, как, например, в СТАРТ.

Будут замечания или пожелания - пишите в комментарии!

В пятницу, 30.11.12 в программе обнаружились косячки. В частности, некорректно определялись ветки трубопроводов с врезками. В настоящий момент ошибка почти исправлена, как закончу, выложу обновленную версию.

Сегодня пятница 07.12.12. Как и обещал, обновил модуль. Теперь версия 1.2. Исправлены ошибки поиска веток трубопроводов нагружающих опору с врезками.