Поиск по этому блогу

четверг, 10 октября 2013 г.

Автоматизация рутинных задач или использование скриптов Lisp, ARX и пр.

Для эффективной работы в AutoCAD я рекомендую освоить работу с консолью и научится загружать дополнительные программы, и скрипты Lisp.

В своей работе я  активно использую скрипты для разного рода автоматизации задач на выполнение которых мне бы понадобилось очень много времени. Приведу примеры:
- Подсчёт суммарной длины линий;
- Подсчёт суммарной площади помещений;
- Сумма числовых значений в текстовых полях;
- Перевод однострочного текста в многосторчный;
- Перенумерация;
- Создание оксонометрических схем для раздела ОВИК;
- Перевод чертежа из 3D в  2D;
 И многое другое.



Все приводимые скрипты можно скачать в разделе Загрузки
1. Загрузка скрипта в оболочку AutoCAD. 

Загрузка скрипта происходит по команде   _APPLOAD    либо редактированием автоматически загружаемого файла находящегося по пути
C:\Program Files\Autodesk\AutoCAD 2013\Support\acad2013.lsp


Рис.1 _APPLOAD
Загруженный скрипт либо приложение будет доступно только  в том чертеже где был загружен скрипт.  Для того чтобы скрипт загружался постоянно при загрузке AutoCAD-а

Рис. 2  Добавление скрипта в список постоянно загружаемых
Теперь файлы которые содержатся в списке будут автоматически загружаться в AutoCAD при загрузке.
2. Пример скрипта на языке Lisp
Скриптом является обычный текстовый файл  с расширением *.lsp

;;;функция для нумерации.
;;;вводите начальное число
;;;выбираете предварительно подготовленный текст по порядку
;;;программа увеличивает выбранное число на 1 от предыдущего
(defun c:plus1(/ s n g a name string1 string2)  - "команда запуска скрипта"
  (setq Name 0)
  (setq i 1)
  (setq s (getint "\nВведите первый номер:"))
  (setq i (getint "\nВведите Шаг:"))
  (setq string1 (getstring T "\nВведите начало текста..."))  
  (setq string2 (getstring T "\nВведите окончание текста..."))  

 ; (if (i=nil) (setq i 1)) 

;(princ (strcat "\nСу " (rtos i 2 2)))

  (while Name
    (setq Name  (car (entsel "\nУкажите текст или [Enter]:")))
    (if Name
      (if (= (cdr (assoc '0 (entget Name))) "TEXT")
        (progn
          (setq n (entget name))
          (print n)
 (setq str (strcat string1 (rtos s 2 0) string2  )   )
          (setq g (cons 1 str ) )
          (entmod (subst g (assoc '1 n) n))
          (setq s (+ i s))
        );progn
      );if
    );if
  );while
);defun

Для того что бы узнать какая команда используется  для запуска скрипта необходимо найти  строчку "defun c:plus1" , plus1 - команда запуска скрипта. 

3.  Суммарная длина линий 
Скрипт суммарной длины линий. Команда: dlina
Рис.3 Функция DLINA

4. Перенумерация однострочного текста. 
Скрипт перенумерации. Команда:  plus1


Рис.4 Функция перенумерации однострочного текста
5. Использование скрипта  для измерения площади
Для измерения геометрических параметров объектов AutoCAD я использую утилиту GeomProps   
После первой загрузки данной утилиты она будет автоматически загружаться вместе с AutoCAD  при последующих запусках. 

Для измерения нескольких площадей необходимо создать замкнутые полилинии. 



Комментариев нет:

Отправить комментарий

поделиться

VK комментарии