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

ADN Club => ObjectARX => Тема начата: lom0v от 19-11-2020, 15:55:21

Название: SELECT через acedCommandS()
Отправлено: lom0v от 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

Что я делаю не так?
Название: Re: SELECT через acedCommandS()
Отправлено: Александр Ривилис от 19-11-2020, 16:12:30
lom0v,
Напоминаю про правило форматирования кода на форуме (смотри у меня в подписи)
Название: Re: SELECT через acedCommandS()
Отправлено: Александр Ривилис от 19-11-2020, 16:13:50
Нужно выполнить вот такую последовательность действий:
Зачем? Не проще ли выполнить просто копирование объектов со смещением. Желательно вообще без никаких командных методов.
Название: Re: SELECT через acedCommandS()
Отправлено: Александр Ривилис от 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);
     
Название: Re: SELECT через acedCommandS()
Отправлено: lom0v от 19-11-2020, 19:13:33
Спасибо. Заработало.

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