




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、地學(xué)三維可視化與過(guò)程模擬實(shí)驗(yàn)指導(dǎo)實(shí)驗(yàn)一 地質(zhì)災(zāi)害三維可視化建模實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康模?、 掌握一款地學(xué)方面三維可視化軟件,了解三維可視化概念及其原理。2、 使用地學(xué)相關(guān)數(shù)據(jù),使用三維可視化軟件,建立地質(zhì)三維模型。實(shí)驗(yàn)原理: 根據(jù)采集得來(lái)的地理信息數(shù)據(jù)以及地下地質(zhì)數(shù)據(jù),利用三維可視化建模軟件,使用手動(dòng)創(chuàng)建圖元,自動(dòng)創(chuàng)建圖元等人機(jī)交互功能,搭建起三維地質(zhì)模型,能如實(shí)的反應(yīng)出地上地形情況以及地下巖層分布情況,通過(guò)三維可視化分析,能清楚的反應(yīng)出該區(qū)域的相關(guān)地質(zhì)信息,提供與專家或相關(guān)技術(shù)人員做進(jìn)一步的分析。實(shí)驗(yàn)過(guò)程:1、 軟件安裝雙擊QuantyHazard3D 1.0.msi文件,安裝QuantyHazard
2、3D 1.0三維可視化軟件。2、 數(shù)據(jù)整理(該部分一個(gè)完成的三維可視化建模中的一部分,由于實(shí)驗(yàn)課時(shí)間有限,在實(shí)驗(yàn)課上的數(shù)據(jù)是整理好的半成品數(shù)據(jù),并且刪除部分復(fù)雜的數(shù)據(jù)源)3、三維建模(該部分是由學(xué)生在上級(jí)實(shí)驗(yàn)課上獨(dú)立完成的內(nèi)容。為了減少難度和適應(yīng)課上演練,以下實(shí)驗(yàn)數(shù)據(jù)是經(jīng)過(guò)簡(jiǎn)化后的某地區(qū)巖溶塌陷地質(zhì)災(zāi)害勘探數(shù)據(jù))(1)用QuantyHazard3D軟件打開(kāi)實(shí)驗(yàn)數(shù)據(jù).gvp文件,里面有整理好的三維數(shù)據(jù),打開(kāi)之后效果如下圖。(2)使用菜單中編輯條件選取功能,選擇如下圖配置。再次使用菜單中編輯條件選取功能,選擇如下圖配置。就創(chuàng)自動(dòng)畫出了雜填土底層的上下控制節(jié)點(diǎn),如下圖:關(guān)閉其他圖層,只打開(kāi)雜填土上節(jié)
3、點(diǎn)圖層,如下圖:按住Ctrl+A,全部選中這些控制數(shù)據(jù)點(diǎn),使用菜單功能三維建模創(chuàng)建TIN面,就可以創(chuàng)建出雜填土層的上表面。如下圖:同理創(chuàng)建出雜填土下表面,如下圖:選中雜填土的上表面和下表面,使用菜單功能編輯多面體編輯自動(dòng)生成體,生成一個(gè)封閉的地層體。如下圖:對(duì)照巖芯模型里面的顏色和屬性,對(duì)應(yīng)修改地層體的顏色和屬性。如下圖:以此類推創(chuàng)建出其他地層,把建立的地質(zhì)體模型放在地質(zhì)體模型圖層中,沒(méi)有地質(zhì)體模型圖層的自己新建一個(gè)。最終結(jié)果如下圖:(3)建立地層面模型圖層,建立一套地質(zhì)體模型的面模型,簡(jiǎn)稱地層面模型,主要用于計(jì)算面積和紋理的功能需要。把所有的多邊面圖形數(shù)據(jù)全部轉(zhuǎn)移到地層面模型圖層中如下圖:從
4、上至下一次建立多邊形性面的側(cè)面,下面以一個(gè)地層的上下面為例子。首選把其他圖形隱藏,只留下一個(gè)地層的上下面,為每一個(gè)面創(chuàng)建一條邊界線。選中一個(gè)面,單擊右鍵,在右鍵菜單中點(diǎn)擊邊界成線,就能夠創(chuàng)建一條邊界線。如下圖:同理創(chuàng)建下表面的邊界線,隱藏面圖形,如下圖:然后選中兩條邊界線,使用菜圖形工具中自動(dòng)造多邊形,即可生成地層側(cè)面。如下圖:同理依次創(chuàng)建其他地層的面模型,并且又該顯色和屬性,最終的面模型如下圖:(4)加載地表影像圖,選中地層面最上層的表面,單擊右鍵,點(diǎn)擊右鍵菜單中的屬性菜單,即可彈出屬性頁(yè)對(duì)話框,使用紋理貼圖功能,找到已經(jīng)準(zhǔn)備好的地表影像圖,進(jìn)行紋理。如下圖:(5)對(duì)地層面模型圖層中其他地層
5、側(cè)面和底面進(jìn)行紋理。選中一個(gè)地層的側(cè)面,點(diǎn)擊右鍵,點(diǎn)擊右鍵菜單中的屬性菜單,即可彈出屬性頁(yè)對(duì)話框,使用紋理貼圖功能,找到已經(jīng)準(zhǔn)備好的紋理圖片,進(jìn)行紋理。如下圖:然后使用該屬性頁(yè)中的編輯功能,根據(jù)實(shí)際情況選擇合理的坐標(biāo)映射模式,進(jìn)行紋理。如下圖。然后同理依次紋理側(cè)面,如下圖:實(shí)驗(yàn)結(jié)論:在實(shí)驗(yàn)結(jié)束以后,根據(jù)自己做實(shí)驗(yàn)的情況,以實(shí)習(xí)論文形式提交個(gè)人實(shí)驗(yàn)心得和實(shí)驗(yàn)結(jié)論。課后練習(xí):使用給定實(shí)驗(yàn)數(shù)據(jù)或者自己模擬創(chuàng)建的數(shù)據(jù),在QuantyHazard3三維可視化軟件中建立一個(gè)完成的三維地質(zhì)模型。實(shí)驗(yàn)二 三維可視化分析實(shí)驗(yàn)?zāi)康模?、加深對(duì)三維建模軟件的使用,掌握軟件三維可視化分析操作和原理。2、了解三維可視化
6、分析各個(gè)功能的編程原理和基本算法。實(shí)驗(yàn)原理:利用QuantyHazard3D開(kāi)發(fā)完成的“地質(zhì)災(zāi)害體三維可視化分析”軟件,對(duì)三維地質(zhì)災(zāi)害體進(jìn)行三維建模,生成三維數(shù)字災(zāi)害體,然后對(duì)三維地質(zhì)災(zāi)害體進(jìn)行剖面圖切割、地質(zhì)塊體切取、方量計(jì)算、真三維檢索查詢等可視化分析,以支持地質(zhì)災(zāi)害綜合分析與預(yù)測(cè)預(yù)報(bào)。實(shí)驗(yàn)過(guò)程:1、 計(jì)算長(zhǎng)度計(jì)算先選中一根線條,使用菜單模型分析數(shù)量計(jì)算長(zhǎng)度計(jì)算就能得出該先跳到長(zhǎng)度,用于測(cè)量距離、路程和周長(zhǎng)來(lái)用。如下圖:面積計(jì)算選中一個(gè)面,使用菜單模型分析數(shù)量計(jì)算面積計(jì)算,即可計(jì)算出該區(qū)域面積。如下圖:體積計(jì)算選中一個(gè)體,使用菜單模型分析數(shù)量計(jì)算體積計(jì)算,即可計(jì)算出該區(qū)域體積。如下圖:2、
7、 圖例顯示打開(kāi)地質(zhì)體模型圖層,關(guān)閉其他圖層,選中全部圖形,然后點(diǎn)擊菜單顯示顯示顏色圖例顯示圖例,然后彈出圖例編輯對(duì)話框,如果有不滿意的地方可以做一下調(diào)整,點(diǎn)擊確定。如下圖:3、 剪切剖面先點(diǎn)擊菜單模型分析剖面分析剪切剖面線,然后任意畫一條直線,即生成一組剖面線。如下圖:4、剪切分析先點(diǎn)擊菜單模型分析快速剪切地質(zhì)體,然后任意畫一條直線,即生成一組剪切后的地質(zhì)體。如下圖:5、開(kāi)挖分析先點(diǎn)擊菜單模型分析快速工程開(kāi)挖,然后任意畫一條折線,即生成一組開(kāi)挖后的地質(zhì)體。如下圖:6、截面分析先點(diǎn)擊菜單模型分析快速截面分析,然后任意畫一條折線,即生成一組截面。如下圖:實(shí)驗(yàn)結(jié)論:在實(shí)驗(yàn)結(jié)束以后,根據(jù)自己做實(shí)驗(yàn)的情
8、況,以實(shí)習(xí)論文形式提交個(gè)人實(shí)驗(yàn)心得和實(shí)驗(yàn)結(jié)論。課后練習(xí):1、 根據(jù)軟件的操作手冊(cè)指導(dǎo),自己嘗試完成其他分析功能,例如圖例分析,布爾運(yùn)算分析等。2、 實(shí)習(xí)基本結(jié)束,全面了解并且掌握軟件的使用,并且了解其中的原理。實(shí)驗(yàn)三 基于QuantyView的二次開(kāi)發(fā)實(shí)驗(yàn)?zāi)康模?、了解地學(xué)三維可視化軟件,掌握地學(xué)三維可視化的基本原理。2、熟悉基于QuantyView的二次開(kāi)發(fā),掌握地學(xué)三維可視化軟件基本框架的搭建。3、通過(guò)QuantView平臺(tái)軟件的二次開(kāi)發(fā),了解地學(xué)三維可視化技術(shù)的應(yīng)用方法。實(shí)驗(yàn)原理:QuantyView是由中國(guó)地質(zhì)大學(xué)(武漢)地質(zhì)信息科技研究所研發(fā)的具有完全自主版權(quán)的國(guó)產(chǎn)三維可視化地質(zhì)信息
9、系統(tǒng)平臺(tái)。它是建立于基層單位(數(shù)據(jù)采集點(diǎn))或主管部門、可以對(duì)各種地質(zhì)數(shù)據(jù)進(jìn)行收集、存貯、管理、處理和使用的基礎(chǔ)性和綜合性技術(shù)系統(tǒng)。該系統(tǒng)采用行業(yè)或部門統(tǒng)一的數(shù)據(jù)模型、標(biāo)準(zhǔn)的代碼體系,可以實(shí)現(xiàn)從野外數(shù)據(jù)采集到室內(nèi)數(shù)據(jù)綜合整理、平剖面圖件編繪、真三維可視化分析,再到國(guó)土資源和工程地質(zhì)條件綜合預(yù)測(cè)評(píng)價(jià)、科學(xué)管理與決策、地下工程(包括地下管線)和資源開(kāi)發(fā)設(shè)計(jì),乃至成果的保存、管理使用和出版印刷等等的全程計(jì)算機(jī)輔助化。QuantyView的架構(gòu)設(shè)計(jì)與開(kāi)發(fā)應(yīng)該具有高起點(diǎn),前瞻性,可擴(kuò)充性,遵循軟件工程原理與方法,設(shè)計(jì)開(kāi)發(fā)成一個(gè)具有明顯核心技術(shù)優(yōu)勢(shì)的可配置、可搭建式的平臺(tái)系統(tǒng)(如下圖所示)。該系統(tǒng)的設(shè)計(jì)以地
10、質(zhì)礦產(chǎn)點(diǎn)源信息系統(tǒng)理論框架為指導(dǎo),由QuantyView2D和QuantyView3D兩部分組成。其中,QuantyView3D是用Visual C和OpenGL開(kāi)發(fā)的具有完全自主版權(quán)的三維地質(zhì)可視化軟件平臺(tái)。該平臺(tái)具有強(qiáng)勁的真三維圖形數(shù)據(jù)和屬性數(shù)據(jù)編輯模塊;提供各種專業(yè)的可視化分析工具;可以分別利用鉆孔、平硐、槽探、豎井、勘探剖面圖和構(gòu)造平面圖等來(lái)生成三維數(shù)字地質(zhì)體;所生成的三維地質(zhì)體可以進(jìn)行空間數(shù)據(jù)和屬性數(shù)據(jù)的雙重可視化查詢和分析。以QuantyView3D為基礎(chǔ)平臺(tái)設(shè)計(jì)的軟件系列有廣泛的用途,能實(shí)時(shí)、快速、動(dòng)態(tài)地獲取、管理和處理各種礦山開(kāi)采、油氣資源勘探、水利、水電、高速公路、鐵路、隧道
11、、橋梁、地鐵、防空設(shè)施等地質(zhì)勘查和設(shè)計(jì)施工信息,可用于資源評(píng)價(jià)、城鄉(xiāng)建設(shè)、環(huán)境監(jiān)測(cè)、地震區(qū)劃、災(zāi)害防治和規(guī)劃決策等領(lǐng)域。對(duì)于信息源所在處或基層勘查單位而言,它們是功能強(qiáng)勁的微型工作站;而對(duì)于國(guó)家的國(guó)土資源信息系統(tǒng)而言,它們是信息齊備的網(wǎng)絡(luò)結(jié)點(diǎn)。QuantyView層疊式復(fù)合結(jié)構(gòu)作為地質(zhì)信息系統(tǒng)三維可視化軟件平臺(tái),QuantyView3D框架由9個(gè)相對(duì)獨(dú)立又相互聯(lián)系的模塊組成:(1)基本圖形模塊:是三維平臺(tái)圖形核心基礎(chǔ)模塊,實(shí)現(xiàn)基本圖元以及圖元組織和渲染等基本圖形功能;(2)科學(xué)計(jì)算模塊:支持?jǐn)?shù)據(jù)處理、空間分析、功能應(yīng)用等基本的科學(xué)計(jì)算,主要是一些數(shù)學(xué)算法。它的數(shù)據(jù)結(jié)構(gòu)以及開(kāi)發(fā)盡量考慮跨平臺(tái)、獨(dú)
12、立性;(3)數(shù)據(jù)管理傳輸模塊:利用點(diǎn)源數(shù)據(jù)庫(kù)進(jìn)行地質(zhì)數(shù)據(jù)的存儲(chǔ)、查詢、調(diào)度等,C/S及B/S模式的數(shù)據(jù)傳輸;(4)文件轉(zhuǎn)換信息模塊:實(shí)現(xiàn)地質(zhì)3D數(shù)據(jù)文件的標(biāo)準(zhǔn)化,以及與其他通用的同類軟件之間的數(shù)據(jù)交換處理;(5)可視化顯示模塊:為地質(zhì)建模、交互編輯、空間分析、專題應(yīng)用提供一個(gè)三維可視化的環(huán)境,要求快速、逼真、多形式;(6)交互編輯模塊:封裝三維可視化平臺(tái)的常用編輯功能,要求方便快捷人性化;(7)地質(zhì)建模模塊:負(fù)責(zé)地表、地質(zhì)體、地質(zhì)工程建筑等的模型構(gòu)建;(8)空間分析模塊:封裝地質(zhì)空間的常規(guī)分析方法;(9)專題應(yīng)用模塊:總結(jié)地質(zhì)信息化工作的項(xiàng)目成果,發(fā)展基于平臺(tái)的專題應(yīng)用產(chǎn)品。如礦山、地質(zhì)調(diào)查、
13、城市建設(shè)、地下管線、油氣盆地、水文地質(zhì)、工程地質(zhì)、災(zāi)害地質(zhì)等專題。QuantyView3D模塊組成本次實(shí)驗(yàn)利用Visual C+ 2010開(kāi)發(fā)工具,基于QuantyView提供的二次開(kāi)發(fā)包(SDK),通過(guò)SDK包的一系列動(dòng)態(tài)鏈接庫(kù),搭建專題應(yīng)用軟件架構(gòu),能夠?qū)崿F(xiàn)一般的地學(xué)三維可視化功能。以數(shù)字礦山產(chǎn)品為例,QuantyView3D的SDK開(kāi)發(fā)包主要包括數(shù)學(xué)庫(kù)GV3dMath、實(shí)用庫(kù)GV3dUser、圖形庫(kù)GV3dBase、算法庫(kù)GV3dAlgorithms、輸入輸出庫(kù)GV3dFileIO、資源庫(kù)GV3dRes、框架庫(kù)GV3dFrame以及三維系統(tǒng)原型QuantyView3D?;诖硕伍_(kāi)發(fā)包,
14、開(kāi)發(fā)人員可以開(kāi)發(fā)地質(zhì)專題如數(shù)字礦山的專題動(dòng)態(tài)庫(kù)GV3dMine,更進(jìn)一步可以基于QuantyView3D系統(tǒng)原型快速開(kāi)發(fā)專題產(chǎn)品,如“紫金山礦區(qū)三維可視化系統(tǒng)”?;赒uantyView3D的專題動(dòng)態(tài)庫(kù)及產(chǎn)品二次開(kāi)發(fā)架構(gòu)其中,GV3dMath庫(kù)包含有常用的數(shù)學(xué)計(jì)算函數(shù);GV3dUser庫(kù)主要是簡(jiǎn)單的GUI類;GV3dBase庫(kù)是SDK包的核心,包含有圖形對(duì)象類;GV3dAlgotithms庫(kù)主要是各類分析函數(shù);GV3dFileIO庫(kù)包含有對(duì)一些常用三維格式的數(shù)據(jù)文件的輸入輸出函數(shù);GV3dRes庫(kù)是對(duì)話框等界面資源;GV3dFrame庫(kù)集成了Document及View的基本框架,避免了開(kāi)發(fā)人員
15、重復(fù)三維可視化環(huán)境框架的搭建開(kāi)發(fā)。在整體架構(gòu)上,QuantyView3D采用的是兩線交叉模式,一方面從三維可視化環(huán)境角度分為“World-Project-Looker-Render”模式,另一方面從數(shù)據(jù)組織上分為“Project-Map-Layer-3dObject”模式。其中,CGV3dWorld類總管三維可視化環(huán)境;CGV3dProject類負(fù)責(zé)三維數(shù)據(jù)對(duì)象的組織,它采用的是“Project-Map-Layer-Object”模式,即一個(gè)工程(Porject)下有多個(gè)圖幅(Map),一個(gè)圖幅包含有多個(gè)圖層(Layer),一個(gè)圖層包含有多個(gè)圖形對(duì)象(3dObject),圖形對(duì)象主要是點(diǎn)(CG
16、V3dPoint)、線(CGV3dPolyline)、面(CGV3dPolygon與CGV3dSurface)、體(CGV3dPolyhedron)等幾種基本圖元類。QuantyView3D基本框架實(shí)驗(yàn)步驟:QuantyView3D的SDK包主要包括build、include、lib、libd等四個(gè)文件夾,其中build文件夾主要是主框架或其他動(dòng)態(tài)庫(kù)的源碼文件夾,include是QuantyView3D平臺(tái)二次開(kāi)發(fā)用到的頭文件,用戶自定義的動(dòng)態(tài)庫(kù)的頭文件也可統(tǒng)一放到該文件夾,lib文件夾是32位Release版本的平臺(tái)庫(kù),libd文件夾是32位Debug版本的平臺(tái)庫(kù)。一般的二次開(kāi)發(fā)主要是程序員
17、根據(jù)應(yīng)用專題開(kāi)發(fā)動(dòng)態(tài)庫(kù)或者應(yīng)用程序EXE,源碼一般放在build文件夾中,導(dǎo)出庫(kù)或者應(yīng)用EXE一般放到lib或者libd中。下面以32位的Debug版的專題動(dòng)態(tài)庫(kù)和EXE的創(chuàng)建及配置為例,介紹了QuantyView3D的二次開(kāi)發(fā)基本過(guò)程。1)專題動(dòng)態(tài)庫(kù)創(chuàng)建及配置以MFC Extension Dll為例,創(chuàng)建一個(gè)專題動(dòng)態(tài)庫(kù),如“GV3dMine.dll”,其工程名稱為GV3dMine,放在build下的3DFrame或者ours文件夾下。再設(shè)置好動(dòng)態(tài)庫(kù)屬性頁(yè)的一些配置參數(shù),如下圖是一個(gè)參數(shù)設(shè)置示例:n “字符集”設(shè)置為“使用多字節(jié)字符集”;(如圖1)n “輸出路徑”為“.libd”;(如圖1)n
18、 “中間文件路徑”設(shè)置為“.midx86d$(ProjectName)”;(如圖1)n “附加庫(kù)目錄”設(shè)置為“$(OutDir)”; (如圖2)n “附加依賴項(xiàng)”設(shè)為“mpr.lib;glut32.lib;GV3dModeling.lib;GV3dUser.lib;GV3dMath.lib;GV3dBase.lib;GV3dAlgorithms.lib;GV3dFileIO.lib;GV3dRes.lib;GV3dFrame.lib;Geoattribute.lib;geoado.lib;Image.lib;jpeg.lib;zlib.lib;j2k.lib;png.lib;jasper.li
19、b;jbig.lib;spzip.lib;tiff.lib;MathLib.lib;ThirdlyLibrary.lib;AlgorithmsLib.lib;GdiPlus.lib;geobase.lib;MapProjections.lib;GeoObjBase.lib;GeoStruct.lib;GeoGeometry.lib;GeoBaseUI.lib”。(如圖3)專題動(dòng)態(tài)庫(kù)屬性配置(1)專題動(dòng)態(tài)庫(kù)屬性配置(2)專題動(dòng)態(tài)庫(kù)屬性配置(3)在使用時(shí),在頭文件stdafx.h中或者實(shí)現(xiàn)文件的開(kāi)頭加上相應(yīng)的包含文件即可,例如:至此,一個(gè)專題動(dòng)態(tài)庫(kù)已經(jīng)創(chuàng)建完成了,下一步的工作就是基于QuantyV
20、iew3D的SDK包針對(duì)地質(zhì)專題需求開(kāi)發(fā)所屬的功能接口了。2)專題EXE的創(chuàng)建及界面配置以MFC 應(yīng)用程序MDI為例,創(chuàng)建一個(gè)專題EXE,如“QuantySoft.exe”,其工程名稱為QuantySoft,放在build下的3DFrame或者ours文件夾下。再設(shè)置好應(yīng)用程序?qū)傩皂?yè)的一些配置參數(shù),如下圖是一個(gè)參數(shù)設(shè)置示例:n “字符集”設(shè)置為“使用多字節(jié)字符集”;(如圖4)n “輸出路徑”為“.libd”;(如圖4)n “中間文件路徑”設(shè)置為“.midx86d$(ProjectName)”;(如圖4)n “附加庫(kù)目錄”設(shè)置為“$(OutDir)”; (如圖5)n “附加依賴項(xiàng)”設(shè)為“mpr.
21、lib;glut32.lib;GV3dModeling.lib;GV3dUser.lib;GV3dMath.lib;GV3dBase.lib;GV3dAlgorithms.lib;GV3dFileIO.lib;GV3dRes.lib;GV3dFrame.lib;Geoattribute.lib;geoado.lib;Image.lib;jpeg.lib;zlib.lib;j2k.lib;png.lib;jasper.lib;jbig.lib;spzip.lib;tiff.lib;MathLib.lib;ThirdlyLibrary.lib;AlgorithmsLib.lib;GdiPlus.l
22、ib;geobase.lib;MapProjections.lib;GeoObjBase.lib;GeoStruct.lib;GeoGeometry.lib;GeoBaseUI.lib”。(如圖6)專題應(yīng)用程序EXE屬性配置(4)專題應(yīng)用程序EXE屬性配置(5)專題應(yīng)用程序EXE屬性配置(6)在頭文件stdafx.h中或者實(shí)現(xiàn)文件的開(kāi)頭加上相應(yīng)的包含文件即可,例如:至此,一個(gè)專題應(yīng)用程序EXE已經(jīng)創(chuàng)建完成了,下一步的工作就是基于QuantyView3D的SDK包針對(duì)地質(zhì)專題需求開(kāi)發(fā)所屬的功能了。下圖是基于QuantyView3D框架開(kāi)發(fā)的一些地質(zhì)專題軟件產(chǎn)品: 地質(zhì)專題軟件產(chǎn)品系列實(shí)例實(shí)驗(yàn)結(jié)論
23、:在實(shí)驗(yàn)結(jié)束以后,根據(jù)自己做實(shí)驗(yàn)的情況,以實(shí)習(xí)論文形式提交個(gè)人實(shí)驗(yàn)心得和實(shí)驗(yàn)結(jié)論。課后練習(xí):基于QuantyView SDK自己動(dòng)手搭建一個(gè)專題軟件框架,并能導(dǎo)入數(shù)據(jù)進(jìn)行三維可視化展示。實(shí)驗(yàn)四 基于QuantyView的功能開(kāi)發(fā)實(shí)驗(yàn)?zāi)康模?、熟悉地學(xué)三維可視化的基本概念和技術(shù)原理,了解QuantyView的二次開(kāi)發(fā)過(guò)程。2、了解QuantView基本三維對(duì)象的數(shù)據(jù)結(jié)構(gòu)及其創(chuàng)建。3、熟悉基于QuantyView的路線飛行漫游、鍵盤漫游、分層設(shè)色等功能的編程實(shí)現(xiàn)。實(shí)驗(yàn)原理:1)基本三維對(duì)象的數(shù)據(jù)結(jié)構(gòu)QuantyView3D基本三維圖形對(duì)象主要是點(diǎn)(CGV3dPoint)、線(CGV3dPolyli
24、ne)、面(CGV3dPolygon與CGV3dSurface)、體(CGV3dPolyhedron)等幾種圖元類,均由圖層CGV3dLayer進(jìn)行管理(見(jiàn)GV3dBase下的GV3d.h)。如下圖,分別表示了線對(duì)象、多邊形對(duì)象、曲面對(duì)象、標(biāo)注對(duì)象的主要數(shù)據(jù)組織。每個(gè)空間基本對(duì)象包含一個(gè)區(qū)別于其它對(duì)象的唯一標(biāo)識(shí)即對(duì)象ID,除此外,線對(duì)象包括顏色值、線型、長(zhǎng)度、寬度等屬性;多邊形對(duì)象包括面積、填充方案屬性;曲面對(duì)象包括面積屬性。多邊形對(duì)象和曲面對(duì)象都是面結(jié)構(gòu),它們的區(qū)別在于空間坐標(biāo)點(diǎn)的組織不同。嚴(yán)格上說(shuō),標(biāo)注對(duì)象只是系統(tǒng)的輔助對(duì)象,它僅有一個(gè)空間坐標(biāo)位置,不具有幾何形態(tài),在系統(tǒng)中起標(biāo)注說(shuō)明的作用
25、。QuantyView3D的體對(duì)象CGV3dPolyhedron是用封閉的面表達(dá)的,所采用的數(shù)據(jù)結(jié)構(gòu)與CGV3dPolygon類似。另外,還有從基本圖元類派生出的其它對(duì)象類型,比如塊對(duì)象,是線、多邊形、曲面等對(duì)象的組合。在QuantyView3D中可通過(guò)對(duì)象屬性對(duì)話框設(shè)置他們的屬性,如下圖。 以CGV3dPolygon為例,主要的數(shù)據(jù)成員包括坐標(biāo)點(diǎn)列、拓?fù)浣Y(jié)構(gòu)、顏色、紋理等信息。坐標(biāo)點(diǎn)列實(shí)際是一個(gè)POINT3d類型的數(shù)組,拓?fù)浣Y(jié)構(gòu)是UINT數(shù)組,顏色信息可以是所有坐標(biāo)節(jié)點(diǎn)用一個(gè)顏色,也可以每個(gè)節(jié)點(diǎn)使用不同的顏色,是CByteArray類型。多邊形曲面對(duì)象的數(shù)據(jù)一般如下:XYZ_NUMS,STR
26、UCT_SIZE,ALPHA坐標(biāo)數(shù)組結(jié)構(gòu)數(shù)組點(diǎn)色數(shù)組其中:XYZ_NUMS:坐標(biāo)節(jié)點(diǎn)的總數(shù),int型STRUCT_SIZE:結(jié)構(gòu)數(shù)組元素的總數(shù),int型ALPHA:透明度,BYTE型,從0到255坐標(biāo)數(shù)組:存放多邊形曲面對(duì)象節(jié)點(diǎn)的XYZ坐標(biāo)列,格式如下(x,y,z都是double型):X1,Y1,Z1X2,Y2,Z2Xn,Yn,Zn結(jié)構(gòu)數(shù)組:存放多邊形對(duì)象的組織結(jié)構(gòu),UINT型數(shù)據(jù)。如果STRUCT_SIZE=0則不存放結(jié)構(gòu)數(shù)組,多邊形對(duì)象使用缺省結(jié)構(gòu),否則需要讀取結(jié)構(gòu)數(shù)組,結(jié)構(gòu)數(shù)組的說(shuō)明如下:nGn,nG1_Ps,nG1_p1,nG1_p2,nG1_ps,nG2_Pq,nG2_p1,nG2_
27、p2,nG2_pq,nGn_Pm,nGn_p1,nGn_p2,nGn_pmnGn表示該多邊形曲面由多少個(gè)簡(jiǎn)單多邊形構(gòu)成,隨后是每個(gè)簡(jiǎn)單多邊形的結(jié)構(gòu),都是按照(點(diǎn)數(shù),每個(gè)結(jié)點(diǎn)k在坐標(biāo)列中的序號(hào))組織,結(jié)點(diǎn)在坐標(biāo)列中的序號(hào)從0開(kāi)始。缺省的結(jié)構(gòu)數(shù)組是表達(dá)的簡(jiǎn)單多邊形的數(shù)據(jù)組織,如多邊形g由一系列點(diǎn)0,1,2,3,4組成,則結(jié)構(gòu)數(shù)組為 1,5,0,1,2,3,4。點(diǎn)色數(shù)組:存放每個(gè)節(jié)點(diǎn)的顏色,與坐標(biāo)數(shù)組一一對(duì)應(yīng),每個(gè)顏色分量為BYTE型,從0到255。一般情況下,不會(huì)進(jìn)行點(diǎn)色設(shè)置,此時(shí)所有的結(jié)點(diǎn)用同一個(gè)顏色。如果處于點(diǎn)色狀態(tài),則點(diǎn)色數(shù)組組織如下:R1,G1,B1R2,G2,B2Rn,Gn,Bn如處于非
28、點(diǎn)色狀態(tài),及所有點(diǎn)用同一顏色,則點(diǎn)色數(shù)組組織為:R,G,B針對(duì)多邊形對(duì)象的常用方法包括(詳見(jiàn)QuantyView3D二次開(kāi)發(fā)手冊(cè)):獲取對(duì)象名稱:CString CGV3dObject:GetName();設(shè)置對(duì)象名稱:void CGV3dObject:SetName(const CString szName);獲取坐標(biāo)點(diǎn)列:void CGV3dAtom:GetAll(CArray& data);設(shè)置坐標(biāo)點(diǎn)列:void CGV3dAtom:SetAll(CArray& data);獲取對(duì)象顏色:COLORREF CGV3dObject:GetColor();設(shè)置對(duì)象顏色:void CGV3dO
29、bject:SetColor(const COLORREF cr);是否打開(kāi)了點(diǎn)色開(kāi)關(guān):BOOL CGV3dAtom:IsApplyColors();打開(kāi)/關(guān)閉點(diǎn)色開(kāi)關(guān):void CGV3dAtom:ApplyColors(BOOL bApply = TRUE); 設(shè)置點(diǎn)色:void CGV3dAtom:SetDotColors(BYTE* byRs, BYTE* byGs, BYTE* byBs, int n);獲取點(diǎn)色:void CGV3dAtom:GetDotColors(CByteArray * pArray);獲取多邊形拓?fù)浣Y(jié)構(gòu):void CGV3dPolygon:GetPolygo
30、ns(GV3dWARRAY & ps);設(shè)置多邊形拓?fù)浣Y(jié)構(gòu):void CGV3dPolygon:SetPolygons(GV3dWARRAY & ps);獲取對(duì)象類型:UINT CGV3dObject:GetClass();其返回值見(jiàn)CLASS_GV3D_TYPE定義(GV3dBase下的gv3dCommon.h)與圖元對(duì)象相關(guān)的圖層的常用方法包括:獲取圖層中圖元對(duì)象的總數(shù):int CGV3dLayer:GetCount();獲取指定序號(hào)的圖元對(duì)象:CGV3dObject* CGV3dLayer:GetObjectAt(int nIndex);向圖層中增加圖元對(duì)象:int CGV3dLayer
31、:AddObject(CGV3dObject* p3dObj, BOOL bHaveDeleted = FALSE);2)多視圖顯示原理對(duì)于三維可視化視圖而言,重要的三要素為:觀察者(或稱為相機(jī))位置Position、視點(diǎn)位置CenterPosition、觀察者向上方向UpDirection。根據(jù)觀察者的位置、觀察點(diǎn)、觀察者向上矢量能夠確定觀察三維世界的角度,從而顯示三維實(shí)體在不同角度下的各種形態(tài)。視線方向是從觀察者到視點(diǎn)的矢量方向,QuantyView3D提供全三維空間任意角度觀察顯示的功能,特別的是觀察者沿著+x軸、逆著+x軸、沿著+y軸、逆著+y軸、沿著+z軸、逆著+z軸等幾個(gè)常用角度視
32、圖,分別為左視圖、右視圖、正視圖、后視圖、底視圖、俯視圖。如下圖所示。這六種常用的視圖其視線方向以及觀察者向上的方向(矢量)如下表所示,具體的觀察姿態(tài)要根據(jù)實(shí)際數(shù)據(jù)來(lái)定。視圖視線方向觀察者向上方向俯視圖(0, 0, -1)(0, 1, 0)底視圖(0, 0, 1)(0, -1, 0)正視圖(0, 1, 0)(0, 0, 1)后視圖(0, -1, 0)(0, 0, -1)左視圖(1, 0, 0)(0, 0, 1)右視圖(-1, 0, 0)(0, 0, 1)3)三維飛行漫游的基本原理在三維系統(tǒng)中,經(jīng)常需要沿著某一路線觀察沿途的景觀或者三維實(shí)體內(nèi)部的結(jié)構(gòu),稱作路線漫游或者路線飛行。在QuantyVi
33、ew3D中,可根據(jù)選定的一條飛行路線,實(shí)現(xiàn)路線漫游效果。實(shí)現(xiàn)原理和方法的關(guān)鍵是設(shè)置觀察者的位置、觀察點(diǎn)、以及觀察者向上的方向,以模擬真實(shí)的飛行器沿著路線進(jìn)行飛行。比如,可以設(shè)置觀察者的位置在路線上方,觀察點(diǎn)可以在路線前進(jìn)的方向上的某一點(diǎn),觀察者向上的方向可以為(0,0,1)等,要達(dá)到更逼真、更復(fù)雜的飛行瀏覽,需對(duì)這些參數(shù)進(jìn)行更復(fù)雜的設(shè)置。效果如下圖所示: 調(diào)整觀察者的方法主要有(詳見(jiàn)GV3dBase下的GV3d.h):獲取觀察者位置:void CGV3dLooker:GetPosition(POINT3d Position);設(shè)置觀察者位置:void CGV3dLooker:SetPositi
34、on(POINT3d Position);獲取視點(diǎn)的位置:void CGV3dLooker:GetCenter(POINT3d Center);設(shè)置視點(diǎn)的位置:void CGV3dLooker:SetCenter(POINT3d Center);獲取觀察者的向上方向:void CGV3dLooker:GetUpDirection(POINT3d UpDirection);設(shè)置觀察者的向上方向:void CGV3dLooker:SetUpDirection(POINT3d UpDirection);基于這些方法,模擬飛行器觀察的姿態(tài),就可以實(shí)現(xiàn)復(fù)雜的三維飛行漫游了,如下圖所示:4)分層設(shè)色的基本
35、原理在三維系統(tǒng)中,有時(shí)需要根據(jù)不同的高程賦予不同的顏色,以達(dá)到生動(dòng)顯示不同高低范圍的模型,例如DEM。QuantyView支持線、面、體等實(shí)體的分層設(shè)色,由選定的或者自定義的顏色表,根據(jù)不同的高程自動(dòng)賦予相應(yīng)的顏色,達(dá)到最佳的渲染效果。如下圖:其基本原理是:通過(guò)給三維實(shí)體的坐標(biāo)節(jié)點(diǎn)賦不同的顏色值,根據(jù)兩點(diǎn)的顏色值(RGB值),進(jìn)行插值計(jì)算兩點(diǎn)間的任意一點(diǎn)的顏色值,如下圖所示的顏色立方體。 針對(duì)線、面、體等對(duì)象的點(diǎn)色設(shè)置的主要方法如下(詳見(jiàn)QuantyView二次開(kāi)發(fā)手冊(cè)):打開(kāi)/關(guān)閉點(diǎn)色開(kāi)關(guān):void CGV3dAtom:ApplyColors(BOOL bApply = TRUE); 設(shè)置點(diǎn)
36、色:void CGV3dAtom:SetDotColors(BYTE* byRs, BYTE* byGs, BYTE* byBs, int n);獲取點(diǎn)色:void CGV3dAtom:GetDotColors(CByteArray * pArray);實(shí)驗(yàn)步驟:1)搭建基于QuantyView的三維可視化軟件框架根據(jù)上節(jié)實(shí)驗(yàn)內(nèi)容和步驟,以及QuantyView SDK包快速搭建自己的三維可視化軟件框架。本次實(shí)驗(yàn)將在這個(gè)軟件框架上,通過(guò)增加功能菜單,編碼實(shí)現(xiàn)創(chuàng)建基本幾何對(duì)象、三維場(chǎng)景的飛行漫游以及分層設(shè)色等功能。2)在當(dāng)前圖層中創(chuàng)建一個(gè)多邊形對(duì)象l 增加“創(chuàng)建自己的對(duì)象”菜單項(xiàng),如下:#def
37、ine IDM_NEW_MY_PGON 33938-POPUP 創(chuàng)建(&N)MENUITEM 創(chuàng)建自己的對(duì)象, IDM_NEW_MY_PGONEND-STRINGTABLEBEGIN IDM_NEW_MY_PGON 創(chuàng)建自定義對(duì)象n向當(dāng)前圖層中添加一個(gè)自定義的多邊形對(duì)象ENDl 給這個(gè)菜單項(xiàng),添加消息映射,如下:QuantyView3DView.h class CQuantyView3DView : public CGV3dViewpublic:afx_msg void OnNewMyPgon();QuantyView3DView.cpp BEGIN_MESSAGE_MAP(CQuantyVi
38、ew3DView, CGV3dView)ON_COMMAND(IDM_NEW_MY_PGON, &CQuantyView3DView:OnNewMyPgon)END_MESSAGE_MAP()void CQuantyView3DView:OnNewMyPgon()/ TODO: Add your command handler code herel 添加創(chuàng)建自定義的對(duì)象(一個(gè)正方體的表面)代碼,可以如下:QuantyView3DView.cpp void CQuantyView3DView:OnNewMyPgon()CGV3dDocument* pDoc = GetDocument();ASS
39、ERT_VALID(pDoc);/ 獲取當(dāng)前圖層CGV3dLayer* pCurLayer = pDoc-m_Project.GetCurrentLayer();if(!pCurLayer) return;/ 給當(dāng)前圖層中創(chuàng)建一個(gè)新的對(duì)象(正方體表面)CArray data;GV3dWARRAY wa;XYZ pt;pt.x=-1.0, pt.y=-1.0, pt.z=-1.0; data.Add(pt);/ 0號(hào)點(diǎn)pt.x= 1.0, pt.y=-1.0, pt.z=-1.0; data.Add(pt);/ 1號(hào)點(diǎn)pt.x= 1.0, pt.y= 1.0, pt.z=-1.0; data.A
40、dd(pt);/ 2號(hào)點(diǎn)pt.x=-1.0, pt.y= 1.0, pt.z=-1.0; data.Add(pt);/ 3號(hào)點(diǎn)pt.x=-1.0, pt.y=-1.0, pt.z= 1.0; data.Add(pt);/ 4號(hào)點(diǎn)pt.x= 1.0, pt.y=-1.0, pt.z= 1.0; data.Add(pt);/ 5號(hào)點(diǎn)pt.x= 1.0, pt.y= 1.0, pt.z= 1.0; data.Add(pt);/ 6號(hào)點(diǎn)pt.x=-1.0, pt.y= 1.0, pt.z= 1.0; data.Add(pt);/ 7號(hào)點(diǎn)wa.Add(6);/ 6個(gè)面wa.Add(4);/ 第1個(gè)面有4
41、個(gè)點(diǎn)(底面)wa.Add(0); wa.Add(3); wa.Add(2); wa.Add(1);/ 分別為哪四個(gè)節(jié)點(diǎn)wa.Add(4);/ 第2個(gè)面有4個(gè)點(diǎn)(頂面)wa.Add(4); wa.Add(5); wa.Add(6); wa.Add(7);/ 分別為哪四個(gè)節(jié)點(diǎn)wa.Add(4);/ 第3個(gè)面有4個(gè)點(diǎn)(左面)wa.Add(0); wa.Add(4); wa.Add(7); wa.Add(3);/ 分別為哪四個(gè)節(jié)點(diǎn)wa.Add(4);/ 第4個(gè)面有4個(gè)點(diǎn)(右面)wa.Add(1); wa.Add(2); wa.Add(6); wa.Add(5);/ 分別為哪四個(gè)節(jié)點(diǎn)wa.Add(4);
42、/ 第5個(gè)面有4個(gè)點(diǎn)(前面)wa.Add(0); wa.Add(1); wa.Add(5); wa.Add(4);/ 分別為哪四個(gè)節(jié)點(diǎn)wa.Add(4);/ 第6個(gè)面有4個(gè)點(diǎn)(后面)wa.Add(2); wa.Add(3); wa.Add(7); wa.Add(6);/ 分別為哪四個(gè)節(jié)點(diǎn)/ 創(chuàng)建一個(gè)多邊形面對(duì)象CGV3dPolygon* pGon = new CGV3dPolygon;pGon-SetAll(data);pGon-SetPolygons(wa);pGon-SetName(自定義的多邊形);pGon-SetColor(RGB(255, 128, 0);/ 向圖層中添加該對(duì)象pCu
43、rLayer-AddObject(pGon);/ 刷新視圖Invalidate(FALSE);l 點(diǎn)擊該菜單,即可在視圖中看到自定義的對(duì)象,并可查看它的屬性: 3)實(shí)現(xiàn)鍵盤漫游增加“”、“”的鍵盤消息,以實(shí)現(xiàn)視圖的左右旋轉(zhuǎn)漫游。l 增加“”的WM_KEYDOWN消息處理: QuantyView3DView.h class CQuantyView3DView : public CGV3dViewpublic:afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); QuantyView3DView.cpp BEGIN_MESSA
44、GE_MAP(CQuantyView3DView, CGV3dView)ON_WM_KEYDOWN()END_MESSAGE_MAP()void CQuantyView3DView:OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)CGV3dDocument* pDoc = (CGV3dDocument*)GetDocument();ASSERT_VALID(pDoc);if (nChar=VK_LEFT)/ 向左旋轉(zhuǎn)漫游POINT3d eyePosition, center, up, eyeDirection, O=0.0, 0.0, 0.0,
45、Q;m_Looker.GetPosition(eyePosition);/ 獲取當(dāng)前觀察者姿態(tài)m_Looker.GetCenter(center);m_Looker.GetUpDirection(up);AsubB(eyePosition, center, eyeDirection);GetPntRotateOnLine(O, up, eyeDirection, Q, Radiansf(-10.0);/ 繞向上方向旋轉(zhuǎn)10度AaddB(center, Q, eyePosition);/ 計(jì)算出新的觀察者位置m_Looker.SetPosition(eyePosition);CGV3dView:
46、OnKeyDown(nChar, nRepCnt, nFlags);l 現(xiàn)在,在打開(kāi)的視圖中可以通過(guò)按“”鍵,實(shí)現(xiàn)了視圖的旋轉(zhuǎn)漫游,適用于對(duì)指定的地物進(jìn)行定位飛行查看。l 增加“”的WM_KEYDOWN消息處理,可相應(yīng)地實(shí)現(xiàn)視圖的反方向飛行漫游。至于其他的鍵盤漫游的實(shí)現(xiàn)原理與此類似。3)實(shí)現(xiàn)路線飛行漫游沿著指定的路線進(jìn)行飛行漫游,此處,路線用一條線對(duì)象表達(dá)。其步驟主要如下:l 增加“自定義路線漫游”菜單項(xiàng),如下:#define IDM_VIEW_MY_FLY 33939-POPUP 顯示(&V)MENUITEM 自定義路線漫游, IDM_VIEW_MY_FLYEND-STRINGTABLEBE
47、GIN IDM_VIEW_MY_FLY 自定義路線漫游n沿著指定的路線進(jìn)行飛行瀏覽ENDl 給這個(gè)菜單項(xiàng),添加消息映射,并增加WM_TIMER映射,如下:QuantyView3DView.h class CQuantyView3DView : public CGV3dViewpublic:afx_msg void OnViewMyFly();afx_msg void OnTimer(UINT_PTR nIDEvent);QuantyView3DView.cpp BEGIN_MESSAGE_MAP(CQuantyView3DView, CGV3dView)ON_COMMAND(IDM_VIEW_
48、MY_FLY, &CQuantyView3DView:OnViewMyFly)ON_WM_TIMER()END_MESSAGE_MAP()#define MY_FLY_TIMER 99/ 定義一個(gè)定時(shí)鐘的ID代號(hào)CArray myFlyLine;/ 飛行路線void CQuantyView3DView:OnViewMyFly()CGV3dDocument* pDoc = (CGV3dDocument*)GetDocument();ASSERT_VALID(pDoc);/ 獲取被選擇的線條對(duì)象作為飛行路線POSITION pos = pDoc-m_pSelList-GetHeadPosition
49、();while (pos)CGV3dObject* pObj = (CGV3dObject*)(pDoc-m_pSelList-GetNext(pos);if (pObj & pObj-GetClass()=CLASS_GV3D_POLYLINE)/ 如果選擇的對(duì)象時(shí)線條CGV3dPolyline* pLine = (CGV3dPolyline*)pObj;CArray data;pLine-GetAll(data);GetPartsPoint(data, myFlyLine, 1000);/ 將線條數(shù)據(jù)1000等分, 作為飛行路線的坐標(biāo)數(shù)據(jù)SetTimer(MY_FLY_TIMER, 30
50、, NULL);/ 激活定時(shí), 準(zhǔn)備漫游break;void CQuantyView3DView:OnTimer(UINT_PTR nIDEvent)if (nIDEvent=MY_FLY_TIMER)/ 自定義的路線漫游if(myFlyLine.GetSize()1)POINT3d eyePos, center, up;m_Looker.GetPosition(eyePos);m_Looker.GetCenter(center);/ 根據(jù)飛行路線計(jì)算觀察者位置以及視點(diǎn)位置, 保持兩者的距離不變double dDist = GetDistance(eyePos, center);XYZ eyeDirection;AsubB(myFlyLine1, myFlyLine0, eyeDirection);VecNormalize(eyeDirection);eyePos0 = myFlyLine0.x;eyePos1 = myFlyLine0.y;eyePos2 = myFlyLine0.z;center0 = ey
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 皮革壓花機(jī)工藝改進(jìn)考核試卷
- JAVA圖形界面框架與開(kāi)發(fā)經(jīng)驗(yàn)分享試題及答案
- 故事代替道理:《說(shuō)到就要做到》
- 2024年小型高效沼氣裝置資金需求報(bào)告代可行性研究報(bào)告
- 跨界合作私人飛機(jī)應(yīng)急滑梯租賃及廣告植入合同
- 2025年中國(guó)辦公室用木家具行業(yè)市場(chǎng)前景預(yù)測(cè)及投資價(jià)值評(píng)估分析報(bào)告
- 2025年中國(guó)白酒收儲(chǔ)行業(yè)市場(chǎng)規(guī)模調(diào)研及投資前景研究分析報(bào)告
- 旅游醫(yī)療保險(xiǎn)經(jīng)紀(jì)代理服務(wù)協(xié)議
- 金融存管安全風(fēng)險(xiǎn)管理合作協(xié)議
- 智能健身倉(cāng)健身數(shù)據(jù)安全保護(hù)與隱私政策合同
- 藥食同源培訓(xùn)教材課件
- 雞鴨屠宰生產(chǎn)企業(yè)安全風(fēng)險(xiǎn)分級(jí)管控資料
- 5S點(diǎn)檢表1(日檢查表)
- 工程物料五金商品清單大全及價(jià)格
- 訂單評(píng)審記錄表
- 河北XX鋼鐵2#高爐2017年擴(kuò)容大修(方案)
- (精心整理)林海雪原閱讀題及答案
- 19、38本翻譯附件104-bs10中文版
- 培訓(xùn)課件-安全工器具
- 溝槽支護(hù)及土方開(kāi)挖專項(xiàng)施工方案
- 3D打印教學(xué)演講(課堂PPT)
評(píng)論
0/150
提交評(píng)論