Lỗ Gujong

Một phần của tài liệu Đồ án tốt nghiệp tìm hiểu ngôn ngữ AutoLISP và ứng dụng trong AutoCAD (Trang 48)

4. Chương trình minh hoạ

4.1Lỗ Gujong

 Mô tả cụ thể: Lỗ Gujong được dùng trong các bản thiết kế chi tiết máy, là một chi tiết nhỏ trong tổng thể một chi tiết máy hoàn chỉnh. Lỗ Gujong gồm bốn chi tiết con. Hình dạng như sau:

Hình 2. Chi tiết Gujong

 Các bước để vẽ bằng tay

 Vẽ đường tròn lớn bên ngoài (dùng lệnh circle).

 Bắt dính tâm của đường tròn vừa vẽ, vẽ đường tròn có kích thước nhỏ hơn (dùng lệnh Object Snap, circle).

 Tạo layer phụ tên là centre có kiểu đường là center, màu xanh

 Bắt dính tâm đường tròn đã vẽ, chọn layer hiện hành là centre và vẽ một đường tròn nằm nữa hai đường tròn vừa vẽ (dùng lệnh Object Snap, circle).  Vẽ đoạn thẳng nằm trên đường tròn có layer là centre (dùng lệnh Object

Snap, line)

 Chọn layer chính, sau đó bắt dính giao điểm của đoạn thẳng vừa vẽ với đường tròn có layer la centre làm tâm của lỗ tròn nhỏ, vẽ đường tròn nhỏ (kích thước phải nhỏ hơn khoảng cách hai đường tròn màu trắng, dùng lệnh Object Snap, circle).

 Dùng lệnh array để vẽ các lỗ tròn nhỏ còn lại

em đã xây dựng lên một hàm với tên là holes.lsp để vẽ chi tiết này chỉ bằng một câu lệnh đơn giản.

(defun c:holes(/ bm cm sm layer C1 R1 D C num hole)

; khởi tạo giá trị cho các biến

(if (not (= (type R1) 'real)) (setq R1 100.0)

)

(if (not (= (type D) 'real)) (setq D 20.0)

)

(if (not (= (type num) 'int)) (setq num 10)

)

(if (not (= (type hole) 'real)) (setq hole 10.0)

)

(setq C1 (getpoint "\n nhap toa do tam"));chọn vị trí vẽ

;gọi hộp thoại và thiết lập các biến hệ thống,khởi tạo môi trường bản vẽ

(setq dcl (load_dialog "holes.dcl")) (if

(not (new_dialog "holes" dcl)) (exit) )

(setq bm (getvar "blipmode") cm (getvar "cmdecho") sm (getvar "osmode") layer (getvar "clayer") )

(setvar "blipmode" 0) (setvar "cmdecho" 0) (set_tile "Bkinh" (rtos R1)) (set_tile "doday" (rtos D)) (set_tile "numholes" (itoa num)) (set_tile "holedia" (rtos hole))

;định nghĩa hàm gán giá trị các biến cho hộp thoại

(defun setall1()

(setq R1 (atof (get_tile "Bkinh")) D (atof (get_tile "doday")) num (atoi (get_tile "numholes")) hole (atof (get_tile "holedia")) )

) (adsbygoogle = window.adsbygoogle || []).push({});

(action_tile "cancel" "(done_dialog) (exit)") (action_tile "accept" "(setall1) (done_dialog)") (start_dialog)

(unload_dialog dcl)

(defun Degrees2Radians(numberOfDegrees) (* pi (/ numberOfDegrees 180.0))

)

(if (> D hole ) ; kiểm tra thông số nhập vào

(progn ;vẽ hai đường tròn chính (setq C (- (/ R1 2) (/ D 2))) (command "circle" C1 (/ R1 2)) (command "circle" C1 (- (/ R1 2) D)) (setvar "osmode" 0) (setq ra (/ 180 num))

;xác định tọa độ các điểm để vẽ lỗ tròn nhỏ và đoạn thẳng nằm trên đường tròn phụ

(setq pt1 (polar C1 (Degrees2Radians ra) C )

pt2 (polar pt1 (Degrees2Radians (+ 180 ra)) hole) pt3 (polar pt2 (Degrees2Radians ra) (* hole 2)) )

; vẽ lỗ tròn nhỏ và đoạn thẳng nằm trên đường tròn phụ

(command "circle" pt1 (/ hole 2)

"array" "L" "" "P" C1 num "360" "Y"

"layer" "m" "centre" "c" "green" "" "l" "center" "" "" "circle" C1 C

"line" pt2 pt3 ""

"array" "L" "" "P" C1 num "360" "Y" )

)

(alert "Duong kinh lo vuot qua lon!") )

;sau khi vẽ xong thì trở về môi trường ban đầu

(setvar "blipmode" bm) (setvar "cmdecho" cm) (setvar "osmode" sm) (setvar "clayer" layer) )

Sau khi biên dịch và kiểm tra lỗi, ta lưu file holes.lsp và file holes.dcl (là hàm tạo hộp thoại ) vào trong thư mục support của AutoCAD. Cuối cùng, để vẽ chi tiết trên ta làm như sau:

 Gõ lệnh appload (hoặc vào tool/load application) chọn file holes.lsp.

 Gõ holes tại cửa sổ command của autoCAD, điền các thông số chi tiết, nhấn nút OK.

Hình3. Hộp thoại vẽ chi tiết Gujong Kết quả ta có một chi tiết kỹ thuật như hình 2

Một phần của tài liệu Đồ án tốt nghiệp tìm hiểu ngôn ngữ AutoLISP và ứng dụng trong AutoCAD (Trang 48)