Ngày đăng: 17/08/2012, 07:05
Mô hình 3D bằng VBA-AUTOCAD Mục lục Lời mở đầu………………………………………………………………………………………… PHẦN 1:XÂY DỰNG MÔ HÌNH 3D BẰNG VBA-AUTOCAD: Chương 1:TỔNG QUAN 1.Các nghiên cứu xây dựng mơ hình 3D qua VBA-AutoCad……… …………3 Ưu nhược điểm nghiên cứu này………………………………………….3 Chương 2: CƠ SỞ DỮ LIỆU AUTOCAD VÀ VBA-AUTOCAD Tổng quan sở liệu AutoCad……………………………………….………….5 Những đối tượng sở liệu quan trọng… ………………………….………….6 Tạo đối tuợng AutoCad……… ……………………………………………….6 Tổng quan VBA-AutoCad…… ……… ……………………………………………….8 Chương 3: THUẬT TỐN TẠO MƠ HÌNH 3D CHO ĐƯỜNG ĐỒNG MỨC 1.Lấy liệu từ vẽ AutoCad………………………………………………………… 10 a.Thuật tốn tìm cao độ cho điểm thuộc đường đồng mức….….11 b.Thuật tốn tìm cao độ điểm thuộc lưới….……………………….… 11 b1.Thuật toán chia lưới……………………………………………………………………….11 b2 Thuật toán lấy cao độ điểm có tọa độ (X,Y)…… ……….…12 2.Tạo mơ hình 3D…………… ………………………………………………………… … 12 Chương 4: THUẬT TỐN VẼ MẶT CẮT DỌC TUYẾN……………………… 14 PHẦN 2:CỤ THỂ HĨA MƠ HÌNH 3D BẰNG MATHLAB…………………… 16 Tài liệu tham khảo………………… …………………….………………………………… 18 Phụ lục…………………………………………………………………………………………… 19 LỜI MỞ ĐẦU Ngày môi trường AutoCad trở nên quen thuộc công việc thiết kế người kỹ sư xây dựng Những ứng dụng môi trường AutoCad hiệu dễ sử dụng cho người kỹ sư trình thiết kế Việc phát triển ứng dụng môi trường AutoCad công ty tin học xây dựng khai thác ứng dụng có hiệu thực tế.Trong thiết kế thủy lợi cầu đường,NovaCad Hài Hịa trở nên hữu ích tiện dụng q trình tính tốn thiết kế Với yêu cầu đặt macro đơn giản viết VBAAutocad,chương trình tự động xây dựng mơ hình 3D từ đường đồng mức,và vẽ mặt cắt dọc tuyến.Qua đó,người sinh viên làm đồ án dễ dàng nắm bắt địa hình nơi thiết kế cơng trình,và nhanh chóng chọn lựa tuyến cơng trình hợp lý Nội dung nghiên cứu gồm phần sau: Phần 1:Nghiên cứu VBA-AutoCad Nguyễn Hữu Hân -Nghiên cứu sở liệu AutoCad -Nghiên cứu VBA mơi trường AutoCad -Xây dựng thuật tốn tạo mơ hình 3D từ đường đồng mức -Xây dựng thuật toán vẽ mặt cắt dọc tuyến Phần 2:Nghiên cứu MathLab Nguyễn Minh Thương -Sử dụng MathLab để cụ thể hóa mơ hình 3D Đề tài có tham khảo sử dụng thuật toán chia lưới đề tài khoa học sinh viên 2000 “Xây dựng đồ số”-Thư viện trường ĐHXD Ngồi ra, q trình nghiên cứu nhóm cịn giúp đỡ hướng dẫn tận tình hai thầy hướng dẫn:GS.TS Huỳnh Bá Kỹ Thuật Th.S Hồng Chí Nhân PHẦN 1: XÂY DỰNG MƠ HÌNH 3D BẰNG VBA-AUTOCAD CHƯƠNG 1:TỔNG QUAN 1.CÁC NGHIÊN CỨU VỀ XÂY DỰNG MƠ HÌNH 3D QUA VBA-AUTOCAD Xây dựng mơ hình 3D từ đường đồng mức ứng dụng GIS(Geographic Information System), hướng phổ biến nhà lập trình chuyên nghiệp lĩnh vực kỹ thuật.Các ứng dụng GIS phổ biến giới nước ta nói đến là: ứng dụng đồ số,hệ thống thơng tin định vị tồn cầu GMS…vv… Ở nước ta,các ứng dụng GIS phát triển đa dạng.Nhiều công ty phần mềm theo hướng đạt thành công đáng kể thị trường.Có thể nói đến là:VietCad,Hài Hịa,Trung tâm phần mềm thủy lợi….vv Trong đó,Hài Hịa chủ yếu nghiên cứu sản xuất phần mềm tự động hóa thiết kế xây dựng bao gồm xử lý số liệu khâu khảo sát địa hình, địa chất,xử lý đồ họa ba chiều ,thiết kế đường bộ….vv.Công ty xây dựng phát triển nhiều module chương trình cho cơng ty nước ngồi ViaNova(cơng ty chun phát triển phần mềm thiết kế đường cầu),trong có chương trình thiết kế đường NovaCad Trong nghiên cứu khoa học sinh viên,các nghiên cứu vấn đề đa dạng Đó chương trình xây dựng đồ số,hay chương trình tự động thiết kế đường…vv.Về VBA-AutoCad có nghiên cứu xây dựng chương trình tính tốn bê tơng cốt thép môi trường AutoCAD…vv ƯU VÀ NHƯỢC ĐIỂM CỦA CÁC NGHIÊN CỨU NÀY: a.Ưu điểm: -Các chương trình cơng ty chun nghiệp hồn thiện việc tính tốn xử lý số liệu,kết xuất vẽ.Uy tín chương trình đảm bảo số lượng khách hành sử dụng sản phẩm -Các nghiên cứu sinh viên hay việc đưa ý tưởng mới.Chương trình thường nhỏ gọn, dễ dùng,tiện cho việc nghiên cứu,học tập môi trường sinh viên b.Nhược điểm: -Các chương trình cơng ty lĩnh vực thường module chương trình lớn,có quyền Ứng dụng thực tế cao ứng dụng môi trường học tập sinh viên chưa thực tế,hoặc khó đến tay người sinh viên cách hợp pháp.Các công ty không cho phép chế độ mã nguồn mở,khơng thích ứng với khám phá ham hiểu biết sinh viên.Những đồ án phạm vi nhà trường không cần dùng đến ứng dụng phức tạp công ty phần mềm -Các nghiên cứu sinh viên lĩnh vực giới hạn việc load liệu từ file text,không trực quan không thực tế trình làm đồ án(trong trình làm đồ án,người sinh viên giao bình đồ khu vực qua vẽ AutoCad) CHƯƠNG 2:CƠ SỞ DỮ LIỆU AUTOCAD 1.TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU AUTOCAD Một vẽ AutoCAD tập hợp đối tượng cất giữ sở liệu Một vài đối tượng sở liệu thực thể, bảng symbol từ điển Những thực thể loại đối tượng sở liệu đối tượng đồ họa vẽ AutoCAD Những đối tượng line, circle, arc, text, solid, regions, splines ellipses ví dụ thực thể Nguời dùng nhìn thấy thực thể ảnh thao tác Những bảng symbol từ điển nơi chứa dùng để lưu trữ sở liệu đối tượng Cả hai đối tượng chứa quản lý tên symbol dạng chuỗi văn sở liệu đối tượng Một sở liệu AutoCAD bao gồm bảng symbol cố định, mà ghi bao gồm instances lớp riêng biệt Bạn thêm bảng symbol vào sở liệu Chẳng hạn bảng symbol bảng layer (AcDbLayerTable) block (AcDbBlockTable) Tất thực thể AutoCAD chứa ghi block Những từ điển cung cấp khả quản lý đối tượng linh hoạt bảng symbol Một từ điển chứa đựng đối tượng kiểu AcDbObject phân lớp Cở sở liệu AutoCAD tự động tạo từ điển dùng để quản lý tên đối tượng tạo vẽ Từ điển xem quản lý "mục lục" cho tất từ điển liên kết với sở liệu Bạn tạo từ điển bên từ điển thêm đối tượng sở liệu vào chúng AutoCAD nạp nhiều sở liệu phiên chạy riêng lẻ Mỗi đối tượng phiên chạy có handles đối tượng ID Một handles xác định đối tượng bên phạm vi sở liệu riêng biệt, ngược lại đối tượng ID xác định đối tượng tất sở liệu đuợc nạp Một đối tượng ID tồn thời gian sử dụng, handles lưu giữ với vẽ Trái ngược với đối tượng ID, handles không chắn nhiều sở liệu nạp phiên chạy AutoCAD NHỮNG ĐỐi TƯỢNG CƠ SỞ DỮ LIỆU QUAN TRỌNG Khi đối tượng tạo AutoCAD, chúng thêm vào đối tượng chưa thích hợp chúng sở liệu Những thực thể thêm vào ghi bảng block Những ghi bảng symbol thêm vào bảng symbol thích hợp Tất đối tượng khác thêm vào từ điển quản lý tên đối tượng quản lý đối tượng khác (và cuối thêm vào từ điển quản lý tên đối tượng), vào từ điển mở rộng TẠO RA ĐỐi TƯỢNG TRONG AUTOCAD Mục mô tả cách tạo đối tượng line, circle, layer group AutoCAD cách AutoCAD thêm đối tượng vào sở liệu Trước hết, đòi hỏi người dùng tạo đối tượng line khơng gian mơ hình với lệnh sau : line 4,2 10,7 Trong sơ liệu, AutoCAD tạo instance lớp AcDbLine sau cất giữ ghi bảng block khơng gian mơ hình thể minh họa sau: Khi bạn kích hoạt AutoCAD lần đầu sở liệu trạng thái mặc định nó, thực thể thêm vào khơng gian mơ hình (khơng gian AutoCAD), sử dụng cho hình học đồ họa Khơng gian giấy vẽ dùng để hỗ trợ trình bày vẽ sheet outlines, khung tiêu đề văn annotational Những lệnh tạo thành thực thể AutoCAD (trong trường hợp line) thêm thực thể vào sở liệu thời vào khối khơng gian mơ hình Tiếp theo, giả sử người dùng tạo đối tượng circle với lệnh sau: circle 9,3 Một lần nữa, AutoCAD tạo instance thực thể thích hợp (AcDbCircle) thêm vào ghi bảng block khơng gian mơ hình Tiếp theo, người dùng tạo lớp: layer _make mylayer AutoCAD tạo ghi layer để lưu giữ lớp sau thêm vào bảng layer Cuối cùng, người dùng nhóm tất thực thể lại với nhau: group 3,2 9,3 AutoCAD tạo nhóm đối tượng thêm vào từ điển Group, mà chứa từ điển quản lý tên đối tượng.Nhóm chứa danh sách đối tượng IDs đối tượng mà tạo nên nhóm 4.TỔNG QUAN VỀ VBA-AUTOCAD: Một đề án AutoCad Vba tập hợp module mã lệnh,module lớp form ,chúng làm việc để thực nhiệm vụ giao Đề án lưu giữ bên vẽ Cad ,hay file độc lập “Embedded projects” đề án lưu giữ vẽ Cad.Những đề án kiểu nạp cách tự động mở vẽ.Vì ,việc phân bổ đề án dạng vô thuận tiện.“Embedded projects” bị giới hạn khơng thể mở hay đóng vẽ Cad chúng thực chức vẽ mà chúng cư trú.Người dùng “Embedded projects” yêu cầu tìm đọc file đề án trước chúng chạy chương trình.Tất nhiên người sử dụng không cần phải nhớ để nạp đề án trước mở vẽ,vì đơn giản nạp tự động “Global projects“được lưu giữ file độc lập linh hoạt chúng làm việc vẽ,mở đóng vẽ nào,nhưng tự động nạp vẽ mở Người sử dụng phải biết file đề án bao gồm macro mà họ cần nạp file đề án trước chúng chạy macro.Tuy nhiên,”global projects” dễ dàng việc chia sẻ với người dùng khác,và chúng tạo thành thư viện phong phú cho macro dùng chung Bạn nhìn thấy tất đề án VBA nạp phiên làm việc thời AutoCad việc sử dụng cơng cụ VBA Manager.Nó công cụ AutoCad cho phép bạn nạp,không nạp,ghi,tạo đề án VBA CHƯƠNG 3: THUẬT TOÁN TẠO MƠ HÌNH 3D CHO ĐƯỜNG ĐỒNG MỨC 1.LẤY DỮ LIỆU TỪ BẢN VẼ AUTOCAD: Như ta biết,bản vẽ AutoCad bao gồm tập hợp đối tượng line,circle,polyline,layer…vv.Mỗi đối tượng ta tương tác với chúng thông qua tên chúng AutoCad VD:+polyline có tên AutoCad là: “AcDbPolyline” +line có tên AutoCad là: “AcDbline”….vv Vì thơng qua thuộc tính Object.EntityName ta biết thơng tin đối tượng vẽ,mà cụ thể chương trình thơng tin đường polyline,spline(đại diện cho đường đồng mức);Mtext,Text(để ghi cao độ cho đường đồng mức);line(đại diện cho mặt cắt) Các thông tin đường mà ta lấy bao gồm: +Tọa độ (X,Y) điểm thuộc polyline spline (tọa độ(X,Y) đường đồng mức) +Giá trị Mtext Text tương ứng với đường polyline spline nói trên(tức giá trị cao độ tương ứng với đuờng đồng mức) +Tọa độ điểm đầu điểm cuối line(tương ứng với mặt cắt dọc cần vẽ) +Số đường polyline,spline,số đối tượng Mtext Text Sau lấy thông tin này,ta lưu liệu đường đồng mức vào ba mảng chiều là:mangX(),mangY() mangH,với: +mangX() lưu giá tri tọa độ phương X đường đồng mức +mangY() lưu giá trị tọa độ phương Y đường đồng mức +mangH() lưu giá trị cao độ đường đồng mức tương ứng Ta có tọa độ(X,Y,Z) điểm thuộc đường đồng mức Nhưng điểm (X,Y,Z) nằm vị trí ngẫu nhiên,rời rạc khơng thể xây dựng nên mơ hình 3D hợp lý Chính thế,ta phải xây dựng lưới tọa độ (X,Y,Z),từ ta dựng mơ hình 3D cần thiết 10 Vấn đề đặt : +Làm biết Text(cao độ) tương ứng với polyline +Sau biết tọa độ (X,Y,Z) điểm polyline,làm lấy tọa độ (X,Y,Z) lưới Giải vấn đề này,ta chia thành hai thuật tốn sau: a.Thuật tốn tìm cao độ cho điểm thuộc đường đồng mức -Việc tìm cao độ điểm thuộc polyline,ta chia thành phần: +Duyệt qua polyline vẽ, ứng với polyline có Text tương ứng +Duyệt qua tất điểm polyline gán giá trị cao độ H điểm Polyline giá trị Text tương ứng với Polyline Sơ đồ thuật toán sau: Cao độ H đường đồng mức xét gán giá trị Text t/ứng Duyệt đường polyline Spline vẽ Tìm khoảng cách ngắn từ điểm polyline đến tất Text b.vẽ Tương ứng với khoảng cách nhỏ Text cần tìm ( giá trị cao độ) b.Thuật tốn tìm cao độ điểm thuộc lưới: Để tìm cao độ điểm thuộc lưới,ta tổng qt hóa tốn.Tức ta tìm cơng thức chung tính cao độ điểm có tọa độ (X,Y).Từ đó,với điểm mắt lưới,ta dễ dàng tìm tọa độ (X,Y) mắt lưới đó,và suy cao độ mắt lưới Trước tiên,ta xét thuật toán chia lưới: b1.Thuật tốn chia lưới: Giả sử ta tìm điểm thuộc đường đồng mức có tọa độ (Xmin,Ymin) (Xmax,Ymax) -Giả thiết số lưới theo phương X duongluoix Ta có: DeltaT=(Xmax - Xmin) / (duongluoix - 1) -Số lưới theo phương Y là: duongluoiy = Int((ymax - ymin) / delT) + -Tọa độ theo phương X điểm lưới thứ i là: Xtt(i) = xmin + delT * (i - 1) -Tọa độ theo phương Y điểm lưới thứ j là: Ytt(j) = ymin + delT * (j - 1) 11 b2.Thuật toán lấy cao độ điểm có tọa độ (X,Y): dt1 dt2 -Bước1:Tìm khoảng cách nhỏ từ điểm cần tính cao độ đến tất điểm đường polyline(hoặc spline), ứng với đường polyline có giá trị nhỏ nhất.Ta lưu giá trị nhỏ vào mảng chiều,đương nhiên số phần tử mảng phải số lượng đường polyline vẽ -Bước2:Tìm giá trị nhỏ mảng vừa nêu,ứng với khoảng cách từ điểm cần tính cao độ đến đường polyline gần -Bước3:Tính cao độ +Gọi khoảng cách vừa tìm dt1 dt2.Tương ứng với đường polyline có cao độ theo thứ tự là:diem1H diem2H.Ta có cơng thức tính cao độ điểm(X,Y) thuộc lưới sau: tuso = (diem1H / dt1) + (diem2H / dt2) mauso = (1 / dt1) + (1 / dt2) caodo = tuso / mauso 2.TẠO MƠ HÌNH 3D: Để tạo mơ hình 3D đường đồng mức có liệu tọa độ (X,Y) mắt lưới cao độ tương ứng mắt lưới đó.Ta sử dụng lệnh: Set meshobj = ThisDrawing.ModelSpace.Add3DMesh(mSize, nSize, points) Với: mSize = duongluoix, nSize = duongluoiy kích thước lưới Và points mảng chiều,chứa tọa độ (X,Y,Z) điểm không gian.Vì ta truyền liệu từ mảng chiều mảng chiều ta sang mảng points sau: For i = To duongluoix 12 For j = To duongluoiy points(0 + * k) = Xtt(i) points(1 + * k) = Ytt(j) points(2 + * k) = H(i, j) k=k+1 Next Next Trong đó:+ Xtt(i) mảng chiều chứa tọa độ X mắt lưới + Ytt(j) mảng chiều chứa tọa độ Y mắt lưới + H(i,j) mảng chiều chứa cao độ H mắt lưới 13 CHƯƠNG 4: THUẬT TOÁN VẼ MẶT CẮT DỌC TUYẾN Như ta biết từ phần lấy liệu, đối tượng line vẽ đại diện cho mặt cắt dọc tuyến.Vấn đề dựng mặt cắt đó.Ta thấy tương ứng với điểm nằm đường line(biểu mặt cắt),sẽ có tọa độ(X,Y).Vận dụng chương trình tính cao độ điểm(X,Y) phần trước,ta tìm cao độ điểm line tương ứng Với ý tưởng trên,ta chia line thành tập hợp hữu hạn điểm,tương ứng với điểm có cao độ riêng.Trên hệ tọa độ Đềcác,trục hoành chiều dài L tuyến(chính chiều dài đường line);trục tung biểu cao độ điểm tuyến.Nối điểm (Li,Hi),ta mặt cắt tuyến Ta hình dung trình vẽ mặt cắt dọc tiến hành sau: Cao độ H Hi=caodo(Xi,Yi) Hi Li(Xi,Yi) Chiều dài L tuyến Thuật toán tổng quát trình vẽ mặt cắt tuyến: Duyệt đường line vẽ Lấy tọa độ điểm đầu điểm cuối line Chia line thành n phần hữu hạn 14 Tìm X(i),Y(i),L(i) từ suy H(i) Nối điểm có tọa độ (L(i),H(i)) hệ tọa độ Đềcác ta mặt cắt tuyến cần vẽ PHẦN 2: CỤ THỂ HĨA MƠ HÌNH 3D BẰNG MATHLAB 15 Ta thấy kết xuất vẽ AutoCad phần VBA-AutoCad có ưu điểm nhanh,trực quan.Nhưng lại có nhược điểm chưa có tính kỹ thuật,chi tiết.Mơ hình 3D mà chương trình viết VBA-AutoCad dựng lên có tính tổng quan địa hình,người dùng chưa thấy độ cao phân mức độ cao địa hình,mặt cắt dọc tuyến có tính chất tương đối Vì thế,một giải pháp nhóm nghiên cứu đặt chi tiết hóa mơ hình 3D cơng cụ có hỗ trợ đồ họa mạnh, MathLab Các mơ hình 3D xây dựng biểu diễn với nhiều dạng khác nhằm tạo cho người dùng nhìn tổng quan mặt , địa hình khu vực cơng trình Dữ liệu để xây dựng mơ hình 3D file text (dữ liệu tọa độ (X,Y,Z) mắt lưới chuyển file text , file mang thông tin toạ độ , file mang thông tin cao độ tương ứng).Tuy nhiên,nhược điểm MathLab yêu cầu máy chạy phải có cấu hình mạnh,bộ cài lớn Hướng dẫn sử dụng: - copy file text mang liệu vẽ bình đồ file chương trình có tên app.M vào thư mục work Matlab - Chạy Matlab , dòng lệnh từ cửa sổ lệnh Matlab gõ tên file xử lý : app - Sau Enter , chương trình chạy - Trong TextBox : toạ độ : gõ tên file chứa thông tin toạ độ ( kèm phần mở rộng txt ) - Và TextBox : Cao độ : gõ tên file chữa thông tin cao độ kèm theo phần mở rộng txt Trong hộp tuỳ chọn thể tuỳ người dùng chọn cách để thể mơ hình 3D Sau Click vào nút Run Hình vẽ , để nhìn với góc nhìn khác , người dùng chọn Tool -> Rotate 3D , sau đưa chuột vùng vẽ Kick giữ chuột quay Mỗi thay đổi tuỳ chọn người dùng phải Click lại nút Run để thực vẽ lại Các bước thực chương trình: - - Bước : Xây dựng giao diện người dùng : Xử dụng công cụ GUI MatLab để tạo TextBox, button , PopupMenu để người sử dụng dễ dàng thao tác Bước : Cài đặt mã xử lý cho nút lệnh tuỳ chọn Các công việc thực nút Run click - Load ma trận n hàng cột lưu giá trị toạ độ - Load ma trận độ cao từ file lưu giá trị độ cao - Lấy giá trị độ mịn lưới chia nhập vào User 16 - Phân tích ma trận lưu giá trị toạ độ x,y lưới để lấy giá trị X, Y cần thiết - Lưu giá trị X, Y vào mảng riêng biệt : Mảng chứa X mảng chứa Y - Mịn hoá giá trị X,Y hai mảng theo độ mịn mà người sử dụng đưa vào - Tạo lưới từ Vector mịn hoá - Thực nội suy giá trị độ cao tương ứng với lưới vừa mịn hoá Kết ma trận độ cao mịn hoá - Lấy giá trị tuỳ chọn User chọn bao gồm kiểu lưới kiểu bề mặt , có sử dụng hệ trục Decater khơng - Thực lệnh vẽ tương ứng với tuỳ chọn - lệnh vẽ mặc định khơng có tuỳ chọn - Lấy thông tin mực nước thượng lưu User nhập - Chuyển thành dạng số - Kiểm tra hợp lệ số liệu , số liệu hợp lệ vẽ thêm vào mặt phẳng tượng trưng cho mực nước ngập khu vực Tài liệu tham khảo: ActiveX and VBA Reference ActiveX and VBA Developer’s Guide 17 Đề tài nghiên cứu khoa học sinh viên: “Xây dựng đồ số”-Thư viện ĐHXD Phụ lục: Mã nguồn chương trình module quan trọng(VBA): Function caodo(X, Y) 18 Dim i, k, j, sott As Integer Dim mangkc(1 To 1000) As Double Dim kc(1 To 100) As Double Dim min1, min2, min3 As Double Dim luutdX(1 To 100) As Double Dim luutdY(1 To 100) As Double Dim luutdH(1 To 100) As Double Dim diem1X, diem1Y, diem1H, diem2X, diem2Y, diem2H, dt1, dt2 As Double Dim tuso, mauso As Double j = -1 For i = To soduongpolyline j=j+1 sott = + 101 * j For k = To 100 sott = sott + mangkc(k + 1) = tinhkc(mangXluu(sott), mangYluu(sott), X, Y) Next min1 = minmang(mangkc(), 101) sott = + 101 * j For k = To 100 sott = sott + If mangkc(k + 1) = min1 Then luutdX(i) = mangXluu(sott) luutdY(i) = mangYluu(sott) luutdH(i) = mangHluu(sott) End If Next kc(i) = min1 Next min2 = minmang(kc(), soduongpolyline) For i = To soduongpolyline If kc(i) = min2 Then kc(i) = 100000 diem1X = luutdX(i) diem1Y = luutdY(i) diem1H = luutdH(i) End If Next min3 = minmang(kc(), soduongpolyline) For i = To soduongpolyline If kc(i) = min3 Then diem2X = luutdX(i) diem2Y = luutdY(i) diem2H = luutdH(i) 19 End If Next On Error Resume Next dt1 = tinhkc(diem1X, diem1Y, X, Y) dt2 = tinhkc(diem2X, diem2Y, X, Y) tuso = (diem1H / dt1) + (diem2H / dt2) mauso = (1 / dt1) + (1 / dt2) caodo = tuso / mauso End Function Sub taoluoi1() Dim n1, n2 As Integer Dim xmin, xmax, ymin, ymax As Double Dim d(1 To 5000) As Double Dim TS, MS As Double Dim delT As Double Dim i, j, t As Integer TS = MS = duongluoix = 12 xmin = minmang(mangX(), sttnew) xmax = maxmang(mangX(), sttnew) ymin = minmang(mangY(), sttnew) ymax = maxmang(mangY(), sttnew) delT = (xmax - xmin) / (duongluoix - 1) duongluoiy = Int((ymax - ymin) / delT) + For i = To duongluoix Xtt(i) = xmin + delT * (i - 1) Next For j = To duongluoiy Ytt(j) = ymin + delT * (j - 1) Next For i = To duongluoix For j = To duongluoiy H(i, j) = caodo(Xtt(i), Ytt(j)) Next Next End Sub * Mã Nguồn bước (MATHLAB): f = get(handles.toado,'String'); - Bước : f1=get(handles.caodo,'String'); % lay gia tri smooth smth=get(handles.smooth,'String'); % chuyen string dang so smth=str2num(smth); p=f; % load vao ma tran a 20 a=load(p); global z; % ma tran cao z=load(f1); - Bước : % lay cac bien x=a(:,1); y=a(:,2); %disp(x); % xu ly de lay cac gia tri toa x global b;% mang nam giu cac gia tri theo truc y thuc te b=[];% khoi tao ma tran b c=0;% khoi tao bien c for i=1:length(x)-1 j=i+1; if(x(i)~=x(j)) c=c+1; b(c)=x(i); elseif(j==length(x)) c=c+1; b(c)=x(i); end end % xu ly de lay cac gia tri mang y global d;% mang nam giu cac gia tri x tren toa thuc te d=[];% khoi tao mang d d(1)=y(1); for i=2:length(y) d(i)=y(i); if(y(i)==y(1)) d(i)=[]; break; end end - Bước : % Phang xu ly de ve thi reset(GCA); %mesh(d,b,z); % hoa theo truc x xi=linspace(d(1),d(length(d)),smth); % hoa theo truc y yi=linspace(b(1),b(length(b)),smth); % tao luoi tu cac du lieu da hoa 21 [xxi,yyi]=meshgrid(xi,yi); % thuc hien noi suy zzi=interp2(d,b,z,xxi,yyi,'cubic'); - Bước 4: - Bước : % xu ly cac truong hop lua chon kth=get(handles.popupmenu9,'Value'); kbm=get(handles.popupmenu10,'Value'); % doi voi truong hop kieu the hien whitebg('k');%thiet lap man hinh den switch kth, case 1,mesh(xxi,yyi,zzi); case 2,surf(zzi); case 3,surfl(zzi); case 4,meshz(zzi); case 5,waterfall(xxi,yyi,zzi); case 6,pcolor(zzi); case 7,contourf(zzi),set(handles.popupmenu10,'Value',1), hold on, shading flat,[c,h]=contour(zzi,'k-'),clabel(c,h); case 8,meshc(xxi,yyi,zzi); case 9,contourf(xxi,yyi,zzi),c=contour(zzi),clabel(c); end; % doi voi kieu be mat switch kbm, % lay gia tri muc nuoc thuong luu case 1,; mn = get(handles.mntl,'String'); case 2,shading flat; % chuyen string kieu so case 3,shading faceted; mn=str2num(mn); case 4,shading interp; % kiem tra neu gia tri muc nuoc hop le thi ve end if(mn>min(min(zzi))) flag=1; end; else flag=0; end % xu ly voi cac so lieu truc toa hien thi hoac bo % thuc hien ve mat cat tuong trung cho lop nuoc ht = get(handles.checkbox2,'Value'); % thuc hien noi suy switch ht, hhi=[];%khai bao hhi case 1,; if(flag==1) case 0,axis off; hold on end for i=1:size(zzi,1) for j=1:size(zzi,2) hhi(i,j)=mn; end end switch kth, case {2,3,4,5,6}; case {1,2,9} surf(xxi,yyi,hhi),shading flat; end end %mesh(xxi,yyi,zzi); %surf(zzi); 22 %shading interp; colorbar('horiz'); hold off; 23 ... Th.S Hồng Chí Nhân PHẦN 1: XÂY DỰNG MƠ HÌNH 3D BẰNG VBA-AUTOCAD CHƯƠNG 1:TỔNG QUAN 1.CÁC NGHIÊN CỨU VỀ XÂY DỰNG MÔ HÌNH 3D QUA VBA-AUTOCAD Xây dựng mơ hình 3D từ đường đồng mức ứng dụng GIS(Geographic... HĨA MƠ HÌNH 3D BẰNG MATHLAB 15 Ta thấy kết xuất vẽ AutoCad phần VBA-AutoCad có ưu điểm nhanh,trực quan.Nhưng lại có nhược điểm chưa có tính kỹ thuật,chi tiết.Mơ hình 3D mà chương trình viết VBA-AutoCad. .. / mauso 2.TẠO MƠ HÌNH 3D: Để tạo mơ hình 3D đường đồng mức có liệu tọa độ (X,Y) mắt lưới cao độ tương ứng mắt lưới đó.Ta sử dụng lệnh: Set meshobj = ThisDrawing.ModelSpace.Add3DMesh(mSize, nSize,
Xem thêm:
Mô hình 3D bằng VBA-AUTOCAD, Mô hình 3D bằng VBA-AUTOCAD, NHỮNG ĐỐi TƯỢNG CƠ SỞ DỮ LIỆU QUAN TRỌNG TẠO RA ĐỐi TƯỢNG TRONG AUTOCAD, 3: THUẬT TỐN TẠO MƠ HÌNH 3D CHO ĐƯỜNG ĐỒNG MỨC