Возможно ли подсчитать в авторежиме (получить спецификацию) количество одинаковых элементов в группе из однообразных последовательностей узлов?
Стандартной последовательностью узлов, кирпич со швом, замоделил на фасадах обрамление оконных проемов, теперь хочу получить спецификацию на это обрамление с указанием потребности в кирпиче на обрамление. В спецификациях из шаблонов сообщества не нашел нужного поля. Для отдельно взятой последовательности узлов, количество вхождений базового элемента отображается.
используется REVIT2016.
Решено! Перейти к решению.
Решено: Extraneous. Перейти к решению.
Решено: alexandr.tsivilev. Перейти к решению.
@igoshkindv Добрый день!
Накидал легкий скрипт на Dynamo для последовательности узлов.
Как работает : скрипт ищет все элементы узлов,берет у них параметр массива (ну или другой параметр,который указан для количества в вашем семействе,можете сами поправить) и прописывает это количество в параметр "Комментарий"
Далее можете "Комментарий" использовать в спецификации.
Теперь еще хотелось бы инструкций по его применению.
Во вкладке REVIT "Настройки" нет иконки DYNAMO, запускать вручную? Само DYNAMO стоит (есть в списке установленных программ и запускается).
Стоят версии DYNAMO 073 и 082, при открытии вашего скрипта предлагает обновить, это бесплатно? Сам REVIT2016 имеет бессрочную лицензию, подписки уже нет.
Да,можете обновить до актуальной версии.Это бесплатно.
Возник еще вопрос, поле "комментарий" имеет неактивную кнопку "вычислять итоги", если использовать в скрипте, для вывода, поле "стоимость" ничего другого не сломается?
"Вычислять итоги" параметр "Комментарий" не будет, т.к. он является текстовым.
В принципе,можно создать любой другой числовой параметр и заставить dynamo прописывать данные туда.
Тогда "Вычислять итоги" сработает.
Как вариант - то же самое, но без Dynamo.
public void DetailLineCountCalculate() { Document doc = this.ActiveUIDocument.Document; List<DetailLine> dls = new FilteredElementCollector(doc) .WhereElementIsNotElementType() .OfClass(typeof(CurveElement)) .OfCategory(BuiltInCategory.OST_DetailComponents) .Cast<DetailLine>() .ToList(); int s = 0, err = 0; using (Transaction t = new Transaction(doc)) { t.Start("Последовательность компонентов узлов"); foreach(DetailLine dl in dls) { try { int count = dl.get_Parameter(BuiltInParameter.REPEATING_DETAIL_NUMBER).AsInteger(); dl.LookupParameter("Комментарии").Set(count.ToString()); s++; } catch { err++; } } t.Commit(); } TaskDialog.Show("Отчет", "Успешно обработано: " + s + ", ошибок: " + err); }
Чтобы использовать не "Комментарий", а числовой параметр, для начала создайте этот параметр (тип данных "Целое", по экземпляру, для ""Элементов узлов)
Далее измените вот эту строку:
dl.LookupParameter("Комментарии").Set(count.ToString());
На вот такую:
dl.LookupParameter("Параметр проекта с типом данных ЦЕЛОЕ").Set(count);
Имя в скобках, естественно, замените на имя созданного параметра.
Александр Зуев / Alexander Zuev
In BIM we trust
Facebook | VK | Telegram
Шаблон и обучение Revit КЖ/КМ
По выложенному макросу, я так понимаю что его нужно доработать: добавить в семейство некий числовой параметр и внести его в код?
В исходном варианте он считает просто количество включений последовательностей.
Нет, нужно добавлять не в семейство, а в Параметры проекта.
"считает просто количество включений последовательностей" - вам ведь как раз это и надо, или я что-то не понял?
Александр Зуев / Alexander Zuev
In BIM we trust
Facebook | VK | Telegram
Шаблон и обучение Revit КЖ/КМ
Не нашли то, что искали? Задайте вопросы в сообществе или поделитесь своими знаниями.