Tìm hiểu ngôn ngữ AutoLISP Và Ứng dụng trong AutoCAD

Download miễn phí Đồ án Tìm hiểu ngôn ngữ AutoLISP Và Ứng dụng trong AutoCAD





Mục lục

Lời Thank 4

Phần 1: Giới thiệu 5

1 Tên và mục đích của đề tài 5

2 Giới thiệu vài nét về cơ quan thực tập 5

Phần 2: Nội dung 6

Lời mở đầu 6

1. Khái quát về lập trình trong AutoCAD 8

1.1 Kỹ thuật tự động ActiveX (ActiveX Automation) 8

1.2 AutoCAD VBA 8

1.3 AutoLISP và Visual LISP 9

1.4 ObjectARX 9

2. Giới thiệu chung 10

2.1 Vài nét sơ lược về LISP 10

2.2 Lịch sử phát triển AutoLisp 10

2.3 Ưu nhược điểm của AutoLisp 11

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

3.1. Căn bản về AutoLisp 12

3.1.1 Xây dựng biểu thức AutoLISP 12

3.1.2 Cách nhập biểu thức AutoLISP: 13

3.1.3 Các hàm số học 13

3.2. Biến và ký hiệu trong AutoLISP 14

3.2.1 Gán giá trị cho biến 14

3.2.2 Giá trị trả về của hàm AutoLISP 14

3.2.3 Sử dụng các biến tại dòng lệnh AutoCAD 14

3.2.4 Các quy định về đặt tên biến 14

3.2.5 Nhập giá trị cho tham số 14

3.2.6 Phạm vi các biến trong AutoLISP 15

3.3. File chương trình AutoLISP 16

3.3.1 Tên file AutoLISP 16

3.3.2 Tạo file chương trình 16

3.3.3 Gọi file chương trình AutoLISP 17

3.3.4 Chú thích 17

3.3.5 Các hàm tự tạo 17

3.3.6 Biến toàn cục và biến cục bộ 18

3.3.7 Tạo các lệnh AutoCAD mới 18

3.4. Nhập dữ liệu 19

3.4.1 Nhập số nguyên 19

3.4.2 Nhập số thực 19

3.4.3 Nhập chuỗi 19

3.4.5 Tham số không rỗng 19

3.4.6 Kiểm soát dữ liệu nhập vào 19

3.4.7 Biến hệ thống 19

3.5. Một số hàm cơ bản 20

3.5.1 Hàm chuyển kiểu dữ liệu từ chuỗi thành số và ngược lại 20

3.5.2. Các hàm số học 21

3.5.3. Các hàm về chuỗi 23

3.6. Xử lý danh sách 25

3.6.1 Phân loại : 25

3.6.2 Tạo danh sách 25

3.6.3 Các hàm xử lý danh sách cơ bản 25

3.6.4 Các hàm xử lý danh sách nâng cao 26

3.7. Biểu thức điều kiện 28

3.7.1. Biểu thức điều kiện 28

3.7.2. Rẽ nhánh chương trình 29

3.7.3 Các hàm logic 30

3.8. Vòng lặp 31

3.8.1 Hàm Repeat 31

3.8.2 Hàm While 31

3.8.3 Hàm Append 31

3.8.4 Hàm 1+ 32

3.8.5 Hàm 1- 32

3.8.6 Truy xuất từng phần tử trong danh sách 32

3.9. Tạo hộp thoại 33

3.9.1 Khái niệm về file .DCL và các thành phần của hộp thoại 33

3.9.2. Phân loại các ttile 34

3.9.3 Các thuộc tính của tile 40

3.9.4 Các hàm điều khiển hộp thoại 41

3.9.5 Các hàm điều khiển các tile 42

3.9.6 Một số chú ý khi thiết kế hộp thoại 42

3.10. Các hàm xử lý màn hình đồ hoạ và thiết bị nhập 44

3.10.1 Màn hình đồ họa 44

3.10.2 Gọi hiển thị các menu 45

