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

24/05/2013

Отображение пользовательского примитива при перетаскивании

Если пользовательский примитив унаследован от AcDbEntity и использует методы polyline() и polygon() класса AcGiWorldGeometry внутри метода worldDraw(), то в ряде случаев функции могут возвращать состояние ошибки если используются при перетаскивании или редактировании при помощи ручек (grips).

Эта ошибка не приводит к аварийной ситуации, но прекращает перетаскивание объекта при редактировании с помощью ручек, и делает невозможным отслеживание перемещения/модификации объекта, а только точек. Это может вызвать массу неудобств при масштабировании или повороте объектов с помощью ручек.

Эти функции возвращают ошибку, которая показывает, что операция прервана. AutoCAD прерывает операцию отрисовки если пользователь продолжает перетаскивать свой примитив в зависимости от системных переменных DRAGP1 и DRAGP2. Чтобы увидеть свой примитив детальнее при перетаскивании можно увеличить эти две переменные (вы должны попробовать установить DRAGP1 в 100, и DRAGP2 в 250).

Примечание: Если вы не видите ваш примитив, когда останавливаете перетаскивание, то возможно несколько частей вашего примитива перекрываются. Так как мы используем операцию «исключающее или» (XOR) во время перетаскивания, то два перекрывающихся вектора не будут видны (первая операция XOR отображает вектор, а вторая операция XOR делает его снова невидимым).

Источник: http://adndevblog.typepad.com/autocad/2013/01/display-a-custom-entity-during-dragging.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=51.0

Опубликовано 24.05.2013
Отредактировано 06.06.2013 в 01:25:32