Столкнулся с интерполяцией значений в Ревите
Делаю я ручной балансировочник, у него есть обороты рукоятки. Что-то похожее уже делал для Ридановской балансировочной арматуры, но там задача была проще: был стандартный список значений от 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 и так далее. Как только условие выполнилось — мы получили наше значение снизу.
Ну а дальше арифметика. В создании таких длинных формул отлично помогает Эксель.
👍6🔥3🤯2❤1✍1👏1🐳1🗿1
Кидайте ссылки на трек, который вы последним добавили в избранное (поставили лайк).
https://music.yandex.ru/album/31421647/track/126459937?utm_medium=copy_link
https://music.yandex.ru/album/31421647/track/126459937?utm_medium=copy_link
Yandex Music
Сколько стоят деньги?
🔥4❤2👎1🤝1
Дочери нравится анекдот, который я придумал:
«Идёт Обама по России. Видит — подъезд. Зашёл в него и насрал».
Смех, радость, счастье.
«Идёт Обама по России. Видит — подъезд. Зашёл в него и насрал».
Смех, радость, счастье.
🔥11🗿7😢1
Обучаю щас небольшую группу. И это как раз тот случай, почему я ушёл из консалтинга, почему больше не читаю курсы.
Я обучаю работать в Ревите людей, которые путают команды Контрл Ц и Контрл В.
При этом я понимаю, что с вероятностью 99 % они не будут работать в Ревите. Как минимум полноценно, как минимум над созданием семейств. Может, только один человек из четырёх.
В итоге всем мы тратим своё время непонятно на что. Они сидят, потому что руководство сказало, что надо. Я сижу, потому что ещё летом пообещал прочитать этот курс.
Я прям чувствую, как трачу жизнь на какую-то бессмысленную херню. Да, за деньги, но денег бы я и так заработал, а время это я уже не верну. Поэтому больше никакие живые курсы читать не хочу. Либо за много денег, либо только такие курсы, где я сам могу отобрать учеников и буду понимать, что вот эти люди пришли, потому что им интересно и потому что хотят, а не потому что сверху спустили разнарядку.
Я обучаю работать в Ревите людей, которые путают команды Контрл Ц и Контрл В.
При этом я понимаю, что с вероятностью 99 % они не будут работать в Ревите. Как минимум полноценно, как минимум над созданием семейств. Может, только один человек из четырёх.
В итоге всем мы тратим своё время непонятно на что. Они сидят, потому что руководство сказало, что надо. Я сижу, потому что ещё летом пообещал прочитать этот курс.
Я прям чувствую, как трачу жизнь на какую-то бессмысленную херню. Да, за деньги, но денег бы я и так заработал, а время это я уже не верну. Поэтому больше никакие живые курсы читать не хочу. Либо за много денег, либо только такие курсы, где я сам могу отобрать учеников и буду понимать, что вот эти люди пришли, потому что им интересно и потому что хотят, а не потому что сверху спустили разнарядку.
👍37💯13❤8
Как делать внутрипольники
Делаю очередной внутрипольный конвектор. Это вроде пятый бренд, которому их делаю, и каждый раз одна и та же беда, вернее, две беды: решётка конвектора и вырезы на боковинах.
Первая беда
Когда я делал свои первые конвекторы, это были Техно, я хотел делать хорошо, я хотел делать красиво. Ну я и сделал — заебенил решётку как в реале, массивом. А там их не одна, обычно есть продольная решётка и поперечная. То есть это два массива.
Очевидно, что у такого подхода есть свои плюсы: конвектор выглядит, как в натуре, и у решетки можно менять цвет так же, как оно есть в жизни. Это может быть полезно, если архитекторы будут делать визуал помещений.
Минусы, конечно, тоже есть. Массивы медленно работают. У некоторых людей от такой красоты может отвалиться жопа. Ну и было неожиданно, когда узнал, что такие конвекторы могут ставить в многоэтажках.
Я всё же думал, что это история про всякую коммерцию на первых этажах зданий и коттеджи. В них такая геометрия не стала бы прям уж совсем кошмаром, так как конвекторов было бы не очень много.
Поэтому со следующей разработки для другого заказчика сменил подход. Решетку стал делать не массивом, а моделирующей штриховкой. Выглядело, конечно, далеко не так симпатично, как массивом, но зато конвектор стал быстрее реагировать на изменение параметров, размер файла тоже уменьшился.
Но появилась и проблема. У моделирующей штриховки есть цвет, но это линии, у них нет объёма, поэтому задавать цвет становится сложно. Чаще всего у производителей есть 4-5 стандартных цветов, отобразить их штриховкой не очень получается. В итоге проще вообще ничего такого не выдумывать, делать линии черными, а условную геометрию решётки — полупрозрачной.
На этом и остановился в итоге.
Вторая беда
Отверстия эти в корпусах всегда — головная боль. Теплообменники разные, то трубы в одной вертикальной, то в одной горизонтальной плоскостях. То эти отверстия круглые, то прямоугольные. То одно большое, то несколько рядом. Каждый раз всё по-разному. Каждый. Сука. Раз.
Причём в России по факту едва ли наберётся десяток заводов, которые делают эти самые конвекторы. В целом, кажется, что это максимально простое изделие, но всё равно делают их несколько заводов, а потом бренды продают одно и то же под разными марками.
Ну так не мучайте меня, сделайте просто все отверстия прямоугольными, без этой вашей вариативности, а.
В этот раз опять та же ерунда. Отверстия меняются в зависимости от расположения труб и ширины конвектора. Самый простой вариант — сделать отдельное семейство для каждой ширины конвектора, ещё и по высоте поделить на отдельные файлы, если меняется ориентация труб.
Но мне так делать очень не хотелось. Потому что это всегда выливается в необходимость вносить правки в кучу файлов. Забыл какую-то мелочь, да даже тупо опечатался в имени параметра — всё открывать, везде менять, всё пересохранять. Это обычно недолго, но очень выматывающая рутина.
У меня так с панельными радиаторами было. Пока писал видео и инструкцию, внёс пару десятков корректировок, бесило это очень сильно.
В итоге я искал вариант, как всё же оставить один файл, но засунуть в него всё. Искать было тяжело, потому что думал я об этом после чтения курса, для которого приходится вставать в полвосьмого. Дочь не хочет засыпать в десять, обычно ближе к двенадцати, так что голова варит не очень.
Но я всё же придумал способ после очередной попытке уложить ребёнка. Рассказал ей про теремок, про колобка, пару стишков, передал матери, ушёл в другую комнату, и появилась идея. Как она связана со сказками? Никак, просто так написал.
В общем, решил сделать вот как. Длинные боковые части меняются слабо, там всего два варианта. Поэтому их делаю по классике. Делаю два полых элемента, привязываю к двум парам опорных плоскостей толщиной, как у конвектора. Каждому полому элементу своя пара плоскостей. Далее, если нужно вырезать кусок корпуса, то двигаю плоскости так, чтобы полый элемент пересекал стенку конвектора. Появляется дырка.
Делаю очередной внутрипольный конвектор. Это вроде пятый бренд, которому их делаю, и каждый раз одна и та же беда, вернее, две беды: решётка конвектора и вырезы на боковинах.
Первая беда
Когда я делал свои первые конвекторы, это были Техно, я хотел делать хорошо, я хотел делать красиво. Ну я и сделал — заебенил решётку как в реале, массивом. А там их не одна, обычно есть продольная решётка и поперечная. То есть это два массива.
Очевидно, что у такого подхода есть свои плюсы: конвектор выглядит, как в натуре, и у решетки можно менять цвет так же, как оно есть в жизни. Это может быть полезно, если архитекторы будут делать визуал помещений.
Минусы, конечно, тоже есть. Массивы медленно работают. У некоторых людей от такой красоты может отвалиться жопа. Ну и было неожиданно, когда узнал, что такие конвекторы могут ставить в многоэтажках.
Я всё же думал, что это история про всякую коммерцию на первых этажах зданий и коттеджи. В них такая геометрия не стала бы прям уж совсем кошмаром, так как конвекторов было бы не очень много.
Поэтому со следующей разработки для другого заказчика сменил подход. Решетку стал делать не массивом, а моделирующей штриховкой. Выглядело, конечно, далеко не так симпатично, как массивом, но зато конвектор стал быстрее реагировать на изменение параметров, размер файла тоже уменьшился.
Но появилась и проблема. У моделирующей штриховки есть цвет, но это линии, у них нет объёма, поэтому задавать цвет становится сложно. Чаще всего у производителей есть 4-5 стандартных цветов, отобразить их штриховкой не очень получается. В итоге проще вообще ничего такого не выдумывать, делать линии черными, а условную геометрию решётки — полупрозрачной.
На этом и остановился в итоге.
Вторая беда
Отверстия эти в корпусах всегда — головная боль. Теплообменники разные, то трубы в одной вертикальной, то в одной горизонтальной плоскостях. То эти отверстия круглые, то прямоугольные. То одно большое, то несколько рядом. Каждый раз всё по-разному. Каждый. Сука. Раз.
Причём в России по факту едва ли наберётся десяток заводов, которые делают эти самые конвекторы. В целом, кажется, что это максимально простое изделие, но всё равно делают их несколько заводов, а потом бренды продают одно и то же под разными марками.
Ну так не мучайте меня, сделайте просто все отверстия прямоугольными, без этой вашей вариативности, а.
В этот раз опять та же ерунда. Отверстия меняются в зависимости от расположения труб и ширины конвектора. Самый простой вариант — сделать отдельное семейство для каждой ширины конвектора, ещё и по высоте поделить на отдельные файлы, если меняется ориентация труб.
Но мне так делать очень не хотелось. Потому что это всегда выливается в необходимость вносить правки в кучу файлов. Забыл какую-то мелочь, да даже тупо опечатался в имени параметра — всё открывать, везде менять, всё пересохранять. Это обычно недолго, но очень выматывающая рутина.
У меня так с панельными радиаторами было. Пока писал видео и инструкцию, внёс пару десятков корректировок, бесило это очень сильно.
В итоге я искал вариант, как всё же оставить один файл, но засунуть в него всё. Искать было тяжело, потому что думал я об этом после чтения курса, для которого приходится вставать в полвосьмого. Дочь не хочет засыпать в десять, обычно ближе к двенадцати, так что голова варит не очень.
Но я всё же придумал способ после очередной попытке уложить ребёнка. Рассказал ей про теремок, про колобка, пару стишков, передал матери, ушёл в другую комнату, и появилась идея. Как она связана со сказками? Никак, просто так написал.
В общем, решил сделать вот как. Длинные боковые части меняются слабо, там всего два варианта. Поэтому их делаю по классике. Делаю два полых элемента, привязываю к двум парам опорных плоскостей толщиной, как у конвектора. Каждому полому элементу своя пара плоскостей. Далее, если нужно вырезать кусок корпуса, то двигаю плоскости так, чтобы полый элемент пересекал стенку конвектора. Появляется дырка.
👍10
Когда нужно переключить дырку — отодвигаю одну пару плоскостей и придвигаю другую. В итоге они вот так меняют друг друга и формируют дырочки. Другое дело — торцы. Во внутрипольном конвектора торец — всегда лютый пиздец.
Поэтому сделал торец вложенным семейством. Да, увеличит размер файла, неприятно, но вообще-то похеру. Потому что у меня там шесть вариантов отверстий, а торца два. Если делать всё это в семействе, то придётся делать всё два раза, плодить плоскости и всё такое. Я подумал, что такого геморроя мне не надо, а заказ срочный, надо результат делать. Поэтому решение считаю приемлемым.
Но главное тут не это, а то, как режу дырки. Я решил, что параметризировать это слишком трудоёмко и сильно повышает вероятность ошибиться. Поэтому сделал просто: в семействе есть геометрия торца и все шесть вариантов дырок полыми выдавливаниями. Вот так тупо, без всяких параметров, без всего: только опорные плоскости и заблокированные размерами эскизы.
У каждого выдавливания управляю длиной через отдельный параметр. Когда условие выполняется, то полое выдавливание удлиняется и пересекает геометрию торца — появляется дырка. Когда не выполняется, то укорачивается и не пересекает, зато удлиняется другое выдавливание и снова появляется дырка, но уже другой формы.
Замоделить такое получилось довольно быстро, я пост этот дольше уже пишу. Работает хорошо, но да, это вложенка. Ну ничего, переживу.
Возможно, вам тоже где-то такое пригодится. Ещё там придумал, что делать с окантовкой и её цветов, так как обычно она тоже совпадает по цвету с решёткой , и там тоже несколько стандартных вариантов. Если эта запись наберёт 30 пальцев вверх, расскажу, что придумал. Байт на реакты, да, ребята.
На самом деле, вспомнил об этом, когда уже дописывал пост, а он и так большой, поделится на два. Устал уже писать, поэтому давайте в другой раз, если байт на реакты сработает 😈
Поэтому сделал торец вложенным семейством. Да, увеличит размер файла, неприятно, но вообще-то похеру. Потому что у меня там шесть вариантов отверстий, а торца два. Если делать всё это в семействе, то придётся делать всё два раза, плодить плоскости и всё такое. Я подумал, что такого геморроя мне не надо, а заказ срочный, надо результат делать. Поэтому решение считаю приемлемым.
Но главное тут не это, а то, как режу дырки. Я решил, что параметризировать это слишком трудоёмко и сильно повышает вероятность ошибиться. Поэтому сделал просто: в семействе есть геометрия торца и все шесть вариантов дырок полыми выдавливаниями. Вот так тупо, без всяких параметров, без всего: только опорные плоскости и заблокированные размерами эскизы.
У каждого выдавливания управляю длиной через отдельный параметр. Когда условие выполняется, то полое выдавливание удлиняется и пересекает геометрию торца — появляется дырка. Когда не выполняется, то укорачивается и не пересекает, зато удлиняется другое выдавливание и снова появляется дырка, но уже другой формы.
Замоделить такое получилось довольно быстро, я пост этот дольше уже пишу. Работает хорошо, но да, это вложенка. Ну ничего, переживу.
Возможно, вам тоже где-то такое пригодится. Ещё там придумал, что делать с окантовкой и её цветов, так как обычно она тоже совпадает по цвету с решёткой , и там тоже несколько стандартных вариантов. Если эта запись наберёт 30 пальцев вверх, расскажу, что придумал. Байт на реакты, да, ребята.
На самом деле, вспомнил об этом, когда уже дописывал пост, а он и так большой, поделится на два. Устал уже писать, поэтому давайте в другой раз, если байт на реакты сработает 😈
Блог Вадима Муратова
Библиотека: стальные панельные радиаторы — Блог Вадима Муратова
Версия Revit — 2019
👍25🔥2
Чем заняться, пока висит Динамо, генерируя очередные данные для таблицы выбора?
Можно послушать живое выступление группы Glass Beams.
https://youtu.be/E4X56wIOZns
Можно послушать живое выступление группы Glass Beams.
https://youtu.be/E4X56wIOZns
YouTube
Glass Beams - Full Performance (Live on KEXP)
https://KEXP.ORG presents Glass Beams performing live in the KEXP studio. Recorded May 21, 2024.
Songs:
Mirage 00:30
Mahal 06:26
Orb 09:49
Rattlesnake 15:21
Glass Beams - Bass, Guitar, Drums & Synth
Host: Jewel Loree
KEXP Audio Engineer: Kevin Suggs
Mixing…
Songs:
Mirage 00:30
Mahal 06:26
Orb 09:49
Rattlesnake 15:21
Glass Beams - Bass, Guitar, Drums & Synth
Host: Jewel Loree
KEXP Audio Engineer: Kevin Suggs
Mixing…
👍4