Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Александр Ривилис от 05-08-2017, 13:24:59
-
Очень интересный и тонкий момент использования UpgradeOpen внутри обычной транзакции: http://adn-cis.org/v-autocad-2018.1-metod-upgradeopen-privodit-k-fatalnoj-oshibke-vnutri-tranzakczii.html
Первый раз за долгие годы смешение механизмов open/close и обычных транзакций приводит к фатальной ошибке AutoCAD. Так что будьте осторожны и пересмотрите свои коды. Autodesk'овцы обещают исправить это поведение в одном из ближайших обновлений, но лучше перестраховаться...
-
Метод UpgradeOpen () - это оболочка для C ++ метода AcDbObject::upgradeOpen (), которая предназначена для механизма open/close, а не для механизма транзакций.
Ничего себе новости! Надо будет пересмотреть коды. Спасибо!
-
Метод UpgradeOpen () - это оболочка для C ++ метода AcDbObject::upgradeOpen (), которая предназначена для механизма open/close, а не для механизма транзакций.
Ничего себе новости! Надо будет пересмотреть коды. Спасибо!
Я как-то тоже не обращал на это внимание, хотя и был в курсе...
-
Так ведь раньше не было проблем.
Просмотрел сейчас свои коды и пришёл к выводу, что в 90% случаев надежнее и эстетичнее будет заменить транзакцию на открытие через Open, чем их рекомендации выполнять.
-
Так ведь раньше не было проблем.
Да. Выставлялся флажок того, что для объекта, участвующего в транзакции, выполнялся UpgradeOpen и нужна дополнительная обработка. В 2018.1 что-то поменяли и испортили.
Просмотрел сейчас свои коды и пришёл к выводу, что в 90% случаев надежнее и эстетичнее будет заменить транзакцию на открытие через Open, чем их рекомендации выполнять.
Эстетичнее - 100%. Но требуется повышенная внимательность.
-
"С заботой о вас. Ваш Autodesk" ;D
Александр, спасибо за информацию!
-
Судя по дальнейшему обсуждению в той теме не всё так страшно. Это касалось только слоёв (LayerTableRecord) и только зависимых (isDependent == true). Только если они участвовали в транзакции и для них было выполнено UpgradeOpen без DowngradeOpen, то в AutoCAD 2018.1 возникает Fatal Error.