Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Stalso от 03-03-2016, 13:23:17

Название: Непонятный Assertion Failed в Point Monitor
Отправлено: Stalso от 03-03-2016, 13:23:17
Здравствуйте. Столкнулся с непонятной проблемой. Навешан самый элементарный перехватчик на Editor.PointMonitor :

Код - C# [Выбрать]
  1.         public static void  ed_PointMonitor(object sender, PointMonitorEventArgs e)
  2.         {
  3.             try
  4.             {
  5.                 Document doc = Application.DocumentManager.MdiActiveDocument;
  6.                 Editor ed = doc.Editor;
  7.                 if (!e.Context.PointComputed )
  8.                 {                  
  9.                     return;
  10.                 }
  11.                 ed.TurnForcedPickOn();
  12.                 var ents = e.Context.GetPickedEntities();
  13.             }
  14.             catch (System.Exception ex)
  15.             {
  16.  
  17.             }
  18.         }
  19.  

И иногда, я даже не могу отловить условия бага, просто вот в любой момент и очень редко выпадает вот такой вот Assertion (на картинке). Что за чушь-то? Прогуглив, я нашел вот это https://forums.autodesk.com/t5/net/assertion-failed/td-p/3225028 . Полностью то же самое, что и у меня. Даже автокад той же версии. И что мне делать? Какой сервис пак хоть должен быть, чтобы этого не было?

(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fs15.postimg.org%2Feobr8pw5z%2Ferror.jpg&hash=ae0a92259587d543c2aa8013d8f51d52) (http://postimg.org/image/eobr8pw5z/)
Название: Re: Непонятный Assertion Failed в Point Monitor
Отправлено: Александр Ривилис от 03-03-2016, 14:04:17
Какой сервис пак хоть должен быть, чтобы этого не было?
Попробуй: https://knowledge.autodesk.com/support/autocad/downloads/caas/downloads/content/autocad-2012-service-pack-2.html?v=2012

А у тебя чистый AutoCAD, или как у автора вопроса AutoCAD Map 2012 (или Civil3d 2012) - для них свои Service Pack'и
Название: Re: Непонятный Assertion Failed в Point Monitor
Отправлено: Привалов Дмитрий от 03-03-2016, 15:14:20
Столкнулся с непонятной проблемой.
Попробуй для начала закомментировать строку
//var ents = e.Context.GetPickedEntities();

ошибка указывает на функцию GetPickedEntities();

Если ошибка пропадет то стоит подумать как безопасно вызывать эту функцию;
возможно проверять выбраны ли примитивы в данный момент или как-то  получить их количество, и только затем пытаться их получить;

либо проверять а действительно ли фокус на текущем документе в момент попытки вызвать функцию.
Название: Re: Непонятный Assertion Failed в Point Monitor
Отправлено: Александр Ривилис от 03-03-2016, 17:01:44
Если Service Pack не исправит ситуацию, то возможно поможет отключение ROLLOVERTIPS.
Ну и нечего выполнять ed.TurnForcedPickOn(); внутри события монитора. Это операцию нужно проделать заранее.