Tài liệu Đồ án tốt nghiệp Tìm hiểu AutoLISP và ứng dụng trong autoCAD - Pdf 86

Tìm hiểu AutoLISP và ứng dụng trong autoCAD

Khoa Công Nghệ Thông Tin_Trường đại học dân lập Hải Phòng
1
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC DÂN LẬP HẢI PHÒNG

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
NGÀNH CÔNG NGHỆ THÔNG TIN
Tìm hiểu ngôn ngữ AutoLISP

Ứng dụng trong AutoCAD Tìm hiểu AutoLISP và ứng dụng trong autoCAD

Khoa Công Nghệ Thông Tin_Trường đại học dân lập Hải Phòng
2
Lời cảm ơn

Lời đầu tiên, em muốn bày tỏ lòng biết ơn chân thành đối với các thầy giáo, cô
giáo trường Đại học Dân lập Hải Phòng, những người thầy không những đã tận tình
truyền đạt kiến thức mà còn luôn động viên, quan tâm, giúp đỡ chúng em trong học tập
cũng như trong cuộc sống suốt bốn năm học tại trường.
Em xin chân thành cảm ơn thầy giáo Th.S Đỗ Văn Chiểu, người thầy đã trực

Ngày 01/5/2004 Cty Cổ Phần Điện Tử Tin Học Viễn Thông chính thức đi vào
hoạt động với tổng vốn điều lệ là 3 tỷ VN
đồng, tên giao dịch quốc tế là Electronic
Telecommunication Informatic Joint.
Trụ sở chính của Cty: số 18 Trần Hưng Đạo, phường Hoàng Văn Thụ, quận
Hồng Bàng, thành phố Hải Phòng
Công ty Cổ Phần Điện Tử Tin Học Viễn thông kinh doanh các ngành nghề
sau:
- Kinh doanh và dịch vụ hàng điện tử, điện lạnh, điện máy, vật tư, thiết bị và
các đồ dùng dân dụng. Đại lý hàng điện máy.
-
Sửa chữa bảo hành, lắp giáp các thiết bị truyền thanh, truyền hình, tin học.
- Sản xuất máy thu thanh FM, máy tăng âm và ăng ten thu phát vô tuyến.
- Vận tải và dịch vụ vận tải hàng hóa.
- Dịch vụ văn hóa thể thao.
- Lắp đặt bảo dưỡng sửa chữa cung ứng vật tư thiết bị truyền hình cáp -
MMDS.
- Kinh doanh khách sạn nhà nghỉ và cho thuê văn phòng .
- Kinh doanh các thiết bị
tin học và đào tạo tin học .
- Sản xuất bao bì và bảng kẽm.
- Xây dựng công trình dân dụng, công nghiệp, giao thông thủy lợi, thương
mại và đường ống cấp thoát nước.
- Kinh doanh vận tải hành khách bằng xe taxi.
Tìm hiểu AutoLISP và ứng dụng trong autoCAD

Khoa Công Nghệ Thông Tin_Trường đại học dân lập Hải Phòng
4

Phần 2: Nội dung

vực vẽ 2D, AutoCAD là ông “trùm”.
Điều ấy sở dĩ tồn tại được là bởi 2 lí do[6]: 1- AutoCAD không ngừng hoàn
thiện mình, 2- AutoCAD để ngỏ cho người sử dụng cách tự hoàn thiện theo nhu cầu
riêng một cách dễ dàng. Trong AutoCAD có tồn tại ít nhất là 3 ngôn ngữ lập trình lớn
VisualLisp, VisualBasic và Visual C.
Vậy thành th
ạo ngôn ngữ lập trình trong AutoCAD để làm gì?
Việc viết code trong AutoCAD nói riêng và việc lập trình thường chiếm thời
gian rất lâu đối với người không chuyên. Trong ba ngôn ngữ kể trên thì Visual LISP
được yêu thích hơn cả bởi câu lệnh đơn giản lại có thể sử dụng sẵn các câu lệnh của
AutoCAD một cách tiện lợi. Ít câu lệnh và ít thuật toán rắc rối, dễ học, dễ viết. Chính
vì thế Visual LISP trong đại đa số người sử d
ụng là một phương pháp hoàn thiện, tích
hợp các lệnh vẽ có sẵn của AutoCAD theo yêu cầu của từng cá nhân.
Visual Studio trong AutoCAD là công cụ mạnh nhất giúp đột phá các giới hạn
của các câu lệnh AutoCAD cho người sử dụng. Ví dụ như khi vẽ cầu thang cuốn, các
Tìm hiểu AutoLISP và ứng dụng trong autoCAD

