Результаты поиска для 'list'
-
Результаты поиска
-
Доброго времени суток, коллеги!
Не так давно стал изучать способы автоматизации revit. Сейчас хотелось бы разобраться больше с принципами работы API и для начала с фильтрами.
Имеется коллекция полученная из FIlteredElementCollection в которую входят совершенно разные элементы: стены, полы и колонны, к примеру… Задача из всей этой коллекции получить список параметров который применим ко всем этим элементам, а затем фильтровать по ним, например оставить в коллекции только элементы которые располагаются на 2 ом этаже и в поле марка имеют значение “ololo”.Подскажите как это можно реализовать?
uidoc = __revit__.ActiveUIDocument doc = uidoc.Document collector = FilteredElementCollector(doc) list_of_categories = [ ElementCategoryFilter(BuiltInCategory.OST_StructuralColumns), ElementCategoryFilter(BuiltInCategory.OST_Walls), ElementCategoryFilter(BuiltInCategory.OST_Floors) ] logical_filter = LogicalOrFilter(list_of_categories) collector.WherePasses(logical_filter)
Коллеги добрый день. Помогите пожалуйста. Почему ругается? Почему не определена? Вот сираница из API: http://www.revitapidocs.com/2016/17966565-84c8-9dc3-dc0d-62cb6c896624.htm
вот картинка:
вот код:
reset = IN[2]
outList = []
objGeom1 = U(IN[0]).get_Geometry(Options())#.GeometryInstance
for elem2 in IN[1]:
objGeom2 = U(elem2).get_Geometry(Options())
ex = ExecuteBooleanOperationModifyingOriginalSolid(objGeom1 , objGeom2, BooleanOperationsType.Union)Столкнулся со следующей проблемой: не могу через API скрыть определенные элементы , а именно группы модели. Почему стоит такое ограничение и как его можно обойти?
Вот элементы, которые нельзя скрывать судя по результатам метода Element.CanBeHidden(view).
Элементы
Их имена:
Значение метода:
Ну и понятная ошибка при попытке скрыть группу модели:
И кусочек рабочего кода:
#Получение элементов на виде
def getEl(view):
return FilteredElementCollector(doc,view.Id).ToElements()
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Applicationviews = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Views).ToElements()
#Фильтруем виды
sortViews = [x for x in views if "Армирование" in x.Name and "См-4.0-5" in x.Name]test = []
TransactionManager.Instance.EnsureInTransaction(doc)
for view in sortViews:
noHidden = []
els = []
elsId = []
#Получам список марок групп, которые нельзя скрывать
for id in re.finditer("См-", view.Name):
noHidden.append(view.Name[id.start():id.end()+6].rstrip())
#Получение списка элементов, которые нужно скрыть
for el in getEl(view):
if not el.CanBeHidden(view):
test.append(el.CanBeHidden(view))
if el.GetType().Name == "Group" and "(арматура)" in el.Name and "См-" in el.Name:
els.append(el)
for i in noHidden:
for x in els[:]:
if i in x.Name:
els.remove(x)
elsId = [x.Id for x in els]
iels = List[ElementId](elsId)
view.HideElements(iels)
TransactionManager.Instance.TransactionTaskDone()Проблема такая: При использовании в питоне функций
List.SortByKey и List.GroupByKey , питон помещает массивы в библиотеку и у меня ничего не получается с ней сделать. Ни вызвать элемент по индексу или ключу. Ничего
Выдает такие ошибки:
1)AttributeError: ‘Dictionary[object, object]’ object has no attribute ‘clear’
2) File “<string>”, line 43, in <module>
KeyError: The given key was not present in the dictionary.Полагаю, что ничего криминального, просто я чего-то не понимаю о работе библиотек. Кто что может подсказать ?
Текущая задача – удаление всех наборов листов (ViewSheetSet). Подглядел код в нодах сторонних пакетов и пытаюсь выполнить задачу.
Текущий мой код удаляет только 1 из Наборов. А нужно, чтобы удалял все. Помогите пожалуйста исправить ошибку.
import clr
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
clr.AddReference("RevitAPI")
from Autodesk.Revit.DB import *
fec = FilteredElementCollector(doc).OfClass(ViewSheetSet).GetElementIterator()
SetList=[]
fec.Reset()
for f in fec:
SetList = f
# Для отчетности:
OUT = SetList.Name
TransactionManager.Instance.EnsureInTransaction(doc)
doc.Delete(SetList.Id)
TransactionManager.Instance.TransactionTaskDone()P.S. Пытался решить задачу нодами: получить элементы по категории и удалить их. Но споткнулся в самом начале – не смог найти нужное имя категории: безуспешно пробовал ViewSheetSet и OST_ViewSheetSet.
Тема: Сортировка листов
Всем доброго времени суток! Помогите, пожалуйста, разобраться с сортировкой листов. В данном скрипте я хочу взять статическое давление с каждой системы воздуховодов, взять сумму потерь давления всех воздухораспределителей конкретной системы, просуммировать и слить в спецификацию. Столкнулся с тем, что при “List.GroupByFunction” получаются разный порядок систем для разных категорий (на скриншоте отметил). Нужно отсортировать листы так, чтобы порядок систем (и соответствующих значений) был везде одинаковый (например в алфавитном порядке). Заранее спасибо!