Antoni

Ответы в темах

Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Автор
    Сообщения
  • #8151 Score: 1
    Antoni
    Участник
    1 pt

    Нашел решение. Нужно скрывать не саму группу, а элементы, которые в нее входят.

    #Получение элементов на виде
    def getEl(view):
    return FilteredElementCollector(doc,view.Id).ToElements()
    doc = DocumentManager.Instance.CurrentDBDocument
    uiapp = DocumentManager.Instance.CurrentUIApplication
    app = uiapp.Application

    views =  FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Views).ToElements()
    #Фильтруем виды
    sortViews = [x for x in views if “Армирование” in x.Name and “См-” in x.Name]

    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 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)
    #Получение идентификаторов группы
    ids = [g.GetMemberIds() for g in els]
    ids = list(itertools.chain(*ids[:]))
    iels =  List[ElementId](ids)
    if iels:
    view.HideElements(iels)
    TransactionManager.Instance.TransactionTaskDone()

Просмотр 1 сообщения - с 1 по 1 (всего 1)