Khoa Công Nghệ Thông Tin_Trường đại học dân lập Hải Phòng
5
mặt phức tạp bậc cao, nếu không muốn bị hiện rõ chỗ gấp khúc khi phóng đại tỉ lệ thì
chỉ có lựa chọn duy nhất là VS (trong AutoCAD 2007 đã hỗ trợ helix). VS cũng là
công cụ lập trình dùng cho các đề bài lớn như tự động hóa tính toán ổn định cho đập
bê tông, tự động hóa thiết kế nhà máy thủy điện, chuyển dữ liệu excel thành địa
hình 3D....
VBA không mạnh như VS, không tiện như Visual LISP, bởi thế
người học
VBA thường là người có căn bản về VB và muốn tiết kiệm thời gian.
Nói đến VisualLISP (Visual List Processor) thì trước hết nên nói đến
AutoLISP. AutoLisp, tập con ngôn ngữ LISP, là ngôn ngữ lập trình bậc cao thích hợp

- Chương trình truy cập bản vẽ AutoCAD được mở rộng đối với nhiều
môi trường lập trình khác. Trước ActiveX, những chuyên viên thiết kế

đã giới hạn chỉ trong AutoLISP hoặc C++.
- Chia sẻ dữ liệu với những ứng dụng Windows như Exel, Word dễ
dàng hơn.
1.2 AutoCAD VBA
Sự tích hợp VBA vào AutoCAD đã cung cấp một công cụ trực quan dễ sử dụng để
tùy chỉnh AutoCAD. Ví dụ bạn có thể tạo ra ứng dụng trích thuộc tính thông tin một
cách tự động, chèn kết quả trực tiếp vào bảng tính Exel và thực hiện bất kỳ s
ự chuyển
đổi thông tin mà bạn cần.
Có ba thành phần cơ bản của chương trình VBA trong AutoCAD. Đầu tiên chính
là AutoCAD, nó có bộ thiết lập đối tượng rộng lớn bao gồm các thực thể, dữ liệu, và
các câu lệnh AutoCAD. AutoCAD là một cấu trúc ứng dụng mở với rất nhiều mức độ
giao tiếp. Thành phần thứ hai là bộ giao tiếp tự động ActiveX AutoCAD, nó thiết lập
sự giao tiếp với các đối tượng AutoCAD. L
ập trình trong VBA yêu cầu sự hiểu biết cơ
bản về ActiveX. Phần tử thứ ba chính là bản thân VBA. Nó có bộ thiết lập đối tượng
đối tượng, từ khoá, hằng số…của riêng nó, cung cấp chương trình điều khiển, gỡ rối
và thi hành.
Sử dụng VBA cho AutoCAD có những ưu điểm sau:
- Tốc độ : ứng dựng trong cùng tiến trình với VBA, ActiveX chạy
nhanh hơn các ứng dụng trong AutoLISP.
-
Dễ sử dụng: ngôn ngữ lập trình và môi trường phát triển dễ sử dụng và
cài đặt với AutoCAD.
- Khả năng liên vận hành giữa các window: ActiveX và VBA được thiết
kế để sử dụng với các ứng dụng Windows khác và cung cấp một
đường dẫn tuyệt với để trao đổi thông tin giữa các ứng dụng.

