Инспектор систем

Автор Тема: Инспектор систем  (Прочитано 11922 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Инспектор систем
« : 12-02-2020, 14:58:34 »
Есть ли программная возможность добраться до Инспектора инженерных систем?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #1 : 12-02-2020, 15:00:12 »
Зависит от того, как именно добираться

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Инспектор систем
« Ответ #2 : 12-02-2020, 15:03:39 »
Если вручную выбрать например вент. систему  , то инспектор показывает участки по расходам, определяя главное направление и ветви. До этого режима как то можно добраться?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #3 : 12-02-2020, 17:20:17 »
Инспектор включить программно не получится, ну, точнее, если только с помощью WinAPI.

Сами данные получить можно. Открывай в SDK MechanicalSystem для вент системы, PipingSystem для трубопроводной и ищи по слову Section, там увидишь свойство SectionsCount, методы GetSectionByIndex / GetSectionByNumber, а также GetCriticalPathSectionNumbers. Собственно получаешь нужные участки, представленные классом MEPSection, в нём, собственно, вся нужная информация по участкам сети.

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Инспектор систем
« Ответ #4 : 12-02-2020, 17:22:55 »
Так я получу только главную ветвь по расчетному направлению (в инспекторе красной линией выделено), но как ветки получить (остальные линии, виделенные синими)

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #5 : 12-02-2020, 17:25:18 »
там все участки есть, не только по critical path

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Инспектор систем
« Ответ #6 : 12-02-2020, 17:38:57 »
То есть все что не относится из SectionsCount к GetCriticalPathSectionNumbers есть ветви?

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

Отмечено как Решение enot 17-02-2020, 13:55:12

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #7 : 12-02-2020, 17:43:39 »
То есть все что не относится из SectionsCount к GetCriticalPathSectionNumbers есть ветви?

Ты мне чуть мозг не сломал.

Получаем секции из диапазона [0, SectionsCount) методом GetSectionByIndex, фильтруем те, у которых Number не входит в перечень, который возвернула GetCriticalPathSectionNumbers - это будут участки вне критического пути.

Оффлайн Agens

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: Инспектор систем
« Ответ #8 : 12-02-2020, 18:53:32 »
На картинке 5 Sections, GetCriticalPathSectionNumbers выдаст массив [2, 4, 5] ?


« Последнее редактирование: 17-02-2020, 10:12:06 от Agens »
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Инспектор систем
« Ответ #9 : 17-02-2020, 10:32:01 »

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Инспектор систем
« Ответ #10 : 17-02-2020, 10:32:28 »
---

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #11 : 17-02-2020, 11:17:28 »
На картинке 5 Sections, GetCriticalPathSectionNumbers выдаст массив [2, 4, 5] ?

Ну да, только в реальной модели у тебя будет что-то вроде 57, 119, 123. Насколько я понял, у Revit сквозная нумерация секций по всем системам в проекте, поэтому аккуратно, не путай получение по индексу и номеру секции.

Не нашел в SDK этого примера
А я и не предлагал в примерах искать. Сначала стОит по документации классов/методов пошуршать.

Оффлайн Agens

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: Инспектор систем
« Ответ #12 : 17-02-2020, 13:09:59 »
там просто нужно поменять класс, т.к. PipingSystem наследует MEPSystem, а этот метод не будет виден, если не сделать приведение типов. (или DuctSystem)
у меня GetCriticalPathSectionNumbers всегда count=0, даже не знаю почему...
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #13 : 17-02-2020, 13:44:51 »
у меня GetCriticalPathSectionNumbers всегда count=0, даже не знаю почему

Система должна быть собрана предельно аккуратно. В UI если не доступна кнопка инспектора систем, значит и через API GetCriticalPathSectionNumbers не отдаст


Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Инспектор систем
« Ответ #14 : 17-02-2020, 14:00:15 »
Александр Игнатович,
IsWellConnected  - это проверка что нет не подключенных элементов?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #15 : 17-02-2020, 14:03:57 »
Нет.

Собственно, это как раз свойство, по которому понятно, рассчитывается ли система или нет.

Я вообще проверяю это так:
Код - C# [Выбрать]
  1. pipingSystem.IsWellConnected && !pipingSystem.IsMultipleNetwork

Насчёт not IsMultipleNetwork не знаю, может и не надо, перестраховываюсь

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Инспектор систем
« Ответ #16 : 25-02-2020, 12:46:03 »
Код - C# [Выбрать]
  1. bool isMain =MEPSection.IsMain(MEPSectionFittingId)

для всех fittingId в любом MEPSection  у меня isMain = true

В чем причина?

« Последнее редактирование: 25-02-2020, 14:17:37 от enot »

Оффлайн Agens

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: Инспектор систем
« Ответ #17 : 02-03-2020, 15:41:02 »
Есть ли способ от MEPSection получить соседние участки? или только "танцы с бубном"?
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #18 : 02-03-2020, 16:57:49 »
для всех fittingId в любом MEPSection  у меня isMain = true

Вангую - у тебя в системе нет тройников.

Что значит IsMain читал?
Цитировать
Return Value
True if the type of fitting in this section is main False if the type of fitting in this section is branch

Набросал по-быстрому скрипт для исследования системы. Система у меня трубопроводная, с тройниками, как со врезками работает - сам попробуешь. Результат, в общем-то ожидаемый, IsMain возвращает False только для тройников, причем в одной секции - это True, в другой - False. Например разрез 1 со стороны тройника - ветка, IsMain в этой MEPSection вернул False.



На соседних 2 разрезах - как и ожидается, вернул true.

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #19 : 02-03-2020, 17:01:22 »
Есть ли способ от MEPSection получить соседние участки? или только "танцы с бубном"?

Только на критическом пути, к сожалению. Хотя в принципе, ничего сложного самому обойти систему, там, где равные размеры труб/воздуховода, величины самого потока и его скорости, трение и шероховатость - это будет один сегмент.

Оффлайн Agens

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: Инспектор систем
« Ответ #20 : 02-03-2020, 17:21:56 »
Что значит IsMain читал?
А вот можно русский перевод?

Только на критическом пути, к сожалению.
А на критическом как? В какую сторону кодить?

Набросал по-быстрому скрипт для исследования системы.
И где скрип?

Система у меня трубопроводная, с тройниками, как со врезками работает - сам попробуешь.
Вот во врезках то и самый "затык"...
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #21 : 02-03-2020, 17:30:22 »
А вот можно русский перевод?

так выше ж описал. По определению разреза системы (равные рамеры, поток, скорость, шероховатость), тройник в будет граничным элементом MEPSection. Если секция со стороны ветки - IsMain вернёт False, иначе - True.

А на критическом как? В какую сторону кодить?

так там же возвращаются номера секций в нужном порядке

Оффлайн Agens

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: Инспектор систем
« Ответ #22 : 02-03-2020, 18:42:30 »
true - среда не меняет направление движения, false - меняет...
« Последнее редактирование: 03-03-2020, 11:18:08 от Agens »
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #23 : 02-03-2020, 18:50:16 »
true - среда не меняет направление движения, false - меняет...

Сам придумал?

Оффлайн Agens

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: Инспектор систем
« Ответ #24 : 02-03-2020, 21:19:36 »
на не критичном участке так получается...
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Инспектор систем
« Ответ #25 : 03-03-2020, 09:47:57 »
true у меня как на критическом пути так и на ветках. По идее, должно выдавать true только на критическом пути

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Инспектор систем
« Ответ #26 : 03-03-2020, 09:51:20 »
Вангую - у тебя в системе нет тройников.
Так и есть. Соединение через врезки. Видимо,  в них дело...

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #27 : 03-03-2020, 09:58:11 »
По идее, должно выдавать true только на критическом пути

Это ты почему так решил?

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Инспектор систем
« Ответ #28 : 03-03-2020, 10:15:31 »
Это ты почему так решил?
Не правильно выразился

Возьмем тройник. Он может принадлежать секции на критическом пути (IsMain=true), и секции на ветви (isMain = true)  => для остальных же фитингов этой секции должно возвращаться IsMain=false

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #29 : 03-03-2020, 10:21:48 »
Возьмем тройник. Он может принадлежать секции на критическом пути (IsMain=true), и секции на ветви (isMain = true)  => для остальных же фитингов этой секции должно возвращаться IsMain=false

Опять же, с чего это ты так решил? Зачем ты приплетаешь сюда критический путь?

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Инспектор систем
« Ответ #30 : 03-03-2020, 10:33:27 »
Разве IsMain не означает отношение к критическому пути?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #31 : 03-03-2020, 10:34:59 »
В документации по этому методу есть хотя бы слово о критическом пути?

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Инспектор систем
« Ответ #32 : 03-03-2020, 10:37:27 »
Цитировать
Return Value
True if the type of fitting in this section is main False if the type of fitting in this section is branch

Цитировать
False if the type of fitting in this section is branch
- ветви системы.

Цитировать
True if the type of fitting in this section is main
- как я понимаю, самое нагруженное направление системы, в ревите определяемый через GetCriticalPath

если что то не так понимаю, поправьте





Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #33 : 03-03-2020, 10:39:27 »
Почитай ответы в теме выше.

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Инспектор систем
« Ответ #34 : 03-03-2020, 10:46:55 »
Так, почитал...
true - возвращает только для тройника если он стоит на проходе для данной секции, false -  если стоит на ответвлении для данной секции (или для любого другого фитинга) ?

или скорее так:

true - это ствол
false - это ответвление и проход (сейчас картинку нарисую)




Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #35 : 03-03-2020, 10:52:42 »
Почти. False может быть только для тройника, если разрез на его ответвлении.

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Инспектор систем
« Ответ #36 : 03-03-2020, 10:55:08 »
Так , не? (стрелками указано направление потока)

Картинка №1

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #37 : 03-03-2020, 10:59:38 »
Нет. На отводе всегда false, на основном проходе всегда true

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Инспектор систем
« Ответ #38 : 03-03-2020, 11:02:56 »
?
Картинка №2

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #39 : 03-03-2020, 11:04:14 »
Вроде да

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Инспектор систем
« Ответ #40 : 03-03-2020, 11:09:15 »
По моему мнению, все таки логичнее была бы первая картинка №1 где стволовой участок - IsMain=true, а ветви на проход и ответвление  - IsMain = false.

Но, судя по всему , истина другая)
Спасибо за пояснения.

