На этой странице будут выкладываться примеры LISP программ. По многим из них есть уроки с подробным описанием кода.
Если Вы знаете как запускать LISP программы в AutoCAD, то можете сразу перейти к списку программ.
Как использовать программы.
Все программы написаны для использования их в полной версии программы AutoCAD. Они не будут работать в AutoCAD LT.
Если Вам понравилась какая-либо программа на этом сайте и Вы хотите ее установить на свой компьютер. Для этого Вам нужно сделать следующее:
1. Скачать программу на свой компьютер;
2. Все программы заархивированы. Поэтому после того, как вы скачали архив, его нужно разархивировать. Разархивировав архив, Вы получите файлы программы, которые можете хранить в любом месте на вашем компьютере (Я для этого использую папку D:\MyLisp);
3. Файлы программы нужно загрузить в AutoCAD;
4. Запускаем новые команды, которые хранятся в загруженных файлах.
Я думаю, что с первыми двумя пунктами справятся все. Поэтому сразу поговорим о загрузке LISP файлов в Автокад.
Загрузка LISP файлов в Автокад.
Загрузить в Автокад LISP программу можно несколькими способами. Опишу некоторые из них.
Загрузка файлов с помощью окна «Загрузка / Выгрузка приложений».
Откройте Автокад. На ленте перейдите на вкладку «Управление» и щелкните по кнопке «Приложение». См. Рис. 1.
Если вы работаете в режиме Классический AutoCAD:
В главном меню выберите «Сервис», далее щелкните по строчке «Приложения…». См. Рис. 2.
Откроется окно «Загрузка / Выгрузка приложений».
Найти папку, в которой лежит файл, выделите его и нажмите на кнопку «Загрузить». См. Рис. 3.
Внизу окна появится сообщение о том, что выбранный файл загружен. Обратите внимания, что данным способом можно загружать не только LISP файлы (*.lsp), но и другие приложения поддерживаемые программой AutoCAD (*.arx; *.crx; *.dvd; *.dbx; *.vlx; *.fas).
Таким способом загружают программы для их временного использования. После того, как Вы закроете Автокад, а потом откроете его снова, их не будет в Автокаде, и для их использования их нужно загрузить снова.
Для того, чтобы нужные Вам LISP файлы загружались в Автокад автоматически, их нужно добавить в список автоматической загрузки. Для этого щелкаем на портфельчик «Автозагрузка» (или на кнопку «Приложения» под ним). Откроется окно «Автозагрузка», в котором нажимаем на кнопку «Добавить». См. Рис. 4.
Откроется окно «Добавление файла в список автоматической автозагрузки». Находим нужную папку, выделяем файл и нажимаем на кнопку «Открыть». См. Рис. 5.
В окне «Автозагрузка» появится строка с файлом, который будет автоматически загружаться при каждом запуске Автокад.
После того, как Вы добавите все необходимые файлы, нажмите на кнопку «Закрыть». Затем на кнопку «Закрыть» в окне «Загрузка / Выгрузка приложений». См. Рис. 6.
Имейте в виду, что файлы загрузятся автоматически, только при следующем запуске Автокад. Если Вы хотите использовать их в текущей сессии, их нужно загрузить способом, описанным выше (либо каким другим способом).
Загрузка файлов с помощью Редактора Visual LISP.
Откройте Редактор Visual LISP:
Наберите в командной строке VLIDE (или VLISP) и нажмите <Enter>.
Или на ленте перейдите на вкладку «Управление» и нажмите на кнопку «Редактор Visual LISP». См. Рис. 7.
Откроется Редактор Visual LISP. Нажмите на кнопку «Открыть файл». Появится окно «Открытие файла для редактирования / просмотра».
Найдите нужную папку;
Выделите файл и нажмите на кнопку «Открыть». См. Рис. 8.
Файл загрузится в активное окно редактора. Чтобы загрузить его в Автокад, нужно нажать на кнопку «Загрузить активное окно редактора».
Такой способ имеет свои плюсы, связанные с тем, что Вы видите программный код файла:
1. Вы можете посмотреть, сколько команд в этом LISP файле (их может быть несколько).
2. Найти имена этих команд: находим строку с функцией defun; Имя команды стоит сразу после с: (в нашем случаи это: 3d_tro и roY);
3. Кроме всего прочего Вы имеете возможность отредактировать код программы.
См. Рис. 9.
Чтобы определить границы команды в программном коде, поставьте курсор мыши перед открывающейся скобкой функции defun и дважды щелкните левой кнопкой мыши. Функция defun, которая описывает одну команду – выделиться. См. Рис. 10.
Запуск новых команд.
После того, как файлы загружены, мы может запускать в Автокад новые команды, которые хранятся в этих файлах. Для этого достаточно набрать ИМЯ КОМАНДЫ в командной строке и нажать <Enter>.
Кроме этого для любой команды можно создать кнопку.
Поместить ее на панель инструментов, а панель вынести на ленту.
После этого запускать команду, нажимая на эту кнопку.
Как это сделать читайте в уроках: «Создание кнопки для программы LISP» и «Простой запуск LISP программ».
Также для этих команд можно создать горячие клавиши и запускать их нажатием определенных клавиш на клавиатуре.
Как это сделать читайте в уроке: «Горячие клавиши Автокад».
Конечно, мы разобрали далеко не все способы загрузки файлов и запуска команд, но этого в полнее достаточно для того, чтобы комфортно использовать LISP программы размещенные ниже.
Список LISP программ.
LISP программа «mp_kub.lsp»
Программа, которая рисует в Автокад куб со сторонами 200.
Для запуска в Автокад используется имя MP_KUB
После запуска выдает запрос: “Укажите базовую точку».
Указываем любую точку в рабочем окне Автокад. Команда построит куб со сторонами 200.
Подробное описание программного кода смотрите в уроке: «Пример простой программы на LISP».
Скачать программу Mp_kub.lsp (Размер файла: 449 bytes)
LISP программа «mp_paral.lsp»
Программа рисует параллелограмм, со сторонами указанными в диалоговом окне. Программа работает только вместе с файлом диалогового окна «mp_paral.dcl». Поэтому скачать надо два файла.
Чтобы Автокад определил местонахождение файла диалогового окна, его нужно поместить в папку вспомогательных файлов Автокад.
Как это сделать смотрите в уроке: «Пример программы LISP с диалоговым окном».
Либо в коде программы, в строке
(setq dcl_id (load_dialog «mp_paral.dcl»)) нужно указать полный путь к файлу диалогового окна.
Например, если файл находиться в папке «D:\MyLisp» строка должна выглядеть так:
(setq dcl_id (load_dialog «D:\\MyLisp\\mp_paral.dcl»))
Для запуска в Автокад используется имя MP_PARAL
После запуска на экране появится диалоговое окно.
Нужно указать размеры сторон параллелограмма и нажать на кнопку ОК.
Далее появится запрос: “Укажите базовую точку».
Указываем любую точку в рабочем окне Автокад. Команда построит параллелограмм со сторонами указанными в диалоговом окне.
Подробное описание программного кода смотрите в уроке: «Пример программы LISP с диалоговым окном».
Подробное описание программного кода создания диалогового окна смотрите в уроке: «Диалоговое окно».
Скачать диалоговое окно Mp_paral.dcl (Размер файла: 392 bytes)
Скачать программу Mp_paral.lsp (Размер файла: 781 bytes)
LISP программа «Sum_dl.lsp»
Программа считает сумму длин выбираемых отрезков. В процессе выбора отрезков Автокад выдает количество выбранных отрезков и сумму их длины.
Для запуска в Автокад используется имя SumDl
После запуска выдает запрос: «Выберите отрезок»:
Укажите любой отрезок.
Он выделится. В командной строке появиться сообщение, что выбран один отрезок и его длина.
Ниже снова появиться запрос: «Выберите отрезок»:
Укажите следующий отрезок.
Он выделится. В командной строке появиться сообщение о количестве выбранных отрезков и их общей длины.
Ниже снова появиться запрос: «Выберите отрезок»:
И так до бесконечности. Чтобы завершить выполнения программы нажмите клавишу <Esc>.
Подробное описание программного кода смотрите в уроке: «Пример AutoLISP программы: Сумма длин отрезков».
Скачать программу Sum_dl.lsp (Размер файла: 464 bytes)
LISP программа «Sum_dls.lsp»
Программа суммы длин со свободным выбором отрезков.
Программа считает сумму длин выбираемых отрезков.
Выбор отрезков можно делать и по одному и группой при помощи рамки (или при помощи секущей рамки). В общем, любым стандартным способом AutoCAD.
Для запуска в Автокад используется имя: SumDls
После запуска программа выдает запрос: «Выберите объекты»:
Выбирать отрезки можно любым стандартным способом Автокад. Если случайно выбран не тот отрезок, его выбор можно отменить. Для этого удерживая клавишу <Shift>, щелкните по нему. Этот отрезок будет исключен из выбора.
Процесс выбора и отмены выбора отрезков отражается в командной строке.
После того как вы выбрали все необходимые объекты, нажмите <Enter>, чтобы завершить выбор.
В командной строке появиться сообщение о количестве выбранных отрезков и их общей длины.
Подробное описание программного кода смотрите в уроке: «Примеры LISP программ: Сумма длин отрезков».
Скачать программу Sum_dls.lsp (Размер файла: 487 bytes)
LISP программа «Sum_dlv.lsp»
Программа считает сумму длин отрезков на всем чертеже.
Для запуска в Автокад используется имя: SumDlv
После запуска программа выделить на чертеже все отрезки
В командной строке появиться сообщение о количестве отрезков на все чертеже и их общей длины.
Подробное описание программного кода смотрите в уроке: «Примеры LISP программ: Сумма длин отрезков».
Скачать программу Sum_dlv.lsp (Размер файла: 440 bytes)
LISP программа «Sum_sl.lsp»
Программа считает сумму длин отрезков на выбранном слое.
Для запуска в Автокад используется имя: SumSl
После запуска программа выдает запрос: «Выберите объект для определения слоя: “
Укажите любой объект. Программа выделит и сосчитает длину все отрезков на слое, на котором расположен указанный объект.
В командной строке появиться сообщение о количестве отрезков на данном слое и их общей длины.
Подробное описание программного кода смотрите в уроке: «Примеры LISP программ: Сумма длин отрезков».
Скачать программу Sum_sl.lsp (Размер файла: 563 bytes)
LISP программа «Scom.lsp»
Программа показывает, как в программном коде AutoLISP можно использовать стандартные команды Автокад.
Приведен пример:
- Построения отрезка.
- Построения дуги.
- Использования команды редактирования: Зеркало
- Перевода чертежа ЮЗ изометрию.
- Построения Полуконуса.
Для запуска в Автокад используется имя: SCOM
После запуска программа выдает запрос: “Укажите базовую точку».
Указываем любую точку в рабочем окне Автокад. Команда построит два отрезка и дугу. Затем отзеркалит их. Потом переведет чертеж ЮЗ изометрию и построит Полуконус.
Подробное описание программного кода смотрите в уроке: «AutoLISP. Стандартные команды Автокад».
Скачать программу Scom.lsp (Размер файла: 535 bytes)
LISP программа «mp_kub2.lsp»
Программа создает блок куба, стороны которого предварительно задаются.
Для запуска в Автокад используется имя MP_KUB2
После запуска выдает запрос: «Задайте длину стороны куба :»
Введите числовое значение стороны куба и нажмите <Enter>
Появиться запрос: “Укажите базовую точку».
Указываем любую точку в рабочем окне Автокад. Команда построит блок в виде куба со сторонами, значение которых мы задали при первом запросе.
Подробное описание программного кода смотрите в уроке: «AutoLISP. Создание блока».
Скачать программу Mp_kub2.lsp (Размер файла: 802 bytes)
LISP программа «mp_kub3.lsp»
Программа создает блок куба при помощи функций расширения языка AutoLISP, стороны которого предварительно задаются. В программе вычисляется объем куба, и координаты центра верхней грани. Объем и координаты сохраняются, как дополнительные данные, которые в любой момент можно извлечь.
Для запуска в Автокад используется имя: MP_KUB3
После запуска программа выдает запрос: «Задайте длину стороны куба :»
Введите числовое значение стороны куба и нажмите <Enter>
Появиться запрос: “Укажите базовую точку».
Указываем любую точку в рабочем окне Автокад. Команда построит блок в виде куба со сторонами, значение которых мы задали при первом запросе. Так же программа сосчитает объем, и координаты центра верхней грани и сохранить их в блоке в качестве дополнительных данных.
Подробное описание программного кода смотрите в уроке: «LISP. Создание блока».
Скачать программу Mp_kub3.lsp (Размер файла: 993 bytes)
LISP программа «Udim.lsp»
Программа считывает дополнительные данные из блока, созданного в уроке: «LISP. Создание блока». Вставляет динамический блок, созданный в уроке: «Создание динамического блока».
Для того, чтобы посмотреть как работает программа предварительно нужно:
- Скачать программу «mp_kub3.lsp», и создать при помощи ее блок (или несколько блоков).
- Скачать динамический блок «Vyn.dwg».
- Поместить «Vyn.dwg» в папку вспомогательных файлов Автокад.
Как это сделать смотрите в уроке: «Пример программы LISP с диалоговым окном» (или в программе lsp вместо имени файла «Vyn» нужно будет указать полный путь к нему. Например: если файл лежит в папке «D:\MyLisp» нужно поставить «D:\\MyLisp\\ Vyn.dwg «)
Для запуска в Автокад используется имя: UDIM
После запуска программа выдает запрос: «Выберите блок:»
Укажите предварительно построенный блок (созданный программой mp_kub3.lsp).
Команда вставит выноску. Выноска будет начинаться из центра верхней грани. Сверху полки будет стоять имя указанного блока, снизу – его объем.
Далее программа снова выдает запрос: «Выберите блок:»
Укажите следующий блок.
Что завершит программу нажмите <Esc>.
Подробное описание программного кода смотрите в уроке: «Вставка динамического блока из LISP-программы».
Скачать программу Mp_kub3.lsp (Размер файла: 993 bytes)
Скачать динамический блок (Размер файла: 30 kB)
Скачать программу Udim.lsp (Размер файла: 538 bytes)
LISP программа «Udim2.lsp»
Программа считывает дополнительные данные из блока, созданного в уроке: «LISP. Создание блока». Вставляет динамический блок, созданный в уроке: «Создание динамического блока». Меняет длину и положение выносной линии и длину и положение полки.
Для того, чтобы посмотреть как работает программа предварительно нужно:
- Скачать программу «mp_kub3.lsp», и создать при помощи ее блок (или несколько блоков).
- Скачать динамический блок «Vyn.dwg».
- Поместить «Vyn.dwg» в папку вспомогательных файлов Автокад.
Как это сделать смотрите в уроке: «Пример программы LISP с диалоговым окном» (или в программе lsp вместо имени файла «Vyn» нужно будет указать полный путь к нему. Например: если файл лежит в папке «D:\MyLisp» нужно поставить «D:\\MyLisp\\ Vyn.dwg «)
Для запуска в Автокад используется имя: UDIM2
После запуска программа выдает запрос: «Выберите блок:»
Укажите предварительно построенный блок (созданный программой mp_kub3.lsp).
Появится начало выносной линии
Далее программа выдает запрос: «Укажите выносную линию: »
Нужно указать вторую точку выносной линии. Команда вставит выноску. Сверху полки будет стоять имя указанного блока, снизу – его объем.
Затем программа снова выдает запрос: «Выберите блок:»
Снова укажите блок куба.
На запрос «Укажите выносную линию:»
Укажите вторую точку линии в другом месте.
На следующий запрос «Выберите блок :» – нажмите <Esc>.
Программа нарисует две выноски к одному блоку.
Подробное описание программного кода смотрите в уроке: «Изменение динамического блока из LISP-программы».
Скачать программу Mp_kub3.lsp (Размер файла: 993 bytes)
Скачать динамический блок (Размер файла: 30 kB)
Скачать программу Udim2.lsp (Размер файла: 856 bytes)
LISP программа «3d_tro.lsp»
Программа содержит в себе две команды
Первая команда рисует в Автокад 3D тройник.
Для запуска в Автокад используется имя: 3D_TRO
После запуска выдает запрос: “Укажите базовую точку».
Указываем любую точку в рабочем окне Автокад. Команда построит 3D тройник.
Вторая команда поворачивает 3D тройник на 90 градусов вокруг оси параллельной оси Y.
Для запуска в Автокад используется имя: ROY
Предварительно выделите 3D тройник
Введите в командной строке ROY и нажмите <Enter>.
Тройник повернется.
Подробное описание программного кода смотрите в уроке: «3D моделирование в AutoCAD».
Скачать программу 3d_tro.lsp (Размер файла: 927 bytes)
LISP программа « 3d_bolt.lsp»
Программа рисует в Автокад 3D болт.
Для запуска в Автокад используется имя: 3D_BOLT
После запуска выдает запрос: “Укажите базовую точку».
Указываем любую точку в рабочем окне Автокад. Команда построит 3D болт.
Подробное описание программного кода смотрите в уроке: «3D моделирование. Болт с резьбой.».
Скачать программу 3d_bolt.lsp (Размер файла: 1.02 kB)
Здравствуйте. как можно к вам обратиться для написания программы для автокада?
Пишите мне на почту: acadprog@gmail.com
Здравствуйте! Как можно посчитать суммарно объемы всех выделенных тел? Выборка сделана через быстрый выбор по цвету.
И где можно взять информацию по аргументам функций автокада, например как забрать через Лисп аргумент объем из «Измеритьгеом». Хотя бы методологию поиска, можно?
Спасибо!
Неважно каким образом Вы выделите 3Д-тела. После того как они выделены, запускаем функцию (ssget). Получаем набор выделенных 3Д-тел. Сохраняем его в переменную set_obj
Загружаем функции расширения LISP
Организуем цикл, в котором перебираем по порядку все выбранные 3Д-тела.
Внутри цикла:
Переводим 3Д-тела в vla-объекты:
Извлекаем объем тела:
Суммируем объемы:
Ох! Огромное спасибо! Буду пробовать.
Все получилось! Теперь знаю длины всех труб каждого диаметра! Еще раз спасибо!
Но подскажите, это нормально, что функция «princ» сначала выводит строки результатов, каждый с новой строки, а в самом низу еще раз, но все результаты в одной строке с символами «\n» между ними?
В конце программа выкидывает в командную строку значение последней переменной. Что бы этого не происходило, в конце нужно добавить еще строку:
(princ)
Это действие называется — «Тихий выход»
Добрый вечер. У меня такая проблема: есть одно приложение, которое загружается в автокад, но не работает. Очень давно я уже сталкивался с этой проблемой и решением ее было в реестре автокада изменить с «0» на «1» для подгрузки и наоборот. Но беда, что не помню где это находится. Не подскажите пожалуйста где?
Пришлите программу на acadprog@gmail.com. Если можно будет добраться до кода, я посмотрю что требуется для ее запуска.
Добрый день, у меня такой вопрос как подсчитать объемы траншеи в автокаде, если приложения какие либо?
Мне приложения для расчета траншеи не известны. Но если знать принцип расчета, программу можно написать самому.
Добрый день! Существуют приложения или команда в автокад которая преобразуют, линии, полилинии,отрезки,сплайны в дуги с точностью 0,1 мм, т.е граница линии после преобразования практически или не меняется, при этом можно задать количиство-размер дуги на определённую длину?
Мне такие программы или команды не известны.
Огромное спасибо за статью, вы прям вселили в меня надежды. Подскажите а возможно ли вывести список 3д объектов с их габаритами?
Список 3д объектов — можно. Габариты сложных 3д объектов не так просто определить.
Здравствуйте. Помогите пожалуйста решить проблему. Имеется набор точек (100 шт) из них от каждого надо провести линию до определенной другой точки. Есть ли какой то способ или лисп, чтобы сделать это быстро?
Да, это можно сделать при помощи LISP-программы
Здравствуйте подскажите пожалуйста как при создание dxf-кода размера текст разместить не над линией а под ней в текущем стиле черчения. Очень сложно
Спасибо вам огромное.
Здравствуйте. Объясните, пожалуйста, существует ли в природе возможность изменения вида значков команд: раньше работал в автокаде 2007, теперь в 2014. Например значки команд «дизайнцентр» и «быстрый калькулятор» довольно невзрачные по сравнению с 2007.
Посмотрите здесь: https://acad-prog.ru/buttom/#coman
Здравствуйте. возможно ли связать содержимое мультивыносок с содержимым из excel?
Да. Но это сделать не просто.
У меня AutoCad 2006, там нет команды пружина (helix). Что Вы можете мне предложить?
Точной замены этой команды не существует, но в зависимости от того, что должно получиться в результате. Я думаю можно найти другие пути решения
Я использую AutoCad 2006 для создания моделей 3D-печати. Как сделать резьбу в моих деталях?
У меня AutoCad 2018 LT. В строке меню «Сервис» есть, но в нём нет «Приложения». Как добавить эту команду?
В AutoCad LT Lisp-программы не работают.
Здравствуйте, можно ли чертить призму (для расчета объемов котлованов)?
Да, конечно можно.
(defun c:31ФАКТ (/ obj p_t prm ugl)
(while (= 3 3)
(setq h «м2» ) ; как сделать что бы 2 была наверху м
(setq q1 (entget (car (entsel))))
( setq t (cons 1 h ) )
(setq q1 (subst t (assoc 1 q1) q1 ))
(entmod q1 )
)
)
Нашел подсказали
«\\A1;текст{\\H0.7x;\\Sстепень^;}»
(vlax-dump-object (vlax-ename->vla-object (car (entsel)))) ; чтобы посмотреть свойства vla-объект
СПАСИБО! СПАСИБО!! ОГРОМНОЕ СПАСИБО!!!
День добрый, подскажите как выгрузить неправильно работающий .lsp файл? в списке он неактивен, повторная загрузка не помогает правильной работе
Если .lsp файл загружается в Автокад автоматически, нужно найти какой способ автоматической загрузки используется, и удалить его от туда. Далее просто перегрузить Автокад.
Есть ли у вас видеоурок как добавить текст на чертежь?
(command "_.text" "_none" pt 200 0 "myText")
pt — координаты точки вставки текста;
200 — высота текста;
0 — угол поворота текста;
«myText» — ваш текст.
Уважаемый Михаил. Очень благодарна вам за такой сайт! Всегда спасает.
Но сейчас столкнулась с трудностями. Не могли бы вы подсказать что-то для решения моей задачи?
Дано:
Папка с файлом Text.dxf, в котором внутри содержится прямоугольник с текстом: Text.
Требуется: получить в этой же папке набор файлов от 300×300.dxf до 3000×3000.dxf с шагом 50, с соответствующим текстом внутри, то есть:
300×300.dxf (с текстом внутри: 300×300) и т.д.
350×300.dxf
400×300.dxf
450×300.dxf
…
2900×3000.dxf
2950×3000.dxf
3000×3000.dxf
Алгоритм работы макроса LISP я вижу примерно так:
1. Открыть файл Text.dxf
2. Найти и заменить текст Text на 300×300.
3. Сохранить файл как 300×300.dxf
4. Начать сначала.
Понятно, что шаги выше нужно выполнять в цикле (For скорее всего) с шагом 50.
Можно реализовать все без шаблона, но тогда придется создавать файл с прямоугольником и нужним мне текстом с шрифтом/виравниванием — для меня такой вариант еще труднее.
Поскольку я новичок в изучении lisp, то буду очень благодарна если бы вы подсказать, как должен выглядеть данный lisp макрос, чтобы реализовать данную задачу?
(vl-load-com)
(setq thisdrawing (vla-get-activedocument (vlax-get-acad-object)))
(setq w 300)
(setq h 250)
(setq set_txt (ssget "_x" (list '(0 . "text"))))
(setq ent_txt (ssname set_txt 0))
(setq vla_txt (vlax-ename->vla-object ent_txt))
(while (< w 3000) (setq w (+ w 3000)) (while (< h 500) (setq h (+ h 50)) (if (>= w h)
(progn
(setq txt (strcat (itoa w) "x" (itoa h)))
(vla-put-TextString vla_txt txt)
(setq file_name (strcat(getvar "dwgprefix") txt ".dxf"))
(vla-SaveAs thisdrawing file_name acR15_DXF)
); end progn
); end if
); end while
(setq h 250)
); end while