Просто команда у тебя еще не определена (AutoCAD о ней еще понятия не имеет), а ты её уже запускаешь... Ведь сначала выполняется метод Initialize, и только затем AutoCAD считывает все атрибуты CommandMethod, чтобы понять, какие команды у тебя определены в dll-файле.
Но Document.SendStringToExecute ведь работает. Если команда была бы еще не определена в этот момент, в этом методе она бы тоже не запустилась.
Ну и кроме того в контексте Initialize вообще не следует использовать Editor.Command.
Я сделал пример с Initialize просто для демонстрации.
Во-первых, у тебя может не быть открытых документов.
Пример максимально простой, без дополнительных проверок. Конечно, подгружать DLL нужно только когда открыт какой-то документ, иначе будет исключение.
во-вторых, Editor.Command можно запускать только из контекста документа.
Не очень понимаю, что Вы имеете в виду в данном случае. Это же метод редактора документа, если есть редактор, значит есть и сам документ. Флага Session у команды нет, значит, она в принципе не в контексте документа запуститься не сможет. Но, опять же, повторюсь: SendStringToExecute работает. Может я чего-то не понимаю, конечно.
Ну а если так. Запускаю в событии Editor.EnteringQuiescentState. Абсолютно такое же поведение:
Извините, вам запрещён просмотр содержимого спойлеров.
Зачем?
У меня включены обработчики запуска-завершения команд. При выполнении моей команды, мне нужно, чтобы они не запускались. Поэтому, я решил их отключить, запустить мою команду, а потом снова включить. Но если через Document.SendStringToExecute запускать команду, то обратное включение обработчиков завершения команды происходит раньше, чем моя команда закончит свою работу и события отлавливаются. Я так понимаю, что это из-за асинхронности этого метода. Если же делать это синхронно, то, по идее, такого происходить не будет.
Да, конечно, можно определить, что запускается именно моя команда и не обрабатывать ее события. Но если есть такой замечательный метод, то хочется им воспользоваться.
Вообще, это уже второй случай, когда у меня не получается запустить свою команду через этот метод. Но в первый раз у меня не было времени и желания разбираться с этим и я просто пошел другим путем. Сейчас же мне захотелось понять: то ли я что-то не так делаю, то ли запуск своих команд через этот метод не работает. А все примеры, которые нашел в интернете, используют с ним только стандартные команды автокада.