

      Е С Т Ь    Л И    Б У Д У Щ Е Е    У    A U T O C A D

Т Е Х Н О Л О Г И И     ?



   Б.Б. Ткаченко, г. Днепропетровск , 47-30-54
    / руководитель программно-консультативной фирмы /
   Научно-производственные интересы:
 автоматизации проектирования в машиностроении, обработка изображений
и компьютерная графика, представление кривых и поверхностей.


     Неуверенность, кризисные явления, финансовые трудности
и изменения налоговой политики - отразившееся на ценах
товаров и услуг , все что отличает эпоху "СНГ"
от эпохи "перестройки" отражается на отрасли информатики,
равно как и на других отраслях экономики.  Новые формы
экономических отношений сейчас, как никогда раньше в СССР,
заставляют руководство промышленных предприятий задатся
вопросом: оправдано ли вложение финансовых средств в автома-
тизцию проектирования и производства.  Несмотря на удорожание
стоимости рабочей силы имеющаяся тенденция к ее снижению,
ввиду грозящей отмены дотаций и связанной с этим возможности
увеличения безработицы , ставит главным критерием при ответе
на этот вопрос фактор повышения производительности труда при
внедрении средств САПР.
  Первым этапом автоматизации технологической подготовки
производства как правило становится автоматизация конструк-
торских или чертежных работ ( эквивалентный международный
термин - CADD Соmputer Aided Design Drafting ).  Если Вы
скажете мне что это давно уже решенный вопрос, позвольте
возразить Вам - не менее 85 % конструкторов на производ-
стве не только не применяют эти средства в повседневной
практике, но даже и не обучались им.  А в 50% конструктор-
ских отделов предприятий даже нет ни одного компьютера.
 Практически есть относительно немного заводов в СНГ где
действительно эффективно применяется AutoCAD или пакеты
ему подобные.
  На многих заводах попробовав эти средства, конструктора
отказались от них ссылаясь на несоответствие ЕСКД или на
расхожий тезисы о том что "на кульмане я могу начертить
быстрее" или "AutoCAD хорош там где большая повторяемость,
а у нас напротив все конструкции оригинальные".
   Почему это происходит ? и не ошибочно ли выглядят эти
суждения на фоне того что CADD вообще и AutoCAD-технология,
в частности крайне интенсчивно используется повсюду в мире
/ включая страны арабского востока и ЮВА /.  Здесь мы попыта-
емся отыскать причины относительного медленного распостранения
AutoCAD-технологии, ее неэффективности в ряде случаев, вскрыть
проблемы возникающие при широкомасштабном внедрении CADD на про-
изводстве важнейшие среди которых связаны с построением базы
данных САПР предприятия на машинных носителях.
 Нет нужды говорить о том что САПР-овские пакеты которые
опробуют на предприятии первоначально, зачастую не лицензионные,
бывают устаревших версий и в них часто не присутствуют все
файлы дистибутива, что усекает возможности пакетов. Такие поль-
зователи не могут рассчитывать на помощь официальных дилеров,
которая кстати говоря и для официальных пользователей в СНГ
обеспечивается дилерами не на должном уровне. Корни неудач
заложены уже на стадии приобретения оборудования, когда
предприятие стремится купить компьютеров числом побольше,
а ценой подешевле. В то время как при внедрении САПР наиболь-
шую выгоду приносит как раз обратный подход.  Следует пред-
ставлять себе что CADD - это область которая лишь недавно
стала доступна на персональных компьютерах и использует,
в известном смысле их возможности на пределе. Для того,
что-бы это понять попробуйте выполнить хотя-бы команду
HIDE / удалить скрытые линии / с чертежом site3d который
поставляется с AutoCAD в качестве примера.  Системы AutoCAD
имеет несоммненный плюс перед отечественными ее конкурентами
в инвариантности ее к размерам проекта. Буквально это означает
что AutoCAD написан так что он может оперировать практически с
чертежом любого обьема , лимитируемого только возможностями
аппаратных средств.  Однако при возрастании размеров чертежа,
растет не только память занимаемая DWG-файлом но и время
выполнения каждой операции выбора обьекта / Select object: /
 - "время ответа".  Большое время ответа в реальных произ-
водственных условиях означает: утомление СAD-оператора,
непрозводительные затраты времени и потерю интереса конструк-
тора к работе c AutoCAD.  Этот факт нужно иметь ввиду при
покупке техники.  На время ответа оказывают влияние такие
факторы как: быстродействие жесткого диска, тактовая частота
процессора и сопроцессора, наличие кеш памяти и обьем оперативной
памяти.  Причем определяющим фактором здесь является обьем
памяти. Разумеется должно быть 640 К, вопрос на сколько больше?
  Дополнительная память AT Extended Memory может использоватся
AutoCAD-ом как внутренняя буферная область при обмене с чертежным
файлом в процессе его редактирования.  Задействование его осуще-
ствляется установкой переменных окружения:
                SET  ACADXMEM  =   xxxx K
  Таким образом AutoCAD может использовать до  16 Мбайт памяти.
Написанные на AutoLISP Средства повышения производительности труда
типа "АРМ-ДЛЯ ИНЖЕНЕРОВ МАШИНОСТРОИТЕЛЕЙ" см. "КОМПЬЮТЕР-ПРЕСС" 11/90
как правило не могут разместится в 40 кб heap простого AutoLisp даже
если использовать его оптимально. Что приводит к необходимости
использования расширенного AutoLisp. При использовании расширенного
AutoLisp обьем памяти выделенный ему драматически влияет на скорость
выполнения и загрузки программ автоматизированного черчения.
  Из опыта можно заключить что выполнение более или менее серьезных
Lisp систем ассистирующих чертежнику требует как минимум 1 Мбайт
Extended Memory. Так как модуль расширенного AutoLisp-а extlisp.exe
загружается перед загрузкой AutoCAD он должен оставить часть ExtMemory
свободной для AutoCAD. Эту информацию Extlisp.exe Вы можете передать
предварительно установив переменную:
                SET  LISPXMEM  =   yyyy K
 что предписывает extlisp использовать не более yyyy Kбайт памяти.
   Иногда для ускорения работы пытаются разместить на виртуальном
