AutoLISP — діалект мови програмування високого рівня Common LISP, створений для використання з повною версією AutoCAD (а також з версією AutoCAD LT 2024 та вище) і його похідних, до яких належать та . Lisp — мова функціонального програмування декларативного (описового) типу, на відміну від процедурних (C, Fortran, Pascal,…).
Особливості
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 походить з дуже ранньої версії , яка була створена . Мова була введена в AutoCAD версіі 2.18 в січні 1986, та продовжувала вдосконалюватися в наступних версіях аж до Версії 13 в лютому 1995. Після цього, її розробку було припинено компанією Autodesk на користь модніших (VBA, .NET та Object ARX)[]. Але її було збережено як основну мову налаштувань користувача.
Visual-LISP, значно покращена версія AutoLISP, що включала інтегроване середовище розробки, зневаджувач, та компілятор, була розроблена та продана . Vital LISP, була «обгорткою» для існуючої мови AutoLISP, яка надавала VBA-подібний доступ до об'єктної моделі AutoCAD, ( для об'єктів AutoCAD), загальної підтримки ActiveX, та деяких інших загальних функцій мови Lisp. Autodesk придбала її, перейменувала в Visual LISP, та швиденько продала її як додаток до AutoCAD 14 версії в травні 1997. Вона була приєднана до версії AutoCAD 2000, яку було видано в березні 1999, як заміна AutoLISP. З тих пір Autodesk вирішила призупинити вдосконалення Visual LISP задля того, щоб зосередити більше зусиль на VBA, .NET та .
AutoLISP мала такі потужні наслідки, що інші виробники застосунків CAD додали її до своїх власних продуктів. ZwCAD, Bricscad та інші, засновані на технології , мають функціональність AutoLISP, таким чином користувачі AutoLISP можуть вирішити використовувати їх як альтернативу AutoCAD. Найбільша кількість розроблених застосунків AutoLISP з часу виходу AutoCAD 2000, була фактично створена в межах програмного середовища Visual LISP з тих пір, як оригінальний двигун (engine) AutoLISP було замінено на двигун Visual LISP. Сьогодні існують тисячі інструментів та застосунків які були розроблені з використанням AutoLISP чи Visual LISP.
Огляд мови
Цей розділ містить текст, що не відповідає . |
Під списком розуміється впорядкована послідовність (яка записується у круглих дужках), елементами якої є:
- числові сталі (цілі й дійсні числа);
- текстові сталі;
- логічні (T — істина, NIL — хиба);
- ідентифікатори (імена змінної, функції, аргументу);
- список.
Список, який не містить жодного елемента, називається пустим й позначається () або NIL. Список записується у круглих дужках, а елементи списку відділяються пробілами. Наприклад, щоб отримати суму чисел 2, 3 та 4, можна записати у командному вікні AutoCad (Command:): (+ 2 3 4)
Як тільки ви натиснете Enter, AudoCad обчислить вказаний вираз й видасть результат: 9.
Виразом є список, у якому першим елементом є ім'я функції. Будь-яка функція AutoLisp складається з виразів і сама є виразом. Це ілюструє форму обчислюваних виразів мови AutoLisp: (<функція> [<аргумент1> [<аргумент2> … <аргументN>…]])
де квадратні дужки означають, що елемент може бути у списку, а може й не бути. Аргументами (параметрами) є засоби передачі значень (даних) у функцію. Аргументами можуть бути числові константи (числові, текстові, логічні) або вирази. Число аргументів функції може бути змінним, фіксованим або нульовим.
Змінні — це елементи мови AutoLisp, призначені для представлення різних елементів мови і які не мають сталого значення.
Константами є елементи мови AutoLisp, призначені для самопредставлення, які мають стале значення. Константи у AutoLisp є трьох видів: числові (цілі та дійсні), текстові та логічні. Приклади констант:
- -41221;
- 421.2e+8;
- «Написаний рядок»;
- («Аа» «Бб» «Вв» «Гг» «Ґґ»);
- (13 «Привіт» 12 «що?» 1 "" «&»).
Взагалі Lisp працює з наступними типами:
- цілі числа;
- дійсні числа;
- string;
- список, точкова пара, точковий список;
- дескриптор файлу;
- вказівник функції, застосунку;
- примітив AutoCad;
- набір.
Крім того, є також декотрі інші типи (варіанти, безпечні масиви, VLA-об'єкти, VLR-об'єкти).
Списки особливого типу, у яких два елементи розділені крапкою, називаються точковими парами. Вони створюються за допомогою функції cons. Наприклад,
- (0 . «POLYLINE»);
- (62 . 29).
Списки, які складаються з трьох або більше елементів й у яких останній елемент відділяється крапкою, називаються точковими. Вони можуть створюватися за допомогою функції vl-list*. Наприклад,
- (120 14 . 67).
Важливу роль відіграє функція Command, яка імітує уведення у командному вікні AutoCad з клавіатури. Таку саму функцію відіграє функція vl-cmdf. Синтаксис функції Command:
(command [<параметр1> [<параметр2> ... <параметрN>]])
Значення, яке повертається — NIL.
Функція може викликатися без параметрів, це є рівносильним натисненню клавіші Esc, що перериває дію активної команди. Припустимо, потрібно намалювати відрізками прямокутник з розмірами 100 х 120. Лівий нижній кут прямокутника візьмемо у точці (0,0) і верхній правий — у точці (100,120). Команда відрізків у Autocad називається Line. Для виконання цієї команди у будь-якій мовній версії Autocad будемо використовувати риску знизу _LINE. Крім цього, додамо крапку (щоб не працювати із перевизначеною командою):
_.LINE
По цим вказанням Autocad викличе функцію LINE, візьме як першу точку (0,0), як другу — (0,100), як третю (100,120), як четверту (0,120), а «_C» (відповідає опії Close (Замикнути)) замикне відрізки на першу точку (опції також бажано використовувати англійські із нижньою рискою).
Посилання
- AutoLISP, AutoCAD and Visual LISP (Portuguese) [ 14 червня 2021 у Wayback Machine.]
- AutoLISP FAQ [ 23 листопада 2008 у Wayback Machine.]
Це незавершена стаття про мови програмування. Ви можете проєкту, виправивши або дописавши її. |
Ця стаття потребує додаткових для поліпшення її . (січень 2020) |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
AutoLISP dialekt movi programuvannya visokogo rivnya Common LISP stvorenij dlya vikoristannya z povnoyu versiyeyu AutoCAD a takozh z versiyeyu AutoCAD LT 2024 ta vishe i jogo pohidnih do yakih nalezhat ta Lisp mova funkcionalnogo programuvannya deklarativnogo opisovogo tipu na vidminu vid procedurnih C Fortran Pascal OsoblivostiAutoLISP ye nevelikim dinamichno masshtabovanim dialektom LISP V nij vidsutni mozhlivosti suchasnih dialektiv LISP taki yak sistema makrosiv strukturi spiskiv sho nalashtovuyutsya Krim bazovoyi movi bilshist funkcij stvoreno dlya vikonannya geometrichnih peretvoren ta roboti z v seredovishi AutoCAD Vlastivosti cih grafichnih primitok predstavlyayutsya v AutoLISP yak asociativnij masiv v yakih AutoCAD grupuye kod parami de znachennya vidpovidayut takim vlastivostyam yak tochki radiusi kolori kuli tipi linij i take inshe Kod AutoLISP mozhe vzayemodiyati z koristuvachem cherez bazovi funkciyi yaki dozvolyayut koristuvachevi vvoditi tochki nabori vidilen selection sets cifri ta inshi dani AutoLisp takozh maye vbudovanu mini movu grafichnogo interfejsu koristuvacha ta dlya stvorennya interaktivnih form zasobami AutoCAD priklad makro komandi bez interfejsu komandnogo ryadka defun hello world alert Hello world priklad makro komandi z interfejsom komandnogo ryadka defun c hello world alert Hello world princ priklad obrobki gnuchkoyi umovi 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 IstoriyaAutoLISP pohodit z duzhe rannoyi versiyi yaka bula stvorena Mova bula vvedena v AutoCAD versii 2 18 v sichni 1986 ta prodovzhuvala vdoskonalyuvatisya v nastupnih versiyah azh do Versiyi 13 v lyutomu 1995 Pislya cogo yiyi rozrobku bulo pripineno kompaniyeyu Autodesk na korist modnishih VBA NET ta Object ARX dzherelo Ale yiyi bulo zberezheno yak osnovnu movu nalashtuvan koristuvacha Visual LISP znachno pokrashena versiya AutoLISP sho vklyuchala integrovane seredovishe rozrobki znevadzhuvach ta kompilyator bula rozroblena ta prodana Vital LISP bula obgortkoyu dlya isnuyuchoyi movi AutoLISP yaka nadavalaVBA podibnij dostup do ob yektnoyi modeli AutoCAD dlya ob yektiv AutoCAD zagalnoyi pidtrimki ActiveX ta deyakih inshih zagalnih funkcij movi Lisp Autodesk pridbala yiyi perejmenuvala v Visual LISP ta shvidenko prodala yiyi yak dodatok do AutoCAD 14 versiyi v travni 1997 Vona bula priyednana do versiyi AutoCAD 2000 yaku bulo vidano v berezni 1999 yak zamina AutoLISP Z tih pir Autodesk virishila prizupiniti vdoskonalennya Visual LISP zadlya togo shob zoserediti bilshe zusil na VBA NET ta AutoLISP mala taki potuzhni naslidki sho inshi virobniki zastosunkiv CAD dodali yiyi do svoyih vlasnih produktiv ZwCAD Bricscad ta inshi zasnovani na tehnologiyi mayut funkcionalnist AutoLISP takim chinom koristuvachi AutoLISP mozhut virishiti vikoristovuvati yih yak alternativu AutoCAD Najbilsha kilkist rozroblenih zastosunkiv AutoLISP z chasu vihodu AutoCAD 2000 bula faktichno stvorena v mezhah programnogo seredovisha Visual LISP z tih pir yak originalnij dvigun engine AutoLISP bulo zamineno na dvigun Visual LISP Sogodni isnuyut tisyachi instrumentiv ta zastosunkiv yaki buli rozrobleni z vikoristannyam AutoLISP chi Visual LISP Oglyad moviCej rozdil mistit tekst sho ne vidpovidaye enciklopedichnomu stilyu Bud laska dopomozhit udoskonaliti cej rozdil pogodivshi stil vikladu zi stilistichnimi pravilami Vikipediyi Mozhlivo storinka obgovorennya mistit zauvazhennya shodo potribnih zmin Pid spiskom rozumiyetsya vporyadkovana poslidovnist yaka zapisuyetsya u kruglih duzhkah elementami yakoyi ye chislovi stali cili j dijsni chisla tekstovi stali logichni T istina NIL hiba identifikatori imena zminnoyi funkciyi argumentu spisok Spisok yakij ne mistit zhodnogo elementa nazivayetsya pustim j poznachayetsya abo NIL Spisok zapisuyetsya u kruglih duzhkah a elementi spisku viddilyayutsya probilami Napriklad shob otrimati sumu chisel 2 3 ta 4 mozhna zapisati u komandnomu vikni AutoCad Command 2 3 4 Yak tilki vi natisnete Enter AudoCad obchislit vkazanij viraz j vidast rezultat 9 Virazom ye spisok u yakomu pershim elementom ye im ya funkciyi Bud yaka funkciya AutoLisp skladayetsya z viraziv i sama ye virazom Ce ilyustruye formu obchislyuvanih viraziv movi AutoLisp lt funkciya gt lt argument1 gt lt argument2 gt lt argumentN gt de kvadratni duzhki oznachayut sho element mozhe buti u spisku a mozhe j ne buti Argumentami parametrami ye zasobi peredachi znachen danih u funkciyu Argumentami mozhut buti chislovi konstanti chislovi tekstovi logichni abo virazi Chislo argumentiv funkciyi mozhe buti zminnim fiksovanim abo nulovim Zminni ce elementi movi AutoLisp priznacheni dlya predstavlennya riznih elementiv movi i yaki ne mayut stalogo znachennya Konstantami ye elementi movi AutoLisp priznacheni dlya samopredstavlennya yaki mayut stale znachennya Konstanti u AutoLisp ye troh vidiv chislovi cili ta dijsni tekstovi ta logichni Prikladi konstant 41221 421 2e 8 Napisanij ryadok Aa Bb Vv Gg Gg 13 Privit 12 sho 1 amp Vzagali Lisp pracyuye z nastupnimi tipami cili chisla dijsni chisla string spisok tochkova para tochkovij spisok deskriptor fajlu vkazivnik funkciyi zastosunku primitiv AutoCad nabir Krim togo ye takozh dekotri inshi tipi varianti bezpechni masivi VLA ob yekti VLR ob yekti Spiski osoblivogo tipu u yakih dva elementi rozdileni krapkoyu nazivayutsya tochkovimi parami Voni stvoryuyutsya za dopomogoyu funkciyi cons Napriklad 0 POLYLINE 62 29 Spiski yaki skladayutsya z troh abo bilshe elementiv j u yakih ostannij element viddilyayetsya krapkoyu nazivayutsya tochkovimi Voni mozhut stvoryuvatisya za dopomogoyu funkciyi vl list Napriklad 120 14 67 Vazhlivu rol vidigraye funkciya Command yaka imituye uvedennya u komandnomu vikni AutoCad z klaviaturi Taku samu funkciyu vidigraye funkciya vl cmdf Sintaksis funkciyi Command command lt parametr1 gt lt parametr2 gt lt parametrN gt Znachennya yake povertayetsya NIL Funkciya mozhe viklikatisya bez parametriv ce ye rivnosilnim natisnennyu klavishi Esc sho pererivaye diyu aktivnoyi komandi Pripustimo potribno namalyuvati vidrizkami pryamokutnik z rozmirami 100 h 120 Livij nizhnij kut pryamokutnika vizmemo u tochci 0 0 i verhnij pravij u tochci 100 120 Komanda vidrizkiv u Autocad nazivayetsya Line Dlya vikonannya ciyeyi komandi u bud yakij movnij versiyi Autocad budemo vikoristovuvati risku znizu LINE Krim cogo dodamo krapku shob ne pracyuvati iz pereviznachenoyu komandoyu LINE Po cim vkazannyam Autocad vikliche funkciyu LINE vizme yak pershu tochku 0 0 yak drugu 0 100 yak tretyu 100 120 yak chetvertu 0 120 a C vidpovidaye opiyi Close Zamiknuti zamikne vidrizki na pershu tochku opciyi takozh bazhano vikoristovuvati anglijski iz nizhnoyu riskoyu PosilannyaAutoLISP AutoCAD and Visual LISP Portuguese 14 chervnya 2021 u Wayback Machine AutoLISP FAQ 23 listopada 2008 u Wayback Machine Ce nezavershena stattya pro movi programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Cya stattya potrebuye dodatkovih posilan na dzherela dlya polipshennya yiyi perevirnosti Bud laska dopomozhit udoskonaliti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Zvernitsya na storinku obgovorennya za poyasnennyami ta dopomozhit vipraviti nedoliki Material bez dzherel mozhe buti piddano sumnivu ta vilucheno sichen 2020