Опции для команд через COM, конечно, доступны. При использовании методов Utility.GetInteger, Utility.GetReal, GetString и т.п. достаточно сформировать строку запроса особым образом. Для автокада наличие в запросе текста вида [Опция1/<оПция2>/опЦия3] означает, что в запросе имеются три опции, причем вторая - опция по-умолчанию. Но, как всегда, дьявол кроется в деталях. И имя его в данном случае - обработка ошибок. Например, ввод опции при использовании Utility.GetReal вызывает ошибку, т.к. автокад ожидает ввода числа, а нажатие опции - это ввод строки. Необходимо этот случай предусмотреть и обработать. Делается это следующим образом:
from pythoncom import com_error
#Инициируем ввод
doc.Utility.InitializeUserInput(128)
#Запрашиваем ввод числа с плавающей точкой
try:
inputresult = doc.Utility.GetReal("\nВведите число [Опция1/оПция2]"
except com_error as error:
#Получаем код COM ошибки
errnumber = error.excepinfo[-1]
if errnumber == -2145320928: #Была введена строка вместо числа
#Запрашиваем введённую строку
inputresult = doc.Utility.GetInput()
#Проверяем, соответствует ли введенная строка выбору опций
if inputresult.upper() == "О" or inputresult.upper() == "ОПЦИЯ1":
#Код, выполняемый при выборе "Опция1"
pass
elif inputresult.upper() == "П" or inputresult.upper() == "ОПЦИЯ2":
#Код, выполняемый при выборе "Опция2"
pass
else:
#Код, выполняемый при вводе любых других символов, кроме относящихся к опциям
#при наличии опции по умолчанию необходимо сопоставить ей ввод пустой строки ""
pass
elif errnumber == -2147352567: #Была нажата кнопка Ecs, обработка приведена для примера
#Код, выполняемый при нажатии Esc
pass
else:
#Код, выполняемый при любых других ошибках
pass
Я для себя просто написал функции на основе GetString, и преобразую потом введённое в int, float и т.д. уже средствами pyton, при этом внутри функций предусмотрел автоматический конструктор строки запроса для ввода опций, опций по-умолчанию и т.п., чтобы каждый раз не прописывать, с чем сравнивать введенную строку, чтобы понять, была ли выбрана опция.