диске рабочий DWG-файл и временные фалы. Не стоит отдавать этому
предпочтение перед памятью для буферной области. Так как в последнем
случае ускорение работы получается более ощутимое. И уж тем более
нет смысла помещать рабочий файл на "виртуалку" когда вы используете
буферную область. Внутренний буфер обеспечивает наибольшее ускорение,
если же у Вас остается какая-то память все таки свободной - расположите
на ней оверлеи системы AutoCAD.
  Типовые характеристики компьютеров которые предлагаются  к продаже
в США как специализированные рабочие станции для Автокада ( специфи-
кации периферийных устройств опущены ):

  Минимальная конфигурация       Максимальная конфигурация
 80386 33MHz                      80487 33MHz с интегрированным
 80387 33MHz                    на кристалле 80487 и 8 MB кеш.
  4MB RAM 32 bit                 8MB RAM 32 bit
 ( расширяемая до 32 MB           ( расширяемая до 32 MB
на материнской плате ).          на материнской плате ).
64 K RAM Кеш, расширяемая        HDD 210 MB 15ms с 64 K байт
до 256 К.                        кеш буффер.
HDD 130 MB 15ms с 64 K байт      1MB SuperVGA дисплейный адаптер
кеш буффер.                      1024*768
1MB SuperVGA дисплейный адаптер  TI 34020 Graphics Accelerator
1024*768                         1280*1024 с 2MB RAM
17 дюймов Non Interlaced SVGA    21 дюймов Non Interlaced SVGA
цветной дисплей.                 цветной дисплей. 1280*1024
 AutoCAD Display List Driver      AutoCAD Display List Driver

  Возможно приведенные Выше спецификации наведут на некоторые
размышления любителей дешевых покупок.  Лучше купить один или два
подобных комплекса и плоттер A1/A0 хорошо зарекомендовавших себя
фирм ( таких как Houston Instrument , HP , Roland или Benson )
и организовать круглосуточное использование этого оборудования
чем покупать 10 стандартных AT-комплектов. Использование которых
скорее отобьет у конструкторов охоту работать в AutoCAD. Желательно-
не забыть приобрести и защитные фильтры на мониторы, так как
чертежники подчас просиживают за компьютером гораздо дольше
чем программисты.  В случае если у Вас очень плохо с деньгами
приемлемый компромис заключается видимо в приобретении  платы
расширения 4MB-8MB и установке ее на стандартный AT комплект из
которого Вы собираетесь делать рабочее место чертежника.  В зави-
симости от того в какой прикладной области собираетесь Вы
эксплуатировать AutoCAD желательно купить базовые приложения,
при этом лучше начинать с библиотек стандартных символов и средств
автоматизации оформления по ЕСКД поставляемых специализированными
программистими компаниями[1]. Начальное ядро большинства таких
разработок формировалось на авангардных предприятиях отечественной
индустрии еще в 80-е годы, но затем в процессе дистрибуции они
получили существенные дополнения по результатам каждого внедрения.
 Естественно разработка прошедшая проверку многкратными внедрениями
на самых различных машиностроительных предприятиях, больше подходит
для получения начального толчка в деле повышения производительности
труда конструктора, чем разработка созданная и продолжающая разви-
ватся на одном предприятии / тем. более гос. когда зачастую по про-
шествии некоторого времени становится неясно кто будет осуществлять
поддержку и поставку новых версий /.  При выборе начального пакета
AutoLisp программ, автор настоятельно советует / особенно небольшим
конструкторским отделам / выбирать продукты реализующие оформитель-
скую часть работы и возможно элементную базу из [6]. Нужно учитывать
что элементная база созданная на одних предприятиях, часто совер-
шенно не пригодна для использования на других. И хотелось бы
предупредить / как это ни кажется тривиальными программисту /
пользователей CADD о том что существует очень большая разница
между параметрическими моделями / каждая из которых может быть
применена при черчении целого класса изделий / и библиотеками
блоков / просто нарисованных фрагментов чертежей / так как последние
допускают только изменение масштаба при вставке в чертеж и в
большинстве своем очень редко могут быть использованы повторно.
 Хотя бибиотеки блоков естественно применять в таких случаях
когда имеется некоторый набор стандартных символов / например
схемы пневмогидросистем или кинематические схемы /.


     Рассмотрим далее различные способы применения пакетов
автоматизированного черчения  / все сказанное ниже относится
в первую очередь к AutoCAD, автор будет признателен если читатели
вышлют ему некоторую информацию о применении других пакетов
для тех же целей и их качественных характеристиках /.

   1. Ручное черчение на компьютере - достигается повышения
производительности труда в 1.5 - 2.0 раза. Хотя возможно и
больше / до 4-х раз / при условии если черчение выполняется
персоналом владеющим AutoCAD в совершенстве на высокопроизво-
дительном оборудовании. Хорошим подспорьем в такого рода
работе может служить разработка описанная в [1] или подобные
ей комплексы программ на Lisp. Автоматизирующие черчение
многих стандартизованных деталей из справочника [11] и
всю работу по образмериванию и оформлению чертежа.
  Для выполнения деталировки не нужно садить за компьютер
опытных конструктроров, эта работа может быть выполнена
техниками специально обученными работе с ACAD, их называют
операторами САПР / CAD-операторами /. Конструктор должен
предоставлять только грубо набросанный от руки эскиз, а
также "вырезанный" из DWG-файла сборочного чертежа фрагмент
какой либо поекции этой детали / если он ее изображал /
что-бы облегчить CAD-оператору работу.  Процесс получения
деталировки из сборки существенно облегчен некоторыми прог-
раммными средствами, разработанными автором.  Если в организа-
чии интенсивно работает несколько CAD-операторов, желательно
иметь при них прикладного программиста - AutoLisp эксперта,
так как в любой оригинальной и "нетиповой" работе, такая
блестящяя система как AutoCAD позволит неоднократно повысить
производительность программируя типовые циклы работы.

   2. Автоматизированная отрисовка всей чертежной группы
