AdaptiveComponent.ByPoints в Python Node
Главная › Форумы › Python › Помогите с питон кодом › AdaptiveComponent.ByPoints в Python Node
- В этой теме 4 ответа, 2 участника, последнее обновление 6 лет, 9 месяцев назад сделано
Иван.
-
АвторСообщения
-
Добрый день!
Пытаюсь сделать расстановку адаптивных элементов по 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, то он мне прорабатывает два варианта. Я могу сделать, чтобы он выводит ошибку, но изначально хочется, чтобы скрипт был без желтых нодов:)
Спасибо!
1. Если из динамо получаем ревитовские объекты, то надо помнить, что они “обернуты” в фантики от Динамо. Надо их “развернуть”, поскольку “родные” методы на завернутые элементы работать не будут. Для этого есть Unwrap
2. Я бы хотел посмотреть, какой же всетаки список на входе. Возможно, структура списка вложенная, поэтому и ругается. Если список одномерный, то должно отработать.
Примечание:
Списки могут содержать любую информацию, в том числе и объекты и даже функции. У нас не Питон, а АйронПитон.К сожалению, я пробовал и менять структуру, и разворачивать элементы (хотя это не ревитовские точки, а сгенерированные в Dynamo), но он все равно просит у меня Array.
И списки то могу, если мы говорим про list, а вот array могут только цифровые значения. Такую информацию я узнал здесь . Возможно, я что-то путаю..
Часть скрипта и адаптивное семейство прилагаю :
https://drive.google.com/open?id=1WZUnNzeJUx-fQCla21KkNaRbf3VfNEdr
Поупражнялся немного. Взял другой подход вообще.
Главное, работает.
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Спасибо!
Знал, что через API это должно адекватнее работать, но самостоятельно пока не мог реализовать! Казалось бы, через RevitNodes должно работать.. и вот я уже в шаге от решения проблема, нужно всего лишь пошаманить с форматом данных:)..
Еще раз благодарю за отзывчивость:)
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.