) # Фитинги и арматура труб, Оборудование и сантехника set_subcomponents( el) # Оборудование set_op_rf( el ) # Трубы, Фитинги и арматура труб, Оборудование и сантехника, Изоляция труб, Гибкие трубы, Воздуховоды, Гибкие воздуховоды, Изоляция воздуховодов, СДВиАВ, Воздухораспределители set_symbol( el ) # Гибкие воздуховоды set_sort(el) check_cost(el) result_check_cost() except Exception: t.RollBack() print(el) print('Ошибка {}, Δ={} с'.format(time.ctime().split()[3], time.time() - startTime)) print( output.linkify( el.Id, '{}: {}: {}: id {}'.format( el.LookupParameter('Категория').AsValueString(), el.LookupParameter('Семейство').AsValueString(), el.LookupParameter('Тип').AsValueString(), el.Id, ))) output.show() raise t.SetName('Расчёт спеки {}, Δ={} с'.format(time.ctime().split()[3], time.time() - startTime)) t.Commit()
class Action(): """ Simplifies transactions by applying ``Transaction.Start()`` and ``Transaction.Commit()`` before and after the context. Automatically rolls back if exception is raised. >>> with Action('Move Wall'): >>> wall.DoSomething() >>> with Action('Move Wall') as action: >>> wall.DoSomething() >>> assert action.status == ActionStatus.Started # True >>> assert action.status == ActionStatus.Committed # True """ def __init__(self, name=None, clear_after_rollback=False, show_error_dialog=False): self._rvt_transaction = Transaction( self.doc, name if name else DEFAULT_TRANSACTION_NAME) self._fail_hndlr_ops = self._rvt_transaction.GetFailureHandlingOptions( ) self._fail_hndlr_ops.SetClearAfterRollback(clear_after_rollback) self._fail_hndlr_ops.SetForcedModalHandling(show_error_dialog) self._rvt_transaction.SetFailureHandlingOptions(self._fail_hndlr_ops) def __enter__(self): self._rvt_transaction.Start() return self def __exit__(self, exception, exception_value, traceback): if exception: self._rvt_transaction.RollBack() logger.error( 'Error in Action Context. Rolling back changes. | {}:{}'. format(exception, exception_value)) else: try: self._rvt_transaction.Commit() except Exception as errmsg: self._rvt_transaction.RollBack() logger.error( 'Error in Action Commit. Rolling back changes. | {}'. format(errmsg)) @property def name(self): return self._rvt_transaction.GetName() @name.setter def name(self, new_name): return self._rvt_transaction.SetName(new_name) @property def status(self): return ActionStatus.from_rvt_trans_stat( self._rvt_transaction.GetStatus()) @staticmethod def carryout(name): """ Action Decorator Decorate any function with ``@Action.carryout('Action Name')`` and the funciton will run within an Action context. Args: name (str): Name of the Action >>> @Action.carryout('Do Something') >>> def set_some_parameter(wall, value): >>> wall.parameters['Comments'].value = value >>> >>> set_some_parameter(wall, value) """ from functools import wraps def wrap(f): @wraps(f) def wrapped_f(*args, **kwargs): with Action(name): return_value = f(*args, **kwargs) return return_value return wrapped_f return wrap def has_started(self): return self._rvt_transaction.HasStarted() def has_ended(self): return self._rvt_transaction.HasEnded()
def var2(self, sender, args): self.Close() global var var = 2 def var3(self, sender, args): self.Close() global var var = 3 MyWindow().ShowDialog() settings['var'] = var settings = json.dumps(settings, sort_keys=True, indent=4, separators=(',', ': ')) doc.ProjectInformation.LookupParameter('pyrevit').Set(settings) if var == 1: t.SetName('Распространение комментариев') comms = [] engineering_flags = [] for el in sel: engineering_flag = el.LookupParameter('Инженерка').AsInteger() if el.LookupParameter('Инженерка') else 0 engineering_flags.append(engineering_flag) if engineering_flag == 1 else None comment = el.LookupParameter('Комментарии').AsString() comment = comment if comment else '' comms.append(comment) if comment else None comms = list(set(comms)) engineering_flags = list(set(engineering_flags)) if len(engineering_flags) == 1: for el in sel: el.LookupParameter('Инженерка').Set(engineering_flags[0]) if el.LookupParameter('Инженерка') else None # else: # print(len(engineering_flags))
fakeCir.LookupParameter('Номинал аппарата защиты').Set( fakeNom) fakeCir.LookupParameter('Сечение кабеля').Set( noms[fakeNom]) fakeCir.LookupParameter('Ток').Set(I) cirsToDraw[panel].append(fakeCir) for panel in pcc.keys(): appNumber = doc.GetElement(panel).LookupParameter( 'Номер аппарата защиты').AsInteger() for cluster in natural_sorted( pcc[panel].keys(), key=lambda x: x.LookupParameter('Номер группы').AsString()): # if 'Итого' not in pcc[panel][cluster][0].LookupParameter('Имя нагрузки группы').AsString(): appNumber += 1 # print('{} {}'.format(appNumber, pcc[panel][cluster][0].LookupParameter('Номер группы').AsString())) for cir in pcc[panel][cluster]: cir.LookupParameter('Номер аппарата защиты').Set(appNumber) # for panel in natural_sorted(pCirs.keys()): # print(doc.GetElement(panel).LookupParameter('Имя щита').AsString()) draw(cirsToDraw) ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### ### t.SetName('ТРН {}, {} с'.format(time.ctime().split()[3], time.time() - startTime)) t.Commit()