или отдельных полностью образмеренных и оформленных чертежей
( подобный подход применим в тех случаях когда правила
проектирования и выполнения КД могут быть полностью форма-
лизованны , примеры: КД на прессформы , трубопроводы ,
частные САПР технологической оснастки ). Повышение произво-
дительности труда чертежника на этом классе задач возможно
до 10-15 и более раз по сравнению с ручной работой.  В зада-
чах этого класса конструкторские спецификации в виде готового
для нормоконтроля документа как правило могут быть сгенериро-
ваны автоматически.  В областях где проектирование подчиня-
ется формальным правилам с помощью этого подхода созданы
очень мощные и дорогостоящие программные продукты базированные
на AutoCAD. Например пакеты: PRO-SERIES ( Adev inc. ), AutoPLANT
EDA corp. предназначенные для проектирования химических
заводов средствами AutoCAD[4].  При проектировании подобных
программных комплексов используется весь спектр средств
пользовательской настройки AutoCAD включая Autodesk Software
Development Kit  и также прямой доступ к AutoCAD структурам
данных из прикладных программ на других языках ( см. [2] ).
  На нашем предприятии было разработано также несколько
подобных прикладных систем.  Рассмотрим одну из этих
систем - PIPE-CAD / надстройка над Акадом для автоматизи-
рованного черчения  комплектной КД на сварные трубопроводы
широкого применения /.

 САПР  "PIPE-CAD" обеспечивает:
    а) расчет штуцерных соединений трубопроводов на прочность и герме-
       тичность;
    б) автоматизированное конструирование и выпуск, с учетом результа-
       тов расчета, спецификаций и сборочных чертежей трубопроводов,
       состоящих из стандартных и типовых деталях разьемных и сварных
       соединений.
  Набор элементов, содержащихся в системе, позволяет "собирать" кон-
струкции трубопроводов с разьемными и сврными соединениями dy 4...50 мм
из нипельной, замковой и высадной арматуры по ГОСТ.
  Система позволяет рассчитать на прочность и герметичность штуцерные
соединения:
        а) Исходные данные для расчетов:
          - геометрические параметры;
          - нагрузки (давление и температура среды), внешние осевые
            силы и изгибающие моменты;
          - физико - механические характеристики материалов деталей;
          - коэффициенты трения, запаса по плотности и др.
        б) Результаты расчета на герметичность:
          - податливость деталей соединений;
          - осевые усилия и удельные усилия затяжки;
          - необходимый момент и угол затяжки.
        в) Результаты расчета на прочность:
          - податливость деталей соединений при рабочей температуре;
          - осевые усилия и моменты затяжки при сборке и рабочем режи-
            ме.
 По результатам анализа расчетов принимается решение об исполь-
зованию стандартных деталей или оригинальных деталей удовлет-
воряющих заданным требованиям.
Система PIPE-CAD позволяет
"Собрать" трубопровод из графических элементов, содержащихся
в разделе меню ПОСТРОЕНИЕ (труба, тройник, крестовина и др.), после
выбора начальных параметров в разделе УСТАНОВКА (диаметр, масш-
таб, толщина и др.) с учетом результатов расчета по подстыкованной
к AutoCAD расчетной программе.
 Сборку трубопроводов выполняют, располагая точку ввода нача-
льного элемента в заданном месте экрана. Подстыковка после-
дующих графических элементов деталей выполняется автомати-
чески с учетом выбранной точки ввода на элементе.
 Простановка позиций на чертеже  - полуавтоматическая, раск-
рытие стыков сварных швов - автоматическое.
   При необходимости можно откорректировать графику чертежа с помощью
элементов обогащения.
   Скомпоновать чертеж, разместив на поле выбранный вариант тех-
нических требований.
   По завершении работы программ на диске создается файл обмена с
системой автоматизированного выпуска конструкторской спецификации.
   Дальнейшее оформление чертежа / рамка, штамп, знаки клемения,
маркировки, обозначения допусков и автоматический поиск в таблице
допусков и посадок / при необходимости осуществляется средствами
"АРМ - КОНСТРУКТОРА МАШИНОСТРОИТЕЛЯ" подробно описанного в [1].
   Разработка данной системы осуществлялась с использованием
AutoLisp Source Toolbox. Также разработанный в нашем коллективе,
он воплощает в себе один многообещающий подход к систематизации
процесса программирования приложений, при помощи чего мы достигаем
значительного повышения производительности труда AutoLisp-
программиста.  Идея лежащая в основе Autolisp Source Toolbox состоит
в том что программу, реализующую  данный  типовой  чертеж,  условно
можно разбить  на  типовые  фрагменты,  каждый из которых может
быть реализован отдельной функцией.  Таким образом, программу,
реализующую типовой чертеж детали, можно представить в виде на-
бора специальных функций.  CompuGraph AST / AutoLisp Source
Toolbox / и представляет собой библиотеку исходных текстов таких
функций.

   3. Автоматизация отрисовки частей сборочного чертежа
средствами AutoLisp и с использованием:
 - параметризованные крепежные пакеты, фланцевые соединения,
подшипниковые узлы и т.д.
 - программы реализующие методы аппликации ( удаление невидимых
линий , вырезание штриховки , удаление чертежной рамки и тех.
требований из чартежа вставляемого блоком узла и т.д. ).
 - параметризация деталей входящих в заводские нормали.
 - компоновка сборки из стандартизованых библиотек блоков
и символов / с автоматизацией формирования фрагментов конструк-
торской спецификации /.
   Выигрыш здесь как прямой так и косвенный. Прямой в самом про-
цессе ускорения создания сборочного чертежа. Косвенный же выигрыш
заключается в том что черчение сборок, как правило не может быть
поручено CAD-операторам и выполняется конструкторами имеющими
приличную квалификацию время которых дорого.   Актуальным здесь
безусловно является задача качественной организации САПР-овской
базы данных и средств навигации по ней.  Под САПР-овской базой
данных мы понимаем совокупность:
  - AutoLisp программ реализующих оформительские операции;
  - AutoLisp программ реализующих заводские нормали;
  - AutoLisp программ реализующих типовые фрагменты чертежа
( соединения , канавки , отверстия , пазы и т.д. );
  - расчетных программ ( например рачет пружины или зубчатого колеса )
с визуальным цифровым выводом ;
  - расчетных программ c оконечной частью на AutoLisp производящих
построение в заданном месте чертежа рассчитанной детали или узла
( в заданной проекции );
  - типовых блоков с атрибутной информацией для формирования
спецификации ( реализующих некоторые элементы сборочного чертежа,
например: размещаемые на оборудованиии датчики );
  - стандартизованных библиотек символов -  shx ( кроме шрифтов );
  - совокупности DWG-файлов начерченных ранее;
  - текстовых документов на машинных носителях ( это ASCII-файлы
содержащие информацию технических требований , спецификации ,
ведомости покупных изделий и извещения об изменении , возможно
с графической частью );
  - трехмерных моделей полученных из рабочих станций ( из них
также могут быть сняты контура и проекции для облегчения задач
выпуска чертежной КД );
  - справочная информация на магнитных носителях: это и ограничи-
