Баги AcCoreConsole.exe в AutoCAD 2013

Несомненно, продукция компании Autodesk развивается и постепенно обрастает более мощным и удобным функционалом. Одни из нововведений имеют огромное значение, в то время как другие менее важны. В этой записи я опубликовываю информацию об одном инструменте, появление которого в эпохе развития AutoCAD имеет колоссальное значение, т.к. предоставляет разработчикам программно работать с AutoCAD более удобным способом - через консоль, вместо использования GUI. Речь пойдёт об AcCoreConsole.exe.

Указанное приложение - это по сути тот же AutoCAD, только без графического интерфейса (ура, наконец-то!!!). Как результат - приложение загружается за пару секунд и представляет собой окно консоли, подобное тому, которое мы используем при работе в AutoCAD. Идея создания такого инструмента однозначно замечательная, и на презентации вызвала огромный интерес публики, которой тема автоматизации не безразлична, но за идеей следующим шагом является качество её реализации...

 К сожалению, реальность такова, что приложение AcCoreConsole.exe абсолютно не пригодно к использованию. Совершенно очевидно, что в Autodesk не уделили должного внимания тестированию этого продукта. Компания Autodesk уже не первый год находится на мировом рынке, продавая локализованные варианты своего программного обеспечения в разных странах. Все пользователи, имеющие опыт работы в AutoCAD знают, что локализованная версия этой программы, зачастую имеет больше ошибок, чем англоязычный оригинал. Об этом прекрасно осведомлены и в Autodesk, однако год за годом компания не учится на своих ошибках (более того - и не хочет учиться), постоянно наступая на одни и те же грабли: Autodesk не уделяет должного внимания тестированию своих продуктов, в свете чего и появляются различного рода проблемы.

Текущая версия AcCoreConsole.exe наглядно демонстрирует то, что эта программа не была протестирована ни разу на предмет корректности её работы  в операционной системе, имеющей локализацию, отличную от англоязычной  (например в русской). Кроме того, совершенно очевидно, что локализованная версия AcCoreConsole.exe так же ни разу не была протестирована. Я не против того, чтобы Autodesk не тестировал свои программы, при условии, что эти программы будут нормально работать. Однако, по факту, из за того, что компания не тестирует свою продукцию должным образом, мы получаем либо огромное количество ошибок, которые легко можно было бы обнаружить и устранить в процессе тестирования, либо абсолютно непригодные к использованию программы, такие как AcCoreConsole.exe в AutoCAD 2013.

Поскольку обозначенных ниже проблем до этого времени никто не обнаружил, и не сообщил об этом в Autodesk, то я делаю вывод, что далее восторженных возгласов на презентации в адрес AcCoreConsole.exe дело ни у кого не пошло - т.е. никто и не пытался воспользоваться этой утилитой. В противном случае обозначенные ниже проблемы сразу были бы обнаружены.

Теперь, собственно, расскажу об обнаруженных в AcCoreConsole.exe багах, дабы всё то, о чём я писал выше, подтвердить конкретными фактами. Одни из обозначенных ниже проблем обнаружены мною, другие - Евгением Елпановым (в процессе нашего с ним общения на эту тему). Всю эту информацию я размещаю вместе, так сказать - для полноты картины. Итак, поехали...

Англоязычная версия AcCoreConsole.exe не отображает русскоязычные символы, программно (!!!) выводимые на консоль (даже "кракозяблов" не показывает), а так же всё то, что идёт после этих символов... Если вбивать русский текст вручную, прямо в консоль англоязычной версии accoreconsole.exe, то кирилица корректно отображается.

Т.е. строка кода:

dwg.Editor.WriteMessage("Hello World!");

Отобразит в консоли обозначенный текст, а вот такое сообщение отображено не будет:

dwg.Editor.WriteMessage("Видишь суслика? А он всё же есть!");

Можно попробовать вывести смешанный текст:

dwg.Editor.SendStringToExecute("\n(printf \"I am from Россия\")", true, false, true);

Результат выглядит так:

Command: (printf "I am from

Обратите внимание на то, что не отобразилась не только кирилица, но и всё то, что идёт за ней - данном примере это закрывающаяся скобка.

А теперь запускаю элементарный lisp-файл, созданный в редакторе vlide (той же 2013-й версии автокада) и имеющий следующее содержимое:

(print "Hello World!")
(print "Привет Мир!")

Однако в accoreconsole.exe получаем такой вывод:

Command: (load "c:/nunit/tmp.lsp")
"Hello World

Command:

Как видим - получаем очередной некорректный результат - пустые строки вместо кирилицы...

Как выяснилось, не отображение локализованных символов и всего того, что идёт за ними - это не единственная проблема: оказывается, что  программа выполняется до того места, где встречается первый локализованный символ, отличный от английского, после чего работа выполняемой в консоли программы прекращается .

Это наблюдается как в AutoCAD 2013 x64 English, так и в AutoCAD 2013 x86 Russian. Причём в русской версии, как оказалось, дела ещё "веселей":

Если запустить accoreconsole.exe для AutoCAD 2013 x86 Russian, то в консоли вообще ничего не отображается. Оно и понятно - ведь в русской версии AutoCAD, на консоль выводятся  локализованные  текстовые сообщения. При этом, если в консоль вбивать любые символы (не важно русские или английские), то в русской версии обозначенной софтины на консоли они отображаться не будут.

Если в русской версии этой консоли запустить LISP программу, которая не выводит на консоль русского текста, то программа работает успешно, но если добавить код, который выведет на консоль русский текст - программа выполняется лишь до того места, где находится русский текст и прекращает свою работу.

Далее... Имеется ещё одна ошибка: обычно в консоли AutoCAD можно перемещаться по уже выполненным командам, используя для этого клавиши "стрелка вверх" и "стрелка вниз". Однако в accoreconsole.exe ожидаемого перемещения не происходит, а вместо этого в консоль вставляется пара "кракозяблов" после каждого нажатия на клавишу стрелки.

Но и это не всё(!!!):  AcCoreConsole.exe не умеет работать с экранированными символами, которые присутствуют в файлах скриптов (SCR файлы).

Примечание: не важно, запускаете ли вы приложение с ключом /L ru-RU, или же с ключом /L en-US, или же вовсе без ключа - программа в любом случае работает некорректно.

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


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=30467