2-я порция замечаний.
#=============================
стр. 13, Обзор средств разработки.
Абзац 1#=============================
> Вместе с системой AutoCAD всех версий поставля[Ю]тся среда разработки на языке
LISP (Visual LISP).*******************************
Во первых оЧепятка. Поскольку это обзор, то раз уж речь заходит об AutoLISP и
Visual LISP - не лишним было бы упомянуть о Петровых (можно глянуть здесь:
http://habrahabr.ru/company/nanosoft/blog/234221/ ). Эта информация в "обзоре"
была бы намного интересней чем то, что сейчас размещено на стр. 16-18 (которые
перелистываются не будучи прочитанными).
#=============================
стр. 13, Обзор средств разработки.
Абзац 2#=============================
> Для работы с другими языками обычно требуются приобретение и установка среды
разработки Microsoft Visual Studio (версия Visual Studio зависит от версии
AutoCAD).*******************************
Ситуацию несколько спасает слово "
обычно", оставляя некоторый путь к отступлению...
А теперь представьте, что прочитавший это пользователь пишет не на C++, как это
ни странно, но на .NET. Будет ли для него верно данное заявление? Нет, не будет.
Для использования .NET API можно использовать любую IDE, способную работать с
той версией .NET Framework, которая может быть использована в целевой версии
AutoCAD. Например можно использовать такие бесплатные аналоги: Sharpdevelop (
http://www.icsharpcode.net/opensource/sd/ ) или Monodevelop (
http://www.monodevelop.com/ ). Для написания кода и компиляции можно
использовать в т.ч. и Visual Studio Express однако, насколько я помню, там есть
какие-то ограничения на отладку (не проверял, т.к. никогда не использовал этот
вариант IDE).
#=============================
стр. 13, Обзор средств разработки.
Абзац 3#=============================
> Отдельно от системы AutoCAD распространяется пакет ObjectARX...*******************************
Неплохо было бы уточнить, что во первых, распространяется он бесплатно, а во
вторых - что официально Autodesk в открытый доступ выкладывает версии SDK только
для последних трёх версий AutoCAD. Более старые версии SDK, с разрешения
Autodesk, А.Н. Ривилис выкладывает на странице
http://adn-cis.org/forum/index.php?topic=61.0#=============================
стр. 13, Обзор средств разработки.
Абзац 4#=============================
> .NET Framework за последние годы стала самой популярной платформой...*******************************
Я бы воздержался от столь категоричных заявлений. А если их давать, то неплохо
было бы сослаться на результаты какого-нибудь отчёта по данному вопросу,
составленного авторитетной компанией. Если же в данном предложении речь идёт
о программировании именно под AutoCAD - то это стоило бы уточнить (я понял это так,
что автор имеет в виду программирование в целом).
#=============================
стр. 13, Обзор средств разработки.
Абзац 6#=============================
> VBA в основном работает через объектную модель AutoCAD.*******************************
Несколько неточное предложение. В AutoCAD существует несколько объектных моделей:
ObjectARX, AutoCAD .NET API и COM. Насколько мне известно, VBA в AutoCAD
использует COM.
#=============================
стр. 14, Обзор средств разработки.
Абзац 1#=============================
> а если нужна связка языков, то лучше всего себя зарекомендовала пара C++-LISP.*******************************
На мой взгляд это несколько субъективное мнение, моё отличается от обозначенного.
LISP функции в AutoCAD можно создавать в т.ч. и с помощью .NET. Помним, что .NET API в
AutoCAD сейчас активно развивается, чего к сожалению нельзя сказать о AutoLISP и
Visual LISP. Платформа .NET позволяет писать код на любом .NET языке, причём
этот код бесшовно стыкуется между собой. Можно писать базовые классы на одном
языке и наследоваться от них на другом. Т.о. говоря о связке, на мой взгляд
первое место занимает managed C++ совместно с любым .NET языком или даже их группой.
#=============================
стр. 14, Об объектной модели AutoCAD.
Абзац 1#=============================
> Система AutoCAD разработана с учётом концепции COM...*******************************
Как-то слово "
концепция" в данном контексте, на мой взгляд ни к месту... "
AutoCAD
имеет COM интерфейс для работы с ним из внешних приложений" - мне кажется, что так
было бы более корректно. Кроме того, не стоит забывать, что в комплект AutoCAD,
начиная с версии 2013, помимо acad.exe входит и accoreconsole.exe, который [к
сожалению] не имеет COM интерфейса.
#=============================
стр. 15, Объекты и коллекции.
Абзац последний:#=============================
> В табл. 1.1. приведён перечень объектов и коллекций.*******************************
В том виде, в каком это представлено, данная информация не представляет никакого
интереса (во всяком случае для меня). Страницы 16, 17 и 18 просто перелистываются
не будучи прочитанными. Если уж и размещать информацию о класса, то в древовидном
представлении, как это сделано в файле
classmap.dwg, входящем в состав ObjectARX
SDK. Такую иерархическую структуру было бы интересно просмотреть, а так получается,
что потеряно три страницы, тем более, что см. цитату в след. замечании:
#=============================
стр. 19, Объекты и коллекции.
Абзац 1#=============================
> В таблицу не внесены объекты и семейства, связанные с подшивками и операЦИМИ
связи с базами данных.*******************************
оЧепятка + смотрим предыдущее замечание в комплексе.
#=============================
стр. 19, Свойства.
Абзац 2#=============================
> Такие компоненты объектной модели, как интерфейсы, не все обладают свойствами.*******************************
Выше в замечаниях я уже писал, что объектные модели бывают разными. Предполагаю,
что в данном случае автор имеет в виду COM. Соответственно следует чётко
обозначать целевую объектную модель.
#=============================
стр. 19, Простой пример использования объектной модели.
Абзац 1#=============================
> Все разбираемые в следующих главах системы программирования дают возможность
использовать рассмотренную объектную модель с помощью COM(ActiveX).*******************************
Всё то же замечание об отсутствии уточнения, о какой объектной модели речь. Кроме
того, я бы не сказал, что тот материал, который предшествовал данному предложению,
можно честно называть "
рассмотренной объектной моделью". Наличие таблицы с именами
классов, занимающей три страницы, совместно с парой-тройкой последующих общих
предложений, вляд ли можно считать "
рассмотрением".
#=============================
стр. 20, Особенности программирования для AutoCAD 2015.
Абзац 1#=============================
> В системе AutoCAD прекращена поддержка fibers (волокон потоков Windows).*******************************
Разве так уж и прекращена? Практика показывает, что по умолчанию использование фиберов
отключено, но может быть включено при необходимости. Процитирую А.Н. Ривилиса:
>Хотя нормально 2015 работает только с FIBERWORLD == 0За подробностями к нему (так же читаем это
http://adn-cis.org/forum/index.php?topic=647 ).
Неплохо было бы пояснить читателю, что такое "волокна потока". Много места такое
пояснение не займёт и будет полезным.
#=============================
стр. 21, О совместимости
Абзац 1#=============================
> Разрабатывая приложение под какую-то версию AutoCAD определённой разрядности,
автор хотел бы знать, сможет ли его приложение без переделки правильно
функционировать в другой разрядности, а так же в другой версии.*******************************
Насколько я понимаю, "
без переделки" следует обособить запятыми. Разработка
приложений под AutoCAD ведётся абстрагированно от его разрядности. Один и тот же
исходный код компилируется под win32\x64, в случае native C++, либо под AnyCPU в
.NET. Если ограничиться AnyCPU не удаётся, то вместо неё собираются x86 и x64.
Говоря о совместимости, нужно чётко различать понятие "
совместимости на уровне
исходного кода" от понятия "
совместимости на уровне машинного кода" (т.е.
скомпилированного результата). Т.о. "переделки" - они бывают разными: одно дело,
когда один и тот же код нужно просто пересобрать, создав новый файл проекта, включив
в него существующие исходники посредством "Add as Link", а так же указав в его
настройках иные ссылки на внешние зависимости. Но совсем другое дело, когда
непосредственно в исходный код нужно вносить дополнительные изменения.
На стр. 22, в абзаце "Язык C++" автор пишет о совместимости на уровне машинного
кода.
#=============================
стр. 22, Платформа .NET
Абзац 1:#=============================
> Платформа .NET (C# и др.) Здесь всё зависит от номера версии целевой платформы
.Net Framework, использованной при построении.*******************************
Этой фразы я не понял. Использованной при построении чего? Предполагаю, что речь
идёт о компиляции самого AutoCAD, но автору лучше бы уточнить это.
#=============================
стр. 23, Платформа .NET
Абзац 1:#=============================
> Если платформа проекта была AnyCPU, то не очень сложные приложения смогут
работать как в 32-bit, так и в 64-bit. Но чаще всего придётся собирать
индивидуальную версию для каждой версии и для каждой разрядности. См. главу 4.*******************************
Во первых, неплохо было бы в тексте уточнить так: "
индивидуальную версию
расширения для каждой версии AutoCAD", а то получается двусмысленность "
версия-
версия". Во вторых, основываясь на своём личном практическом опыте написания .NET
расширений под AutoCAD, могу сказать, что всё обстоит с точностью до наоборот:
чаще всего вариант AnyCPU работает нормально. С действительной потребностью в
компиляции кода отдельно под x86 и отдельно под x64 я сталкивался, но происходило
это не часто. Причём я бы не сказал, что всё то, что мною компилировалось как
AnyCPU было "
не очень сложным приложением"... Вообще, понятие "
сложности" - оно
несколько относительно: то, что одному кажется простым, другому может показаться
сложным и наоборот.
#=============================
стр. 23, Язык VBA.
Абзац 1:#=============================
> Для 32-разрядных версий AutoCAD до 2013, собранных в VBA 6, совместимость есть.*******************************
Предполагаю, что речь идёт о совместимости на уровне машинного кода. Следовало
бы уточнять это в тексте, чтобы пользователь понимал, о какой именно совместимости
говорится.