Lisp. Создание листов и видовых экранов на них

Функционал: создаёт листы с видовыми экранами, совпадающими c рамками листов.
Команды:
ADD_LAY - создаёт листы с видовыми экранами, совпадающими c рамками листов, нумерует листы по порядку следования рамок в одну строку или в один столбец
(либо слева направо, либо сверху вниз). При расположении рамок матрицей - листы будут созданы, но нумерация вкладок потеряет упорядоченность.
Автор: Andrey_13, https://forum.dwg.ru/showthread.php?t=124456&page=15

addlay-nc23.zip (7,4 КБ)

1 лайк

addlay-avp-asd-28forum-29.7z (493,1 КБ)

Новее адаптация и доп. из той же серии

Немного доработал лисп, чтобы он поддерживал умноженные форматы листов по ГОСТ 2.301-68 (А4х4, А4х3, А3х3 и т.д.). Изменил масштаб по умолчанию с 1:1 на 1:100.

Как пользоваться плагином:

  1. Размещаете форматы на чертеже из модуля СПДС;
  2. Переходите на слой “СПДС_ФОРМАТЫ” и чертите прямоугольники по границам форматов;
  3. В командной строке вводите команду “ADD_LAY”, Enter, щёлкаете мышкой по любому из форматов;
  4. Подтверждаете масштаб (1:100) либо меняете на свой в командной строке;
  5. При желании можете удалить все существующие листы;
  6. Задайте номер первого листа (обычно я задаю 1 после удаления старых листов);
  7. Готово. У вас автоматически создались листы нужного формата с видовыми экранами!

Также плагин распознаёт форматы платформы Нанокад автоматически, без дополнительных прямоугольников.

К сожалению, некорректно создаются листы А4х8 и А0х2. Для их поддержки нужно переписывать логику плагина, чтобы он смотрел не на площадь, а на длину и ширину и на основе их определял формат и ориентацию листа. Я не знаю язык программирования LISP. Да и не программист я по профессии. Поэтому не смог переделать.

Для коррекции листов А4х8 и А0х2 нужно:

  1. Щёлкнуть правой кнопкой мыши по вкладке листа;
  2. Выбрать пункт меню “Диспетчер параметров листов”, нажать “Редактировать”;
  3. Выбрать принтер “Печать в формате PDF”;
  4. Сменить размер листа на А4х8 или А0х2;
  5. Нажать на кнопку “Применить к листу” и “ОК”.

Занимает 30 секунд.

addlay-nc24-1.zip (8,7 КБ)

1 лайк

Здравствуйте, обновился на работе автокад до 26 версии, теперь плагин не загружается

Не подскажете в чем дело может быть?

Похоже, где-то забыли (vl-load-com)

регистратор))
должен быть запущен нужный нана в единственном экземпляре
пробуй

register NC.zip (930 байтов)

Добрый день.

Помогите, пожалуйста, доработать этот лисп. Сам не смог разобраться.
Сейчас листы добавляются в порядке сортировки по координатам Y-X.
А требуется по X-Y (слева-направо, сверху-вниз).
Пример файла для проверки прикрепляю. Сейчас там листы созданы не так как надо.

Листы X-Y_для ADDLAY_3.zip (184,9 КБ)

Разобрался сам.

Вместо этого участка кода:
(if (> (- (MaxElement X) (MinElement X)) (- (MaxElement Y) (MinElement Y))) ; Условие выбора способа сортировки
(setq Points (vl-sort Points (function (lambda (Points1 Points2) (< (caar Points1) (caar Points2)))))) ; Сортировка точек по X координате
(setq Points (vl-sort Points (function (lambda (Points1 Points2) (> (cadar Points1) (cadar Points2)))))) ; Сортировка точек по Y координате
) ;if

Сделал этот:
;;; Сортировка XY слева-направо, сверху-вниз
(setq Points
(vl-sort Points
(lambda (Points1 Points2)
(if (equal (cadar Points1) (cadar Points2) 1) ; Сравнение Y с погрешностью
(< (caar Points1) (caar Points2)) ; Сравнение X
(> (cadar Points1) (cadar Points2)))))) ; Сравнение Y

Обновлённый лисп прилагаю. Может кому ещё понадобится.

AddLay_Nc24.1_сортировка XY.zip (8,8 КБ)

2 лайка

ИМХО код в части взаимодействия с пользователем ну так себе. Кто помешает юзеру на запрос “Укажите объект для определения слоя с рамками” ответить нажатием Esc? Че будет дальше - это очень интересно. Особенно учитывая смену некоторых системных переменных.
Ну а отсутствие меток начала - конца отмены это вообще за гранью.
P.S. Настоятельно рекомендую почитать “САПР на базе AutoCAD - как это делается”.