ACIS基礎(chǔ)培訓(xùn)課程課件_第1頁(yè)
ACIS基礎(chǔ)培訓(xùn)課程課件_第2頁(yè)
ACIS基礎(chǔ)培訓(xùn)課程課件_第3頁(yè)
ACIS基礎(chǔ)培訓(xùn)課程課件_第4頁(yè)
ACIS基礎(chǔ)培訓(xùn)課程課件_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

ACIS基礎(chǔ)培訓(xùn)課程安排屬性3ACISMFC3歷史機(jī)制3錯(cuò)誤處理3HOOPS介紹3MFC環(huán)境和ACIS31屬性(Attribute)所有從ENTITY派生的類(lèi)都可以擁有屬性屬性是在屬性類(lèi)ATTRIB中實(shí)現(xiàn)的屬性可以保存兩個(gè)主要目的為了實(shí)現(xiàn)功能所做的記號(hào)由SPATIAL開(kāi)發(fā)和實(shí)現(xiàn)由開(kāi)發(fā)者定義&實(shí)現(xiàn)作為屬性信息,應(yīng)用程序的最終用戶(hù)將會(huì)用到由開(kāi)發(fā)者定義,應(yīng)用程序的最終用戶(hù)使用2實(shí)體和屬性之間的關(guān)系ENTITYATTRIBATTRIBATTRIBATTRIBNULLNULL3ATTRIB類(lèi)ENTITYATTRIBOrganizationAttributeClassApplicationSpecificAttributeClass從ENTITY類(lèi)派生是一個(gè)抽象類(lèi)組織實(shí)行(OrganizationAttribute)類(lèi)從ATTRIB類(lèi)派生應(yīng)用程序特定屬性(ApplicationSpecificAttribute)類(lèi)從組織屬性類(lèi)派生4SPATIAL定義的屬性每個(gè)組件有各自的屬性實(shí)現(xiàn)特定的功能如混合(blend)的半徑和顏色普通屬性(GentricAttribute)普通屬性類(lèi)來(lái)存儲(chǔ)一個(gè)字符串或一個(gè)字符串及其相關(guān)聯(lián)的一個(gè)屬性值(value)—ATTRIB_GEN_NAME屬性值可以是integer,real,string,position,vector,pointer,指向ENTITY的指針—從ATTRIB_GEN_NAME派生縮短了用戶(hù)開(kāi)發(fā)的時(shí)間良好的兼容性5用戶(hù)自定義屬性定義組織屬性類(lèi)用戶(hù)有必要使用”sentinel”,SPATIAL的技術(shù)支持應(yīng)用程序特定屬性類(lèi)應(yīng)該從組織屬性類(lèi)派生其它子類(lèi)可以從應(yīng)用程序特定屬性類(lèi)中派生開(kāi)發(fā)者可以定義屬性中包含的數(shù)據(jù)因?yàn)锳TTRIB類(lèi)是從ENTITY類(lèi)派生的,因此用戶(hù)在定義自己的屬性時(shí),掌握保存/恢復(fù)機(jī)制是很有幫助的,尤其是用戶(hù)自定義的屬性中包含ENTITY*時(shí)6以顏色屬性為例在ACIS中顏色是通過(guò)屬性來(lái)實(shí)現(xiàn)的ENTITYATTRIBATTRIB_STATTRIB_RGB組織屬性類(lèi)應(yīng)用程序特定屬性類(lèi)7ATTRIB類(lèi)的重要方法virtualvoidATTRIB::split_owner(ENTITY*)virtualvoidATTRIB::merge_owner(ENTITY*,lotical)virtualvoidATTRIB::trans_owner(SPAtransfconst&)8ACISMFCACISMFC從ACISR11開(kāi)始,完全放棄使用ACISMFC原因是ACIS的一些顯示組件(如GL和GI)已經(jīng)完全放棄使用9ACISHOOPSAppWizardACISHOOPSAppWizard提供類(lèi)似ACISMFC的基本功能由SPATIALJAPAN開(kāi)發(fā)和維護(hù)10ACISHOOPSAppWizard主要特點(diǎn)使用HOOPS不用學(xué)習(xí)HOOPS就可以使用HOOPS基本的圖形功能如果用戶(hù)僅僅需要用到一些基本的圖形功能,那么就不需要直接用HOOPS來(lái)編程,也就是說(shuō)使用這個(gè)AppWizard就已經(jīng)足夠了使得開(kāi)發(fā)者在開(kāi)發(fā)地初級(jí)間斷可以將經(jīng)理集中在ACIS上如果需要的話(huà),開(kāi)發(fā)者可以直接使用HOOPS來(lái)擴(kuò)展應(yīng)用程序的圖形顯示能力提供一些示例源代碼可以學(xué)習(xí)如何使用ACIS和InterOp和ACISMFC結(jié)構(gòu)類(lèi)似利用原有的AICSMFC用戶(hù)順利地使用GI/GL組件過(guò)度到使用HOOPS來(lái)顯示快速搭建測(cè)試環(huán)境11歷史機(jī)制(Historymechanism)歷史機(jī)制是什么?可以實(shí)現(xiàn)撤銷(xiāo)/恢復(fù)(Undo/Redo)Undo—向后滾動(dòng)(rollback)Redo—向前滾動(dòng)(rollforward)四個(gè)主要的類(lèi)BULLETINBULLETIN_BOARDDELTA_STATEHISTORY_STREAM最常用的API函數(shù)api_part_start_state()api_part_note_state()12歷史的基本類(lèi)DELTA_STATE是實(shí)現(xiàn)Undo/Redo的一個(gè)單元BULLETIN_BOARD基本上調(diào)用一個(gè)API函數(shù)都會(huì)創(chuàng)建一個(gè)BULLETIN記錄ENTITY改變前和改變后的狀態(tài)DSDSBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB13練習(xí):歷史機(jī)制目標(biāo)是通過(guò)使用ACISHOOPSAppWizard增加對(duì)歷史機(jī)制的理解使用ACISHOOPSAppWizard創(chuàng)建一個(gè)新的工程“History”作為示例AppWizard重一斤個(gè)實(shí)現(xiàn)SolidBlock的創(chuàng)建編譯和構(gòu)建工程將實(shí)現(xiàn)函數(shù)“api_make_gear”的文件復(fù)制到該工程文件夾,并加入到該工程中在菜單中加入“Gear”,參考SolidBlock的實(shí)現(xiàn),實(shí)現(xiàn)創(chuàng)建齒輪的命令14練習(xí):歷史機(jī)制續(xù)上頁(yè)注釋掉”API_BEGIN”和“API_END”宏,并哼名一個(gè)outcome類(lèi)型的變量result使用“api_solid_cylinder_cone”函數(shù)創(chuàng)建一個(gè)半徑為3,高度為20的圓柱從gearbody中湔區(qū)圓柱注釋掉”check_outcome(result);”行intdepth=0;api_part_start_state(depth);//API_BEGIN outcomeresult=api_make_gear(pBody);

