Создание прямоугольного облака (RevCloud) при помощи acedCommandS
Когда выполняется команда Облако (_RevCloud) из скрипта или при помощи функции acedCommandS (command или command-s в Lisp), опции в командной строке не соответствуют опциям в командной строке при запуске команды Облако из пользовательского интерфейса AutoCAD. Например, не появляется опция установки типа облака, когда запускается при помощи acedCommandS.
Вот скриншоты отличий при запуске команды разными способами:
Объяснение почему так происходит дал Markus Kraus из команды инженеров AutoCAD:
Будучи запущенными из приложений или скриптов большинство команд AutoCADведут себя так, как было в них заложено в тех версиях AutoCAD, в которых они впервые появились.
Вот небольшой пример кода, который устанавливает версию команды, которая будет работать также, как и из пользовательского интерфейса AutoCAD:
- Adesk::UInt8 cmdVerNew = 2;
- Adesk::UInt8 cmdVerOld
- = acedInitCommandVersion(cmdVerNew);
- AcGePoint2d ll(0.0, 0.0);
- AcGePoint2d ur(4.0, 5.0);
- acedCommandS(RTSTR, _T("_.revcloud" ),
- RTSTR, _T("_R" ),
- RTSTR, _T("_A" ),
- RTREAL, 0.25, RTREAL, 0.75,
- RTPOINT, ll, RTPOINT, ur, RTNONE);
Такое же поведение, как и для стандартных команд AutoCAD, вы можете реализовать и в своих пользовательских командах. Обратите внимание на описание функции "acedGetCommandVersion" в документации ObjectARX. В зависимости от версии команды можно реализовать различное поведение.
Обсуждение: http://adn-cis.org/forum/index.php?topic=3103
Опубликовано 15.10.2015Отредактировано 15.10.2015 в 08:54:39