Определение внешних команд

При работе в AutoCAD и продуктах на базе AutoCAD с помощью внешних команд можно запускать другие программы и утилиты.

При работе в AutoCAD и продуктах на основе AutoCAD можно вызывать другие программы и утилиты, например:

Прим.: Внешние команды поддерживаются AutoCAD только в ОС Windows. В AutoCAD LT внешние команды не поддерживаются.

Определения команд можно добавлять путем редактирования файла acad.pgp в текстовом редакторе ASCII. Внешние команды определяются в первом разделе файла acad.pgp. Кроме псевдонимов команд в файле acad.pgp также имеются строки комментариев, начинающиеся с точки с запятой (;) и позволяющие добавлять текстовую информацию о файле или псевдониме команды.

При определении внешней команды задается ее имя, которое будет использоваться в командной строке операционной системы, и строка исполняемой команды, которая передается в операционную систему. Каждая запись в разделе внешних команд состоит из пяти полей, разделенных запятыми:

command,[executable/shell request],bit flag[,[*]prompt[,return_code]] 
команда

Команда, которая вводится в командной строке операционной системы. Если имя совпадает с именем встроенной команды AutoCAD, оно игнорируется. Имя может быть введено в любом регистре.

executable/shell request

Строка, передаваемая в операционную систему при вводе имени команды. Такой строкой может быть любая команда, которую можно выполнить в ответ на подсказку операционной системы. Она может содержать параметры и атрибуты. Чувствительность строки к регистру зависит от исполняемого приложения.

bit flags

Обязательный параметр, представляющий собой сумму битовых значений. Для получения необходимого результата следует сложить приведенные ниже целые значения.

0 Запустить приложение и дождаться завершения его работы.

1 Не дожидаться завершения работы приложения.

2 Запустить приложение в свернутом окне.

4 Запустить приложение в скрытом режиме.

8 Заключить строку аргументов в кавычки.

Значения 2 и 4 - взаимоисключающие; если заданы оба, используется только значение 2. Следует избегать использования значений 2 или 4 без значения 1, т. к. в этом случае программа становится недоступна до тех пор, пока не завершится выполнение приложения.

Значение 8 позволяет командам, подобным del, правильно обрабатывать файлы, в именах которых имеются пробелы. Это ограничивает возможность передачи в команды списка имен файлов, в котором элементы разделены пробелами. Для того чтобы выполнять групповую обработку файлов, не следует использовать значение 8.

prompt

Этот элемент не обязателен. Он задает запрос, отображаемый в командной строке программы. Ответ на него присоединяется к постоянной командной строке, указанной в элементе "исполняемая_команда". Если первым символом элемента является звездочка (*), ответ может содержать пробелы, и для завершения ответа необходимо нажать клавишу ENTER. В остальных случаях ответ заканчивается нажатием клавиши ПРОБЕЛ или ENTER. Если подсказка не требуется, но за ней должны следовать какие-либо поля данных, в описании команды ставится просто запятая. Запятую также нужно ставить, чтобы отделить подсказку от последующего текста пробелом.

код_возврата

Необязательный параметр, представляющий собой сумму битовых значений. Значение параметра строится путем суммирования перечисленных ниже значений. Например, если активными должны быть значения 1 и 2 , в качестве кода возврата следует ввести 3 . Коды 0 и 4 не имеют смысла в графической многооконной среде и поэтому здесь не описаны.

1 Загрузить файл DXB. После завершения команды AutoCAD или продукт на основе AutoCAD выполняет загрузку DXB-файла $cmd.dxb в чертеж. После загрузки файл $cmd.dxb удаляется с диска. Процесс подобен вызову команды ИМПОРТД.

2 Создать определение блока по DXB-файлу. Программа создает определение блока из объектов файла DXB $cmd.dxb. В качестве имени блока используется ответ на запрос. Введенное имя должно быть допустимым именем блока, еще не определенного в данном чертеже. После загрузки программы файл $cmd.dxb удаляется. Имя по умолчанию для команды ВСТАВИТЬ становится именем созданного блока.

Команды операционной системы

При описании внешних команд AutoCAD часто используются системные команды операционной системы start и cmd. Если в строке исполняемой команды не присутствует команда start или cmd, программа остается недоступной до тех пор, пока не будет закрыто окно внешнего приложения.

Команда start открывает новое окно и запускает в нем указанную в аргументе программу. Если команда start вызвана без параметров, она открывает новое окно командной строки. Команда может сопровождаться атрибутами, которые определяют вид нового окна. Для того чтобы запустить автономное приложение в обычном режиме, нужно использовать команду start без атрибутов командной строки. Команда start также может применяться для открытия документов, для которых в системе имеются соответствующие приложения. Таким образом, например, открывают текстовые документы, HTML-файлы и т.п.

Команда CMD открывает окно командной строки операционной системы, которая играет роль оболочки AutoCAD или программы на основе AutoCAD. Для того чтобы управление было возвращено командной строке операционной системы, необходимо закрыть это окно. Для выполнения внешних команд можно использовать ключи командной строки /c и /k. Ключ командной строки /c вызывает закрытие окна после выполнения указанной команды. Ключ командной строки /k позволяет сохранить окно открытым после выполнения заданной команды. При использовании атрибута командной строки /k окно следует закрывать вручную (с помощью команды exit).

Итак, команду start следует использовать для создания окон или запуска приложений, которые должны выполняться отдельно от программы. Команда cmd используется для запуска пакетного файла или командного сценария, для выполнения которых не нужно отдельное окно, а также для выполнения приложений в отдельном окне, которое закрывается до передачи управления программе. Более подробную информацию об упомянутых здесь командах и атрибутах можно найти в документации к операционной системе.

Пользовательские команды

В следующем примере описано создание трех новых команд: RUN, LISTSET, и DXB2BLK.

RUN, cmd /c,0,*Batch file to run: ,
LISTSET,cmd /k SET,0
DXB2BLK,cmd /c DXBCOPY,0,DXB file: ,2

Команда RUN запускает пакетный файл или командный сценарий. Команда cmd, за которой следует атрибут /c, открывает окно командной строки, выполняет пакетный файл, а затем закрывает окно.

Команда LISTSET выводит на экран перечень текущие параметры переменных среды для операционной системы. Так как в описании команды использовано cmd /k, а не start, перед возвратом в программу необходимо вручную закрыть окно командной строки. Если же требуется, чтобы окно и далее оставалось активным, нужно вызывать команду с помощью start /realtime. Более подробную информацию об упомянутых здесь командах и атрибутах можно найти в документации к операционной системе.

Команда DXB2BLK создает определение блока из указанного DXB-файла. Все объекты в DXB-файлах представлены в виде отрезков. Полезный побочный эффект данной процедуры — возможность простого преобразования текстовых объектов в отрезки.

DXB2BLK передает указанное имя DXB-файла в пакетный файл dxbcopy, который копирует DXB-файл в файл с именем $cmd.dxb. Затем программа создает блок из указанного файла DXB. В качестве имени блока принимается имя, введенное в ответ на запрос имени DXB-файла. Для создания файла dxbcopy.cmd, необходимо ввести в ответ на подсказку операционной системы:

echo copy %1.dxb $cmd.dxb > dxbcopy.cmd

Эта операция создает файл dxbcopy.cmd в текущей папке. Переместите этот файл в папку, определяемую путем DOS, или явно укажите местоположение этого файла в файле acad.pgp. Например, если файл dxbcopy.cmd находится в папке D:\cad, введите в разделе внешних команд файла acad.pgp следующую строку.

DXB2BLK, cmd /c D:\CAD\DXBCOPY,0,DXB file: ,2