Сообщество программистов Autodesk в СНГ

ADN Club => Revit API => Тема начата: enot от 04-08-2019, 21:19:09

Название: Две транзакции в одну
Отправлено: enot от 04-08-2019, 21:19:09
Создаю трубу => не закрывая транзакцию пытаюсь получить коннектор => получаю null (ревит не получает коннектор сразу после создания)
doc.Regenerate не помогает

Проблема в том, что не получается создать две трубы в пределах одной транзакции (конец (коннектор) вновь созданной трубы является началом следующей) , если каждую трубу создавать в отдельной транзакции, то все ок.
Название: Re: Две транзакции в одну
Отправлено: Александр Пекшев aka Modis от 04-08-2019, 21:20:00
А вопрос то в чем?
Название: Re: Две транзакции в одну
Отправлено: enot от 04-08-2019, 21:20:42
не получается создать две трубы в пределах одной транзакции
Название: Re: Две транзакции в одну
Отправлено: Александр Пекшев aka Modis от 04-08-2019, 21:21:55
Ну сделайте две транзакции. Да хоть три))
Вопрос то в чем?
Название: Re: Две транзакции в одну
Отправлено: enot от 04-08-2019, 21:23:44
Для чего одна транзакция? Чтобы откатить все изменения одним нажатием , а не делать это для каждой созданной трубы
Название: Re: Две транзакции в одну
Отправлено: Александр Пекшев aka Modis от 04-08-2019, 21:29:38
Для чего одна транзакция?
Я не спрашивал для чего одна транзакция - я спрашивал в чем ваш вопрос?! Вижу тему, в которой просто изложены утвердительные факты и в упор не вижу вопроса!
Могу предположить, что ваш вопрос звучит как-то так: "Как объединить несколько транзакций в одну?". Если вопрос в этом, то вот так:
Код - C# [Выбрать]
  1. using (TransactionGroup trGroup = new TransactionGroup(doc, "Транзакция, которую хочу откатить")
  2. {
  3.   trGroup.Start();
  4.  
  5.   using (Transaction tr = new Transaction(doc, "Transaction A")
  6.   {
  7.     tr.Start();
  8.     // do something
  9.     tr.Commit();
  10.   }
  11.  
  12.   using (Transaction tr = new Transaction(doc, "Transaction B")
  13.   {
  14.     tr.Start();
  15.     // do something
  16.     tr.Commit();
  17.   }
  18.  
  19.   trGroup.Assimilate();
  20. }
Название: Re: Две транзакции в одну
Отправлено: enot от 04-08-2019, 21:38:40
Да, то что нужно! Благодарю!

именно
trGroup.Assimilate();

а не trGroup.Commit()