Thứ Tư, 7 tháng 4, 2010

Hướng dẩn viết lisp bài 22:

Bạn nên theo dỏi theo tên bài viết tăng từ nhỏ tới lớn thì mới đúng trình tự!

Khi bạn thực hiện lisp trên nếu tại thư mục C:\tailieukythuat\dwg\ lại không tồn tại file caodo.dwg thì sẽ xuất hiện lổi tại dòng insert, lisp báo ra 1 mớ lổi dòm không ưng xíu nào. Mình nên kiểm tra file C:\tailieukythuat\dwg\caodo.dwg có tồn tại hay không. Nếu có thì thực hiện lệnh nếu không thì thông báo không tìm thấy và bỏ qua câu lệnh insert.
-Hàm findfile sẽ giúp bạn kiểm tra file có tồn tại hay không, nếu không hàm trả về giá trị nil, Kết hợp hàm if để đưa ra quyết định trong 2 trường hợp: tìm thấy và không tìm thấy

(defun c:cos ()
(command "undo" "be")
(setq motmet (getreal "\nMot met ban ve bang bao nhieu: "))
(setq luubatdiem (getvar "osmode"))
(setq a (getpoint "\nChon diem muon danh cos: "))
(setvar "osmode" 128)
(setq b (getpoint a"\nChon cao do 0.000: "))
(setvar "osmode" 0)
(setq daiab (distance a b))
(setq giatri (/ daiab motmet))
(setq c (list (- (car a) 250) (+ (cadr a) 410)))
(setq trenduoi (- (cadr a) (cadr b)))
(if (= trenduoi 0) (PROGN
(setq dau "%%p ")
)
)
(if (> trenduoi 0) (PROGN
(setq dau "+ ")
)
)
(if (< trenduoi 0) (PROGN
(setq dau "- ")
)
)
(setq noidung (strcat dau (rtos giatri 2 3)))
(command "-style" "tlkt" "VNI-HELVE" "0" "1" "0" "n" "n")
(command ".TEXT" c 250 0 noidung)
(setq timfile (findfile "c:\\tailieukythuat\\dwg\\caodo.dwg"))
(if (= timfile nil) (PROGN
(princ "\nKhong tim thay file caodo.dwg")
)
)
(if (/= timfile nil) (PROGN
(command "INSERT" "c:\\tailieukythuat\\dwg\\caodo.dwg" a 1 1 0)
)
)
(setvar "osmode" luubatdiem)
(command "undo" "end")
(princ)
)

Không có nhận xét nào:

Đăng nhận xét