Exemple #1
0
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()
Exemple #2
0
class ActionGroup:
    def __init__(self, name=None, assimilate=True):
        self.transaction_group = TransactionGroup(doc, name if name else DEFAULT_TRANSACTION_NAME)
        self.assimilate = assimilate

    def __enter__(self):
        self.transaction_group.Start()
        return self.transaction_group

    def __exit__(self, exception, exception_value, traceback):
        if exception:
            self.transaction_group.RollBack()
            logger.error('Error in TransactionGroup Context: has rolled back.')
            logger.error('{}:{}'.format(exception, exception_value))
        else:
            try:
                if self.assimilate:
                    self.transaction_group.Assimilate()
                else:
                    self.transaction_group.Commit()
            except Exception as errmsg:
                self.transaction_group.RollBack()
                logger.error('Error in TransactionGroup Commit: has rolled back.')
                logger.error('Error: {}'.format(errmsg))
selection = [
    doc.GetElement(elId)
    for elId in __revit__.ActiveUIDocument.Selection.GetElementIds()
]

tg = TransactionGroup(doc, "Search for linked elements")
tg.Start()

locLineValues = {
    'Wall Centerline': 0,
    'Core Centerline': 1,
    'Finish Face: Exterior': 2,
    'Finish Face: Interior': 3,
    'Core Face: Exterior': 4,
    'Core Face: Interior': 5,
}

for el in selection:
    if isinstance(el, Wall):
        param = el.LookupParameter('Location Line')
        with Transaction(doc, 'Change Wall Location Line') as t:
            t.Start()
            param.Set(locLineValues['Core Centerline'])
            t.Commit()
        with Transaction(doc, 'Flip Selected Wall') as t:
            t.Start()
            el.Flip()
            param.Set(locLineValues['Core Face: Exterior'])
            t.Commit()
tg.Commit()