Добрый день! Такой вот вопрос встал колом, нужен был скрипт для автопереименования листов. Нашел скрипт Александра Попова, отличная работа, благодарен ему, но его нужно адаптировать под переименование большого количества листов находящихся в разных сборках. Пока что процесс происходит как на картинке ниже) У кого есть идеи как изменить принцип сортировки? Прилагаю код сортировки и перенумерации:
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()
В программировании я мало понимаю, заранее спасибо!
Решено! Перейти к решению.
Решено: YaroslavKalyuzha. Перейти к решению.
Этот код сортирует листы по номерам, которые были до перенумерации, и затем присваивает новые номера. Можно попробовать вместо строк:
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 с листами для тестов.
Не нашли то, что искали? Задайте вопросы в сообществе или поделитесь своими знаниями.