nghiệm bằng cách
đưa đoạn mã vào tại dòng nhắc lệnh, nó sẽ cho bạn nhìn thấy kết quả ngay lập tức.
1.4 ObjectARX
Kỹ thuật ObjectARX cung cấp những thiết lập cho các ứng dụng thiết kế phần
mềm để chia sẻ dữ liệu đối tượng thông minh.
ObjectARX
TM
(Phần mở rộng thời gian thực AutoCAD) là một môi trường biên
dịch ngôn ngữ lập trình để phát triển các ứng dụng AutoCAD. Môi trường lập trình
ObjectARX bao gồm một số thư viện liên kết động chạy trong một không gian địa chỉ
giống như AutoCAD và thao tác trực tiếp với lõi cấu trúc cơ sở dữ liệu và mã
AutoCAD. Những thư viện này có được ưu điểm của kiến trúc mở AutoCAD, cung
cấ
p các truy cập trực tiếp đến cấu trúc cơ sơ dữ liệu, hệ thống đồ hoạ, và phương tiện
hình học để mở rộng cách lớp và các khả năng của AutoCAD tại thời gian thực. Thêm
vào đó, bạn có thể sử dụng DLLs để tạo các câu lệnh mới để thực hiện chính xác giống
như các câu lệnh có sẵn của AutoCAD.
Có thể nói, trong số các ngôn ngữ lập trình mà AutoCAD hỗ tr
ợ thì AutoLISP và
Visual LISP dễ học và dễ tương tác với AutoCAD hơn cả. Bạn có thể soạn thảo các
đoạn mã AutoLISP bằng bất kỳ trình soạn thảo nào thậm chí có thể soạn thảo ngay
trong AutoCAD mà không cần cài đặt các chương trình soạn thảo riêng như VS,
VBA…
Trong khuân khổ của đồ án này, em xin trình bày về ngôn ngữ AutoLISP_ được
xem như là cách cửa đầu tiên để tiếp xúc với lập trình trong AutoCAD.
Tìm hiểu AutoLISP và ứng dụng trong autoCAD

Khoa Công Nghệ Thông Tin_Trường đại học dân lập Hải Phòng
8
2. Giới thiệu chung

AutoCAD để thay thế cho AutoLisp trong AutoCAD 2000 phiên bản ra đời tháng
3/1999. Sau đó Autodesk đã tạm dừng phát triển Visual LISP một thời gian để tập
trung phát triển VBA và ObjectARX. Có thể khẳng định rằng AutoLISP chính là hiện
thực hoá của LISP [6].
Ta có thể kể đến một vài phiên bản tiêu biểu như sau:
-Phiên bản 2.5 tích hợp vào AutoCAD R7 với một số tính n
ăng cơ bản về các
tương tác với các đố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,getword và initget .
-Phiên bản tích hợp vào AutoCAD R12 giới thiệu một số hàm GUI và ngôn ngữ
điều khiển hộp thoại DCL(Dialog Control Language) .
-Phiên bản Visual LISP
TM
giới thiệu cùng 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
TM
được chính thức tích hợp vào AutoCAD2000 và từ đó đến nay
được bổ sung nhiều tính năng mới .
Tìm hiểu AutoLISP và ứng dụng trong autoCAD

Khoa Công Nghệ Thông Tin_Trường đại học dân lập Hải Phòng
9
AutoLisp là một ngôn ngữ lập trình rất mạnh , bạn sẽ cần tốn một thời gian để
học và làm chủ nó .
2.3 Ưu nhược điểm của AutoLisp
• Ư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.

10
3.Ngôn ngữ lập trình AutoLISP

3.1. Căn bản về AutoLisp
3.1.1 Xây dựng biểu thức AutoLISP
Khi ta nhập dòng text tại dòng nhắc lệnh thì AutoCAD sẽ so sánh dòng text với
danh sách lệnh của nó. Nếu tương ứng với lệnh trong AutoCAD thì sẽ thi hành. Khi
code AutoLISP được chuyển vào trong AutoCAD thì AutoCAD sẽ chuyển code này
đến bộ biên dịch AutoLISP.
Danh sách (List) là cấu trúc cơ bản trong AutoLISP. Danh sách là tập hợp các
phần tử chứa trong dấu ngoặc đơn và cách nhau bởi khoảng trắng. Có hai loại danh
sách là :
¾ Biểu thức
¾ Danh sách dữ liệu
Biểu thức là thành phần cơ bản nhất trong các chương trình AutoLISP. Phần tử
đầu tiên của biểu thức là một hàm. Hàm này sẽ được AutoLISP định giá trị và trả về
kết quả.
Một biểu thức AutoLISP đơn giản giống như một biểu thức toán học.Sự khác
nhau chủ yếu giữa chúng la thứ tự các phần tử và phải có dấu () trong AutoLISP.