тели материалов и ГОСТ-ы, ОСТ-ы и методики расчетов и графо-текстовые
диалоговые
экспертно-обучающие системы по правилам конструирования ( имеются
наработки авторов ) с возможностью извлечения и вставки графических
блоков в чертеж.
   При работе над чертежом конструктору за персоналкой, свазаной
с локальной сетью может понадобится самые различные фрагменты этой
базы данных. И здесь важно следующее: конструктор должен быть
в состоянии легко и быстро определить есть ли в базе интересующая
его информация, и так же быстро использовать ее для прочтения,
просмотра, выполнения или вставки в чертеж.  Более того в случае
необходимости желательно иметь возможность ввести недостающие
фрагменты с чертежей на ватмане ( кальке или синьке ) при помощи
оптического сканера.
  Опробованный нами пакет RasterWare позволяет это делать
не прерывая работы с чертежом и сразу вставлять введенный
фрагмент как блок в текущий чертеж. RsterWare v 1.2 фактически
представляет собой экранный дижитайзер.
   Это единственный - не имеющий аналогов СОВМЕЩЕННЫЙ РЕДАКТОР
РАСТРОВОЙ И ВЕКТОРНОЙ графической информации вместе на одном
экране дисплея ОДНОВРЕМЕННО С НАЛОЖЕНИЕМ.  Изначально совместим
со стандартными сканерными редакторами и преобразователями
из растра в вектор исполдьзующими международные форматы представ-
ления растровой информации.
  Используя RasterWare Вы можете быстро сколоть растровый чертеж
на экране ПЭВМ используя все виды обьектной привязки AutoCAD а
также режим ортогональности линий и развитые возможности редак-
тирования введенной векторной и растровой информации.  Полученный
сколкой чертеж прямо читается Автокадом.  На выходе RasterWare
целостный DWG-файл.  Экранные дижитайзеры - это принципиально
новый и практически эффективный при промышленном применении подход
к обработке САПР-овской графической информации.
  RasterWare во многих случаях более эффективно может быть применен
для наполнения базы данных САПР чем преобразователи из растра в
вектор , быстродействие которых часто оставляет желать лучшего.
  Преобразование к векторному формату отдельных фрагментов чер-
тежа в процессе сколки также входит в число возможностей доступных
в меню UTILITY редактора RasterWare.
  Как только мы начали промышленно использовать оптические
сканеры для ввода конструкторских чертежей с бумаги в персональные
компьютеры, мы поняли что без такой программы нам не обойтись.
  Схема применения экранного дижитайзера показана на рис 1.

   Таким образом
мы видим что САПР-овская база данных представляет собой
совокупность разнородных данных интерпретация которых требует
разнообразных и мудренных программных средств. Нечего и думать
эффективно организовать данную базу только средствами файловой
структуры MS-DOS, даже когда колличество выпущенных чертежей
исчисляется сотнями это становится затруднительно - а если
тысячами.  При построении такой базы данных, как один из элем-
ентов программного обеспечения, могут быть использованы высоко-
качественные программные средства визуализации и архивирования
DWG-файлов ( типа AutoManager ) однако полностью проблему
поддержки CAПР-овской базы данных они не решают. Наивно даже
пытатся втиснуть весь обьем такой разнородной информации
как перечисленна выше в рамки диктуемые возможностями таких
разработок как СУБД RELIEF или ABASE , на большинстве предпри-
ятий продвинувшихся в этом направлении несколько вперед выбран
путь создания собственных программных средств на многоязыковой
/ с элементами BATCH процессов / базе, при этом как правило ис-
пользуются системы интегрирующие возможности стандартных баз
данных с возможностями ADS database applications , drawing
viewers как правило в сетевой среде.
  Причем в качестве стандарта на хранение чертежей в графических
базах данных лучше применять DWG формат AutoCAD версии 10,
а не производные форматы : DXF, DXB, PLT.  Хотя спецификации
DXF и DXB открыты, их недостатком является необходимость
преобразования информации в DWG-формат перед просмотром и
использованием , такое преобразование занимает некоторое
время и на практике неприемлемо.  Гораздо лучше хранить
чертежи в виде архивированных DWG, тогда они будут готовы
для мгновенного использования.  Фирма AutoDesk никогда не
публиковала DWG формат, однако теперь это не представляет
собой серьезную проблему. Коллективы владеющие форматом
( см. [2] ) могут за небольшую плату разработать обьектные
модули ( для встраивания в комплексную систему обслуживания
САПР-овской базы данных предприятия ).  Для каких задач
может быть необходима непосредственная обработка DWG-формата ?
 Перечислим наиболее типичные:
   - генерация спецификации по заданному DWG-файлу сборочного
чертежа. Программа прямого доступа к DWG извлекает из чертежного
файла значения атрибутов приписанных блокам и передает в
систему автоматизированного выпуска спецификации или просто
визуализирует спецификацию , если номера листов и строк
спецификации присутствуют в атрибутной информации DWG-файла.
   - поиск по всей файловой или архивной структуре винчестера
DWG файла с заданным децимальным номером ( аналогично тому как
это делают антивирусы ). Такая и ей подобные функции просто
обязаны быть в арсенале администратора САПР-овской СУБД. Я думаю
не будет откровением что наличие таких относительно низкоуровневых
средств навигации в базе, будет полезно и внесет неоценимый вклад
в повышение живучести и устойчивости к катастрофическим сбоям
оборудования / которые вполне могут нарушить сетевые связи отслежива-
емые Вашим прикладным программным обеспечением СУБД / .
 Вообще желательно делать сетевые связи между данными на базе возмож-
ностей предоставляемых прикладными пакетами или естестенно генери-
руемой ими информации.  Несколько слов в связи с этим по поводу
так называемого аппарата меток. Далеко не все мы обращали внимание
на команду HANDLES при чтении руководства по AutoCAD.
  Эта команда создает метки / идентификационные номера / для каждого
