ACIS基础培训课程安排.ppt

上传人:牧羊曲112 文档编号:5414565 上传时间:2023-07-05 格式:PPT 页数:33 大小:312.99KB
返回 下载 相关 举报
ACIS基础培训课程安排.ppt_第1页
第1页 / 共33页
ACIS基础培训课程安排.ppt_第2页
第2页 / 共33页
ACIS基础培训课程安排.ppt_第3页
第3页 / 共33页
ACIS基础培训课程安排.ppt_第4页
第4页 / 共33页
ACIS基础培训课程安排.ppt_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《ACIS基础培训课程安排.ppt》由会员分享,可在线阅读,更多相关《ACIS基础培训课程安排.ppt(33页珍藏版)》请在三一办公上搜索。

1、ACIS基础培训课程安排,属性(Attribute),所有从ENTITY派生的类都可以拥有属性属性是在属性类ATTRIB中实现的属性可以保存两个主要目的为了实现功能所做的记号由SPATIAL开发和实现由开发者定义实现作为属性信息,应用程序的最终用户将会用到由开发者定义,应用程序的最终用户使用,实体和属性之间的关系,ENTITY,ATTRIB,ATTRIB,ATTRIB,ATTRIB,NULL,NULL,ATTRIB类,从ENTITY类派生是一个抽象类组织实行(Organization Attribute)类从ATTRIB类派生应用程序特定属性(Application Specific Attr

2、ibute)类从组织属性类派生,SPATIAL定义的属性,每个组件有各自的属性实现特定的功能如混合(blend)的半径和颜色普通属性(Gentric Attribute)普通属性类来存储一个字符串或一个字符串及其相关联的一个属性值(value)ATTRIB_GEN_NAME属性值可以是integer,real,string,position,vector,pointer,指向ENTITY的指针从ATTRIB_GEN_NAME派生缩短了用户开发的时间良好的兼容性,用户自定义属性,定义组织属性类用户有必要使用”sentinel”,SPATIAL的技术支持应用程序特定属性类应该从组织属性类派生其它子

3、类可以从应用程序特定属性类中派生开发者可以定义属性中包含的数据因为ATTRIB类是从ENTITY类派生的,因此用户在定义自己的属性时,掌握保存/恢复机制是很有帮助的,尤其是用户自定义的属性中包含ENTITY*时,以颜色属性为例,在ACIS中颜色是通过属性来实现的,组织属性类,应用程序特定属性类,ATTRIB类的重要方法,virtual void ATTRIB:split_owner(ENTITY*)virtual void ATTRIB:merge_owner(ENTITY*,lotical)virtual void ATTRIB:trans_owner(SPAtransf const&),A

4、CIS MFC,ACIS MFC从ACIS R11开始,完全放弃使用ACIS MFC原因是ACIS的一些显示组件(如GL和GI)已经完全放弃使用,ACIS HOOPS AppWizard,ACIS HOOPS AppWizard提供类似ACIS MFC的基本功能由SPATIAL JAPAN开发和维护,ACIS HOOPS AppWizard主要特点,使用HOOPS不用学习HOOPS就可以使用HOOPS基本的图形功能如果用户仅仅需要用到一些基本的图形功能,那么就不需要直接用HOOPS来编程,也就是说使用这个AppWizard就已经足够了使得开发者在开发地初级间断可以将经理集中在ACIS上如果需要

5、的话,开发者可以直接使用HOOPS来扩展应用程序的图形显示能力提供一些示例源代码可以学习如何使用ACIS和InterOp和ACIS MFC结构类似利用原有的AICS MFC用户顺利地使用GI/GL组件过度到使用HOOPS来显示快速搭建测试环境,历史机制(History mechanism),历史机制是什么?可以实现撤销/恢复(Undo/Redo)Undo向后滚动(roll back)Redo向前滚动(roll forward)四个主要的类BULLETINBULLETIN_BOARDDELTA_STATEHISTORY_STREAM最常用的API函数api_part_start_state()a

6、pi_part_note_state(),历史的基本类,DELTA_STATE是实现Undo/Redo的一个单元BULLETIN_BOARD基本上调用一个API函数都会创建一个BULLETIN记录ENTITY改变前和改变后的状态,练习:历史机制,目标是通过使用ACIS HOOPS AppWizard增加对历史机制的理解使用ACIS HOOPS AppWizard创建一个新的工程“History”作为示例AppWizard重一斤个实现Solid Block的创建编译和构建工程将实现函数“api_make_gear”的文件复制到该工程文件夹,并加入到该工程中在菜单中加入“Gear”,参考Solid