Оффлайн Agens

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: Инспектор систем
« Ответ #41 : 03-03-2020, 11:15:48 »
запутали еще больше ) но тему, вроде, добили :)

на подаче и обратке, у тройника по "оси" всегда true, а вот на "отводе" false, со врезкой по-другому, со стороны врезки true....

в отоплении вообще критические участки подачи и обратки могу быть разными...
« Последнее редактирование: 03-03-2020, 15:24:09 от Agens »
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

Оффлайн Agens

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: Инспектор систем
« Ответ #42 : 05-03-2020, 20:32:10 »
чтобы обойти сеть трубопроводов нужно граф юзать?
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #43 : 06-03-2020, 09:36:16 »
А что, есть варианты?

Пример можешь, например тут у Джереми глянуть https://thebuildingcoder.typepad.com/blog/2013/02/simple-mep-system-traversal.html

Оффлайн Agens

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: Инспектор систем
« Ответ #44 : 06-03-2020, 12:28:03 »
Спасибо, вариант - бинарное дерево...  как частный случай... хотя врезка в коробку для вентиляции может быть из более 2 коннекторов...
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #45 : 06-03-2020, 12:35:55 »
Тут всё сильно от задачи зависит, что считать узлом в графе. Если элементы, то врезки и тройники сломают бинарную логику. Реализовывал, наверное, с десяток вариантов. Где-то узлами были коннекторы, где-то элементы, где-то вообще только сантехнические приборы + тройники.

