Надо же какое совпадение! Сегодня часа 2 бился над проблемой - почему Civil 3D валится на определенной операции. В итоге, добавление метода Commit в транзакцию (а точнее - обеспечение его 100% вызова в любой ситуации) решило проблему.Видеодемонстрация (видео длинное получилось, т.к. загружается Civil небыстро):https://screencast.autodesk.com/main/details/fec694d8-ab7e-4793-a262-d8feb3ae6680
Видео мелкое, очень плохо видно. Я не нашёл как можно на весь экран его растянуть. Пишу о том, что сразу же бросилось в глаза:
1. Вложенный блок using (в которой инициализируеся pView) здесь лишний. Он был бы не лишним в том случае, если бы ты открывал объект без использования транзакции и её эмуляции. При эмуляции код следует писать так, как при использовании транзакции, не забывая лишь о том, о чём я писал в предыдущем своём сообщении - пусть Александр Наумович поправит меня, если я неправ...
2. Кроме того, обрати внимание на то, что ты вызываешь Commit
во вложенном блоке using, хотя транзакция создаётся во внешнем. Это потенциальное место возникновения проблем, т.е. после вызова Commit транзакция уже не доступна для дальнейшей работы с ней. Например, если по выходу из внутреннего using ты в дальнейшем вдруг решишь обратиться к этой транзакции, добавив пару-тройку соответствующих строк кода, то получишь исключение.
Попробуй удалить вложенный блок using и закомментируй Commit.