PHIẾU ĐÁNH GIÁ CHẤT LƯỢNG ĐỀ TÀI TỐT NGHIỆP Họ và tên sinh viên: Bùi Công Lộc Lớp: 50DT2 Tên Đề tài: “Viết chương trình vẽ đường hình và tính toán tính năng các mẫu tàu khác nhau theo
Trang 1NHẬN XÉT CỦA CÁN BỘ HƯỚNG DẪN
Họ và tên sinh viên: Bùi Công Lộc Lớp: 50DT2
Tên Đề tài: “Viết chương trình vẽ đường hình và tính toán tính năng các mẫu
tàu khác nhau theo mẫu truyền thống tỉnh Ninh Thuận”
Số trang: 294 Số chương: 05 Số tài liệu kham khảo: 7 Hiện vật: 02 quyển đồ án; 02CD
NHẬN XÉT CỦA CÁN BỘ HƯỚNG DẪN
Kết luận:
ĐIỂM CHUNG
Bằng chữ Bằng số
Nha Trang, ngày … tháng … năm 2012
CÁN BỘ HƯỚNG DẪN
(Ký và ghi rõ họ tên)
PGS.TS TRẦN GIA THÁI
Trang 2PHIẾU ĐÁNH GIÁ CHẤT LƯỢNG ĐỀ TÀI TỐT NGHIỆP
Họ và tên sinh viên: Bùi Công Lộc Lớp: 50DT2
Tên Đề tài: “Viết chương trình vẽ đường hình và tính toán tính năng các mẫu tàu
khác nhau theo mẫu truyền thống tỉnh Ninh Thuận”
Số trang: 294 Số chương: 05 Số tài liệu kham khảo: 7 Hiện vật: 02 quyển đồ án; 02CD
NHẬN XÉT CỦA CÁN BỘ PHẢN BIỆN
Đánh giá chung:
ĐIỂM
Bằng chữ Bằng số
ĐIỂM CHUNG
Bằng chữ Bằng số
Nha Trang, ngày … tháng … năm 2012
Cán bộ phản biện
(Ký và ghi rõ họ tên)
Nha Trang, ngày … tháng … năm 2012
Chủ tịch hội đồng
(Ký và ghi rõ họ tên)
Trang 3Lời nói đầu A
CHƯƠNG 1: ĐẶT VẤN ĐỀ 1
1.1 TỔNG QUAN CỦA ĐỀ TÀI NGHIÊN CỨU 1
1.2 TÌNH HÌNH NGHIÊN CỨU TRONG VÀ NGOÀI NƯỚC 2
1.2.1.Tình hình nghiên cứu trong nước 2
1.2.2.Tình hình nghiên cứu trên thế giới 3
1.3 MỤC TIÊU, PHƯƠNG PHÁP, NỘI DUNG VÀ PHẠM VI NGHIÊN CỨU 4
1.3.1.Mục tiêu đề tài 4
1.3.2.Phương pháp và nội dung nghiên cứu 5
1.3.3.Phạm vi nghiên cứu 6
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 7
2.1 VẼ ĐƯỜNG HÌNH THEO MẪU 7
2.2 TÍNH TOÁN CÁC TÍNH NĂNG 8
2.2.1 Đồ Thị Thủy Tĩnh 8
2.2.2.Đồ Thị Bonjean 10
2.2.3.Đồ Thị Pantokanren 12
2.2.4.Cơ Sở Ổn Định 17
2.3 LỰA CHỌN NGÔN NGỮ LẬP TRÌNH 21
2.3.1.Tìm Hiểu Ngôn Ngữ Autolisp 23
2.3.2.Các Hàm AutoLISP Thông Dụng 25
CHƯƠNG 3: KẾT QUẢ NGHIÊN CỨU 36
3.1 LỰA CHỌN VÀ GIẢI THUẬT VẼ ĐƯỜNG HÌNH 36
3.1.1.Lựa chọn và xây dựng sơ đồ thuật toán vẽ đường hình 36
3.1.2.Giải thuật chương trình vẽ đường hình 38
3.1.3.Xây dựng hộp thoại chương trình vẽ đường hình 44
Trang 43.2 GIẢI THUẬT TÍNH TOÁN CÁC TÍNH NĂNG 49
3.2.1.Giải thuật tính toán và vẽ đồ thị Bonjean 49
3.2.2.Giải thuật tính toán và vẽ đồ thị thủy tĩnh 58
3.2.3.Giải thuật vẽ đồ thị pantokaren 63
3.2.4.Giải thuật vẽ đồ thị ổn định 66
3.3 XÂY DỰNG MENU CHO CHƯƠNG TRÌNH 76
3.4 KẾT QUẢ CHẠY PHẦN MỀM 83
3.4.1.Giới thiệu phần mềm 83
3.4.2.Kết quả chạy phần mềm vẽ đường hình 84
3.4.3.Xuất bảng tọa độ đường hình trên AutoCAD và Notepad 89
3.4.4.Kết quả chạy Modun vẽ đồ thị Bonjean 91
3.4.5.Kết quả chạy modun vẽ đồ thị thủy tĩnh (Hydrostatic-Curves) 96
3.4.6.Kết quả chạy modun vẽ đồ thị pantokaren 100
3.4.7.Kết quả chạy modun vẽ đồ thị ổn định 103
3.5 ĐÁNH GIÁ ĐỘ CHÍNH XÁC CỦA PHẦN MỀM 113
3.5.1.Đánh giá độ chính xác của phần mềm vẽ đồ thị Bonjean 113
3.5.2.Đánh giá độ chính xác của phần mềm vẽ đồ thị thủy tĩnh 114
3.5.3.Đánh giá độ chính xác của phần mềm vẽ đồ thị Pantokaren 116
CHƯƠNG 4: XÂY DỰNG CƠ SỞ DỮ LIỆU CHO CHƯƠNG TRÌNH 119
4.1 Xây Dựng Cơ Sở Dữ Liệu Cho Modun Vẽ Đường Hình 119
4.2 Xây Dựng Cơ Sở Dữ Liệu Cho Modun Vẽ Đồ Thị Thủy Tĩnh 124
4.3 Xây Dựng Cơ Sở Dữ Liệu Cho Modun Vẽ Đồ Thị Pantokaren 127
Chương 5: THẢO LUẬN KẾT QUẢ 132
5.1 Kết Luận 132
5.2 Những Định Hướng Nghiên Cứu Trong Tương Lai 132
Trang 5TÀI LIỆU THAM KHẢO 133
PHỤ LỤC 134
Phụ lục I: Kết Quả Tính Đồ Thị Pantokaren 134
Phụ lục II: Code chương trình 181
Phụ lục III Code chương trình vẽ đồ thị thủy tĩnh 248
Phụ lục IV: Code chương trình vẽ đồ thị Pantokaren 263
Phụ lục V: Code chương trinhg vẽ đồ thị ổn định 271
Phụ lục VI: Kết quả tính cho mẫu tàu cụ thể 279
Trang 6DANH MỤC HÌNH
Hình 2 1: Đồ thị thủy tĩnh 9
Hình 2 2: Đồ thị Bonjean 11
Hình 2.3 : Phương pháp Krylop_ Dargnies 13
Hình 2 4: Xác định các giá trị a,b 14
Hình 2 5: Đường sườn Tchebyshev 16
Hình 2 6: Phương pháp xác định các hệ số a,b 16
Hình 2 7: Tâm nổi ứng với các góc nghiêng khác nhau 18
Hình 2 8 Cách xác định cánh tay đòn ổn định 20
Hình 2 9: Xác định chiều cao tâm nghiêng trên đồ thị ổn định tĩnh 21
Hình 2 10: Giao diện của môi trường Visual LISP 23
Hình 2 11: Nhập số liệu là kiểu số nguyên 26
Hình 2 12: Nhập số liệu kiểu số thực 26
Hình 2 13: Thông báo nhập số liệu kiểu chuỗi 27
Hình 2 14: Nhập số liệu kiểu chuỗi 27
Hình 2 15: Hàm gán lấy giá trị của biến hệ thống AutoCAD 28
Hình 2 16: Thông báo trên màn hình của AutoCAD 30
Hình 3.1: Sơ đồ thuật toán chương trình vẽ đường hình 37
Hình 3 2: Hộp thoại chương trình vẽ đường hình 45
Trang 7Hình 3.3: Sơ đồ thuật toán vẽ đồ thị Bonjean 51
Hình 3.4: Sơ đồ thuật toán vẽ đồ thị thủy tĩnh 59
Hình 3.5: Sơ đồ thuật toán chương trình vẽ đồ thị Pantkaren 63
Hình 3 6: Sơ đồ thuật toán vẽ đồ thị ổn định 66
Hình 3 7: Tải menu chương trình 84
Hình 3 8: Giao diện phần mềm vẽ đường hình 85
Hình 3 9: Báo lỗi khi nhập sai kích thước 86
Hình 3 10: Báo lỗi khi không phù hợp với tỷ lệ kích thước 87
Hình 3 11: Kết quả khi xuất tuyến hình 2D 87
Hình 3 12: Kết quả của việc xuất ngược từ 2D sang 3D 88
Hình 3 13: Xuất tuyến hình 3D 88
Hình 3 14: Xuất trị số tuyến hình ra NOTEPAD 89
Hình 3 15: Hộp thoại xuất AutoCAD 90
Hình 3 16: Xuất tuyến hình trên AutoCAD 90
Hình 3 17: Giao diện chương trình vẽ đồ thị Bonjean 91
Hình 3 18: Menu ngữ cảnh của chương trình 92
Hình 3 19: Thông báo khi nhập thông số đầu vào không phù hợp 93
Hình 3 20: Chương trình đang thực hiện vẽ đồ thị Bonjean 94
Hình 3 21: Bản vẽ đồ thị Bonjean do phần mềm xuất ra 95
Hình 3 22: Kết quả diện tích được xuất ra file “.txt” 95
Trang 8Hình 3 23: Giao diện phần mềm vẽ đồ thị thủy tĩnh 96
Hình 3 24: Chọn vị trí vẽ đồ thị thủy tĩnh 97
Hình 3 25: Kết quả phần mềm vẽ đồ thị thủy tĩnh 97
Hình 3 26: Thông báo mặc định của phần mềm 98
Hình 3 27: Kết quả xuất bảng kết quả trên nền AutoCAD 98
Hình 3 28: Hộp thoại xuất file Notepad 99
Hình 3 29: Kết quả xuất file Notepad 99
Hình 3 30: Gọi chương trình từ menu phụ 100
Hình 3 31: Gọi chương trình từ menu ngữ cảnh 100
Hình 3 32: Giao diện chương trình vẽ đồ thị Pantokaren 101
Hình 3 33: Yêu cầu chọn vị trí vẽ đồ thị 101
Hình 3 34: Kết quả vẽ đồ thị Pantokaren 102
Hình 3 35: Hộp thoại xuất kết quả trên AutoCAD 102
Hình 3 36: Phần mềm xuất bản vẽ với bảng kết quả kèm theo 103
Hình 3 37: Gọi chương trình từ menu phụ 103
Hình 3 38: Gọi chương trình từ menu ngữ cảnh 104
Hình 3 39: Giao diện chương trình vẽ đồ thị ổn định 104
Hình 3 40: Nhập trực tiếp giá trị P(tấn), Zg 106
Hình 3 41: Nhập P(tấn), Zg thông qua modun tính trọng lượng, trọng tâm tàu 106
Hình 3 42: Kết quả tính trọng lượng, trọng tâm tàu 107
Trang 9Hình 3 43: Xuất file kết quả của modun tính trọng lượng trọng tâm tàu 107
Hình 3 44: Kết quả được xuất trên file Notepad 108
Hình 3 45: Nội suy L(hd) từ đồ thị Pantokaren 109
Hình 3 46: Hộp thoại nhập giá trị L(hd) từ file “.txt” 110
Hình 3 47: File L(hd) được nhập vào 110
Hình 3 48: Thông báo của phần mềm khi nhập L(hd) sai định dạng file 111
Hình 3 49: Kết quả vẽ đồ thị ổn định 111
Hình 3 50: Thông báo của phần mềm khi xuất kết quả ra file notepad 112
Hình 3 51: Kết quả được xuất trên file Notepad 112
Hình 3 52: Kết quả tính đồ thị Pantokaren mà phần mềm cho ra 116
Hình 3.53: Kết quả tính đồ thị Pantokare trên phần mềm Autohydro 117
Hình 4 1: Đường hình tàu đánh cá lưới kéo 120
Hình 4 2: Đường hình tàu đánh cá lưới rê 121
Hình 4 3: Đường hình tàu đánh cá lưới vây 122
Hình 4 4: Đường hình tàu đánh cá pha xúc 123
Hình 4 5: Code dùng để tính toán các yêu tố tính nổi 125
Hình 4 6: Đường sườn Tchebyshev 128
Hình 4 7: Xác định các giá trị a, b 129
Hình 4 8: Đường nước đã được hiệu chỉnh 129
Trang 10DANH MỤC BẢNG
Bảng 2 1: Xác định vị trí đường sườn Tchebyshev 15
Bảng 2 2: Bảng tính Pantokaren cho DN 1 – tại góc nghiêng δΦ = 100 17
Bảng 3.1: Bảng đánh giá độ chính xác của phần mềm vẽ đồ thị Bonjean 113
Bảng 3 2: Bảng đánh giá độ chính xác của phần mềm vẽ đồ thị thủy tĩnh 115
Bảng 3 3 Đánh giá độ sai số của phần mềm vẽ đồ thị Pantokaren so với phần mềm Autohydro 118
Bảng 4 1: Xác định vị trí đường sườn Tchebyshev 127
Bảng 4 2: Bảng tính các r theo phương pháp Krylop – Dargnies 130
Bảng 4 3: Bảng tính giá trị Zc của tàu lưới rê 130
Bảng 4 4: Bảng tính giá trị Yc của tàu lưới rê 131
Trang 11LỜI NÓI ĐẦU
Đất nước ta có nguồn tài nguyên biển phong phú và đa dạng nên thuận lợi cho sự phát triển của ngành khai thác thủy sản nói chung và đội tàu đánh cá vỏ gỗ nói riêng Tuy nhiên, do các mẫu tàu đánh cá thường chỉ được đóng theo kinh nghiệm, chưa được tính toán và thử nghiệm thực tế nên gây ra nhiều khó khăn cho công việc quản
lý Mặt khác, các mẫu đường hình tàu đánh cá truyền thống ở nước ta hiện nay có độ cong và độ gẫy khúc phức tạp nên việc thiết kế các mẫu đường hình trên không chỉ gây ra nhiều vấn đề khó khăn mà còn có độ chính xác chưa cao khi mà công việc thiết
kế đường hình chỉ dừng lại ở các phần mềm thông dụng như phần mềm AutoCAD Vì thế, vấn đề tự động hóa việc vẽ chính xác đường hình và tính toán tính năng cho các mẫu tàu đánh cá vỏ gỗ đang là bài toán đã và đang đặt ra cho các nhà nghiên cứu
Vì lý do đó, chúng tôi đã đặt vấn đề và được giao thực hiện đề tài tốt nghiệp với tên
gọi: “Viết chương trình vẽ đường hình và tính toán tính năng các mẫu tàu khác nhau
theo mẫu truyền thống tỉnh Ninh Thuận” với sự hướng dẫn của thầy PGS.TS Trần Gia
Thái
Đề tài sẽ đi vào nghiên cứu ngôn ngữ lập trình AutoLISP và xây dựng thuật toán thiết kế đường hình và tính toán tính năng Trên cơ sở đó, viết chương trình thiết kế đường hình và tính toán tính năng theo mẫu truyền thống tại Ninh Thuận, cho phép người dùng có thể vẽ đường hình và tính toán tính năng một cách nhanh chóng, đơn giản, thuận tiện và nhằm mục đích hướng tới phục vụ cho nhiều cơ sở đóng tàu cá vỏ
gỗ ở Ninh Thuận
Với cách đặt vấn đề như trên, đề tài bao gồm các nội dung sau:
Chương 1 : Đặt vấn đề
Chương 2 : Cơ sở lý thuyết
Chương 3 : Kết quả nghiên cứu
Chương 4 : Xây dựng cơ sở dữ liệu chương trình
Chương 5 : Thảo luận kết quả
Qua đây chúng tôi xin chân thành cảm ơn thầy PGS.TS Trần Gia Thái, KS
Đỗ Quang Thắng và các thầy trong khoa Kỹ thuật giao thông, đã giúp đỡ chúng tôi trong suốt thời gian thực hiện đề tài
Nha Trang, ngày 10 tháng 07 năm 2012
Chủ nhiệm đề tài: Bùi Công Lộc
Trang 12CHƯƠNG 1: ĐẶT VẤN ĐỀ
1.1 TỔNG QUAN CỦA ĐỀ TÀI NGHIÊN CỨU
Như đã biết, thiết kế đường hình tàu đánh cá vỏ gỗ và tính toán các tính năng cần thiết cho các mẫu tàu cá truyền thống là công việc hết sức khó khăn phức tạp, đòi hỏi khối lượng công việc lớn và yêu cầu độ chính xác cao Ngoài ra, khác với khi thiết kế đường hình các loại tàu thông dụng khác, đặc điểm của nghề cá tại Ninh Thuận hiện nay, chủ yếu là nghề cá nhân dân đã và đang đặt ra nhiều yêu cầu đối với đường hình của các tàu đánh bắt thuỷ sản, khi đa số đều là tàu làm bằng gỗ và các mẫu tàu này hầu như chưa được tính toán hoặc thử nghiệm thực tế phù hợp yêu cầu đặt ra mà chủ yếu được lựa chọn chỉ vì thói quen và ý thích của các ngư dân của địa phương, tàu đã qua thực tế khai thác trong nhiều năm, đồng thời phù hợp với trình độ và kinh nghiệm thi công loại tàu vỏ gỗ một cách thủ công của các cơ sở đóng tàu ở các địa phương nghề cá Đặc điểm trên không chỉ gây nhiều vấn đề phức tạp trong công tác quản lý kinh tế - kỹ thuật của các cơ quan quản lý tàu thuyền nghề, mà còn có ảnh hưởng rất lớn đến mức độ an toàn, hiệu quả khai thác và nhiều yếu tố khác của đội tàu đánh cá tại Ninh Thuận hiện nay Chính vì vậy bài toán thiết kế đường hình tàu đánh cá phù hợp với đặc điểm khai thác và tính toán các tính năng cần thiết cho các mẫu tàu truyền thống tại Ninh Thuận có ý nghĩa lý thuyết và thực tiễn rất quan trọng và hiện cũng đang được các nhà khoa học trong và ngoài nước quan tâm nghiên cứu Ngoài ra, để tạo thuận lợi trong việc áp dụng vào thực tế thiết kế và chế tạo các tàu đánh cá, nhất là trong điều kiện kinh tế kỹ thuật còn kém, cần phải đặt vấn
đề xây dựng một phần mềm tự động hoá quá trình thiết kế đường hình và tính toán các tính năng cần thiết theo các mẫu tàu đánh cá truyền thống tại Ninh Thuận, cho phép người sử dụng ở các cơ sở đóng tàu đánh cá, thường chưa được đào tạo trình độ cao có thể tự mình thiết kế và tính toán các tính năng cần thiết cho các mẫu tàu đánh cá theo đúng mẫu truyền thống đang hoạt động trên địa bàn tỉnh Ninh Thuận
Xuất phát từ nhu cầu thực tế, Khoa Kỹ thuật Giao thông Trường Đại học Nha Trang - một trong các đơn vị đào tạo truyền thống đội ngũ kỹ sư đóng tàu cá ở Việt Nam hiện nay
Trang 13đã thực hiện nhiều dự án thiết kế chuẩn hóa các mẫu tàu đánh cá theo mẫu truyền thống cho những địa phương nghề cá điển hình ở nước ta nói chung và của tỉnh Ninh Thuận nói riêng Trong quá trình thực hiện các dự án này, để hỗ trợ cho việc vẽ đường hình của các mẫu tàu đánh cá của các địa phương, chúng tôi đã được giao thực hiện đề tài tốt nghiệp với tên gọi :
“ Viết chương trình vẽ đường hình và tính toán tính năng các mẫu tàu khác nhau
theo mẫu truyền thống tỉnh Ninh Thuận”
Nội dung đề tài sẽ đi vào nghiên cứu xây dựng phương pháp và thuật toán thiết kế đường hình và tính toán tính năng cần thiết đáp ứng được hầu hết các yêu cầu hết sức đa dạng của tàu nghề cá Ninh Thuận Trên cơ sở đó, viết phần mềm thiết kế đường hình và tính toán tính năng cần thiết tàu đánh cá theo mẫu dân gian cho phép người sử dụng có thể vẽ được đường hình tàu theo mẫu truyền thống tại Ninh Thuận và tính toán tính năng một cách nhanh chóng, trực quan, đơn giản và không cần phải có kiến thức sâu về cơ sở
lý thuyết nhằm mục đích hướng tới phục vụ cho nhiều cơ sở đóng tàu cá vỏ gỗ ở Ninh Thuận
1.2 TÌNH HÌNH NGHIÊN CỨU TRONG VÀ NGOÀI NƯỚC
1.2.1 Tình hình nghiên cứu trong nước
Như đã trình bày ở trên, đa số những tàu đánh bắt thuỷ sản ở nước ta hiện nay nói chung và tại Ninh Thuận nói riêng đều thuộc loại tàu cỡ nhỏ, do các ngư dân tự liên hệ để đóng mới nên hầu như không có thiết kế kỹ thuật mà chủ yếu đóng dựa theo kinh nghiệm
và mẫu dân gian truyền thống của từng địa phương Chỉ sau khi đóng xong con tàu, cơ quan quản lý mới tiến hành lập hồ sơ thiết kế hoàn công, do đó đường hình thường được xây dựng trên cơ sở đo đạc và vẽ lại những mẫu tàu đã đóng Trong thời gian gần đây, khi mà cơ quan quản lý nhà nước yêu cầu các tàu nghề cá đóng mới phải có hồ sơ thiết kế
kỹ thuật thì quá trình thiết kế đường hình của loại tàu này nói chung thường cũng chỉ dừng lại ở việc vẽ theo mẫu tàu có sẵn bằng phần mềm thông dụng AutoCAD Cho đến
Trang 14hiện nay, trong lĩnh vực tự động hóa vẽ đường hình của các tàu đánh cá Việt Nam mới chỉ có các kết quả nghiên cứu của PGS.TS Trần Gia Thái của Trường Đại học Nha Trang
thông qua đề tài cấp Bộ với tên gọi ”Tự động hóa thiết kế đường hình tàu đáp ứng nhu
cầu đa dạng của tàu nghề cá Việt Nam”, trong đó đã công bố phần mềm cho phép thiết
kế tối ưu đường hình của các mẫu tàu đánh cá Việt Nam
1.2.2 Tình hình nghiên cứu trên thế giới
Riêng trên thế giới hiện nay cũng có khá nhiều phần mềm thiết kế tàu và tính toán các tính năng hàng hải uy tín như AutoShip, Fastship (Mỹ), Nepka (Tây Ban Nha), Maxsurf (Úc), Nautilus (Na Uy) v v…, nhưng sau khi khảo sát hầu hết các phần mềm thiết kế tàu nói trên chúng tôi nhận xét thấy, các phần mềm này tuy có nhiều ưu thế rất mạnh trong việc thiết kế các loại tàu vỏ thép nhưng khi dùng để thiết kế đường hình của tàu đánh cá
vỏ gỗ nước ta vẫn còn nhiều điểm hạn chế, cụ thể như sau :
1) Giá thành phần mềm quá cao, không chỉ vượt quá xa khả năng của các ngư dân
mà còn của các cơ quan Nhà nước hiện nay
2) Kỹ thuật vẽ phức tạp, không phù hợp với trình độ sử dụng của các ngư dân 3) Hầu hết các phần mềm đồ hoạ nói chung và phần mềm thiết kế tàu thủy nói riêng hiện nay đều vẽ đường hình tàu theo thuật toán vẽ đường B- Splines như đã biết hoặc dùng mặt cong toán học NURBS (Non Uniform Ration B-Spline Surfaces) Khi đó, phần mềm thực tế chỉ là công cụ để hỗ trợ cho việc vẽ đường hình tàu thủy hoặc theo đường B - Spline, hoặc dựng mặt NURBS để tạo ra bề mặt cong
vỏ tàu Một số phần mềm như Prolines lại dùng thư viện các tàu mẫu đã được vẽ sẵn và người sử dụng sẽ lấy hình dáng đường hình từ các tàu mẫu đã có trong thư viện tàu để chỉnh sửa lại cho đến khi đạt được các yêu cầu đã được đề ra trong nhiệm vụ thư Do đó việc sử dụng những phần mềm như thế thường không mang tính chủ động, do phải lệ thuộc khá nhiều vào thư viện các tàu mẫu đã nhập sẵn trong phần mềm, kỹ thuật vẽ và nhất là cũng không thật đơn giản, tốn nhiều công
Trang 15sức và đòi hỏi người sử dụng phải có kinh nghiệm trong thiết kế và kỹ thuật vẽ trên máy tính
4) Các tính toán thường được xây dựng dựa theo Quy phạm nước ngoài nên trong nhiều trường hợp có thể không phù hợp với yêu cầu của Quy phạm Việt Nam 5) Công việc tính toán tính năng trên các phần mềm này đều được thực hiện qua các bước khá phức tạp và đòi hỏi người sử dụng phải có trình độ chuyên môn cao
Vì thế theo ý kiến chúng tôi, việc sử dụng những phần mềm nước ngoài để thiết kế đường hình và tính toán tính năng tàu cá ở nước ta nói chung và tại Ninh Thuận nói riêng còn gặp nhiều khó khăn, nhất là đối với những mẫu truyền thống đóng dựa theo kinh nghiệm dân gian của từng vùng và do đó cũng khó có thể đáp ứng được các yêu cầu đa dạng và phong phú của người sử dụng đối với tàu thiết kế
1.3 MỤC TIÊU, PHƯƠNG PHÁP, NỘI DUNG VÀ PHẠM VI NGHIÊN CỨU
1.3.1 Mục tiêu đề tài
Mục tiêu đề tài là xây dựng thuật toán và viết chương trình tự động hóa việc vẽ đường hình và tính toán tính năng cho các mẫu tàu đánh cá vỏ gỗ theo mẫu truyền thống tỉnh Ninh Thuận đảm bảo các yêu cầu sau:
Vẽ nhanh chóng và chính xác đường hình của tàu thiết kế theo các mẫu tàu đánh
cá truyền thống làm các nghề điển hình hiện nay ở Ninh Thuận cụ thể là tàu lưới vây, lưới kéo, tàu lưới rê, tàu pha xúc
Xây dựng chính xác bảng tọa độ đường hình của mẫu tàu thiết kế phục vụ việc phóng dạng và đóng mới
Tính toán các thông số tính nổi và vẽ các đồ thị cần thiết như: đồ thị Bonjean, Thủy tĩnh, Pantokaren, đồ thị ổn định
Đảm bảo sử dụng dễ dàng và thuận tiện nhằm phục vụ các cơ sở đóng tàu địa phương
Trang 161.3.2 Phương pháp và nội dung nghiên cứu
Về lý thuyết, để giải quyết bài toán vẽ đường hình và tính toán tính năng với mục tiêu đặt ra trên đây chúng tôi lựa chọn giải pháp lập trình theo phương pháp đồng dạng và một
số phương pháp tính gần đúng như: phương pháp hình thang, phương pháp Krylop- Dargniers đã được trình bày trong các tài liệu chuyên ngành Với phương pháp nghiên cứu như thế, đề tài được giải quyết dựa trên cơ sở đo đạc thực tế để xây dựng đường hình của các mẫu tàu cá khảo sát, tính toán các tính năng tàu mẫu trên phần mềm Autohydro đóng vai trò cơ sở dữ liệu cho chương trình Với cách đặt vấn đề như thế, đề tài gồm các nội dung chính như sau :
Phân tích, lựa chọn những mẫu tàu đánh cá điển hình làm các nghề phổ biến hiện nay ở tỉnh Ninh Thuận
Khảo sát, đo đạc thực tế tọa độ đường hình của các mẫu tàu đánh cá đã được lựa chọn
Xử lý các số liệu đo đạc và xây dựng chính xác đường hình của các mẫu tàu đánh cá khảo sát, cơ sở dữ liệu cần thiết của chương trình
Nghiên cứu xây dựng thuật toán và ứng dụng ngôn ngữ lập trình AutoLISP để viết chương trình tự động vẽ đường hình và tính toán tính năng từ các thông số kích thước chính của tàu thiết kế trên cơ sở đường hình tàu khảo sát
Với cách đặt vấn đề như trên, đề tài gồm các chương chính như sau :
Chương 1: Đặt vấn đề Chương 2: Cơ sở lý thuyết Chương 3: Kết quả nghiên cứu Chương 4: Xây dựng cơ sở dữ liệu chương trình Chương 5: Thảo luận kết quả
Trang 171.3.3 Phạm vi nghiên cứu
Kết quả khảo sát thực tế các nghề khai thác thủy sản Ninh Thuận hiện nay cho thấy, mặc dù có khá nhiều nghề khác nhau nhưng các nghề phổ biến và đạt năng suất cao hiện nay ở tỉnh Ninh Thuận chủ yếu là những tàu làm các nghề lưới vây, lưới kéo, lưới rê và pha xúc Vì thế trong đề tài chỉ giới hạn trong vẽ đường hình và tính toán tính năng của các tàu đang làm các nghề này
Trang 18CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 VẼ ĐƯỜNG HÌNH THEO MẪU
Trong thực tế hiện nay có rất nhiều phương pháp khác nhau để thiết kế tuyến hình tàu nói chung và tàu đánh cá nói riêng Một trong những phương pháp vẽ đường hình tàu thiết kế được ứng dụng rộng rãi hiện nay đó chính là phương pháp đồng dạng hình học
(affine) dựa trên bảng tọa độ tàu mẫu Phương pháp vẽ đồng dạng khá đơn giản và đảm
bảo được tính trơn đều của tàu thiết kế nếu đường hình của tàu mẫu trơn đều, nhưng có nhược điểm là chỉ có thể làm thay đổi được các kích thước chính L, B, T trong khi vẫn giữ nguyên các hệ số hình dáng , như tàu mẫu Nói cách khác, phương pháp biến đổi đồng dạng chỉ cho phép vẽ đường hình tàu đảm bảo yêu cầu về các kích thước chính nhưng chưa đảm bảo được yêu cầu về các hệ số hình dáng Do đó phương pháp vẽ đường hình nói trên thường chỉ được phép sử dụng trong trường hợp tốc độ Vt và số Fr = Vt/ gLcủa tàu mẫu và tàu thiết kế chênh lệch nhau không nhiều lắm Trường hợp có sự thay đổi tốc độ tàu Vt và số Fr nhưng hệ số béo của tàu mẫu và tàu thiết kế không khác nhau nhiều, có thể lấy m = tk và buộc tất cả hệ số hình dáng khác không đổi, tuy nhiên do có
sự thay đổi tỷ số B/T hoặc H/T nên cần tính lại ổn định và dung tích của tàu Ưu điểm khác của phương pháp này là cho phép xác định các yếu tố chính của tàu thiết kế như lượng chiếm nước, vị trí tâm nổi, bán kính tâm nghiêng v v đơn giản và nhanh chóng theo các công thức xây dựng dựa trên cơ sở đồng dạng hình học của tàu mẫu và tàu thiết
kế
Xét trong trường hợp tổng quát, khi thay đổi tất cả các kích thước chính thì mối quan
hệ giữa các yếu tố của tàu thiết kế và tàu mẫu được xác định theo các công thức như sau:
- Các hệ số hình dáng , , , , không thay đổi
- Thể tích chiếm nước
Trang 19Vtk =
m
tk)LBT(
)LBT(
)LB(
)BT(
3 tk tk
BL
BL
Ixo
m m
3 tk tk
LB
LB
Trang 20có góc nghiêng ngang và nghiêng dọc Đồ thị như thế được gọi là đồ thị thủy tĩnh hay còn gọi là đồ thị thủy lực, (hình 2.1):
Hình 2 1: Đồ thị thủy tĩnh
Trong đó:
Xf (m) : Tọa độ trọng tâm mặt đường nước tại các mớn nước khác nhau
S(m2): Diện tích mặt đường nước tại các mớn nước khác nhau
V(m3): Đường cong thể tích của tàu tương ứng với các đường nước khác nhau
D(tấn): Thể hiện lượng chiếm nước của tàu tương ứng với các đường nước khác nhau Xc(m), Zc: Tọa độ tâm nổi tương ứng với các đường nước khác nhau
Cb, Cm, Cw: Các hệ số hình dáng của tàu
Có thể tóm tắt quá trình xây dựng đồ thị thủy tĩnh như sau:
Tính các yếu tố thủy tĩnh hay các thông số tính nổi tại các mớn nước khác nhau
Dựng hệ trục tọa độ XOY với trục Oy biểu diễn sự thay đổi của các mớn nước
Trang 21Do bề mặt vỏ tàu thường chỉ được biểu diễn dưới dạng các đường cong hình dáng nên để tính được giá trị tích phân nói trên cần sử dụng các phương pháp gần đúng, việc tính hình thang cong chuyển sang việc tính hình thang thuần tuý bằng cách chia nhỏ thành các phần tử hữu hạn mà cụ thể các phương pháp này bao gồm: phương pháp hình thang, phương pháp Simpson , mỗi phương pháp tính mang một tính ưu việt khác nhau Phương pháp hình thang được sử dụng rộng rãi, độ chính xác tuỳ theo ý muốn tuỳ thuộc vào khối lượng tính toán Phương pháp Simpson cho kết quả chính xác hơn phương pháp hình thang tuy nhiên khối lượng tính toán lớn hơn
2.2.2 Đồ Thị Bonjean
Đường cong các yếu tố thủy tĩnh mặc dù cho phép xác định các thông số tính nổi của tàu nhưng chỉ trong trường hợp tàu nằm cân bằng không có góc nghiêng ngang và nghiêng dọc Do đó trong thực tế để xác định các thông số tính nổi của tàu trong trường hợp nghiêng dọc là điều không thực hiện được Trong trường hợp này, sử dụng đồ thị Bonjean hoặc còn gọi là đường cong diện tích các sườn là tập hợp các đường cong biểu diễn diện tích phần chìm của các sườn theo chiều chìm
Quá trình xây dựng đồ thị Bonjean được thực hiện lần lượt theo các bước sau:
Tính lần lượt giá trị diện tích mặt cắt ngang ωi (i = 0 ÷ n ) và momen tĩnh
Mω của diện tích mặt cắt ngang này đối với trục Ox ứng với sự thay đổi của mớn nước
ω = T
0
dz y 2
T 0
dz z y 2 M
Dựng hệ trục tọa độ OTL, trong đó trục tung OT biểu diễn mớn nước của tàu, trục hoành OL biểu diễn vị trí các mặt cắt ngang theo chiều dài ở các tỷ
lệ xích nhất định
Trang 22Hình 2 2: Đồ thị Bonjean
Họ đường cong tích phân diện tích đường sườn sử dụng để tính thể tích chìm V và toạ
độ tâm nổi xC, zC của một đoạn hay toàn bộ phần ngập nước dưới một đường nước chúi
bất kỳ
Xét một đường nước chúi có mớn nước mũi Tm và mớn nước đuôi Td Khi đó V, xC,
zC được xác định như sau:
Với k: số khoảng chia theo cao độ z, n: số khoảng chia theo hoành độ x
Trong đó, để xác định giá trị diện tích mặt cắt ngang và momen tĩnh dựa theo phương
pháp hình thang, có công thức tính cụ thể sau:
- Công thức tính diện tích mặt cắt ngang:
- Momen tĩnh của thể tích V đối với mặt yOz:
)2
(
0
0 2
/
2 /
L
L
L dx
)2(
i
y y y T ydz
Trang 23(với m = n/2)
Như vậy ứng với một đường nước chúi bất kỳ đặc trưng bởi Tm,Td dựa vào đồ thị Bonjean ta tìm được V, xC, zC, nhưng để tìm các giá trị đó ta phải tính toán với khối lượng lớn Để khắc phục nhược điểm trên Phiaxốp đã đưa ra một dạng đồ thị khác, đó là
1: Phương pháp Schulz – Fellow, còn gọi là phương pháp tích phân, sử dụng máy đo
diện tích khi xác định diện tích phần chìm của các sườn tính toán trên tàu, cho mỗi trạng thái nghiêng Theo cách này thể tích phần chìm của mỗi trạng thái nghiêng được tính bằng phép tích phân giới hạn từ 0 đến L của tàu, hàm tích phân chính là diện tích các đường sườn vừa được đo
Tọa độ tâm nổi được xác định cho nỗi trạng thái nghiêng, trong phương pháp này sử dụng phương pháp Tchebyshev để tính toán
2: Phương pháp Krylov – Dargniers
Phương pháp này được mệnh danh là phương pháp giải tích kết hợp với đồ họa Thực phần giải tích nêu ra ở trên nhằm ca ngợi công lao của nhà khoa học Krylop – Dargniers,
)(
2)'(
0 2
2 /
i i L
Vyz
m L
xdx M
Trang 24phương pháp Krylop- Dargnies đơn giản và cho kết quả tương đối chính xác cho các tàu
có thể tích phần ngâm nước và phần phía trên đường nước tương đối bằng nhau Phương pháp này có trình tự tính toán như sau:
Vẽ sườn Tchebyshev ( cả hai phía mạn) ;
Dựng đường nước ban đầu ( φ = 00) WL0 ;
Qua tâm S0 của đường nước ban đầu vẽ đường nước ban đầu vẽ đường nước phụ thứ nhất WL’1 dưới góc nghiêng ∆φ( lấy bằng 100 hoặc 150) như trên hình 2.3
Hình 2.3 : Phương pháp Krylop_ Dargnies
Tìm khoảng cách từ tâm đường nước phụ S’1 đến C0 : η1 theo công thức
ηi = 1
) (
2 2
2 2
i i
i i b a
b a
ai, bi được xác định như hình 2.4
Trang 25 Đường nước phụ WL’2 vẽ qua điểm S1, đường nước phụ WL’3 sẽ vẽ qua S2 và cứ tiếp tục như vậy cho đến hết;
Tính các giá trị r(φ) bằng phương pháp tích phân gần đúng
i i
b a
b
Trong đó a, b là hoành độ của các đường nước thể tích tương đương thực tế đo từ điểm
A chân đường vuông góc hạ từ điểm S0 xuống đường nước đó Mômen quán tính diện tích đường nước, bán kính tâm nghiêng tính theo công thức :
Trang 26Ii =
) b a (
) b a ( n
L 3
1
2 i 2 i
2 i 2 i
Si = aibin
L
r ( φ ) = I( )
V
; V lấy từ đường cong thuỷ lực
Với cách trình bày trên, để tính toán các thông số này cần thực hiện các bước sau:
Bước I: Chúng tôi tiến hành dựng đường sườn theo phương pháp của Tchebyshev
Đầu tiên xác định vị trí của sườn Tchebyshev trên bản vẽ đường hình dựa vào bảng sau:
Bảng 2 1: Xác định vị trí đường sườn Tchebyshev
Sau khi xác định được vị trí của các đường sườn trên trục hoành (L), tiếp theo đó xác định các giao điểm của từng đường sườn với đường cắt dọc, đường nước (tương tự như quá trình phóng dạng)
Bước II: Khi đã xác định đầy đủ tọa độ của từng sườn Tchebyshev, chúng tôi tiến hành
vẽ lại đường sườn trên mặt cắt ngang (hình 2.5) :
Trang 27Hình 2 5: Đường sườn Tchebyshev
Bước III: Khi có các đường sườn Tchebyshev tiến hành tính toán theo phương pháp Krylop_ Dargnies
Dựng đường nước ban đầu WO1, tại góc nghiêng 0, qua tâm O kẻ đường nước phụ thứ nhất A1 dưới góc nghiêng δΦ bằng 10 như (hình 2.6):
Hình 2 6: Phương pháp xác định các hệ số a,b
Tại từng góc nghiêng δΦ ta xác định được các giá trị a,b như hình trên và các kết quả a,b sẽ được điền vào (bảng 2.2) để tính rθ và η
Trang 28Bảng 2 2: Bảng tính Pantokaren cho DN 1 – tại góc nghiêng δΦ = 10 0
Tiếp theo ta xây dựng đường nước WL2 sao cho V = const, ở đây chúng ta hiệu chỉnh đường nước dựa vào giá trị η, cách dựng đường nước WL2 và hiệu chỉnh đường
nước dựa theo “η” chúng tôi đã nêu kỹ ở phần trên, như vậy tính lần lượt tới Φ =90 0
cho từng đường nước cho đến hết
2.2.4 Cơ Sở Ổn Định
a Định nghĩa
Tính ổn định là một đặc tính hàng hải của tàu, xác định khả năng tàu khôi phục vị trí cân bằng ban đầu khi mômen ngoại lực thôi tác dụng và khả năng tàu chống lại mômen ngoại lực
Trang 29b Tâm nổi - Đường cong tâm nổi –Tâm nghiêng – Bán kính tâm nghiêng - Đường
cong tâm nghiêng
Vị trí đặt lực của lực nổi gọi là tâm nổi, ký hiệu là C, khi nghiêng hình dáng thân tàu
ngâm nước thay đổi, vị trí đặt lực nổi cũng thay đổi theo một đường cong ”ε” nhất định,
gọi là đường cong tâm nổi Mỗi điểm trên đương cong tâm nổi đều ứng với mớn nước
nghiêng ở một góc nhất định Tiếp tuyến với đường cong tâm nổi tại một điểm C bất kỳ,
đều song song đường nước tương ứng với tâm nổi đó Pháp tuyến của đường cong tâm
nổi tại một điểm C bất kỳ, đều vuông góc với đường nước tương ứng với điểm đó
Giả sử tàu nghiêng một góc ∆φ so với vị trí nghiêng ban đầu Tâm nổi ứng với góc φ
là Cφ, còn tâm nổi ứng với góc nghiêng φ + ∆φ là Cφ + ∆φ Hai pháp tuyến của đường
cong tâm nổi tại hai điểm Cφ và Cφ + ∆φ gặp nhau tại Mφ Nếu ∆φ 0, Mφ chính là tâm
tức thời của đường cong tâm nổi tại góc nghiêng Tâm đó được gọi là tâm nghiêng và
khoảng cách MφFφ gọi là bán kính tâm nghiêng ngang kí hiệu là r
Hình 2 7: Tâm nổi ứng với các góc nghiêng khác nhau
Theo hình vẽ ta có : MφFφ = r = C C
Mặt khác từ điều kiện cân bằng ta có : C C = v S S1 2
V
Trang 30y dx
nên bán kính tâm nghiêng ngang : r = y
I V
Tương tự, ta có công thức của bán kính tâm nghiêng dọc: R = I x
V
Khi góc nghiêng ngang tăng dần, tâm nghiêng Mφ dịch chuyển theo một đường cong gọi
là đường cong tâm nghiêng Tính chất của đường cong tâm nghiêng phụ thuộc vào sự biến thiên của đường cong tâm nổi Toạ độ mỗi điểm trên đường cong tâm nghiêng liên quan tới toạ độ điểm ứng với nó trên đường cong tâm nổi theo các công thức sau:
Ycθ = yc0 – r sinφ
Zcθ = zc0 + r cosφ
c Mômen hồi phục Cánh tay đòn ổn định tĩnh
Dưới tác động của ngoại lực, tàu bị nghiêng khỏi vị trí một góc φ, do đó hình dáng phần thân tàu ngập nước cũng thay đổi, tâm nổi dịch chuyển từ điểm C đến điểm Cφ Cặp lực P và D bằng nhau về giá trị tuyệt đối, có phương song song và hướng tác dụng ngược chiều nhau, tạo thành mômen gọi là mômen hồi phục hay còn gọi là mômen ổn định tĩnh Công thức Mômen hồi phục như sau:
Mhp = P N G sinφ Hay là: Mhp = P(z sinφ + y cosφ + zG sinφ)
Trang 31Hình 2 8 Cách xác định cánh tay đòn ổn định
Trên hình vẽ ta thấy :
l = N G sinφ = GH= z sinφ + y cosφ - zG sinφ Trong đó: l được gọi là cánh tay đòn ổn định tĩnh
Biểu thức trên gồm hai thành phần:
+ Thành phần thứ nhất lF = zsinφ + ycosφ : cánh tay đòn ổn định hình dáng + Thành phần thứ hai lG = zG sinφ : cánh tay đòn ổn định trọng lượng
Chiều cao tâm nghiêng ổn định tổng quát : hφ = dl
d = MH
Đặc điểm của đồ thị này là :
Giá trị cực đại của đường cong xác định góc nghiêng cức đại và cánh tay đòn cực đại của mômen nghiêng trong trường hợp nghiêng tĩnh
Trang 32 Chiều cao tâm nghiêng tổng quát hφ chính là tang của góc nghiêng của tiếp tuyến với đường cong, vì tg α = dl
d
Hình 2 9: Xác định chiều cao tâm nghiêng trên đồ thị ổn định tĩnh
Do đó với mỗi tâm nghiêng φ, bằng đồ thị ta có thể xác định chiều cao tâm nghiêng
hφ = MH bằng cách tại điểm ứng với góc φ trên đường cong vẽ tiếp tuyến với đường cong Trên đường song song với trục φ kẻ từ điểm đó một đoạn bằng 5307 (tương ứng với 1 rad) Và kẻ vuông góc với trục φ Cạnh góc vuông đối với góc α chính là hφ =
MH
2.3 LỰA CHỌN NGÔN NGỮ LẬP TRÌNH
Trên thực hiện nay có rất nhiều ngôn ngữ lập trình hỗ trợ cho việc lập trình đồ họa trong các ngành kỹ thuật đặc biệt là ngành cơ khí, xây dựng như: ngôn ngữ Visual Basic, C++… Qua quá trình tìm hiểu, chúng tôi đã lựa chọn ngôn ngữ lập trình AutoLISP, ngôn ngữ này có nhưng đặc điểm sau:
AutoLISP là ngôn ngữ lập trình bậc cao thích hợp với các ứng dụng đồ họa và
là ngôn ngữ lập trình thông dịch nghĩa là chạy đến đâu dịch đến đó và cho kết quả, được viết theo cú pháp và thủ tục rất chặt chẽ
Trang 33 Ngôn ngữ này được bổ sung vào phiên bản AutoCAD 2000 nhằm tăng sự linh hoạt và giảm thiểu tối đa thời gian thiết kế để tăng thêm tính ưu việt cho phần mềm AutoCAD
Ngôn ngữ lập trình AutoLISP cho phép khả năng liên kết dữ liệu với phần mềm AutoCAD, có thể thêm hoặc xóa đối tượng, thêm thông tin vào các bản vẽ hiện hành, lấy các mã DXF của từng đối tượng thông qua các lệnh có sẵn rồi từ đó điều khiển đối tượng theo những mục đích sử dụng khác nhau
AutoLISP đã được ứng dụng rộng rãi và tạo ra được các phần mềm có chức năng hỗ trợ đắc lực cho người thiết kế khi vẽ các chi tiết phức tạp, nếu chỉ sử dụng các công cụ vẽ thông thường của AutoCAD sẽ mất nhiều thời gian và công sức Như vậy, nhờ có ngôn ngữ này mà công việc đã được đơn giản hóa
và đem lại năng suất cao
AutoLISP tận dụng tối đa các lệnh có sẵn trong AutoCAD, lấy và thiết lập các biến hệ thống của AutoCAD
Để viết một chương trình AutoLISP chúng ta có thể sử dụng các chương trình
soạn thảo như: Notepad, Microsoft Word….nhưng việc tìm kiếm lỗi và nhận dạng
biến là không thể Vì vậy, AutoCAD cung cấp môi trường lập trình Visual LISP đã đem lại sự thuận tiện cho người lập trình Visual LISP là môi trường dùng soạn thảo
và viết ra các chương trình dựa trên ngôn ngữ AutoLISP Môi trường này cung cấp nhiều công cụ hỗ trợ cho việc viết và gỡ rối chương trình, cho phép người lập trình liên kết trực tiếp với AutoCAD để chạy thử chương trình, cung cấp chức năng kiểm tra lỗi toàn bộ chương trình hay một cụm mã lệnh, như vậy giảm thời gian tìm kiếm
lỗi Ngoài ra, còn hỗ trợ thêm một ngôn ngữ lập trình DCL (Dialog Control
Language), cho phép người lập trình soạn thảo và kiểm tra các mẫu hộp thoại (hình
2.10)
Trang 34Hình 2 10: Giao diện của môi trường Visual LISP
2.3.1 Tìm Hiểu Ngôn Ngữ Autolisp
2.3.1.1 Biểu thức trong AutoLISP
Một biểu thức trong AutoLISP đơn giản chỉ gồm các phép tính số học thông thường và cấu trúc dữ liệu Tuy nhiên để AutoLISP thực hiện một biểu thức cần dùng các cấu trúc
sau :
- Cấu trúc dữ liệu cơ bản là danh sách (theo đúng tên gọi của nó list processor)
- Cấu trúc chứa các biểu thức toán học Là tập hợp các hàm toán học có nhiệm vụ
xử lý danh sách dữ liệu nhập vào
Quá trình xử lý của AutoLISP như sau khi nhận được dữ liệu là danh sách, AutoLISP
sẽ xử lý danh sách đó và đưa đến các biểu thức toán học để thực hiện một chức năng nào
đó do người lập trình đặt ra
2.3.1.2 Biến trong AutoLISP
Biến trong ngôn ngữ AutoLISP là đại diện cho các tham số, có thể cố định hoặc thay đổi trong một chương trình Biến có thể là số thực, số nguyên, chuỗi v.v… AutoLISP cung cấp hai lệnh Setq và Set để gán các giá trị cho biến Ví dụ, để gán cho biến A một
Trang 35giá trị bằng 12, có thể thực hiện ngay dưới dòng lệnh Command của AutoCAD, gõ chuỗi lệnh sau:
Command : (Setq A 12)
Cần phải hiểu rõ sự khác nhau giữa giá trị và biến Biến đại diện cho giá trị, để AutoCAD không hiểu nhầm giữa giá trị và biến thì khi sử dụng biến cần phải thêm “!” vào trước tên biến Bắt đầu từ phiên bản AutoCAD 14 Tên biến có thể chứa bất kì ký tự nào, ngoại trừ các kí tự ( ) , ; “ ‘ và khoảng trắng
2.3.1.3 Cách viết chương trình của AutoLISP
Viết trực tiếp
Để viết lệnh trực tiếp người lập trình đánh các đoạn mã lệnh ngay trên dòng
Command của AutoCAD Các đoạn mã lệnh này sẽ được thực thi và xuất ra kết quả
ngay tại dòng Command, những lệnh này không lưu trữ được
Viết gián tiếp
Dùng chương trình soạn thảo dưới dạng mã ASCII bất kỳ hoặc dùng ngay Visual LISP để viết thành một chương trình đóng vai trò như một tập tin nguồn có phần mở rộng là *.lsp Tên của các tập tin dùng trong ngôn ngữ lập trình AutoLISP cũng tuân thủ theo đúng qui ước của hệ điều hành, tức là không có quá 8 ký tự và giữa các ký tự không có các khoảng trống
Để chương trình có thể tự động Upload phần mềm mỗi khi khởi động AutoCAD, phải copy hết tất cả các mã lệnh của chương trình vào trong file acad2007.lsp tại mục
Support của AutoCAD (tùy theo từng phiên bản CAD có thể thay đổi file acad2007, ở
đây là phiên bản CAD 2007) Quá trình này thuận tiện cho việc sử dụng lại chương
trình mỗi khi thoát AutoCAD, nhưng lại làm chậm quá trình khởi động phần mềm AutoCAD Chương trình có dung lượng càng lớn, tính toán phức tạp thì quá trình khởi động AutoCAD càng mất nhiều thời gian
Trang 362.3.1.4 Cách tạo các hàm, lệnh cho AutoCAD
Cách tạo hàm tự tạo
Để nhận được hàm tự tạo, sử dụng hàm Defun (Define function) và khi AutoLISP
chạy gặp bất kỳ hàm nào có tên hàm đã được tạo, nó sẽ tự động tính và trả về kết quả của hàm
Cấu trúc tạo hàm tự tạo như sau:
(DEFUN [Tên Hàm] / [tham số gọi] [các biểu thức của hàm] )
Cách tạo lệnh mới cho AutoCAD
Các lệnh mới được tạo ra từ AutoLISP cũng sẽ được coi như là các lệnh của AutoCAD Cách tạo các lệnh mới này cho AutoCAD cũng tương tự cách làm các hàm tự tạo đã trình bày, chỉ khác là có thêm “c:” vào trước tên hàm Cấu trúc tạo lệnh mới cho AutoCAD
(Defun C: [Tên Hàm] / [tham số gọi] [các biểu thức của hàm] ) 2.3.2 Các Hàm AutoLISP Thông Dụng
Như đã giới thiệu, đặc trưng của ngôn ngữ lập trình AutoLISP là: nhập số liệu → xử
lý số liệu → sử dụng các hàm toán học thực hiện một thuật toán nào đó → Xuất kết quả như yêu cầu AutoLISP cung cấp nhiều hàm với nhiều chức năng khác nhau nhưng trong
phần này chỉ trình bày các hàm thông dụng liên quan đến nội dung bài toán đặt ra trong
đề tài Cụ thể như sau :
2.3.2.1 Các hàm nhập số liệu
AutoLISP cung cấp nhiều hàm để người dùng có thể nhập nhiều kiểu số liệu khác
nhau như kiểu chuỗi, số thực, số nguyên, danh sách v.v Theo đó mỗi kiểu số liệu được nhập vào trong cơ sở dữ liệu của AutoCAD bằng những lệnh khác nhau như Getpoint,
Getreal, Getint v.v Vì AutoLISP trao đổi số liệu trực tiếp với AutoCAD nên có thể
nhập các số liệu trực tiếp từ môi trường AutoCAD và nhập gián tiếp vào cơ sở dữ liệu của AutoCAD thông qua môi trường Visual
Trang 37 Nhập số liệu kiểu số nguyên (interget)
AutoLISP sử dụng hàm Getint để nhập số nguyên với cấu trúc:
Trong đó :
[Prompt] là thông báo cho người sử dụng biết nội dung cần nhập
Ví dụ, nhập kiểu số nguyên là tỷ số cá thể đực và cá thể cái bằng cấu trúc như sau : Command : (Getint “\nNhập tỷ số giữa cá thể đực và cá thể cái”)
Khi đó, con trỏ chuột trên vùng đồ họa của AutoCAD và tại dòng nhắc lệnh Command của AutoCAD sẽ thông báo như hình 2.11
Hình 2 11: Nhập số liệu là kiểu số nguyên
Nhập số liệu kiểu số thực (real)
Kiểu số thực là chứa tất cả các loại số tự nhiên, thập phân v.v… AutoLISP sử dụng
hàm Getreal để nhập số thực trực tiếp vào môi trường AutoCAD
Trong đó: [Prompt] là thông báo của dòng nhắc lệnh tới người sử dụng
Ví dụ: yêu cầu người dụng nhập kết quả của phép chia ¾
Command : (Getreal “\n3 chia 4 bang bao nhieu ”)
thì dòng con trỏ chuột và dòng nhắc lệnh của AutoCAD thông báo:
Hình 2 12: Nhập số liệu kiểu số thực
Trang 38 Nhập dữ liệu kiểu chuỗi (String)
AutoLISP sử dụng hàm Getstring nhập số liệu kiểu chuỗi, không vượt quá 132 ký tự
Command : (Getstring [Prompt])
Ví dụ, yêu cầu người dùng nhập câu trả lời bằng chữ: Đất nước Việt Nam hình chữ gì
(Getstring “\nĐất nước Việt Nam hình chữ gì ? ”)
Thì dòng con trỏ chuột của AutoCAD thông báo :
Hình 2 13: Thông báo nhập số liệu kiểu chuỗi
Dòng nhắc lệnh Command thông báo :
Hình 2 14: Nhập số liệu kiểu chuỗi 2.3.2.2 Hàm kiểm soát dữ liệu nhập vào
AutoLISP cung cấp hàm Initget để kiểm soát số liệu nhập vào Hàm Initget cung cấp
danh sách giá trị nhập vào hợp lệ bằng cách gắn bit kiểm tra (bit code) và danh sách từ
khóa của hàm nhập dữ liệu như Getpoint, Getreal, Getangle, Getint …., ngoại trừ hàm Getstring, nhưng hàm Initget chỉ có tác dụng một lần đối với hàm Getxxx Nó bị mất tác
dụng khi ta sử dụng Getxxx ở các lần kế tiếp
Cấu trúc của hàm kiểm soát dữ liệu nhập :
Trong đó :
Trang 39[BITS] - số nguyên, là tổng các bitcode ứng với chế độ kiểm soát mong muốn
[STRING] - chứa danh sách các từ khóa
Ví dụ về lệnh kiểm soát dữ liệu nhập :
Bảng 2.1: Các giá trị Bit Code cụ thể tương ứng với chế độ kiểm soát dữ liệu
8 Chấp nhận giá trị nhập vào nằm ngoài giới hạn bản vẽ ngay cả khi biến hệ thống
LIMCHECK = ON (lựa chọn ON của lệnh LIMITS)
128
Cho phép nhập kí tự không có trong danh sách từ khóa Các bit code khác sẽ được ưu tiên trước, nhưng nếu bit 1 và 128 được sử dụng cùng với nhau (129) thì giá trị Null nhập vào (nhấp ENTER sẽ thành chuỗi rỗng)
Hình 2 15: Hàm gán lấy giá trị của biến hệ thống AutoCAD
Các biến hệ thống của AutoCAD dùng điều khiển đối tượng và môi trường làm việc của AutoCAD Biến hệ thống của AutoCAD không giống với biến toàn cục hay biến cục
bộ của AutoLISP Không dùng hàm SETQ để gán biến mà dùng hàm SETVAR để gán
giá trị cho biến hệ thống Cụ thể như sau:
Trang 401 Hàm gán giá trị SETVAR
AutoLISP cung cấp hàm SETVAR để gán giá trị với cấu trúc hàm như sau:
Trong đó :
[VARNAME] - tên biến hệ thống của AutoCAD, được đặt trong dấu “”
[VALUE] - giá trị của biến hệ thống
Có rất nhiều biến hệ thống trong AutoCAD có thể tham khảo trong tài liệu chuyên sâu
về AutoCAD
2 Hàm lấy giá trị của biến hệ thống GETVAR
AutoLISP cung cấp hàm GETVAR để lấy biến hệ thống
Hàm Getvar dùng để lấy các biến hệ thống của AutoCAD làm dữ liệu cho phần mềm
Hàm này rất hữu ích khi sử dụng các dữ liệu của hệ thống làm cơ sở để tính toán Cấu trúc hàm:
(GETVAR [VARNAME] )
Hàm này sẽ trả về các giá trị của biến hệ thống, có thể là kiểu chuỗi, kiểu số thực
v v Nó được sử dụng kết hợp với hàm Setq (gắn biến dữ liệu)
Ví dụ, để lấy diện tích của hình tròn thì phải thông qua lệnh Area hoặc Massprop
Trong ví dụ này sẽ lấy diện tích của hình trong thông qua biến hệ thống Area, rồi gắn
biến bằng hàm Setq
Command: area(lệnh tính diện tích) Specify first corner point or [Object/Add/Subtract]: o Select objects:
Diện tích trả về khi dùng lệnh AREA nhưng giá trị chỉ hiện thông báo trên màn hình, không thể sử dụng trực tiếp nó Để lấy giá trị này phục vụ cho việc tính toán tiếp theo phải dùng hàm Setq kết hợp với Getvar
Command: AREA