![]() |
Translate to: |
||||||
| Обратная связь | Новости САПР | Программы | Документация | Полезные советы | Обзорные статьи | ||
| Заказ и разработка | Каталог САПР | САПР-конференция | Библиотека ГОСТов | Наши соавторы | Коммерческое ПО | ||
В Автокаде, кроме видимых примитивов чертежа, таких как текст, линия, полилиния, круг и т.д. еще существует закрытая информаци-онная структура /ИС/, в которой отражается специфическая информация о каждом примитиве. Эта информация выстроена особым образом в виде ключевой структуры, т.е. непрерывной цепочки точечных пар, где первая цифра точечной пары является групповым кодом (ключом), т.е. «паролем» а второй член точечной пары, который устанавливается через точку, является параметром примитива, таким, как слой, номер цвета, высота текста, точка вставки, метка и т.д.. На первый взгляд нагромождение разных данных в этой цепочке, на самом деле является очень удобным средством доступа к параметрам примитива Автокада. Что же это может дать проектировщику?
Например, автоматическое (с помощью программы) изменение слоя, на котором установлен примитив, или изменение высоты символов текста, или точки вставки, или изменение данных атрибута в блоке и т.д. И надо подчеркнуть, что разные изменения можно производить в массовом порядке со всеми примитивами, установленными в чертеже. Как же увидеть эти цепочки. Для этого в командной стро-ке сеанса Автокада надо набрать несколько команд на языке Автолиспа.
(setq a (car(entsel «Выберите объект»)))
Рассмотрим данное выражение: команда setq позволяет присвоить переменной /a/ содержимое выражения -
(car(entsel «Выберите объект»))
Команда entsel по запросу в командной строке «Выберите объект» позволяет выбрать примитив из чертежа, указав на него курсором. Возвращает же выражение - список, где первый элемент - это имя выбранного примитива, а второй элемент - это координаты точки, использованной для указания примитива.
(Не надо путать ИМЯ примитива и ИМЯ блока.)
Функция car позволяет выбрать из выражения-списка первый элемент списка, т.е. имя примитива
После набора первого выражения необходимо добавить следующую функцию Автолиспа –
(entget a)
Эта функция вызывает информационную структуру примитива с именем /a/, т.е. того примитива на который указал проектировщик.
Если мы выбрали для просмотра блок, то набрав следующее выражение:
(setq a (entnext a))(entget a)
мы можем просматривать атрибут блока, т.е.первый атрибут. Продолжая в том же духе, мы будем открывать /ИС/ следующих атрибутов, пока не закончится структура блока.
Команда setq позволяет присвоить переменной /a/ имя следующего примитива или подпримитива - а это и будет первый атрибут. Функция entnext отнесенная к имени определенного примитива, в данном случае к вставке блока и выполняет роль пролистывания подпримитивов (примитивов), входящих в состав блока из базы данных рисунка. Функция (entget a) при этом открывает информационную структуру подпримитивов. Повторяя это выражение мы будем получать имена следующих подпримитивов и их информационную структуру. В данном случае это будут атрибуты блока. И только получив тип подпримитива SEQEND – мы поймем, что блок закончился. Пример информационной структуры блока, установленного в рисунке: - надо уточнить, что при просмотре этой структуры проектировщик, как бы листает книгу – сначала на 1 листе приводятся данные по вставке блока INSERT, затем последовательно на каждом листе данные отдельно по каждому атрибуту ATTRIB этого блока. На последнем листе приводятся данные по концу блока SEQEND. Он служит признаком конца просмотра данных блока для программ. Надо добавить, что данные простейших примитивов (линии и текст), которые находятся в блоке, в информационной структуре блока отсутствуют и появляются отдельно при расчленении блока.
Самые важные данные вставки блока т.е. блока, установленного в рисунке: (данные выстроены в столбик для наглядности)
| -1 . _________ | (Имя примитива /a/ ) |
| 0 . INSERT | (Тип примитива - вставка блока) |
| 5 . «2330» | (Метка блока) |
| 8 . «AV1» | (Слой на котором установлен блок) |
| 2 . «S_TS» | (Имя блока) |
| 10 . 887.0 211.0 0.0 | (Координаты точки вставки блока Х,Y,Z) |
Самые важные данные атрибута блока, текстовой переменной - эти данные во многом соответствуют данным TEXT - текста
| -1 . _________ | (Имя примитива /a/ ) |
| 0 . ATTRIB | (Тип примитива - атрибут блока) |
| 5 . «2331» | (Метка атрибута) |
| 8 . «AV1» | (Слой на котором установлен атрибут) |
| 1 . «12» | (Значение по умолчанию - цифра 12, означающая N позиции прибора) |
| 2 . «POZ» | (Имя атрибута - определяется проек-тировщиком при создании блока) |
| 10 . 897.179 213.0 0.0 | (Координаты 1 точки атрибута Х,Y,Z) |
| 11 . 899.0 214.5 0.0 | (Координаты 2 точки атрибута Х,Y,Z, если есть выравнивание) |
| 40 . 3.0 | (Высота символа) |
| 72 . 4 | (Тип выравнивания текста - посередине) |
Надо добавить, что при продолжении команд просмотра примитивов рисунка после окончания просмотра блоковой структуры на очереди могут оказаться как простые примитивы рисунка (линии, окружности, текст ….), так и следующие блоки. При этом информационная структура атрибутов данного блока будет выстроена вслед за вставкой блока.
При всей простоте просмотра ИС примитивов в практике работы приходится часто ею пользоваться для просмотра неизвестных примитивов.
Кстати команда (entnext) без переменной дает имя первого примитива в чертеже. Это важно при глобальной работе с примитивами чертежа, когда при просмотре всех примитивов чертежа этот просмотр надо начать с первого примитива и закончить последним.
Copyright © Сайт поддержки пользователей САПР