Моя СУБДшная натура категорически против отказа от транзакций, там где они возможны.
Я так понимаю, что это не те транзакции, что в СУБД. Общее у них только название. А по факту, получился инструмент, который на начальных этапах освоения API сильно упрощает жизнь, а в дальнейшем - может её сильно испортить.
где транзакция длинная - заводил отдельную, где мелочевка - передаю теперь свыше в параметрах или полях классов.
В том-то и дело. Я так понимаю, что есть некоторые вспомогательные методы, которые выполняют обработку переданных данных. Пока они вызываются из командных методов, всё работает вроде как надо. Но впоследствии эти же методы возможно понадобится вызывать из различных событий, из методов Overrule и тд и тп, то есть, в тех случаях, когда транзакция может испортить работу AutoCAD, приводя к Fatal Error. Отлавливание таких ошибок - очень непростое дело.
Я для себя пришёл к такому решению: если пишется "библиотечный" метод, лучше, чтобы в нём не было транзакций. Либо передаю уже открытый объект(на чтение, на запись), либо открываю внутри метода объект с помощью ObjectId.Open или OpenCloseTransaction.GetObject.