Тема: Civil 3D COM API Транзакции

Здравствуйте, есть вопрос по Civil.

Для того чтобы использовать функциональность Civil можно использовать либо .Net API, либо COM API, либо и то и другое вместе. Работая через .Net, рекомендуется использовать транзакции, но как использовать транзакции через COM API? Непонятно.

Пример моей задачи, действия которой хочется выполнить в рамках одной транзакции.
1. Создать полилинию (.Net API).
2. По полилинии создать характерную линию (COM API).
3. Удаление полилинии (.Net API).
4. Изменение координат точек характерной линии.
5. Возможно создание коридора по нескольким характерным линиям.

Заранее спасибо.

Re: Civil 3D COM API Транзакции

Конечно, для объектов com не нужна транзакция.
Проблемы то нет.

Re: Civil 3D COM API Транзакции

А как тогда объединить все действия в одно, чтобы можно было отменить одним Undo?

Re: Civil 3D COM API Транзакции

Опять мне не очень понятно. Ну нажмет пользователь два раза кнопку отменить. В этом проблема? Или ты в коде хочешь предусмотреть случай отката транзакции?

Re: Civil 3D COM API Транзакции

Пример:

try
{
   NetAction1();
   NetAction2();
   ComAction3();
   NetAction4();
   NetAction5();
   transaction.Commit();
}
catch
{
   transaction.Abort();
}

Не могу себе представить что будет в случае Abort.

(изменено: Вильдар, 17 февраля 2012г. 14:58:57)

Re: Civil 3D COM API Транзакции

Дмитрий Гилин пишет:

{
   transaction.Abort();
}

Объектов созданных или модифицированных в com, эта операция не коснется, очевидно.
Думаю, можно, просто сюда добавить код удаляющий созданные объекты com.

Еще есть класс для работы с Undo. Почитай в справке. Для NET свой, для Com свой. Поищи в справке. Примеров у меня нет. Возможно, что путаю.

Re: Civil 3D COM API Транзакции

Думаю, можно, просто сюда добавить код удаляющий созданные объекты com.

Вариант конечно...

Короче я понял, спасибо.

Re: Civil 3D COM API Транзакции

Я высказал свои предположения. Могу ошибаться. Нужно пробовать.