Bài 1 : Các phép toán trong AutoLisp
1./ Phép cộng:
Cú pháp: (+ [number1 number2 number3] …)
Giải thích: Lisp thực hiện phép tính cộng (+) số number1 với number2 với number3….
Ví dụ :
(+ 1 2) returns 3 (+ 1 2 3 4.5) returns 10.5 (+ 1 2 3 4.0) returns 10.0
2./ Phép trừ:
Cú pháp: (- [number1 number2 number3] …)
Giải thích: Lisp thực hiện phép tính trừ (-) với số bị trừ là number1, các số number2, number3…. là các số trừ
Ví dụ :
(- 50 40) returns 10 (- 50 40.0) returns 10.0 (- 50 40.0 2.5) returns 7.5 (- 8) returns -8
3./ Phép nhân:
Cú pháp: (* [number1 number2 number3] …)
Giải thích: Lisp thực hiện phép tính nhân (*) số number1 với number2 với number3….
Ví dụ :
(* 2 3) returns 6 (* 2 3.0) returns 6.0 (* 2 3 4.0) returns 24.0 (* 3 -4.5) returns -13.5 (* 3) returns 3
4./ Phép chia:
Cú pháp: (/ [number1 number2 number3] …)
Giải thích: Lisp thực hiện phép tính chia (/) với số bị chia là number1, các số number2, number3…. là các số chia
Ví dụ :
(/ 100 2) returns 50 (/ 100 2.0) returns 50.0 (/ 100 20.0 2) returns 2.5 (/ 100 20 2) returns 2 (/ 4) returns 4
5./ Phép tăng thêm 1:
Cú pháp: (1+ number)
Chức năng: tăng number thêm 1
Ví dụ : (1+ 3) -> kết quả sẽ là 4. Bạn cũng có thể viết (+ 3 1)
6./ Phép giảm đi 1:
Cú pháp: (1- number)
Chức năng: giảm number đi 1
Ví dụ : (1- 3) -> kết quả sẽ là 2. Bạn cũng có thể viết (- 3 1)
7./ Số Pi
– Số Pi trong toán học trong AutoLisp được ký hiệu là pi và nhận giá trị không đổi là 3.1415926. Pi tham gia vào các biểu thức toán học và là số đo góc bằng Radian
Ví dụ : (/ pi 4) -> return: 0.785398
Mẹo cho bạn
Bạn có thể gõ các ví dụ trên ngay trực tiếp trên command của CAD. Bạn có thể mở rộng màn hình command bằng phím F2 để xem kết quả trả về (return) của AutoLisp Ở đây, mình sẽ hướng dẫn thêm các bạn về trình soạn thảo Visual lisp editor
Tại dòng Command của CAD: Gõ [tooltip position=”top” color=”sky-blue” delay=”300″ tooltiptext=”VLIDE “]Command: VLIDE [/tooltip] -> Trình soạn thảo Visual lisp editor sẽ hiện lên
-> Bạn nhấn phím F6 -> trình Visual Lisp Console sẽ xuất hiện
-> Bạn gõ các Ví dụ sau chữ “_$” và nhấn phím Enter để quan sát
Ví dụ: _$ (+ 1 2)
3 -> Đây chính là kết quả trả về
lưu ý: Lisp có thể thực hiện các phép tính lồng nhau theo thứ tự từ trong ra ngoài
Ví dụ:
_$ (* (+ 1 2) 3)
9 -> Đây là kết quả trả về. Lisp thực hiện phép tính 1+2 được kết quả là 3. Sau đó đem nhân với 3 -> được kết quả là 9
Bạn tự thực hành thêm các ví dụ sau và suy luận kết quả của Lisp nhé. Cứ xem như đây là 1 bài tập vậy
Bài tập 1: Hãy làm các ví dụ sau và tự suy luận kết quả. Có gì không hiểu thì Comment cho mình nhé
(+ 20 9)
(- (+ 14 5 7) 6)
(+ (- 3.7 9) (* 16 21))
(+ (- 9 7) (- 4 5.5))
(+ 8.5 119 -9 27)
(* 8 4)
(* 18.25 8)
(* 3.2 4.0 9 18)
(/ 41 9)
(/ (/ 31 7) 13)
(/ (* 29 7.5) 14)
Bài tập 2:
Hãy chuyển các biểu thức sau thành ngôn ngữ AutoLisp:
a) (8+(2*3))/2
b) (10/(4+1))*5
c) (60*(20/2)*(30+5)*40)
d) Hãy chuyển góc 45độ thành radian
e) Hãy chuyển số đo radian pi/4 thành độ
Chúc các bạn thành công!
@All : Mình có update phần lý thuyết (phần mình tô màu đỏ), các bạn đọc thêm để nắm nhé.
Bài tập mình có bổ sung thêm bài tập 2 nữa. Các bạn nghiên cứu và tự làm nhé.
Có bạn nào làm xong bài tập chưa?
Đoạn này (/ 100 20 2) returns 2 đúng ra trả về 2.5 chứ
Mình mạnh dạn thực hành trước nhé (+ 20 9) returns 29 (- (+ 14 5 7) 6) với biến này thì thì theo hướng dẫn lisp tính trong trước ngoài sau nên 14+5+7 =26 lúc này được viết lại (-26 6) returns 20 (+ (- 3.7 9) (* 16 21)) tương tự (+ (-5.3) 336) returns 330.7 (+ (- 9 7) (- 4 5.5)) tương tự (+ 2 (-1.5)) returns 0.5 (+ 8.5 119 -9 27) = (8.5+119-9+27) returns 145.5 (* 8 4) returns 32 (* 18.25 8) returns 146 (* 3.2 4.0 9 18) returns 2073.6 (/ 41… Read more »
Chào Nhân! Có thực hành mới lòi ra được chổ hỏi Ở phép chia: + Nếu phép tính với 2 hay nhiều số nguyên thì kết quả sẽ cho ra số nguyên + Nêú phép tính có tồn tại 1 số là số thực thì kết quả sẽ là số thực; Để phép tính trả về số thực thì bạn chỉ cần để 1 số thực là được Ví dụ : (/ 41 9.0) hoặc (/ 41.0 9) + Vì vậy cần chú ý khi viết Lisp có sử dụng phép chia và để ý ở các ví dụ ở… Read more »
Vậy mình chỉ cần lưu ý ở phép chia thôi hả bạn?
Bao lâu nữa thì có 1 lisp để ứng dụng các phép toán này nhĩ 🙂
Chào Nhân! Mình vừa sửa bài viết comment phía trên bài viết của bạn. Nhân đọc lại nhé.
– Để mình viết thêm vài bài tập có ứng dụng phép tính để các bạn thực hành
Cũng có thắc mắc như bạn lenhan. Cám ơn tác giả đã giải thích rõ.
@All : Mình có update phần lý thuyết (phần mình tô màu đỏ), các bạn đọc thêm để nắm nhé. Bài tập mình có bổ sung thêm bài tập 2 nữa. Các bạn nghiên cứu và tự làm nhé.
Phép tăng và giảm thêm 1 nó chỉ cho phép tăng hoặc giảm đi 1 thôi chứ số khác không được hả bạn? Mình thử với cú pháp (2+ 3) thì ra lỗi
Ngoài ra mình cũng có lisp (lấy từ CV) cho phép copy tăng thêm 1, không biết có phải ứng dụng cú pháp trên không?
1./ Sau dấu ( : đó chính là tên hàm.
Trong Lisp chỉ có tên hàm là: 1+ . Không có tên hàm 2+
2./ (1+ 2) cũng có thể viết là (+ 1 2)
Lisp copy trên CADVIET: ứng dụng rất nhiều hàm, trong đó có hàm 1+ và hàm +
Để từ từ mình viết tiếp, cái này không nôn nóng được…..
Hãy chuyển các biểu thức sau thành ngôn ngữ AutoLisp:
Cái này Tuệ chưa hướng dẫn cách đưa các cú pháp vào lisp nên không biết mò đâu 🙁
Ví dụ : 1+2 thì trong Lisp bạn viết là (+ 1 2)
Tương tự thế, các bạn hãy viết thử xem
Cheer!
đã hiểu 🙂
Em làm thử,anh Tuệ xem giúp em thế nào
a/ (/ (+ 8 (* 2 3)) 2)
b/ (* (/ 10 (+ 4 1)) 5)
c/ (* 60 (/ 20 2) (+ 30 5) 40)
d/ (cvunit 45 “degrees” “radians”)
e/ (cvunit (/ pi 4) “radians” “degrees”)
Hôm nay A tuệ đi đám cưới Quảng bình thì phải :). Hôm nay 20-10 xả hơi với chi em xong rồi gắng làm xong mấy bài tập
Anh Tuệ ơi cho em hỏi tý:
hàm làm tròn số trong lisp là gì vậy anh
>0.5 làm tròn thành 1
<= 0.5 làm thành 0.5
Không biết trong lisp có hàm nào mặc định ko nhưng ngồi viết thì em đã xử đc em làm tròn này rồi
Em cảm ơn anh
Chào Ngọc Quyền!
1./ Các hàm của em viết rất tốt. Em có thể dùng hàm CVunits hoặc cũng có thể dùng các hàm + – * / để viết hàm chuyển đổi radiant thành độ và ngược lại.
Cảm ơn em
1.Nếu không dùng hàm thì thế này ạ
(* 45 (/ pi 180))
(* (/ pi 4) (/ 180 pi))
Em sửa lại code trên tý ạ:
Bạn nào quan tâm tới Autocad thì vào đây thảo luận nhé.
“một góc khác để tiếp cận Autocad”
https://www.facebook.com/AutocadVietNam
Thank Ad!!!
Ủng hộ page bạn. tuy nhiên một số bài viết trích từ Lenhan.org đề nghị bạn dẫn nguồn nhé
khi viết công thức có thể bị thiếu ký tự nhưng lại vẫn cho ra kết quả vd như: bad function 14, tức là kết quả ko đúng, phải ko ạ. còn vấn đề nữa là khi em viết công thức bị thiếu dấu ) ở cuối, mà đã bấm enter thì nó cho ra cái ký tự ((-> . làm cách nào để hủy nó đi và có ký hiệu $ ở đầu để viết lại được ạ, em toàn phải tắt cad đi rồi mở lại từ đầu. thanhks!
Chào bạn Mai!
– Bad function 14: Nghĩa là không có hàm nào có tên “14”
– Bạn cứ đóng ngoặc cho đủ là được. Vlide sẽ xuất hiện lại ký hiệu $ ở đầu cho bạn
Các bạn ơi, mình mới làm quen với lisp, sao mình thử mấy phép toán trực tiếp trên command của CAD 2017 lại báo lỗi bad function nhỉ