phantuhuong 227 Báo cáo bài đăng Đã đăng Tháng 6 16, 2008 Do nhu cầu tìm hiểu về liên kết dữ liệu giữa Excel và AutoCad, tôi xin giới thiệu mô hình liên kết giữa chúng. Tôi chỉ dẫn cách thực hiện từ VBA Excel và VBA AutoCad để các bạn có thể so sánh, tìm hiểu mối liên kết giữa 2 môi trường một cách toàn diện. Tóm tắt: Bài báo này trình bày khả năng tự động hoá trao đổi dữ liệu giữa Excel và AutoCad bởi chức năng Automation của ngôn ngữ lập trình VBA (Visual Basic for Applications) sẵn có trong chúng. Ứng dụng hiệu quả này không chỉ trong lĩnh vực Địa chất công trình (ĐCCT) mà còn hiệu quả đối với các bài toán kỹ thuật khác hay sử dụng Excel và AutoCad, rút ngắn đáng kể thời gian thực hiện và đảm bảo kết quả chính xác. 1. Đặt vấn đề VBA là một ngôn ngữ lập trình hướng đối tượng có khả năng phát triển ứng dụng mạnh mẽ với nhiều tính năng phong phú. VBA được tích hợp trong môi trường Office và AutoCad với các chức năng gần tương tự nhau (hình 1, 2). Hình 1: Cửa sổ VBA trong Excel Hình 2: Cửa sổ VBA trong AutoCad Hình 3: Giới thiệu công nghệ COM trong trang web của tập đoàn Microsoft Chức năng Automation của VBA là một dạng công nghệ COM (Component Object Model) trong gia đình Microsoft Window, cho phép giao tiếp (hay truyền thông) giữa các phần mềm với nhau. COM là kiến trúc lập trình được phát triển bởi Microsoft, mục đích là tạo ra một công nghệ chuẩn cho phép xây dựng chương trình theo mô hình lắp ghép (component) hay sử dụng các sản phẩm đã được hoàn thiện từ trước theo tiêu chuẩn COM. Automation cho phép một ứng dụng có thể điều khiển các đối tượng trong ứng dụng khác, hoặc gọi các đối tượng mà có thể thực thi bằng những tập lệnh. Ví dụ như có thể điều khiển Excel từ Word hay AutoCad (và ngược lại) giống như thực hiện trực tiếp trên ứng dụng đó. Tại sao tôi chỉ đề cập việc trao đổi dữ liệu giữa hai phần mềm Excel và AutoCad? Bởi vì Excel là phần mềm chuyên về bảng tính và biểu đồ với khả năng tính toán, xử lý dữ liệu tuyệt vời nhất hiện nay nhưng lại yếu về phần đồ hoạ. AutoCad lại là phần mềm vào hàng đầu lĩnh vực đồ hoạ nhưng lại yếu về khả năng tính toán, việc xử lý và quản lý dữ liệu bị hạn chế. Trong khi đó, cả hai phần mềm này đều được sử dụng rộng rãi trong các ngành kỹ thuật, đặc biệt là trong ngành địa chất, trắc địa, mỏ, xây dựng, giao thông, kiến trúc, chế tạo máy,... Việc tạo mối liên kết giữa hai phần mềm trên sẽ khắc phục những mặt hạn chế của chúng, nâng cao khả năng khai thác các phần mềm đó trong chuyên môn. Bản thân hai phần mềm trên đều được tích hợp ngôn ngữ lập trình ứng dụng VBA, một dạng ngôn ngữ lập trình Visual Basic (VB) dễ học, rất phổ biến và đang được giảng dạy trong môn Tin học đại cương của trường Đại học Mỏ Địa chất. Thông thường, bài toán trong lĩnh vực kỹ thuật được giải quyết theo 3 bước như hình 5. Như trong hình 5, các bước (1), (2) thực hiện trong Excel, còn bước (3) sẽ thực hiện trong AutoCad. Bài toán vẽ hình trụ hố khoan, mặt cắt ĐCCT hay bài toán thiết kế khoan nổ mìn (lĩnh vực khai thác mỏ), vẽ bình đồ trắc dọc (lĩnh vực đo đạc),... có thể sử dụng mô hình trên. Nếu chỉ sử dụng các công cụ sẵn có hoặc lập trình VBA (riêng từng ứng dụng) thì việc tự động hoá chỉ có thể đạt được một phần, còn từ bước (2) sang bước (3) không thực hiện được. Đặc biệt là những bài toán có số lượng dữ liệu lớn sẽ gây vất vả và tốn thời gian để thực hiện công việc trên, trong khi đó sẽ rất đơn giản khi dùng chức năng Automation. Còn nếu chỉ sử dụng VBA AutoCad, VB6, VB.NET, C,... điều khiển AutoCad để thực hiện sẽ phức tạp vì phải xây dựng toàn bộ chương trình tính theo ngôn ngữ lập trình đó, điều này hoàn toàn không dễ thực hiện. 2. Kết quả nghiên cứu Trong khuôn khổ bài báo, tôi lấy ví dụ về nội dung chính của chương trình lập hình trụ hố khoan. Để thực hiện được chương trình này, cần phải hiểu được các đối tượng cùng với thuộc tính, phương thức của chúng trong Excel và AutoCad. Công việc xây dựng chương trình được thực hiện đồng thời trong VBA Excel và VBA AutoCad để có sự so sánh trong từng ứng dụng. Các bước xây dựng chương trình như sau: 1 5 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
phantuhuong 227 Báo cáo bài đăng Đã đăng Tháng 6 16, 2008 Bước 1: Khai báo tham chiếu đến thư viện ứng dụng Đầu tiên, cần phải khai báo tham chiếu đến thư viện ứng dụng cần thực hiện bằng cách chọn References trong menu Tools của cửa sổ VBA (hình 1, 2) theo: - Với VBA Excel: chọn AutoCad 2004 Type Library (hình 6) - Với VBA AutoCad: chọn Microsoft Excel 11 Object Library (hình 7) Hình 6: Tham chiếu tới thư viện AutoCad từ VBA trong Excel Giá trị số trong các tham chiếu trên phụ thuộc vào phiên bản Office và AutoCad nên có thể khác nhau giữa các máy tính, ví dụ trên sử dụng AutoCad 2004 và Office 2003. Khi đã khai báo tham chiếu như trên, thư viện đối tượng Excel (hoặc AutoCad) dễ dàng được hiển thị trong cửa sổ VBA AutoCad (hoặc Excel) bởi chức năng trợ giúp Auto List Members. Công việc này rất hữu ích giúp chúng ta dễ dàng điều khiển ứng dụng này từ VBA của ứng dụng khác giống như thực hiện từ chính bản thân chúng. Bước 2: Xây dựng bảng nhập dữ liệu đầu vào trong Excel Số liệu nhập thực hiện trên bảng tính Excel bao gồm số hiệu, độ sâu, tên các lớp đất đá cùng với ký hiệu địa tầng, tỷ lệ đứng,...(hình 8). Ngoài ra, có thể sử dụng các chức năng sẵn có, các hàm và thủ tục trong VBA Excel để hoàn thiện bảng tính. Hình 7: Tham chiếu tới thư viện Excel từ VBA trong AutoCad Hình 8: Bảng nhập giá trị đầu vào và hỗ trợ tên ký hiệu lớp trong Excel Bước 3: Xây dựng chương trình xử lý, chuyển đổi dữ liệu giữa Excel và AutoCad Đây là nội dung chính của chương trình, trước hết cần phải xây dựng thủ tục khởi động môi trường ứng dụng và xác định đối tượng tham chiếu. Hình 9 và 10 thể hiện nội dung thủ tục khởi động ứng dụng Excel và AutoCad. Các thủ tục đó đều sử dụng phương thức GetObject và CreadObject để tham chiếu và tạo đối tượng ứng dụng Automation để có thể truy cập, điều khiển. Đối tượng của ứng dụng tham chiếu đến là AcadApp (AcadApplication) hay ExcelApp (Excel.Application) mà chúng ta có kết nối và trao đổi dữ liệu giữa hai ứng dụng Excel và AutoCad (hình 11). Hình 9: Khởi động AutoCad từ VBA Excel Hình 10: Khởi động Excel từ VBA AutoCad Hình 11: Mô hình kết nối giữa Excel và AutoCad qua đối tượng Automation Khi ứng dụng đã được mở, chúng ta có thể tham chiếu đến các đối tượng bên trong ExcelApp (hay AcadApp) như mô tả phía dưới. - VBA Excel: Ví dụ như để tham chiếu đến đối tượng TextStyle có tên "Standard" trong bản vẽ AutoCad đang kích hoạt (ActiveDocument) thì sử dụng dòng lệnh AcadApp.ActiveDocument.TextStyles.Item("Standard") - VBA AutoCad: Ví dụ như để tham chiếu đến đối tượng ô B2 trong worksheet "Khai bao" thì sử dụng dòng lệnh ExcelApp.Worksheets("Khai bao").Range("B2") Hai dòng lệnh trên sử dụng đối tượng AcadApp và ExcelApp để tham chiếu tới, còn các đối tượng bên trong cùng với phương thức, thuộc tính của chúng được sử dụng như bình thường. Sau đó tiến hành xây dựng thủ tục chuyển dữ liệu từ Excel sang AutoCad từ VBA Excel (hay AutoCad). Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
phantuhuong 227 Báo cáo bài đăng Đã đăng Tháng 6 16, 2008 Để so sánh giữa 2 môi trường, tôi thực hiện bài toán đơn giản nhất cho dễ hiểu. Hai thủ tục viết trong Excel và AutoCad như sau: Trong Excel Public AcadApp As AcadApplication Sub Hinh_Tru_Excel() Dim i As Integer Dim AcadMo As AcadModelSpace Dim AcadUt As AcadUtility Dim DiemDauP As Variant 'Diem dau tien de ve Dim DiemBaoP(0 To 11) As Double 'Diem bao phan to mat cat 'Khai bao ghi ky hieu Ten lop Dim GhiTenlopP(0 To 2) As Double Dim Tenlop As String Dim TenlopT As AcadText 'Khai bao ghi do sau lop Dim GhiDosauP(0 To 2) As Double Dim DosauT As AcadText 'Khai bao To mat cat Dim MatcatH As AcadHatch Dim VongbaoPL(0) As AcadPolyline 'Khai bao noi dung Hinh tru Dim HinhTruP(0 To 2) As Double Dim HinhTruT As AcadText 'Khai bao ty le dung Hinh tru Dim TLdung As Single Dim TLdungP(0 To 2) As Double Dim TLdungT As AcadText 'Khai bao chieu rong cua phan To ky hieu dia tang va Pi Const Chieurong = 10: Const Pi = 3.14159 '''''''''''''''''''''''''''''''''''''''''''''''''''''''' Call KhoidongAutoCad 'Thiet lap font ".VnArial" cho kieu "Standard" Set TxtStyleObj = AcadApp.ActiveDocument.TextStyles.Item("Standard") TxtStyleObj.SetFont ".VnArial", False, False, 0, 34 'Xac dinh Ty le dung TLdung = Val(ThisWorkbook.Sheets("Khai bao").Range("J3")) '''''''''''''''''''''''''''''''''''''''''''''''''''''''' Set AcadMo = AcadApp.ActiveDocument.ModelSpace Set AcadUt = AcadApp.ActiveDocument.Utility DiemDauP = AcadUt.GetPoint(, "Vao vi tri dau tien:") 'Ghi noi dung ten Hinh tru va Ty le dung HinhTruP(0) = DiemDauP(0) + 8 HinhTruP(1) = DiemDauP(1) + 4 Set HinhTruT = AcadMo.AddText("HINH TRU HO KHOAN", HinhTruP, 1.5) TLdungP(0) = HinhTruP(0) + 5 TLdungP(1) = HinhTruP(1) - 2.5 Set TLdungT = AcadMo.AddText("Tû lÖ ®øng: 1/" & TLdung, TLdungP, 1) TLdungT.ObliqueAngle = 0.15 DiemBaoP(0) = DiemDauP(0) DiemBaoP(1) = DiemDauP(1) 'Tao vong lap duyet qua tung lop With ThisWorkbook.Worksheets("Khai bao").Range("B2") i = 1 Do 'Xac dinh do chenh sau giua cac lop dat Chenhsau = (.Offset(i - 1, 1) - .Offset(i, 1)) * 1000 / TLdung 'Xac dinh cac diem bao va ve duong Polyline DiemBaoP(3) = DiemBaoP(0) + Chieurong: DiemBaoP(4) = DiemBaoP(1) DiemBaoP(6) = DiemBaoP(3): DiemBaoP(7) = DiemBaoP(4) + Chenhsau DiemBaoP(9) = DiemBaoP(6) - Chieurong: DiemBaoP(10) = DiemBaoP(7) Set VongbaoPL(0) = AcadMo.AddPolyline(DiemBaoP) VongbaoPL(0).Closed = True 'Kep kin duong Polyline VongbaoPL(0).Color = acRed 'Ghi ten cac lop dat GhiTenlopP(0) = DiemBaoP(3) + 2 GhiTenlopP(1) = DiemBaoP(4) + Chenhsau / 2 Tenlop = "Líp " & .Offset(i, 0) & ": " & .Offset(i, 2) Set TenlopT = AcadMo.AddText(Tenlop, GhiTenlopP, 0.8) 'Ghi do sau lop GhiDosauP(0) = DiemBaoP(6) + 0.5 GhiDosauP(1) = DiemBaoP(7) Set DosauT = AcadMo.AddText(FormatNumber(.Offset(i, 1), 1), GhiDosauP, 1) DosauT.Color = acRed 'To ky hieu mat cat dia tang Set MatcatH = AcadMo.AddHatch(1, .Offset(i, 4), True) MatcatH.PatternScale = .Offset(i, 5) MatcatH.PatternAngle = .Offset(i, 6) * Pi / 180 MatcatH.AppendOuterLoop (VongbaoPL) MatcatH.Evaluate: MatcatH.Update 'Gan diem de sang lop moi DiemBaoP(0) = DiemBaoP(9) DiemBaoP(1) = DiemBaoP(10) i = i + 1 Loop Until IsEmpty(.Offset(i, 0)) End With AcadApp.ZoomAll 'Xoa bo bien doi tuong Set AcadApp = Nothing Set AcadMo = Nothing Set AcadUt = Nothing End Sub Trong AutoCad Public ExcelApp As Excel.Application Public Const Tenfile = "D:\Khoahoc2008\Hinhtru.xls" Sub VeHinhTru_AutoCad() Dim i As Integer Dim AcadMo As AcadModelSpace Dim AcadUt As AcadUtility Dim DiemDauP As Variant 'Diem dau tien de ve Dim DiemBaoP(0 To 11) As Double 'Diem bao phan to mat cat 'Khai bao ghi ky hieu Ten lop Dim GhiTenlopP(0 To 2) As Double Dim Tenlop As String Dim TenlopT As AcadText 'Khai bao ghi do sau lop Dim GhiDosauP(0 To 2) As Double Dim DosauT As AcadText 'Khai bao To mat cat Dim MatcatH As AcadHatch Dim VongbaoPL(0) As AcadPolyline 'Khai bao noi dung Hinh tru Dim HinhTruP(0 To 2) As Double Dim HinhTruT As AcadText 'Khai bao ty le dung Hinh tru Dim TLdung As Single Dim TLdungP(0 To 2) As Double Dim TLdungT As AcadText 'Khai bao chieu rong cua phan To ky hieu dia tang va Pi Const Chieurong = 10: Const Pi = 3.14159 '''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'Khoi dong Excel Call KhoidongExcel TLdung = Val(ExcelApp.Sheets("Khai bao").Range("J3")) 'Thiet lap font ".VnArial" cho kieu "Standard" Set TxtStyleObj = ActiveDocument.TextStyles.Item("Standard") TxtStyleObj.SetFont ".VnArial", False, False, 0, 34 '''''''''''''''''''''''''''''''''''''''''''''''''''''''' Set AcadMo = ActiveDocument.ModelSpace Set AcadUt = ActiveDocument.Utility DiemDauP = AcadUt.GetPoint(, "Vao vi tri dau tien:") 'Ghi noi dung ten Hinh tru va Ty le dung HinhTruP(0) = DiemDauP(0) + 8 HinhTruP(1) = DiemDauP(1) + 4 Set HinhTruT = AcadMo.AddText("HINH TRU HO KHOAN", HinhTruP, 1.5) TLdungP(0) = HinhTruP(0) + 5 TLdungP(1) = HinhTruP(1) - 2.5 Set TLdungT = AcadMo.AddText("Tû lÖ ®øng: 1/" & TLdung, TLdungP, 1) TLdungT.ObliqueAngle = 0.15 DiemBaoP(0) = DiemDauP(0) DiemBaoP(1) = DiemDauP(1) With ExcelApp.Worksheets("Khai bao").Range("B2") 'Tao vong lap qua tung diem i = 1 Do 'Xac dinh do chenh sau giua cac lop dat Chenhsau = (.Offset(i - 1, 1) - .Offset(i, 1)) * 1000 / TLdung 'Xac dinh cac diem bao va ve duong Polyline DiemBaoP(3) = DiemBaoP(0) + Chieurong: DiemBaoP(4) = DiemBaoP(1) DiemBaoP(6) = DiemBaoP(3): DiemBaoP(7) = DiemBaoP(4) + Chenhsau DiemBaoP(9) = DiemBaoP(6) - Chieurong: DiemBaoP(10) = DiemBaoP(7) Set VongbaoPL(0) = AcadMo.AddPolyline(DiemBaoP) VongbaoPL(0).Closed = True 'Kep kin duong Polyline VongbaoPL(0).color = acRed 'Ghi ten cac lop dat GhiTenlopP(0) = DiemBaoP(3) + 2 GhiTenlopP(1) = DiemBaoP(4) + Chenhsau / 2 Tenlop = "Líp " & .Offset(i, 0) & ": " & .Offset(i, 2) Set TenlopT = AcadMo.AddText(Tenlop, GhiTenlopP, 0.8) 'Ghi do sau lop GhiDosauP(0) = DiemBaoP(6) + 0.5 GhiDosauP(1) = DiemBaoP(7) Set DosauT = AcadMo.AddText(FormatNumber(.Offset(i, 1), 1), GhiDosauP, 1) DosauT.color = acRed 'To ky hieu mat cat dia tang Set MatcatH = AcadMo.AddHatch(1, .Offset(i, 4), True) MatcatH.PatternScale = .Offset(i, 5) MatcatH.PatternAngle = .Offset(i, 6) * Pi / 180 MatcatH.AppendOuterLoop (VongbaoPL) MatcatH.Evaluate: MatcatH.Update 'Gan diem de sang lop moi DiemBaoP(0) = DiemBaoP(9) DiemBaoP(1) = DiemBaoP(10) i = i + 1 Loop Until IsEmpty(.Offset(i, 0)) End With ZoomAll 'Xoa bo bien doi tuong Set ExcelApp = Nothing Set AcadMo = Nothing Set AcadUt = Nothing End Sub Các bạn sẽ thấy hai thủ tục trên giống nhau như 2 chị em sinh đôi! Chính vì vậy bạn sẽ không bị bỡ ngỡ khi chuyển đổi môi trường lập trình VBA Hình 12: Kết quả vẽ hình trụ hố khoan và một số đối tượng vẽ chính Một số đối tượng chính trong thủ tục trên được mô tả trong kết quả vẽ hình trụ hố khoan tại hình 12. Trong đó, những đối tượng trong AutoCad quy ước có đuôi chữ hoa P là point, PL là polyline, T là text, L là line,... 3. Kết luận - Chức năng Automation giúp chúng ta xây dựng các chương trình có khả năng tự động hoá trao đổi dữ liệu giữa các môi trường khác nhau. Sự kết hợp giữa Excel, AutoCad cùng với ngôn ngữ lập trình VBA tích hợp bên trong có thể giải quyết được nhiều bài toán phức tạp khác nhau trong lĩnh vực kỹ thuật. - Giống như VB6, VBA là ngôn ngữ lập trình tiện dụng phát triển trong nhiều ứng dụng, có khả năng ứng dụng mạnh mẽ trong nhiều ngành nghề, cần được quan tâm đúng mức trong việc dạy và học tin học ứng dụng không chuyên trong các trường Đại học. 4 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
phantuhuong 227 Báo cáo bài đăng Đã đăng Tháng 6 16, 2008 Ghi chú thêm: - Khởi động Excel từ AutoCad nhanh hơn nhiều so với AutoCad từ Excel (thế mới bực chứ ). - Để linh hoạt hơn, các bạn có thể thay các đối tượng trên bằng Object để không phải phụ thuộc đời các phiên bản Excel, AutoCad (không cần khai báo). - Là cơ sở cho việc phát triển dạng trao đổi dữ liệu giữa các môi trường khác như VB6 với Office, VB6 với AutoCad,... Để hiểu hơn thì bạn copy thư mục dưới đây vào ổ D nhé (nếu không thì đường dẫn sai ---> báo lỗi). Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
tranchan 98 Báo cáo bài đăng Đã đăng Tháng 6 16, 2008 Nếu ko có gì trở ngại mong bác post luôn bộ file cho anh em ngâm cứu thì biêt ơn rất nhiều Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
phantuhuong 227 Báo cáo bài đăng Đã đăng Tháng 6 16, 2008 Nếu ko có gì trở ngại mong bác post luôn bộ file cho anh em ngâm cứu thì biêt ơn rất nhiều Phần tài liệu tải xuống đây: http://www.cadviet.com/upfiles/Khoahoc2008_1.rar 5 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
xuanhai 6 Báo cáo bài đăng Đã đăng Tháng 6 17, 2008 sao tui thu mai ma ko duoc vay ,lam on noi ro hon duoc ko Chép file vào ổ D, mở Excel, nhấn nút là chạy thôi. Đơn giản mà. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
phantuhuong 227 Báo cáo bài đăng Đã đăng Tháng 6 26, 2008 Rất cần ý kiến đóng góp để hoàn thiện (bài báo khoa học mà) mà chưa thấy bác nào phản hồi gì cả? Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Jin Yong 337 Báo cáo bài đăng Đã đăng Tháng 7 10, 2008 Rất cần ý kiến đóng góp để hoàn thiện (bài báo khoa học mà) mà chưa thấy bác nào phản hồi gì cả? Bác phantuhuong đã để câu hỏi này rất lâu, bản thân Jin cũng thấy rất khó mà đưa ra ý kiến gì khác Các ví dụ bác đưa ra đã cho thấy khả năng của VBA trong việc liên kết các loại dữ liệu và sử dụng các hàm hỗ trợ để tạo được nhiều ứng dụng hữu ích. Mặt cắt địa chất rõ ràng là một ví dụ cụ thể và có tính ứng dụng trong thực tế, khi đi sâu vào nghiên cứu chắc chắc sẽ đem lại nhiều ứng dụng có sức mạnh hơn nữa Tuy nhiên có một nhược điểm sẽ gây khó khăn cho các bạn mới bắt đầu vào công tác lập trình VBA cho CAD, đó là phải tìm hiểu được các hàm hỗ trợ Ví dụ: Set AcadMo = AcadApp.ActiveDocument.ModelSpace Set AcadUt = AcadApp.ActiveDocument.Utility DiemDauP = AcadUt.GetPoint(, "Vao vi tri dau tien:") Trong đoạn mã lấy ra từ chương trình của bác, thì nguyên 3 dòng này đã là 3 dòng rất lạ mắt, tất nhiên tìm hiểu nó là việc bắt buộc của các đồng chí muốn viết các ứng dụng, nhưng nó không dễ dàng cho những người chỉ muốn thử thôi Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
phantuhuong 227 Báo cáo bài đăng Đã đăng Tháng 7 12, 2008 Cám ơn anh Jin Yong, đây là kiến thức tương liên quan đến cả VBA trong Excel và AutoCad nên muốn sử dụng thì phải nắm được cách thức lập trình trong 2 môi trường này. Hiện nay, môn Tự động hoá thiết kế cầu đường của trường ĐH GTVT đang dạy về nội dung này. 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
bisok2 0 Báo cáo bài đăng Đã đăng Tháng 9 21, 2008 Cảm ơn bạn rất nhiều đã chia sẻ kinh nghiệm! mình rất thích làm những ứng dụng như thế này nhưng vì kiến thức về lập trình quá nông cạn nên không thể làm nổi nếu có điều kiện mong bạn chỉ dạy thêm nhân đây mình muốn hỏi có cách nào để đọc hoặc ghi một file định dạng MDB trong VBA của ACAD được không? xin cảm ơn bạn trước :) :) Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
vndesperados 254 Báo cáo bài đăng Đã đăng Tháng 9 22, 2008 Cảm ơn bạn rất nhiều đã chia sẻ kinh nghiệm! mình rất thích làm những ứng dụng như thế này nhưng vì kiến thức về lập trình quá nông cạn nên không thể làm nổi nếu có điều kiện mong bạn chỉ dạy thêmnhân đây mình muốn hỏi có cách nào để đọc hoặc ghi một file định dạng MDB trong VBA của ACAD được không? xin cảm ơn bạn trước :) :) MDB là một file Cơ Sở Dữ Liệu được tạo bởi chương trình MS Access (Access Database - 2003 and earlier). Trong một file MDB thông thường sẽ có các table, diagram, và có cả các macro, function, sub viết bằng VBA. Ở đây chúng ta có lẽ chỉ quan tâm đến dữ liệu của file MDB với các table. Và muốn thao tác được với file MDB thì chúng ta cần tên các bảng, cấu trúc các table, kiểu dữ liệu các fields trong table... Về việc viết code bằng VBA để thạo tác với file MDB cũng giống như code VB với bất kỳ một SCDL nào Bạn có thể tham khảo ở các URL sau: http://www.functionx.com/vbaccess/Lesson04d.htm http://www.java2s.com/Code/VBA-Excel-Acces...talogAccess.htm Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
vndesperados 254 Báo cáo bài đăng Đã đăng Tháng 9 22, 2008 Rất cần ý kiến đóng góp để hoàn thiện (bài báo khoa học mà) mà chưa thấy bác nào phản hồi gì cả? Xin lỗi bác, bác đặc tiêu đề bài báo khoa học nghe to tát quá nên không dám đọc vì sợ không hiểu. Từ đầu năm 2005 khi làm việc ở bộ phận phát triển ứng dụng của Phân viện Quy họach đô thị Nông Thôn Miền Nam, chúng tôi đã phát triển một ứng dụng được gọi là Standarising symbol system for urban planning - Chuẩn hóa hệ thống ký hiệu trong bản vẽ quy họach Trong này chúng tôi làm hòan tòan bằng VBA với CSDL là MS Access, các report làm bằng Excel... Tuy nhiên tôi thấy nó có rất nhiều hạn chế. Không hòan tòan tương thích với tất cả các phiên bản CAD cũng như phiên bản MS Office hoặc thiếu file DLL của Windows ... Không có ý chỉ trích gì bác nhưng tôi nghĩ trong diễn đàn này không nhiều người có thể thử (chỉ mới thử, chưa nói là hiểu...) được cái ứng dụng của bác. Vậy nên tôi nghĩ bác nên giúp mọi người tiếp cận với VBA từ những VD đơn giản thôi. Bác thả một cái bom xuống, mọi người lóa mắt với ù tai hết. :) http://www.java2s.com/Code/VBA-Excel-Acces...atalogExcel.htm Còn nói về AutoCAD với Excel thì mọi người có thể xem thông tin tại đây http://www.cadig.com/products/ http://www.cadtool.net/ Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
phantuhuong 227 Báo cáo bài đăng Đã đăng Tháng 9 22, 2008 Xin lỗi bác, bác đặc tiêu đề bài báo khoa học nghe to tát quá nên không dám đọc vì sợ không hiểu. Từ đầu năm 2005 khi làm việc ở bộ phận phát triển ứng dụng của Phân viện Quy họach đô thị Nông Thôn Miền Nam, chúng tôi đã phát triển một ứng dụng được gọi là Standarising symbol system for urban planning - Chuẩn hóa hệ thống ký hiệu trong bản vẽ quy họach Trong này chúng tôi làm hòan tòan bằng VBA với CSDL là MS Access, các report làm bằng Excel... Tuy nhiên tôi thấy nó có rất nhiều hạn chế. Không hòan tòan tương thích với tất cả các phiên bản CAD cũng như phiên bản MS Office hoặc thiếu file DLL của Windows ... Không có ý chỉ trích gì bác nhưng tôi nghĩ trong diễn đàn này không nhiều người có thể thử (chỉ mới thử, chưa nói là hiểu...) được cái ứng dụng của bác. Vậy nên tôi nghĩ bác nên giúp mọi người tiếp cận với VBA từ những VD đơn giản thôi. Bác thả một cái bom xuống, mọi người lóa mắt với ù tai hết. :) http://www.java2s.com/Code/VBA-Excel-Acces...atalogExcel.htm Còn nói về AutoCAD với Excel thì mọi người có thể xem thông tin tại đây http://www.cadig.com/products/ http://www.cadtool.net/ Cám ơn anh vndesperados đã góp ý. Mục tiêu của bài này là xây dựng phương thức trao đổi dữ liệu tự động giữa 2 môi trường Excel và AutoCad và hiểu hơn về bản chất đó. Có nhiều người làm được và còn rất nhiều người chưa làm được công việc đó cho dù rất cần. Trong khi đó tài liệu hướng dẫn trên mạng thì rất hạn chế, hướng dẫn rất sơ sài. Với bài này, ai mới học VBA thì cũng khó hiểu thật, nhưng đã có 1 chút kiến thức VBA Excel và Cad thì tôi tin là cũng không khó gì cả. Hình ảnh đầy đủ, mã nguồn mở, các bước thực hiện được giải thích cụ thể, và quan trọng nhất là không phải ai cũng chia sẻ kiến thức của mình. Tôi cũng như phần lớn thành viên đều không phải là dân lập trình chuyên nghiệp nhưng chỉ cần khai thác ở mức độ đó là tốt rồi. Còn cái đo đỏ ở trên thì bài 4 tôi đã đề cập, không can thiệp quá sâu vào Excel hay Cad thì biến Object giúp hạn chế giới hạn các version. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
tranchan 98 Báo cáo bài đăng Đã đăng Tháng 10 29, 2008 Sao mình thử chạy chuơng trình vẽ hình trụ sao ko chạy đc nhỉ ??? Nó báo lỗi .. và gì mà missing autocad2004 type library.. Khắc phục ntn đây? Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Nguyen Hoanh 4671 Báo cáo bài đăng Đã đăng Tháng 10 29, 2008 Sao mình thử chạy chuơng trình vẽ hình trụ sao ko chạy đc nhỉ ???Nó báo lỗi .. và gì mà missing autocad2004 type library.. Khắc phục ntn đây? Mình chưa thử, nhưng thấy viết sai chính tả rồi. Bạn thử sửa cho đúng chữ AcadApplication xem sao? hiện nay như hình bạn post lên thì bị thừa 1 chữ c. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
nguyendongdhgt 0 Báo cáo bài đăng Đã đăng Tháng 8 30, 2009 Cám ơn anh Jin Yong, đây là kiến thức tương liên quan đến cả VBA trong Excel và AutoCad nên muốn sử dụng thì phải nắm được cách thức lập trình trong 2 môi trường này. Hiện nay, môn Tự động hoá thiết kế cầu đường của trường ĐH GTVT đang dạy về nội dung này.chào mọi nguời em đang học năm cuối của bô môn tự động hóa trường DHGT.và đc tiếp súc với VBA trong excl và cad.theo em ứng dụng này rất hay và tiện ích nhất là ai theo học ngành học như em.và em cũng đã đi sâu vào nó để tiến tới làm đồ án tốt nghiệp về phần này.em mong bác hướng đưa thêm các ứng dụng khác nữa.cảm ơn bác Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
nguyendongdhgt 0 Báo cáo bài đăng Đã đăng Tháng 8 30, 2009 Cám ơn anh Jin Yong, đây là kiến thức tương liên quan đến cả VBA trong Excel và AutoCad nên muốn sử dụng thì phải nắm được cách thức lập trình trong 2 môi trường này. Hiện nay, môn Tự động hoá thiết kế cầu đường của trường ĐH GTVT đang dạy về nội dung này.chào mọi nguời em đang học năm cuối của bô môn tự động hóa trường DHGT.và đc tiếp súc với VBA trong excl và cad.theo em ứng dụng này rất hay và tiện ích nhất là ai theo học ngành học như em.và em cũng đã đi sâu vào nó để tiến tới làm đồ án tốt nghiệp về phần này.em mong bác hướng đưa thêm các ứng dụng khác nữa.cảm ơn bác Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
svba1608 627 Báo cáo bài đăng Đã đăng Tháng 9 6, 2009 Thầy Hướng có thể up lại các hình ảnh giùm em được không? Em đang cần nghiên cứu liên kết giữa cad và excel để làm đồ án tổng hợp cấp nước. Rất tiếc là hình ảnh đã bị mất. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
phantuhuong 227 Báo cáo bài đăng Đã đăng Tháng 9 6, 2009 Thầy Hướng có thể up lại các hình ảnh giùm em được không?Em đang cần nghiên cứu liên kết giữa cad và excel để làm đồ án tổng hợp cấp nước. Rất tiếc là hình ảnh đã bị mất. Em có thể tải bài viết và ví dụ xuống nghiên cứu, vì ảnh do bị photobucket xoá mất. 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
svba1608 627 Báo cáo bài đăng Đã đăng Tháng 9 6, 2009 Em có thể tải bài viết và ví dụ xuống nghiên cứu, vì ảnh do bị photobucket xoá mất. 2 tài liệu trong topic: "Tự động hoá thiết kế trong AutoCad từ VB6, Hướng dẫn tạo exe, dll,..." đã bị lỗi "Not Found. The requested URL /vb6exeacad.rar was not found on this server." Thầy có thể up lại được không? Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
phantuhuong 227 Báo cáo bài đăng Đã đăng Tháng 9 6, 2009 2 tài liệu trong topic: "Tự động hoá thiết kế trong AutoCad từ VB6, Hướng dẫn tạo exe, dll,..." đã bị lỗi "Not Found. The requested URL /vb6exeacad.rar was not found on this server."Thầy có thể up lại được không? Em kiểm tra lại nhé, tôi đã up lại rồi. :s_big: 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
Tue_NV 3916 Báo cáo bài đăng Đã đăng Tháng 1 24, 2010 Không có ý chỉ trích gì bác nhưng tôi nghĩ trong diễn đàn này không nhiều người có thể thử (chỉ mới thử, chưa nói là hiểu...) được cái ứng dụng của bác.Vậy nên tôi nghĩ bác nên giúp mọi người tiếp cận với VBA từ những VD đơn giản thôi. Bác thả một cái bom xuống, mọi người lóa mắt với ù tai hết. :undecided: Chào bác Phantuhuong Quả thật Tue_NV cũng đồng tình với ý kiến với bác vndesperados. Mình là người đi học cái này thôi, kiến thức về VBA chỉ mới hiểu, gọi là sơ sơ nên đứng trên góc độ này đúng là loá mắt, ù tai và choáng ngợp trước những điều thật hay mà VBA có thể làm được (Tue_NV đã thử tiện ích vẽ hình trụ hố khoan của bác Phantuhuong). Quả thật nó rất hay bác ạ. Cảm ơn bác đã chia sẻ Tue_NV chỉ muốn bắt đầu bằng những ví dụ thật giản đơn thôi bác ạ. Em chỉ mới biết cách vào VBA trong CAD -> Tool -> Marco -> Visual Basic Edittor -> và soạn thảo chương trình ở đó. Các hàm và cú pháp Developer Help để đọc (ActiveX and VBA reference) Còn cách chạy Run thì chưa biết bác ạ. Bác có thể chỉ cho em 1 ví dụ nho nhỏ thôi, đơn giản thôi, cách viết và cách chạy (Run) 1 chương trình VBA ở trong CAD như thế nào để em tập tò học theo với. Vài tâm sự của một người chưa biết gì VBA. Mong các bác đừng cười Cảm ơn bác Phantuhuong cùng các bác đã chia sẻ kiến thức và kinh nghiệm thật bổ ích Thanks for shared Thank you very much Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
thanhlamct 70 Báo cáo bài đăng Đã đăng Tháng 2 9, 2010 Em cũng mê món VBA lắm, nhưng chưa có thời gian ngâm cứu, chỉ mới tìm các tài liệu về VBA. Em gửi các bác file em sưu tầm để các bác tham khảo: http://www.cadviet.com/upfiles/2/vba_for_e...and_autocad.pdf 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
canhchimma 0 Báo cáo bài đăng Đã đăng Tháng 3 1, 2010 Ai có tài liệu chi tiết không cho mình xin 1 bản: YM: canhchimma@yahoo.com Mình cảm ơn rất nhiều. Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác