Былая мощь АвтоКАДа. Наши разработки. Software. ГП ДПИ.

Вы здесь:   >ГП ДПИ   >Software   >Наши разработки   >Былая мощь АвтоКАДа

Как мне кажется даже сама фирма Автодеск не смогла полностью оценить всю силу и эллегантность тех решений, которые были заложены в версии 9..12 ее продукта.

Мне бы хотелость предложить Вам несколько необычную точку зрения на эти продукты фирмы. Как мне кажется без этого небольшого отступления невозможно правильно понять почему и для чего наши собственные разработки выглядят именно так, как они выглядят.

Почему первая версия на которой я акцентирую Ваше внимание именно 9 - все очень просто - это была первая версия с которой мне довелось работать.

Надеюсь, эти два обстоятельства делают мой выбор начальной версии довольно обоснованным. Чтоже получила фирма включив интерпретатор в состав своего продукта. Безусловно многие согласятся, что возможности расширения АвтоКАДа, его настройки на конкретные нужды пользователя, на которых фирма Автодеск неоднократно делала акцент (в то время), в первую очередь обусловлены именно наличием такого простого и мощного языка программирования как ЛИСП. Пара недель, максимум месяц, ознакомления с АвтоЛИСПом - и Вы могли сами создавать програмки которые Вам необходимы в Вашей повседневной работе! Простота написания программ породила целый сонм вспомогательных программ - от совсем простеньких до довольно сложных комплексов.

Не могу утверждать с твердой уверенностью, но весьма похоже, что фирма Автодеск достаточно внимательно изучала возможности этих программ и постепенно их новые продукты обретали новые возможности. Пользователи, как бы показывали фирме направление в котором ей необходимо было приложить свои усилия. Едва ли кто-то всерьез возмется оспаривать этот аспект пользы от включения АвтоЛИСПа, однако мало кто задумывался о другом, на мой взгляд куда менее явном, но от этого никак не менее значительном аспекте - влияние на внутреннюю структуру представления примитивов. И если для небольших приложений это было, возможно, не так уж и важно, то для сложных программ - это было одним из условий, благодаря которым, их появление стало вообще возможным!

О чем, собственно, идет речь? Такой вопрос может возникнуть только у тех, кто не знает, что можно было увидеть вызвав функцию entget для какого-нибудь примитива! Остальные же едва ли забудут - функция возвращала в качестве результата обыкновенный ассоциативный список, где в качестве ключей использовались целые числа.

Для наглядности небольшой пример (если у Вас АвтоКАД в пределах досягаемости можете его повторить) - просто построим отрезок от точки 1,1 до точки 10,10, а затем вычислим следующее выражение: (setq a (entget (entlast))) - если у Вас АвтокКАД до 14-ой версии (боюсь соврать про 13-ю), скорее всего Вы увидите нечто вроде:

  ( (-1 . <Имя примитива: 60000012>)
    (0 . "LINE")
    (6 . "BYLAYER")
    (8 . "0")
    (10 1.0 1.0 0.0)
    (11 10.0 10.0 0.0)
  )

Имея под рукой таблицу кодов, понять о чем идет речь не составляет особого труда.

-1 Имя Примитива
0 Тип Примитива
6 Тип Линии
8 Слой
10 Начальная Точка
11 Конечная Точка

Таким образом получение любого свойсва графического примитива было всего-навсего элементарной операцией над ассоциативным списком. Не менее сложной операцией было и изменение свойств примитива при помощи специальной функции entupd - ей необходимо было лишь передать соответствующим образом подправленный ассоциативный список! Просто измените в вашем списке группу (11 10.0 10.0 0.0) на (11 100.0 100.0 0.0) и передайте этот список в качестве аргумента - и Вы увидите как тут-же изменится Ваш отрезок. Конечно были кое-какие ограничения на изменение примитивов - однако они были логически обусловлены и не приносили больших неудобств. Такая структура оставляла огромный простор для развития - при необходимости ввести новый атрибут (не в смысле Автокда, а в смысле свойства) примитива, это могло быть сделано (и делалось несколько раз - например при переходе к 3-х мерным чертежам) с поразительной легкостью. При этом в программы написанных на АвтоЛИСПе не было необходимости вносить какие-либо коррективы - появление новых групп в ассоциативном списке ни каким образом не влияло на их работоспособнсть!

По своей наивности, в то время, я полагал, что фирма и дальше будет развивать этот подход - однако развитие пошло совершенно по другому сценарию. Как мне казалось фирме достаточно предоставить возможность программистам ассоциировать с примитивом ЛИСП-данные и мы получим не просто графические примитивы а настоящие объекты. Автодеск двигался в аналогичном направлении - но какой-же неулюжей оказалась попытка. Те кто знаком с появившимся в 12-ом АвтоКАДе механизмом "Расширенных Данных Примитива" наверное смогут меня понять. Сколько сложностей! А ведь надо было всего лишь дать возможность приложению вкючить в примитив свой собственный ассоциативный список со своим именем в качестве ключа! Как просто! Однако фирма упустила этот шанс. Почему?! Как мне кажется ответ кроется еще в одной новинке которую фирма включила в 12-ю версию. Имя этой новинки - "СРП" (Среда Разработки Приложений - кажется так, если мне не изменяет память). Довольно туманно, однако на самом деле довольно банально - библиотека для разработчиков на Си. Вот откуда дует! В угоду удобства разработчикам на Си фирма отказалась от своего самого сильного ноу-хау - использование ассоциативных списков для описания примитива. Что произошло с списком примитива - маленькая, почти непреметная особенность - в нем стали появляться повторяющиеся ключи!. Ассоциативность была нарушена! И это было только началом...

И хотя 12-я версия являлась и остается одной из лучших (с точки зрения ЛИСП-программиста) направление дальнейшего развития уже было определено! 14-я версия, а несколько позже и АвтоКАД 2000 полностью это подтвердили. Если у Вас есть под рукой АвтоКАД 2000 - проделайте простой эксперимент: создайте примитив типа "Область" (плоский аналог тела) и выполните (entget (entlast)). Если Вы сможете объяснить мне, что у Вас получилось, а еще лучше написать небольшую ЛИСП-программку для модификации этого примитива - очень Вас прошу сообщите об этом мне!

И одно замечание не совсем в тему. Знаете ли Вы сколько весила документация по 12 АвтоКАДу - целых 12кг. Чего там только не было! А взгляните на документацию сегодня..., душераздирающее зрелище. Конечно кое-что есть на компакт-диске, но объясните почему необходимо экономить на печатном руководстве при стоимости программы около $4000?

И напоследок, уж совсем о грустном - в новой своей разработке Autodesk Inventor фирма в качестве языка программирования в настоящий момент предусмотрела лишь VBA, в будущем правда обещают и Си, про планы поддержки ЛИСПа слышать не приходилось. Что-это? Недальновидность, непонимание роли той технологии, которая в свое время помогла фирме завоевать мировое лидерство.

P.S. Боюсь, я слишком сгустил краски - конечно продукты фирмы Автодеск развиваются и улучшаются от версии к версии, появляются все новые и новые возможности. Появился даже Визуал Лисп! Вообщем: пока живу - надеюсь!