примитива в чертежном файле AutoCAD. Метка примитива в отличии
от имен примитивов, возвращаемых функцией AutoLisp ssname, оста-
ются постоянными от одного сеанса редактирования DWG-файла до
другого. Таким образом через метку пожет быть связана например
замкнутая полилиния контура детали со строкой реляционной базы
данных.
 Сразу после создания примитива, получим метку:
    (setq <метка1> (assoc 11 (entget (entlast)  )))
можно сохранить ее в базе данных.   В совершенно другом
сеансе редактирования, получив из программы обслуживания
внешней базы данных <метку1> затем применив функцию AutoLisp
           (handent <метка1>)
можно получить имя данного примитива в новом / текущем /
сеансе редактирования.
  Другим мощным средством, создания сетевых ссылок является
аппарат XREF ( перекрестных ссылок ) введенный фирмой Autodesk
( здесь не имеется ввиду Autodesk-параллель ) в версии 11
Автокада.  Теперь иерархическая блочная структура чертежа
может быть смоделирована посредством ссылок. Определение блока
вставленного в чертеж теперь не обязательно должно располагатся
в том же самом чертежном файле, а может находится где-то вне
его ( в другом файле , другом дирректории , на другой машине ).
 Этот факт иллюстрируется на рис. 2.
   В версии 11 AutoCAD для работы с внешними ссылками введена
команда следующего формата:

           XREF
           ?/Bind/Detach/Patch/Reload/<Attach>:

 ? - выдать справку: в каких внешних файлах находятся определения
/ definition / блоков чертежа.
 Bind - добавить ссылку , т.е. сделать внешний DWG файл блоком вашего
чертежа.
 Detach - удалить внешнюю ссылку из чертежа.
 Patch - отредактировать путь к файлу определения ссылки.
 Reload - обновить информацию обо всех ссылках.
 Attach - переписать определение ссылки из внешнего файла в
block definition area текущего чертежа.
  Ссылки оказываются весьма полезны при технологии работы конструк-
торов типа concurrent engineering. Этим термином в США и Канаде
называют полностью автоматизированный процесс конструирования
в сетевой среде, когда чертеж выполняемый каждым конструктором
связан как дочерняя ссылка с файлом DWG сборочной еденицы верх-
него уровня. Таким образом члены коллектива работающего над одним
проектом постоянно в курсе последних конструктивных решений
принятых их коллегами.

  Небезынтересным для серьезного читателя-производственника будет
и приведенное ниже описание эксплуатируемой у нас базы данных
для САПР.  Построена база данных на основе информации содержащейся
в справочнике конструктора-машиностроителя под редакцией В.И.Анурьева.
  База данных состоит из совокупности узлов в каждом из которых
обьединены:
   1. Параметрическая lisp-программа черчения детали из Справочника.
   2. Реляционная таблица параметров для lisp-программы ,
 в виде DBF-файла.
   3. Иллюстративный слайд к программе - находящийся в библиотеке
слайдов - SLB.
   4. Поясняющая текстовая информация ( описание полей DBF и осо-
бенностей выполнения детали и работы lisp-программы ).
  Линейное меню доступа к таким узлам реализовано в виде падающих
меню AutoCAD.
  Lisp программы написаны методом ручного программирования.
  Для сопровождения таблиц параметров применяется dBASE III+,
для сопровождения библиотеки иллюстративных слайдов - библиотекарь
AutoLIB / нашей разработки /.   Оперативная / т.е. доступная
прямо из редактора AutoCAD / система навигации по базе данных
написана на языке C. Она обрабатывает DBF, SLB, DWG файлы непосред-
ственно в интегрированном режиме. Все операции выполняются
прозрачно для пользователя AutoCAD.  Блок-схема СУБД спроектирован-
ной нами для поддержки библиотеки параметрических образов
приведена на рис. 3. Особо следует отметить эффективность работы
с данным продуктом / .exe модуль занимает менее 100 кб и поэтому
загружается очень быстро.   Входной интерфейс каждой Lisp-программы
из библиотеки оформляется по специальным правилам гарантирующим
их применимость в трех случаях:
 1. Параметры передаются из базы данных, точки привязки к чертежу
вводятся в диалоге: полученные из базы данных параметры можно
частично изменить, и после отрисовки детали запомнить новый модифици-
рованный список параметров в базе данных.
 2. Все параметры вводятся в диалоге.
 3. Все параметры ( включая точки привязки ) передаются из вызы-
вающей программы, реализующей например геометрию сборочного узла.
  Таким образом каждая параметрическая программа из библиотеки может
быть применена для параметризации сборки, в которой она имела несчастье
быть примененной.  В этом случае сборка может быть отрисована как
последовательность вызовов параметрических программ рисования деталей,
перемежающаяся с оригинальным AutoLisp-кодом, вычислениями входных
параметров этих программ и с вызовами служебных модулей отсечения
и вырезки невидимых частей.

  Практика показала что для задач промышленной параметризации
машиностроительных чертежей, средства претендующие на всеобьемлющий
охват этой проблемы / например генераторы программ Glisp и Loops ,
система параметризации p-Design / полностью непригодны для промыш-
ленного применения. Автору неизвестны производственные коллективы
применяющие их в работе практически. По мнению автора реальные их
возможности не превышают возможностей команды STRETCH, если ее
применение производится при проставленных ассоциативных размерах.
 В лучшем случае при применение GLISP отладка программы заменяется
отладкой чертежа. Кроме того ( и это очень существенно ) сопровождать
программы сгенерированные автоматически практически невозможно.
  Даже если применение GLISP осуществляется строго внутри "AutoLisp
софтверхауса" обслуживающего предприятие, все равно судьба сгенери-
рованных GLISP и переданных на завод программ проблематична в
долгосрочной перспективе из за трудностей сопровождения.
 Согласитесь, что всегда приятнее иметь дело с прграммой написанной
человеком и обильно снабженной комментариями, тем более это касается
производства с его неизбежной текучестью кадров. Таким образом
видимо нам придется еще некоторое время иметь дело с ручным програм-
мированием на AutoLisp, но не печальтесь этим не пренебрегают до сей поры
и за рубежом, и видимо не случайно.  Хотя безусловно параметрическая
система общего назначения может быть построена в AutoCAD. Для этого
исходный для параметризации чертеж должен создаватся по строго
регламентированным правилам ( возможно с помощью некоторых программных
средств ).  Затем такой чертеж будет обрабатыватся некоторым Lisp-
процессором, выполняющим операции параметризации над стандартизированными
структурами данных поступающими на вход / здесь могут использоватся
метки, ассоциативные размеры, аппарат entget entmod и т.п. /.
 Известны примеры таких разработок.
 Но большого выигрыша здесь не будет, так как эксплуатирующий такую
