class ActionGroup(): def __init__(self, name=None, assimilate=True): self._rvt_transaction_group = TransactionGroup( self.doc, name if name else DEFAULT_TRANSACTION_NAME) self.assimilate = assimilate def __enter__(self): self._rvt_transaction_group.Start() return self def __exit__(self, exception, exception_value, traceback): if exception: self._rvt_transaction_group.RollBack() logger.error('Error in TransactionGroup Context: has rolled back.') logger.error('{}:{}'.format(exception, exception_value)) else: try: if self.assimilate: self._rvt_transaction_group.Assimilate() else: self._rvt_transaction_group.Commit() except Exception as errmsg: self._rvt_transaction_group.RollBack() logger.error( 'Error in TransactionGroup Commit: has rolled back.') logger.error('Error: {}'.format(errmsg)) @property def name(self): return self._rvt_transaction_group.GetName() @name.setter def name(self, new_name): return self._rvt_transaction_group.SetName(new_name) @property def status(self): return ActionStatus.from_rvt_trans_stat( self._rvt_transaction_group.GetStatus()) def has_started(self): return self._rvt_transaction_group.HasStarted() def has_ended(self): return self._rvt_transaction_group.HasEnded()
for el in els: symbol = doc.GetElement(el.GetTypeId()) if not symbol.LookupParameter('Сортамент'): continue param = symbol.LookupParameter('Сортамент').AsString() settings = json.loads(param or '{}') if not settings: continue # if el.LookupParameter('Диаметр (Размер по каталогу)'): # size = str(round(float(el.LookupParameter('Диаметр (Размер по каталогу)').AsDouble() * k), 1)) if el.LookupParameter('Размер'): size = el.LookupParameter('Размер').AsString().split()[0].split('-')[0] # print(size) # print(settings) el.LookupParameter('ADSK_Наименование').Set(settings['ADSK_Наименование'][size]) el.LookupParameter('ADSK_Марка').Set(settings['ADSK_Марка'][size]) el.LookupParameter('ADSK_Код изделия').Set(settings['ADSK_Код изделия'][size]) if el.LookupParameter('Длина'): length = el.LookupParameter('Длина').AsDouble() * k * float(settings['Множитель длины']) el.LookupParameter('ХТ Длина ОВ').Set(length) # if el.LookupParameter('Кабельная трасса'): # смотри "Test: Кабельная трасса в Комментарии" # res = el.LookupParameter('Кабельная трасса').AsString() # res = ', '.join(res.split('\n')) # el.LookupParameter('Комментарии').Set(res) set_progress(pb, 100) t.Commit() tg.SetName('{} ({}, {:.1f} с)'.format(tg.GetName(), time.strftime('%H:%M', time.localtime()), time.time() - startTime)) tg.Assimilate()