import clr
clr.AddReference(‘RhinoInside.Revit’)
import RhinoInside
from RhinoInside.Revit import Revit, Convert
import RhinoInside.Revit.Convert.Geometry
clr.AddReference(‘RevitAPI’)
import Autodesk
from Autodesk.Revit.DB import RevitLinkInstance
from Autodesk.Revit.Exceptions import OperationCanceledException
clr.AddReference(‘RevitAPIUI’)
from Autodesk.Revit.UI import *
from Autodesk.Revit.UI.Selection import *
doc = Revit.ActiveDBDocument
uidoc = Revit.ActiveUIDocument
try:
elemInLinks
except:
elemInLinks = \[\]
a = None
Autodesk.Revit.DB.Reference.LinkedElementId
elemInLinks = []
lnkinst = []
if sel:
#TaskDialog.Show("Create Selection", "Select the linked elements and press Finish")
try:
#reflnk = uidoc.Selection.PickObjects(ObjectType.LinkedElement, "Select linked elements")
reflnk = uidoc.Selection.PickObjects(ObjectType.Element, "Select linked elements")
#elemInLinks = \[\]
elemIDs = \[\]
#for ref in reflnk:
counter = len(reflnk)
while counter != 0:
lnkinst.append(doc.GetElement(reflnk\[counter-1\]))
#doclnk = lnkinst.GetLinkDocument()
#elemInLink = doclnk.GetElement(ref.LinkedElementId)
#elemInLinks.append(elemInLink)
#elemIDs.append(elemInLink.Id.IntegerValue)
counter -= 1;
except:
pass
if len(elemInLinks)>1: _Elements = elemInLinks
elif len(elemInLinks) == 1: _Elements = elemInLinks[0]
В этом файле изначально у меня было управление только в Grasshopper, но спустя время добавил Human UI, и чтобы оно работа и там и здесь сделал переключатель входных данных через Meta Hopper (Enable/ Disable object). Всё работало отлично и через Human и через Grasshopper. Но … Когда я решил удалить переключатель и выделенные красным цветом ноды на скриншоте, чтобы можно было работать только через Human UI- мой файл сломался.
Место поломки :
На видео первый вариант рабочий, при нажатии на кнопку появляется меню “uidoc.Selection.PickObjects”, выбираю обьект, нажимаю готово- всё работает. Но во втором скрипте которые я переключал на видео после нажатия на кнопку выбора элемента - поле uidoc.Selection.PickObjects не появляется. Но сам функционал uidoc.Selection.PickObjects вызывается .
Обьясняю - в Revit у меня становиться активным функция выбора элемента которую я не могу закрыть/отменить/подтвердить. И вообще любой другой функционал Revit (выбрать элемент и поменять ему параметр/ создать спецификацию / вообще всё остальное) -не работает. Единственный выход из ситуации- закрыть полностью Revit через Диспетчер задач Windows и открыть обратно.
Вопрос.
- Есть ли способ выхода из этой функции через hot key?
- Какой ещё есть вариант для выбора элемента в Revit через Button Human UI
*Мне нужен элемент или его ID. Элемент нужен всегда только 1 (“Несколько”- мне не нужно.)
Мне идеально подойдет функция “Graphical Element> set one element”, если кто то знает как это сделать, буду рад если вы поделитесь этим со мной)
Кто нибудь сталкивался с подобным?
Заранее спасибо за ответ!
