Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: avc от 16-04-2022, 05:33:34
-
Такая проблемка:
- Создаю клон солида.
- Сохраняю в модель (space.AppendEntity и tr.AddNewlyCreatedDBObject).
- Анализирую Brep (для этого и сохраняю, без сохранения нет доступа к SubentityId)
- Переношу объект в другое место через TransformBy.
- Коммит транзакции.
В результате солид отрисован в старом месте чертежа, без переноса. При его выборе он сам выделяется в старом месте, а ручки рисуются в новом. При масштабировании мышью видно, что солид временами обрисовывается в старом месте, временами в новом. Editor.Regen не помогает. _Regen из командной строки помогает через раз.
Что за хрень и как лечить?
-
Алесканд предупреждал, что метод Entity.Clone() может некорректно работать для некоторых объектов. Наверно солид один из них.
Может попробовать Deep сlone?
Или методы копирования объекта, а не клонирования.
-
Попробовал DeepClone. Все то же самое. Проблема не в том откуда взялся солид, а в том что мне его приходится менять после сохранения в БД, но до коммита транзакции. Придет наверно делить транзакцию на две, хотя очень не хотелось.
-
Попробовал на две транзакции разделить. Теперь все работает. Но куууча лишнего кода, лишняя транзакция, повторное открытие солида, повторные развороты, повторное создание клона... грустно.
Получается запись в модель и в транзакцию (а может что-то одно из этого) должна быть обязательно последним действием перед применением транзакции.
-
Попробовал на две транзакции разделить. Теперь все работает. Но куууча лишнего кода, лишняя транзакция, повторное открытие солида, повторные развороты, повторное создание клона... грустно.
Эмуляцию транзакции не пробовал?
-
Эмуляцию транзакции не пробовал?
А что это такое?
-
Эмуляцию транзакции не пробовал?
А что это такое?
Позор! :) StartOpenCloseTransaction вместо OpenTransaction. Или вообще .Open и .Close
-
Ой, а этот метод называется эмуляцией?? Ок, буду знать. Надо пробовать, но пока нет опыта использования всех этих опасных методов.