版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)一實(shí)驗(yàn)名稱Ogre部分仿真實(shí)驗(yàn)實(shí)驗(yàn)過程或?qū)嶒?yàn)程序(增加的代碼及代碼注解)1.從3Dmax8中導(dǎo)出mesh并添加mesh到場景1.1啟動3Dmax1.在安裝有3Dmax8的計算機(jī)上,能夠使用兩種不同的方法來啟動3Dmax8: (1)在桌面上雙擊“3Dmax8”圖標(biāo) (2)點(diǎn)擊“開始”菜單,在“程序”中的選擇“3Dmax8”觀看3Dmax8主窗口的布局。3Dmax8要緊由若干元素組成:菜單欄、工具欄、以及??吭谟疫叺拿蠲姘搴偷撞康母鞣N工具窗口。1.2使用3Dmax8建模并導(dǎo)出mesh1.2.1導(dǎo)出mesh的步驟如下: 1.啟動3Dmax8 2.在停靠在右邊的命令面板中,點(diǎn)擊幾何體按鈕 3.選
2、擇標(biāo)準(zhǔn)幾何體 4.在對象類型中選擇對象(如:長方體),在“前”視口中,通過單擊鼠標(biāo)左鍵,創(chuàng)建出模型 5.在工具欄中單擊“材質(zhì)編輯器”按鈕,通過上步操作,可開啟“材質(zhì)編輯器”對話框 6.在“材質(zhì)編輯器”對話框中,點(diǎn)擊漫反射旁方形按鈕,進(jìn)入到“材質(zhì)/貼圖掃瞄器” 7.在“材質(zhì)/貼圖掃瞄器”中選擇位圖,鼠標(biāo)左鍵雙擊位圖 8.彈出選擇位圖圖像文件對話框,從本地電腦中選擇一張圖片 9.選擇好圖片,在材質(zhì)編輯器對話框中,點(diǎn)擊將材質(zhì)指令給選定對象 10.點(diǎn)擊菜單欄上的oFusion按鈕,在彈出的菜單欄中選擇Export Scene 11選擇文件夾并輸入文件名qiu,點(diǎn)擊保存,在彈出的對話框中勾選Copy T
3、extures,點(diǎn)擊Export按鈕,現(xiàn)在mesh文件已成功導(dǎo)出1.3導(dǎo)出的mesh文件放入到指定位置 1.找到mesh文件,把mesh文件放到當(dāng)前電腦的OgreSDK的models中,以我的電腦為例,OgerSDK放在C盤中; 2.打開C盤,找到OgreSDK,打開OgreSDK,找到media,打開media文件夾,找到models,打開models文件夾,將mesh文件復(fù)制到此文件夾中; 3.將導(dǎo)出mesh文件附帶的材質(zhì)文件qiu.material放到OgreSDK的scripts(C:OgreSDKmediamaterialsscripts)中;4.將導(dǎo)出mesn文件時同時導(dǎo)出的圖片放
4、到OgreSDK的textures(C:OgreSDKmediamaterialstextures)中。1.4 mesh文件導(dǎo)入到場景中1.4.1 mesh文件導(dǎo)入到場景中步驟: 1.啟動vs2008 2.在“文件”菜單中選擇“打開”,然后單擊“項(xiàng)目/解決方案” 3.找到項(xiàng)目MFCOgre1,選擇MFCOgre1.sln,點(diǎn)擊打開按鈕 4.打開MFCOgre1View.h,創(chuàng)建節(jié)點(diǎn)變量,SceneNode *node1(MFCOgre1View.h 中的第55行),創(chuàng)建實(shí)體變量 Entity* ent1(MFCOgre1View.h 中的第57行); 5.打開MFCOgre1View.cpp,
5、 在MFCOgre1View.cpp的構(gòu)造函數(shù)中對創(chuàng)建的節(jié)點(diǎn)和實(shí)體對象初始化node1(NULL)、 ent1(NULL)(在MFCOgre1View.cpp 的第37行和第39行) 6.獵取根節(jié)點(diǎn)的子節(jié)點(diǎn),并將其賦值給節(jié)點(diǎn)node1( MFCOgre1View.cpp 的第225行) 7.給創(chuàng)建的實(shí)體對象ent1賦值( MFCOgre1View.cpp 的第224行) 8.設(shè)置節(jié)點(diǎn)的位置( MFCOgre1View.cpp 的第226行)9.將實(shí)體附在節(jié)點(diǎn)上( MFCOgre1View.cpp 的第227行)1.5生成項(xiàng)目 使用“生成項(xiàng)目”功能能夠?qū)⒊绦虻脑创a文件編譯為可執(zhí)行的二進(jìn)制文件,
6、方法十分簡單:在“生成”菜單中選擇“生成解決方案”。 在項(xiàng)目生成過程中,“輸出”窗口會實(shí)時顯示生成的進(jìn)度和結(jié)果。假如源代碼中不包含語法錯誤,會在最后提示生成成功,如下圖所示:1.6執(zhí)行項(xiàng)目 在MFCOgre1中選擇“調(diào)試”菜單中的“開始執(zhí)行(不調(diào)試)”,能夠執(zhí)行剛剛生成的程序,運(yùn)行出實(shí)驗(yàn)要求的結(jié)果。鍵盤輸入操縱攝像機(jī)的移動2.1添加按鍵消息響應(yīng) 1.在菜單欄中選擇視圖 2.點(diǎn)擊視圖,在彈出的菜單窗口中,選擇類視圖 3.在類視圖中,選擇類MFCOgre1View 4.再次選擇菜單欄中的視圖,在菜單的菜單窗口中,選擇其他窗口 5.在其他窗口中,選擇屬性窗口 6.在屬性窗口中,點(diǎn)擊消息按鈕7.找到W
7、M_KEYDOWN,添加OnKeyDown()消息響應(yīng)函數(shù)2.2在OnKeyDown()消息響應(yīng)函數(shù)中,添加按鍵操縱1.找到MFCOgre1View.cpp的onKeyDown()( MFCOgre1View.cpp 的第296行)2.創(chuàng)建一個3維變量Vector3 trans = Vector3:ZERO;2.使用switch語句,推斷用戶按下的按鍵3.假如用戶按下的是A鍵,將變量trans的x坐標(biāo)減10,然后將攝像機(jī)移動到當(dāng)前的trans坐標(biāo)處(注:按鍵消息獵取的差不多上大寫字母),則攝像機(jī)向左移動,代碼如下:caseA: trans.x -=10; m_pCamera-moveRelat
8、ive(trans); break;4. 假如用戶按下的是D鍵,將變量trans的x坐標(biāo)加10,然后將攝像機(jī)移動到當(dāng)前的trans坐標(biāo)處(注:按鍵消息獵取的差不多上大寫字母),則攝像機(jī)向左移動caseD: trans.x +=10; m_pCamera-moveRelative(trans); break;2.3生成項(xiàng)目 使用“生成項(xiàng)目”功能能夠?qū)⒊绦虻脑创a文件編譯為可執(zhí)行的二進(jìn)制文件,方法十分簡單:在“生成”菜單中選擇“生成解決方案”。 在項(xiàng)目生成過程中,“輸出”窗口會實(shí)時顯示生成的進(jìn)度和結(jié)果。假如源代碼中不包含語法錯誤,會在最后提示生成成功,如下圖所示:2.4執(zhí)行項(xiàng)目 在MFCOgre1
9、中選擇“調(diào)試”菜單中的“開始執(zhí)行(不調(diào)試)”,能夠執(zhí)行剛剛生成的程序,運(yùn)行出實(shí)驗(yàn)要求的結(jié)果。添加動畫3.1添加動畫 1.在MFCOgreView1.h中創(chuàng)建void CreateAnimation(Ogre:String MyAnimation);( MFCOgreView1 中第77行) 2.創(chuàng)建一個全局變量AnimationState *as( MFCOgreView1.cpp 中第17行) 3.實(shí)現(xiàn)void CreateAnimation(Ogre:String MyAnimation);(MFCOgre1View.cpp中第319行) 4.推斷動畫是否存在,假如動畫存在,刪除已有的動畫
10、 5.使用sceneManager來創(chuàng)建一個animation,同時指定動畫的名字和幀的長度 6. 設(shè)置該段動畫的關(guān)鍵幀間幀的插值方式,那個地點(diǎn)使用線性 7. 使用animation創(chuàng)建為每個要驅(qū)動的node創(chuàng)建一個track, 比如那個地點(diǎn)我們只想讓一個結(jié)點(diǎn)(node,比如它上面掛著攝像機(jī))運(yùn)動,就只為他創(chuàng)建一個track就行了,第一個參數(shù)是那個track的編號 8. 關(guān)于每個track創(chuàng)建它的每個關(guān)鍵幀 9. 設(shè)置該幀的時刻點(diǎn) 10. 設(shè)置該幀處那個結(jié)點(diǎn)的位置和其他幾何狀態(tài) 11.設(shè)置動畫運(yùn)動狀態(tài) 12.在項(xiàng)目解決方案資源治理器中,找到MFCOgre1 13.右擊MFCOgre1,在彈出的
11、界面中,選擇添加類 14.選擇MFC類,點(diǎn)擊添加,在類名中輸入MyFrameListener 15.在MyFrameListener.h中類MyFrameListener繼承FrameListener 16.在MyFrameListener.h中添加virtual bool frameStarted(const FrameEvent &evt);( 在MyFrameListener.h的第12行 ) 17.在MyFrameListener.cpp中重寫frameStart()函數(shù)(在MyFrameListener.cpp第14行),代碼如下:bool MyFrameListener:frame
12、Started(const FrameEvent &evt) if(NULL != as) as-addTime(evt.timeSinceLastFrame); return true; 18.在MFCOgre1View.cpp的構(gòu)造函數(shù)中創(chuàng)建關(guān)聯(lián)監(jiān)聽類對象(m_pRoot-addFrameListener(new MyFrameListener();)(在MFCOgre1View.cpp第50行) 19. 找到MFCOgre1View.cpp的onKeyDown()( MFCOgre1View.cpp 的第296行)使用switch語句,推斷用戶按下的按鍵,代碼如下:caseM: Crea
13、teAnimation(MyAnimation);break;實(shí)驗(yàn)結(jié)果(包括必要的截圖)依照前面的實(shí)驗(yàn)步驟,最終得到下面的截圖:將桌子那個實(shí)體模型導(dǎo)入到Ogre中,如下圖所示:該截圖講明mesh文件添加到場景中成功。將場景分不繞X軸、Y軸和Z軸旋轉(zhuǎn),如下圖所示繞X軸旋轉(zhuǎn):(2)繞Y軸旋轉(zhuǎn):繞Z軸旋轉(zhuǎn):同樣能夠通過添加如下代碼操縱攝像機(jī)的移動:caseA: trans.x -=10; m_pCamera-moveRelative(trans); break;因此,在執(zhí)行程序的時候,按鍵“A”能夠?qū)崿F(xiàn)場景的向左移動;caseD: trans.x +=10; m_pCamera-moveRelati
14、ve(trans); break;因此執(zhí)行程序的時候,按鍵“D”能夠?qū)崿F(xiàn)場景的向右移動。實(shí)驗(yàn)體會考慮題解答:如何操縱攝像機(jī)的上下移動、前后移動?解:操縱攝像機(jī)的上下移動能夠通過操縱攝像機(jī)的Z坐標(biāo),例如要是想要向上移動,則能夠使tran.z+=10,向下移動的話則能夠使tran.z-=10;操縱攝像機(jī)的前后移動則需要改變攝像機(jī)的Y坐標(biāo),例如要是想要向前移動,則能夠使tran.y+=10,向后移動的話則能夠使tran.y-=10。(2)如何操縱攝像機(jī)的旋轉(zhuǎn)?(函數(shù) void pitch(const Radian& angle); /繞X軸旋轉(zhuǎn) 函數(shù) void yaw(const Radian& a
15、ngle); /繞Y軸旋轉(zhuǎn) 函數(shù) void roll(const Radian& angle); /繞Z軸旋轉(zhuǎn))解:操縱攝像機(jī)的旋轉(zhuǎn)差不多在程序中實(shí)現(xiàn),如上面的截圖所示,通過函數(shù) void pitch(const Radian& angle),使得攝像機(jī)繞軸X旋轉(zhuǎn),具體每次旋轉(zhuǎn)的角度能夠在函數(shù)的參數(shù)中進(jìn)行設(shè)置;通過函數(shù) void yaw(const Radian& angle),使得攝像機(jī)繞軸Y旋轉(zhuǎn);通過函數(shù) void roll(const Radian& angle),使得攝像機(jī)繞軸Z旋轉(zhuǎn)。按下M鍵,實(shí)體球能夠沿著直線運(yùn)動,通過鍵盤操縱實(shí)體球,實(shí)體球是否能夠沿著曲線運(yùn)動?解:通過鍵盤操縱實(shí)體
16、球,實(shí)體球是能夠沿著曲線運(yùn)動的,只需要在相應(yīng)的操縱按鍵的開關(guān)語句中調(diào)用一個能夠讓實(shí)體球沿著曲線運(yùn)動的函數(shù),該實(shí)體球的運(yùn)動曲線能夠設(shè)置為BS曲線等等。實(shí)驗(yàn)感想 通過本次實(shí)驗(yàn),我初步認(rèn)識和了解了Ogre這款軟件,該軟件能夠創(chuàng)建三維場景,因此被用于游戲等等場合中。本次實(shí)驗(yàn),我自己按照實(shí)驗(yàn)指導(dǎo)書一步步的從用3Dmax創(chuàng)建三維實(shí)體模型,然后生成mesh文件,將mesh文件導(dǎo)入到Ogre場景中,給實(shí)體模型添加材質(zhì),同時通過添加相應(yīng)的代碼使得實(shí)體球能夠運(yùn)動起來,添加相應(yīng)的代碼使得場景左右移動、上下移動、前后移動和繞軸旋轉(zhuǎn)等等,這些所有的內(nèi)容盡管做的不是專門漂亮,然而讓自己嘗試了在Ogre中如何完整的創(chuàng)建簡單
17、的三維模型。 實(shí)驗(yàn)二 實(shí)驗(yàn)名稱PathFinder疏散仿真實(shí)驗(yàn)實(shí)驗(yàn)過程或?qū)嶒?yàn)程序(增加的代碼及代碼注解)1、Create Geometry On the View menu, click Units and select EN to display measurements using the English system.To specify snap grid spacing:1. On the View menu, click Edit Snap Grid.2. In the Specify snap grid spacing menu, type 2.0. By default, le
18、ngth units will be in feet, however, you can type a value followed by a unit (e.g.: in or m) and the length will be converted to feet. Click OK.To define the default floor height:1. In the Floor Height box(on the above Toolbar), type 12.0.To create the room:1. In the View toolbar, click Top View ( )
19、.2. In the Tools toolbar, click Add a Rectangular Room ( ).3. In the Z Plane box, type 0.0.4. In the coordinate boxes enter the following values: X1: 0.0, Y1: 0.0, X2: 60.0, Y2: 40.0. 5. Click Create.Replicate the room to create three floors.1. In the View toolbar, click the Selection Tool icon . 2.
20、 Select the room.3. In the Tools toolbar, click the Move Objects icon .4. Select Copy Mode. 5. In the Copies box type 2.6. In the Move Z box, type 12.0.7. Click Copy/Move.8. Click the Zoom Fit icon to rescale the view.Your model should now look like Figure 1. Figure 1: The floors in the modelTo defi
21、ne the landings:1. Create the first landing at Z=6.0 ft. In the View toolbar, click Top View ( ). In the Tools toolbar, click Add a Rectangular Room ( ). In the Z Plane box, type 6.0. In the coordinate boxes enter the following values: X1: -13.5, Y1: 16.0, X2: -9.5, Y2: 24.0. Click Create.2. Replica
22、te the landing. In the View toolbar, click the Selection Tool icon . Select the landing. In the Tools toolbar, click the Move Objects icon . Select Copy Mode. In the Copies box type 1.In the Move Z box, type 12.0. Click Copy/Move.3. Repeat for the landing on the opposite side. In the View toolbar, c
23、lick Top View ( ). In the Tools toolbar, click Add a Rectangular Room ( ). In the Z Plane box, type 6.0. In the coordinate boxes enter the following values: X1: 69.5, Y1: 16.0, X2: 73.5, Y2: 24.0. Click Create. Replicate the landing. In the View toolbar, click the Selection Tool icon . Select the la
24、nding. In the Tools toolbar, click the Move Objects icon . Select Copy Mode. In the Copies box type 1. In the Move Z box, type 12.0. Click Copy/Move.Your model should now look like Figure 2. Figure 2:The floors and landings in the modelTo add the first stairway on the left side of the building:1. In
25、 the Tools toolbar, click Create Stairs between two edges ( ).2. In the Stair Width box, type 44.0 in. In the Door 1 Width box and the Door 2 Width box, type 32.0 in. 3. Click on the lower landing and position the stair towards the front side of the landing. Click on the lower floor to create the st
26、airs from the landing to the lower floor, Figure 3.4. Use the Move Objects tool to make 1 copies of the stair, separated by 12 ft in the Z direction.5. Add the stairs that go up from the landing. Click on the lower landing and position the stair opposite the first stairs. Click on the second floor t
27、o create the stairs from the landing to the second floor.6. Use the Move Objects tool to make a copy of the stair, separated by 12 ft in the Z direction.7. Repeat on the other side of the model. This time, position the first stairs on the back side of the landing. Figure 3 : First stairs on left sid
28、e of buildingAdd the exit doors:1. Select the door tool ( ) and in the Max Width box, type 120.0 in.2. Place a door adjacent to both stairs on the lowest floor. These doors are wide enough that exit from the first floor does not affect the egress time. 3. Name the doors Right Exit and Left Exit to a
29、id in later plotting of the exit rates through each door, Figure 4. Figure 4: The left ExitAdd OccupantsTo add occupants:1. Select the first (lowest) floor. On the Model menu click Add Occupants. For Occupant Count select By Number and type 100. Click OK.2. Repeat for each floor, selecting the corre
30、sponding profile for each floor. When finished, your model should look like Figure 5Figure 5: Pathfinder model with occupants三實(shí)驗(yàn)結(jié)果(包括必要的截圖)1、實(shí)驗(yàn)最終結(jié)果截圖顯示:2、仿真截圖顯示:人群疏散仿真模擬截圖顯示:四實(shí)驗(yàn)體會本次實(shí)驗(yàn)要緊確實(shí)是熟悉Pathfinder軟件的使用,在本次實(shí)驗(yàn)的過程中,我覺得這款軟件的功能依舊專門強(qiáng)大的,也專門有味,我們能夠在那個平臺上來進(jìn)行人群疏散的仿真。該平臺能夠?qū)iT好的將模型疏散和人群疏散顯示出來。然而我覺得這款軟件有一個缺點(diǎn),
31、那確實(shí)是樓梯的邊緣檢測做的不夠細(xì)致,直接導(dǎo)致人群疏散的時候下樓的人們的腳能夠被看見。 實(shí)驗(yàn)三 一實(shí)驗(yàn)名稱基于OGRE的Boids算法實(shí)驗(yàn)二實(shí)驗(yàn)過程或?qū)嶒?yàn)程序(增加的代碼及代碼注解)3.1基于OGRE的Boids算法實(shí)現(xiàn)1.拷貝MyBoids.h,MyBoids.cpp到E:MFCOgre1MFCOgre1(對應(yīng)的項(xiàng)目位置)2.添加MyBoids.h、MyBoids.cpp到工程中3.在MFCOgre1View.h中引入頭文件MyBoids.h(#include MyBoids.h)4.在MFCOgre1View.cpp的OnInitialUpdate()函數(shù)(OnInitialUpdate()
32、在MFCOgre1View的第115行)中,添加函數(shù)AllInit();5.打開MFCOgre1View.h,在類中創(chuàng)建節(jié)點(diǎn)變量SceneNode* node,實(shí)體變量Entity* ent,節(jié)點(diǎn)變量數(shù)組SceneNode* node4BoidsNum,實(shí)體變量數(shù)組Entity* ent4BoidsNum,字符串?dāng)?shù)組Ogre:String NameBoidsNum。6.打開MFCOgre1View.cpp,在MFCOgre1View.cpp的構(gòu)造函數(shù)中對創(chuàng)建的節(jié)點(diǎn)和實(shí)體對象以及字符串?dāng)?shù)組初始化7.在MFCOgre1View.cpp的CreateEntity函數(shù)中創(chuàng)建實(shí)體,并將實(shí)體綁定到節(jié)點(diǎn)上8
33、.在MFCOgre1View.cpp的OnTimer消息響應(yīng)函數(shù)中添加CubMotion(), 設(shè)置節(jié)點(diǎn)的node的位置;添加BoidsMotion(),設(shè)置節(jié)點(diǎn)數(shù)組node4BoidsNum的位置3.2生成項(xiàng)目使用“生成項(xiàng)目”功能能夠?qū)⒊绦虻脑创a文件編譯為可執(zhí)行的二進(jìn)制文件,方法十分簡單:在“生成”菜單中選擇“生成解決方案”。 在項(xiàng)目生成過程中,“輸出”窗口會實(shí)時顯示生成的進(jìn)度和結(jié)果。假如源代碼中不包含語法錯誤,會在最后提示生成成功,如下圖所示:3.3執(zhí)行項(xiàng)目在MFCOgre1中選擇“調(diào)試”菜單中的“開始執(zhí)行(不調(diào)試)”,能夠執(zhí)行剛剛生成的程序,運(yùn)行出實(shí)驗(yàn)要求的結(jié)果。3.4添加代碼及注解1
34、、添加代碼 (1)for(int i=0;iBoidsNum;i+)/給每個Boids模型初始化名稱 if(i=0) Namei=a; else Namei=Namei-1+a; for(int i=0;iBoidsNum;i+)/為每個實(shí)體初始化 ent4i=NULL; for(int i=0;iRecalcLayout();ResizeParentToFit();(3)void CMFCOgre1View:CreateEntity(void)/將每個實(shí)體附著在結(jié)點(diǎn)上,同時給結(jié)點(diǎn)賦值 /ent1 = m_pSceneManager-createEntity(Sphere,qiu.mesh);
35、/獵取實(shí)體對象,第一個參數(shù)是實(shí)體的名字,第二個參數(shù)是要導(dǎo)入的mesh文件 /node1 = m_pSceneManager-getRootSceneNode()-createChildSceneNode();/創(chuàng)建結(jié)點(diǎn) /node1-translate(Vector3(-20,0,30);/設(shè)置實(shí)體的位置 /node1-attachObject(ent1);/將實(shí)體附在節(jié)點(diǎn)上 /ent1-setMaterialName(Examples/Chrome1);/設(shè)置實(shí)體的材質(zhì) /ent2 = m_pSceneManager-createEntity(tree,tree02.mesh); /node2 = m_pSceneManager-getRootSceneNode()-createChildSceneNode(); /node2-translate(Vector3(0,500,0);/設(shè)置實(shí)體的位置 /node2-attachObject(ent2);/將實(shí)體附在場景上 ent =m_pSceneManager-createEntity(cube,ninja.mesh); node = m_pSceneManager-getRootScen
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 疾病保險課件教學(xué)課件
- 2024年度影視版權(quán)許可協(xié)議
- 04年影視制作委托合同
- 2024年度辦公樓照明系統(tǒng)燈具更換外包協(xié)議
- 2024年度“生態(tài)修復(fù)”工程咨詢服務(wù)合同
- 制作課件教學(xué)課件
- 2024年廣告發(fā)布與裝修施工合同協(xié)議
- 2024在熔盛重工與淡水河谷砂石船建造合同簽約儀式上的致辭熔盛重工朱文花
- 2024年度暖通設(shè)備安裝及調(diào)試合同
- 2024土地使用權(quán)轉(zhuǎn)讓合同(含開發(fā)權(quán))
- 黃河商品交易市場介紹稿
- Unit 3 My friends Part C Story time(教學(xué)設(shè)計)-2024-2025學(xué)年人教PEP版英語四年級上冊
- 2024中國海油校園招聘2024人(高頻重點(diǎn)提升專題訓(xùn)練)共500題附帶答案詳解
- 孫中山誕辰紀(jì)念日主題班會主題班會
- 2024年安徽省合肥市中考語文題卷(含答案)
- G -B- 43630-2023 塔式和機(jī)架式服務(wù)器能效限定值及能效等級(正式版)
- 24春國開電大《工具書與文獻(xiàn)檢索》平時作業(yè)1-4答案
- 文藝復(fù)興經(jīng)典名著選讀 知到智慧樹網(wǎng)課答案
- 2024年北京出版集團(tuán)有限責(zé)任公司招聘筆試沖刺題(帶答案解析)
- 2022-2023學(xué)年福建省廈門一中九年級(上)期中物理試卷
- 足球球性球感練習(xí)教案
評論
0/150
提交評論