 |
сделаны с данными подпримитивами, можно использовать функцию ENTUPD, опи-
санную ниже, для обновления изображения на экране.
5. 4. 4. (entupd )
Как описано выше, когда функция ENTMOD модифицирует вершины
полилиний или аттрибуты блоков , полный комплект примитива не обновляет-
ся на экране. Например, если были модифицированы 100 вершин сложных по-
лилиний , пересчет и перечерчивание Polyline, так же как и каждой вер-
шины , которая была изменена, будет сделано неприемлемо медленно. Обыч-
но, можно применить функцию ENTUPD, чтобы модифицированную Polyline
или блоки обновить на экране. Функция ENTUPD назовет именем примитива
любую часть Poliline или блока. Нет необходимости иметь заголовок прими-
тива,функция ENTUPD найдет заголовок. Когда функция ENTUPD предназначена
для полилиний и аттрибутов блоков ,ее можно вызвать для любого примити-
ва. Она всегда будет восстанавливать примитив на экране , включая все
подпримитивы.
5. 4. 5. Ограничения
Имена примитивов ( entity names ) и наборы выбора ( selection- sets )
- 73 -
Руководство пользователя по АВТОЛИСПу
действительны только в течение сеанса редактирования ,в котором они при-
меняются в AutoCADе. Так, если вы попытаетесь произвести какие-нибудь по-
следующие действия , пока активны команды PLINE или ATTEDIT , будет воз-
вращено " nil" и запрос функции не будет выполнен.
ENTMOD чтобы модифицировать существующий примитив
ENTUPD чтобы восстановить модифицированный сложный примитив
ENTDEL чтобы не удалять и восстановить уничтоженный примитив
5. 5. Применение в AutoCADе имен примитивов и наборов выбора
Имена примитивов (entity name) и наборы выбора (selection-sets)
необходимы для того , чтобы ввести из LISPа объекты выбора в ответ на
подсказку. Таким образом , примитивы , названные LISPом, могут работать
по командам AutoCADа. Подсказку "Select objects:" LISP может снабдить
именем примитива, который определяет единственный примитив или набор
выбора , чтобы выбрать все примитивы в наборе. Передача имен примитивов и
набора выбора из LISPа возможна в выборе "Last"( обе части ,
как способность выбирать примитивы, не взирая на видимость,так и
не специфицировать выбранные точки).
Всякий раз, когда AutoCAD позволяет сделать выбор объекта точ-
кой, списки в программе , возвращаемые функцией ENTSEL, допустят про-
цедуру выбора. Они выбирают примитив из списка, определяя точку в спи-
ске, как выбранную точку. Это позволяет LISPу перейти к вводу выбранных
точек такими командами, как BREAK, TRIM и EXTEND. Помните, что списки
формы ENTSEL могут использоваться для других выборов тоже , так же
точно, как точка, выбираемая позволяющей командой. Списки формы ENTSEL
не могут использоваться с командами FILLET и CHAMFER, которые применя-
ют два примитива и точки из механизма выбора.
5. 6. Доступ к таблице символов
:
Приведенные ниже функции TBLNEXT и TBLSEARCH снабжены таблицей :
символов, которая доступна только для чтения из AutoCADа уровня, типа :
линии, именованного вида, стиля текста и определения блока. :
:
:
5. 6. 1. (tblnext []) :
:
Эта функция используется для просмотра всех таблиц симво- :
лов. Первый аргумент - это идентификатор символа интересующей вас таб- :
лицы. Действительны имена "LAYER" , "LTYPE" , "VIEW" , "STYLE" и "BLOCK":
Именам не нужен верхний регистр. Когда присутствует второй аргумент , :
и не "nil", таблица символов переводится на начало и первый элемент в :
ней восстанавливается, в противном случае , восстанавливается :
следующий элемент в таблице. Когда совсем нет элементов в таблице , воз-:
вращается "nil". Удаленные элементы таблицы не возвращаются. :
Когда элемент обнаружен, он возвращается , как список точечных :
пар DXF кодов и значений , подобно тому ,который возвращает функция :
- 74 -
Руководство пользователя по АВТОЛИСПу
ENTGET.
:
Пример: :
:
(tblnext "layer" T) восстанавливает первый уровень :
может вернуть :
((0 . "LAYER") символьный тип :
(2 . "0") имя символа :
(70 . 0) флаги :
(62 . 7) цвет, негатив выключен :
(6 . "CONTINUOUS") тип линии :
) :
:
Обратите внимание , что совокупности "-1" нет. AutoCAD запоминает:
последний элемент , возвращаемый из таблицы, и просто возвращает один :
из следующих элементов ,при каждом вызове TABNEXTом этой таблицы. :
Когда вы начинаете просмотр таблицы , вы должны быть уверены , что вто- :
рой аргумент не "nil", чтобы перемотать таблицу и вернуть первый эле-:
мент . Элементы, восcтановленные из таблицы " BLOCK" , включают в себя :
совокупность "-2" c именем первого примитива в определении :
блока (или любого). :
:
Итак, назовем блок "BOX": :
:
(tblnext "block") восстанавливает определение блока :
может вернуть: :
((0 . "BLOCK") тип символа :
(2 . "BOX") имя символа :
(70 . 0) флажки :
(10 9.000000 2.000000 0.000000) Х,У,Z :
(-2 .
Эта функция просматривает таблицу символов , идентифицируемую :
( то же самое , что функция TBLNEXT), отыскивая имя символа:
присвоенного . Оба имени автоматически приводятся к верхнему ре-
гистру. Когда обнаружено имя элемента, подобное тому ,которое :
дал , эта запись возвращается в формате , описанном функцией :
TBLNEXT. Если такой элемент не обнаружен, возвращается "nil" . :
:
Например: :
:
(tblsearch "style" "standard") устанавливает стиль текста :
- 75 -
Руководство пользователя по АВТОЛИСПу
:
может вернуть: :
:
((0 . "STYLE") тип символа :
(2 . "STANDARD") имя символа :
(70 . 0) флажки :
(40 . 0.000000) фиксирование высоты :
(41 . 1.000000) фактор ширины :
(50 . 0.000000) угол :
(71 . 0) генерирование флажков :
(3 . "txt") самый первый font file :
(4 . "") большой font file :
) :
:
Порядок вводов восстановлен из TBLNEXT без воздействия функции :
TBLSEARCH.
5. 7. Доступ к графическому экрану и устройствам ввода
Функции AutoLISPа , описанные в этом разделе, обеспечивают пря-
мой доступ к графическому экрану AutoCADа, и устраивают вход из LISPа,
и позволяют средствами LISP-команд взаимодействовать с пользователем,
как если бы выполнение было без AutoCADа . Эти команды могут устроить
беспорядок на экране. Однако, любое повреждение , которое они наносят,
может быть отменено последовательностью:
(grtext)
(redraw)
однако , нет нужды касаться этого. Эти функции только для опытных поль-
зователей. Большинству применений LISPа не нужны эти функции. По-
льзователей предупреждаем , что действия этих функций могут быть из-
менены от выпуска к выпуску системы AutoCAD и, следовательно, Autodesk,
поэтому нет гарантии указанной выше совместимости применений этих функ-
ций. Применение функций GRTEXT и GRREAD также может быть неподходяще ,
для работы на любой жесткой конфигурации, если пользователь не очень
adfun.ru
|
|