Biểu th
ức toán học Biểu thức AutoLISP
phức tạp. Khi chuyển các biểu thức toán học phức tạp thành các biểu thức
AutoLISP, trước tiên ta nên tạo các biểu thứ
c ở mức sâu nhất, sau đó chuyển
dần sang các biểu thức bên ngoài.
Tìm hiểu AutoLISP và ứng dụng trong autoCAD

Khoa Công Nghệ Thông Tin_Trường đại học dân lập Hải Phòng
12
3.2. Biến và ký hiệu trong AutoLISP

Các giá trị tĩnh như tên hàm AutoLISP, tên hàm tự tạo hay các hằng số gọi
chung là các ký hiệu, các dữ liệu thay đổi trong các chương trình gọi là biến. Dữ liệu
chứa trong các biến thay đổi tuỳ theo các tham số cung cấp cho chương trình. Trong
hầu hết các chương trình, dữ liệu và các biến được tạo ra và quản lý là tương tự nhau.
Tên gọi của chúng phụ thuộc vào giá trị tĩnh hay động. Tên biến và ký hiệu không
phân biệt hoa, thường.
3.2.1 Gán giá tr
ị cho biến
• Cú pháp: ( setq tênbiến1 giatrị1 tênbiến2 giátrị2…..)
3.2.2 Giá trị trả về của hàm AutoLISP
• Hàm setq có thể trả về giá trị rỗng “nil”, true “T” hoặc các số, chuỗi, danh sách.
• Để đổi dấu giá trị kiểu số chứa trong biến, ta dùng hàm trừ với một tham số duy
nhất.
• Khi tham số của hàm là tên biến, AutoLISP sẽ định giá trị của biến và sử dụng
giá trị này làm tham số
.
• Kiểu dữ liệu chứa trong biến phải phù hợp với kiểu dữ liệu mà hàm yêu cầu.
Các dữ liệu chuỗi không thể dùng làm tham số cho các hàm số học.
3.2.3 Sử dụng các biến tại dòng lệnh AutoCAD
Để lấy giá trị của biến, ta đặt dấu ! trước tên biến.

chương trình AutoCAD. Giá trị gán cho biến vẫn tồn tại khi ta tạo mới hay mở bản vẽ
khác. Nếu mở nhiều chương trình AutoCAD cùng một lúc thì biến của chương trình
này không thể được truy xuất bởi chương trình kia.
Để khởi tạo lại các biến AutoLISP khi tạo mới hay mở bản vẽ khác trong cùng
một cửa sổ chương trình, ta gán giá trị biến hệ thống LISPINIT = 1 hoặc mở hộp tho
ại
Preference/Compatibility đánh dấu mục Reload AutoLISP between drawings.
Tìm hiểu AutoLISP và ứng dụng trong autoCAD

Khoa Công Nghệ Thông Tin_Trường đại học dân lập Hải Phòng
14
3.3. File chương trình AutoLISP
3.3.1 Tên file AutoLISP
Tên file có thể dài 256 ký tự, phần mở rộng là .LSP. Trong một số trường hợp
có thể dùng tên mở rộng khác : .mnl,…
3.3.2 Tạo file chương trình
• Sử dụng các trình soạn thảo notepad, MS word…
• Sử dụng AutoCAD:
¾ Lệnh Vlide
¾ Tools / AutoLISP / Visual Lisp Editor

Hình1.Cửa sổ soạn thảo lệnh
Chú ý:
 Một biểu thức có thể viết trên nhiều dòng.
 Dùng các khoảng trắng để chương trình dễ
