コード例 #1
0
            )  #        Фитинги и арматура труб, Оборудование и сантехника
            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()
コード例 #2
0
ファイル: _transaction.py プロジェクト: chenqianethz/pyRevit
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()
コード例 #3
0
        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))
コード例 #4
0
                        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()