Проблема с GetElementIds (), чтобы получить текущий выбор - PullRequest
1 голос
/ 28 мая 2019

У меня есть небольшой код для извлечения текущего выбора из revit, но я получаю сообщение об ошибке, в котором говорится об ожидаемом выборе, получен список [elementId]

Я также попытался передать GetElementIds (), как в API, но он говорит, что требуетсяточно 1 аргумент (0 дано)

import clr
import System
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *

clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *

clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI.Selection import *

clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager

# Import iron python packages
import sys
pyt_path = r'C:\Program Files (x86)\IronPython 2.7\Lib'
sys.path.append(pyt_path)



app = __revit__.Application
doc = __revit__.ActiveUIDocument.Document

#get current selection from Document

from Autodesk.Revit.UI import Selection
from System.Collections.Generic import List as CL

sel = CL[ElementId]()
Selected=Selection.Selection.GetElementIds()
print(len(Selected))

1 Ответ

1 голос
/ 29 мая 2019

ошибка в этой строке кода:

Selected=Selection.Selection.GetElementIds()

Вам необходимо добавить ссылку на ui, после чего вы можете использовать ее для выбора:

ui = __revit__.ActiveUIDocument
Selected=ui.Selection.GetElementIds()

Вот полный код, который выберет выбор пользователя:

import clr
clr.AddReference('RevitAPI') 
clr.AddReference('RevitAPIUI') 
app = __revit__.Application
doc = __revit__.ActiveUIDocument.Document
ui = __revit__.ActiveUIDocument

selectedElements = []
for elementId in ui.Selection.GetElementIds():
    selectedElements.Add(doc.GetElement(elementId))

for item in selectedElements:
    print item
...