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

15/10/2015

Создание прямоугольного облака (RevCloud) при помощи acedCommandS

Когда выполняется команда Облако (_RevCloud) из скрипта или при помощи функции acedCommandS (command или command-s в Lisp), опции в командной строке не соответствуют опциям в командной строке при запуске команды Облако из пользовательского интерфейса AutoCAD.  Например, не появляется опция установки типа облака, когда запускается при помощи acedCommandS.

Вот скриншоты отличий при запуске команды разными способами:

 

 

Объяснение почему так происходит дал Markus Kraus из команды инженеров AutoCAD:

Будучи запущенными из приложений или скриптов большинство команд AutoCADведут себя так, как было в них заложено в тех версиях AutoCAD, в которых они впервые появились.

Вот небольшой пример кода, который устанавливает версию команды, которая будет работать также,  как и из пользовательского интерфейса AutoCAD:

Код - C++: [Выделить]
  1. Adesk::UInt8 cmdVerNew = 2;
  2.  Adesk::UInt8 cmdVerOld
  3.         = acedInitCommandVersion(cmdVerNew);
  4.  AcGePoint2d ll(0.0, 0.0);
  5.  AcGePoint2d ur(4.0, 5.0);
  6.  acedCommandS(RTSTR, _T("_.revcloud" ),
  7.                                RTSTR, _T("_R" ),
  8.                                RTSTR, _T("_A" ),
  9.                                RTREAL, 0.25, RTREAL, 0.75,
  10.                                RTPOINT, ll, RTPOINT, ur, RTNONE);

 

Такое же поведение, как и для стандартных команд AutoCAD, вы можете реализовать и в своих пользовательских командах. Обратите внимание на описание функции "acedGetCommandVersion" в документации ObjectARX. В зависимости от версии команды можно реализовать различное поведение.

Источник: http://adndevblog.typepad.com/autocad/2015/10/creating-a-rectangular-revcloud-using-acedcommands.html

Автор перевода: Александр Ривилис

Обсуждение: http://adn-cis.org/forum/index.php?topic=3103

Опубликовано 15.10.2015
Отредактировано 15.10.2015 в 08:54:39