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

提交评论