систему параметризации персонал все равно должен будет следовать
своду правил изложенному в мудреной инструкции, а чем это лучше в
конце концов ручного программирования.

   Судя по последним данным есть все основания полагать, что
на ближайшее десятилетие AutoCAD по прежнему останется стандартом
CAD software для индустрии. Среди факторов определяющих такой
вывод:
  - огромное число официальных и неофициальных пользователей ;
  - поддержка со стороны крупной фирмы-разработчика / со стабиль-
    но растущими финансовыми результатами /.
  - постоянное наращивание возможностей продукта, выражающееся
в разработке и выпуске новых версий / см.далее / ;
  - растущая библиотека приложений-надстроек во всех проблемных
областях где применяется AutoCAD ;
  - значительное число подготовленных к работе с этим пакетом
специалистов , у нас и в мире.
  Раз уж мы затронули вопрос о новых версиях AutoCAD, то вероятно
будет к месту осветить новые возможности добалвленные в пакет
AutoCAD версии ...  12.  В двенадцатой версии AutoCAD - главное
меню отсутствует - загрузка DWG и других файлов осуществляется
как в turbo-среде посредством диалогового списка.  Возможности,
которые в предыдущих версиях назывались - AUI ( Advanced User
Interface ) включающие падающие и иконные меню , диалоговые окна
типа DDATE, DDEMODES, DDLMODES существенно развиты и формализованы
в виде GUI ( Graphical User Interface ). Эти возможности
использует не только сам AutoCAD r12 но их может применять в своих
приложениях / AutoLisp , C-ADS applications / и пользователь.
 Для этого нужно описать тредуемые диалоговые списки, scrollable
lists, и графические окна на специальном языке управления диалогом
и поместить в специальный файл определения диалога / dialog
description file /, последние , как и AutoLisp одинаковы для
всех платформ AutoCAD от PC до Silicon Graphics. Падающие меню
могут теперь иметь любой уровень вложенности. Одновременно с .MNX
r12 загружает и ассоциированный с ним AutoLisp код из файла .MNL .
  AutoCAD r12 Help представляет собой информацию в электронном
формате настольной издательской системы с гипертекстовыми связями
между разделами Help. Для выбора группы обьектов по Select object:
теперь можно применять не только прямоугольное окно но и произволь-
ную замкнутую ломанную.  В дополнение к замороженным слоям / frozen /
в 12-й версии добавлены блокированные / locked / слои.  Locked-слой
остается видимым но не обрабатывается, что позволяет существенно
ускорить привязки OSNAP.  PRPLOT команда исключена. Параметры
команды PLOT могут сохранится в файлах PCP и загружатся затем
без повторного конфигурирования. Есть возможность получить PLOT
в электронном виде посмотреть его на экране и лишь потом отправить
на бумагу.   Существенно ( ! ) возросло быстродействие AutoCAD
при выполнении операций с чертежом. Автоматическое сохранение
чертежа через установленный интервал времени.  Фонты теперь
могут импортироватся и экспортироватся в PostScript формате.
  Встроенный калькулятор добавлен. Также введена поддержка
трехмерного дижитайзера через ADI-драйвер ( это важно в машино-
строительных приложениях, в частности в автомобилестроении при
проектировании кузовов ). AutoShade встроен как часть AutoCAD r12.
 Существенно ускорена загрузка .lsp файлов. DXFIX утилита выполняю-
щая преобразование DWG-файлов из версии 12 обратно в версию 10.
 Добавлены новые возможности по связи чертежа с базами данных в
форматах dBASE , Paradox , Oracle.
  Широкое использование AutoCAD в качестве средства черчения
сделало перспективным и его параллельное использование в каче-
стве средства подготовки иллюстративной графики для программных
комплексов ACУ производственного назначения.
   Примеры могут быть следующими:
 - информационно поисковая система по инструменту ,
 - справочно информационная система о месте локализации пожаров
на территории предприятия,
 - экспертно-обучающие системы по устройству и конструкции изделия
разработанного на данном предприятии / такого рода обучающие
программы могут быть легко созданы с использованием прямой визуали-
зации DWG-файлов с наложенной текстовой либо слайдовой информацией,
создание подобных систем выглядит привлекательным еще и потому
что при машинном выпуске КД львинная доля их фактического напол-
нения и так уже находится,к концу разработки, на машинных носителях /.
  При построении экспертно-обучающих систем с совмещением AutoCAD
графики и текстовой и алгоритмической информации используйте
продукт DWGVIEW [2] в виде .exe или .obj модуля.  При увязке текста
и графики Вам придется выбирать либо соответствие по координатам
графического файла, либо соответствие по атрибутам или ссылкам.
  В заключение хотелось бы проиллюстрировать некоторые простые
но неочевидные на первый взгляд приемы программирования на языке
параметризации чертежей.  Например, представте что Вам необходимо
параметризировать осесимметричную деталь
    Естественно Вам бы хотелось запрограммировать только половину
детали, а вторую половину получить зеркально, однако как на
AutoLisp сформировать набор выбора. Покажем как это сделать двумя
способами:

(setq set (ssadd))          ; создать набор
(setq label (entlast))      ; поставить метку в DWG

    .
    .    <  здесь операторы рисования половины детали >
    .

(while (setq label (entnext label))
       (setq set (ssadd label set)) )  ; переписать в набор
 ; все что было отрисовано после метки

(command "mirror" set ""  p1 p2 "N" )
   Где:
  set - набор выбора, куда попадают все примитивы, отрисованные
после маркирования базы данных DWG-файла меткой label.
  p1 , p2 - крайние точки осевой линии.

  Альтернативным способом является использование операторов
вида:
(command "line" a1 a2  "") (setq set (ssadd (entlast)))
(command "line" a4 a3  "") (setq set (ssadd (entlast) set))
(command "line" a3 a2  "") (setq set (ssadd (entlast) set))
  после выполнения этих операторов прямые a1,a2 ; a4,a3 ;
a3,a2 оказываются в наборе выбора set с которым теперь
можна выполнять зеркальное отображение.
  Второй способ формирования набора выбора / selection set /
