19:30 МСК, 📱 Твич
https://www.twitch.tv/muratovbim
Ну хорошо, давайте закончим автоматизацию. Надеюсь, что успею за сегодня закончить, но с этим Питоном ни в чём уверенным быть нельзя. А потом будем делать розетки в следующих эфирах. Там у меня ещё кое-какие планы есть на эфиры, там вообще пушка будет. Но это попозже чутка.
Глядишь, сделаю крутые розетки и вообще на продажу выставлю, покажу дизайнерам кузькину меп. Ну или обосрусь и не получится ничего. Тоже опыт.
Вы поймите, это молодёжь щас привыкла чуть что сразу бежать в чатики и вопросы задавать, а как то, а как это, ну а мы, старики, хоть и натерпелись на полях первой бимовой, но по старой привычке изучаем Ревит на практике, а не в чатах.
Пойду спину мазью натру, таблетки выпью, а то скоро прямой эфир. Обнял-приподнял, покряхтел.
Сегодня более быстрый инет подключил, так что как-нибудь попробуем рестрим делать сразу на две площадки, например в Твич и Ютуб или Твич и Телегу.
https://www.twitch.tv/muratovbim
Ну хорошо, давайте закончим автоматизацию. Надеюсь, что успею за сегодня закончить, но с этим Питоном ни в чём уверенным быть нельзя. А потом будем делать розетки в следующих эфирах. Там у меня ещё кое-какие планы есть на эфиры, там вообще пушка будет. Но это попозже чутка.
Глядишь, сделаю крутые розетки и вообще на продажу выставлю, покажу дизайнерам кузькину меп. Ну или обосрусь и не получится ничего. Тоже опыт.
Вы поймите, это молодёжь щас привыкла чуть что сразу бежать в чатики и вопросы задавать, а как то, а как это, ну а мы, старики, хоть и натерпелись на полях первой бимовой, но по старой привычке изучаем Ревит на практике, а не в чатах.
Пойду спину мазью натру, таблетки выпью, а то скоро прямой эфир. Обнял-приподнял, покряхтел.
Сегодня более быстрый инет подключил, так что как-нибудь попробуем рестрим делать сразу на две площадки, например в Твич и Ютуб или Твич и Телегу.
Please open Telegram to view this post
VIEW IN TELEGRAM
Рассказываю итоги вчерашнего эфира
В общем, скрипт не получился. Сама по себе логическая часть отрабатывает, тут всё получилось, но проблема оказалась в заголовках. Скорее всего, в прошлый раз, когда делал садик, я с ней тоже столкнулся, просто уже забыл.
То есть присвоить код каждому элементу я смог, но вот заголовки всю красоту порушили. Из-за них либо не получается вывести все наименования, либо получается, то заголовки дробят систему на несколько подзаголовков.
Кароч. Я решил не в онлайн покрутить варианты, ведь если не получается провести кодификацию по категориям, то можно спуститься ещё ниже и сделать кодификацию каждого элемента, а уже потом по ней сортировать.
Но для этого недостаточно каждому элементу присвоить свой код, это очень просто, но фактически сработает так же, как работает галочка «Для каждого экземпляра». А мне нужно сгенерировать одинаковый код для каждой позиции с одинаковыми наименованием и маркой. Ну как минимум эти два параметра.
И тут случился затык. В той модели, которую взял для работы, у многих позиций тупо нет параметров или они есть, но не заполнены. Соответственно, я не могу обработать такие элементы. Так что решил бросить эту затею и больше не тратить времени.
Тем не менее, что я вам предлагаю. Я уже выложил для донов первый ролик этой серии. Второй ролик тоже выложу, но нужно понимать, что результата там нет. Разве что посмотреть, как тыкаюсь с Питоном.
При этом вот тут я выложу код Питона. Я его немного доработал, сделал «поумнее». Хе-хе, настоящие программисты назовут это полным говном, но настоящих программистов тут мало, пусть себе говорят. У них всё равно нет того, что есть у меня — приятно булькающий в животе зелёный чай с жасмином и сэндвичем с какой-то невкусной хернёй.
Что делает этот код. Он получает все элементы из систем вентиляции и трубопроводов. Проверял на вентиляции, там работает. При этом получает не только элементы систем, то и общие вложенные со всех уровней.
Далее копирует имя системы в указанный пользователем параметр и для элементов систем и для их общих вложенных.
На выходе будет список всех элементов из системы, как обычных, так и общих вложенных. И дальше уже делайте с ними, чего хотите. Код можно вставить в обычный Питон-нод и подавать на два входа список
В общем, скрипт не получился. Сама по себе логическая часть отрабатывает, тут всё получилось, но проблема оказалась в заголовках. Скорее всего, в прошлый раз, когда делал садик, я с ней тоже столкнулся, просто уже забыл.
То есть присвоить код каждому элементу я смог, но вот заголовки всю красоту порушили. Из-за них либо не получается вывести все наименования, либо получается, то заголовки дробят систему на несколько подзаголовков.
Кароч. Я решил не в онлайн покрутить варианты, ведь если не получается провести кодификацию по категориям, то можно спуститься ещё ниже и сделать кодификацию каждого элемента, а уже потом по ней сортировать.
Но для этого недостаточно каждому элементу присвоить свой код, это очень просто, но фактически сработает так же, как работает галочка «Для каждого экземпляра». А мне нужно сгенерировать одинаковый код для каждой позиции с одинаковыми наименованием и маркой. Ну как минимум эти два параметра.
И тут случился затык. В той модели, которую взял для работы, у многих позиций тупо нет параметров или они есть, но не заполнены. Соответственно, я не могу обработать такие элементы. Так что решил бросить эту затею и больше не тратить времени.
Тем не менее, что я вам предлагаю. Я уже выложил для донов первый ролик этой серии. Второй ролик тоже выложу, но нужно понимать, что результата там нет. Разве что посмотреть, как тыкаюсь с Питоном.
При этом вот тут я выложу код Питона. Я его немного доработал, сделал «поумнее». Хе-хе, настоящие программисты назовут это полным говном, но настоящих программистов тут мало, пусть себе говорят. У них всё равно нет того, что есть у меня — приятно булькающий в животе зелёный чай с жасмином и сэндвичем с какой-то невкусной хернёй.
import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference('RevitServices')
from RevitServices.Persistence import DocumentManager as DM
from RevitServices.Transactions import TransactionManager as TM
doc = DM.Instance.CurrentDBDocument
def subcomponents(element):
all_subs = []
if hasattr(element, "GetSubComponentIds"):
sub_Id_list = element.GetSubComponentIds()
for sub_Id in sub_Id_list:
sub = doc.GetElement(sub_Id)
if sub.GetSubComponentIds():
all_subs.append(sub)
all_subs.append(subcomponents(sub))
else:
all_subs.append(sub)
return all_subs
mep_systems = UnwrapElement(IN[0])
system_label_parameter = IN[1]
elements_from_system = []
for system in mep_systems:
system_element_list = []
if system.Category.Id.IntegerValue == -2008015: # Системы воздуховодов
system_elements = system.DuctNetwork
elif system.Category.Id.IntegerValue == -2008043: # Трубопроводные системы
system_element_list = system.PipingNetwork
pass
for element in system_elements:
system_name = element.get_Parameter(BuiltInParameter.RBS_SYSTEM_NAME_PARAM).AsString()
system_element_list.append(element)
element_subcomponents = subcomponents(element)
TM.Instance.EnsureInTransaction(doc) # Открытие транзакции
element.LookupParameter(system_label_parameter).Set(system_name)
for sub in element_subcomponents:
sub.LookupParameter(system_label_parameter).Set(system_name)
TM.Instance.TransactionTaskDone() # Закрытие транзакции
system_element_list.extend(element_subcomponents)
elements_from_system.append(system_element_list)
OUT = elements_from_system
Что делает этот код. Он получает все элементы из систем вентиляции и трубопроводов. Проверял на вентиляции, там работает. При этом получает не только элементы систем, то и общие вложенные со всех уровней.
Далее копирует имя системы в указанный пользователем параметр и для элементов систем и для их общих вложенных.
На выходе будет список всех элементов из системы, как обычных, так и общих вложенных. И дальше уже делайте с ними, чего хотите. Код можно вставить в обычный Питон-нод и подавать на два входа список
Помогают ли вам в работе вложенные семейства радиаторной арматуры в отопительные приборы? Речь про термоклапаны, термоголовки, Н-клапаны, мультифлексы и так далее без привязки к конкретному бренду.
Anonymous Poll
41%
Да, и для бокового, и для нижнего подключения это полезно и помогает
1%
Да, но полезно только для бокового подключения
3%
Да, но полезно только для нижнего подключения
10%
Нет, всегда мешает, лучше делать без вложенной арматуры или дать возможность её отключать
45%
Посмотреть ответы
Forwarded from Revit и BIM технологии | BIM2B
#BIMdigest 110 — Интеграции в AEC
В этом выпуске:
— Autodesk углубляет интеграцию с ArcGIS;
— Archicad 28 - крутая работа с облаками точек и не только;
— скрипт Dynamo, использующий Stable Diffusion для генерации текстур Revit по текстовому промпту;
❄️ Autodesk Revit. Разработка инженерного раздела ОВ ❄️ — новый видеокурс в онлайн-школе BIM2B;
— что делать, если не удаётся найти элемент модели в спецификации;
— Enscape для совещаний с заказчиком;
— обновление Enscape 4.2;
— интервью с создателем That Open Company (ранее IFC.js).
В этом выпуске:
— Autodesk углубляет интеграцию с ArcGIS;
— Archicad 28 - крутая работа с облаками точек и не только;
— скрипт Dynamo, использующий Stable Diffusion для генерации текстур Revit по текстовому промпту;
❄️ Autodesk Revit. Разработка инженерного раздела ОВ ❄️ — новый видеокурс в онлайн-школе BIM2B;
— что делать, если не удаётся найти элемент модели в спецификации;
— Enscape для совещаний с заказчиком;
— обновление Enscape 4.2;
— интервью с создателем That Open Company (ранее IFC.js).
Forwarded from Дневник Ревитчика
Столкнулся с интерполяцией значений в Ревите
Делаю я ручной балансировочник, у него есть обороты рукоятки. Что-то похожее уже делал для Ридановской балансировочной арматуры, но там задача была проще: был стандартный список значений от 0 до 9.9, надо было выбрать ближайшее большее значение по фактической пропускной способности.
А тут делаю Вальтековский балансир, и у него есть таблица с шагом 5, от 0 до 99. И вот промежуточные значения вычисляются интерполяцией, шаг — 1. То есть по сути тут 99 вариантов для каждого диаметра.
Сначала подумал, что смогу быстро сделать интерполяцию для всех значений в Экселе. Но ничего не вышло, функции Экселя выдавали какую-то дичь, я не понял, почему. Времени и желания разбираться с Экселем не было, а вбивать в него обычные формулы — долго очень, я на такое не подписывался.
Но потом подумал: ну хорошо, сделать в Экселе слишком трудозатратно, а что, если сделать тот же расчёт, но в Ревите?
Для этого мне нужны:
— значение фактической пропускной способности, это легко, параметр расхода есть, требуемый перепад пользователь тоже в параметр вобьёт;
— значение табличной пропускной способности снизу и сверху. То есть, если фактическая пропускная способность 2,28, то надо взять из таблицы ближайшее большее и меньшее значения, а также обороты для них. Для примера пусть это будут 2,21 и 2,37, а обороты 30 и 35;
— значения оборотов снизу и сверху, это уже упомянул выше.
В результате можно простой арифметикой посчитать значение для оборотов: 30 + (2,28 - 2,21) × (35 - 30) / (2,37 - 2,21) = 32.1875, или 32. Получаю обороты искомые. Правда, надо уточнить, тут округлять вверх или можно вниз до целых.
Вся загвоздка в том, как получить значения снизу и сверху. На самом деле, это делается относительно легко. Нам нужно сделать таблицу выбора на все значения для каждого диаметра: пропускная способность — обороты. А далее формулой для таблицы выбора получать значения пропускной способности для каждого табличного значения оборотов. И обороты указывать не из переменной, а прямо числами: 1, 2, 3, ...
В итоге мы можем обычным сравнением получить значение сверху. Если при оборотах 1 табличная пропускная способность больше, чем фактическая, то у нас 1 оборот. Если меньше, то идём далее на обороты 2. И вот так перебором по порядку получаем значение сверху.
Для значения снизу нужно идти в обратном порядке, от максимальных оборотов до минимальных. Если при оборотах 99 табличное значение меньше фактического, то обороты 99. Если нет, то спускаемся ниже на 95, 90 и так далее. Как только условие выполнилось — мы получили наше значение снизу.
Ну а дальше арифметика. В создании таких длинных формул отлично помогает Эксель.
Делаю я ручной балансировочник, у него есть обороты рукоятки. Что-то похожее уже делал для Ридановской балансировочной арматуры, но там задача была проще: был стандартный список значений от 0 до 9.9, надо было выбрать ближайшее большее значение по фактической пропускной способности.
А тут делаю Вальтековский балансир, и у него есть таблица с шагом 5, от 0 до 99. И вот промежуточные значения вычисляются интерполяцией, шаг — 1. То есть по сути тут 99 вариантов для каждого диаметра.
Сначала подумал, что смогу быстро сделать интерполяцию для всех значений в Экселе. Но ничего не вышло, функции Экселя выдавали какую-то дичь, я не понял, почему. Времени и желания разбираться с Экселем не было, а вбивать в него обычные формулы — долго очень, я на такое не подписывался.
Но потом подумал: ну хорошо, сделать в Экселе слишком трудозатратно, а что, если сделать тот же расчёт, но в Ревите?
Для этого мне нужны:
— значение фактической пропускной способности, это легко, параметр расхода есть, требуемый перепад пользователь тоже в параметр вобьёт;
— значение табличной пропускной способности снизу и сверху. То есть, если фактическая пропускная способность 2,28, то надо взять из таблицы ближайшее большее и меньшее значения, а также обороты для них. Для примера пусть это будут 2,21 и 2,37, а обороты 30 и 35;
— значения оборотов снизу и сверху, это уже упомянул выше.
В результате можно простой арифметикой посчитать значение для оборотов: 30 + (2,28 - 2,21) × (35 - 30) / (2,37 - 2,21) = 32.1875, или 32. Получаю обороты искомые. Правда, надо уточнить, тут округлять вверх или можно вниз до целых.
Вся загвоздка в том, как получить значения снизу и сверху. На самом деле, это делается относительно легко. Нам нужно сделать таблицу выбора на все значения для каждого диаметра: пропускная способность — обороты. А далее формулой для таблицы выбора получать значения пропускной способности для каждого табличного значения оборотов. И обороты указывать не из переменной, а прямо числами: 1, 2, 3, ...
В итоге мы можем обычным сравнением получить значение сверху. Если при оборотах 1 табличная пропускная способность больше, чем фактическая, то у нас 1 оборот. Если меньше, то идём далее на обороты 2. И вот так перебором по порядку получаем значение сверху.
Для значения снизу нужно идти в обратном порядке, от максимальных оборотов до минимальных. Если при оборотах 99 табличное значение меньше фактического, то обороты 99. Если нет, то спускаемся ниже на 95, 90 и так далее. Как только условие выполнилось — мы получили наше значение снизу.
Ну а дальше арифметика. В создании таких длинных формул отлично помогает Эксель.
This media is not supported in your browser
VIEW IN TELEGRAM
Просто ветерок твой вентилятор колышет
Сегодня продолжение цикла про настройку ВС Кода для программирования на Питоне под Ревит.
В новой статье Костя расскажет, как настроить подсказки для кода — так называемые заглушки. Они помогают программисту вводить команды и смотреть на доступные свойства и методы у элемента. Это удобно, так как иногда команды реально длинные, ещё и пишется всё слитно на английском языке, часто можно ошибиться. Заглушки сглаживают эти негативные эффекты.
Ссылка на материал: https://muratovbim.pro/blog/revit-api-podskazki-dlya-raboty-s-kodom/
Спасибо за репост в профильные чаты и коллегам-ревитчикам 🫶
Блог | Магазин | Курсы | Мерч
Чат в Телеге для вопросов
Сообщество VK
Задонатить в Телеге
Please open Telegram to view this post
VIEW IN TELEGRAM
Блог Вадима Муратова
Revit API: подсказки для работы с кодом — Блог Вадима Муратова
В этом материале Костя расскажет, как настроить заглушки — специальные подсказки при вводе кода, которые помогают проанализировать свойства и методы объектов и быстро их ввести, а не печатать вручную. С помощью свойств мы получаем информацию, а с помощью…
Media is too big
VIEW IN TELEGRAM
Тестирую семейство панельного радиатора со встроенной арматурой для бокового подключения.
Будьте осторожны, высокая детализация.
Будьте осторожны, высокая детализация.
Media is too big
VIEW IN TELEGRAM
Сравниваю три версии семейства с разным количеством массивов внутри.
В данном случае без массивов геометрию детализовать не получится. Но ради быстродействия от чего-то придётся отказаться.
Либо дать пользователю варианты на выбор, что я и сделал. Тянет комп — берите топ-детализацию. Не тянет — выбирайте варианты поскромнее.
Функционал одинаковый, меняется только внешность. Чего только не сделаешь ради ваших кровных, нажитых непосильным трудом.
В данном случае без массивов геометрию детализовать не получится. Но ради быстродействия от чего-то придётся отказаться.
Либо дать пользователю варианты на выбор, что я и сделал. Тянет комп — берите топ-детализацию. Не тянет — выбирайте варианты поскромнее.
Функционал одинаковый, меняется только внешность. Чего только не сделаешь ради ваших кровных, нажитых непосильным трудом.
Сегодня твичерю розетки
Так что приходите, буду делать очень круто. А вот получится ли очень круто — узнаем в будущем.
Ставьте огонёчки, кто готов прикоснуться к электроустановочным изделиям в прямом эфире.
19:00 МСК — начало. Сколько эфиров будет, не знаю, но запись смогут посмотреть доны в сообществе ВК.
Твич тут: https://www.twitch.tv/muratovbim
Так что приходите, буду делать очень круто. А вот получится ли очень круто — узнаем в будущем.
Ставьте огонёчки, кто готов прикоснуться к электроустановочным изделиям в прямом эфире.
19:00 МСК — начало. Сколько эфиров будет, не знаю, но запись смогут посмотреть доны в сообществе ВК.
Твич тут: https://www.twitch.tv/muratovbim
ВКонтакте
Блог Муратова про Revit MEP
Группа блога про Ревит для инженеров сетевых разделов. Меня зовут Вадим Муратов, я — автор блога, специалист по Revit, Dynamo и Navisworks, инженер ОВ.
За два часа собрал вот таких красавиц.
Первый этап вроде решился: получилось сделать рамку с постами, которые можно повернуть, при этом выключатели и остальные элементы тоже поворачиваются и остаются в исходной ориентации.
Дальше будет спецификация: нужно, чтобы все позиции правильно залетали в нужном порядке, а также была возможность у каждого поста прописать, к чему он относится, например какой группой светильников управляет выключатель.
Ну и потом самое сложное и интересное — обозначения на плане.
Запись двух часов стрима смогут посмотреть доны в ВК. Само семейство тоже выложу для донов, скорее всего, но это уже когда оно будет готово.
Первый этап вроде решился: получилось сделать рамку с постами, которые можно повернуть, при этом выключатели и остальные элементы тоже поворачиваются и остаются в исходной ориентации.
Дальше будет спецификация: нужно, чтобы все позиции правильно залетали в нужном порядке, а также была возможность у каждого поста прописать, к чему он относится, например какой группой светильников управляет выключатель.
Ну и потом самое сложное и интересное — обозначения на плане.
Запись двух часов стрима смогут посмотреть доны в ВК. Само семейство тоже выложу для донов, скорее всего, но это уже когда оно будет готово.
Обновление Интероперабилити Тулс для бим-менеджеров, которые им ещё пользуются.
Все официальные установщики на одной странице
Лечения нет, ищите сами, вы же не дети.
Все официальные установщики на одной странице
Лечения нет, ищите сами, вы же не дети.
Всем хороших выходных.
Думаю, в понедельник выйдет новая библиотека с панельными радиаторами. Следите за новостями, если интересно, особенно, если покупаете мои библиотеки.
В целом, я не думал, что это кому-то надо, но за последнее время несколько человек спрашивали про панельники с арматурой. Я подумал, ну щас сяду, за денёк накидаю, переделаю биметалл.
Ага, конечно.
Четвёртый день с утра до ночи всё тут полирую, не могу бросить, потому что надо уже таки доделать и поставить галочку, что выполнил.
Потом надо закончить крепления, тоже ждут своей очереди, осталось там немного, но надо доделать и оформить всё.
В общем, каждая такая библиотека «ну щас сделаю за денёк» оборачиваются недельной или больше авантюрой.
Думаю, в понедельник выйдет новая библиотека с панельными радиаторами. Следите за новостями, если интересно, особенно, если покупаете мои библиотеки.
В целом, я не думал, что это кому-то надо, но за последнее время несколько человек спрашивали про панельники с арматурой. Я подумал, ну щас сяду, за денёк накидаю, переделаю биметалл.
Ага, конечно.
Четвёртый день с утра до ночи всё тут полирую, не могу бросить, потому что надо уже таки доделать и поставить галочку, что выполнил.
Потом надо закончить крепления, тоже ждут своей очереди, осталось там немного, но надо доделать и оформить всё.
В общем, каждая такая библиотека «ну щас сделаю за денёк» оборачиваются недельной или больше авантюрой.
Как-то обсуждали, какую мощность надо брать для формулы, по которой определяем расход жидкости через радиатор.
Я везде вставляю не фактическую мощность прибора, а теплопотери. Потому что так указано в примере в справочнике проектировщика.
В целом это логично. Тепловая мощность — это энергия, которую нужно подать в помещение на компенсацию теплопотерь. Неважно, какой там тип прибора, потеря энергии нужно компенсировать.
Энергию несёт теплоноситель. Если у нас известны перепад температуры теплоносителя и теплопотери, то по ним мы определим расход воды. Именно он принесёт нужное количество энергии в единицу времени, чтобы компенсировать теплопотери помещения.
А дальше у нас уже нюансы отопительных приборов. Прибор может отдать определённое количество тепла, которое зависит от его конструкции, окружения и температурного напора. Чем больше напор, тем проще прибору отдать тепло из-за градиента температур.
Соответственно, у нас есть энергия теплоносителя, она посчитана на компенсацию теплопотерь. Если прибор не может выдать с такого расхода нужную мощность, то это проблема не расхода, а прибора. Поэтому мы увеличиваем прибор до тех пор, пока при этом расходе он не выдаст требуемую мощность, чтобы вода успела пройти и достаточно остыть.
Отсюда вроде как логично, что именно теплопотери определяют расход, а не фактическая мощность. Если прибор был бы более эффективным, то он смог бы «забрать» достаточно энергии и передать в помещение, тогда он был бы короче. Если не может, то увеличиваем количество секций или длину.
Проблему я вижу как раз в том, что таблицы мощности радиаторов обычно считаются на расход для однотрубной системы с конским расходом, то есть вроде как надо бы вводить ещё понижающий коэффициент на то, что расход будет сильно ниже, чем при испытаниях для получения теплоотдачи прибора. Раз меньше воды, то и энергии меньше отдаст прибор.
Так или не так?
P. S. Скинули формулу из каталога Рифара и книги Покотилова «Системы водяного отопления», там расход жидкости учитывается в отношении к стандартному при испытаниях. Но это отношение домножается на степенной коэффициент, который равен 0,015—0,02, и в итоге, если взять, например 64 кг/час, то падение мощности будет всего около 3 процентов. То есть не то чтобы можно пренебречь, но вклад невелик получается.
Я везде вставляю не фактическую мощность прибора, а теплопотери. Потому что так указано в примере в справочнике проектировщика.
В целом это логично. Тепловая мощность — это энергия, которую нужно подать в помещение на компенсацию теплопотерь. Неважно, какой там тип прибора, потеря энергии нужно компенсировать.
Энергию несёт теплоноситель. Если у нас известны перепад температуры теплоносителя и теплопотери, то по ним мы определим расход воды. Именно он принесёт нужное количество энергии в единицу времени, чтобы компенсировать теплопотери помещения.
А дальше у нас уже нюансы отопительных приборов. Прибор может отдать определённое количество тепла, которое зависит от его конструкции, окружения и температурного напора. Чем больше напор, тем проще прибору отдать тепло из-за градиента температур.
Соответственно, у нас есть энергия теплоносителя, она посчитана на компенсацию теплопотерь. Если прибор не может выдать с такого расхода нужную мощность, то это проблема не расхода, а прибора. Поэтому мы увеличиваем прибор до тех пор, пока при этом расходе он не выдаст требуемую мощность, чтобы вода успела пройти и достаточно остыть.
Отсюда вроде как логично, что именно теплопотери определяют расход, а не фактическая мощность. Если прибор был бы более эффективным, то он смог бы «забрать» достаточно энергии и передать в помещение, тогда он был бы короче. Если не может, то увеличиваем количество секций или длину.
Проблему я вижу как раз в том, что таблицы мощности радиаторов обычно считаются на расход для однотрубной системы с конским расходом, то есть вроде как надо бы вводить ещё понижающий коэффициент на то, что расход будет сильно ниже, чем при испытаниях для получения теплоотдачи прибора. Раз меньше воды, то и энергии меньше отдаст прибор.
Так или не так?
P. S. Скинули формулу из каталога Рифара и книги Покотилова «Системы водяного отопления», там расход жидкости учитывается в отношении к стандартному при испытаниях. Но это отношение домножается на степенной коэффициент, который равен 0,015—0,02, и в итоге, если взять, например 64 кг/час, то падение мощности будет всего около 3 процентов. То есть не то чтобы можно пренебречь, но вклад невелик получается.