Оффлайн Agens

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: Инспектор систем
« Ответ #46 : 08-03-2020, 16:02:08 »
в врезками сложно работать, соседние разрезы можно получить только через одно место...
начинаю искать по расходу, расход одинаковый...

Пример можешь, например тут у Джереми глянуть https://thebuildingcoder.typepad.com/blog/2013/02/simple-mep-system-traversal.html
Уф. этот пример слишком легкий для графов...
« Последнее редактирование: 08-03-2020, 18:00:35 от Agens »
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

Оффлайн Agens

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: Инспектор систем
« Ответ #47 : 14-03-2020, 17:29:47 »
помогите разбить трубу с 3-мя врезками и 5-тью участками. Недели две не могу придумать достойный алгоритм.
допустим из 5 connector-ов, по одному мы входим, остается 4 (3 OUT, и один IN), участок от IN до врезки (их два), не поддается ни как...
участок 3

VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Инспектор систем
« Ответ #48 : 22-03-2020, 13:42:10 »
Посмотри свойство ConnectorType. На концах трубы будет ConnectorType.End, на врезках будет ConnectorType.Curve, дальше можно спроецировать Connector.Origin на Location, понять порядок расположения врезок на трубе. Потом по свойствам Direction и Flow уже понимать, к каким разрезам системы какие участки относятся, поизучай в RevitLookup

Оффлайн enotАвтор темы

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: Инспектор систем
« Ответ #49 : 06-08-2020, 10:25:49 »
.