существенно выгоднее с точки зрения быстродействия lisp-программы,
хоть ему и свойственна некоторая текстуальная избыточность.

   Каждый кто знаком с системой AutoCAD наверняка знает, что
введенная в чертеж текстовая строка рассматривается системой
как единое целое, а это не всегда удобно. Например если при черчении
таблицы Вам нужно перенести один столбец немного правее командой
MOVE - обычно зто невозможно. В такой ситуации может помочь
программа разбиения текста на слова приведенная ниже / она
написана автором /.  Текст программы разбиения строк на слова
приведен в приложении. Вы можете использовать ее с любыми
целями, в том числе и коммерческими, не модифицируя при этом
также желательно сообщить о таком использовании автору.
  Данная программа работает по методу конечного автомата.
После того как она обработает строку или группу текстовых
строк, Вы сможете отдельно любое слово , например перенести
командой MOVE или изменить цвет или стиль некоторых слов
командой CHANGE.
   Напомним что если Вас уважаемый читатель заинтересует
один или несколько из продуктов приведенного ниже списка
обращайтесь по адресу:  320027 , г. Днепропетровск ,
ул. Кирова 2 - 4 , Б. Б. Ткаченко.
  - АРМ КОНСТРУКТОРА МАШИНОСТРОИТЕЛЯ  Версия 3.0 . (мощная
надстройка над AutoCAD обеспечивающая выпуск КД по отечественным
стандартам + библиотеки элементов к AutoCAD из элементной базы
справочника Анурьева ) ;
  - AutoLIB - менеджер библиотек слайдов AutoCAD / поставляется с
исходными текстами /;
  - AutoMENU - графический интерфейс для построения производственных
баз данных c возможностью визуализации изображений созданных системой
AutoCAD / поставляется с исходными текстами ;
  - RasterWare - совмещенный редактор сканерной информации и автокад-
совместимого векторного формата представления чертежа, возможность
сколки сканерной картинки прямо с экрана ;
  - AutoScan - дополнительный модуль полностью автоматизированной
векторизации для RasterWare. Автоматизирован преобразование из
растрового формата оптических сканеров в формат DWG.
  - DWGVIEW - программа визуализации DWG файлов отдельно от
Автокада, позволяет вызывать пользовательский код после каждой
операции REDRAW. Вообще полный формат DWG-файла пакета AutoCAD
версии 10 может быть передан вместе с этой программой по
   о т д е л ь н о й     договоренности.  Формат вызова из DWGVIEW
пользовательской функции приведен ниже:

int user_func( char* dwg_filename         ,
               char* global_text_filename ,
               int   ZOOM_DWG_minX        ,
               int   ZOOM_DWG_minY        ,
               int   ZOOM_DWG_maxX        ,
               int   ZOOM_DWG_maxY           );
  где
   dwg_filename   -  имя просматриваемого DWG-файла.
   global_text_filename - имя текстового файла куда user_func должна
выдать результаты своей работы.
   ZOOM_DWG_minX
   ZOOM_DWG_minY        -   координаты в системе WCS обозреваемого
   ZOOM_DWG_maxX            фрагмента DWG файла.
   ZOOM_DWG_maxY
 При помощи функции пользователя возможно организовать координатное
соответствие.  То есть например приписать к каждой детали / узлу /
сборочного чертежа описание этого узла /детали/ или ссылку на DWG
файл его деталировки.  Такая поддержка сборочной иерархии является
более универсальной и более гибкой чем использование вставленных
блоков или ссылок XREF.
  Таким образом мы видим что AutoCAD продолжает оставатся
димнамично развивающимся продуктом и несомненно ИМЕЕТ БУДУЩЕЕ.
  Уже сейчас вопрос о совместимости с AutoCAD становится главным
вопросом выживания на рынке конкурентных к нему разработок.
  Реализации AutoCAD поставляются для : PC DOS , PC Windows ,
Macintosh , HP Series 700 , IBM RS/6000 , Silicon Graphics IRIS ,
HP Apollo 9000 , Sun и др.  Таким образом мы видим что между
двумерными приложениями САПР ( проблемным программным обеспечением
пользователя для автоматизированного черчения )  и разнородным
аппаратно-программным обеспечением ЭВМ начинает складыватся
cтандартизованный интерфейс в виде совокупности независимых от
оборудования средств пользовательской настройки AutoCAD / lisp,
язык меню и т.д. /.  Появляется надежда на то что Ваши программы
на AutoLisp возможно и не придется переписывать с совершенствованием
аппаратной базы информатики на Вашем предприятии. Выбирайте
AutoCAD - это стандартная система, в числе последних достоинств
которой является элементарное отсутствие ошибок в ней.


Литература:
  1. "КОМПЬЮТЕР-ПРЕСС" N 11/90.  APM - ДЛЯ ИНЖЕНЕРОВ
МАШИНОСТРОИТЕЛЕЙ. cтр 48.
  2. "КОМПЬЮТЕР-ПРЕСС" N 3/92. DWGVIEW. cтр 76.
  3. "КОМПЬЮТЕР-ПРЕСС" N 12/91.  AutoMENU. AutoLIB. cтр. 12.
  4. CADalyst may 1992. How to Choose the Best Plant
Design Software. p. 21.
  5. CADalyst march 1992. Just Add AutoCAD. p. 2.
  6. AutoCAD release 10. User Guide.
  7. AutoCAD release 11. User Reference.
  8. CADalyst. june 1992 David Cohn  And Now Heeeee-re's 12 !
 10. CADalyst. July 1992 There Are 174  New Features in AutoCAD
Release 12.
 11. Справочник конструктора машиностроителя. под ред. В.И. Анурьева
___________________________
All product names are trademarks of their respective owners.


                ПРИЛОЖЕНИЕ
              ______________


; функция определения длины текста
(defun    txtlen   (   EN   /   E1   ED   LENGTH   PT1   PT2  )
; (0562)47-30-54  Dniepropetrovsk city , CompuGraph ltd.
        (setq   ED   ( entget EN )  ) ;    entity info
           (if
                (= "TEXT" (cdr (assoc 0 ED) ) )
             (progn  ;if entity is text...
               (setq E1 ED) ;save a copy
               (setq ED (subst (cons 72 2) (assoc 72 ED) ED)   )
               ;modify text to rt. justified
               (entmod ED)
               (setq ED (entget EN))
               ;update entity details
               (setq PT1 (cdr (assoc 10 ED) ) )
               ;get left endpt of modified text
               (setq PT2 (cdr (assoc 11 ED) ) )
               ;get right endpt of modified text
               (setq LENGTH (distance PT1 PT2) )
               ;calculate length of string
               (setq ED E1)
               ;restore string justification
               (entmod ED)
             ) ; progn
             ) ; if
       (if (/= "TEXT" (cdr (assoc 0 ED) ) ) (setq LENGTH nil)  )
               (setq LENGTH LENGTH)
) ; end defun txtlen