7、 Block的实现,实现创建齿轮的命令,练习:历史机制,续上页注释掉”API_BEGIN”和“API_END”宏,并哼名一个outcome类型的变量result使用“api_solid_cylinder_cone”函数创建一个半径为3,高度为20的圆柱从gear body中湔区圆柱注释掉”check_outcome(result);”行int depth=0;api_part_start_state(depth);/API_BEGINoutcome result=api_make_gear(pBody);/check_outcome(result);/创建圆柱/从齿轮中减去该圆柱if(resu

8、lt.ok()m_pAHDoc-AddEntity(pBody);/API_ENDapi_part_note_state(result,depth);,练习:历史机制,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=ap

9、i_subtract(pCyl,pBody);if(result.ok()m_pAHDoc-AddEntity(pBody);api_part_note_state(result,depth);,练习:历史机制,修改UNDO/REDO创建菜单“Gear2”并复制Gear实现的代码按下面的程序进行相应的修改,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,dep

10、th);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_state(depth);result=api_subtract(pCyl,pBody);if(r

11、esult.ok()m_pAHDoc-UpdateEntity(pBody);api_part_note_state(result,depth);,练习:历史机制,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);api_part_start_state(depth);BODY*pCyl;SPAposition p3(0,0,-10);SPApos

12、ition 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(result.ok()m_pAHDoc-UpdateEntity(pBody);api_part_note_state(result,depth)

13、;,BULLETIN类,存储ENTITY类对象在创建、删除或修改时的信息拥有指向新的ENTITY和原来ENTITY的指针,BULLETIN类,NULL,ENTITY,ENTITY,old_entity_ptr(),new_entity_ptr(),BULLETIN,ENTITY,新创建的ENTITY,改变之后的ENTITY,修改之前的ENTITY拷贝,删除的ENTITY,Change Bulletin,Delete Bulletin,Create Bulletin,BULLETIN_BOARD类,一般来说一个API创建一个BULLETIN_BOARDAPI函数中的API_BEGIN,API_E

14、ND宏对创建一个BULLETIN_BOARD通过API函数中的返回值outcome 可以得到指向相应的BULLETIN_BOARD的指针包含一个或多个BULLETIN,DELTA_STATE类,每个UNDO/REDO操作需要有一个DELTA_STATE每个DELTA_STATE可以包含一个或多个BULLETIN_BOARD,next(),prev(),DELTA_STATE,DELTA_STATE,BULLETIN,BULLETIN,BULLETIN,partner(),bb(),DELTA_STATE类,HISTORY_STREAM类,管理DELTA_STATE的实用类缺省情况下,系统启动时

15、定义了一个HISTORY_STREAMapi_get_default_history()开发者可以设置roll back(UNDO)的最大次数HISTORY_STREAM:set_max_states_to_keep()零件(PART)类有一个指向HISTORY_STREAM的指针如果使用到PART类,开发者可以使用一些有用的API函数api_part_start_state()标志着一个DS的开始api_part_note_state()标志着一个DS的结束api_part_roll_n_states()UNDO或REDOapi_part_name_state()state命名api_par

16、t_rooo_to_state()移动到指定名称的state中PART:history_stream()得到HISTORY_STREAM,HISTORY_STREAM类,DELTA_STATE,DELTA_STATE,DELTA_STATE,DELTA_STATE,根DS,当前活动DS,创建DS,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_

17、state(result,depth);,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_BEGIN,API_END,API_BEGIN,API_END宏,int depth=0;api_part_start_state(depth);result=api_make_gear();result=

18、api_solid_cylinder_cone();result=api_subtract();api_part_note_state(result,depth);,API_BEGIN,API_END,API_NOP_BEGIN,API_NOP_END,API_NOP_BEGIN和API_NOP_END的效果和取消操作的效果一致,对应的两个宏之间的所有创建、修改和删除是无效的,因此用户需要注意在该宏对之内的ENTITY是否有效,出错处理(error handling),可以知道API函数调用的结果outcome:error_number()outcome:ok()check_outcome()

19、函数为了创建稳定的API,这是必要的调用系统错误出错处理宏EXCEPTION_BEGIN,EXCEPTION_TRY,EXCEPTION_CATCH,EXCEPTION_ENDAPI_BEGIN,API_END,出错处理(error handling),明确地指出错误,并跟踪该过程中发生了些什么将api_solid_cylinder_cone()函数中的半径参数设置为0首先注释掉API_BEGIN和API_END运行程序,尝试Undo/Redo操作,int depth=0;api_part_start_state(depth);/API_BEGINoutcome result=api_make

20、_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=api_subtract(pCyl,pBody);if(result.ok()m_pAHDoc-UpdateEntity(pBody);/API_ENDapi_part_note_state(result,depth);,出错处理(error handling),明确地指出错误,并跟踪该过程中发生

21、了些什么(续上页)取消注释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;SPAposition p3(0,0,-10);SPAposition p4(0,0,10);result=api_solid_cylind

22、er_cone(p3,p4,3.0,3.0,3.0,(SPAposition*)NULL,pCyl);check_outcome(result);result=api_subtract(pCyl,pBody);check_outcome(result);if(result.ok()m_pAHDoc-UpdateEntity(pBody);API_ENDapi_part_note_state(result,depth);,出错处理宏,double*dbls=new doublen;/Temporary memorydelete dbls;,EXCEPTION_BEGINENTITY_LIST list;double*dbls=NULL;EXCEPTION_TRYEDGE*ent=new EDGE()list.add(ent);dbls=new doublen;EXCEPTION_CATCH(TRUE)delete dbls;EXCEPTION_END,HOOPS演示,模型精细度级别(Level Of Detail)支持不同的图形驱动接口 OpenGL/Windows GDI/切平面(Cutting Plane)动画Animation碰撞检查Collision detection,全部结束仅供参考学习Thanks,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号