đọc.
 Mỗi biểu thức AutoLISP phải được đặt trong dấu ngoặc đơn.
 Các dữ liệu kiểu chuỗi phải đặt trong dấu nháy chuỗi. Nếu chuỗi
dữ liệu không đặt trong dấu nháy chuỗi, AutoLISP sẽ xem đó là
tên hàm.

• VD: (setq R ;| gán giá trị cho R |; 10 )
• Hàm prompt dùng để hiện dòng thông báo lên màn hình. Hàm này hiện kiểu dữ
liệu chuỗi chứa trong tham số Message và trả về giá trị nil.
• Cú pháp: (prompt Message)
• Princ tương tự Prompt nhưng không trả về
giá trị nil mà trả về chuỗi thông báo.
3.3.5 Các hàm tự tạo
• Cú pháp :
(defun [tên hàm] [danh sách biến] [biểu thức])
 Tên hàm: tên hàm tuân theo các quy định về đặt tên biến.
 Danh sách biến: gồm hai phần ngăn cách nhau bởi dấu /. Phần
thứ nhất chứa các tham số cần thiết khi gọi hàm, phần thứ hai
chứa các biến cục bộ của hàm.
 Biểu thức: khi hàm được gọi các biểu thức này lần l
ượt được
tính.
Tìm hiểu AutoLISP và ứng dụng trong autoCAD

Khoa Công Nghệ Thông Tin_Trường đại học dân lập Hải Phòng
16
• Ví dụ: tạo hàm nhân đôi giá trị tham số đưa vào
(defun nhandoi (n) (* 2 n))
3.3.6 Biến toàn cục và biến cục bộ
• Biến toàn cục là các biến vẫn giữ nguyên giá trị trong phạm vi bản vẽ hiện
hành.
• Biến cục bộ là các biến được định nghĩa trong phạm vi một hàm và giá trị
của nó sẽ mất khi đi việc gọi hàm kết thúc.
3.3.7 Tạo các lệnh AutoCAD mới
• Ta có thể s
ử dụng một trong hai đặc điểm sau để áp dụng cho các hàm tự

• Ví dụ: (getint “\n Nhap vao so hang:”)
3.4.2 Nhập số thực
• Cú pháp: (getreal [prompt])
• Các số thực được chứa dưới dạng dấu chấm động với độ chính xác kép,
cung cấp tối thiểu 14 chữ số thập phân có nghĩa.
3.4.3 Nhập chuỗi
• Chuỗi nhập vào không được quá 132 ký tự
• Cú pháp : (getstring [prompt])
3.4.5 Tham số không rỗng
• Tham s
ố không rỗng là tham số chỉ chấp nhận các giá trị khác rỗng. Có hai
cách cung cấp tham số không rỗng : dùng biến T hoặc dùng một giá trị cụ
thể.
• Biến T được AutoLISP định nghĩa trước và có giá trị là T (True). Ta không
nên thay đổi giá trị biến T.
3.4.6 Kiểm soát dữ liệu nhập vào
• Hàm initget cung cấp danh sách các giá trị nhập hợp lệ bằng cách gán các
bit kiểm tra (bit code) và danh sách các từ khoá.
¾ Cú pháp: (initget [bits] [string])
• Hàm getkword
¾ Hàm này yêu cầu nhậ
p dữ liệu ở dạng từ khoá
¾ Hàm này chỉ chấp nhận 2 bit code là 1 và 128
¾ Cú pháp : (getkword [prompt])
3.4.7 Biến hệ thống
• Lấy giá trị biến hệ thống
¾ Cú pháp : (getvar tên biến)
• Gán giá trị biến hệ thống
¾ Cú pháp : (setvar [tên biến] [giá trị])
• Biến CmdEcho:

c. Hàm ATOI (Ascii TO Integer): chuyển một chuỗi thành số nguyên
• Cú pháp: (Atoi string [mode])
• Ví dụ:
(setq A “5.25” B “45” )
(atoi “5.55”) ;trả về 5
(atoi “A”) ;trả về 3
(atoi “4.3E03”) ;trả về 4

