AutoLISP

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

AutoLISP — діалект мови програмування LISP, створений для використання з повною версією AutoCAD і його похідних, до яких належать Autodesk MAP 3D та Autodesk Architectural Desktop. AutoLISP API та інтерпретатор для виконання коду AutoLISP не включені в лінію продуктів AutoCAD LT, за винятком доповнень, таких як «LT-Extender».

Особливості[ред.ред. код]

AutoLISP є невеликим, динамічно масштабованим діалектом LISP. В ній відсутні можливості сучасних діалектів LISP, такі як система макросів, структури списків що налаштовуються. Крім базової мови, більшість функцій створено для виконання геометричних перетворень та роботи з графічними примітивами в середовищі AutoCAD. Властивості цих графічних примітивів представляються в AutoLISP як асоціативний масив, в яких AutoCAD «групує код» парами, де значення відповідають таким властивостям як точки, радіуси, кольори, шари, типи ліній і таке інше.

Код AutoLISP може взаємодіяти з користувачем через базові функції які дозволяють користувачеві вводити точки, набори виділень (selection sets), цифри та інші данні. AutoLisp також має вбудовану міні-мову графічного інтерфейсу користувача, та Мова управління діалогами, для створення інтерактивних форм засобами AutoCAD.

; приклад макро команди без інтерфейсу командного рядка
 
(defun hello_world ()
  (alert "Hello world!"))
 
; приклад макро команди з інтерфейсом командного рядка
 
(defun c:hello_world ()
  (alert "Hello world!")
  (princ))
 
; приклад обробки гнучкої умови LISP
 
(cond
  ((= a b) (princ "\n(a) and (b) are equal"))
  ((and (= (type a) 'INT) (= (type b) 'INT)) 
    (princ (strcat "\n(a)+(b)=" (itoa (+ a b)))))
  ((and (= (type a) 'STR) (= (type b) 'STR))
    (princ (strcat "\n(a)+(b)=" a b)))
  ((and (listp a) (= (type b) 'SUBR))
    (mapcar '(lambda (x) (princ (b x))) a)))

Історія[ред.ред. код]

AutoLISP походить з дуже ранньої версії XLISP, яка була створена Девідом Бетцем (David Betz). Мова була введена в AutoCAD версіі 2.18 в січні 1986, та продовжувала вдосконалюватися в наступних версіях аж до Версії 13 в лютому 1995. Після цього, її розробку було припинено компанією Autodesk на користь модніших середовищ розробки (VBA, .NET та Object ARX)[Джерело?]. Але її було збережено як основну мову налаштувань користувача.

Visual-LISP, значно покращена версія AutoLISP, що включала інтегроване середовище розробки, зневаджувач, та компілятор, була розроблена та продана «третьою компанією» Basis Software. Vital LISP, була «обгорткою» для існуючої мови AutoLISP, яка надавала VBA-подібний доступ до об'єктної моделі AutoCAD, reactors (обробка подій для об'єктів AutoCAD), загальної підтримки ActiveX, та деяких інших загальних функцій мови Lisp. Autodesk придбала її, перейменувала в Visual LISP, та швиденько продала її як додаток до AutoCAD 14 версії в травні 1997. Вона була приєднана до версії AutoCAD 2000, яку було видано в березні 1999, як заміна AutoLISP. З тих пір Autodesk вирішила призупинити вдосконалення Visual LISP задля того, щоб зосередити більше зусиль на VBA, .NET та ObjectARX.

AutoLISP мала такі потужні наслідки, що інші виробники застосунків CAD додали її до своїх власних продуктів. ZwCAD, Bricscad та інші, засновані на технології IntelliCAD, мають функціональність AutoLISP, таким чином користувачі AutoLISP можуть вирішити використовувати їх як альтернативу AutoCAD. Найбільша кількість розроблених застосунків AutoLISP з часу виходу AutoCAD 2000, була фактично створена в межах програмного середовища Visual LISP з тих пір, як оригінальний двигун (engine) AutoLISP було замінено на двигун Visual LISP. Сьогодні існують тисячі інструментів та застосунків які були розроблені з використанням AutoLISP чи Visual LISP.

Посилання[ред.ред. код]