3.10.3 Các hàm truy xuất màn hình đồ họa và thiết bị nhập 46

4. Chương trình minh hoạ 48

4.1 Lỗ Gujong 48

4.2 Dầm chữ I 51

5 Kết luận 55

6 Các tài liệu tham khảo 56

 

 





Để tải tài liệu này, vui lòng Trả lời bài viết, Mods sẽ gửi Link download cho bạn ngay qua hòm tin nhắn.

Ket-noi - Kho tài liệu miễn phí lớn nhất của bạn


Ai cần tài liệu gì mà không tìm thấy ở Ket-noi, đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:


rước tên hàm trong phần định nghĩa hàm tự tạo.
Ví dụ: xây dựng hàm vẽ đường thẳng đi qua 2 điểm
; nhập vào 2 điểm
(defun C:duongthang (/ diem1 diem2)
(prompt “\n Ve duong thang qua hai diem”)
(setq diem1 (getpoint “\n nhap diem thu nhat”))
(setq diem2 (getpoint “\n nhap diem thu nhat”))
(command “LINE” diem1 diem2 “”)
(prompt “\n Hoan thanh”) ;thong bao ket thuc ham
)
Ta có thể tải file này và gọi lệnh duongthang như một lệnh của AutoCAD.
S::Startup Option
Khi khởi động AutoCAD, hàm này định nghĩa trong file ACADR14.LSP sẽ được tự động gọi thi hành. Đây là hàm duy nhất có tính chất này.Vì được thực hiện tự động nên nó không được chứa bất kỳ tham số nào. Thông thường hàm này được dùng để thực hiện các thao tác khởi tạo bản vẽ.
3.4. Nhập dữ liệu
3.4.1 Nhập số nguyên
Cú pháp: (getint [prompt])
Ví dụ: (getint “\n Nhap vao so hang:”)
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 hay 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:
CmdEcho =1: kết quả tính toán trung gian sẽ hiện lên màn hình.
CmdEcho =0: kết quả tính toán trung gian sẽ không hiện lên màn hình.
3.5. Một số hàm cơ bản
3.5.1 Hàm chuyển kiểu dữ liệu từ chuỗi thành số và ngược lại
AutoLISP cung cấp các hàn getreal và getstring để nhập số thực và chuỗi. Dữ liệu nhập vào có thể sử dụng cho các hàm AutoLISP hay các lệnh AutoCAD. Tuy nhiên trên thực tế dữ liệu có thể nhập vào từ các nguồn khác nhau và không đúng các dạng mong muốn. Do đó ta phải chuyển đổi kiểu dữ liệu từ số sang kiểu chuỗi và ngược lại.
Hàm ATOF (Ascii TO Floating point decimal): chuyển đổi một chuỗi thành số thực
Cú pháp: (Atof string)
Ví dụ:
(setq A “5.25” B “45” )
(atof “21”) ;trả về 21.0
(atof “A”) ;trả về 5.25
Hàm DISTOF (Distance TO Floating point decimal): tương tự hàm atof
Cú pháp: (distof string [mode])
Ví dụ :
(distof “8.2500E+01” 1) ;trả về 82.5 MODE 1
(distof “82.50” 2) ;trả về 82.5 MODE 2
(distof “6’-10.50\”” 3) ;trả về 82.5 MODE 3
(distof “6’-10 ½ \”” 4) ;trả về 82.5 MODE 4
(distof “82 1/2” 5) ;trả về 82.5 MODE 5
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
Hàm RTOS (Real TO String): chuyển một số thành một chuỗi
Cú pháp: (Rtos number [mode [precision]])
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ố.
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]])
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à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)
Hàm READ: trả về phần tử đầu tiên chứa trong một chuỗi và chuyển đổi chuỗi này về kiểu dữ liệu tương ứng.
Cú pháp: (Read string)
3.5.2. Các hàm số học
3.5.2.1 Các hàm kiểm soát dạng số
a.Hàm FIX: trả về phần nguyên của một số. Phần số nguyên này không được làm tròn.
Cú pháp: (Fix number)
Ví dụ : (fix 52.34) ;trả về 52
b.Hàm FLOAT: chuyển một số có kiểu số nguyên thành kiểu số thực.
Cú pháp : (Float number)
c. Hàm ABS: trả về giá trị tuyệt đối của một số.
Cú pháp: (Abs number)
3.5.2.2 Các hàm khác
a. Hàm Rem: trả về số dư của phép chia.
Cú pháp: (Rem number number )
Ví dụ:
(setq Q (fix (/ 27.5 5)))
(setq R (rem 27.5 5))
b. Hàm GCD: trả về ước số chung lớn nhất của hai số nguyên
Cú pháp: (Gcd munber1 number2)
c. Hàm Max: trả về giá trị lớn nhất trong các số
Cú pháp: (Max munber number number..)
d. Hàm Min: trả về giá trị nhỏ nhất trong các số
Cú pháp: (Min munber number number..)
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 en.
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ị hay toạ độ một điểm từ đơn vị đo này sang đơn vị đo khác
Cú pháp : (Cvunit value from to)
b. Hàm Angle: trả về góc đo (bằng radian) tạo bởi đường thẳng qua hai điểm với trục X trong mặt phẳng XY.
Cú pháp: (Angle PT1 PT2)
Nếu các điểm PT1, PT2 là các điểm 3D, chúng sẽ được chiếu lên mặt phẳng XY hiện hành sau đó hai điểm chiếu này được dùng để tính góc.
c. Hàm Distance: trả về khoảng cách giữa hai điểm.
Cú pháp: (Distance PT1 PT2)
d. Hàm Polar: dùng toạ độ cực để tạo ra điểm 2D mới từ điểm ban đầu.
Cú pháp: (Polar PT Angle Distance)
Ví dụ: (Polar ‘(1 0) 0 3) trả về (4.0 0.0) : góc bằng 0, khoảng cách bằng 3 so với điểm ban đầu.
e. Hàm Getangle: yêu cầu nhập vào giá trị góc đo, hay chọn hai điểm trên màn hình bằng cách bấm chuột. Hàm này trả về kết quả tính bằng Radian.
Cú pháp: (Getangle [PT] [prompt])
Ví dụ: (getangle ‘(12 45))
(getangle “\n Chi ra vi tri cua goc”)
f. Hàm Getdis: yêu cầu nhập vào giá trị khoảng cách, hay chọn hai điểm trên màn hình bằng cách nhấn chuột.
Hàm Getdis trả về một số thực.
Hàm Getdis thường được sử dụng khi các điểm không có sẵn trước trong chương trình.
Ví dụ: viết chương trình tính khoảng cách hai điểm nhập vào
(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 hay 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 hay 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 hay 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”
3.5.3.2 Các hàm xử lý chuỗi
a. Hàm STRCASE: biến các ký tự trong chuỗi thành chữ hoa hay chữ thường.
Cú pháp: (Strcase String [which])
b. Hàm STRCAT: dùng để kết nối nhiều chuỗi thành một chuỗi
Cú pháp: (Strcat string1 string2..)
c. Hàm STRLEN: trả về độ dài một chuỗi.
Cú pháp: (Strlen [string]..)
Nếu có nhiều tham số string, hàm trả về tổng chiều dài các chuỗi.
d. Hàm SUBSTR: trả về một chuỗi con.
Cú pháp: (Substr string start [length])
Ví dụ: (setq A “Ngon ngu AutoLISP”)
(substr A 1 8) ; trả về “Ngon ngu”
(substr A 10) ; trả về “AutoLISP”
3.6. Xử lý danh sách
3.6.1 Phân loại :
Danh sách được chia thành 3 loại chính:
Biểu thức (Expression list): chứa tên hàm và các tham số của hàm. Biểu thức cần được định giá trị.
Toạ độ điểm (Point coordinate List): đây là trường hợp đặc biệt của danh sách kho dữ...

Music ♫

Copyright: Tài liệu đại học ©