SELECT через acedCommandS()

Автор Тема: SELECT через acedCommandS()  (Прочитано 4434 раз)

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

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

Оффлайн lom0vАвтор темы

  • ADN OPEN
  • Сообщений: 17
  • Карма: 1
SELECT через acedCommandS()
« : 19-11-2020, 15:55:21 »
Добрый день!

Не подскажете, как программно реализовать выбор всех объектов?
Нужно выполнить вот такую последовательность действий:
Код - C++ [Выбрать]
  1.         acedCommandS(RTSTR, _T("_ZOOM"), RTSTR, _T("_ALL"), RTNONE);
  2.         acedCommandS(RTSTR, _T("_SELECT"), RTSTR, _T("_ALL"), RTSTR, _T(""), RTNONE);
  3.         acedCommandS(RTSTR, _T("_COPYCLIP"), RTNONE);
  4.         acedCommandS(RTSTR, _T("_PASTECLIP"), RTSTR, _T("100,100"), RTNONE);
  5.  
После SELECT ни один объект не выбран. Поэтому COPYCLIP запрашивает выбор объектов.
Попытки заставить SELECT как-то оставлять после себя объекты в выбранном состоянии к успеху не привели.
Команда (command "_select" "_all" "") возвращает nil и тоже не выбирает объекты. Хотя в процессе работы в лог пишет, что "1 found".

Если запустившейся команде COPYCLIP (строка 3) на подсказку "Select objects:" указать _all, то команда отрапортует "1 found", но при завершении выбора по Enter выделение сбрасывается и COPYCLIP сообщает, что копировать нечего.

Autocad 2015 x64

Что я делаю не так?
« Последнее редактирование: 19-11-2020, 16:10:44 от Александр Ривилис »

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: SELECT через acedCommandS()
« Ответ #1 : 19-11-2020, 16:12:30 »
lom0v,
Напоминаю про правило форматирования кода на форуме (смотри у меня в подписи)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: SELECT через acedCommandS()
« Ответ #2 : 19-11-2020, 16:13:50 »
Нужно выполнить вот такую последовательность действий:
Зачем? Не проще ли выполнить просто копирование объектов со смещением. Желательно вообще без никаких командных методов.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение lom0v 19-11-2020, 19:07:06

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: SELECT через acedCommandS()
« Ответ #3 : 19-11-2020, 16:22:51 »
Если же всё-таки использовать командные методы (хотя это моветон), то:
Код - C++ [Выбрать]
  1. acedCommandS(RTSTR, _T("_ZOOM"), RTSTR, _T("_ALL"), RTNONE); // <--- Это совсем не нужно
  2. acedCommandS(RTSTR, _T("_SELECT"), RTSTR, _T("_ALL"), RTSTR, _T(""), RTNONE);
  3. acedCommandS(RTSTR, _T("_COPYCLIP"), RTSTR, _T("_PREV"), RTSTR, _T(""), RTNONE);
  4. acedCommandS(RTSTR, _T("_PASTECLIP"), RTSTR, _T("100,100"), RTNONE);
     
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн lom0vАвтор темы

  • ADN OPEN
  • Сообщений: 17
  • Карма: 1
Re: SELECT через acedCommandS()
« Ответ #4 : 19-11-2020, 19:13:33 »
Спасибо. Заработало.

Это моветон вынужденный. Нужно было проверить копирование/вставку кастомного объекта через пользовательский интерфейс.