ACIS基礎培訓課程安排學習教案_第1頁
ACIS基礎培訓課程安排學習教案_第2頁
ACIS基礎培訓課程安排學習教案_第3頁
ACIS基礎培訓課程安排學習教案_第4頁
ACIS基礎培訓課程安排學習教案_第5頁
已閱讀5頁,還剩28頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、會計學1ACIS基礎培訓課程安排基礎培訓課程安排屬性(屬性(Attribute)n用戶將會用到n由開發者定義,應用程序的最終用戶使用第1頁/共33頁實體和屬性之間的關系實體和屬性之間的關系ENTITYATTRIBATTRIBATTRIBATTRIBNULLNULL第2頁/共33頁ATTRIB類類ENTITYATTRIBOrganization Attribute ClassApplication Specific Attribute Class從ENTITY類派生是一個抽象類組織實行( Organization Attribute )類從ATTRIB類派生應用程序特定屬性( Applicati

2、on Specific Attribute)類從組織屬性類派生第3頁/共33頁SPATIAL定義的屬性定義的屬性第4頁/共33頁用戶自定義屬性用戶自定義屬性n因為ATTRIB類是從ENTITY類派生的,因此用戶在定義自己的屬性時,掌握保存/恢復機制是很有幫助的,尤其是用戶自定義的屬性中包含ENTITY*時第5頁/共33頁以顏色屬性為例以顏色屬性為例ENTITYATTRIBATTRIB_STATTRIB_RGB組織屬性類應用程序特定屬性類第6頁/共33頁ATTRIB類的重要方法類的重要方法第7頁/共33頁ACIS MFC第8頁/共33頁ACIS HOOPS AppWizardnACIS HOOP

3、S AppWizard第9頁/共33頁ACIS HOOPS AppWizard主要特點主要特點n使用HOOPSn不用學習HOOPS就可以使用HOOPS基本的圖形功能n如果用戶僅僅需要用到一些基本的圖形功能,那么就不需要直接用HOOPS來編程,也就是說使用這個AppWizard就已經足夠了n使得開發者在開發地初級間斷可以將經理集中在ACIS上n如果需要的話,開發者可以直接使用HOOPS來擴展應用程序的圖形顯示能力n提供一些示例源代碼n可以學習如何使用ACIS和InterOpn和ACIS MFC結構類似n利用原有的AICS MFC用戶順利地使用GI/GL組件過度到使用HOOPS來顯示n快速搭建測試

4、環境第10頁/共33頁歷史機制歷史機制(History mechanism)n歷史機制是什么?n可以實現撤銷/恢復(Undo/Redo)nUndo向后滾動(roll back)nRedo向前滾動(roll forward)n四個主要的類nBULLETINnBULLETIN_BOARDnDELTA_STATEnHISTORY_STREAMn最常用的API函數napi_part_start_state()napi_part_note_state()第11頁/共33頁歷史的基本類歷史的基本類nDELTA_STATEn是實現Undo/Redo的一個單元nBULLETIN_BOARDn基本上調用一個AP

5、I函數都會創建一個nBULLETINDSDSBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB第12頁/共33頁練習練習:歷史機制歷史機制n目標是通過使用ACIS HOOPS AppWizard增加對歷史機制的理解ACIS HOOPS AppWizard創建一個新的工程“History”n作為示例AppWizard重一斤個實現Solid Block的創建n編譯和構建工程n將實現函數“api_make_gear”的文件復制到該工程文件夾,并加入到該工程中n在菜單中加入“Gear”,參考Solid Block的實現,實現創建齒輪的命令第13頁/共33頁練習練習:歷史機制歷史機制n續上頁n

6、注釋掉”API_BEGIN”和“API_END”宏,并哼名一個outcome類型的變量resultn使用“api_solid_cylinder_cone”函數創建一個半徑為3,高度為20的圓柱n從gear body中湔區圓柱n注釋掉”check_outcome(result);”行int depth = 0;api_part_start_state(depth);/API_BEGINoutcome result = api_make_gear(pBody);/check_outcome(result);/創建圓柱/從齒輪中減去該圓柱if(result.ok() m_pAHDoc-AddEnti

7、ty(pBody);/API_ENDapi_part_note_state(result,depth);第14頁/共33頁練習練習:歷史機制歷史機制int depth = 0;api_part_start_state(depth);outcome result = api_make_gear(pBody);BODY* pCyl;SPAposition p3(0,0,-10); SPAposition p4(0,0,10); result = api_solid_cylinder_cone(p3,p4,3.0,3.0,3.0,(SPAposition*)NULL,pCyl);result = a

8、pi_subtract(pCyl,pBody);if(result.ok() m_pAHDoc-AddEntity(pBody);api_part_note_state(result,depth);DSBBBBBBBBBBBBBBB第15頁/共33頁練習練習:歷史機制歷史機制n修改UNDO/REDOn創建菜單“Gear2”并復制Gear實現的代碼n按下面的程序進行相應的修改int depth = 0;api_part_start_state(depth);outcome result = api_make_gear(pBody);if(result.ok() m_pAHDoc-AddEntit

9、y(pBody);api_part_note_state(result,depth);api_part_start_state(depth);BODY* pCyl;SPAposition p3(0,0,-10); SPAposition p4(0,0,10); result = api_solid_cylinder_cone(p3,p4,3.0,3.0,3.0,(SPAposition*)NULL,pCyl);if(result.ok() m_pAHDoc-AddEntity(pCyl);api_part_note_state(result,depth);api_part_start_stat

10、e(depth);result = api_subtract(pCyl,pBody);if(result.ok() m_pAHDoc-UpdateEntity(pBody);api_part_note_state(result,depth);第16頁/共33頁練習練習:歷史機制歷史機制int depth = 0;api_part_start_state(depth);outcome result = api_make_gear(pBody);if(result.ok() m_pAHDoc-AddEntity(pBody);api_part_note_state(result,depth);ap

11、i_part_start_state(depth);BODY* pCyl;SPAposition p3(0,0,-10); SPAposition p4(0,0,10); result = api_solid_cylinder_cone(p3,p4,3.0,3.0,3.0,(SPAposition*)NULL,pCyl);if(result.ok() m_pAHDoc-AddEntity(pCyl);api_part_note_state(result,depth);api_part_start_state(depth);result = api_subtract(pCyl,pBody);if

12、(result.ok() m_pAHDoc-UpdateEntity(pBody);api_part_note_state(result,depth);DSBBBBBDSDSBBBBBBBBBB第17頁/共33頁BULLETIN類類n存儲ENTITY類對象在創建、刪除或修改時的信息n擁有指向新的ENTITY和原來ENTITY的指針DSBBBBBENTITYENTITYnext()previous()第18頁/共33頁BULLETIN類類ENTITYNULLENTITYENTITYENTITY新創建的ENTITY改變之后的ENTITY修改之前的ENTITY拷貝刪除的ENTITYChange Bu

13、lletinDelete BulletinCreate Bulletin第19頁/共33頁BULLETIN_BOARD類類n一般來說一個API創建一個BULLETIN_BOARDnAPI函數中的API_BEGIN, API_END宏對創建一個BULLETIN_BOARDn通過API函數中的返回值outcome 可以得到指向相應的BULLETIN_BOARD的指針n包含一個或多個BULLETINDSBBBBBBULLETIN_BOARDBULLETIN_BOARDnext()BULLETINBULLETINBULLETIN第20頁/共33頁DELTA_STATE類類n每個UNDO/REDO操作需

14、要有一個DELTA_STATEn每個DELTA_STATE可以包含一個或多個BULLETIN_BOARDDSBBBBBDELTA_STATEDELTA_STATEBULLETINBULLETINBULLETINbb()第21頁/共33頁DELTA_STATE類類線性歷史(Linear history)DSDSDSDS分支歷史(Branch history)DSDSDSDSDSDSDSDSDS第22頁/共33頁HISTORY_STREAM類類n管理DELTA_STATE的實用類n缺省情況下,系統啟動時定義了一個HISTORY_STREAM第23頁/共33頁HISTORY_STREAM類類DELT

15、A_STATEDELTA_STATEDELTA_STATEDELTA_STATE根DS當前活動DS創建DS第24頁/共33頁API_BEGIN , API_END宏宏int depth = 0;api_part_start_state(depth);result = api_make_gear();result = api_solid_cylinder_cone();result = api_subtract();api_part_note_state(result,depth);DSBBBBBDSDSBBBBBBBBBBAPI_BEGINAPI_ENDAPI_BEGINAPI_ENDAPI_

16、BEGINAPI_END第25頁/共33頁API_BEGIN , API_END宏宏int depth = 0;api_part_start_state(depth);result = api_make_gear();result = api_solid_cylinder_cone();result = api_subtract();api_part_note_state(result,depth);API_BEGINAPI_ENDAPI_BEGINAPI_ENDAPI_BEGINAPI_ENDAPI_BEGINAPI_ENDDSBBBBBBBB第26頁/共33頁API_BEGIN , API

17、_END宏宏int depth = 0;api_part_start_state(depth);result = api_make_gear();result = api_solid_cylinder_cone();result = api_subtract();api_part_note_state(result,depth);API_BEGINAPI_ENDAPI_BEGINAPI_ENDAPI_BEGINAPI_ENDAPI_BEGINAPI_ENDAPI_NOP_BEGINAPI_NOP_ENDDSBBBBBBBBBBBBBBAPI_NOP_BEGIN和API_NOP_END的效果和取

18、消操作的效果一致,對應的兩個宏之間的所有創建、修改和刪除是無效的,因此用戶需要注意在該宏對之內的ENTITY是否有效第27頁/共33頁出錯處理(出錯處理(error handling)可以知道API函數調用的結果outcome:error_number()outcome:ok()check_outcome()函數為了創建穩定的API,這是必要的調用系統錯誤出錯處理宏EXCEPTION_BEGIN, EXCEPTION_TRY, EXCEPTION_CATCH, EXCEPTION_ENDAPI_BEGIN, API_END第28頁/共33頁出錯處理(出錯處理(error handling)明確

19、地指出錯誤,并跟蹤該過程中發生了些什么將api_solid_cylinder_cone()函數中的半徑參數設置為0首先注釋掉API_BEGIN和API_END運行程序,嘗試Undo/Redo操作int depth = 0;api_part_start_state(depth);/API_BEGINoutcome result = api_make_gear(pBody);BODY* pCyl;SPAposition p3(0,0,-10); SPAposition p4(0,0,10); result = api_solid_cylinder_cone(p3,p4,3.0,3.0,3.0,(S

20、PAposition*)NULL,pCyl);result = api_subtract(pCyl,pBody);if(result.ok() m_pAHDoc-UpdateEntity(pBody);/API_ENDapi_part_note_state(result,depth);第29頁/共33頁出錯處理(出錯處理(error handling)明確地指出錯誤,并跟蹤該過程中發生了些什么(續上頁)取消注釋API_BEGIN和API_END移去api_make_gear()前的“outcome”在圖示位置在每個api函數調用之后添加“check_outcome(result);”行運行程序,嘗試Undo/Redo操作int depth = 0;api_part_start_state(depth);API_BEGINresult = api_make_gear(pBody);check_outcome(result);BODY* pCyl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論