(defun C:EXPLTXT(  /
           i   oldb lvar
           lname_nab  glk
           n_nab
           nab
           name_nab   )
(setq oldb (getvar "BLIPMODE"))
(setvar "BLIPMODE" 0)
(setq lvar (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(terpri)
(prompt "Program for exploding text string.")
(terpri)
(prompt "        Tkachenko B.B., CompuGraph ltd., Dniepropetrovsk city.")
(prompt "        tel: (0562) 47-30-54 , 58-58-23 .")(terpri)
(prompt " Press any key ... ")(read-char)
;  функция разбиения произвольной строки текста на слова
(setq nab (ssget)) ; получить набор выбора общим путем
(setq n_nab (sslength nab)) ; число элементов набора
(setq i 0)

(while (not (eq i n_nab))
   (setq name_nab (ssname nab i))
   ; если name_nab - текст то разбить его
   (setq glk (txtlen name_nab))
   (SETQ lname_nab (entget name_nab))
   (cond (  (eq (cdr (assoc 0 lname_nab)) "TEXT")
            (rzb name_nab glk)
         )
   )
   (setq i (+ i 1))
)
(setvar "CMDECHO" lvar)
(setvar "BLIPMODE" oldb)
(setq lvar nil)
(prin1)
) ;   --------- defun mrazbt




(defun rzb ( in_xp_name glk /   C41
                            C50
                            C7
                            DX
                            gl_s_for_rzb
                            X1
                            h
                            i
                            n
                            newTXT
                            newsost
                            oldTXT
                            point
                            st
                            st_time
                            s_in
                            xp_name     )
(setq gl_s_for_rzb 0)
; функция разбиения одной строки текста имя примитива которой
; (0562)47-30-54  Dniepropetrovsk city , CompuGraph ltd.
;  передано в качестве параметра
;  C50 - угол наклона       h - высота текста
;  C41 - степень растяжения
(SETQ XP_NAME (ENTGET IN_XP_NAME))
(setq st  (cdr (assoc 1  xp_name))  )
(setq C50 (cdr (assoc 50 xp_name))  )
(setq C41 (cdr (assoc 41 xp_name))  )
(setq X1  (cdr (assoc 10 xp_name))  )
(setq h   (cdr (assoc 40 xp_name))  )
(setq C7  (cdr (assoc 7  xp_name))  )
(setq n  (strlen st) )
(setq glk (/ glk n))  ; char width
(setq i 0)
(setq st_time "" )
  ; reset input string
        (setq oldTXT (assoc 1 xp_name))
        (setq newTXT (cons  1 " "))
        (setq xp_name (subst  newTXT  oldTXT  xp_name))
        (entmod xp_name)

(setq continue T)
(while (eq continue T)

    (SETQ i (+ i 1))
    (setq s_in (substr st i 1))
      ;  FA table
     (if (and   (not (eq s_in " ") )
                 (eq gl_s_for_rzb 0)
          )
          (progn
          (setq st_time (strcat st_time (substr st i 1))   )
          (setq newsost 1)
          )
      )
      (if (and   (not (eq s_in " ") )
                 (eq gl_s_for_rzb 1)
          )
          (progn
          (setq st_time (strcat st_time (substr st i 1))   )
          (setq newsost 1)
          )
      )
      (if (and   (not (eq s_in " ") )
                 (eq gl_s_for_rzb 2)
          )
          (progn
          (setq st_time "" )
          (setq st_time (strcat st_time (substr st i 1))   )
          (setq newsost 1)
          )
      )
      (if (and   (eq s_in " ")
                 (eq gl_s_for_rzb 0)
          )
          (progn
          (setq newsost 2)
          )
      )
      (if (and   (eq s_in " ")
                 (eq gl_s_for_rzb 1)
          )
          (progn
          ; ---- выделить из буфера ----
        (setq DX  (* glk (1- (- i (strlen st_time)))   ))
        (setq point (polar X1 C50 DX))
        (command "copy" in_xp_name ""  X1  point)
        (setq time (entlast))
        (SETQ xp_time (ENTGET time))
        ;  замепнить текст во вновь созданной копии текста
        (setq oldTXT (assoc 1 xp_time))
        (setq newTXT (cons  1 st_time))
        (setq xp_time (subst  newTXT  oldTXT  xp_time))
        (entmod xp_time)
        (setq st_time "" )
          ; ---- выделить из буфера ----
          (setq newsost 2)
          )
      )

      (if (and   (eq s_in " ")
                 (eq gl_s_for_rzb 2)
          )
          (progn
          (setq newsost 2)
          )
      )
      (if (and   (> i n)
                 (eq gl_s_for_rzb 1)
          )
          (progn
          ; ---- выделить из буфера ----
        (setq DX  (* glk (1- (- i (strlen st_time)))   ))
        (setq point (polar X1 C50 DX))
        (command "copy" in_xp_name ""  X1  point)
        (setq time (entlast))
        (SETQ xp_time (ENTGET time))
        ;  замепнить текст во вновь созданной копии текста
        (setq oldTXT (assoc 1 xp_time))
        (setq newTXT (cons  1 st_time))
        (setq xp_time (subst  newTXT  oldTXT  xp_time))
        (entmod xp_time)
        (setq st_time "" )
          ; ---- выделить из буфера ----
          (setq newsost 3)
          )
      )
      (if (and   (> i n)
                 (eq gl_s_for_rzb 0)
          )
          (progn
          (setq newsost 3)
          )
      )
      (if (and   (> i n)
                 (eq gl_s_for_rzb 0)
          )
          (progn
          (setq newsost 3)
          )
      )
(setq gl_s_for_rzb newsost)
(TERPRI)
(PRINC GL_S_FOR_RZB)
(if (eq gl_s_for_rzb 3) (setq continue F))
)  ; while
(command "ERASE" in_xp_name "")
)


