d. Hàm RTOS (Real TO String): chuyển một số thành một chuỗi
• Cú pháp: (Rtos number [mode [precision]])
e. Hàm ITOA (Integer TO Ascii): chuyển số nguyên thành chuỗi
• Cú pháp: (Itoa integer)
• Hàm itoa chỉ chấp nhận tham số là số nguyên, không nhận tham số là chuỗi,
chỉ có một tham số.
Tìm hiểu AutoLISP và ứng dụng trong autoCAD

Khoa Công Nghệ Thông Tin_Trường đại học dân lập Hải Phòng
19
f. Hàm ANGTOS (Angle to string): chuyển số đo một góc thành một chuỗi
• Cú pháp: (Angtos ange [mode [precision]])
g. Hàm ANGTOF (Angle to floating point decimal): chuyển đổi một chuỗi chứa
số đo góc thành một số thực.
• Cú pháp: (Angtof string [mode])
Hàm ASCII: chuyển ký tự đầu tiên trong một chuỗi thành mã Ascii
tương ứng và trả về mã này.
• Cú pháp: (Ascii string)
h. Hàm CHR (Ascii character to string): chuyển đổi mã ascii thành ký tự tương
ứng trong bảng mã ascii. Các mã ascii chuẩn có giá trị từ 32 đến 126.
• Cú pháp: (Chr
integer)

3.5.2.3 Các hàm lượng giác
a. Hàm Sin: trả về giá trị sin của một góc
• Cú pháp: (Sin angle)
• Giá trị trả về là số thực, tham số angle phải được tính bằng radian.
b. Hàm Cos: trả về giá trị cos của một góc
• Cú pháp: (Cos angle)
c. Hàm Atan: trả về giá trị arc tang của một góc.
• Cú pháp: (Atan num1 [num2])
3.5.2.4 Các hàm luỹ thừa, khai căn, logarit
a. Hàm Expt: tính luỹ thừa của một số.
• Cú pháp: (Expt base power)
• Ví dụ (expt 4 2) ; trả
về (4)
2
= 16
b. Hàm Sqrt: trả về căn bậc hai của một số.
• Cú pháp: (Sqrt number)
• Ví dụ: (Sqrt 16) ; trả về 4.0
c. Hàm Log: trả về giá trị logarit của một số.
• Cú pháp: (Log number)
• Ví dụ: (log 6) ;trả về 1.79176
d. Hàm Exp: trả về giá trị luỹ thừa e
n
.
• Cú pháp: (Exp number )
• Ví dụ: (Exp 1) ; trả về 2.71828
3.5.2.5 Các hàm về khoảng cách và góc đo
a. Hàm chuyển đổi đơn vị góc đo:
• CVUNIT: dùng để chuyển đổi một giá trị hoặc toạ độ một điểm từ đơn vị đo
này sang đơn vị đo khác

(defun C:khoangcach (/ diem kc)
(setq p1 (getpoint “\n chon diem dau tien”))
(setq p2 (getpoint “\n chon diem thu hai”))
(prompt “\n Khoang cach giua hai diem la:”)
(distance p1 p2)
)
3.5.3. Các hàm về chuỗi
3.5.3.1 Các hàm hiển thị thông tin
a. Hàm Prin1: in dữ liệu chứa trong tham số EXPR lên màn hình hoặc in thành file và
trả về kết quả là tham số này.
• Cú pháp: (Prin1 [Expr [File-Desc]])
¾ Expr: có thể chứa các kiểu dữ liệu khác nhau
¾ File-Desc: là file dùng để chứa kết quả trả về của hàm.
b. Hàm Princ: in dữ liệu ch
ứa trong tham số EXPR lên màn hình hoặc in thành file và
trả về kết quả là tham số này, tương tự hàm prin1.
• Cú pháp: (Princ [Expr [File-Desc]])
c. Hàm Print: tự động xuống dòng, sau đó in dữ liệu chứa trong tham số EXPR lên
màn hình hoặc in thành file và trả về kết quả là tham số này, tương tự hàm prin1.
• Cú pháp: (Print [Expr [File-Desc]])
d. Ví dụ:
(prin1 “ABC”) ;in “ABC” và trả về “ABC”
(princ “ABC”) ;in ABC và trả về “ABC”
(print “ABC”) ; sang dòng mới, in “ABC” và trả về “ABC”
(prin1 “\nABC”) ;không nhận biết được ký tự xuống dòng
;in “\nABC” và trả về “\nABC”
(princ “\nABC”); nhận biết được ký tự xuống dòng, in ABC và trả về “\nABC”
Tìm hiểu AutoLISP và ứng dụng trong autoCAD

