Lập trình tự động hóa thiết kế Auto CAD bằng VBA

24 188 0
Lập trình tự động hóa thiết kế Auto CAD bằng VBA

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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ần mề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ười thiế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í chong chó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ăng quản lý, tính toán của ngôn ngữ lập trình VB

Bài tập lớn mơn học: Tự động hóa thiết kế TRƯỜNG ĐẠI HỌC HÀNG HẢI KHOA CƠ KHÍ NGÀNH: CHUYÊN NGÀNH: KỸ THUẬT TÀU THỦY MÁY TÀU THỦY SINH VIÊN: LỚP: G.V HƯỚNG DẪN: HOÀNG VĂN QUANG MTT50–ĐHT TRƯƠNG TIẾN PHÁT BÀI TẬP LỚN ĐỀ TÀI: XÂY DỰNG CHƯƠNG TRÌNH VBA TỰ ĐỘNG ỘBNÍ CGH ĐHƠ IĨCAH O TỐ H ẾHTÉ P K T H I Ế TTKỰ Ế MĐ ẶT N GI T DẾT H E O Sinh viên: Hoàng VănT Quang IÊU CHUẨN JIS (LOẠI 5K) Trang Bài tập lớn mơn học: Tự động hóa thiết kế Mục lục PHẦN 1: GiỚI THIỆU CHUNG .2 1.1 Mở đầu 1.1.1 Lý chọn đề tài 1.1.2 Mục đích đề tài .2 1.1.3 Đối tượng phạm vi nghiên cứu 1.1.4 Ý nghĩa thực tiễn đề tài 1.2 Cơ sở lý thuyết tính tốn 1.2.1 Tổng quan bích 1.2.2 Lý thuyết 1.3 Sơ đồ thuật toán 1.4 Giới thiệu form hướng dẫn sử dụng 1.4.1 Form (bick5k) .6 1.4.2 Form phụ(tác giả) 1.4.3 Form phụ (DHSD) .7 1.5 Kết luận PHẦN 2: CODE LỆNH 2.1 Code cho form 2.2 Hàm cho form hướng dẫn sử dụng 21 PHẦN THỬ BỘI SỐ 22 3.1 Thông số thử .22 3.2 Kết chạy thử .22 3.3 Nhận xét 23 Sinh viên: Hoàng Văn Quang Trang Bài tập lớn môn học: Tự động hóa thiết kế PHẦN 1: GiỚI THIỆU CHUNG 1.1 Mở đầu 1.1.1 Lý chọn đề tài Ngày cơng việc thiết kế đòi hỏi tính hiệu xác cao, cần phải tự động hóa để đạt điều Máy tính thiết bị sử dụng rộng rãi công việc giảng dạy học tập, thuận tiện cho việc tự động hóa thiết kế Trong nhiều phần mềm tự động hóa, phần mềm đươc sử dụng nhiều với người thiết kế autocad, autocad có chương trình tự động hóa cao VBA Với VBA bạn lập trình để vẽ chi tiết từ đơn giản tới phức tạp, quản lý vẽ theo nhu cầu, load, xuất file nhanh chóng, gọn nhẹ Ví dụ: dùng VBA để tự động vẽ mặt bích, bu lơng chí chong chóng tàu thủy hay thiết bị phức tạp máy chính, đường trục… Sở dĩ VBA ứng dụng nhiều đồng hóa câu lệnh VBA Autocad, kết hợp khả vẽ mạnh mẽ Autocad khả quản lý, tính tốn 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ách lập trình chương trình VBA để ứng dụng vào học tập công việc sau Cho phép người sử dụng đẩy nhanh tốc độ vẽ, nâng cao độ xác cơng việc thiết kế 1.1.3 Đối tượng phạm vi nghiên cứu Đối tượng nghiên cứu chương trình VBA, chương trình tự động hóa nằm phần mềm autocad Trong mơi trường học tập phạm vi nghiên cứu đề tài lập trình chương trình đơn giản để vẽ chi tiết không phức tạp tiêu chuẩn hóa 1.1.4Ý nghĩa thực tiễn đề tài VBA giúp cho người thiết kế thao tác nhanh xác nhiều so với thao tác trực tiếp tay để vẽ Qua đẩy nhanh tốc độ cơng việc đảm bảo tính xác Rút ngắn thời gian thiết kế qua tăng suất lao động Sinh viên: Hoàng Văn Quang Trang Bài tập lớn mơn học: Tự động hóa thiết kế 1.2 Cơ sở lý thuyết tính tốn 1.2.1 Tởng quan bích Mặt bích, hay biết đến đĩa bích, gắn với đầu ống sử dụng để kết nối với ống khác Mối liên kết mặt bích tháo lắp cấu trúc chống thấm, kết hợp bích nối, đệm bu lơng Mặt bích nối ốn thép loại mặt bích đặc biệt dùng cho đường ống mặt bích ống nạp - ống xả trang bị Có lỗ khoan mặt bích để bắt bu lơng liên kết mặt bích với Một vòng đệm mặt bích nhằm bảo vệ tránh tượng rò gỉ Ngày người sử dụng ống nhiều sống cơng nghiệp, đặc biệt đóng tàu Do bích nối phát triển để phù hợp với phát triển đường ống Có thể nói ống có mặt đâu mặt bích có mặt đó, từ đường ống dẫn khí, dẫn dầu lớn dài, tới đường ống nhỏ dùng để dẫn nước … Ngày cơng nghiệp đóng tàu sử dụng ống nhiều cho trang trí phát triển bích nối điều bắt buộc Bích nối thường 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 để đảm bảo an tồn xảy cố, đặc biệt bích kiểu thường bích hệ thống chữa cháy tàu, theo cơng ước SOLAR an tồn hỏa hoạn biển Tiêu chuẩn JIS tiêu chuẩn mặt bích ống, người ta đưa số hiệu mặt bích sẵn để tiện cho việc chế tạo sử dụng Trong đề tài nghiên cứu cách vẽ loại mặt bích thuộc tiêu chuẩn này, mặt bích đơi loại 5k Hình 1-1: Sinh viên: Hồng Văn Quang Mặt bích đơi tiêu chuản JIS 5k Trang Bài tập lớn môn học: Tự động hóa thiết kế Mặt bích đơi chi tiết thường dùng hệ thống nước tàu Khi ta muốn công chất đường ống chảy vào hệ thống ta cho mặt bích có lỗ vào trông mối lắp ghép, lỗ thiết kế có đường kính đường kính ống Khi muốn ngắt cơng chất ta quay ngược phía bích lại lắp vào hệ thống, lúc bích ngăn cản trao đổi công chất đường ống qua bích 1.2.2 Lý thuyết Để thiết kế bích đơi ta sử dụng bảng số liệu bích đơi 5k tiêu chuẩn jis sau: Hình 1-2: Sinh viên: Hồng Văn Quang Thơng số mặt bích Trang Bài tập lớn mơn học: Tự động hóa thiết kế Như ta đă đủ số liệu để tính tốn vẽ bích đơi theo tiêu chuẩn jis Để thuận tiện q tŕnh tính tồn kết xuất vẽ ta sử dụng phần mềm VBA AutoCad để thực chương tŕnh 1.3 Sơ đồ thuật tốn Hình 1-3: Sinh viên: Hồng Văn Quang Sơ đồ thuật tốn Trang Bài tập lớn mơn học: Tự động hóa thiết kế 1.4 Giới thiệu form hướng dẫn sử dụng Chương trình đơn giản nên ta cần làm số form 1.4.1 Form (bick5k) Hình 1-4: Form 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 cạnh Combobox4 để lựa chọn phương vẽ click chuột hay nhập giá trị góc Nếu click chuột nhấn nút vẽ chương trình yêu cầu nhập điểm để chọn phương Nếu nhập giá trị góc chương trình hiển thị textbox yêu cầu nhập giá trị góc Nút vẽ để vẽ bích sau lựa chọn đủ thơng số Nút lệnh 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 Sinh viên: Hoàng Văn Quang Trang Bài tập lớn mơn học: Tự động hóa thiết kế 1.4.2 Form phụ(tác giả) Hình 1-5: Form tác giả Form chứa thông tin tác giả, nên người dùng nhấn vào nút tác giả từ form hay từ form DHSD Các nút: Quay lại để trở form DHSD để xem hướng dẫn sử dụng Thố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 chứa thông tin cách thức sử dụng chương trình, nên người dùng nhấn vào nút HDSD từ form hay từ form tác giả Các nút: Quay lại để trở form Sinh viên: Hồng Văn Quang Trang Bài tập lớn mơn học: Tự động hóa thiết kế Tác giả để xem thông tin tác giả Thốt để rời khỏi chương trình 1.5 Kết luận Dù hướng dẫn tận tình giáo viên hướng dẫn vốn hiểu biết VBA AutoCad hạn chế, thời gian thực ngắn chương trình có nhiều khuyết điểm, lỗi Trong q trình sử dụng chương trình có lỗi phát sinh hay ý kiến đóng góp xin liên hệ Hồng Văn Quang - MTT50DHT Tơi xin chân thành cảm ơn! Sinh viên: Hoàng Văn Quang Trang Bài tập lớn mơn học: Tự động hóa thiết kế PHẦN 2: CODE LỆNH 2.1 Code cho form Private Sub ComboBoxpv_Change() Select Case ComboBoxpv.Value Case 0: TextBoxgoc.Visible = False: Labelgoc.Visible = False Case 1: TextBoxgoc.Visible = True: Labelgoc.Visible = True End Select End Sub Private Sub TextBoxgoc_change() If IsNumeric(TextBoxgoc.Value) Then Exit Sub Else A = MsgBox("momen phai la DANG SO, vui long nhap lai!", vbOKOnly, "Thong Bao") TextBoxgoc.BackColor = &H80000001 Exit Sub End If End Sub Private Sub UserForm_initialize() ComboBoxdk.AddItem "10" '0 ComboBoxdk.AddItem "15" '1 ComboBoxdk.AddItem "20" '2 ComboBoxdk.AddItem "25" '3 ComboBoxdk.AddItem "32" '4 ComboBoxdk.AddItem "40" '5 ComboBoxdk.AddItem "50" '6 ComboBoxdk.AddItem "65" '7 ComboBoxdk.AddItem "80" '8 ComboBoxdk.AddItem "100" '9 ComboBoxdk.AddItem "125" '10 ComboBoxdk.AddItem "150" '11 ComboBoxdk.AddItem "200" '12 Sinh viên: Hoàng Văn Quang Trang 10 Bài tập lớn mơn học: Tự động hóa thiết kế ComboBoxdk.AddItem "250" '13 ComboBoxdk.AddItem "300" '14 ComboBoxdk.AddItem "350" '15 ComboBoxdk.AddItem "400" '16 ComboBoxdk.AddItem "450" '17 ComboBoxdk.AddItem "500" '18 ComboBoxdk.Style = fmStyleDropDownList ComboBoxdk.BoundColumn = ComboBoxdk.ListIndex = ComboBoxgkt.AddItem "khong" '0 ComboBoxgkt.AddItem "co" '1 ComboBoxgkt.Style = fmStyleDropDownList ComboBoxgkt.BoundColumn = ComboBoxgkt.ListIndex = ComboBoxhc.AddItem "dung" '0 ComboBoxhc.AddItem "canh" '1 ComboBoxhc.Style = fmStyleDropDownList ComboBoxhc.BoundColumn = ComboBoxhc.ListIndex = ComboBoxpv.AddItem "click chon phuong" '0 ComboBoxpv.AddItem "nhap goc" '1 ComboBoxpv.Style = fmStyleDropDownList ComboBoxpv.BoundColumn = ComboBoxpv.ListIndex = End Sub 'tạo hàm tính sin Function ArcSin(X As Double) As Double ArcSin = Atn(X / Sqr(-X * X + 1)) End Function Sinh viên: Hoàng Văn Quang Trang 11 Bài tập lớn môn học: Tự động hóa thiết kế ' hàm cho button ve Private Sub cmbve_Click() 'thiết lập số pi pi = * Atn(1) 'khai báo biến Dim B As Double Dim D As Double Dim K As Double Dim T As Double Dim H As Double Dim R As Double Dim D1 As Double Dim Kt As Double Dim Hc As Double Dim Pv As Double Dim PlineObj As AcadLWPolyline Dim C As AcadCircle Dim L As AcadLine Dim 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 Sinh viên: Hoàng Văn Quang Trang 12 Bài tập lớn mơn học: Tự động hóa thiết kế Dim 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 liệu vào sang kích thước theo tiêu chuẩn Select Case ComboBoxdk.Value Case 0: D = 41: D1 = 17: K = 55: B = 0: T = 6: H = 12: R = Case 1: D = 46: D1 = 22: K = 60: B = 0: T = 6: H = 12: R = Case 2: D = 51: D1 = 27: K = 65: B = 0: T = 6: H = 12: R = Case 3: D = 61: D1 = 34: K = 75: B = 0: T = 6: H = 12: R = Case 4: D = 71: D1 = 43: K = 90: B = 0: T = 6: H = 15: R = Case 5: D = 78: D1 = 49: K = 95: B = 0: T = 6: H = 15: R = Case 6: D = 88: D1 = 61: K = 105: B = 0: T = 6: H = 15: R = Case 7: D = 113: D1 = 77: K = 130: B = 0: T = 6: H = 15: R = Case 8: D = 124: D1 = 90: K = 145: B = 0: T = 6: H = 19: R = Case 9: D = 144: D1 = 115: K = 165: B = 90: T = 6: H = 19: R = 15 Case 10: D = 179: D1 = 141: K = 200: B = 120: T = 8: H = 19: R = 20 Case 11: D = 209: D1 = 166: K = 230: B = 140: T = 8: H = 19: R = 20 Case 12: D = 255: D1 = 218: K = 280: B = 170: T = 8: H = 23: R = 20 Case 13: D = 320: D1 = 269: K = 345: B = 140: T = 10: H = 23: R = 20 Case 14: D = 365: D1 = 321: K = 390: B = 160: T = 10: H = 23: R = 20 Case 15: D = 408: D1 = 358: K = 435: B = 190: T = 12: H = 25: R = 20 Case 16: D = 468: D1 = 409: K = 495: B = 160: T = 13: H = 25: R = 20 Case 17: D = 528: D1 = 460: K = 555: B = 180: T = 14: H = 25: R = 20 Case 18: D = 578: D1 = 511: K = 605: B = 155: T = 16: H = 25: R = 20 End Select Sinh viên: Hồng Văn Quang Trang 13 Bài tập lớn mơn học: Tự động hóa thiết kế If B = Then B = D1 R = 10 End If Select Case ComboBoxgkt.Value Case 0: Kt = Case 1: Kt = End Select Select Case ComboBoxhc.Value Case 0: Hc = Case 1: Hc = End Select Select Case ComboBoxpv.Value Case 0: Pv = Case 1: Pv = End Select Me.Hide Dim Dkt As Variant Dkt = ThisDrawing.Utility.GetPoint(, "nhap diem de ve ") Dim Dbd(0 To 2) As Double Dbd(0) = 0: Dbd(1) = 0: Dbd(2) = Dim Goc As Double If Pv = Then Dim 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 Sinh viên: Hồng Văn Quang Trang 14 Bài tập lớn mơn học: Tự động hóa thiết kế Else Goc = TextBoxgoc.Text * pi / 180 End If O1(0) = 0: O1(1) = 0: O1(2) = O2(0) = O1(0) + K / 2: O2(1) = O1(1): O2(2) = O3(0) = O1(0) + K + D / + * T: O3(1) = O1(1): O3(2) = O4(0) = O1(0) + K: O4(1) = O1(1): O4(2) = Anpha = ArcSin((R + B / 2) / (R + D / 2)) 'tạo layer Dim LayerObj As AcadLayer Dim LayertypeName As String LayertypeName = "continuous" Set LayerObj = ThisDrawing.Layers.Add("netlien") LayerObj.color = acRed LayerObj.Linetype = LayertypeName On Error Resume Next LayertypeName = "dashdot" 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 Sinh viên: Hoàng Văn Quang Trang 15 Bài tập lớn mơn học: Tự động hóa thiết kế 'thực ghi kích thước If Kt = Then 'thiết lập layer kích thước làm layer hành ThisDrawing.ActiveLayer = ThisDrawing.Layers("kichthuoc") Dim objDimStyle As AcadDimStyle Set objDimStyle = ThisDrawing.DimStyles.Add("newdimstyle") ThisDrawing.SetVariable "DIMSCALE", 'will control size of dim text ThisDrawing.SetVariable "DIMASZ", 2.5 'arrowhead size ThisDrawing.SetVariable "DIMATFIT", 'arrow-text arrangement ThisDrawing.SetVariable "DIMAZIN", '0 suppression before/after angular ThisDrawing.SetVariable "DIMBLK", "" 'special arrow blk ThisDrawing.SetVariable "DIMDEC", 'Sets the number of decimal places ThisDrawing.SetVariable "DIMDLE", '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 extension ThisDrawing.SetVariable "DIMEXO", 'dim offset from origin ThisDrawing.SetVariable "DIMFIT", 'control fit if not enough space ThisDrawing.SetVariable "DIMGAP", 'gap around text ThisDrawing.SetVariable "DIMJUST", 'text placement - above centered ThisDrawing.SetVariable "DIMLFAC", 'length scaling ThisDrawing.SetVariable "DIMTAD", 'text to dim placement - above ThisDrawing.SetVariable "DIMTIH", 'aligned with dim ThisDrawing.SetVariable "DIMTIX", 'force inside ThisDrawing.SetVariable "DIMTMOVE", 'dim moves with text ThisDrawing.SetVariable "DIMTOFL", 'Draw dim line between ext lines ThisDrawing.SetVariable "DIMTOH", 'Aligns text with the dimension line ThisDrawing.SetVariable "DIMTSZ", 'draw arrowheads ThisDrawing.SetVariable "DIMTXT", 3.5 'text height ThisDrawing.SetVariable "DIMTZIN", 12 '0 suppression before/after tol ThisDrawing.SetVariable "DIMUNIT", 'unit format - decimal ThisDrawing.SetVariable "DIMZIN", 12 '0 suppression before/after Sinh viên: Hoàng Văn Quang Trang 16 Bài tập lớn mơn học: Tự động hóa thiết kế objDimStyle.CopyFrom ThisDrawing ThisDrawing.ActiveDimStyle = objDimStyle Location1(0) = K / 4: Location1(1) = D / + * H: Location1(2) = Location2(0) = K / 2: Location2(1) = D / + * H: Location2(2) = Location3(0) = O3(0) + T / 2: Location3(1) = O3(1) - * T - D / 2: Location3(2) =0 Location4(0) = O1(0) + D / 4: Location4(1) = 0: Location4(2) = If Hc = Then Set Dimobj = ThisDrawing.ModelSpace.AddDimAligned(O1, O2, Location1) Dimobj.Move Dbd, Dkt Dimobj.Rotate Dkt, Goc Set Dimobj = ThisDrawing.ModelSpace.AddDimAligned(O1, O4, Location2) Dimobj.Move Dbd, Dkt Dimobj.Rotate Dkt, Goc P1(0) = O4(0) + D / / Sqr(2): P1(1) = O4(1) - D / / Sqr(2): P1(2) = P2(0) = O4(0) - D / / Sqr(2): P2(1) = O4(1) + D / / Sqr(2): P2(2) = Set Dimcir = ThisDrawing.ModelSpace.AddDimDiametric(P1, P2, 3) Dimcir.Move Dbd, Dkt Dimcir.Rotate Dkt, Goc P1(0) = O1(0) + D1 / / Sqr(2): P1(1) = O1(1) - D1 / / Sqr(2): P1(2) = P2(0) = O1(0) - D1 / / Sqr(2): P2(1) = O1(1) + D1 / / Sqr(2): P2(2) = Set Dimcir = ThisDrawing.ModelSpace.AddDimDiametric(P1, P2, 3) Dimcir.Move Dbd, Dkt Dimcir.Rotate Dkt, Goc P1(0) = O2(0) + H / / Sqr(2): P1(1) = O2(1) - H / / Sqr(2): P1(2) = P2(0) = O2(0) - H / / Sqr(2): P2(1) = O2(1) + H / / Sqr(2): P2(2) = Set Dimcir = ThisDrawing.ModelSpace.AddDimDiametric(P1, P2, 3) Dimcir.Move Dbd, Dkt Dimcir.Rotate Dkt, Goc I(0) = O4(0) - (D / + R) * Cos(Anpha): I(1) = O1(1) + B / + R: I(2) = Nx(0) = I(0) + R * Sqr(2) / 2: Nx(1) = I(1) - R * Sqr(2) / 2: I(2) = Sinh viên: Hoàng Văn Quang Trang 17 Bài tập lớn mơn học: Tự động hóa thiết kế Set Dimobj1 = ThisDrawing.ModelSpace.AddDimRadial(I, Nx, 3) Dimobj1.Move Dbd, Dkt Dimobj1.Rotate Dkt, Goc P1(0) = O2(0): P1(1) = O2(1) - B / 2: P1(2) = P2(0) = O2(0): P2(1) = O2(1) + B / 2: P2(2) = Set Dimobj = ThisDrawing.ModelSpace.AddDimAligned(P1, P2, Location4) Dimobj.Move Dbd, Dkt Dimobj.Rotate Dkt, Goc Else P1(0) = O3(0): P1(1) = O3(1) - D / 2: P1(2) = P2(0) = O3(0) + T: P2(1) = O3(1) - D / 2: P2(2) = Set Dimobj = ThisDrawing.ModelSpace.AddDimAligned(P1, P2, Location3) Dimobj.Move Dbd, Dkt Dimobj.Move O3, Dbd Dimobj.Rotate Dkt, Goc End If End If 'Thiết lập lớp hành duongtam ThisDrawing.ActiveLayer = ThisDrawing.Layers("duongtam") If Hc = Then P1(0) = O1(0): P1(1) = O1(1) + D / + T: P1(2) = P2(0) = O1(0): P2(1) = O1(1) - D / - T: P2(2) = Set L = ThisDrawing.ModelSpace.AddLine(P1, P2) L.Move Dbd, Dkt L.Rotate Dkt, Goc P1(0) = O4(0): P1(1) = O4(1) + D / + T: P1(2) = P2(0) = O4(0): P2(1) = O4(1) - D / - T: P2(2) = Set L = ThisDrawing.ModelSpace.AddLine(P1, P2) L.Move Dbd, Dkt L.Rotate Dkt, Goc P1(0) = O1(0) - D / - T: P1(1) = O1(1): P1(2) = Sinh viên: Hoàng Văn Quang Trang 18 Bài tập lớn mơn học: Tự động hóa thiết kế P2(0) = O4(0) + D / + T: P2(1) = O1(1): P2(2) = Set L = ThisDrawing.ModelSpace.AddLine(P1, P2) L.Move Dbd, Dkt L.Rotate Dkt, Goc P1(0) = O2(0): P1(1) = O2(1) + H / + T / 2: P1(2) = P2(0) = O2(0): P2(1) = O2(1) - H / - T / 2: P2(2) = Set L = ThisDrawing.ModelSpace.AddLine(P1, P2) L.Move Dbd, Dkt L.Rotate Dkt, Goc Else P1(0) = O3(0) - T / 2: P1(1) = O3(1): P1(2) = P2(0) = O3(0) + * T / 2: P2(1) = O3(1): P2(2) = Set L = ThisDrawing.ModelSpace.AddLine(P1, P2) L.Move Dbd, Dkt L.Move O3, Dbd L.Rotate Dkt, Goc End If ' vẽ bích 'Thiết lập lớp hành netlien ThisDrawing.ActiveLayer = ThisDrawing.Layers("netlien") If Hc = Then Set C = ThisDrawing.ModelSpace.AddCircle(O1, D1 / 2) C.Move Dbd, Dkt C.Rotate Dkt, Goc Set C = ThisDrawing.ModelSpace.AddCircle(O2, H / 2) C.Move Dbd, Dkt C.Rotate Dkt, Goc Set Arc = ThisDrawing.ModelSpace.AddArc(O1, D / 2, Anpha, * pi - Anpha) Arc.Move Dbd, Dkt Arc.Rotate Dkt, Goc Sinh viên: Hồng Văn Quang Trang 19 Bài tập lớn mơn học: Tự động hóa thiết kế Set Arc = ThisDrawing.ModelSpace.AddArc(O4, D / 2, pi + Anpha, * pi Anpha) Arc.Move Dbd, Dkt Arc.Rotate Dkt, Goc I(0) = O1(0) + (D / + R) * Cos(Anpha): I(1) = O1(1) + B / + R: I(2) = Set Arc = ThisDrawing.ModelSpace.AddArc(I, R, pi + Anpha, * pi / 2) Arc.Move Dbd, Dkt Arc.Rotate Dkt, Goc I(0) = O1(0) + (D / + R) * Cos(Anpha): I(1) = O1(1) - B / - R: I(2) = Set Arc = ThisDrawing.ModelSpace.AddArc(I, R, pi / 2, pi - Anpha) Arc.Move Dbd, Dkt Arc.Rotate Dkt, Goc I(0) = O4(0) - (D / + R) * Cos(Anpha): I(1) = O1(1) + B / + R: I(2) = Set Arc = ThisDrawing.ModelSpace.AddArc(I, R, * pi / 2, * pi - Anpha) Arc.Move Dbd, Dkt Arc.Rotate Dkt, Goc I(0) = O4(0) - (D / + R) * Cos(Anpha): I(1) = O1(1) - B / - R: I(2) = Set Arc = ThisDrawing.ModelSpace.AddArc(I, R, Anpha, pi / 2) Arc.Move Dbd, Dkt Arc.Rotate Dkt, Goc P1(0) = O1(0) + (D / + R) * Cos(Anpha): P1(1) = O1(1) + B / 2: P1(2) = P2(0) = O4(0) - (D / + R) * Cos(Anpha): P2(1) = O1(1) + B / 2: P2(2) = Set L = ThisDrawing.ModelSpace.AddLine(P1, P2) L.Move Dbd, Dkt L.Rotate Dkt, Goc P1(0) = O1(0) + (D / + R) * Cos(Anpha): P1(1) = O1(1) - B / 2: P1(2) = P2(0) = O4(0) - (D / + R) * Cos(Anpha): P2(1) = O1(1) - B / 2: P2(2) = Set 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 / Sinh viên: Hoàng Văn Quang Trang 20 Bài tập lớn mơn học: Tự động hóa thiết kế Points(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 PlineObj.Move O3, Dbd PlineObj.Rotate Dkt, Goc End If ' xác định giá trị goc nghieng Dim zxc, zxc1 As Integer zxc = ThisDrawing.ModelSpace.Count For zxc1 = To zxc - ThisDrawing.ModelSpace.Item(zxc1).Linetype = "BYLAYER" ThisDrawing.ModelSpace.Item(zxc1).Lineweight = acLnWtByLayer ThisDrawing.ModelSpace.Item(zxc1).Update Next zxc1 ZoomExtents Me.Show End Sub ' hàm cho button thoát Private Sub cmbthoat_Click() End End Sub 'hiển thị form hdsd Private Sub CommandButton1_Click() Me.Hide hdsd.Show End Sub 'hiển thị form tác giả Private Sub CommandButton2_Click() Sinh viên: Hồng Văn Quang Trang 21 Bài tập lớn mơn học: Tự động hóa thiết kế Me.Hide tacgia.Show End Sub 2.2 Hàm cho form hướng dẫn sử dụng 'quay form Private Sub CommandButton1_Click() Me.Hide bick5k.Show End Sub 'thốt Private Sub CommandButton2_Click() End End Sub 'đến form tác giả Private Sub CommandButton3_Click() Me.Hide tacgia.Show End Sub Sinh viên: Hoàng Văn Quang Trang 22 Bài tập lớn môn học: Tự động hóa thiết kế PHẦN THỬ BỘI SỐ 3.1 Thơng số thử Sau chạy chương trình ta nhập thơng số để vẽ sau: Hình 3-1: Thơng số chạy thử 3.2 Kết chạy thử Sau nhấn nút vẽ ta nhận kết quả: Sinh viên: Hồng Văn Quang Trang 23 Bài tập lớn mơn học: Tự động hóa thiết kế 20 10 R20 Ø179 Ø19 12 Ø141 Hình 3-2: Kết chạy thử 3.3 Nhận xét Kết thu từ việc vẽ chương trình giống với số liệu từ bảng thơng số ứng với bích chọn Sinh viên: Hoàng Văn Quang Trang 24 ... tiện cho việc tự động hóa thiết kế Trong nhiều phần mềm tự động hóa, phần mềm đươc sử dụng nhiều với người thiết kế autocad, autocad có chương trình tự động hóa cao VBA Với VBA bạn lập trình để vẽ... dùng VBA để tự động vẽ mặt bích, bu lơng chí chong chóng tàu thủy hay thiết bị phức tạp máy chính, đường trục… Sở dĩ VBA ứng dụng nhiều đồng hóa câu lệnh VBA Autocad, kết hợp khả vẽ mạnh mẽ Autocad... việc thiết kế 1.1.3 Đối tượng phạm vi nghiên cứu Đối tượng nghiên cứu chương trình VBA, chương trình tự động hóa nằm phần mềm autocad Trong mơi trường học tập phạm vi nghiên cứu đề tài lập trình

Ngày đăng: 10/07/2019, 21:40

Từ khóa liên quan

Mục lục

  • 1 PHẦN 1: GiỚI THIỆU CHUNG

    • 1.1 Mở đầu

      • 1.1.1 Lý do chọn đề tài.

      • 1.1.2 Mục đích đề tài.

      • 1.1.3 Đối tượng và phạm vi nghiên cứu.

      • 1.1.4 Ý nghĩa thực tiễn của đề tài.

      • 1.2 Cơ sở lý thuyết tính toán

        • 1.2.1 Tổng quan về bí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 jis sau:

          • 1.3 Sơ đồ thuật toán

          • 1.4 Giới thiệu các form và hướng dẫn sử dụng

            • 1.4.1 Form chính (bick5k)

            • 1.4.2 Form phụ(tác giả)

            • 1.4.3 Form phụ (DHSD)

            • 1.5 Kết luận

            • 2 PHẦN 2: CODE LỆNH

              • 2.1 Code cho form chính

              • 2.2 Hàm cho form hướng dẫn sử dụng

              • 3 PHẦN 3 THỬ BỘI SỐ

                • 3.1 Thông số thử

                • 3.2 Kết quả chạy thử

                • 3.3 Nhận xét

Tài liệu cùng người dùng

Tài liệu liên quan