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

ADN Club => AutoCAD .NET API => Тема начата: Вильдар от 10-10-2016, 20:14:55

Название: Вставка и перемещение блоков из модальной формы - блоки не выбираются
Отправлено: Вильдар от 10-10-2016, 20:14:55
Добрый вечер,
На форме список блоков и кнопка их вставки в чертеж.
Но, после вставки блоков вешаю их на Editor.Drag(), после чего они замирают (не выделяются). Отмирают после перезапуска чертежа.
Использую EditorUserInteraction для перемещения объектов пользователем.

Тестовый пример:
Извините, вам запрещён просмотр содержимого спойлеров.

Извините, вам запрещён просмотр содержимого спойлеров.

Извините, вам запрещён просмотр содержимого спойлеров.

Извините, вам запрещён просмотр содержимого спойлеров.

Скорее всего проблема в этом участке:
После создания вхождений блоков в точке ноль, запускаю метод перемещения этих объектов пользователем.
Код - C# [Выбрать]
  1.             var ed = doc.Editor;
  2.             using (EditorUserInteraction UI = ed.StartUserInteraction(this))
  3.             {
  4.                 Hide();
  5.                 Drag(ids, ed);
  6.                 ed.Regen();
  7.             }                      
  8.             Show();
Если это убрать, то блоки - нормальные.
Нельзя использовать Editor.Drag в таком варианте?
Название: Re: Вставка и перемещение блоков из модальной формы - блоки не выбираются
Отправлено: Вильдар от 11-10-2016, 09:42:15
Заменил drag перемещения объектов на jig прямоугольника общих границ вставленных блоков. Работает нормально.
Название: Re: Вставка и перемещение блоков из модальной формы - блоки не выбираются
Отправлено: Александр Ривилис от 11-10-2016, 13:03:54
Но, после вставки блоков вешаю их на Editor.Drag(), после чего они замирают (не выделяются).
Обычно такое происходит если примитивы остаются открытыми на запись, но в коде я этого не заметил (хотя мог и пропустить).
Название: Re: Вставка и перемещение блоков из модальной формы - блоки не выбираются
Отправлено: Александр Ривилис от 11-10-2016, 13:14:27
Кажется понял в чем ошибка. В CallBack-функции тебе не нужно выполнять ent.TransformBy(mat); для каждого из объектов в SelectionSet. Смысл этой CallBack-функции - это возвращать матрицу преобразования mat (AutoCAD самостоятельно выполняет трансформацию причем не самих объектов, а их клонов). И только при успешном завершении Drag ты должен выполнить ent.TransformBy(mat); для всех примитивов в SelectionSet. Пример использования смотри здесь: http://through-the-interface.typepad.com/through_the_interface/2010/06/allowing-interactive-dragging-of-a-selection-of-autocad-objects-using-net.html
Название: Re: Вставка и перемещение блоков из модальной формы - блоки не выбираются
Отправлено: Вильдар от 11-10-2016, 18:02:35
Да, ошибся. Списывал там же в свое время.
Спасибо!