Nếu có trong tay một file *.lsp, *.vlx (thậm chí là *.arx)... hoặc một đoạn mã AutoLISP. Làm cách nào để sử dụng được trong AutoCAD. Bài này chúng ta sẽ đi tìm hiểu và giải quyết vấn đề đó.
Bài viết đang tiếp tục được xây dựng...
.
Hỏi vui: Có bao giờ không nhìn màn hình của AutoCAD mà bạn vẫn gõ lệnh theo đúng trình tự hay không?
Dòng số 1: Dùng để khai báo một lệnh mới có tên C2L (Bạn có thể tự đặt tên riêng cho mình).
- (defun c:C2L ()
- (command "Layout" "" "")
- )
Command: layout [ENTER]
Enter layout option [Copy/Delete/New/Template/Rename/SAveas/Set/?] <set>: [ENTER]Enter layout to make current <Layout1>: [ENTER]Regenerating layout.
Regenerating model - caching viewports.
(defun c:ss( )
(command "layer" "new" "1" "c" "1" "1" "")
(command "layer" "new" "2" "c" "2" "2" "")
(command "layer" "new" "3" "c" "3" "3" "")
(command "layer" "new" "4" "c" "4" "4" "")
(command "layer" "new" "2" "c" "2" "2" "")
(command "layer" "new" "5" "c" "1" "5" "")
(command "layer" "new" "6" "c" "6" "6" "")
(command "layer" "new" "8" "c" "8" "8" "")
(command "layer" "new" "9" "c" "8" "9" "")
(command "layer" "c" "7" "0" "")
(command "style" "IN" ".VnArialH" "" "" "" "" "")
(command "style" "IN1" ".VnArial NarrowH" "" "" "" "" "")
(command "style" "Thuong" ".VnArial Narrow" "" "" "" "" "")
)
(command ".undo" "mark")(command ".undo" "back")
(defun c:a () (command ".line" ))
(defun c:ac() (command ".arc"))
(defun c:cc () (command ".circle"))
(defun c:ci () (command ".circle"))
(defun c:du () (command "dim1" "update"))
(defun c:dx () (command ".dimaligned"))
(defun c:dc () (command "dim1" "continue"))(defun c:dh () (command "dimedit" "home"))
(defun c:dr () (command ".dimradius"))
(defun c:df () (command ".dimlinear"))
(defun c:dd () (command ".dimlinear"))
(defun c:dn () (command ".dim1" "n"))
(defun c:n () (command ".dim1" "n"))
(defun c:de () (command "dim1" "l"))
(defun c:da () (command ".dimangular"))
(defun c:a () (command ".line"))
(defun c:g () (command ".matchprop"))
(defun c:q () (command ".offset"))
(defun c:s () (command ".stretch"))
(defun c:t () (command ".text"))
(defun c:v () (command ".move"))
(defun c:m () (command ".move"))
(defun c:x () (command ".explode"))
(defun c:z () (command ".zoom"))
(defun c:zz () (command ".zoom" "p"))
(defun c:ze () (command ".zoom" "e"))
(defun c:zd () (command ".zoom" "d"))
(defun c:za () (command ".zoom" "all"))
(defun c:ed () (command ".ddedit"))
(defun c:d () (command ".dist" ))
(defun c:sq () (command ".Qselect"))
(defun c:lo () (command ".Layon"))
(defun c:loo () (command ".layoff"))
(defun c:ee () (command ".Extend"))
(defun c:sq () (command ".Qselect"))
Tôi muốn vẽ 1 đường thẳng (Line) hay một đường tròn bằng command có được không?
(getreal [Dòng nhắc]) Cho phép người dùng nhập vào một số thực.Xin phép được đưa thêm 2 hàm sau:
(getstring [cr] [Dòng nhắc]) Cho phép người dùng nhập vào một chuỗi ký tự. Trong đó [cr] nếu không có hoặc mang giá trị nil thì không được nhập dấu cách (spacebar).
(getpoint [pt] [Dòng nhắc]) Cho phép người dùng nhập vào tọa độ một điểm hoặc click trên màn hình. Trong đó pt là điểm đã được chọn từ trước, dùng để so sánh trên màn hình.
(getcorner pt [Dòng nhắc]) Cho phép người dùng nhập vào một góc của hình chữ nhật
(getdist [pt] [Dòng nhắc]) Cho phép người dùng nhập vào khoảng cách hoặc click 02 điểm trên màn hình. Trong đó pt là điểm đầu của khoảng cách (nếu có).
(getangle [pt] [Dòng nhắc]) Cho phép người dùng nhập vào số đo góc.
(getorient [pt] [Dòng nhắc])
(getkword [Dòng nhắc]) Cho phép người dùng nhập vào từ khóa (kword).
(getint [Dòng nhắc]) Cho phép người dùng nhập vào một số nguyên.
(ssget) Cho người dùng chọn một tập hợp đối tượng (Selection Set).
(entget) Cho phép chọn một đối tượng.
(defun c:cc ()(command ".circle" (getpoint "\nXac dinh tam duong tron: ") (getreal "\nNhap ban kinh: ")))
(defun c:90 (/ ss1) (command "rotate" (ssget) "" pause 90))
(defun c:09 (/ ss1) (command "rotate" (ssget) "" pause -90))
(defun c:15 (/ ss1) (command "rotate" (ssget) "" pause 15))
(defun c:51 (/ ss1) (command "rotate" (ssget) "" pause -15))
(defun c:25 (/ ss1) (command "rotate" (ssget) "" pause 225))
(defun c:52 (/ ss1) (command "rotate" (ssget) "" pause -225))
(defun c:27 (/ ss1) (command "rotate" (ssget) "" pause 270))
(defun c:72 (/ ss1) (command "rotate" (ssget) "" pause -270))
(defun c:35 (/ ss1) (command "rotate" (ssget) "" pause 135))
(defun c:53 (/ ss1) (command "rotate" (ssget) "" pause -135))
(defun c:45 (/ ss1) (command "rotate" (ssget) "" pause 45))
(defun c:54 (/ ss1) (command "rotate" (ssget) "" pause -45))
(defun c:18 (/ ss1) (command "rotate" (ssget) "" pause 180)
(defun c:81 (/ ss1) (command "rotate" (ssget) "" pause -180))
(defun c:30 (/ ss1) (command "rotate" (ssget) "" pause 30))
(defun c:03 (/ ss1) (command "rotate" (ssget) "" pause -30))
(defun c:60 (/ ss1) (command "rotate" (ssget) "" pause 60))
(defun c:06 (/ ss1) (command "rotate" (ssget) "" pause -60))
Như vậy, với việc nhớ trình tự gõ lệnh, bạn đã tự tạo cho mình được những lệnh hữu dụng, giúp thao tác nhanh hơn rất nhiều lần cách nhập phím thông thường.(defun c:90 (/ ss1) (command "rotate" (ssget) "" (getpoint "\nNhap toa do tam quay: ") 90))
(princ "HelloWorld")
;Ghi chú: in trên dòng lệnh command của AutoCAD dòng chữ "HelloWorld"
Như vậy hiểu nôm na, AutoLISP là một sản phẩm của AutoDesk, sử dụng ngôn ngữ lập trình LISP. Nhằm tạo ra các công cụ tự động hoá (chủ yếu là các lệnh mới) cho thao tác trên các sản phẩm của AutoDesk mà điển hình là AutoCAD.
- (defun c:HelloWorld ()
- (princ "Hello World")
- (princ)
- )
Tại sao lại là "AutoLISP - Thật là đơn giản"?
Yahoo ID: lemanhhung0302Email: lemanhhung0302@yahoo.com
Các hàm thiết lập -------------------------------------------------------------------------------- dos_getini Trả về giá trị từ tệp tin INI ...