Дневник Ревитчика – Telegram
Дневник Ревитчика
551 subscribers
210 photos
9 videos
2 files
49 links
Канал Вадима Муратова про рабочие будни в Ревите. Уведомления о статьях блога и новинках магазина отслеживайте на основном канале @revitblog

Сайт Муратова: muratovbim.pro
Download Telegram
# -*- coding: utf-8 -*-
from Autodesk.Revit.DB import *
from Autodesk.Revit.Exceptions import InvalidOperationException
from System.Diagnostics import Stopwatch

import clr
clr.AddReference("RevitServices")
from RevitServices.Persistence import DocumentManager

# === НАСТРОЙКИ ===
# Словарь переименований: {старое_имя: новое_имя}
RENAME_MAP = {
"Стена_1": "Несущая стена",
"Окно_Стандарт": "Окно тип A",
# Добавьте сюда свои пары
}

# === ФУНКЦИЯ ПЕРЕИМЕНОВАНИЯ ===
def rename_nested_families_in_family_doc(fam_doc):
"""Переименовывает вложенные семейства в одном семействе."""
try:
collector = FilteredElementCollector(fam_doc)
nested_fams = collector.OfClass(Family).ToElements()

renamed_count = 0
for fam in nested_fams:
old_name = fam.Name
if old_name in RENAME_MAP:
new_name = RENAME_MAP[old_name]
try:
fam.Name = new_name
renamed_count += 1
print(" В семействе '{}': '{}' → '{}'".format(
fam_doc.Title, old_name, new_name))
except Exception as e:
print(" Ошибка при переименовании '{}' в '{}': {}".format(
old_name, fam_doc.Title, str(e)))

return renamed_count
except Exception as ex:
print("⚠️ Ошибка в документе '{}': {}".format(fam_doc.Title, str(ex)))
return 0

# === ОСНОВНОЙ СКРИПТ ===
uiapp = __revit__ # доступен в pyRevit и некоторых средах
app = uiapp.Application

# Получаем все открытые документы (включая семейства)
open_docs = [doc for doc in app.Documents if doc.IsFamilyDocument and not doc.IsLinked]

if not open_docs:
print(" Нет открытых семейств для обработки.")
else:
print("🔄 Найдено {} открытых семейств(а).".format(len(open_docs)))
total_renamed = 0

for doc in open_docs:
try:
# Открываем транзакцию для каждого документа
with Transaction(doc, "Переименование вложенных семейств") as t:
t.Start()
count = rename_nested_families_in_family_doc(doc)
total_renamed += count
t.Commit()
except InvalidOperationException as ex:
print("🚫 Невозможно начать транзакцию в '{}': {}".format(doc.Title, str(ex)))
except Exception as ex:
print("💥 Неожиданная ошибка в '{}': {}".format(doc.Title, str(ex)))

print("\n Завершено. Всего переименовано вложенных семейств: {}".format(total_renamed))


Установите Ревит Пайтон Шелл, в него вставляйте код и запускайте. Можно сохранить в формате .py и потом просто открывать в РПШ.
Для хейтеров.
🔥12😍3🗿2
Есть у Ренги один неоспоримый плюс.

Они выбрали охуительный оттенок серого цвета для интерфейса программы.

Жаль, не все решения по интерфейсу настолько же удачные.

Выбрал цвет для МодПлюса в Ревите в стиле Ренги 🤷‍♂️
👌3😁2🤷‍♂1
Впервые ещё до релиза библиотеки в Телеграме собираюсь выпускать уже второе обновление библиотеки по горячим следам 🤪
1🔥1
Ищу пару человек, которые шарят в работе с МГЭ.

Работать с экспертизой не надо, будем заниматься общественно полезным бесплатным трудом.

Я хочу сделать общедоступный бесплатный ФОП по требованиям МГЭ.

Соответственно, для этого нужны люди, которые работали с этими параметрами и понимают, как это можно сделать хорошо.

А потом выпустим в общий доступ бесплатно.

Если там ещё какие пресеты для экспорта в IFC можно сделать или типа того, то тоже можно покумекать.

Я с этим всем не работал, поэтому ищу специалистов. Буду координировать работу и говорить, что вот так красиво, так делаем, а вот так фу, не будем делать.

А вы будете в поте лица трудиться, делать общество лучше.

Если расклад устраивает, пишите мне.

На фото я в охуенной кофте из Лайма, худи — моя единственная слабость в одежде. Но я его не купил, потому что у меня и так много худи, а это стоит семь тысяч, на него липнет весь мусор, покупка может быть неразумной. Но надпись пиздатая, прагматизм.

Вот нам надо будет сделать тоже хорошо, как эта кофта сидит на мне.
🔥17😁72
Интересный косяк в Ревите

