Dynamo – Русский – только для чтения
Раздел для программистов и специалистов, использующих Dynamo
отмена
Отображаются результаты для 
Показать  только  | Вместо этого искать 
Вы имели в виду: 

Dynamo сортировка списков для автопереименования листов

2 ОТВЕТ 2
РЕШЕНО
Ответить
Сообщение 1 из 3
Anonymous
909 просмотров, 2 ответов

Dynamo сортировка списков для автопереименования листов

Добрый день! Такой вот вопрос встал колом, нужен был скрипт для автопереименования листов. Нашел скрипт Александра Попова, отличная работа, благодарен ему, но его нужно адаптировать под переименование большого количества листов находящихся в разных сборках. Пока что процесс происходит как на картинке ниже) У кого есть идеи как изменить принцип сортировки? Прилагаю код сортировки и перенумерации: 

 

list2=[]    
for view in views:
    number = view.get_Parameter(BuiltInParameter.SHEET_NUMBER).AsString()
    list2.append([view,number])
list2 = sorted(list2, key=itemgetter(1))    
##########################################################################
#--------------------ПЕРЕНУМЕРАЦИЯ ЛИСТОВ---------------------------------
##########################################################################
TransactionManager.Instance.EnsureInTransaction(doc)
list=[]
for view1 in list2:
    view = view1[0]
    try:
        new = prefix+str(start)+suffix
        view.get_Parameter(BuiltInParameter.SHEET_NUMBER).Set(new)
        list.append(view)
    except:
        a=0
    start=start+1    
TransactionManager.Instance.TransactionTaskDone()

 

В программировании я мало понимаю, заранее спасибо!

Теги (3)
2 ОТВЕТ 2
Сообщение 2 из 3
YaroslavKalyuzha
в ответ: Anonymous

Этот код сортирует листы по номерам, которые были до перенумерации, и затем присваивает новые номера. Можно попробовать вместо  строк:

 list2.append([view,number])
list2 = sorted(list2, key=itemgetter(1))

написать так:

	if view.IsAssemblyView:
		assemblyName = view.get_Parameter(BuiltInParameter.SHEET_ASSEMBLY_NAME).AsString()
	else:
		assemblyName = ""
	list2.append([view,assemblyName,number])
list2 = sorted(list2, key=itemgetter(1,2)) 

Не уверен, что результат удовлетворит все Ваши нужды. Нужна более детальная информации о требуемом результате и файл rvt с листами для тестов.

Yaroslav Kalyuzha / Ярослав Калюжа
BIM-manager / BIM-менеджер
Facebook | VK
Expert Elite Member
Находите сообщения полезными? Поставьте Нравится (Like) этим сообщениям!
На ваш вопрос успешно ответили? Нажмите кнопку 'Утвердить решение'

Сообщение 3 из 3
Anonymous
в ответ: YaroslavKalyuzha

Заработало) спасибо! осталось разобраться как именно заработало

Не нашли то, что искали? Задайте вопросы в сообществе или поделитесь своими знаниями.

Новая тема  

Autodesk Design & Make Report