Вставка и перемещение блоков из модальной формы - блоки не выбираются

Автор Тема: Вставка и перемещение блоков из модальной формы - блоки не выбираются  (Прочитано 5133 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 409
  • Карма: 77
  • Skype: vildar82
Добрый вечер,
На форме список блоков и кнопка их вставки в чертеж.
Но, после вставки блоков вешаю их на 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 в таком варианте?

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 409
  • Карма: 77
  • Skype: vildar82
Заменил drag перемещения объектов на jig прямоугольника общих границ вставленных блоков. Работает нормально.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13880
  • Карма: 1786
  • Рыцарь ObjectARX
  • Skype: rivilis
Но, после вставки блоков вешаю их на Editor.Drag(), после чего они замирают (не выделяются).
Обычно такое происходит если примитивы остаются открытыми на запись, но в коде я этого не заметил (хотя мог и пропустить).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Вильдар 11-10-2016, 18:00:57

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13880
  • Карма: 1786
  • Рыцарь ObjectARX
  • Skype: rivilis
Кажется понял в чем ошибка. В 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
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 409
  • Карма: 77
  • Skype: vildar82
Да, ошибся. Списывал там же в свое время.
Спасибо!