Khoa Công Nghệ Thông Tin_Trường đại học dân lập Hải Phòng

số lượng dữ liệu tăng lên kéo theo số lượng biến tăng theo sẽ khó quản lý
các biến. Do vậy ta phải lưu dữ liệu vào danh sách. Một danh sách dù chứa
nhiều phần tử vẫn có thể gán cho một biến nhờ đó mà làm đơn giản việc
quản lý và truy cập dữ liệu.
• Cú pháp: (List expression)

Ví dụ: (setq L (list “Nha” “Tran” “cua so” 78.5 ‘(20 20 30)))
;có 5 phần tử với các kiểu dữ liệu khác nhau trong danh sách
;”Nha”, “Tran”, “cuaso” :kiểu chuỗi
;78.5 : kiểu thực
;’(20 20 30) :danh sách không định giá trị
• Trước khi tạo ra danh sách, hàm list sẽ định giá trị cho các tham số của mình
(trừ tham số là danh sách không định giá trị).
3.6.3 Các hàm xử lý danh sách cơ bản
a. Hàm CAR: trích ra phần tử đầu tiên của danh sách
• Cú pháp: (Car list)
b. Hàm CDR: tạo ra danh sách từ một danh sách gốc bằng cách loại bỏ phần tử đầu
tiên trong danh sách g
ốc, chỉ lấy các phần tử còn lại.
• Cú pháp: (Cdr list)
c. Hàm CADR: trả về phần tử thứ hai trong danh sách.
• Cú pháp : (Cadr list)
d. Hàm CADDR: trả về phần tử thứ ba trong danh sách.
• Cú pháp: (Caddr list)
e. Hàm LAST: trả về phần tử cuối cùng của danh sách.
• Cú pháp: (Last list)
f. Hàm LENGTH: trả về số lượng phần tử có trong danh sách.
• Cú pháp: (Length list)
Tìm hiểu AutoLISP và ứng dụng trong autoCAD


(cons a ‘(b v)) ; trả về (100 b v)
• Nếu tham số thứ hai là kiểu dữ liệu không phải dạng danh sách, hàm sẽ trả
về dạng dotted pair.
• Ví dụ: (setq A 10 B “Muoi”)
(cons 1 “mot”) ; trả về (1 . “mot”)
(cons A B) ;trả về (10 . “muoi”)
(cons ‘(1 2 3) A) ; trả về ((1 2 3) . 10)
a. Hàm MEMBER: Duyệt danh sách list để tìm xem expr có là phần tử của danh
sách này hay không. Nếu tìm thấy, kết quả
trả về là phần tử còn lại của danh
sách list, bắt đầu từ phần tử expr.
• Cú pháp: (member expr alist)
Tìm hiểu AutoLISP và ứng dụng trong autoCAD

Khoa Công Nghệ Thông Tin_Trường đại học dân lập Hải Phòng
25
• Hàm member kết hợp với hàm assoc, cxxxxr để giảm bớt các biểu thức điều
kiện.
• Ví dụ:
(setq X ‘(1 2 3 4))
(member 2 X) ; trả về (2 3 4)
(member 5 X) ; trả về nil
d. Hàm REVERSE: trả về danh sách theo thứ tự ngược lại.
• Cú pháp: (Reverse list)
• Ví dụ : (setq X ‘(1 2 3 4))
(reverse X) ; trả về 4 3 2 1
e. Hàm NTH: lấy ra phần tử ở vị trí n trong danh sách.
• Cú pháp: (NTH n list)
• Vị trí các phần tử trong danh sách được
đánh số bắt đầu từ 0


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status