//check_outcome(result); //創(chuàng)建圓柱

//從齒輪中減去該圓柱

if(result.ok())m_pAHDoc->AddEntity(pBody);//API_ENDapi_part_note_state(result,depth);15練習(xí):歷史機(jī)制intdepth=0;api_part_start_state(depth); outcomeresult=api_make_gear(pBody);

BODY*pCyl; SPApositionp3(0,0,-10); SPApositionp4(0,0,10); result=api_solid_cylinder_cone(p3,p4,3.0,3.0,3.0,(SPAposition*)NULL,pCyl); result=api_subtract(pCyl,pBody); if(result.ok())m_pAHDoc->AddEntity(pBody);api_part_note_state(result,depth);DSBBBBBBBBBBBBBBB16練習(xí):歷史機(jī)制修改UNDO/REDO創(chuàng)建菜單“Gear2”并復(fù)制Gear實(shí)現(xiàn)的代碼按下面的程序進(jìn)行相應(yīng)的修改intdepth=0;api_part_start_state(depth); outcomeresult=api_make_gear(pBody);

if(result.ok())m_pAHDoc->AddEntity(pBody);api_part_note_state(result,depth);api_part_start_state(depth); BODY*pCyl; SPApositionp3(0,0,-10); SPApositionp4(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(result.ok())m_pAHDoc->UpdateEntity(pBody);api_part_note_state(result,depth);17練習(xí):歷史機(jī)制intdepth=0;api_part_start_state(depth); outcomeresult=api_make_gear(pBody);

if(result.ok())m_pAHDoc->AddEntity(pBody);api_part_note_state(result,depth);api_part_start_state(depth); BODY*pCyl; SPApositionp3(0,0,-10); SPApositionp4(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(result.ok())m_pAHDoc->UpdateEntity(pBody);api_part_note_state(result,depth);DSBBBBBDSDSBBBBBBBBBB18BULLETIN類(lèi)存儲(chǔ)ENTITY類(lèi)對(duì)象在創(chuàng)建、刪除或修改時(shí)的信息擁有指向新的ENTITY和原來(lái)ENTITY的指針DSBBBBBold_entity_ptr()new_entity_ptr()BULLETINENTITYENTITYBULLETINnext()previous()19BULLETIN類(lèi)old_entity_ptr()new_entity_ptr()BULLETINENTITYold_entity_ptr()new_entity_ptr()BULLETINNULLENTITYENTITYold_entity_ptr()new_entity_ptr()BULLETINENTITY新創(chuàng)建的ENTITY改變之后的ENTITY修改之前的ENTITY拷貝刪除的ENTITYChangeBulletinDeleteBulletinCreateBulletin20BULLETIN_BOARD類(lèi)一般來(lái)說(shuō)一個(gè)API創(chuàng)建一個(gè)BULLETIN_BOARDAPI函數(shù)中的API_BEGIN,API_END宏對(duì)創(chuàng)建一個(gè)BULLETIN_BOARD通過(guò)API函數(shù)中的返回值outcome可以得到指向相應(yīng)的BULLETIN_BOARD的指針包含一個(gè)或多個(gè)BULLETINDSBBBBBend_bulletin()start_bulletin()BULLETIN_BOARDBULLETIN_BOARDnext()BULLETINBULLETINBULLETIN21DELTA_STATE類(lèi)每個(gè)UNDO/REDO操作需要有一個(gè)DELTA_STATE每個(gè)DELTA_STATE可以包含一個(gè)或多個(gè)BULLETIN_BOARDDSBBBBBnext()prev()DELTA_STATEDELTA_STATEBULLETINBULLETINBULLETINpartner()bb()22DELTA_STATE類(lèi)線(xiàn)性歷史(Linearhistory)DSDSDSDS分支歷史(Branchhistory)DSDSDSDSDSDSDSDSDS23HISTORY_STREAM類(lèi)管理DELTA_STATE的實(shí)用類(lèi)缺省情況下,系統(tǒng)啟動(dòng)時(shí)定義了一個(gè)HISTORY_STREAMapi_get_default_history()開(kāi)發(fā)者可以設(shè)置rollback(UNDO)的最大次數(shù)HISTORY_STREAM::set_max_states_to_keep()零件(PART)類(lèi)有一個(gè)指向HISTORY_STREAM的指針如果使用到PART類(lèi),開(kāi)發(fā)者可以使用一些有用的API函數(shù)api_part_start_state() 標(biāo)志著一個(gè)DS的開(kāi)始api_part_note_state() 標(biāo)志著一個(gè)DS的結(jié)束api_part_roll_n_states() UNDO或REDOapi_part_name_state() state命名api_part_rooo_to_state() 移動(dòng)到指定名稱(chēng)的state中PART::history_stream() 得到HISTORY_STREAM24HISTORY_STREAM類(lèi)HISTORY_STREAMget_root_ds()get_active_ds()get_current_ds()DELTA_STATEDELTA_STATEDELTA_STATEDELTA_STATE根DS當(dāng)前活動(dòng)DS創(chuàng)建DS25API_BEGIN,API_END宏intdepth=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_BEGINAPI_END26API_BEGIN,API_END宏intdepth=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_ENDDSBBBBBBBB27API_BEGIN,API_END宏intdepth=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的效果和取消操作的效果一致,對(duì)應(yīng)

的兩個(gè)宏之間的所有創(chuàng)建、修改和刪除是無(wú)效的,因此用戶(hù)需要注意在該宏

對(duì)之內(nèi)的ENTITY是否有效28出錯(cuò)處理(errorhandling)可以知道API函數(shù)調(diào)用的結(jié)果outcome::error_number()outcome::ok()check_outcome()函數(shù)為了創(chuàng)建穩(wěn)定的API,這是必要的調(diào)用系統(tǒng)錯(cuò)誤出錯(cuò)處理宏EXCEPTION_BEGIN,EXCEPTION_TRY,

EXCEPTION_CATCH,EXCEPTION_ENDAPI_BEGIN,API_END29出錯(cuò)處理(errorhandling)明確地指出錯(cuò)誤,并跟蹤該過(guò)程中發(fā)生了些什么將api_solid_cylinder_cone()函數(shù)中的半徑參數(shù)設(shè)置為0首先注釋掉API_BEGIN和API_END運(yùn)行程序,嘗試Undo/Redo操作intdepth=0;api_part_start_state(depth);//API_BEGIN outcomeresult=api_make_gear(pBody);

BODY*pCyl; SPApositionp3(0,0,-10); SPApositionp4(0,0,10); result=api_solid_cylinder_cone(p3,p4,3.0,3.0,3.0,(SPAposition*)NULL,pCyl);

result=api_subtract(pCyl,pBody); if(result.ok())m_pAHDoc->UpdateEntity(pBody);//API_ENDapi_part_note_state(result,depth);30出錯(cuò)處理(errorhandling)明確地指出錯(cuò)誤,并跟蹤該過(guò)程中發(fā)生了些什么(續(xù)上頁(yè))取消注釋API_BEGIN和API_END移去api_make_gear()前的“outcome”在圖示位置在每個(gè)api函數(shù)調(diào)用之后添加“check_outcome(result);”

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論