Professional Documents
Culture Documents
Nội Dung Thực Hành Buổi 3
Nội Dung Thực Hành Buổi 3
BỘ MÔN KỸ THUẬT DỆT MAY CÁN BỘ GIẢNG DẠY: ThS. VÕ ĐÌNH KHẢI
BÀI 3: LẬP TRÌNH TRONG MÔI TRƯỜNG CAD – NHẬP MÔN AUTOLISP
♦ Trước buổi học: Sinh viên xem trước Nội dung thực hành buổi 3.
- Giảng viên tiến hành chia nhóm cho sinh viên (có thể giữ nhóm như Buổi 2).
- Nhóm sinh viên tìm hiểu về ngôn ngữ lập trình Autolisp và thực hành một số bài tập cơ bản:
1 Tìm hiểu căn bản về AutoLISP (AutoLISP là gì? Được dùng để làm gì?...)
2 Thao tác mở và làm quen với giao diện Visual LISP Tiết 1
3 Tìm hiểu về cách thức xây dựng và nhập biểu thức AutoLISP
4 Tìm hiểu các hàm số học và các biến, ký hiệu trong AutoLISP
Tiết 2
5 Tìm hiểu về file chương trình AutoLISP và cách thức lập một chương trình cơ bản.
6 Thực hành các bài tập lập trình AutoLISP cơ bản (BT1 và BT2) Tiết 3
7 Nghiên cứu và viết chương trình AutoLISP vẽ một chi tiết rập cơ bản trong ngành may (BT3) Tiết 4
Cuối buổi học, sinh viên nộp bài thực hành và trình bày (giải thích) về đoạn chương trình mà
8 Tiết 5
nhóm đã nghiên cứu và viết được.
- Cá nhân: 3 điểm (kiểm tra thực hành các thao tác lệnh AutoLISP cơ bản tại lớp)
1
Bản quyền nội dung thuộc về: ThS. Võ Đình Khải
BT1: Viết chương trình AutoLISP vẽ một hình vuông cạnh a bất kỳ nhập vào từ bàn phím.
BT2: Viết chương trình AutoLISP vẽ một hình tam giác vuông cân cạnh c bất kỳ nhập vào từ bàn phím.
BT3: Viết chương trình AutoLISP vẽ mẫu rập đô áo (cầu vai) cho áo sơ mi nam với kích thước vai và cổ nhập
vào từ bàn phím (chọn: rộng vai = 44, vòng cổ = 39, hạ vai = 3), được phát hoạ trong Hình a.
Kết quả thực hành cần đạt được là chạy được file chương trình và xuất được hình vẽ như Hình b (không cần phải
uốn cong đoạn bên dưới góc trái). Có dùng và dùng nhiều hàm (polar…).
2
Bản quyền nội dung thuộc về: ThS. Võ Đình Khải
HƯỚNG DẪN GỢI Ý BÀI THỰC HÀNH BUỔI 3
NHẬP MÔN AUTOLISP
Hình 1. Nhập biểu thức Autolisp tại cửa sổ AutoCAD Text Window (Command)
Hình 2. Dùng lệnh VLISP để gọi cửa sổ lập trình AutoLISP có tên Visual LISP
3
Bản quyền nội dung thuộc về: ThS. Võ Đình Khải
1. Xây dựng biểu thức AutoLISP
Cấu trúc dữ liệu cơ bản của AutoLISP là danh sách (List). Danh sách là tập hợp các phần tử chứa trong cặp dấu
ngoặc đơn (). Các phần tử trong danh sách phân cách nhau bởi các khoảng trắng.
Có hai loại danh sách: biểu thức (expression) và danh sách dữ liệu (data list). Biểu thức là thành phần cơ bản
trong tất cả các chương trình AutoLISP. Phần tử đầu tiên của biểu thức là một hàm (function). Hàm này sẽ được
AutoLISP định giá trị và trả về kết quả. Các phần tử tiếp theo là các tham là số là các giá trị cung cấp cho hàm. Giá
trị trả về là kết quả tính toán của hàm.
Sự khác nhau cơ bản giữa một biểu thức AutoLISP với một đẳng thức toán học là các phần tử AutoLISP có thứ
tự khác với đẳng thức và chúng phải được chứa trong cặp dấu ngoặc đơn.
Ta có thể nhập và định giá trị biểu thức AutoLISP giống như nhập các lênh AutoCAD (nhớ đặt biểu thức trong
dấu ngoặc đơn) bằng các phương pháp: nhập trực tiếp từ dòng lệnh của AutoCAD, gọi từ menu, hoặc tải từ file
chương trình AutoLISP. Sau đó biểu thức được định giá trị và trả về kết quả.
Khi nhập biểu thức tại dòng lệnh, ta nên dùng cửa sổ AutoCAD Text Window (nhấn phím F2) nhờ đó ta thấy
được giá trị trả về hoặc các thông báo lỗi nếu có. Khi biểu thức được đưa vào từ dòng nhắc lệnh, kết quả trả về ngay
tại cửa sổ dòng nhắc lệnh.
Nếu ta kết thúc biểu thức bằng nhấn phím ↵ (enter), kết quả trả về ở dòng nhắc tiếp theo. Nếu ta kết thúc biểu
thức bằng phím cách (SPACEBAR), kết quả trả về trên cùng một dòng.
60
4
Bản quyền nội dung thuộc về: ThS. Võ Đình Khải
Nếu biểu thức không bị lỗi kết quả trả về tại dòng nhắc lệnh. Nếu biểu thức bị lỗi thông báo lỗi tương ứng sẽ xuất
hiện kèm với biểu thức bị lỗi.
Bảng 1. Một số lỗi thường gặp khi nhập biểu thức AutoLISP
Command: (+ 1 2 3 4)↵
Không bị lỗi, kết quả trả về là 10
10
Command: (+6 8)
Biểu thức này cần một khoảng trống để ngăn cách tên hàm + với tham số 6
; error: bad function: +6
Command: (+ 8 .45)
Tham số .45bị sai, cần phải ghi đầy đủ là 0.45
; error: misplaced dot on input
Command: (+ 6 8
Biểu thức chưa được đóng lại bằng dấu ngoặc đơn. Dòng kế tiếp máy báo
(_> )
thiếu dấu và cần đóng lại.
14
Command: (+ 6 8
(_> *Cancel* Thay vì đóng dấu ngoặc đơn ta thoát khỏi h à m .
; error: Function cancelled
(Tại buổi học, sinh viên tìm hiểu các hàm số học cơ bản)
Các giá trị tĩnh không đổi như tên hàm của AutoLISP (+, -, *, /, …) và các tên hàm tự tạo, hoặc các hằng số (như
Pi) gọi chung là các ký hiệu (symbol). Các dữ liệu thay đổi trong chương trình gọi là biến (variable). Dữ liệu 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 trường hợp, ký hiệu và biến
được tạo ra và quản lý tương tự nhau. Tên gọi phụ thuộc vào giá trị của chúng là tĩnh hay động. Tên biến và và ký
hiệu (cũng như tên hàm) không phân biệt chữ hoa chữ thường.
- Cú pháp:
- Giải thích:
Gán gt1 cho biến b1, gt2 cho biến b2 ... Mỗi biến nhận một giá trị viết sau nó
Giá trị có thể là dữ liệu, một biến khác hoặc một biểu thức đã xác định trước đó
5.0
5
Bản quyền nội dung thuộc về: ThS. Võ Đình Khải
Dùng chương trình soạn thảo (dạng mã ASCII) bất kỳ hoặc Visual LISP, viết thành chương trình như một tập tin
nguồn có phần mở rộng *.lsp.
Ta có thể dùng các phần mềm soạn thảo văn bản như: Notepad, Microsoft Word để tạo file và lưu chúng ở dạng
simple text.
Nhưng công cụ tốt nhất cho việc soạn chương trìng AutoLISP là dùng phần mềm Visual LISP. Được gọi bằng
lệnh Vlisp hoặc chọn từ Tools menu -> AutoLISP->Visual LISPEditor sẽ xuất hiện màn hình soạn thảo chương trình
AutoLISP như hình dưới đây.
- Mỗi biểu thức AutoLISP phải được đặt trong cặp dấu nhoặc đơn.
- Phân cách giữa tên hàm (hay toán tử) với các tham số, giữa các tham số với nhau phải có ít nhất một dấu cách
( dấu Space).
6
Bản quyền nội dung thuộc về: ThS. Võ Đình Khải
- Không phân biệt chữ hoa và chữ thường, thường thì tên hàm nên viết bằng chữ thường, tên các lệnh và các
biến hệ thống của AutoCad viết bằng chữ hoa cho dễ đọc và chương trình sáng sủa hơn.
- Bất kỳ một hàm nào cũng trả về một giá trị nào đó, nếu không có giá trị trả về trị số mặc định là nil.
- Lời chú thích ghi trong chương trình AutoLisp được ghi sau dấu “ ; ” và không được thực thi trong chương
trình.
- Các dữ liệu kiểu chuỗi phải đặt trong cặp dấu nháy chuỗi. Nếu chuỗi dữ liệu không đặt trong dấu nháy chuỗi,
AutoLISP xem đó là tên hàm và tất nhiên là bị lỗi.
Ta dùng hàm Appload (gõ lệnh AP từ dòng lệnh của AutoCAD) hoặc vào Tools chọn Load Aplication… để tải
một file chương trình AutoLISP vào AutoCAD để thực thi. Khi đó xuất hiện hộp thoại và ta phải chọn file sau đó
chọn Load rồi Close và chương trình sẽ được thực hiện.
AutoLISP cho phép chúng ta tạo ra hàm mới, nhờ đó ta có thể kết hợp nhiều hàm AutoLISP thành một hàm duy
nhất. Các hàm tự tạo có thể thực hiện chức năng như yêu cầu người sử dụng nhập các giá trị cho các tham số, in
thông tin ra màn hình, tạo hoặc hiệu chỉnh các đối tượng AutoCAD, tạo các lệnh AutoCAD mới.
Tên_hàm: do người lập trình đặt, tên hàm nên viết bằng chữ hoa và không có khoảng trống.
7
Bản quyền nội dung thuộc về: ThS. Võ Đình Khải
Thân hàm: là các lệnh xử lý của AutoLisp. Một hàm có thể triệu gọi nhiều hàm khác.
Cú pháp hàm:
(bt1)
(bt2)
Ví dụ: tạo hàm chuyển đổi đơn vị đo của góc từ độ sang radian như sau:
(defun dtor(do)
(* (/ do 180.0)pi)
Bằng cách thêm C: vào trước tên hàm tự tạo thì khi thực thi chương trình AutoLISP sẽ tạo ra lệnh mới cho
AutoCAD có tên trùng tên hàm. Cú pháp như sau:
(defun C:ten-ham (/ a1 a2 …)
(bt1)
(bt2)
♦ Hàm (getpoint …)
- Mô tả:
+ [point]: Nếu có, cho bằng 1 danh sách điểm, là điểm thứ nhất, còn điểm người dùng nhập vào sẽ là điểm thứ
2. Điểm thứ 2 có thể cho bằng toạ độ tương đối.
+ [prompt]: Nếu có, là dòng nhắc hoặc giải thích về dữ liệu sẽ nhập. Dòng nhắc phải được đặt trong ngoặc kép
“ ”.
8
Bản quyền nội dung thuộc về: ThS. Võ Đình Khải
♦ Hàm (getint …)
♦ Hàm (getreal …)
- Chức năng: In kết quả ra vùng dòng lệnh trên màn hình hoặc vào tệp.
- Cú pháp:
9
Bản quyền nội dung thuộc về: ThS. Võ Đình Khải
(prin1 expr [fr])
- Mô tả:
+ [fr] : Tên tập tin chứa dữ liệu được mở bằng lệnh open, không nhất thiết phải có.
- Lưu ý: Các ký tự điều khiển như: “\n”, “\r”... không có tác dụng đối với hàm prin1 mà có tác dụng đối với hàm
princ. Riêng hàm print luôn ghi kết quả xuống dòng mới và sau kết quả có một dấu trống. Các hàm này có thể xuất
chuỗi ký tự nhưng phải đặt trong cặp ngoặc kép.
♦ Hàm (command …)
- Cú pháp: (command “Tên_lệnh” [các đáp ứng lời nhắc] [các tuỳ chọn]...)
- Mô tả:
[các đáp ứng lời nhắc] và [các tuỳ chọn]: tuân theo các lệnh của AutoCAD
Nếu Tên_lệnh = _Tên_lệnh hoặc _.Tên_lệnh AutoCAD sẽ truy cập các giá trị trong bảng số liệu của lệnh thực
thi trong AutoCAD.
→ Vẽ đường tròn tâm có toạ độ (100.00, 100.00) với bán kính 10.00
♦ Hàm (polar …)
- Chức năng: Từ một điểm dùng làm gốc tọa độ cực, cùng với một khoảng cách và một góc cho trước, giúp xác
định một điểm trong không gian 2 chiều bằng phương pháp tọa độ cực.
- Mô tả:
+ [ang]: giá trị góc bằng radian được xác định tương đối so với trục x trong hệ tọa độ cực, chiều dương ngược
chiều kim đồng hồ, không phụ thuộc vào mặt phẳng vẽ hiện hành.
(2.0 7.0)
11