Máy tính là một thiết bị đã và đang được sử dụng rộng rãi trong công việc cũng như giảng dạy và học tập, do đó rất thuận tiện cho việc tự động hóa trong thiết kế.. Trong rất nhiều phầnmề
Trang 1Mụ ụ c l c
PHẦN 1: GiỚI THIỆU CHUNG 2
1.1 Mở đầu 2
1.1.1 Lý do chọn đề tài 2
1.1.2 Mục đích đề tài 2
1.1.3 Đối tượng và phạm vi nghiên cứu 2
1.1.4 Ý nghĩa thực tiễn của đề tài 2
1.2 Cơ sở lý thuyết tính toán 3
1.2.1 Tổng quan về bích 3
1.2.2 Lý thuyết 4
1.3 Sơ đồ thuật toán 5
1.4 Giới thiệu các form và hướng dẫn sử dụng 6
1.4.1 Form chính (bick5k) 6
1.4.2 Form phụ(tác giả) 7
1.4.3 Form phụ (DHSD) 7
1.5 Kết luận 8
PHẦN 2: CODE LỆNH 9
2.1 Code cho form chính 9
2.2 Hàm cho form hướng dẫn sử dụng 21
PHẦN 3 THỬ BỘI SỐ 22
3.1 Thông số thử 22
3.2 Kết quả chạy thử 22
3.3 Nhận xét 23
Trang 21 PHẦN 1: GiỚI THIỆU CHUNG 1.1 Mở đầu
1.1.1 Lý do chọn đề tài.
Ngày nay công việc thiết kế đòi hỏi tính hiệu quả và chính xác cao, do đórất cần phải được tự động hóa để đạt được điều đó Máy tính là một thiết bị đã
và đang được sử dụng rộng rãi trong công việc cũng như giảng dạy và học tập,
do đó rất thuận tiện cho việc tự động hóa trong thiết kế Trong rất nhiều phầnmềm có thể tự động hóa, thì một phần mềm đươc sử dụng nhiều nhất với ngườithiết kế đó là autocad, trong autocad có chương trình tự động hóa cao là VBA.Với VBA bạn có thể lập trình để vẽ ra những chi tiết từ đơn giản tới phức tạp,
có thể quản lý bản vẽ theo nhu cầu, load, xuất file nhanh chóng, gọn nhẹ Vídụ: có thể dùng VBA để tự động vẽ các mặt bích, bu lông thậm chí chongchóng tàu thủy hay các thiết bị phức tạp như máy chính, đường trục… Sở dĩVBA được ứng dụng nhiều vì sự đồng bộ hóa trong câu lệnh giữa VBA vàAutocad, nó kết hợp được khả năng vẽ mạnh mẽ của Autocad cùng khả năngquản lý, tính toán của ngôn ngữ lập trình VB
1.1.2Mục đích đề tài.
Giúp cho sinh viên nắm bắt được cách lập trình 1 chương trình VBA đểứng dụng vào học tập và công việc sau này Cho phép người sử dụng đẩynhanh tốc độ vẽ, nâng cao độ chính xác trong công việc thiết kế
1.1.3 Đối tượng và phạm vi nghiên cứu.
Đối tượng nghiên cứu là chương trình VBA, một chương trình tự độnghóa nằm trong phần mềm autocad Trong môi trường học tập thì phạm vinghiên cứu của đề tài là lập trình ra một chương trình đơn giản để vẽ những chitiết không quá phức tạp và được tiêu chuẩn hóa
1.1.4Ý nghĩa thực tiễn của đề tài.
VBA giúp cho người thiết kế thao tác nhanh và chính xác hơn nhiều sovới thao tác trực tiếp bằng tay để vẽ Qua đó đẩy nhanh tốc độ công việc nhưngvẫn đảm bảo tính chính xác Rút ngắn thời gian thiết kế qua đó tăng được năngsuất lao động
Trang 31.2 Cơ sở lý thuyết tính toán
1.2.1 Tổng quan về bích
Mặt bích, hay còn được biết đến như là đĩa bích, được gắn với đầu ống và
sử dụng để kết nối nó với ống khác Mối liên kết mặt bích là tháo lắp được vàcấu trúc chống thấm, là sự kết hợp của bích nối, đệm và bu lông Mặt bích nối
ốn thép là loại mặt bích đặc biệt được dùng cho đường ống và mặt bích ống nạp
- ống xả được trang bị Có các lỗ khoan trên mặt bích để bắt bu lông liên kết 2mặt bích với nhau Một vòng đệm giữa 2 mặt bích nhằm bảo vệ tránh hiện tượng
Bích nối thường được tiêu chuẩn hóa để tiện cho việc gia công chế tạo,tăng tính lắp lẫn cho bích Một số trường hợp còn để đảm bảo an toàn khi xảy ra
sự cố, đặc biệt những bích kiểu này thường là bích ở hệ thống chữa cháy trêncác con tàu, theo công ước SOLAR về an toàn hỏa hoạn trên biển Tiêu chuẩnJIS là 1 trong những bộ tiêu chuẩn về mặt bích ống, ở đó người ta đưa ra các sốhiệu mặt bích sẵn để tiện cho việc chế tạo cũng như là sử dụng Trong đề tài nàychúng ta sẽ nghiên cứu cách vẽ 1 loại mặt bích thuộc tiêu chuẩn này, đó là mặtbích đôi loại 5k
Hình 1-1: Mặt bích đôi tiêu chuản JIS 5k
Trang 4Mặt bích đôi là một chi tiết thường được dùng trong các hệ thống nước trêntàu.
Khi ta muốn công chất trong đường ống chảy vào hệ thống ta sẽ cho mặtbích có lỗ ở giữa vào trông mối lắp ghép, lỗ này được thiết kế có đường kínhbằng đường kính trong của ống
Khi muốn ngắt công chất ta quay ngược phía bích còn lại và lắp vào hệthống, lúc này bích sẽ ngăn cản sự trao đổi công chất trong đường ống đi quabích
1.2.2 Lý thuyết
Để thiết kế bích đôi ta sử dụng bảng số liệu về bích đôi 5k tiêu chuẩn jissau:
Hình 1-2: Thông số của mặt bích
Trang 5Như vậy ta đă đủ các số liệu để tính toán và vẽ bích đôi theo tiêu chuẩn jis
Để thuận tiện trong quá tŕnh tính toàn và kết xuất bản vẽ ta sử dụng phầnmềm VBA trong AutoCad để thực hiện chương tŕnh này
1.3 Sơ đồ thuật toán
Hình 1-3: Sơ đồ thuật toán
Trang 61.4 Giới thiệu các form và hướng dẫn sử dụng
Chương trình đơn giản nên ta chỉ cần làm một số form
1.4.1 Form chính (bick5k)
Hình 1-4: Form chính
Trên form có:
Combobox1 để lựa chọn đường kính danh nghĩa
Com bobox2 để lựa chọn có hay không ghi kích thước
Combobox3 để lựa chọn mặt cắt muốn vẽ đứng hay là cạnh
Combobox4 để lựa chọn phương vẽ bằng click chuột hay nhập giá trị gócNếu bằng click chuột thì khi nhấn nút vẽ chương trình sẽ yêu cầu nhập 2điểm để chọn phương
Nếu nhập giá trị góc thì chương trình sẽ hiển thị một textbox yêu cầu nhậpgiá trị của góc
Nút vẽ để vẽ bích sau khi lựa chọn đủ các thông số
Nút lệnh thoát dùng để rời khỏi chương trình
Nút lệnh tác giả để xem thông tin tác giả
Nút lệnh HDSD đẻ xem cách dùng
Trang 71.4.2 Form phụ(tác giả)
Hình 1-5: Form tác giả
Trang 8Form này chứa thông tin về tác giả, được hiện nên khi người dùng nhấnvào nút tác giả từ form chính hay từ form DHSD
Các nút: Quay lại để trở về form chính
DHSD để xem hướng dẫn sử dụngThoát để rời khỏi chương trình
1.4.3 Form phụ (DHSD)
Hình 1-6: Form hướng dẫn sử dụng
Form này chứa thông tin về cách thức sử dụng chương trình, được hiện nênkhi người dùng nhấn vào nút HDSD từ form chính hay từ form tác giả
Các nút: Quay lại để trở về form chính
Tác giả để xem thông tin về tác giảThoát để rời khỏi chương trình
1.5 Kết luận
Dù được sự hướng dẫn tận tình của giáo viên hướng dẫn nhưng do vốn hiểubiết về VBA cũng như AutoCad còn hạn chế, thời gian thực hiện ngắn cho nênchương trình sẽ có nhiều khuyết điểm, lỗi
Trong quá trình sử dụng chương trình nếu có bất kì lỗi nào phát sinh hay ýkiến đóng góp xin liên hệ Lý Đức Quyết - MTT50DHT
Tôi xin chân thành cảm ơn!
Trang 92 PHẦN 2: CODE LỆNH 2.1 Code cho form chính
Private Sub ComboBoxpv_Change()
Select Case ComboBoxpv.Value
Case 0: TextBoxgoc.Visible = False: Labelgoc.Visible = False
Case 1: TextBoxgoc.Visible = True: Labelgoc.Visible = True
Trang 10ComboBoxpv.AddItem "click chon phuong" '0
ComboBoxpv.AddItem "nhap goc" '1
Trang 11Dim Arc As AcadArc
Dim Anpha As Double
Dim Dimobj As AcadDimAligned
Dim Dimcir As AcadDimDiametric
Dim Dimobj1 As AcadDimRadial
Dim P1(0 To 2) As Double
Dim P2(0 To 2) As Double
Dim O1(0 To 2) As Double
Dim O2(0 To 2) As Double
Dim O3(0 To 2) As Double
Trang 12Dim O4(0 To 2) As Double
Dim Location1(0 To 2) As Double
Dim Location2(0 To 2) As Double
Dim Location3(0 To 2) As Double
Dim Location4(0 To 2) As Double
Dim I(0 To 2) As Double
Dim Nx(0 To 2) As Double
' chuyển đổi dữ liệu vào sang kích thước theo tiêu chuẩn
Select Case ComboBoxdk.Value
Trang 13Dim Goc1 As Variant
Dim Goc2 As Variant
Goc1 = ThisDrawing.Utility.GetPoint(, "nhap diem thu nhat de chon phuong ")Goc2 = ThisDrawing.Utility.GetPoint(, "nhap diem thu hai de chon phuong: ")Set L = ThisDrawing.ModelSpace.AddLine(Goc1, Goc2)
Goc = L.Angle
L.Delete
Trang 14Goc = TextBoxgoc.Text * pi / 180
End If
O1(0) = 0: O1(1) = 0: O1(2) = 0
O2(0) = O1(0) + K / 2: O2(1) = O1(1): O2(2) = 0
O3(0) = O1(0) + K + D / 2 + 3 * T: O3(1) = O1(1): O3(2) = 0
O4(0) = O1(0) + K: O4(1) = O1(1): O4(2) = 0
Anpha = ArcSin((R + B / 2) / (R + D / 2))
'tạo các layer
Dim LayerObj As AcadLayer
Dim LayertypeName As String
ThisDrawing.Linetypes.Load LayertypeName, "acad.lin"
Set LayerObj = ThisDrawing.Layers.Add("duongtam")
LayerObj.color = acYellow
LayerObj.Linetype = LayertypeName
On Error Resume Next
LayertypeName = "continuous"
ThisDrawing.Linetypes.Load LayertypeName, "acad.lin"
Set LayerObj = ThisDrawing.Layers.Add("kichthuoc")
LayerObj.color = acGreen
LayerObj.Linetype = LayertypeName
Trang 15'thực hiện ghi kích thước
If Kt = 1 Then
'thiết lập layer kích thước làm layer hiện hành
ThisDrawing.ActiveLayer = ThisDrawing.Layers("kichthuoc")
Dim objDimStyle As AcadDimStyle
Set objDimStyle = ThisDrawing.DimStyles.Add("newdimstyle")
ThisDrawing.SetVariable "DIMSCALE", 1 'will control size of dim text
ThisDrawing.SetVariable "DIMASZ", 2.5 'arrowhead size
ThisDrawing.SetVariable "DIMATFIT", 2 'arrow-text arrangement
ThisDrawing.SetVariable "DIMAZIN", 3 '0 suppression before/after angularThisDrawing.SetVariable "DIMBLK", "" 'special arrow blk
ThisDrawing.SetVariable "DIMDEC", 2 'Sets the number of decimal placesThisDrawing.SetVariable "DIMDLE", 0 'dim line extension past extension
ThisDrawing.SetVariable "DIMDLI", 10 'dist between baseline dims
ThisDrawing.SetVariable "DIMDSEP", "." 'decimal separator
ThisDrawing.SetVariable "DIMEXE", 1.5 'dim line extension past extensionThisDrawing.SetVariable "DIMEXO", 0 'dim offset from origin
ThisDrawing.SetVariable "DIMFIT", 5 'control fit if not enough space
ThisDrawing.SetVariable "DIMGAP", 2 'gap around text
ThisDrawing.SetVariable "DIMJUST", 0 'text placement - above centered
ThisDrawing.SetVariable "DIMLFAC", 1 'length scaling
ThisDrawing.SetVariable "DIMTAD", 1 'text to dim placement - above
ThisDrawing.SetVariable "DIMTIH", 0 'aligned with dim
ThisDrawing.SetVariable "DIMTIX", 0 'force inside
ThisDrawing.SetVariable "DIMTMOVE", 0 'dim moves with text
ThisDrawing.SetVariable "DIMTOFL", 1 'Draw dim line between ext linesThisDrawing.SetVariable "DIMTOH", 0 'Aligns text with the dimension lineThisDrawing.SetVariable "DIMTSZ", 0 'draw arrowheads
ThisDrawing.SetVariable "DIMTXT", 3.5 'text height
ThisDrawing.SetVariable "DIMTZIN", 12 '0 suppression before/after tol
ThisDrawing.SetVariable "DIMUNIT", 2 'unit format - decimal
ThisDrawing.SetVariable "DIMZIN", 12 '0 suppression before/after
Trang 16objDimStyle.CopyFrom ThisDrawing
ThisDrawing.ActiveDimStyle = objDimStyle
Location1(0) = K / 4: Location1(1) = D / 2 + 2 * H: Location1(2) = 0
Location2(0) = K / 2: Location2(1) = D / 2 + 4 * H: Location2(2) = 0
Location3(0) = O3(0) + T / 2: Location3(1) = O3(1) - 2 * T - D / 2: Location3(2)
I(0) = O4(0) - (D / 2 + R) * Cos(Anpha): I(1) = O1(1) + B / 2 + R: I(2) = 0
Nx(0) = I(0) + R * Sqr(2) / 2: Nx(1) = I(1) - R * Sqr(2) / 2: I(2) = 0
Trang 17Set Dimobj1 = ThisDrawing.ModelSpace.AddDimRadial(I, Nx, 3)
Trang 19Set Arc = ThisDrawing.ModelSpace.AddArc(O4, D / 2, pi + Anpha, 3 * pi Anpha)
I(0) = O1(0) + (D / 2 + R) * Cos(Anpha): I(1) = O1(1) - B / 2 - R: I(2) = 0
Set Arc = ThisDrawing.ModelSpace.AddArc(I, R, pi / 2, pi - Anpha)
Arc.Move Dbd, Dkt
Arc.Rotate Dkt, Goc
I(0) = O4(0) - (D / 2 + R) * Cos(Anpha): I(1) = O1(1) + B / 2 + R: I(2) = 0
Set Arc = ThisDrawing.ModelSpace.AddArc(I, R, 3 * pi / 2, 2 * pi - Anpha)Arc.Move Dbd, Dkt
Arc.Rotate Dkt, Goc
I(0) = O4(0) - (D / 2 + R) * Cos(Anpha): I(1) = O1(1) - B / 2 - R: I(2) = 0
Set Arc = ThisDrawing.ModelSpace.AddArc(I, R, Anpha, pi / 2)
Arc.Move Dbd, Dkt
Arc.Rotate Dkt, Goc
P1(0) = O1(0) + (D / 2 + R) * Cos(Anpha): P1(1) = O1(1) + B / 2: P1(2) = 0P2(0) = O4(0) - (D / 2 + R) * Cos(Anpha): P2(1) = O1(1) + B / 2: P2(2) = 0Set L = ThisDrawing.ModelSpace.AddLine(P1, P2)
L.Move Dbd, Dkt
L.Rotate Dkt, Goc
P1(0) = O1(0) + (D / 2 + R) * Cos(Anpha): P1(1) = O1(1) - B / 2: P1(2) = 0P2(0) = O4(0) - (D / 2 + R) * Cos(Anpha): P2(1) = O1(1) - B / 2: P2(2) = 0Set L = ThisDrawing.ModelSpace.AddLine(P1, P2)
L.Move Dbd, Dkt
L.Rotate Dkt, Goc
Else
Dim Points(0 To 9) As Double
Points(0) = O3(0): Points(1) = O3(1) - D / 2
Trang 20Points(2) = Points(0) + T: Points(3) = Points(1)
Points(4) = Points(2): Points(5) = Points(3) + D
Points(6) = Points(0): Points(7) = Points(5)
Points(8) = Points(0): Points(9) = Points(1)
Set PlineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(Points)PlineObj.Move Dbd, Dkt
' hàm cho button thoát
Private Sub cmbthoat_Click()
'hiển thị form tác giả
Private Sub CommandButton2_Click()
Trang 223 PHẦN 3 THỬ BỘI SỐ 3.1 Thông số thử
Sau khi chạy chương trình ta nhập các thông số để vẽ như sau:
Hình 3-1: Thông số chạy thử
3.2 Kết quả chạy thử
Sau khi nhấn nút vẽ ta nhận được kết quả:
Trang 23Hình 3-2: Kết quả chạy thử
3.3 Nhận xét
Kết quả thu được từ việc vẽ bằng chương trình giống với số liệu từ bảngcác thông số ứng với bích đã chọn