Как отловить событие "redraw" ?Ну вообще-то такого события в AutoCAD API нет. Разве что ловить через Windows API.
При предварительном выборе объектов с помощью полигона или секущего полигона всегда выполняется перерисовка экрана (redraw).Сама выполняется? Это мягко говоря крайне странно...
Это мягко говоря крайне странно...Сама. Странно что событие нельзя определить.
У меня не подтверждается, или я что-то не понял:Это мягко говоря крайне странно...Сама. Странно что событие нельзя определить.
Более странно что при выборе "window" "cross window" "fence" этого не происходит
У меня не подтверждается
есть такая функция: acgsSetCustomUpdateMethod
Каким образом проверяется подтверждение? Это можно проверить только с помощью acedGrDraw и acedGrVecsТы начал не оттуда. Тебе нужно чтобы по окончанию выбора на экране сохранились (или перерисовались) нарисованные тобой объекты? Ну тогда просто в реакторе AcEdInputContextReactor::endSSGet перерисуй их по новой, при необходимости запустив acedRedraw (или даже acgsRemoveAnonymousGraphics)
просто в реакторе AcEdInputContextReactor::endSSGet перерисуй их
Не так уж и просто. endSSGet вызывается только при изменении текущего выбора, а redraw выполняется вне зависимости от того был изменён выбор или нет. Так что не годится этот способ.Попробуй AcEdInputContextReactor::beginQuiescentState
Нужно переопределить метод onPaint Autocad, это будет наверняка. Только как до него добраться пока не знаюНе думаю, что нужно его переопределять. Попробуй сначала отловить для этого окна WM_PAINT при помощи или acedRegisterFilterWinMsg или acedRegisterWatchWinMsg
acedRegisterFilterWinMsg или acedRegisterWatchWinMsgВот это скорей оно.
beginQuiescentState - много лишних срабатываний. При любом вводе с командной строкиWM_PAINT будет срабатывать еще чаще.
WM_PAINT для текущего окна документа и будет событие "redraw"1. WM_PAINT не только для redraw.
Нужно определить HWND для acDocManager->curDocument() и задача будет решена
WM_PAINT не только для redraw
Для чего ещё?Да любое изменение на экране (изменение примитивов, появление ручек и т.д.) должно вызывать WM_PAINT
Да любое изменение на экране (изменение примитивов, появление ручек и т.д.) должно вызывать WM_PAINTДолжно, но не обязано.
остаётся AcEdInputContextReactor::beginQuiescentState - нормальное место для отрисовки временной графикиЕсли отфильтровать ненужные срабатывания на ввод из командной строки - возможно. Остаётся определиться, с командной строкой