Как создать балочную систему посредством Python_а

Главная Форумы Задать вопрос Как создать балочную систему посредством Python_а

В этой теме 8 ответов, 4 участника, последнее обновление  Анатолий 4 мес., 1 неделя назад.

Просмотр 9 сообщений - с 1 по 9 (из 9 всего)
  • Автор
    Сообщения
  • #7159 Score: 0

    Анатолий
    Участник
    11 pts

    Добрый день, друзья! Обращаюсь к профессионалам. Попытался поискать возможность создания балочной ситемы в ревите посредством динамо, но, увы, подходящего нода не нашел, единственный вариант – создать балочную систему с помощью питона, в ревит апи нашел четыре метода, но знаний для правильной прописи (синтаксиса) всех необходимых вводных даных, к сожалению, не хватает. Понимаю, что прошу, возможно, немало, потому, если у кого будет возможность и желание поделиться мыслями, большая благодарность! Спасибо также Хасану Мамаеву за урок по созданию развертки крыши, из которого использовал некоторые коды питона.

    Файлик динамо https://drive.google.com/open?id=1ynaEvYXzQjQG1PDLh2ab4Qg-j27zgUkL

    #7165 Score: 0

    Анатолий
    Участник
    11 pts

    Возник вопрос по Revit API. При создании балочной системы используется четыре метода Create, но по умолчанию питон подхватывает первый, в котором надо вводить третье по счету данное Sketch Plane, это понял из того, что пытался подавать на вход данные третьего метода, в котором указывается level. Выдает ошибку и запрашивает SketchPlane. Где здесь подводный камень, что надо уточнять питону, чтобы он понял что мне нужно?

    #7192 Score: 2

    ИваСерж
    Модератор
    92 pts

    1. Методы из АПИ выбрать напрямую нельзя. “Выбор” по нормальному, называется “перезагрузка метода”. работает так: в метод по очереди запихивается объект. Если первый метод отработал с ошибкой – объект запихивается во второй метод. И так до тех пор, пока что-то не отработает. Если ни один метод не отработал правильно – выдается ошибка.

    2. Из п.1 следует, что для начала нужно привести в порядок объекты, которые подаем в метод. В приведенном на скрине скрипте я сразу вижу ошибки в типах данных, которые подаются в метод. Каждую из ошибок надо рассматривать отдельно и очень внимательно.
    2.1 список polycurve должен быть не списком, а коллекцией из .Net Я тут недавно писал о том, как преобразовать список в коллекцию.
    2.2 Level – прошу не забывать, что на входе в нод залетает “Динамовский” объект. Его надо развернуть. Для получения “чистого” объекта применяем UnwrapElement
    2.3 direct – а вот тут не знаю, что на вводе (надо смотреть скрипт). Скорее всего на вводе объект Point, а метод кушает объект ХYZ (оказывается они разные точка и этот ХУЗ не одно и то же.) . Используем банальное преобразование  ХYZ(Point.X, Point.Y, Point.Z).

    Вывод. Надо привести в порядок объекты, которые подаем в метод. Скорее всего, и дальше будут какие-то ошибки, но прежде всего надо решить очевидные проблемы.

    #7230 Score: 0

    Анатолий
    Участник
    11 pts

    Огромная благодарность, Серж! Натолкнули на нужные мысли, частично желаемое получилось, то есть создать балочную систему, не хватает только времени посидеть, разобраться полностью и написать ответ как все получилось, был загружен работой. Ошибка моя была в п. 2.2, когда анвропнул уровень, все заработало, на вводе direct можно подавать как в примере RevitAPI “0”, только тогда балочная система создается на отметке 0 данного уровня, а так вся загвоздка остается в этом пункте.

    #7838 Score: 0

    Максим
    Участник

    А можете поделиться успехами? а то я, наверное, не до конца понял суть преобразования списка в коллекцию… использую как писали в теме по синтаксису “Для создания таковых и используется List [ElementId].”.. .. получаю такую ошибку “SystemError: MakeGenericType on non-generic type”

    #7845 Score: 1

    Legantmar
    Хранитель
    440 pts

    Накидал тут, начало взял у Анатолия, а он взял у Хасана ))
    Скрипт можно скачать в соответствующем разделе.

    Ниже привожу фрагмент кода из последнего блока (без подключения необходимых библиотек, полную версию см. в разделе скачать)
    Должен корректно работать с линиями крыш расположенными в ортогональной сетке, тобишь по осям X и Y !! для ориентации балочной системы вставил проверку StartPoint и EndPoint у линий скатов (блок в центре).

    #7879 Score: 0

    Анатолий
    Участник
    11 pts

    Антон, молодец! Спасибо за скрипт и возможность покопаться в “высшей математике”. Функции как-то с трудом сейчас даются.. В 2018-й версии получил ошибку, что делать – пока что не знаю)).

    #7882 Score: 1

    Legantmar
    Хранитель
    440 pts

    Изменили NewPlane ((, теперь вот так можно:

    #7883 Score: 0

    Анатолий
    Участник
    11 pts

    Была ошибка Traceback (most recent call last):
    File “<string>”, line 67, in <module>
    File “<string>”, line 58, in BeamSystemByCurves
    Exception: The input points do not define a unique plane.
    Parameter name: point2.

    Как оказалось, причина заключалась в том, что две противоположные стороны выбранной крыши (ранее с этим файлом работал) имели подъем линий эскиза на 20 мм.

    Огромная благодарность!

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

Для ответа в этой теме необходимо авторизоваться.