Команда frto в автокаде
На этой странице будут выкладываться примеры LISP программ. По многим из них есть уроки с подробным описанием кода.
Если Вы знаете как запускать LISP программы в AutoCAD, то можете сразу перейти к списку программ .
Как использовать программы.
Все программы написаны для использования их в полной версии программы AutoCAD. Они не будут работать в AutoCAD LT.
Если Вам понравилась какая-либо программа на этом сайте и Вы хотите ее установить на свой компьютер. Для этого Вам нужно сделать следующее:
2. Все программы заархивированы. Поэтому после того, как вы скачали архив, его нужно разархивировать. Разархивировав архив, Вы получите файлы программы, которые можете хранить в любом месте на вашем компьютере (Я для этого использую папку D:\MyLisp);
3. Файлы программы нужно загрузить в AutoCAD;
4. Запускаем новые команды, которые хранятся в загруженных файлах.
Я думаю, что с первыми двумя пунктами справятся все. Поэтому сразу поговорим о загрузке LISP файлов в Автокад.
Загрузка LISP файлов в Автокад.
Загрузить в Автокад LISP программу можно несколькими способами. Опишу некоторые из них.
Загрузка файлов с помощью окна «Загрузка / Выгрузка приложений».
Откройте Автокад. На ленте перейдите на вкладку « Управление » и щелкните по кнопке « Приложение ». См. Рис. 1.
Если вы работаете в режиме Классический AutoCAD:
В главном меню выберите « Сервис », далее щелкните по строчке « Приложения… ». См. Рис. 2.
Откроется окно «Загрузка / Выгрузка приложений».
Найти папку , в которой лежит файл, выделите его и нажмите на кнопку « Загрузить ». См. Рис. 3.
Таким способом загружают программы для их временного использования. После того, как Вы закроете Автокад, а потом откроете его снова, их не будет в Автокаде, и для их использования их нужно загрузить снова.
Для того, чтобы нужные Вам LISP файлы загружались в Автокад автоматически, их нужно добавить в список автоматической загрузки. Для этого щелкаем на портфельчик « Автозагрузка » (или на кнопку « Приложения » под ним). Откроется окно «Автозагрузка», в котором нажимаем на кнопку « Добавить ». См. Рис. 4.
Рис. 4. Автозагрузка
Откроется окно «Добавление файла в список автоматической автозагрузки». Находим нужную папку , выделяем файл и нажимаем на кнопку « Открыть ». См. Рис. 5.
Рис. 5. Добавление файла в список автоматической автозагрузки
В окне «Автозагрузка» появится строка с файлом , который будет автоматически загружаться при каждом запуске Автокад.
После того, как Вы добавите все необходимые файлы, нажмите на кнопку « Закрыть ». Затем на кнопку « Закрыть » в окне «Загрузка / Выгрузка приложений». См. Рис. 6.
Рис. 6. Файл добавлен
Имейте в виду, что файлы загрузятся автоматически, только при следующем запуске Автокад. Если Вы хотите использовать их в текущей сессии, их нужно загрузить способом, описанным выше (либо каким другим способом).
Загрузка файлов с помощью Редактора Visual LISP.
Откройте Редактор Visual LISP:
Наберите в командной строке VLIDE (или VLISP) и нажмите <Enter>.
Или на ленте перейдите на вкладку « Управление » и нажмите на кнопку « Редактор Visual LISP ». См. Рис. 7.
Рис. 7. Редактор Visual LISP
Откроется Редактор Visual LISP. Нажмите на кнопку « Открыть файл ». Появится окно «Открытие файла для редактирования / просмотра».
Найдите нужную папку ;
Выделите файл и нажмите на кнопку « Открыть ». См. Рис. 8.
Рис. 9. Открытие файла в Редакторе Visual LISP
Файл загрузится в активное окно редактора. Чтобы загрузить его в Автокад, нужно нажать на кнопку « Загрузить активное окно редактора ».
Такой способ имеет свои плюсы, связанные с тем, что Вы видите программный код файла:
1. Вы можете посмотреть, сколько команд в этом LISP файле (их может быть несколько).
2. Найти имена этих команд: находим строку с функцией defun; Имя команды стоит сразу после с: (в нашем случаи это: 3d_tro и roY );
3. Кроме всего прочего Вы имеете возможность отредактировать код программы.
Рис. 9. Имена новых команд.
Чтобы определить границы команды в программном коде, поставьте курсор мыши перед открывающейся скобкой функции defun и дважды щелкните левой кнопкой мыши. Функция defun, которая описывает одну команду – выделиться. См. Рис. 10.
Рис. 10. Программный код одной команды
Запуск новых команд.
После того, как файлы загружены, мы может запускать в Автокад новые команды, которые хранятся в этих файлах. Для этого достаточно набрать ИМЯ КОМАНДЫ в командной строке и нажать < Enter >.
Кроме этого для любой команды можно создать кнопку.
Поместить ее на панель инструментов, а панель вынести на ленту.
После этого запускать команду, нажимая на эту кнопку.
Также для этих команд можно создать горячие клавиши и запускать их нажатием определенных клавиш на клавиатуре.
Как это сделать читайте в уроке: « Горячие клавиши Автокад ».
Конечно, мы разобрали далеко не все способы загрузки файлов и запуска команд, но этого в полнее достаточно для того, чтобы комфортно использовать LISP программы размещенные ниже.
Список LISP программ.
LISP программа «mp_kub.lsp»
Программа, которая рисует в Автокад куб со сторонами 200.
Для запуска в Автокад используется имя MP_KUB
После запуска выдает запрос: “ Укажите базовую точку ».
Указываем любую точку в рабочем окне Автокад. Команда построит куб со сторонами 200 .
Подробное описание программного кода смотрите в уроке: « Пример простой программы на LISP ».
LISP программа «mp_paral.lsp»
Программа рисует параллелограмм, со сторонами указанными в диалоговом окне. Программа работает только вместе с файлом диалогового окна « mp_paral.dcl ». Поэтому скачать надо два файла.
Чтобы Автокад определил местонахождение файла диалогового окна, его нужно поместить в папку вспомогательных файлов Автокад.
Либо в коде программы, в строке
Например, если файл находиться в папке « D:\MyLisp » строка должна выглядеть так:
Для запуска в Автокад используется имя MP_PARAL
После запуска на экране появится диалоговое окно.
Нужно указать размеры сторон параллелограмма и нажать на кнопку ОК .
Далее появится запрос: “ Укажите базовую точку ».
Указываем любую точку в рабочем окне Автокад. Команда построит параллелограмм со сторонами указанными в диалоговом окне.
Подробное описание программного кода смотрите в уроке: « Пример программы LISP с диалоговым окном ».
Подробное описание программного кода создания диалогового окна смотрите в уроке: « Диалоговое окно ».
LISP программа «Sum_dl.lsp»
Программа считает сумму длин выбираемых отрезков. В процессе выбора отрезков Автокад выдает количество выбранных отрезков и сумму их длины.
Для запуска в Автокад используется имя SumDl
После запуска выдает запрос: « Выберите отрезок »:
Укажите любой отрезок.
Ниже снова появиться запрос: « Выберите отрезок »:
Укажите следующий отрезок.
Ниже снова появиться запрос: « Выберите отрезок »:
Количество выбранных отрезков и их общая длина.
И так до бесконечности. Чтобы завершить выполнения программы нажмите клавишу < Esc >.
Подробное описание программного кода смотрите в уроке: « Пример AutoLISP программы: Сумма длин отрезков ».
LISP программа «Sum_dls.lsp»
Программа суммы длин со свободным выбором отрезков.
Программа считает сумму длин выбираемых отрезков.
Выбор отрезков можно делать и по одному и группой при помощи рамки (или при помощи секущей рамки). В общем, любым стандартным способом AutoCAD.
Для запуска в Автокад используется имя: SumDls
После запуска программа выдает запрос: « Выберите объекты »:
Выбирать отрезки можно любым стандартным способом Автокад. Если случайно выбран не тот отрезок, его выбор можно отменить. Для этого удерживая клавишу < Shift >, щелкните по нему. Этот отрезок будет исключен из выбора.
Процесс выбора и отмены выбора отрезков отражается в командной строке.
Отмена выбора объекта.
После того как вы выбрали все необходимые объекты, нажмите < Enter >, чтобы завершить выбор.
Результат выполнения программы.
Подробное описание программного кода смотрите в уроке: « Примеры LISP программ: Сумма длин отрезков ».
LISP программа «Sum_dlv.lsp»
Программа считает сумму длин отрезков на всем чертеже.
Для запуска в Автокад используется имя: SumDlv
После запуска программа выделить на чертеже все отрезки
Результат выполнения программы.
Подробное описание программного кода смотрите в уроке: «Примеры LISP программ: Сумма длин отрезков».
LISP программа «Sum_sl.lsp»
Программа считает сумму длин отрезков на выбранном слое.
Для запуска в Автокад используется имя: SumSl
После запуска программа выдает запрос: « Выберите объект для определения слоя: “
Укажите любой объект. Программа выделит и сосчитает длину все отрезков на слое, на котором расположен указанный объект.
Результат при выборе синего слоя.
Подробное описание программного кода смотрите в уроке: «Примеры LISP программ: Сумма длин отрезков».
LISP программа «Scom.lsp»
Программа показывает, как в программном коде AutoLISP можно использовать стандартные команды Автокад.
- Построения отрезка.
- Построения дуги.
- Использования команды редактирования: Зеркало
- Перевода чертежа ЮЗ изометрию.
- Построения Полуконуса.
Для запуска в Автокад используется имя: SCOM
После запуска программа выдает запрос: “ Укажите базовую точку ».
Указываем любую точку в рабочем окне Автокад. Команда построит два отрезка и дугу. Затем отзеркалит их. Потом переведет чертеж ЮЗ изометрию и построит Полуконус.
Подробное описание программного кода смотрите в уроке: « AutoLISP. Стандартные команды Автокад ».
LISP программа «mp_kub2.lsp»
Программа создает блок куба, стороны которого предварительно задаются.
Для запуска в Автокад используется имя MP_KUB2
После запуска выдает запрос: « Задайте длину стороны куба : »
Введите числовое значение стороны куба и нажмите < Enter >
Появиться запрос: “ Укажите базовую точку ».
Указываем любую точку в рабочем окне Автокад. Команда построит блок в виде куба со сторонами, значение которых мы задали при первом запросе.
Подробное описание программного кода смотрите в уроке: « AutoLISP. Создание блока ».
LISP программа «mp_kub3.lsp»
Программа создает блок куба при помощи функций расширения языка AutoLISP, стороны которого предварительно задаются. В программе вычисляется объем куба, и координаты центра верхней грани. Объем и координаты сохраняются, как дополнительные данные, которые в любой момент можно извлечь.
Для запуска в Автокад используется имя: MP_KUB3
После запуска программа выдает запрос: « Задайте длину стороны куба : »
Введите числовое значение стороны куба и нажмите < Enter >
Появиться запрос: “ Укажите базовую точку ».
Указываем любую точку в рабочем окне Автокад. Команда построит блок в виде куба со сторонами, значение которых мы задали при первом запросе. Так же программа сосчитает объем, и координаты центра верхней грани и сохранить их в блоке в качестве дополнительных данных.
Подробное описание программного кода смотрите в уроке: « LISP. Создание блока ».
LISP программа «Udim.lsp»
Программа считывает дополнительные данные из блока, созданного в уроке: «LISP. Создание блока». Вставляет динамический блок, созданный в уроке: « Создание динамического блока ».
Для того, чтобы посмотреть как работает программа предварительно нужно:
Для запуска в Автокад используется имя: UDIM
После запуска программа выдает запрос: « Выберите блок :»
Укажите предварительно построенный блок (созданный программой mp_kub3.lsp ).
Команда вставит выноску. Выноска будет начинаться из центра верхней грани. Сверху полки будет стоять имя указанного блока, снизу – его объем.
Далее программа снова выдает запрос: « Выберите блок: »
Укажите следующий блок.
Что завершит программу нажмите < Esc >.
Подробное описание программного кода смотрите в уроке: «Вставка динамического блока из LISP-программы».
LISP программа «Udim2.lsp»
Программа считывает дополнительные данные из блока, созданного в уроке: « LISP. Создание блока ». Вставляет динамический блок, созданный в уроке: «Создание динамического блока». Меняет длину и положение выносной линии и длину и положение полки.
Для того, чтобы посмотреть как работает программа предварительно нужно:
Для запуска в Автокад используется имя: UDIM2
После запуска программа выдает запрос: « Выберите блок: »
Укажите предварительно построенный блок (созданный программой mp_kub3.lsp ).
Появится начало выносной линии
Далее программа выдает запрос: « Укажите выносную линию: »
Нужно указать вторую точку выносной линии. Команда вставит выноску. Сверху полки будет стоять имя указанного блока, снизу – его объем.
Затем программа снова выдает запрос: « Выберите блок: »
Снова укажите блок куба.
На запрос « Укажите выносную линию: »
Укажите вторую точку линии в другом месте.
На следующий запрос « Выберите блок : » – нажмите < Esc >.
Программа нарисует две выноски к одному блоку.
Подробное описание программного кода смотрите в уроке: «Изменение динамического блока из LISP-программы».
LISP программа «3d_tro.lsp»
Программа содержит в себе две команды
Первая команда рисует в Автокад 3D тройник.
Для запуска в Автокад используется имя: 3D_TRO
После запуска выдает запрос: “ Укажите базовую точку ».
Указываем любую точку в рабочем окне Автокад. Команда построит 3D тройник.
Вторая команда поворачивает 3D тройник на 90 градусов вокруг оси параллельной оси Y.
Для запуска в Автокад используется имя: ROY
Предварительно выделите 3D тройник
Введите в командной строке ROY и нажмите < Enter >.
Повернутый 3D тройник.
Подробное описание программного кода смотрите в уроке: «3D моделирование в AutoCAD».
LISP программа « 3d_bolt.lsp»
Программа рисует в Автокад 3D болт.
Для запуска в Автокад используется имя: 3D_BOLT
После запуска выдает запрос: “ Укажите базовую точку ».
Указываем любую точку в рабочем окне Автокад. Команда построит 3D болт.
Подробное описание программного кода смотрите в уроке: «3D моделирование. Болт с резьбой.».
38 комментарии на “ LISP Программы. ”
Здравствуйте. как можно к вам обратиться для написания программы для автокада?
Неважно каким образом Вы выделите 3Д-тела. После того как они выделены, запускаем функцию (ssget). Получаем набор выделенных 3Д-тел. Сохраняем его в переменную set_obj
Загружаем функции расширения LISP
Организуем цикл, в котором перебираем по порядку все выбранные 3Д-тела.
Внутри цикла:
Переводим 3Д-тела в vla-объекты:
Программа меняет набор примитивов на выбранный примитив.
Примеры применения:
Замена одних блоков другими.
Замена точек блоками или окружностями.
Замена одних надписей другими.
Сначала надо выбрать заменяемые объекты и нажать Enter, затем указать заменяющий объект. Вставка производится в центр ограничевающего (габаритного) прямоугольника старых объектов. Новые объекты вставляются в слои которые к которым пренадлежали старые объекты. Поддерживается предварительный выбор.
Внешне выглядит так: объект-цель стирается, а на его место копируется объект-источник. Взял и текст заменил кругом, а зачем - не знаю.:)
> Владимир Громов
Человеку который это просил на форуме, надо было заменить больше тысячи точек на окружности. А когда я это писал моему другу нужно было заменить около 2000 блоков 3 видов на другие блоки. Так что иногда очень полезно. А принцип, "любые объекты- на любые" для универсальности, мало ли кому чего надо.
Классная штука . Очень нужная . Спасибо .
Очень полезная вещь. А если нужно заменить блоки и сохранить старое значение поворота?
С сохранением всех возможных свойств (углов поворота, масштабов, цвета, видимости и т.п.
> VVA
При работе с этой программой почему то блок который заменяется не удаляется?
И эта программа, похоже, работает только в WCS!
И по интерфейсу: все-таки логичнее сначала выбрать источник, а уж потом объекты для замены.
Наверное, надо просто добавить копирование свойства Normal, и этого будет достаточно.
---
ИМХО
Только сейчас дошли руки (отпуск)
> KAI
> kpblc
В ф-ции GetBoundingCenter при получении точки центра для Z было 0.
Исправлено
> boban
Добавлен запрос на удаление
И по интерфейсу: все-таки логичнее сначала выбрать источник, а уж потом объекты для замены.
Я тоже так думаю
> > VVA
1. На мой взгляд запрос на удаление источника - искуственный, гораздо было бы полезнее добавить запрос на удаление изменяемых объектов, причем по умолчанию - не удалять (контроль за работой программы иногда полезен).
2. Для объектов INSERT (и может быть TEXT, MTEXT и др.) желательно было-бы запрашивать у пользователя как вставлять: по точке вставки или по центру габарита объекта.
3. Что-то мне показалось, что для блоков с атрибутами центр окаймляющего прямоугольника вычисляются не совсем верно.
4. И вообще для такого рода программ очень полезнa была-бы опция Settings (по типу Matchprop), например, наследовать свойства источника, режим вставки и т.д..
> KAI
1. Да, я не правильно понял предыдущие посты. Добавлен запрос на удаление изменяемых объектов
массовое изменение высот в автокаде на заданный коэфициент
Самое простое что пришло в голову- утановить фронтальную проекцию и все точки с высотой отличной от ноля выделить, а потом дать смещение вдоль оси Z.
Если точки с высотами лежат на отдельном слое- то можно все точки по слою отфильтровать.
Лисп p_h подписывает z твоих точек текстом, лисп geo_calk производит некоторые математические опреации с этим текстом(уже и не помню какие, и есть ли там умножение, возможно есть), лисп z_txt поднимает твои точки на отметку, которая присутствует в содержании ближайшего текста (z изменяется на содержимое текста). Подробности использования можно погуглить, т к писать об этом долго, нудно и впадлу)
Всем спасибо, но малость не то.. у меня не точки а много много полилиний, причем мелко и тесно..и высоты прописать текстом а потом задать по ним высоты-он меня будет материть на каждой линий уточняя, а который из текстов нужный..щас я примерно так и делаю, выводит страшно..
Смещение вдоль z вроде как только на сколько то а мне надо в сколько раз.
выводит xyz вершин полилинии в эксэл, там уж что хотите, то и делайте.
Подскажите плагин для Акада 2012 LT для массовой замены одного условного знака на другой. Знаю, что для полной версии акада12 есть такой, а вот для LT поговоривают что нет
Борис, спасибо, повтыкаю) в принципе работаю с такого же аццкой лиспосборкой, может тут есть именно то что надо)
Марат, Для меня geo_calk замечательная программа. Только работает она в Window. На маке ищу не компелированный вариант.)
Если вы хорошо знаете стандартные команды Автокад, то написание программ на языке AutoLISP не составить для вас большого труда. Создание своих программ позволит вам одним нажатием выполнять серию стандартных команд Автокад, сократит время вашей работы, избавит от рутины и оставит больше время для творчества.
В языке AutoLISP есть функция, которая имитирует командную строку. Это функция « command ». Давайте проведем аналогию между написанием стандартных команд Автокад в командной строке и написании тех же команд в программе AutoLISP.
Для того, что все наш действия в командной строке имели одинаковые результаты, в самом начале необходимо отключить динамический ввод:
Для этого в низу слева нужно выключить динамический ввод, щелкнув по соответствующей кнопке. См. Рис. 1.
Рис. 1. Отключение Динамического ввода.
Или выключить его при помощи клавиши <F12> на клавиатуре.
Отрезок.
Для того, чтобы построить отрезки с координатами первой точки (X=300, Y=300) координатами второй точки (X=700, Y=300) и координатами третий точки (X=700, Y=700).
Нам нужно набрать в командной строке ОТРЕЗОК и нажать <Enter> .
Далее на запрос Первая точка: вводим 300,300 и нажимаем <Enter> .
На запрос Следующая точка: вводим 700,300 и нажимаем <Enter> .
На запрос Следующая точка : вводим 700,700 и нажимаем <Enter> .
На запрос Следующая точка: нажимаем <Enter> чтобы прервать выполнение команды.
В результате получим два отрезка. См. Рис. 2.
Рис. 2. Построение отрезков.
Чтобы посмотреть полный порядок действий, нажимаем на клавиатуре клавишу < F2 >. Откроется Текстовое окно AutoCAD . См. Рис. 3.
Рис. 3. Порядок действий.
Если вы работаете в англоязычной версии AutoCAD, то вместо команды ОТРЕЗОК в командной строке нужно было ввести LINE.
Англоязычная версия с нижним подчеркиванием впереди _LINE будет работать в обоих версиях.
Строка в программе на языке AutoLISP рисующая такие же отрезки выглядит так:
Рис. 4. AutoLISP. Построение отрезков.
Выделите всю строку и нажмите на кнопку « Загрузить выделенный фрагмент ».
AutoCAD начертит отрезки.
Если точку надо задать не вводом координат, а указать мышкой. Используем команду getpoint .
Чтобы запомнить координаты указанной точки в переменной р1 , используем функцию setq .
Координаты следующих точек можно рассчитать относительно первой. Для этого в AutoLISP есть несколько способов.
Приведем один из них:
Координаты второй точки смещены относительно первой на 400 единиц по координате Х.
Давайте предварительно создадим список с этим смещением при помощи функции list .
( list 400 0 ) – смещение по оси Х=400; смещение по оси Y=0
Затем сложим нас список с координатами точки р1 при помощи функции mapcar
Запомним координаты второй точки в переменной р2
Аналогичным способом находим координаты третей точки относительно второй и запоминаем ее в переменной р3 .
Мы могли найти координаты точки р3 относительно р1. Это выглядело бы так:
После, того как координаты сохранены в переменных, в строке рисующей отрезки меняем координаты на эти переменные:
Теперь наша программа выглядит так: См. Рис. 5.
Рис. 5. LISP. Построение отрезков.
Выделите все строки, нажмите на кнопку « Загрузить выделенный фрагмент ».
В командной строке появится запрос: « Укажите базовую точку: »
Укажите ее с некоторым смещением от координат старой первой точки. AutoCAD начертит отрезки со смещением. См. Рис. 6.
Рис. 6. AutoLISP. Построение отрезков.
Я думаю, что с отрезками мы разобрались. Давайте теперь построим окружность.
Окружность.
Для того, чтобы построить окружность с координатами центра (X=700, Y=700) и радиусом окружности (R=200).
Нам нужно набрать в командной строке КРУГ и нажать <Enter> .
Далее на запрос Центр круга: вводим 700,700 и нажимаем <Enter> .
И запрос Радиус круга: вводим 200 и нажимаем <Enter> .
В результате получим окружность. См. Рис. 7.
Рис. 7. Построение окружности.
Если вы работаете в англоязычной версии AutoCAD, то вместо команды КРУГ в командной строке нужно было ввести CIRCLE.
Команда _CIRCLE будет работать в обоих версиях.
Строка в программе на языке AutoLISP рисующая ту же окружность выглядит так:
Вместо координат можно поставить какую либо из ранее созданных переменных. Например переменную р3 в которой хранятся координаты третьей точки.
Рис. 8. AutoLISP. Построение окружности.
Выделите последнюю строчку, нажмите на кнопку « Загрузить выделенный фрагмент ». AutoCAD построит окружность с центром в точке р3 и радиусом 200 . См. Рис. 9
Рис. 9. LISP. Построение окружности.
Для того, чтобы построить дугу с координатами первой точки (X=300, Y=300) координатами второй точки (X=700, Y=300) и координатами третий точки (X=700, Y=700).
Нам нужно набрать в командной строке ДУГА и нажать <Enter> .
Далее на запрос Начальная точка дуги : вводим 300,300 и нажимаем <Enter> .
На запрос Вторая точка дуги: вводим 700,300 и нажимаем <Enter> .
На запрос Конечная точка дуги: вводим 700,700 и нажимаем <Enter> .
В результате получим дугу. См. Рис. 10.
Рис. 10. Построение дуги.
Если вы работаете в англоязычной версии AutoCAD, то вместо команды ДУГА в командной строке нужно было ввести ARC.
Команда _ARC будет работать в обоих версиях.
Строка в программе на языке AutoLISP рисующая ту же дугу выглядит так:
Давайте вместо координат поставим переменные р1, р2, р3 и добавим эту строчку в программу.
В результате получим см. Рис. 11.
Рис. 11. AutoLISP. Построение дуги.
Выделите последнюю строчку, нажмите на кнопку « Загрузить выделенный фрагмент ». AutoCAD построит дугу по точкам р1, р2, р3 . См. Рис. 12.
Рис. 12. LISP. Построение дуги.
Надеюсь, что с построением простых примитивов мы разобрались. Теперь давайте рассмотрим какую нибудь команду редактирования. Например Зеркало.
Команда редактирования. Зеркало.
Давайте оставим только два отрезка и дугу. См. Рис. 13.
Рис. 13. Два отрезка и дуга.
Затем отзеркалим их относительно вертикального отрезка.
Для этого в командной строке вводим команду Зеркало, нажимаем <Enter> .
На запрос Выберите объекты: указываем мышью все три примитива и нажимаем <Enter> .
На запрос Первая точка оси отражения: указываем верхнюю точку вертикального отрезка.
На запрос Вторая точка оси отражения: указываем нижнюю точку вертикального отрезка.
На запрос Удалить исходные объекты? [Да/Нет] <Н>: нажимаем <Enter> .
В результате получаем следующее. См. Рис. 14.
Рис. 14. Команда редактирования. Зеркало.
Если вы работаете в англоязычной версии AutoCAD, то вместо команды ЗЕРКАЛО в командной строке нужно было ввести MIRROR.
Команда _MIRROR будет работать в обоих версиях.
Для того, чтобы сделать тоже самое в программе на языке AutoLISP нужно после построение примитива сохранять его имя в переменой. Это можно сделать при помощи функции entlast , которая возвращает имя последнего нарисованного примитива.
Строим горизонтальный отрезок:
Сохраняем имя горизонтального отрезка в переменной gLine :
Строим вертикальный отрезок:
Сохраняем имя вертикального отрезка в переменной vLine :
Сохраняем имя дуги в переменной duga :
( setq duga ( entlast ))
Зеркалим отрезки и дугу относительно линии проходящей через точки р2 и р3 :
Все вместе в программе это будет выглядеть так: См. рис. 15.
Рис. 15. AutoLISP. Команда редактирования. Зеркало.
Выделите все строки, нажмите на кнопку « Загрузить выделенный фрагмент ».
В командной строке появится запрос: « Укажите базовую точку: »
Укажите ее выше уже имеющихся примитивов. AutoCAD сначала, начертит новые отрезки и дугу, а затем отзеркалит их. И в конце, построит окружность. См. Рис. 16.
Рис. 16. LISP. Команда редактирования. Зеркало.
И в заключении давайте построим какую нибудь фигуру вращения в 3d. Например половину конуса.
Фигура вращения. Половина конуса.
Для лучшей наглядности давайте удалим ранее нарисованные примитивы и переведем чертеж ЮЗ изометрию.
Для этого набираем в командной строке _-VIEW и нажать <Enter> .
Далее вводим _swiso и нажимаем <Enter> .
Чертеж будет переведен в ЮЗ изометрию. См. Рис. 17.
Рис. 17. Переход в ЮЗ изометрию
Второй способ перевести чертеж в ЮЗ изометрию. Это на видовом кубе щелкнуть между Ю и З в место, которое показано на Рис. 18.
Рис. 18. Переход в ЮЗ изометрию
Далее чертим отрезок с координатами первой точки (X=1000, Y=0, Z=0) и координатами второй точки (X=1200, Y=0, Z=700)
Набираем в командной строке ОТРЕЗОК и нажать <Enter> .
Далее на запрос Первая точка : вводим 1000,0,0 и нажимаем <Enter> .
На запрос Следующая точка: вводим 1200,0,700 и нажимаем <Enter> .
На запрос Следующая точка: нажимаем <Enter> , чтобы прервать выполнение команды.
Далее набираем команду ВРАЩАТЬ, нажимаем <Enter> .
Указываем мышкой только, что нарисованный отрезок и нажимаем <Enter> .
На запрос Начальная точка оси вращения: вводим 1200,0,700 и нажимаем <Enter> .
На запрос Конечная точка оси вращения: вводим 1200,0,0 и нажимаем <Enter> .
На запрос Угол вращения: вводим 180 и нажимаем <Enter> .
В результате получаем половину конуса. См. Рис. 19
Рис. 19. Построение фигуры вращения.
Чтобы увидеть полный порядок действий, нажимаем на клавиатуре клавишу <F2> . Откроется Текстовое окно AutoCAD. См. Рис. 20.
Рис. 20. Порядок действий.
Для того, чтобы вернутся к двухмерному чертежу с осями X и Y нужно на видовом кубе щелкнуть по надписи Верх. См. Рис. 21.
Рис. 21. Переход к двухмерному чертежу.
Если вы работаете в англоязычной версии AutoCAD, то вместо команды ВРАЩАТЬ в командной строке нужно было ввести REVOLVE.
Команда _REVOLVE будет работать в обоих версиях.
В программе на языке AutoLISP построение половины конуса выглядит так:
В начале строим отрезок
Затем при помощи функций setq и entlast (возвращает имя последнего нарисованного примитива) запоминаем его в переменной line1
И в конце строим фигуру вращения
Все вместе в программе это выглядит так: См. Рис. 22.
Рис. 22. AutoLISP. Построение фигуры вращения.
Для того, чтобы преобразовать нашу программу в пользовательскую функцию.
Добавим строку, в которой придумаем имя функции ( scom – стандартные команды) и перечислим все временные переменные:
Окончательный вариант программы см. Рис. 23.
Рис. 23. AutoLISP. Стандартные команды AutoCAD.
Чтобы проверить работу всей программы: удалите все примитивы и вернитесь в двухмерное пространство.
Чтобы загрузить программу, используем кнопку « Загрузить активное окно редактора ». Переходим в AutoCAD, в командной строке набираем scom и нажимаем <Enter> .
На запрос: Укажите базовую точку : укажите любую точку в рабочем окне.
Результат выполнения программы должен выглядеть так. См.Рис. 24.
Рис. 24. AutoLISP. Стандартные команды AutoCAD.
Таким образом, мы видим, что написание стандартных команд Автокад в программе AutoLISP практически повторяют написание их в командной строке. И если Вы знаете как пользоваться стандартными командами в AutoCAD, то при наработке определенного навыка, Вы легко сможете писать свои программы, которые в значительной степени могут ускорить процесс выполнения вашей работы. Поверьте, это не так сложно, как кажется на первый взгляд.
Как добавить нашу программу в список автоматической загрузки и создать для нее кнопку запуска рассмотрено в уроках: Простой запуск LISP программ. Создание кнопки для программы LISP.
Пишите в комментариях:
Трудно ли было выполнить этот урок?
Где у вас возникли трудности?
Была ли для Вас полезной информация, данная в этом уроке?
Если у Вас не получилось запрограммировать стандартную функцию AutoCAD? Пишите попробуем разобраться вместе.
На какие вопросы программирования, Вы хотели бы, увидит ответы в следующих уроках?
Читайте также: