Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

KHOA CƠ KHÍ CAD-CAM TRONG DỆT MAY (THÍ NGHIỆM) – HK231

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

Nội dung thực hành Buổi 3

♦ Trước buổi học: Sinh viên xem trước Nội dung thực hành buổi 3.

♦ Tại buổi học:

- 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:

STT Nội dung Thời lượng

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.

Hình thức đánh giá Buổi 3

- Nhóm: 7 điểm (BT1-2đ; BT2-2đ; BT3-3đ)

- 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

Đề bài thực hành Buổi 3

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.

Yêu cầu PHẢI sử dụng hàm (polar…).

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.

Yêu cầu PHẢI sử dụng hàm (polar…).

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…).

Hình a. Mẫu rập cầu vai (đô áo) của áo sơ mi nam

Hình b. Kết quả chương trình vẽ rập cầu vai áo sơ mi nam

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

Hình 3. Giao diện Visual LISP của AutoCAD

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.

2. Nhập biểu thức AutoLISP

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.

Hình 4. Nhập biểu thức vào ô Command (AutoCAD Text Window)

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.

Ví dụ: Command: (* 2 5) 10 (kết thúc biểu thức bằng phím SPACEBAR)

Command: (+ 50 10)↵ (kết thúc biểu thức bằng nhấn phím ↵)

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

3. Các hàm toán học trong AutoLISP

(Tại buổi học, sinh viên tìm hiểu các hàm số học cơ bản)

4. Các biến và ký hiệu trong AutoLISP

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.

Phép gán bằng hàm (setq...):

- Gán giá trị cho 1 biến

- Cú pháp:

(setq b1 gt1 [b2 gt2] ...)

- 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 đó

Để xoá một biến ra khỏi bộ nhớ: (setq biến Nil)

Ví dụ: Command: (setq a 5.0)

5.0

5. File chương trình AutoLISP

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.

Hình 5. Soạn thảo chương trình AutoLISP bằng Notepad

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.

Hình 6. Soạn thảo chương trình AutoLISP bằng Visual LISP

Một số lưu ý khi viết chương trình:

- Mỗi biểu thức AutoLISP phải được đặt trong cặp dấu nhoặc đơn.

- Một biểu thức có thể viết trên nhiều dòng.

- Ta có thể dùng các khoảng trắng để chương trình dễ đọc.

- 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.

6. Gọi và chạy chương trình AutoLISP

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.

Hình 7. Hộp thoại chọn file .lps từ lệnh Appload

7. Các hàm tự tạo trong AutoLISP

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.

7.1. Hàm defun()

Chức năng: Hàm định nghĩa của AutoLisp

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:

(defun ten-ham (x1 x2 … / y1 y2 …)

(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)

7.2. Tạo các lệnh vẽ AutoCAD

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)

8. Một số hàm chuẩn của AutoLISP

8.1. Các hàm nhập dữ liệu từ người dùng

♦ Hàm (getpoint …)

- Chức năng: Chờ người dùng nhập toạ độ một điểm.

- Cú pháp: (getpoint [point] [prompt])

- 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
“ ”.

- Ví dụ: (setq pt1 (getpoint “Cho tam duong tron:”))

8
Bản quyền nội dung thuộc về: ThS. Võ Đình Khải

Hình 8. Ví dụ về hàm (getpoint …) trên cửa sổ Command

♦ Hàm (getint …)

- Chức năng: Chờ người dùng nhập vào một số nguyên.

- Cú pháp: (getint [prompt])

- Mô tả: [prompt] là dòng nhắc hoặc giải thích về dữ liệu sẽ nhập.

- Ví dụ: (getint “Nhap vao mot so nguyen:”)

Hình 9. Ví dụ về hàm (getint …) trên cửa sổ Command

♦ Hàm (getreal …)

- Chức năng: Chờ người dùng nhập vào một số thực.

- Cú pháp: (getreal [prompt])

- Mô tả: [prompt] là dòng nhắc hoặc giải thích về dữ liệu sẽ nhập.

- Ví dụ: (getreal “Nhap vao mot so thuc bat ky:”)

8.2. Các hàm xuất dữ liệu

♦ Hàm prin1, princ, print

- 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])

(princ expr [fr])

(print expr [fr])

- Mô tả:

+ expr : Biểu thức

+ [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.

8.3. Hàm chuyển lệnh từ AutoLISP sang AutoCAD

♦ Hàm (command …)

- Chức năng: Thực hiện lệnh của AutoCAD.

- Cú pháp: (command “Tên_lệnh” [các đáp ứng lời nhắc] [các tuỳ chọn]...)

- Mô tả:

Tên_lệnh: là tên các lệnh của AutoCAD

[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í dụ: (command “CIRCLE” ‘(100.00 100.00) 10.00)

→ Vẽ đường tròn tâm có toạ độ (100.00, 100.00) với bán kính 10.00

8.4. Hàm xử lý góc đo và điểm toạ độ

♦ 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.

- Cú pháp: (polar [pt] [ang] [dist])

- Mô tả:

+ [pt]: điểm 2D.

+ [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.

+ [dist]: Khoảng cách so với điểm [pt]


10
Bản quyền nội dung thuộc về: ThS. Võ Đình Khải
- Ví dụ: Command: (polar '(2.0 2.0) (/ pi 2) 5)

(2.0 7.0)

Hình 10. Ví dụ về hàm (polar …) trên cửa sổ Command

11

You might also like