Oleg

Ответы в темах

Просмотр 15 сообщений - с 1 по 15 (из 21 всего)
  • Автор
    Сообщения
  • #5551 Score: 3
    Oleg
    Участник
    28 pts

    Можете попробовать так:

    OUT=('{}'.format(i) for i in IN[0])

    #7244 Score: 3
    Oleg
    Участник
    28 pts

    Просьба поделиться командами для извлечения содержимого из Текстовых примечаний и внесения нового содержимого в имеющиеся в проекте.

    Несмотря на язык приложения, получить текст можно через python таким образом (в этом примере я получил текст, который выделил):

    А изменить выделенный текст на новый получилось таким способом:

    #5514 Score: 2
    Oleg
    Участник
    28 pts

    попробуйте так:

    OUT = [str(i) for i in IN[0]]

    #7237 Score: 2
    Oleg
    Участник
    28 pts

    Можно с помощью словарика провернуть, например:

    #5553 Score: 2
    Oleg
    Участник
    28 pts

    Вы можете воспользоваться встроенной функцией пайтона – enumerate(), и тогда не нужен range

    #6311 Score: 1
    Oleg
    Участник
    28 pts

    Этот код работает только с двумя частями, видимо. У тебя в видео будто просто две стены, не взорванная на части.
    Если попробовать запихнуть множество частей, то ничего не выйдет (может, потребуется проверка на принадлежность частей к одной стене, чтобы эти части не пытались сами с собой соединяться).
    Но у автора этого топика был вопрос именно как соединить две части, поэтому всё работает корректно в этом случае.

    вот пруф)

    View post on imgur.com

    #5534 Score: 1
    Oleg
    Участник
    28 pts

    Я стараюсь ставить такой переключатель в позицию “Значения могут изменяться по экземплярам группы”:

    В этом случае, значение параметра может быть различным для каждого экземпляра группы.

    Но это можно сделать не для всех типов данных(например, для типа данных Длина, Число, Целое, Да/Нет и ещё несколько – нельзя такой переключатель выставить)

    #6653 Score: 1
    Oleg
    Участник
    28 pts

    Как вариант:

    После чего, получаем выборку со всеми параметрами из excel для интересующих элементов Revit, и с ней уже работаем:

    #5537 Score: 1
    Oleg
    Участник
    28 pts

    Тоже заметил, что если помещение сложной формы (например, Г-образные), то “цепляются” ещё и другие помещения, которые попадают в bounding box. Я фильтрую помещения через ноду GetSurroundingElements, а затем полученные помещения дополнительно проверяю на пересечения нодой Geometry.DoesIntersect. Выглядит это так (на примере поиска стен определенного типа):

     

    Решил эту проблему, возможно, несколько по-колхозному, но вроде как работает

    #6666 Score: 1
    Oleg
    Участник
    28 pts

    С нодой ReadExcel из пакета BumbleBee получилось вот так:


    и сам код, не очень красивый вышел, правда:

    #5566 Score: 1
    Oleg
    Участник
    28 pts

    тогда используйте логические операторы ‘and’ или ‘or’.

    обозначьте переменную (чтоб не писать длинные строки), например:

    name = UnwrapElement(i).Category.Name

    и потом уже

    if name == 'Стены' or name == 'Окна':

    ….

     

    #7266 Score: 1
    Oleg
    Участник
    28 pts

    Ну если нужно получить текст из нескольких элементов, то можно вот так:

     

    #5583 Score: 1
    Oleg
    Участник
    28 pts

    Вот так получилось:

    #7270 Score: 1
    Oleg
    Участник
    28 pts

    Не хватает ссылки на язык запросов LINQ. Попробуйте так:


    import clr
    clr.AddReference("RevitAPI")
    import Autodesk
    from Autodesk.Revit.DB import *
    clr.AddReference("RevitServices")
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    from RevitServices.Transactions import TransactionManager
    import System
    clr.AddReference("System.Core")
    clr.ImportExtensions(System.Linq)
    doc = DocumentManager.Instance.CurrentDBDocument
    uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
    # Start Transaction
    TransactionManager.Instance.EnsureInTransaction(doc)
    elId = uidoc.Selection.GetElementIds();
    el = (doc.GetElement(elId.FirstOrDefault()))
    newText = "Примечание"
    el.Text = newText
    # End Transaction
    TransactionManager.Instance.TransactionTaskDone()
    OUT = el.Text

    Напомню, что этот скрипт для единичного выделенного текстового элемента.

    #5992 Score: 1
    Oleg
    Участник
    28 pts

    Наверное, имелось ввиду инструмент Соединить из Revit?

    Если да, то Почитайте эту тему

    Автоматизация команд из блока. Revit – Изменить – Геометрия

Просмотр 15 сообщений - с 1 по 15 (из 21 всего)