AdaptiveComponent.ByPoints в Python Node

Главная Форумы Python Помогите с питон кодом AdaptiveComponent.ByPoints в Python Node

  • В этой теме 4 ответа, 2 участника, последнее обновление 7 лет назад сделано Иван.
Просмотр 5 сообщений - с 1 по 5 (из 5 всего)
  • Автор
    Сообщения
  • #7126 Score: 0
    Иван
    Участник
    4 pts

    Добрый день!

    Пытаюсь сделать расстановку адаптивных элементов по  4 точкам через Python. Подключил библиотеки RevitNodes,в аргументы подаю  список из четырех точек и тип семейства, все как просит у нас DS.

    import clr
    clr.AddReference(‘ProtoGeometry’)
    clr.AddReference(‘RevitNodes’)
    from Autodesk.DesignScript.Geometry import *
    import Revit
    from Revit.Elements import *

    clr.AddReference(‘DSCoreNodes’)
    import DSCore
    from DSCore import *

    p=IN[0]
    FamType=IN[1]

    AdaptiveComponent.ByPoints(p,FamType)

    Но, к сожалению, нод выдает следующую ошибку:

    “TypeError: expected Array[Array[Point]], got list ”

    Он просит вложенный массив точек, а я подаю ему список. Но в пайтоне массивы (Array) , как я успел вычитать, могут быть в формате  int, float и double. Преобразовать точки в такой формат он не может, да это, наверняка, и не нужно.

    Подскажите, как починить этот нод?))

    P.S. Почему мне нужно именно Python, потому что я хочу прописать условие, чтобы при True он мне строил адаптивные компоненты, а при False – другие элементы. Если я делаю это в пределах DS, то он мне прорабатывает два варианта. Я могу сделать, чтобы он выводит ошибку, но изначально хочется, чтобы скрипт был без желтых нодов:)

    Спасибо!

    #7129 Score: 0
    ИваСерж
    Хранитель
    134 pts

    1. Если из динамо получаем ревитовские объекты, то надо помнить, что они “обернуты” в фантики от Динамо. Надо их “развернуть”, поскольку “родные” методы на завернутые элементы работать не будут. Для этого есть Unwrap

    2. Я бы хотел посмотреть, какой же всетаки список на входе. Возможно, структура списка вложенная, поэтому и ругается. Если список одномерный, то должно отработать.

    Примечание:
    Списки могут содержать любую информацию, в том числе и объекты и даже функции. У нас не Питон, а АйронПитон.

    #7134 Score: 0
    Иван
    Участник
    4 pts

    К сожалению, я пробовал и менять структуру, и разворачивать элементы (хотя это не ревитовские точки, а сгенерированные в Dynamo), но он все равно просит у меня Array.

    И списки то могу, если мы говорим про list, а вот array могут только цифровые значения. Такую информацию я узнал здесь . Возможно, я что-то путаю..

    Часть скрипта и адаптивное семейство прилагаю :

    https://drive.google.com/open?id=1WZUnNzeJUx-fQCla21KkNaRbf3VfNEdr

    #7135 Score: 1
    ИваСерж
    Хранитель
    134 pts

    Поупражнялся немного. Взял другой подход вообще.
    Главное, работает.
    https://www.dropbox.com/s/4c8cdtb7s5qamfc/DynamoBIM_PyAdaptiveComponent_IvaSerge.zip?dl=0

    П.С. Сссылка у меня на дропбоксе. Лежит пока мне не надоест. Пожалуйста, забирайте пока не поздно.
    Забыл. “Мопед” не мой – адаптация под питон ответа по ссылке:
    https://forums.autodesk.com/t5/revit-api-forum/placing-adaptive-family/td-p/4677473

     

    #7136 Score: 0
    Иван
    Участник
    4 pts

    Спасибо!

    Знал, что через API это должно адекватнее работать, но самостоятельно пока не мог реализовать! Казалось бы, через RevitNodes должно работать.. и вот я уже в шаге от решения проблема, нужно всего лишь пошаманить с форматом данных:)..

    Еще раз благодарю за отзывчивость:)

Просмотр 5 сообщений - с 1 по 5 (из 5 всего)
  • Для ответа в этой теме необходимо авторизоваться.