У меня в семействе есть формула, если «Проекция длины врезки» равно 6,096 мм, то есть длине по умолчанию, на которую врезка входит в прямую грань, то делать диаметр магистрали равным 1 мм.

Но вот ситуация, значение в параметре равно 6,096, но как будто не совсем. Отсюда имеем формально воротниковую врезку, но на какой-то дикий диаметр.

Решил проблему добавлением округления.

А ещё интересно, что тип данных у этого параметра не Длина, а Длина листа. Причём этого типа данных нет во встроенных, которые видны пользователю. То есть я даже единиц накинуть не могу.

Дополнение! Такая ситуация возникает, когда между врезкой и магистралью есть отклонение от ровного угла 90°.
🤔2👍1
Эти суки должны гореть в аду.
💯23😁18😱4💔3🙊2
пишу статью по итогам эфиров о Ренге

это не войдёт в финальную версию, но вам покажу
😁21🔥5
То есть какая-то херня в списке есть, а Бим-моделей нет. Ясно, понятно.

Ну а я разве не трансцендентный специалист?
😁10
Прикольная залипуха: китаец меняет жесткий диск в Айфоне последней модели.

Было неожиданно, что старый диск каким-то фрезером буквально выпиливают из платы.

Вывод: ремонт явно нельзя доверять всяким сомнительным точкам без специализированного оборудования.

Видео на Ютубе, не Станисла, просто видео и титры на английском: https://youtu.be/BOyKqIugNVE
1
Самое сложное в такой простой казалось бы геометрии — диагональные части.

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

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

Думал сделать вообще без них, смысла-то от них по сути никакого, но тут уже встал вопрос принципа, типа на слабо себя взял.

А вот вырезы по углам — это не одно тело выдавливания, которое параметризировал, тут выдавливание просто квадратом. И уже после срезал углы полым сдвигом. Мне это показалось быстрее, чем параметризировать дополнительные диагонали в выдавливании, ведь в сдвиге достаточно просто кинуть параметр на катеты треугольника.
👍42
Так в дикой природе, ещё до вмешательства человека, выглядела формула для подбора количества секций трубчатого радиатора с нижним подключением с краю, по краям и по центру, по центру можно только чётное количество секций.
if(roundup(ADSK_Теплопотери / (size_lookup(LT_Секция, "Q", 1 Вт, Секция_Ширина, Секция_Глубина, Секция_Высота, Количество труб) * (Температурный напор / 70 дельта °C) ^ 1.3)) < Секция_Минимум, Секция_Минимум, 
if(roundup(ADSK_Теплопотери / (size_lookup(LT_Секция, "Q", 1 Вт, Секция_Ширина, Секция_Глубина, Секция_Высота, Количество труб) * (Температурный напор / 70 дельта °C) ^ 1.3)) > Максимум секций, Максимум секций,
if(and(Центральное подключение, roundup(roundup(ADSK_Теплопотери / (size_lookup(LT_Секция, "Q", 1 Вт, Секция_Ширина, Секция_Глубина, Секция_Высота, Количество труб) * (Температурный напор / 70 дельта °C) ^ 1.3)) / 2) - roundup(ADSK_Теплопотери / (size_lookup(LT_Секция, "Q", 1 Вт, Секция_Ширина, Секция_Глубина, Секция_Высота, Количество труб) * (Температурный напор / 70 дельта °C) ^ 1.3)) / 2 > 0), roundup(ADSK_Теплопотери / (size_lookup(LT_Секция, "Q", 1 Вт, Секция_Ширина, Секция_Глубина, Секция_Высота, Количество труб) * (Температурный напор / 70 дельта °C) ^ 1.3)) + 1,
roundup(ADSK_Теплопотери / (size_lookup(LT_Секция, "Q", 1 Вт, Секция_Ширина, Секция_Глубина, Секция_Высота, Количество труб) * (Температурный напор / 70 дельта °C) ^ 1.3)))))
😱9🔥4
Ну что, делимся итогами 2025 года.

Мой плейлист: https://music.yandex.ru/users/yamusic-my2025/playlists/6738981?ref_id=BC52D22A-5245-474D-B6C8-629055853365
🔥4
Пишу инструкции к этим семействам. Скоро они станут общественным достоянием.

Бесплатно. Аж слёза наворачивается.
🔥18😢52😁1🐳1
Ещё забавный случай был во время распродажи.

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

Вот мужики щас поймут точно, потому что вопрос «что тебе подарить» каждый раз ставит в тупик. Мужик от безысходности скинул мою библиотеку, ведь и для дела полезно будет, и ну надо же что-то ей ответить, чтобы она порадовалась, что подарит что-то мужу 😁
😁12👍11🔥7❤‍🔥2🐳1💯1