ÀâòîËÈÑÏ îáåñïå÷èâàåò ñâÿçü CAR è CDR äî ÷åòûðåõ óðîâíåé âãëóáü. Íàïðèìåð, çàäàíî íàçíà÷åíèå:
(setq x '((a b) c d))
òîãäà:
(caar x) ýêâèâàëåíòíî (car (car x)) ââîäèò A
(cdar x) ýêâèâàëåíòíî (cdr (car x)) ââîäèò (B)
(cadar x) ýêâèâàëåíòíî (car (cdr (car x))) ââîäèò B
(cadr x) ýêâèâàëåíòíî (car (cdr x)) ââîäèò Ñ
(cddr x) ýêâèâàëåíòíî (ñdr (ñdr x)) ââîäèò (D)
(caddr x) ýêâèâàëåíòíî (car (cdr (cdr x))) ââîäèò D
 ÀâòîËÈÑÏå CADR ÷àñòè÷íî ïðèìåíÿåòñÿ äëÿ ïîëó÷åíèÿ êîîðäèíàòû Y äëÿ òî÷åê 2D è 3D (âòîðîé ýëåìåíò â ñïèñêå èç äâóõ èëè òðåõ äåéñòâèòåëüíûõ ÷èñåë). Àíàëîãè÷íî, CADDR ìîæåò ïðèìåíÿòüñÿ äëÿ îïðåäåëåíèÿ êîîðäèíàòû Z äëÿ òî÷êè 3D. Íàïðèìåð:
(setq pt2 '(5.2 1.0 (2D òî÷êà)
|
(setq pt3 '(5.2 1.0 3.0) (3D òî÷êà)
òîãäà:
(car pt2) ââîäèò 5.200000
(cadr pt2) ââîäèò 1.000000
(caddr pt2) ââîäèò nil
(car pt3) ââîäèò 5.200000
(cadr pt3) ââîäèò 1.000000
(caddr pt3) ââîäèò 3.000000
4.29 (car <list>)
Ýòà ôóíêöèÿ ââîäèò ïåðâûé ýëåìåíò <ñïèñêà>. Åñëè <ñïèñîê> ïóñòîé, ââîäèòñÿ íîëü. Íàïðèìåð:
(car '(a b c)) ââîäèò A
(car '((a b) c)) ââîäèò (A B)
(car '()) ââîäèò nil
4.30 (cdr <list>)
Ýòà ôóíêöèÿ ââîäèò âåñü <ñïèñîê>, êðîìå åãî ïåðâîãî ýëåìåíòà. Åñëè <ñïèñîê> ïóñòîé, ââîäèòñÿ íîëü. Íàïðèìåð:
(cdr '(a b c)) ââîäèò (B C)
(cdr '((a b) c)) ââîäèò (C)
(cdr '()) ââîäèò nil
Êîãäà ïàðàìåòðû <ñïèñêà> - ðàçäåëåííûå òî÷êîé ïàðû (ñì. íèæå CONS), CDR ââîäèò âòîðîé ýëåìåíò áåç âêëþ÷åíèÿ åãî â ñïèñîê. Íàïðèìåð:
|
(cdr '(a. b) ââîäèò B
(cdr '(1. "Text") ââîäèò "Text"
4.31 (chr <number>)
Ýòà ôóíêöèÿ ââîäèò ïåðåõîä öåëûõ ÷èñåë, ïðåäñòàâëåííûõ â çíàêîâîì êîäå ASCII, â îäíîçíàêîâóþ ñòðîêó (àíàëîãè÷íî ôóíêöèè CHRS â ÿçûêå ÁÅÉÑÈÊ). Íàïðèìåð:
(chr 65) ââîäèò "A"
(chr 66) ââîäèò "B"
(chr 97) ââîäèò "a"
4.32 (close <file-desc>)
Ýòà ôóíêöèÿ çàêðûâàåò ôàéë è ââîäèò íîëü. <File-desc> - äåñêðèïòîð ôàéëà (îïðèñàòåëü), ïîëó÷åííûé èç ôóíêöèè OPEN. Ïîñëå CLOSE äåñêðèïòîð ôàéëà íå èçìåíÿåòñÿ, íî ñòàíîâèòñÿ íåäåéñòâèòåëüíûì. Íàïðèìåð, ïðåäñòàâüòå, ÷òî Õ - äåéñòâèòåëüíûé îòêðûòûé äåñêðèïòîð ôàéëà,
|
(close x)
çàêðîåò ïðåäïîëàãàåìûé ôàéë è ââåäåò íîëü.
4.33 (command <arqs>...)
Ýòà ôóíêöèÿ âûïîëíÿåò êîìàíäó ÀâòîÊÀÄà â ïðåäåëàõ ÀâòîËÈÑÏà è âñåãäà ââîäèò íîëü. Ïàðàìåòðû, ïðåäñòàâëÿþùèå êîìàíäû ÀâòîÊÀÄà, è èõ ïîäêîìàíäû, êàæäûé ïàðàìåòð âûñ÷èòûâàåòñÿ â ÀâòîÊÀÄ â êà÷åñòâå îòâåòà íà ïîñëåäóþùèå ïîäñêàçêè. Èìåíà êîìàíä è îïöèè çàïóñêàþòñÿ â âèäå ñòðî÷åê, òî÷êè 2D êàê ñïèñêè èç äâóõ äåéñòâèòåëüíûõ ÷èñåë è 3D òî÷êè êàê ñïèñêè èç òðåõ äåéñòâèòåëüíûõ ÷èñåë. Èìåíà êîìàíä óçíàþòñÿ ÀâòîÊÀÄîì òîëüêî ïðè âûõîäå ïîäñêàçêè "Command". Íàïðèìåð:
(setq pt1 '(1.45 3.23))
(setq pt2 (getpoint "Enter a point: "))
(command "line" pt1 pt2)
(command "")
Ïðåäïîëàãàÿ, ÷òî ïîäñêàçêà ÀâòîÊÀÄà "Command" íå âûïîëíÿåòñÿ, óêàçàííàÿ âûøå ïîñëåäîâàòåëüíîñòü âûðàæåíèé óñòàíàâëèâàåò çíà÷åíèå äëÿ òî÷êè "pt1", âûäàåò ïîäñêàçêó äëÿ òî÷êè "pt2" è âûïîëíÿåò êîìàíäó ÀâòîÊÀÄà LINE ñ äâóìÿ òî÷êàìè êàê äàííûìè ââîäà. Ïàðàìåòðàìè COMMAND ìîãóò áûòü ñòðî÷êè, äåéñòâèòåëüíûå è öåëûå ÷èñëà èëè òî÷êè, êàê ïðåäóñìàòðè-âàåòñÿ ïîñëåäîâàòåëüíîñòüþ ïîäñêàçêè äëÿ âûïîëíåíèÿ êîìàíäû ÀâòîÊÀÄà. Íóëåâàÿ ñòðî÷êà ("") ýêâèâàëåíòíà ïå÷àòàíüþ ïðîáåëà íà êëàâèàòóðå. Âûçîâ COMMAND áåç ïàðàìåòðîâ ýêâèâàëåíòåí ïå÷àòàíèþ CTR C íà êëàâèàòóðå; ýòî îòìåíèò áîëüøèíñòâî êîìàíä ÀâòîÊÀÄà.
Êîìàíäû, âûïîëíÿåìûå èç ôóíêöèè COMMAND, íå îòðàæàþòñÿ íà ýêðàíå, åñëè ñèñòåìà ïåðåìåííûõ ÀâòîÊÀÄà CMDECHO (âûáðàííàÿ èç SETVAR èëè GETVAR) óñòàíîâëåíà íà íóëå. Ôóíêöèÿ COMMAND - îñíîâíîé ìåòîä âûáîðà êîìàíä ÀâòîÊÀÄà èç ÀâòîËÈÑÏà.
Ââîäèìûå ôóíêöèè ïîëüçîâàòåëÿ
"GETxxx" (GETANGLE, GETSTRING, GETINT, GETPOINT) íå ìîãóò ïðèìåíÿòüñÿ âíóòðè ôóíêöèè. Ïîïûòêà ïðîäåëàòü ýòî, ïðèâåäåò â ðåçóëüòàòå ê ïîÿâëåíèþ ñîîáùåíèÿ:
"îøèáêà:çàáðàêîâàííàÿ ÀâòîÊÀÄîì ôóíêöèÿ" è âûïîëíåíèå ôóíêöèè ïðåêðàùàåòñÿ. Åñëè ââîä ïîëüçîâàòåëÿ íåîáõîäèì, çàðàíåå çàäàéòå ôóíêöèè GETxxx, êàê óêàçàíî âûøå, èëè ïîìåñòèòå èõ ìåæäó óäà÷íûìè âûçîâàìè ôóíêöèè COMMAND.
Åñëè êîìàíäà ÀâòîÊÀÄà âûïîëíÿåòñÿ è ñòðîêà,ñîñòîÿùàÿ èç åäèíè÷íîãî ìåðòâîãî õîäà ("/"), ïðîñ÷èòûâàåòñÿ êàê îäèí èç ïàðàìåòðîâ ôóíêöèè COMMAND, ýòà ôóíêöèÿ ïðèîñòàíîâèò ïðÿìîé ââîä ïîëüçîâàòåëÿ (èëè ñìåùåíèå). Ýòî èäåíòè÷íî ìåõàíèçìó ïàóçû ìåðòâîãî õîäà, êîòîðûì ñíàáæåíû ìåíþ. Îäíàêî, ïîñêîëüêó ìåðòâûé õîä ÿâëÿåòñÿ ñïåöèàëüíûì êîíòðîëüíûì çíàêîì â ËÈÑÏå, òðåáóåòñÿ äâà ñèìâîëà ìåðòâîãî õîäà äëÿ òîãî, ÷òîáû ïîëó÷èòü îäèí â òåêñòîâîé ñòðîêå.
Åñëè âû âûäàåòå ïðîìåæóòî÷íûå êîìàíäû â òî âðåìÿ, êîãäà ôóíêöèÿ COMMAND ïðèîñòàíîâëåíà, îíà è îñòàåòñÿ ïðèîñòàíîâëåííîé. Òåì íå ìåíåå, âû ìîæåòå âûïîëíÿòü êîìàíäó ZOOM èëè PAN âî âðåìÿ ïàóçû ôóíêöèè COMMAND. Ïàóçà ñîõðàíÿåòñÿ äî òåõ ïîð, ïîêà ÀâòîÊÀÄ ïîëó÷àåò äåéñòâèòåëüíûé ââîä è â ðàáîòå íåò íèêàêèõ ïðîìåæóòî÷íûõ êîìàíä.
Íàïðèìåð:
(command "circle" "5,5" "r" "\\" "line" "5,5" "7,5" "")
íà÷èíàåò êîìàíäó CIRCLE, óñòàíàâëèâàåò öåíòðàëüíóþ òî÷êó 5,5 è çàòåì-ïàóçà, ïîçâîëÿþùàÿ ñìåùàòü ðàäèóñ îêðóæíîñòè íà ýêðàíå. Êîãäà âû óêàæåòå íåîáõîäèìûå òî÷êè (èëè íàïå÷àòàåòå íåîáõîäèìûé ðàäèóñ), ôóíêöèÿ ïðîäîëæàåò ðàáîòó, ðèñóÿ ëèíèþ îò 5,5 äî 7,5.
Ìåíþ ââîäà íå îòìåíÿåòñÿ ïàóçîé ÀâòîËÈÑÏà. Åñëè ýëåìåíò ìåíþ àêòèâåí êîãäà ôóíêöèÿ COMMAND íàõîäèòñÿ â ïàóçå äëÿ ââîäà, ýòî òðåáîâàíèå ââîäà ìîæåò áûòü óäîâëåòâîðåíî ïðè ïîìîùè ìåíþ. Åñëè âû õîòèòå îòìåíèòü è ýëåìåíòû ìåíþ, âû äîëæíû ââåñòè ìåðòâûé õîä â ýëåìåíò ìåíþ. Êîãäà îáíàðóæåí äåéñòâèòåëüíûé ââîä, áóäóò ïðîäîëæàòüñÿ êàê ôóíêöèÿ COMMAND, òàê è ýëåìåíò ìåíþ.
4.34 (cond (<test1> <result1>...)
Ýòà ôóíêöèÿ ïðèíèìàåò â êà÷åñòâå ïàðàìåòðîâ ëþáîå êîëè÷åñòâî ñïèñêîâ. Îíà âû÷èñëÿåò ïåðâûé ýëåìåíò êàæäîãî ñïèñêà (â óñòàíîâëåííîé ïîñëåäîâàòåëüíîñòè) ïîêà îäèí èç ýòèõ ýëåìåíòîâ ââåäåò çíà÷åíèå, îòëè÷íîå îò íóëÿ. Çàòåì îíà âû÷èñëÿåò òå âûðàæåíèÿ, êîòîðûå ñëåäóþò çà òåñòîì, è ââîäèò çíà÷åíèå ïîñëåäíåãî âûðàæåíèÿ â ïîäñïèñêå. Åñëè â ïîäñïèñêå òîëüêî îäíî âûðàæåíèå (íàïðèìåð, ïðîïóùåí <result>),ââîäèòñÿ çíà÷åíèå âûðàæåíèÿ <test>. COND - èñõîäíàÿ óñëîâíàÿ ôóíêöèÿ â ÀâòîËÈÑÏå.
Íàïðèìåð,â ýòîì ñëó÷àå COND èñïîëüçóåòñÿ äëÿ âûïîëíåíèÿ ðàñ÷åòîâ àáñîëþòíîãî çíà÷åíèÿ:
(cond (minusp a) (-a))
(t a)
)
Åñëè äëÿ "à" áûëî óñòàíîâëåíî çíà÷åíèå -10, áóäåò ââåäåíî 10. Êàê ïîêàçàíî, COND ìîæåò ïðèìåíÿòüñÿ êàê ôóíêöèÿ òèïà "case". Îáùåïðèíÿòî èñïîëüçîâàòü T êàê ïîñëåäíåå (ïî óìîë÷àíèþ) <òåñòîâîå> âûðàæåíèå. Äàëåå, äðóãîé ïðèìåð. Çàäàíà îòâåòíàÿ ñòðîêà ïîëüçîâàòåëÿ â âèäå ñèìâîëà "s", ýòà ôóíêöèÿ ïðîâåðÿåò îòâåò è ââîäèò 1, åñëè îí "Y" èëè "y" è 0, åñëè îí "N" èëè "n", â îñòàëüíûõ ñëó÷àÿõ -nil (íóëü).
(cond ((= s "Y") 1)
((= s "y") 1)
((= s "N") 0)
((= s "n") 0)
(t nil)
)
4.35 (cons <new first element> <list>)
Ýòî îñíîâíîé ñïèñîê ÊÎÍÑòðóêòîðà. Îí áåðåò ýëåìåíò (<íîâûé ïåðâûé ýëåìåíò>) è ñïèñîê (<ñïèñîê>), è ââîäèò äîïîëíåíèå ýòîãî ýëåìåíòà â íà÷àëî ñïèñêà. Íàïðèìåð:
(cons 'a '(b c d)) ââîäèò (A B C D)
(cons '(a) '(b c d)) ââîäèò ((A) B C D)
Îáðàòèòå âíèìàíèå, ÷òî ïåðâûé ýëåìåíò ìîæåò áûòü àòîìîì â ñïèñêå. CONS òàêæå äîïóñêàåò àòîì íà ìåñòî ïàðàìåòðà â <ñïèñêå>, ñîçäàþùåãî ñòðóêòóðó, èçâåñòíóþ êàê dotted pair (òî÷å÷íàÿ ïàðà). Êîãäà íà ýêðàí âûäàåòñÿ òî÷å÷íàÿ ïàðà, ÀâòîËÈÑÏ ïå÷àòàåò ïåðèîä èëè òî÷êó ìåæäó ïåðâûì è âòîðûì ýëåìåíòîì ïàðû. Òî÷å÷íûå ïàðû çàíèìàþò ìåíüøå ìåñòà â ïàìÿòè, ÷åì îáû÷íûå ñïèñêè; ôóíêöèÿ CDR ìîæåò ïðèìåíÿòüñÿ äëÿ ââîäà âòîðîãî àòîìà. Òàêèì îáðàçîì:
(cons 'a 'b) ââîäèò (A. B)
(car (cons 'a 'b)) ââîäèò A
(cdr (cons 'a 'b)) ââîäèò B
4.36 (cons <angle>)
Ýòà ôóíêöèÿ ââîäèò êîñèíóñ <óãëà>, ãäå <óãîë> âûðàæåí â ðàäèàíàõ. Íàïðèìåð:
(cos 0.0) ââîäèò 1.000000
(cos pi) ââîäèò -1.000000
4.37 (defun <sym><argument list><expr>...)
DEFUN îïðåäåëÿåò ôóíêöèþ ïîä èìåíåì <sym> (îáðàòèòå âíèìàíèå, ÷òî èìÿ ôóíêöèè àâòîìàòè÷åñêè âçÿòî â óãëîâûå ñêîáêè, òàê ÷òî îíà íå äîëæíà çàêëþ÷àòüñÿ ïîëüçîâàòåëåì â ñêîáêè). Çà èìåíåì ôóíêöèè ñëåäóåò ñïèñîê ïàðàìåòðîâ (âîçìîæíî ïóñòîé), çà íèì êîñàÿ ÷åðòà íå îáÿçàòåëüíà, è èìåíà îäíîãî èëè áîëåå ëîêàëüíûõ ñèìâîëîâ äëÿ ôóíêöèè. Ïîñëåäíèé ïàðàìåòð (åñëè òàêîâîé èìååòñÿ) è ïåðâûé ëîêàëüíûé ñèìâîë äîëæíû áûòü îòäåëåíû êîñîé ÷åðòîé èëè õîòÿ áû îäíèì ïðîáåëîì.
Åñëè íå îáúÿâëÿþòñÿ íè ïàðàìåòðû, íè ëîêàëüíûå ñèìâîëû, ïîñëå èìåíè ôóíêöèè äîëæíû áûòü ïóñòûå êðóãëûå ñêîáêè. Íàïðèìåð:
(defun myfunc (x y)...) (ôóíêöèÿ ïðèíèìàåò 2 ïàðàìåòðà)
(defun myfunc (/a b)...) (ôóíêöèÿ èìååò 2 ëîêàëüíûõ ñèìâîëà)
(defun myfunc (x/temp)...) (îäèí ïàðàìåòð è îäèí ëîêàëüíûé ñèìâîë)
(defun myfunc ()...) (íåò ïàðàìåòðîâ è ëîêàëüíûõ ñèìâîëîâ)
Ñëåäóþùèå çà ñïèñêîì ïàðàìåòðîâ è ëîêàëüíûõ ñèìâîëîâ îäíî èëè íåñêîëüêî âûðàæåíèé âû÷èñëÿþòñÿ ïðè âûïîëíåíèè ôóíêöèè.
Ñàìà ôóíêöèÿ DEFUN ââîäèò èìÿ îïðåäåëåííîé ôóíêöèè. Åñëè âûçâàíà îïðåäåëåííàÿ òàêèì îáðàçîì ôóíêöèÿ, åå ïàðàìåòðû áóäóò âû÷èñëåíû è îãðàíè÷åíû (ïîäîãíàíû) ïàðàìåòðàìè ñèìâîëîâ. Ëîêàëüíûå ñèìâîëû ìîãóò ïðèìåíÿòüñÿ â ôóíêöèè áåç èçìåíåíèÿ èõ ñâÿçè íà âíåøíèõ óðîâíÿõ. Ïîñëå âû÷èñëåíèÿ ðåçóëüòàòà ïîñëåäíåãî âûðàæåíèÿ, ôóíêöèÿ áóäåò ââåäåíà. Âñå ïðåäûäóùèå âûðàæåíèÿ â ôóíêöèè èìåþò ïîáî÷íûé ýôôåêò. Ñàìà ôóíêöèÿ DEFUN ââîäèò èìÿ îïðåäåëåííîé ôóíêöèè. Íàïðèìåð:
(defun add (x y)
(+ x y)
)
(add 10 5) ââîäèò 15
(add -7. 4) ââîäèò 2,60000
è
(defun dots (x y/temp)
(setq temp (strcat x "..."))
(strcat temp y)
)
(dots "a" "b") ââîäèò "à...b"
(dots "from" "to") ââîäèò "from...to"
Íèêîãäà íå ïðèìåíÿéòå èìÿ âñòðîåííîé ôóíêöèè èëè ñèìâîëà â êà÷åñòâå <sym>, ïîñêîëüêó ýòî ñäåëàåò âñòðîåííóþ ôóíêöèþ íåäîñòóïíîé.
4.37.1. Ôóíêöèè áèáëèîòåê è àâòîìàòè÷åñêàÿ çàãðóçêà
Îïðåäåëåíèÿ ôóíêöèé ìîãóò õðàíèòüñÿ â ôàéëå è çàãðóæàòüñÿ ïðè ïîìîùè ôóíêöèè LOAD ÀâòîËÈÑÏà (ýòà ôóíêöèÿ îïèñàíà äàëüøå â ýòîé ãëàâå). Åñëè ñóùåñòâóåò ôàéë "acad.lsp", ÀâòîËÈÑÏ áóäåò çàãðóæàòü åãî àâòîìàòè÷åñêè êàæäûé ðàç ïðè ââåäåíèè ãðàôè÷åñêîãî ðåäàêòîðà ÀâòîÊÀÄà; âû ìîæåòå ïðèìåíÿòü ýòó ôóíêöèþ äëÿ ñîçäàíèÿ áèáëèîòåêè ïîëåçíûõ ôóíêöèé è äëÿ ñîçäàíèÿ ãàðàíòèè ïðèñóòñòâèÿ ýòîé áèáëèîòåêè.
4.37.2. Ôóíêöèè Ñ:õõõ - äîïîëíåíèå êîìàíä ÀâòîÊÀÄà
Âû ìîæåòå ââåñòè äîïîëíèòåëüíûå êîìàíäû â ÀâòîÊÀÄ, ïðèìåíÿÿ ôóíêöèþ DEFUN äëÿ îïðåäåëåíèÿ ôóíêöèé, ââîäÿùèõ â ðàáîòó ýòè êîìàíäû. Äëÿ òîãî, ÷òîáû ïðèìåíÿòüñÿ êàê êîìàíäû ÀâòîÊÀÄà, ýòè ôóíêöèè äîëæíû ïðèäåðæèâàòüñÿ ñëåäóþùèõ ïðàâèë:
1. Ôóíêöèÿ äîëæíà èìåòü èìÿ ñëåäóþùåé ôîðìû: "Ñ:ÕÕÕ", ãäå âñå áóêâû - âåðõíåãî ðåãèñòðà. ×àñòü èìåíè "Ñ" äîëæíà ïðèñóòñòâîâàòü âñåãäà, ÷àñòü "ÕÕÕ" ìîæåò áûòü èìåíåì êîìàíäû ïî âàøåìó âûáîðó, ïðè óñëîâèè, ÷òî îíà íå äóáëèðóåò íèêàêèõ êîìàíä ÀâòîÊÀÄà, âñòðîåííûõ èëè âíåøíèõ.
2. Ôóíêöèÿ äîëæíà áûòü îïðåäåëåíà ñ íóëåâûì ñïèñêîì ïàðàìåòðîâ (íî ëîêàëüíûå ñèìâîëû ìîãóò ïðèñóòñòâîâàòü).
Íàïðèìåð, ôóíêöèÿ: íàðèñîâàòü êâàäðàò ïðè ïîìîùè Ïîëèëèíèé îïðåäåëÿåò ñëåäóþùåå:
(defun C:PSQUARE ('pt1 pt2 pt3 pt4 len)
(setq pt1 (getpoint "Lower left corner:"))
(setq len (getdist pt1 "Length of one side:"))
(setq pt2 (polar pt1 0.0 len))
(setq pt3 (polar pt2 ('PI 2.0) len))
(setq pt4 (polar pt3 PI len))
(Command "PLINE" pt1 pt2 pt3 pt4 "C")
)
Ôóíêöèè, îïðåäåëåííûå òàêèì îáðàçîì, ìîãóò áûòü âûçâàíû ïðîñòî ââåäåíèåì ÷àñòè "ÕÕÕ" èìåíè ôóíêöèè, ïðè ïîÿâëåíèè ïîäñêàçêè ÀâòîÊÀÄà "Command:". Åñëè "ÕÕÕ" - íåèçâåñòíàÿ êîìàíäà, ÀâòîÊÀÄ ïîïûòàåòñÿ âûçâàòü ôóíêöèþ ÀâòîËÈÑÏà "Ñ:ÕÕÕ" áåç ïàðàìåòðîâ. Íàïðèìåð, ïðè ôóíêöèè C:PSQUARE äèàëîã áóäåò ñëåäóþùèì:
Ñommand: PSQUARE
Lower left corner: (enter a point)
Íèæíèé ëåâûé óãîë: (ââåäèòå òî÷êó)
Length of one side: (enter a distance)
Äëèíà ñòîðîíû: (ââåäèòå ðàçìåð)
Çàòåì ôóíêöèÿ âûçîâåò êîìàíäó ÀâòîÊÀÄà PLINE è ââåäåò â åå ïîäñêàçêè: íàðèñîâàòü æåëàåìûé êâàäðàò. Äîáàâëåíèå òàêèì îáðàçîì êîìàíäû â ÀâòîÊÀÄ - î÷åíü ìîùíîå ñâîéñòâî ÀâòîËÈÑÏà. Îäíàæäû îïðåäåëåííàÿ, íîâàÿ êîìàíäà ìîæåò èñïîëüçîâàòü âñå ñâîéñòâà, ïðåäîñòàâëÿåìûå ÀâòîËÈÑÏîì. Ôàêòè÷åñêîå ïðèìåíåíèå íîâîé êîìàíäû íå òðåáóåò îêðóæåíèÿ èìåíè êîìàíäû ïàðàìåòðàìè, òàê ÷òî ýòà ââåäåííàÿ ÀâòîËÈÑÏîì êîìàíäà, ïðèìåíÿåòñÿ òàêæå, êàê è ëþáàÿ äðóãàÿ êîìàíäà ÀâòîÊÀÄà.
4.38.(distance <pt1><pt2>)
Ýòà ôóíêöèÿ ââîäèò ðàññòîÿíèå ìåæäó 2D òî÷êàìè <pt1> è <pt2>, ãäå 2D òî÷êà - ñïèñîê èç äâóõ äåéñòâèòåëüíûõ ÷èñåë.
Íàïðèìåð:
(distance '(1.0 2.5) '(7.7 2.5)) ââîäèò 6.700000
(distance '(1.0 2.5) '(3.0 4.0)) ââîäèò 2.828427
4.39. (eq <expr1> <expr2>)
Ýòà ôóíêöèÿ îïðåäåëÿåò, èäåíòè÷íû ëè <expr1> è <expr2>, òî åñòü, îíè ôàêòè÷åñêè ãðàíè÷àò ñ îäíèì è òåì æå îáúåêòîì (íàïðèìåð,SETQ). EQ ââîäèò T, åñëè äâà âûðàæåíèÿ èäåíòè÷íû, â ïðîòèâíîì ñëó÷àå ââîäèòñÿ íîëü. Îáû÷íî îíà ïðèìåíÿåòñÿ äëÿ îïðåäåëåíèÿ ôàêòè÷åñêîé èäåíòè÷íîñòè äâóõ ñïèñêîâ. Íàïðèìåð, äàíû ñëåäóþùèå íàçíà÷åíèÿ:
(setq f1 '(a b c))
(setq f2 '(a b c))
(setq f3 f2)
òîãäà:
(eq f1 f2) ââîäèò íîëü (f1 è f2 - íå îäèí è òîò æå ñïèñîê!)
(eq f3 f2) ââîäèò T (f3 è f2 - àáñîëþòíî îäèíàêîâûå ñïèñêè!)
Ñì. òàêæå ôóíêöèþ EQUAL.
4.40 (equal <expr1><expr2>)
Ýòà ôóíêöèÿ îïðåäåëÿåò, ðàâíû ëè <expr1> è <expr2>, ò.å. âû÷èñëÿþòñÿ ëè îíè ê îäíîìó ïðåäìåòó. Íàïðèìåð, çàäàíû ñëåäóþùèå íàçíà÷åíèÿ:
(setq f1 '(a b c))
(setq f2 '(a b c))
(setq f3 f2)
òîãäà: