1. Gi i thi u v Autolisp
1.1. Sơ lư c v LISP
LISP – List Processing là m t chu n ngôn ng l p trình ñư c John McCarthy phát...
trư ng c a m i ngư i. B n ñang th c hi n m t vài thao tác ñ hoàn thi n b n v c a
mình và b n ch t nh n ra nó c l p l i liê...
khác.
Associated List: ðây là ki u d li u ñ nh nghĩa các ñ i tư ng trong AutoCAD.
D a trên các ki u d li u trên Autolisp p...
Code:
    (while < ñi u ki n >
    <th c thi>
    )
    (repeat <s l n l p>
    <th c thi>
    )


3.9. Ngôn ng ñi u khi n...
ð s   d ng lisp ph c v cho v b n v CAD ta th c hi n các bư c sau.

1. Command: AP
2. Hi n c a s Load/Unload Applications, ...
Upcoming SlideShare
Loading in …5
×

Gioi Thieu Ve Autolisp

3,260 views

Published on

Published in: Technology, Sports
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,260
On SlideShare
0
From Embeds
0
Number of Embeds
34
Actions
Shares
0
Downloads
68
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Gioi Thieu Ve Autolisp

  1. 1. 1. Gi i thi u v Autolisp 1.1. Sơ lư c v LISP LISP – List Processing là m t chu n ngôn ng l p trình ñư c John McCarthy phát tri n vào năm 1956 trong d án nghiên c u AI (Artificial Intelligence). Phiên b n ñ u tiên LISP 1.5 ñư c gi i thi u vào ñ u th p niên 60 và phát tri n v i nhi u bi n th như: BBNLisp, Interlisp, MacLisp, NIL (New Implementation of Lisp), Franz Lisp…Vào th p niên 70 và ñ u nh ng năm 80 ñã có máy tính chuyên d ng như Lisp Machines ñư c thi t riêng ñ ch y nh ng chương trình LISP. ð n năm 1981 ñ chu n hóa LISP các nhà l p trình ñã t p h p và chu n hóa thành chu n Common LISP. Năm 1984 Golden Common LISP tr thành chu n chính th c cho máy tính IBM và sau này phát tri n thành XLISP- ti n thân c a Autolisp ngày nay. 1.2. L ch s phát tri n c a Autolisp AutoLisp ñư c phát tri n t XLISP là ngôn ng l p trình trên môi trư ng AutoCAD và ñư c công b phiên b n ñ u tiên 2.18 vào tháng 01 năm 1986. Cùng v i s phát tri n c a AutoCAD các phiên b n c a Autolisp ngày càng ñư c hoàn thi n v i nhi u tính năng m i, có th k ñ n m t vài phiên b n tiêu bi u như sau: - Chính th c gi i thi u phiên b n 2.5 tích h p vào AutoCAD R7 v i m t s tính tăng cơ b n v các tương tác v i ñ i tư ng trong b n v - Phiên b n 2.6 tích h p vào AutoCAD R7 v i ch c năng 3D và m t s hàm m i getcorner, getkword, và initget. - Phiên b n tích h p vào AutoCAD R12 gi i thi u m t s hàm GUI (Graphic User Interface) và ngôn ng ñi u khi n h p tho i DCL (Dialog Control Language). - Phiên b n Visual LISP™ gi i thi u cùng v i AutoCAD R14 là m t môi trư ng phát tri n Autolisp ñ c l p, tr c quan v i s h tr c a các công c g r i. - Visual LISP™ ñư c chính th c tích h p vào AutoCAD 2000 và t ñó ñ n nay ñư c b sung nhi u tích năng m i. 1.3. Ưu và như c ñi m c a Autolisp 1.3.1. Ưu ñi m Làm vi c r t t t và d dàng v i ñi m và các y u t hình h c. R t m m d o, không kh t khe. Không c n trình d ch - l p trình và th c hi n l nh. Ch y ñư c trên t t các các h ñi u hành v i cùng 1 file Lisp. Qu n lý ñ i tư ng v i List - m t ki u d li u v i nhi u ưu ñi m vư t tr i trong qu n lý t a ñ ñi m. Mã ngu n m và c ng ñ ng phát tri n Autolisp r t r ng l n. 1.3.2 Như c ñi m Hình th c bên ngoài không h p d n. Cú pháp khó hi u. H n ch , không có trình biên d ch. Ngôn ng trung gian nên th c thi ch m. H u như không th tương tác v i h th ng. 2. Nh ng khó khăn khi ti p c n v i Autolisp Có th kh ng ñ nh ch c ch n m t ñi u là Autolisp là m t ngôn ng r t d ti p c n so v i m t s ngôn ng l p trình khác vì nó là ngôn ng l p trình theo k ch b n (Script). Tuy nhiên, ñ ti p c n ñư c v i Autolisp yêu c u ngư i h c ph i có ki n th c n n v l p trình và n m v ng v AutoCAD, ñ ng th i ph i có ki n th c nh t ñ nh v hình h c. Chương trình Autolisp là m t t h p nh ng k ch b n ñư c ñ nh trư c n m ñi u khi n AutoCAD th c thi theo suy nghĩ c a ngư i thi t k . ða s m i ngư i mu n h c Autolisp là ñ gi i quy t nh ng bài toán trong lĩnh v c chuyên môn c a mình. ð ti p c n và ng d ng t t Autolisp trong công vi c yêu c u ngư i l p trình ph i có s liên h v i nhu c u công vi c th c t , ñi u này ph thu c r t l n vào s
  2. 2. trư ng c a m i ngư i. B n ñang th c hi n m t vài thao tác ñ hoàn thi n b n v c a mình và b n ch t nh n ra nó c l p l i liên t c. M t ý tư ng n y ra là b n c n th c hi n m t ño n chương trình Autolisp ñ t ñ ng th c hi n các thao tác này và chương trình Autolisp ñư c hoàn thành. ði u này có th gi i thích ñư c vì sao m t s ngư i l i c m th y khó khăn khi ti p c n v i Autolisp m t dù kh năng tư duy v l p trình c a h khá t t. 3. M t s khái ni m và cú pháp l p trình 3.1. Gi i thi u M t chương trình Autolisp luôn b t ñ u b ng d u “(“ và k t thúc b ng d u “)”. M t chương trình Autolisp ñơn gi n như sau: Code: (defun myProg() (princ quot;Tecco 533quot;) (princ) ) Autolisp là ngôn ng tr v giá tr sau khi th c thi l nh. B n có th ki m tra ñi u này b ng cách m AutoCAD và g dòng l nh sau: (+ 1 2) K t qu tr v là 3. 3.2. Bi n ð gán giá tr trong Autolisp b n c n s d ng t khóa setq v i cú pháp: (setq a 1) ð ki m tra giá tr c a bi n dùng t khóa ! v i cú pháp: !a Gi ng m t s ngôn ng l p trình khác Autolisp cũng qui ñ nh cách ñ t tên bi n như sau: - Không dùng các ký t ñ c bi t: *, &, ^, $... - Không dùng các t khóa c a AutoCAD: LINE, PLINE, MIRROR… - Tên bi n không phân bi t ch hoa và ch thư ng 3.3. Hàm Autolisp qui ñ nh t khóa defun ñ ñ nh nghĩa hàm th c thi v i cú pháp: Code: (defun myProg() (princ quot;Tecco 533quot;) (princ) ) Ngoài ra Autolisp còn s d ng t khóa C: s khai báo v i AutoCAD là chương trình s th c thi b ng l nh t i d u nh c l nh Command v i cú pháp: Code: (defun C:myProg() (princ quot;Tecco 533quot;) (princ) ) V i hàm ñ u tiên ñ th c thi b n ph i gõ Command: (myProg) t i dòng nh c l nh còn v i hàm th hai b n ch c n g Command: myProg gi ng như m t l nh trong AutoCAD. 3.4. Ki u d li u M t s ki u d li u thông d ng trong Autolisp như sau: String: Chu i g m các ký t và s Integers: S t nhiên Real: S th c List: Ki u d li u ñ c trưng và cũng là th m nh c a LISP so v i các ngôn ng l p trình
  3. 3. khác. Associated List: ðây là ki u d li u ñ nh nghĩa các ñ i tư ng trong AutoCAD. D a trên các ki u d li u trên Autolisp phân lo i các nhóm hàm d ng s n như sau: - Hàm x lý chu i: substr, strlen, strcase, strcat - Hàm x lý s : abs, atof, atoi, fix, float, itoa - Hàm x lý List: car, cdr, cadr, caddr, caar, cddr, foreach, list, cons, nth - Hàm chuy n ñ i: fix, float, itoa, atoi, atof, rtos, angtos - Hàm toán h c: +, -, *, /, +1, -1, cos, atan, sin, sqrt, expt Hàm l a ch n th c th : entsel, ssget Hàm x lý t p ch n: ssadd, ssdel, sslength, ssname Hàm x lý ñ i tư ng: entget, entlast, entnext, entdel, entmod, entupd Hàm x lý file: pen, close, read-line, write-line 3.5. B ng mã DXF AutoCAD ñ nh nghĩa m t ñ i tư ng trên b n v theo ki u d li u Associated List như sau: ((-1 . <Entity name: 30a0510>) (0 . quot;LINEquot;) (5 . quot;22quot;) (100 . quot;AcDbEntityquot;) (67 . 0) (8 . quot;0quot;) (62 . 4) (100 . quot;AcDbLinequot;) (10 3.39219 5.3243 0.0) (11 8.72878 3.10374 0.0) (210 0.0 0.0 1.0)) ðây là m t t p h p các c p ñôi (mã s . d li u) ñư c qui ñ nh trư c. Tùy theo ñ i tư ng và thu c tính ñ i tư ng mà Associated List s có nh ng tham s khác nhau. Các mã s này tuân theo m t qui ñ nh trong b ng ñ nh nghĩa cho trư c g i là b ng mã DXF. ð có th ñ u khi n ñư c các ñ i tư ng trong b n v AutoCAD yêu c u ngư i l p trình ph i hi u r t rõ v b ng mã DXF này. 3.6. D li u m r ng AutoCAD dùng các mã s t 1000 ñ n 1042 ñ bi u di n các d li u m r ng. V i d li u m r ng ngư i l p trình có th ñánh d u ñ i tư ng trên AutoCAD ñ th c hi n các thao tác ti p theo. M t ng d ng ñi n hình trên AutoCAD s d ng d li u m r ng này là chương trình Nova-TDN c a Công ty tin h c Hài Hòa. Thông qua d li u m r ng chương trình có th phân bi t ñư c ñâu là tim tuy n, ñâu là tr c d c, c t ngang…Toàn b d li u m r ng ñư c ñ nh nghĩa trong Associated List v i mã s -3. Ví d : Code: ((-3 (quot;TECCO533quot; (1000 . quot;Tim tuyenquot;)))) 3.7. ði u ki n Cũng gi ng v i m t s ngôn ng l p trình khác Autolisp h tr ngư i l p trình 02 cú pháp ñi u ki n là ñi u ki n xác ñ nh If và ñi u ki n l a ch n Cond v i cú pháp như sau: Code: (if <ñi u ki n> <th c thi khi ñi u ki n ñúng> <th c thi khi ñi u ki n sau> ) (cond (<th1> <th c thi th1>) (<th2> <th c thi th2>) ... (<thN> <th c thi thN>) ) 3.8. Vòng l p Autolisp không h tr vòng l p For mà ch h tr 02 vòng l p Repeat và While v i cú pháp như sau:
  4. 4. Code: (while < ñi u ki n > <th c thi> ) (repeat <s l n l p> <th c thi> ) 3.9. Ngôn ng ñi u khi n h p tho i DCL Autolisp cung c p cho ngư i l p trình m t ngôn ng ñi u khi n h p tho i DCL ñ gi i quy t v giao di n tương tác v i ngư i s d ng. Thông qua ngôn ng DCL ngư i l p trình có th thi t k các Form nh p li u tr c quan giúp cho chương trình tr nên thân thi n hơn. 3.10. Hư ng ñ i tư ng B n thân Autolisp không ph i là ngôn ng l p trình hư ng ñ i tư ng, nhưng cùng v i xu hư ng phát tri n c a l p trình hư ng ñ i tư ng b t ñ u t Visual LISP™ cho AutoCAD R14 hãng AutoDesk ñã tích h p vào AutoCAD công ngh ActiveX v i k thu t l p trình hư ng ñ i tư ng VLA (Visual LISP ActiveX). Thông qua công ngh ActiveX ngư i l p trình có th di u khi n t t các các ñ i tư ng trên b n v qua các thu c tính và phương th c c a nó. ði u ñ c bi t là ngư i l p trình có th can thi p ñ n m t s ch c năng như in n, ñ nh d ng h th ng AutoCAD mà trư c ñây Autolisp không can thi p ñư c. Các chương trình s d ng công ngh ActiveX ph i ñư c d ch qua chu n ARX m i th c thi ñư c trên AutoCAD. 4. K t lu n Autolisp là m t ngôn ng l p trình ñơn gi n, d ti p c n và hi u qu công vi c nó ñem l i là ñáng k . Hãy b t ñ u Autolisp v i nh ng công vi c thư ng ngày. Nh ng ño n chương trình Autolisp ñơn nhưng có th gi m ñư c th i gian ñáng k trong vi c hoàn thi n các b n v . M t chương trình Autolisp thành công không ph i là chương trình có qui mô l n ñ n vài ch c ngàn dòng l nh mà ñó là chương hi u qu , gi i quy t ñư c các yêu c u c a ngư i thi t k và ti t ki m ñư c th i gian th c hi n công vi c. 5. Gi i thi u m t s ñ a ch tham kh o 5.1. Website hư ng d n h c Autolisp http://www.jefferypsanders.com/autolisp.html B n ñ c có th tham kh o các tài li u gi i thi u chi ti t v các hàm d ng s n trong Autolisp cũng như các tài li u gi i thi u v b ng DXF t i ñây. Ngoài ra t i website này b n có th download mi n phí nhi u chương trình Autolisp r t hay. http://www.afralisp.com/lispa/lisp.htm Website hư ng d n h c Autolisp khá chi ti t và ñ y ñ . B n có th tham kh o b t kỳ n i dung gì liên quan ñ n Autolisp t i ñây 5.2. Download các chương trình Autolisp http://xarch.tu-graz.ac.at/autocad/lisp/ http://home.pacifier.com/~nemi/ http://www.autolisppage.com http://www.caddigest.com http://www.autolisp.co.uk/ http://www.simplecad.com
  5. 5. ð s d ng lisp ph c v cho v b n v CAD ta th c hi n các bư c sau. 1. Command: AP 2. Hi n c a s Load/Unload Applications, l a ch n t t c c các lisp c n dùng. Nh n và nút Load. 3. Sau khi load xong. Cad s ñưa ra thông báo Load thành công. ð s d ng m t l nh Lisp lâu dài, nghĩa là mu n AutoCad t ñ ng load các file lisp khi kh i ñ ng, th c hi n g i c a s mà Jikibo ñã nói trên (Tools -> Load Application). Nhưng b n ko th c hi n Load b ng select file như trên, mà hãy s d ng button Contents

×