Chủ đề trong bài học Hàm cơ bản
Hàm (Command …) | Hàm (getpoint …)
Hàm (getdist …) | Hàm (getangle …) | Hàm (getint …) | Bài tập
Tiếp tục với chuổi bài Hướng dẫn học Autolisp cùng Blog xây dựng, hôm nay Tuệ sẽ giới thiệu các bạn về các Hàm nhập dữ liệu trong Autolisp. Sau khi học xong bài này và làm bài tập áp dụng bạn đã có thể tự mình viết được một số lisp cơ bản rồi đó
Xem lại các bài học trước
Bài 1: Các phép toán trong AutoLisp
Bài 2 : Một số hàm cơ bản của Autolisp
1.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"...)
GIẢI THÍCH:
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
2. Các hàm nhập liệu từ người dùng
Các hàm sau sẽ tạm dừng chương trình để yêu cầu người dùng nhập dữ liệu vào từ bàn phím hoặc chuột
a. Hàm (getpoint ...)
CHỨC NĂNG: Chờ người dùng nhập toạ độ một diểm
CÚ PHÁP:
(getpoint [point] [prompt])
GIẢI THÍCH:
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 “ ”
VD1 : Vẽ 1 đoạn thẳng Line khi biết toạ độ 2 điểm
Mở Visua Lisp Editor -> menu File -> New -> Soạn thảo Lisp có nội dung sau :
(defun c:VL () ;(1) (setq p1 (getpoint "\n Nhap toa do diem thu nhat cua Line :")) ; (2) (setq p2 (getpoint p1 "\n Nhap toa do diem thu hai cua Line :")) ; (3) (Command "Line" p1 p2 "") ; (4) ) ; (5)
Giải thích
+ Dòng (1) định nghĩa 1 lệnh tắt để vẽ Line có tên là VL
+ Dòng (2) : Trên Command sẽ xuất hiện dòng nhắc Nhap toa do diem thu nhat cua Line. Hàm getpoint chờ người dùng nhập toạ độ hoặc pick trên màn hình, sau đó sẽ gán toạ độ này cho biến p1 nhờ hàm setq.
+ Dòng (3) : Trên Command sẽ xuất hiện dòng nhắc Nhap toa do diem thu hai cua Line. Hàm getpoint chờ người dùng nhập toạ độ hoặc pick trên màn hình, sau đó sẽ gán toạ độ này cho biến p2 nhờ hàm setq. Bạn để ý nếu hàm getpoint có chứa biến p1 thì sẽ xuất hiện sợi tóc của chuột tại điểm p1
+ Dòng (4): Thông qua hàm Command, ta vẽ 1 line từ p1 đến p2
+ Dòng (5): Dấu ) của hàm defun ở dòng (1)
Trước hết bạn xem lệnh Line của CAD:
Command: LINE -> Gõ Line
Specify first point: -> Nhập điểm thứ nhất
Specify next point or [Undo]: -> Nhập điểm thứ hai
Specify next point or [Undo]: -> Enter kết thúc lệnh
Bạn xem code Lisp tương ứng : (Command "Line" p1 p2 "")
"Line" : Là lệnh Line của CAD
p1 : toạ độ điểm thứ nhất do USER nhập vào (đã được lấy bằng hàm getpoint)
p2 : toạ độ điểm thứ hai do USER nhập vào (đã được lấy bằng hàm getpoint)
"" : chính là enter
Bạn chạy thử Lisp VL trên xem nhé
b. Hàm (getdist ...)
CHỨC NĂNG: Chờ người dùng nhập vào:
- Một số thực là một khoảng cách
- Toạ độ của 1 hoặc 2 điểm
Nếu nhập toạ độ điểm, AutoLisp hoàn trả khoảng cách giữa hai điểm
CÚ PHÁP: (getdist [point] [prompt])
GIẢI THÍCH:
point: giống như getpoint
[prompt]: là dòng nhắc hoặc giải thích về dữ liệu sẽ nhập
VD:
(<b>setq</b> r1 (<b>getdist </b>“Cho ban kinh duong tron:”))
Kết quả cho trên dòng nhắc:
Cho tam duong tron:
- Nhập vào một số thực dương hoặc
- Nhập toạ độ một điểm, dòng nhắc xuất hiện:
Second point: Tiếp tục nhập vào điểm thứ 2 để lấy khoảng cách giữa 2 điểm
c. Hàm (getangle ...)
CHỨC NĂNG: Chờ người dùng nhập vào:
- Một số thực là số đo bằng độ của góc hoặc cung tròn
- Toạ độ của 1 hoặc 2 điểm
Nếu nhập toạ độ điểm, AutoLisp hoàn trả góc nghiêng giữa đoạn thẳng nối hai điểm so với phương nằm ngang
Kết quả trả về: REAL ( số đo là Radian)
CÚ PHÁP:
(getangle [point] [prompt])
GIẢI THÍCH:
point: giống như getpoint
[prompt]: là dòng nhắc hoặc giải thích về dữ liệu sẽ nhập
VD:
(setq a1 (getangle “Cho goc nghieng cua duong thang:”))
Kết quả cho trên dòng nhắc chờ người dùng nhập số liệu:
Cho goc nghieng cua duong thang:
d. Hàm (getint ...)
CHỨC NĂNG: Chờ người dùng nhập vào một số nguyên
Kết quả: INT
CÚ PHÁP:(getint [prompt])
GIẢI THÍCH:
[prompt]: là dòng nhắc hoặc giải thích về dữ liệu sẽ nhập
e. Hàm (getreal ...)
CHỨC NĂNG: Chờ người dùng nhập vào một số thực
Kết quả: REAL
CÚ PHÁP:
(getreal [prompt])
GIẢI THÍCH:
[prompt]: là dòng nhắc hoặc giải thích về dữ liệu sẽ nhập
Bài tập
1. Viết lệnh VTRON1 để vẽ 1 đường tròn khi biết tâm và bán kính. Tâm đường tròn do người sử dụng Pick trên màn hình, Bán kính đường tròn do người sử dụng nhập vào
2. Viết lệnh VTRON2 để vẽ 1 đường tròn đi qua 2 điểm A, B và vẽ 1 line đi qua A,B. 2 điểm A, B do người sử dụng Pick trên màn hình
3. Viết lệnh VTRON3 để vẽ 1 đường tròn đi qua 3 điểm A, B, C và vẽ tam giác ABC. 3 điểm A, B, C do người sử dụng Pick trên màn hình
4. Viết lệnh CONG cộng 2 số a và b. Số a và số b do người sử dụng nhập vào. In kết quả nhận được vào dòng Command (sử dụng hàm Princ)
Tiếp tục nhé :
Bài 5: Sử dụng toạ độ tương đối và toạ độ cực tương đối để vẽ 1 tam giác đều ABC, biết AB//Ox và cạnh AB=100. Điểm A nhập từ bàn phím
Ví dụ về cách sử dụng toạ độ tương đối và toạ độ cực tương đối:
(defun c:VL2 () ;(1) (setq p1 (getpoint "\n Nhap toa do diem thu nhat cua Line :")) ; (2) (Command "Line" p1 "@100<60" "") ; (3) (Command "Line" p1 "@100,200" "") ; (4) (Command "Line" p1 "@-200,-300" "") ; (5) ) ; (5)
Giải thích:
+ Dòng (3) : Bằng cách sử dụng toạ độ cực tương đối vẽ 1 Line có điểm đầu là p1, độ dài bằng 100, nghiêng với phương OX 1 góc 60 độ
+ Dòng (4) : Bằng cách sử dụng toạ độ tương đối vẽ 1 Line có điểm đầu là p1, điểm cuối là p2 cách p1 theo phương Ox là +100, theo phương Oy là +200
Dòng (5) : Bằng cách sử dụng toạ độ tương đối vẽ 1 Line có điểm đầu là p1, điểm cuối là p2 cách p1 theo phương Ox là -200, theo phương Oy là -300
Bài 6: Vẽ 1 hình chữ nhật ABCD, biết AB=100, AD=200. AB//Ox. Điểm A nhập từ bàn phím
Bài 7 : Vẽ hình bình hành ABCD, biết AB=500, AD=200, góc DAB=60 độ, AB//Ox. Điểm A nhập từ bàn phím
The post Bài 3 – Một số hàm cơ bản trong Autolisp – Các hàm nhập dữ liệu appeared first on Blog xây dựng - Học autocad, Etabs, sap2000, thư viện cad, bản vẽ nhà đẹp.