Revit API Change Groups в Python - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь написать скрипт, который меняет группы с одного типа на другой.По сути, я хочу выполнить пользовательский интерфейс, эквивалентный щелчку правой кнопкой мыши по типу группы, выбору всех экземпляров и изменению типа.

Я могу использовать что-то вроде приведенного ниже кода, но это занимает намного больше времени, чем метод пользовательского интерфейса, когда много групп (например, 270 или около того).Что занимает менее 5 минут в пользовательском интерфейсе, примерно 20 минут или более программно.

Есть ли лучший способ сделать это так, чтобы он не занимал так много времени, как метод пользовательского интерфейса?

Вот код, который я использую для тестирования в Revit Python Shell:

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

uidoc = __revit__.ActiveUIDocument
doc = uidoc.Document
sel = uidoc.Selection.GetElementIds()

t = Transaction(doc, "Test")
t.Start()

g1 = doc.GetElement(sel[0])
g2 = doc.GetElement(sel[1])

for group in g2.Groups:
    group.GroupType = g1

t.Commit()

1 Ответ

0 голосов
/ 20 мая 2018

Я могу ошибаться, но я думаю, что это ваш единственный вариант.Существуют утилиты для перемещения нескольких объектов одновременно, но я не знаю ни одного способа изменить тип нескольких объектов одновременно.Revit API не завершен, поэтому есть некоторые вещи, которые вы не можете сделать в python / c #, которые Revit может делать сам.

Существует инструмент для копирования нескольких элементов одновременно (ElementTranformUtils.CopyElements);хотя для этого потребуется удалить все существующие семьи, прежде чем копировать их.Это, вероятно, не стоит, и я не уверен, что это будет быстрее.

Из-за того, что группы большие, с ними просто не получается работать в общем, что не помогает.Я работал над сценарием, который будет редактировать группы для проверки элементов внутри группы.Это повлекло за собой разгруппировку группы, редактирование элементов, перегруппировку, а затем изменение всех существующих групп на его новый тип.Потребовалось несколько часов, чтобы запустить проект с приличным количеством групп.

...