Я пытаюсь вращать элементы Revit вокруг их центральных точек.Для этого мне нужно выбрать элемент Revit и найти его центральную точку, а затем создать линию с координатами в центральной точке этого элемента.
Моя лучшая идея для этого - обернуть элемент Revit.в ограничительной рамке, а затем найдите центр этой рамки.Моя проблема в том, что я не уверен, как это сделать.
Я использую pyRevit (удивительный инструмент), и я застрял на том, как обернуть выделенный элемент ограничивающим прямоугольником или получить его существующий ограничивающий прямоугольник.
Любая помощь будет принята с благодарностью!Я действительно пытаюсь изучить Revit API и понять, как все работает.Я делаю успехи, но есть много, чтобы распаковать.
def pickobject():
from Autodesk.Revit.UI.Selection import ObjectType
#define the active Revit application and document
app = __revit__.Application
doc = __revit__.ActiveUIDocument.Document
uidoc = __revit__.ActiveUIDocument
#define a transaction variable and describe the transaction
t = Transaction(doc, 'This is my new transaction')
# Begin new transaction
t.Start()
# Select an element in Revit
picked = uidoc.Selection.PickObject(ObjectType.Element, "Select something.")
### ?????????? ###
# Get bounding box of selected element.
picked_bb = BoundingBoxXYZ(picked)
# Get max and min points of bounding box.
picked_bb_max = picked_bb.Max
picked_bb_min = picked_bb.Min
# Get center point between max and min points of bounding box.
picked_bb_center = (picked_bb_max + picked_bb_min) / 2
### ?????????? ###
# Close the transaction
t.Commit()
return picked, picked_bb_center
Заранее спасибо, что взглянули на то, что у меня есть.Пожалуйста, дайте мне знать, если что-то требует дальнейших разъяснений!
edit:
@ CyrilWaechter
Я думаю, что вы правы.Использование LocationPoint, вероятно, будет иметь больше смысла.Я просмотрел скрипт, который вы связали (спасибо, кстати!), И попытался реализовать этот раздел в своем коде.
transform = doc.GetElement(picked.ElementId).GetTransform()
Я передаю ElementId через это утверждение, но я получаю сообщение об ошибке, объект "Стена"не имеет атрибута «GetTransform».Не могли бы вы помочь мне понять это?
edit 2: Спасибо @JeremyTammik и @CyrilWaechter, ваши идеи помогли мне понять, где я ошибался.Хотя я все еще чувствую, что некоторые свойства в Revit API неоднозначны, я смог заставить свой код работать должным образом.Ниже я опубликую код, который мне удалось получить.