Tài liệu bài tập lớn tự động thiết kế chi tiết mặt bích bằng ngôn ngữ lập trình Auto LISP, có đầy đủ file đã lập trình, thuật toán và mô tả chi tiết, tải về chỉ việc chạy. Nếu cần giao lưu học hỏi trao đổi có thể kết bạn zalo trao đổi,...
Trang 1BÀI TẬP LỚN
TỰ ĐỘNG HÓA THIẾT KẾ
ĐỀ BÀI: SỬ DỤNG NGÔN NGỮ AUTOLISP THIẾT KẾ CHƯƠNG TRÌNH
VẼ MẶT BÍCH THƯỜNG 2D THEO TIÊU CHUẨN JIS 40K
SINH VIÊN TH: NGUYỄN TRỌNG ĐÀ
GIẢNG VIÊN HD: TRƯƠNG TIẾN PHÁT
Trang 2HẢI PHÒNG 2013
Trang 3MỤC LỤC
CHƯƠNG 1 TỔNG QUAN CHUNG 4
1.1 Lý do chọn 4
1.2 Mục đích 4
1.3 Kết quả đạt được 4
CHƯƠNG 2 XÂY DỰNG CHƯƠNG TRÌNH 5
2.1 Cơ sở lý thuyết 5
2.2 Phân tích số liệu chọn phương án thiết kế 6
2.2.1 Nhận biết các nhu cầu 6
2.2.2 Xác định vấn đề 6
2.2.3 Tổng hợp 6
2.2.4 Thực hiện 7
2.2.4.1 Xem xét sản phẩm tự động hóa tương tự 7
2.2.4.2 Học hỏi những người có kinh nhiệm 7
2.2.4.3 Ứng dụng công nghệ 7
2.2.5 Thiết kế 7
2.2.5.1 Code lệnh mô tả hộp thoại 7
2.2.5.2 Code lệnh thực hiện 8
2.2.6 Thử nghiệm chương trình 21
2.2.6.1 Thử nghiệm ND = 25mm, vẽ hình chiếu đứng: 21
2.2.6.2 Thử nghiệm ND = 25mm, vẽ hình chiếu bằng: 22
2.2.6.3 Thử nghiệm ND = 250mm, vẽ hình chiếu đứng: 22
2.2.6.4 Thử nghiệm ND = 250mm, vẽ hình chiếu bằng: 23
2.2.6.5 Kết luận 23
2.2.7 Hướng dẫn sử dụng 23
Trang 4DANH MỤC HÌNH VẼ
Hình 1.1: Kết quả tính toán 4
Hình 2.1: Tiêu chuẩn JIS 5
Hình 2.2: Thử nghiệm với ND=25, hình chiếu đứng 21
Hình 2.3: Thử nghiệm với ND=25, hình chiếu bằng 22
Hình 2.4 Thử nghiệm với ND=250, hình chiếu đứng 22
Hình 2.5: Thử nghiệm với ND=250, hình chiếu bằng 23
Hình 2.6: Bước 1 24
Hình 2.7: Bước 2 24
Hình 2.8: Bước 3 25
Hình 2.9: Bước 4 25
Trang 5CHƯƠNG 1 TỔNG QUAN CHUNG1.1. Lý do chọn
Đối với một con tàu thì hệ thống đường ống chiếm vị trí quan trọng hàng đầu Nó truyền dẫn công chất phục vụ cho hệ động lực, cân bằng tàu, cứu hỏa, sinh hoạt, … Trên tàu số lượng đường ống là rất lớn, việc tính toán, thiết kế, bố trí, lựa chọn tiêu chuẩn đường ông là 1 vấn đề rất khó và mất nhiều thời gian.
Từ các vấn đề, yêu cầu trên đặt ra chúng ta đi xây dựng chương trình tự động hóa việc vẽ bích thường theo tiêu chuẩn JIS
1.2. Mục đích
Vẽ nhanh, chính xác bích thường theo tiêu chuẩn JIS
Phục vụ cho quá trình thiết kế, học tập và nghiên cứu.
1.3. Kết quả đạt được
Ta xây dựng được chương trình Autolisp cho việc vẽ bích thường theo tiêu chuẩn JIS với giao diện người dùng thân thiện
Hình 1.1: Kết quả tính toán
Trang 6CHƯƠNG 2 XÂY DỰNG CHƯƠNG TRÌNH
2.1. Cơ sở lý thuyết
Dựa vào tiêu chuẩn:
Hình 2.2: Tiêu chuẩn JIS
Trang 72.2. Phân tích số liệu chọn phương án thiết kế
2.2.1. Nhận biết các nhu cầu
Các con tàu hiện đại ngày nay đều trang bị hệ thống ống cực kì phức tạp
và đã được tiêu chuẩn hóa các có kích thước, đường kính, xác định trước Việc thiết kế nếu thực hiện thủ công bằng tay hay trên máy tính sẽ tốn rất nhiều thời gian và tiền bạc gây ra sự nhàm chán và sai sót với kỹ sư thiết kế.Chính vì vậy nhu cầu về một chương trình tự động thiết kế các chi tiết của hệ thống ông rất cao
2.2.2. Xác định vấn đề
Ở đây có hai vấn đề cần xác định là người sử dụng tự động hóa và người thực hiện tự động hóa :
Người sử dụng tự động hóa cần biết một số vấn đề sau :
- Người sử dụng chương trình là những kí sư thiết kế, sinh viên, giảng viên, họ đều là những người có kiến thức chuyên môn cao và kiến thức về phần mềm AutoCAD và AutoLISP họ có thể điều chỉnh chương trình cho phù hợp với thói quen và yêu cầu sử dụng.
Người thực hiện tự động hóa cần có một số vân đề sau :
- Người thực hiện tự động hóa là sinh viên cần biết AutoCAD và AutoLISP, khai thác và sử dụng các tính năng ưu việt của nó Ngoài ra người dùng còn phải cập nhập tin tức, tài liệu về sản phẩm đang thiết kế tự động hóa.
- Cơ sở thiết kế phải có đủ phần mềm và các trang thiết bị sử dụng khai thác phần mềm dự định thiết kế.
- Khả năng tài chính cũng đòi hỏi người thực hiện phải có đủ tài chính để cập nhậm phần mềm hay tài liệu xoay quanh phần mềm thiết kế và sản phẩm thiết kế
2.2.3. Tổng hợp
Từ những phân tích trên ta xây dựng chương trình tự động vẽ mặt bích thường theo tiêu chuẩn JIS 40K bằng ngôn ngữ lập trình AUTOLISP trên ứng dụng nền AUTOCAD sử dụng giao diện người dùng
Trang 82.2.4.2. Học hỏi những người có kinh nhiệm
- Tiếp thu những kinh nghiệm của người khác, để tích lũy kiến thức cho bản thân nhằm thực hiện chương trình tự động hóa một cách hiệu quả nhất.
label = "Insert point";
:edit_box {label = "&X_Axis";key =
"edit_X";edit_width = 4;}
:edit_box {label = "&Y_Axis";key =
"edit_Y";edit_width = 4;}
}:boxed_row {
label = "Nominal Diameter";
}}:boxed_row {
label = "Orthographic projection";
:radio_button {label="Front"; key =
"rd";value = "1";}
:radio_button {label="Bottom"; key =
"rd_f";value = "0";}
}
Trang 9:boxed_row {
label = "Rotate angle";
:edit_box {label = "Enter rotate angle:
";edit_width = 6;key = "angl";value = "0";}
}ok_cancel_err;
}
2.2.5.2. Code lệnh thực hiện
(defun c:da (/ DCL_ID)
(command "_limits" "0,0" "297,210")
(command "layer" "set" "0" "")
(setq DCL_ID (load_dialog "bd.DCL"))
(if (not (new_dialog "begin" DCL_ID))
(if (= (numberp angl) T)
(set_tile "angl" (rtos angl))
)
(if (= (numberp code) T)
(set_tile "edit_code" (rtos code))
Trang 10"(setq code (atof (get_tile \"edit_code\")))" )
(action_tile "rd" "(setq rx (atof
(get_tile \"rd\")))")
(action_tile "rd_f" "(setq rx (atof
(get_tile \"rd_f\")))")
(action_tile "accept" "(done_dialog 1)")
(action_tile "rd" "(setq rd1 (atoi $value)) (setqrd2 0)")
(action_tile "rd_f" "(setq rd2 (atoi $value)) (setq rd1 0)")
(action_tile "cancel" "(done_dialog 1) (exit)") (start_dialog)
Trang 16(setq A5 (polar AT3 0 (- D g)))(setq A6 (polar A5 (/ pi 2) (- t1 f)))(setq A7 (polar A6 (- 0 pi) (- D (+ a r))))(setq AT7 (polar A7 (- 0 pi) r))
(setq A8 (polar AT7 (/ pi 2) r))(setq A10 (polar A1 (/ pi 2) TL))(setq A11 (polar A10 (- 0 pi) S1))(setq A12 (polar A10 (- 0 pi) a))(setq AT9 (polar A10 0 S1))
(setq A9 (polar A10 0 a))(setq A13 (polar A12 (- 0 (/ pi 2)) (- TL (+ t1 r))))
(setq AT14 (polar A13 (- 0 (/ pi 2)) r))(setq A14 (polar AT14 (- 0 pi) r))
(setq A15 (polar A14 (- 0 pi) (- D (+ a r))))(setq A16 (polar A15 (- 0 (/ pi 2)) (- t1 f)))(setq A17 (polar A16 0 (- D (+ g f))))
(setq AT18 (polar A17 0 f))(setq A18 (polar AT18 (- 0 (/ pi 2)) f))(setq A19 (polar A1 (- 0 pi) S2))
(setq D1 (polar A1 0 C))(setq D2 (polar D1 (/ pi 2) f))(setq D3 (polar D1 (/ pi 2) t1))(setq D4 (polar D3 (/ pi 2) 10))(setq D5 (polar D2 (- 0 (/ pi 2)) 10))(setq L5 (polar D3 (- 0 pi) h))
(setq L6 (polar D3 0 h))(setq L7 (polar D2 (- 0 pi) h))(setq L8 (polar D2 0 h))
(setq DX1 (polar A1 (- 0 pi) C))(setq DX2 (polar DX1 (/ pi 2) f))(setq DX3 (polar DX1 (/ pi 2) t1))(setq DX4 (polar DX3 (/ pi 2) 10))(setq DX5 (polar DX2 (- 0 (/ pi 2)) 10))(setq LX5 (polar DX3 (- 0 pi) h))
(setq LX6 (polar DX3 0 h))(setq LX7 (polar DX2 (- 0 pi) h))(setq LX8 (polar DX2 0 h))
Trang 17(setq AT10 (polar A10 (/ pi 2) 10))(setq AT1 (polar A1 (- 0 (/ pi 2)) 10))(setq B3 (polar A1 (/ pi 2) (- TL m)))(setq B2 (polar B3 0 d0))
(setq B4 (polar B3 (- 0 pi) d0))(setq B5 (polar B4 (- 0 (/ pi 2)) (- TL (+ m n))))
(setq B1 (polar B2 (- 0 (/ pi 2)) (- TL (+ m n))))
(setq M1 (polar L8 (/ pi 4) 1))(setq M2 (polar A16 (/ pi 4) 1))(command "_zoom" "_c" A1 (* 2 D))(command "layer" "set" "0" "")(command "_line" A3 A1 "")(command "_arc" A4 "e" A3 "r" f)(command "_line" A5 A4 "")
(command "_line" A6 A5 "")(command "_line" A7 A6 "")(command "_arc" A8 "e" A7 "r" r)(command "_line" A9 A8 "")
(command "_line" A10 A9 "")(command "_line" A12 A10 "")(command "_line" A12 A13 "")(command "_arc" A14 "e" A13 "r" r)(command "_line" A15 A14 "")
(command "_line" A16 A15 "")(command "_line" A17 A16 "")(command "_arc" A18 "e" A17 "r" f)(command "_line" A18 A1 "")
(command "_line" L5 L7 "")(command "_line" L6 L8 "")(command "_line" LX5 LX7 "")(command "_line" LX6 LX8 "")(command "_line" B1 B2 "")(command "_line" B1 B5 "")(command "_line" B4 B5 "")(command "_line" B4 B2 "")(command "_arc" A11 "e" B4 "r" m)(command "_arc" B2 "e" AT9 "r" m)(command "layer" "m" "2" "c" "2" "" "l" "center"
"" "")
(command "_line" D4 D5 "")(command "_line" DX4 DX5 "")(command "_line" AT10 AT1 "")(command "layer" "set" "0" "")(command "_arc" B5 "e" A19 "r" n)(command "_arc" A2 "e" B1 "r" n)(command "_zoom" "_c" A1 (* 2 D))
Trang 18((= rd2 1)
(setq i 1)(setq GOC (/ (* 2 pi) BL))(setq DT1 (polar A1 0 (+ D 10)))(setq DT2 (polar A1 (- 0 pi) (+ D 10)))(setq DT3 (polar A1 (/ pi 2) (+ D 10)))(setq DT4 (polar A1 (- 0 (/ pi 2)) (+ D 10)))(command "_zoom" "_c" A1 (* 2 D))
(command "layer" "set" "0" "")(command "_circle" A1 D)
(command "_circle" A1 d0)(command "_circle" A1 S1)(command "_circle" A1 a)(command "layer" "m" "2" "c" "2" "" "l" "center"
(command "_circle" A1 g)(command "_zoom" "_c" A1 (* 2 D))(command "layer" "set" "2" "")(command "_line" DT1 DT2 "")(command "_line" DT3 DT4 "")(repeat BL
(setq LO (polar A1 (* i goc) C)) (command "layer" "set" "0" "") (command "_circle" LO h)
(command "layer" "set" "2" "") (setq DTH1 (polar A1 (* i goc) (+ C (* 2 h)))) (setq DTH2 (polar A1 (* i goc) (- C (* 2 h))))
Trang 19(command "_line" DTH1 DTH2 "") (setq i (+ i 1))
) )
(setq A5 (polar AT3 0 (- D g)))(setq A6 (polar A5 (/ pi 2) (- t1 f)))(setq A7 (polar A6 (- 0 pi) (- D (+ a r))))(setq AT7 (polar A7 (- 0 pi) r))
(setq A8 (polar AT7 (/ pi 2) r))(setq A10 (polar A1 (/ pi 2) TL))(setq A11 (polar A10 (- 0 pi) S1))(setq A12 (polar A10 (- 0 pi) a))(setq AT9 (polar A10 0 S1))
(setq A9 (polar A10 0 a))(setq A13 (polar A12 (- 0 (/ pi 2)) (- TL (+ t1 r))))
(setq AT14 (polar A13 (- 0 (/ pi 2)) r))(setq A14 (polar AT14 (- 0 pi) r))
(setq A15 (polar A14 (- 0 pi) (- D (+ a r))))(setq A16 (polar A15 (- 0 (/ pi 2)) (- t1 f)))(setq A17 (polar A16 0 (- D (+ g f))))
(setq AT18 (polar A17 0 f))(setq A18 (polar AT18 (- 0 (/ pi 2)) f))(setq A19 (polar A1 (- 0 pi) S2))
(setq D1 (polar A1 0 C))(setq D2 (polar D1 (/ pi 2) f))(setq D3 (polar D1 (/ pi 2) t1))(setq D4 (polar D3 (/ pi 2) 10))(setq D5 (polar D2 (- 0 (/ pi 2)) 10))(setq L5 (polar D3 (- 0 pi) h))
(setq L6 (polar D3 0 h))(setq L7 (polar D2 (- 0 pi) h))(setq L8 (polar D2 0 h))
(setq DX1 (polar A1 (- 0 pi) C))(setq DX2 (polar DX1 (/ pi 2) f))(setq DX3 (polar DX1 (/ pi 2) t1))(setq DX4 (polar DX3 (/ pi 2) 10))(setq DX5 (polar DX2 (- 0 (/ pi 2)) 10))(setq LX5 (polar DX3 (- 0 pi) h))
(setq LX6 (polar DX3 0 h))
Trang 20(setq LX7 (polar DX2 (- 0 pi) h))(setq LX8 (polar DX2 0 h))
(setq AT10 (polar A10 (/ pi 2) 10))(setq AT1 (polar A1 (- 0 (/ pi 2)) 10))(setq B3 (polar A1 (/ pi 2) (- TL m)))(setq B2 (polar B3 0 d0))
(setq B4 (polar B3 (- 0 pi) d0))(setq B5 (polar B4 (- 0 (/ pi 2)) (- TL (+ m (+
n (- d0 dn))))))
(setq B1 (polar B2 (- 0 (/ pi 2)) (- TL (+ m (+
n (- d0 dn))))))
(setq M1 (polar L8 (/ pi 4) 1))(setq M2 (polar A16 (/ pi 4) 1))(setq K1 (polar A1 (- 0 pi) dn))(setq K2 (polar K1 (/ pi 2) n))(setq KD1 (polar A1 0 dn))
(setq KD2 (polar KD1 (/ pi 2) n))(command "_zoom" "_c" A1 (* 2 D))(command "layer" "set" "0" "")(command "_line" A3 A1 "")(command "_arc" A4 "e" A3 "r" f)(command "_line" A5 A4 "")
(command "_line" A6 A5 "")(command "_line" A7 A6 "")(command "_arc" A8 "e" A7 "r" r)(command "_line" A9 A8 "")
(command "_line" A10 A9 "")(command "_line" A12 A10 "")(command "_line" A12 A13 "")(command "_arc" A14 "e" A13 "r" r)(command "_line" A15 A14 "")
(command "_line" A16 A15 "")(command "_line" A17 A16 "")(command "_arc" A18 "e" A17 "r" f)(command "_line" A18 A1 "")
(command "_line" L5 L7 "")(command "_line" L6 L8 "")(command "_line" LX5 LX7 "")(command "_line" LX6 LX8 "")(command "_line" B1 B2 "")(command "_line" B1 B5 "")(command "_line" B4 B5 "")(command "_line" B4 B2 "")(command "_arc" A11 "e" B4 "r" m)(command "_arc" B2 "e" AT9 "r" m)(command "layer" "m" "2" "c" "2" "" "l" "center"
"" "")
(command "_line" D4 D5 "")(command "_line" DX4 DX5 "")
Trang 21(command "_line" AT10 AT1 "")(command "layer" "set" "0" "")(command "_line" K1 K2 "")(command "_line" KD1 KD2 "")(command "_line" K2 KD2 "")(command "_arc" B5 "e" K2 "r" (- d0 dn))(command "_arc" KD2 "e" B1 "r" (- d0 dn))(command "_zoom" "_c" A1 (* 2 D))
((= rd2 1)
(setq i 1)(setq GOC (/ (* 2 pi) BL))(setq DT1 (polar A1 0 (+ D 10)))(setq DT2 (polar A1 (- 0 pi) (+ D 10)))(setq DT3 (polar A1 (/ pi 2) (+ D 10)))(setq DT4 (polar A1 (- 0 (/ pi 2)) (+ D 10)))(command "_zoom" "_c" A1 (* 2 D))
(command "layer" "set" "0" "")(command "_circle" A1 D)
(command "_circle" A1 d0)(command "_circle" A1 S1)(command "_circle" A1 a)(command "layer" "m" "2" "c" "2" "" "l" "center"
(command "_zoom" "_c" A1 (* 2 D))(command "layer" "set" "2" "")(command "_line" DT1 DT2 "")(command "_line" DT3 DT4 "")
Trang 22(repeat BL (setq LO (polar A1 (* i goc) C)) (command "layer" "set" "0" "") (command "_circle" LO h)
(command "layer" "set" "2" "") (setq DTH1 (polar A1 (* i goc) (+ C (* 2 h)))) (setq DTH2 (polar A1 (* i goc) (- C (* 2 h)))) (command "_line" DTH1 DTH2 "")
(setq i (+ i 1)))