已阅读5页,还剩79页未读, 继续免费阅读
(机械设计及理论专业论文)基于open+cascade的虚拟三维建模平台的开发.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
山东大学硕士学位论文 摘要 本文主要介绍了虚拟三维建模平台的开发过程,深入研究并应用基于标准 开发语言u i d l 对虚拟三维建模平台的软件工程设计,以及基于m f c 框架的界面设 计过程,本文运用0 p e nc a s c a d e 几何内核进行三维实体建模,最终实现了独立 建模、复杂布尔操作的虚拟三维建模平台的开发。 本文对当前关于工程图学c a i 课件的研究现状、开发应用及存在的问题 进行了论述,研究阐述了课题的背景、目的和意义,在此基础上,提出课题研究 的主要内容及技术路线,同时介绍和了解使用开发工具,分析研究了几何内核应 用环境及其特点。 本文分析了标准建模语言u m l 对软件设计的作用及使用u m l 进行软件总体设 计建模的意义,然后介绍了本系统在使用i j m l 进行建模的大体过程。即:用自然 语言对系统进行需求分析,得出系统的用例模型;用例模型驱动系统的开发过程, 包括窗口结构设计和类模型设计,得出类模型的类图。 针对u m l 缺少对窗口结构的具体规定,本文对该系统的窗口结构进行设计。 本系统的窗口结构采用m f c 框架技术实现虚拟环境界面框架的建立,分析介绍了 m f c 框架的相关内容,并对界面主要内容进行设计,包括菜单栏、图形工具栏、 显示区及建模控制区进行界面和接口的设计,并提出了相关的实现方案。 虚拟三维建模平台的几何内核模块设计是实现独立建模、虚拟化及模型间各 种复杂操作的关键。本文分析了o p e nc a s c a d e 几何内核及0 c a f 的基本工作原理及 它所提供的o c a f 向导工具,运用其类库设计出基于0 c a f 的单文档应用程序框架; 在此基础上,实现了实体类模型和接口类模型的原型,最终实现了在虚拟环境下 实时、交互的建立三维模型并通过对其进行布尔操作达到自动生成相贯体的最终 目的。 关键词:工程图学;c a i ;u m l ;o p e nc a s c a d e ;三维建模 摘要 a b s t r a c t t h i sp a p e rd e s c r i b e st h ep r o c e s so fd e v e l o p i n gav i r t u a l3 dm o d e l i n g p l a t f o r m t h em e t h o d o ft h o r o u g hs t u d ya n da p p l i c a t i o no fv i r t u a l3 d m o d e l i n gd e v e l o p m e n tp l a t f o r m w i t hu n i f i e d m o d e l i n gl a n g u a g es t a n d a r du m l f o rs o f t w a r ee n g i n e e r i n gd e s i g ni sf o u n d ,a n db u i l dam f c b a s e di n t e r f a c e f r a m e w o r ka n df i n i s ht h ei n t e r f a c ed e s i g np r o c e s s i nt h i sp a p e r ,u s i n g o r i e nc a s c a d e3 dg e o m e t r i cm o d e l i n gk e r n e l ,r e a l i z ea ni n d e p e n d e n t m o d e l i n g ,c o m p l e xb o o l e a no p e r a t i o no ft h ev i r t u a l3 dm o d e l i n gp l a t f o r m d e v e l o p m e n tf i n a ll y i nt h i sp a p e r ,t h ec a ic o u r s e w a r eo n ”e n g i n e e r i n gg r a p h i c s ”t h es t a t u s a n dt h ed e v e l o p m e n ta n da p p l i c a t i o no ft h ei s s u e si sd i s c u s s e d ,t h et o p i c o fs t u d yi se x p o u n da sw e l la st h eb a c k g r o u n d ,p u r p o s ea n ds i g n i f i c a n c e o n t h i sb a s i s ,t h et e c h n i c a l1 i n ea n dt h eu s eo fd e v e l o p m e n tt o o l sa n d u n d e r s t a n d i n gi si n t r o d u c e d a l lk i n d so fm e t h o d so fk e r n e la n a l y s i so f t h eg e o m e t r i cc h a r a c t e r i s t i c so ft h ee n v i r o n m e n ta n di t sa p p l i c a t i o n sa r e a n a l y z e d t h i sp a p e ra n a l y z e st h eu m ld e s i g nt ot h er o l eo ft h es o f t w a r ed e s i g n a n dt h eu s eo fu m lm o d e l i n gs o f t w a r ei t a l yj u s t i c e ,a n dt h e ni n t r o d u c e d t h es y s t e mi ng e n e r a lu s eu m lm o d e l i n gp r o c e s s ,n a m e l y :n a t u r a ll a n g u a g e r e q u i r e m e n to ft h es y s t e ma n a l y z e d ,t h es y s t e mu s ec a s em o d e l :u s ec a s e m o d e l d r i v e ns y s t e md e v e l o p m e n tp r o c e s s ,i n c l u d i n gd e s i g na n ds t r u c t u r a l m o d e l so fw i n d o wd e s i g nm o d e lc l a s sd i a g r a md r a w nc a t e g o r y :f i n a l l y ,u m l m o d e l i n gt ot h ep r o c e s so fu s i n gf i l e si nt h ef o r mo fr e c o r df o rr e f e r e n c e a n dr e s e a r c hi nt h ef u t u r e b e c a u s eo ft h el a c ko fs p e c i f i c w i n d o wf r a m ed e s i g no ft h i ss y s t e m r e s t r u c t u r i n go ft h es y s t e mw i n d o w 玎 p r o v i s i o n so fu m lw i n d o wv i e w ,t h e i sm a d e m f cf r a m e w o r ko ft h e i n t e r f a c ef r a m e w o r kf o rt h e 山东大学硕士学位论文 e s t a b l i s h m e n to fv i r t u a le n v i r o n m e n tt e c h n o l o g y m f cf r a m e w o r ko ft h e r e l e v a n tc o n t e n ta n a l y s i s ,a n di n t e r f a c ed e s i g nf o rt h em a i nc o n t e n t , i n c l u d em e n uc o l u m ng r a p h i ct o o l s ,n o t i n gt h a tt h em o d e li n ga n dc o n t r o l a r e ai n t e r f a c ea n dt h ei n t e r f a c ef o rt h ed e s i g na n dr e a l i z a t i o no ft h e r e l a t e dp r o g r a m v i r t u a l3 dg e o m e t r i cm o d e l i n gk e r n e lm o d u l ei sp l a t f o r mi n d e p e n d e n t m o d e l i n g ,v i r t u a lm o d e lo ft h ev a r i o u sa n dc o m p l e xo p e r a t i o no ft h ek e y t h i sp a p e ra n a l y z e st h eo p e nc a s c a d eg e o m e t r i ck e r n e la n dm a n i f e s t a t i o n s , i tp r o v i d e st h eb a s i cw o r k i n gp r i n c i p l ea n dt h eo ca fg u i d e st o o l sb a s e d o nt h eu s eo fi t sl i b r a r yd e s i g nm a n i f e s t a t i o n ss i n g l ef i l ea p p l i c a t i o n f r a m e w o r k :o nt h i sb a s i s 。e n t i t yt y p em o d e la n dap r o t o t y p em o d e lo ft h e k i n do fi n t e r f a c e 。t h eu l t i m a t er e a l i z a t i o no ft h er e a l t i m ev i r t u a l e n v i r o n m e n t i n t e r a c t i v e3 dm o d e la u t o m a t i c a l l yg e n e r a t e sb o o l e a n o p e r a t i o n st h r o u g hi t si n t e r s e c t i o nb o d y su l t i m a t eg o a l k e y :e n g i n e e r i n gd r a w i n g :c a i :u m l :o p e nc a s c a d e :3 dm o d e l i n g i i i 原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独 立进行研究所取得的成果。除文中已经注明引用的内容外,本论文不 包含任何其他个人或集体已经发表或撰写过的科研成果。对本文的研 究作出重要贡献的个人和集体,均已在文中以明确方式标明。本声明 的法律责任由本人承担。 论文作者签名:壅蒯日期:芝! 1 2 :1 2 关于学位论文使用授权的声明 本人完全了解山东大学有关保留、使用学位论文的规定,同意学 校保留或向国家有关部门或机构送交论文的复印件和电子版,允许论 文被查阅和借阅;本人授权山东大学可以将本学位论文的全部或部分 内容编入有关数据库进行检索,可以采用影印、缩印或其他复制手段 保存论文和汇编本学位论文。 ( 保密论文在解密后应遵守此规定) 论文作者签名:继导师签名:重口么亏_ 日期:趔 山东大学硕士学位论文 第1 章绪论 1 1 n e w d o c u m e m ( ”m y f o r m a t ”,o c a f d o c ) ;! 使用应用程序类建 立文档类 2 、文档和数据框架 在文档内部有一个数据框架。以一个模型为例,这是一系列标签,它们由树 型结构组织起来,这个树型结构有如下特点; 数据框架的第一个标签是树根; 每一个标签都被标记为一个整型值; 一个标签下一层的标签是这个标签的子标签; 除根标签之外,每一个标签都有一个父标签,这个父标签在数据框架中 位于更高层的位置。 有相同的父标签的标签被称为兄弟标签; 兄弟标签不能有相同的标记; 一个标签有惟一的标记列表,表达方式如下从根标签到该标签的所有标 签的标记按从右到左的顺序来排列的标记列表。例如,0 :3 :1 如图4 3 : 山东大学硕士学位论文 r o o t 0 :1 :20 :3 :1 0 :3 :30 :3 :4 图4 3 标签示意图 如上图,这是一个简单的数据框架。在圆圈里的相对应的标签标记。在圆圈下面 是标记列表。根标签的标记始终是0 。 1 ) 、文档 文档能够访问数据框架并能够管理如下: 一管理各种变化的通告; 更新外部连接; 管理数据的保存和恢复; 一保存文件的扩展名: 一管理标准事务; 一管理撤消和恢复功能; 2 ) 、形体属性 形体属性能够执行o p e nc a s c a d e 拓扑操作的如下功能; 指向几何形体的参数; 形体改变的跟踪记录; 3 ) 、标准属性 o p e nc a s c a d e 保存了一些常用的属性。这就允许在数据框架中操作一些简 单通用的数据( 例如:整型、实数、串、数组数据) ,还能够实现辅助功能( 例 第4 章基于o p e nc a s c a d e 的廊用程序框架 如:一些用于记录子标签计数器的标记源) ,创建独立源( 例如:参数、树节点 等) 等。 4 ) 、可视化属性 这些属性允许把浏览器信息加入到数据框架中,这些信息包括形体的可视化 和其他用于图形表示的辅助可视化信息。 5 ) 、功能服务 在文档管理改变通告的地方,功能服务具体管理着这些改变的存储。这个功 能机制提供了函数和调用算法之间的联系“。 o c a f 的内容如上述介绍,其内部结构之间的框架组织关系如图4 4 : 图4 4o c a f 文档和数据框架 o c a f 为开发人员提供了方便的服务用于保存模型相关数据及处理视图相关 操作,本系统中使用文档中属性、拓扑属性、标准属性来对模型的相关参数进行 处理、保存、提取等操作,其中属性保存模型的各种参数,拓扑属性用于保存模 山东大学硕士学位论文 型之间,模型内部之间的拓扑信息,标准属性类库则用于规范参数的具体数值类 型:文档中还提供可视化类库用于模型数据的可视化视图管理。 以保存一个圆柱体为例,本系统使用t k l c a f d l l 类库中的t d f _ l a b e l 来保 存这些参数到文档中,并对这些标签进行树型结构的组织,属性类库用于保存圆 柱体的各种参数( 长、宽、高、位置等) ; h a n d l e ( t d o e s t d _ d o c u r n e n t ) d = m y d o e - g e t o c a f d o c 0 ; 打开文档 d - n e w c o m m a n d 0 ; 使用新命令用于“撤消”命令 t d fl a b e ll _ c y l i n d e r ; 声明圆柱体模型标签 l _ c y l i n d e r = d - m a i n 0 f i n d c h i l d ( 1 ) ;设置圆柱体模型标签为根标签的第一子标 签 t d a t a s t dr e a l :s e t ( l _ c y l i n d e r f i n d c h i l d ( 1 ) ,”; 设置圆柱体模型参数标签 t d a t a s t dg e a l :s e t ( l _ c y l i n d e r f i n d c h i l d ( 2 ) , r ) ; t d a t a s t d _ _ r e a l :s e t ( l _ c y l i n d e r f i n d c h i l d ( 3 ) ,x ) ; t d a t a s t dr e a l :s e t ( l _ c y l i n d e r f i n d c h i l d ( 4 ) ,y ) ; t d a t a s t d _ r e a l :s e t ( lc y l i n d e r f i n d c h i l d ( 5 ) ,z ) ; c s t r i n gs t r = ”c y l i n d e r ”; 给标签命名 s t r f o r m a t ( ”s d l t s t r , mo b j e c t _ c o u n t ) ; t c o l l e e t i o a _ _ a s c i i s t r i n gn a m e ( ( s t a n d a r d _ c s t r i n g ) ( l p c t s t r ) s t r ) ; t d a t a s t d a m e :s e t ( l 鼻y l i n d e r , n a m e ) ; b r e p p r i m a p im a k e c y l i n d e rm k c y l i n d e r ( a x e s ,r ,”; 生成圆柱体 t o p o d s _ s h a p er e s u l t s h a p e _ lc y l i n d e r ; 圆柱体拓扑属性声明 r e s u l t s h a p e _ l _ c y l i n d e r = m k c y l i n d e r s h a p e 0 ; ,保存至拓扑属性 h a n d l e t p r s s t d _ a i s p r e s e n t a t i o np r s ; 声明虚拟显示设备 p r s - d i s p l a y ( 1 ) ; m y d o e - m y a i s c o n t e x t - u p d a t e c u r r e n t v i e w e r 0 ; 更新视图 第4 章基于o p e n c a s c a d e 的应用程序框架 p r s = t p r s s t d _ a i s p r e s e n t a t i o n :s e t ( l _ 鼻y l i n d e r , t n a m i n g _ n a m e d s h a p e :g e t l d o ) ; 属性类与可视化类相关联 d - c o m m i t c o m m a n d o ;文档命令结束,用于“撤消”命令 在这段程序片断中,首先声明l _ c y l i n d e r ,即文档中属性类,然后使用标准 属性类的静态方法来对l _ c y l i n d e r 中各个参数的赋值,例t d a t a s t d _ r e a l :s e t ( l _ c y l i n d e r f i n d c h i l d ( 5 ) ,z ) ;t d a t a s t d n a m e :s e t ( l c y l i n d e r , n a m e ) ,再把圆柱体保 存至拓扑属性中,最后把l _ c y l i n d e r 属性类和可视化类相关联即可实现圆柱体数 据的可视化,这就是保存圆柱体信息到文档中的大体流程。圆柱体的参数标签树 型结构图如图4 ,5 : 姆0 :11c y l i n d e r l f , 龃t d a t a s t d n a m e = c y l i n d e r l 蚌姆o :他1 # o :”2 # 姆0 1 = 1 :3 # 姆0 1 = 1 = 4 抖姆0 :1 :1 :5 图4 5 圆拄体的参数标签树型结构图 4 2 3o c k f 生成向导 o p e nc a s c a d e 为用户提供了o c a f 生成向导,它可以创建一个m f c 工程, 这个工程方便地可以创建一个带有“打开保存”功能和3 d 浏览功能的应用程序。 大致功能如下: 创建o c a f 框架程序; 在创建的o c a f 框架程序中,可以创建所需要的类,程序允许定义源文 件名和定义程序文件格式; 带有“打开保存”功能; 一能采用o p e nc a s c a d e 提供的标准格式“保存另存为, o c a f 文档; 支持三维浏览器功能; _ 允许把三难浏览器加入o c a f 应用程序,可以在浏览器中加入三维坐标 系; 4 2 山东大学硕士学位论文 o p e n c a s c a d e 提供了o c a f 的生成向导可以让用户直接在v c + + 中可直接 生成基于m f c 的多文档o c a f 框架,生成向导的使用方法很简单,如下:把 o p e nc a s c a d e 根目录下t o o l s 文件夹中的o e a f a p p w i z a r d a w x 文件添加到 v c + + c o m m o n l m s d e v 9 8 t e m p l a t e 目录里,然后就可以在v c + + 中使用o c a f 生成向导了。如图4 6 ; 圈4 ,6 在v c + + 编辑器中使刚o c a f 向导 需要注意的两点: - 该向导只能在w i n d o w s 操作系统中使用,在其他操作系统是无法使用的; _ 该向导只是为v i s u a ls t u d i o6 0 设计的,使用其他的编程工具,还是需要 人工制作o c a f 向导,具体的制作方法如下文中描述类似; o p e nc a s c a d e 提供的o c a f 向导工具是o c a f 的辅助工具,它的使用非 常简便,但是它有一定的局限性,比如说,它只为v i s u a ls m d i o6 0 提供了m f c 多文档的开发向导、对其他编程工具无法使用等。对于m f c 的单文档、对话框 应用程序开发和使用其他编程工具开发的用户则无法使用该向导。因此,本课题 在该向导的基础上,设计了o p e nc a s c a d e 单文档应用程序框架,这个设计过 程对于任何编辑工具来说都是通用的,具有普遍性,设计过程如下介绍。 4 3 基于0 c a f 单文档应用程序框架 o p e nc a s c a d e 向导生成的m f c 工程是多文档形式的工程,本课题三维虚 第4 章基于o p e nc a s c a d e 的麻用程序框架 拟开发平台是以v c + + 的单文档工程为基础来开发的。本节在分析o c a f 多文档 框架后,建立了一个基于o c a f 的单文档应用程序框架,在这个框架上生成了 实现系统相关功能的实体类和接口类的设计。 4 3 10 c f 向导的相关设置 在使用o c a f 向导生成向导后,向导会自动给工程添加库文件,t k o f f s e t 1 i b t k p c a f 1 i bt k p r i m 1 i bt k p s h a p e 1 i bt k s e r v i c e 1 i bt k t o p a l g o 1 i bt k v 2 d 1 i b t k v 3 d 1 i bt k b r e p 1 i bt k g 2 d 1 i bt k g 3 d 1 i bt k g e o m b a s e 1 i bf w o s p l u g i n 1 i b p t k e m e l 1 i bt k b 0 0 1 1 i bt k c a f l i bt k c d f 1 i bt k d m w 1 i bt k e m e l 1 i bt k f i i l e t 1 i b t k g e o m a l g o 1 i bt k h l r 1 i bt k m a t h 1 i b ,这时候调试程序会发现错误,这是因为 o c a f 向导没有给工程添加类库头文件t k l c a f l i b ,把这个类库的头文件加上 则能调试成功。 需要强调的是,如果建立o c a f 框架,则必须由添加以上系统所需要的相应 类库文件,o p e nc a s c a d e 给用户提供的类库,一共分为五个类库模块,每个 类库模块都包括几十种类库,在用户使用时不一定会用到所有的类库,因此,用 户可以根据需要来在工程中添加相应的类库,例如t k l c a f 类库中就包含了关 于o c a f 的相关类。 4 3 20 c f 向导自动生成的工程和m f c 框架工程的比较 v c + + 的m f c 自动生成的框架是一个为众人所知的软件系统,这个软件系统 成为了众多程序员开发的基础,o c a f 向导生成的工程也是在m f c 框架基础上 自动生成的。下图是m f c 生成的单文档程序,界面如图4 7 : 山东大学硕士学位论文 图4 7m f c 单文档应用程序界面图 下图4 8 是基于m f c 的由o c a f 向导生成的多文档程序: 图4 8 基于m f c 的o c a f 多文档程序界面图 可以看出,o c a f 向导生成的多文档程序为开发人员提供了一个三维模型的 浏览器和一个图形工具栏,该工具栏可以执行三维环境下的各种浏览操作,比如 放大、缩小、旋转、移动等等,本课题也是依靠o w nc a s c a d e 的可视化模块 第4 章基于o p e nc a s c a d e 的应用程序框架 来实现c a i 的虚拟现实性。 4 3 3 基于m f c 框架的o c a f 应用程序原型 l 、m f c 框架生成流程 在3 2 节中介绍了m f c 框架的构成,m f c 框架界面的生成过程是由m f c 各 个类库共同作用的结果,以s d i 单文档应用程序为例,m f c 框架生成的大体流 程如下图4 9 : l 应用程序对象 l c m s a p p 上 i 文档模板对象 lc d o c t e m p l a t e 文档对象 ic m s d o c u m e n t 图4 9m f c 框架生成流程图 1 ) 通过声明全局变量t h e a p p ,对应用程序类进行初始化,即在 c m y 4 a p p :i n i t i n s t a n c e 0 进行应用程序的初始化; 2 ) 在初始化的过程中,引用c s i n g l e d o c t e m p l a t e 类来建立文档模板类,利 用文档模板类把c m s d o c 、c m s v i e w 和c m a i n f r a m e 类联系起柬; 山东大学硕士学位论文 3 ) 由文档模板类建立应用程序的文档类,用于记录、保存和调用程序所产 生的相关数据; 4 ) 调用c m a i n f r a m e 类来建立应用程序主框架,该框架包括菜单栏、图形 工具栏、客户区和状态栏; 5 ) 调用c m s v i e w 类来建立应用程序客户区,该客户区包括显示区和建模 控制区,是虚拟三维建模平台最为重要的图像输出窗口。 2 、o c a f 的生成流程 通过分析o c a f 向导在m f c 的框架中自动生成的v c 工程可以看出,向导 在m f c 框架流程的函数中自动添加了程序片断,按m f c 框架生成流程顺序分 析,这些程序片断分布在:应用程序类的构造函数、文档类的构造函数、视图类 的构造函数、c m s d o c :o n n e w d o c u m e n t o 、c m s v i e w :o n i n i t i a l u p d a t e 0 、最终 到c m y 3 v i e w :o n d r a w ( c d c p d c ) 。另外,还有在v i e w 类的o n s i z e ( ) 中添 加这样就是向导自动生成的程序片断。根据这些程序片断可以推断出o c a f 的 生成流程如图4 1 0 : ( 丰玎始化0 c a f 应用程序) 创建三雏视图器和交互环境 刨建。以政档) r - 初始化o c f 视图 1 ( 皋成初始化) 图4 1 0o c a f 生成流程图 第4 章基于o p e n c a s c a d e 的麻用程序框架 1 ) 由t d o c s t d _ a p p l i c a t i o n 派生的应用程序类来初始化应用程序,然后在应 用程序类的构造函数中利用g r a p h i c 3 d _ _ w n t g r a p h i c d e v i c e 类初始化虚 拟三维环境的显示设备; 2 ) 由显示设备初始化三维视图器,再由三维视图器初始化交互环境,在这 个过程中,可以选择设置三维环境的初始值; 3 ) 由应用程序类创建o c a f 文档,文档用来保存模型数据; 4 ) 初始化o c a f 视图 a ) 由三维视图器初始化o c a f 视图,并把o c a f 视图与显示窗口关联; 初始化窗口; c ) 把三维视图器加入o c a f 文档中。 5 ) 在m f c 框架的v i e w 类的o n s i z e 和o n d r a w 函数中,完成o c a f 重绘 的初始化。 4 3 4 基于o p e nc a s c a d e 的单文档应用程序框架 通过对o c a f 向导生成工程的分析,得出了基于m f c 框架的o c a f 应用程 序原型,本课题把这一原型应用在m f c 单文档应用程序当中,就完成基于o p e n c a s c a d e 的单文档应用程序框架。 具体的方法是将m f c 框架的相应的函数中,添加相应的代码来完成o c a f 应用原型的初始化。按照图4 9 的流程来添加代码: l 、初始化o c a f 应用程序,在c m s a p p 的构造函数中,添加如下代码以满 足初始化图形设备和初始化o c a f 应用程序。 c m y 3 a p p :c m y 3 a p p ( ) t r y m y g r a p h i c d e v i c e = n e wg r a p h i c 3 d _ w n t g r a p h i c d e v i c e o ; c a t c h ( s t a n d a r d _ f a i l u r e ) a f x m e s s a g e b o x ( ”f a t a le r r o ri ng r a p h i ci n i t i a l i s a t i o n ”) ;) m y o c a f a p p l i c a t i o n = n e wo c a f a p p l i c a t i o n ; ) 4 8 山东大学硕士学位论文 2 、创建三维视图器和交互环境。在c m s d o c 的构造函数中,通过应用程序 初始化得到的显示设备生成三维视图器并设置相关参数。 c m s d o c :c m s d o e 0 h a n d l eg r a p h i c 3 d _ w l q t g r a p h i c d e v i e et h e g r a p h i e d e v i e e 。 ( ( c m s a p p + ) a f x o e t a p p ( ) ) - g e t c - r a p h i c d e v i c e 0 ; t c o l l e e t i o n _ e x t e n d e d s t r i n ga 3 d n a m e ( ”v i s u 3 d ”) ; m y v i e w e r = 1 1 c wv 3 dv i e w e r ( t h e c r r a p h i c d e v i c e , a 3 d n a m e t o e x t s t r i n g o , , 1 0 0 0 ) ; m y a i s c o n t e x t = n e w a i s _ i n t e r a c t i v e c o n t e x t ( m y v i e w e r ) ; m y v i e w e r - s e t d e f a u l t l i g h t s 0 ; m y v i e w e r - s e t l i g h t o n 0 ; 3 、创建o c a f 文档。o c a f 文档用于保存模型数据,在c m s d o c : o n n e w d o c u m e n t 0 中,创建o c a f 文档并设置三维视图器与之关联,可以设置 文档的文件后缀名及文档可恢复次数。 b o o lc m s d o c :o n n e w d o e u m e n t 0 i f ( ! c d o c t t m e m :o n n e w d o c u m e n t 0 ) r e t u r nf a l s e ; h a n d l e _ o c a f a p p l i c a t i o na p p l i = ( ( c m s a p p + ) a f x g e t a p p 0 ) - g e t o c a f a p p 0 ; a p p l i - n e w d o c u m e n t ( m y f o r m a t ”,o c a f d o e ) ; t p r s s t d _ a i s v i e w e r :n e w ( o c a f d o c m a i n 0 ,m y v i e w e r ) ; h a n d l e ( a i s _ i n t e r a e t i v e c o n t e x t ) c t x ; t p r s s t d _ a i s v i e w e r :f i n d ( o c a f d o c - m a i n 0 ,c t x ) ; c t x - s e t d i s p l a y m o d e ( a i s _ s h a d e d ) ; m y a i s c o n t e x t = - c t x ; o c a f d o c - s e t u n d o l i m i t ( 1 0 ) ; l 急r l r nt r u e ; 4 、初始化o c a f 视图。在c m s v i e w :o n l n i t i a l u p d a t e 0 ,初始化o c a f 视 图。 笙! 童堡王旦塑竺垒! 曼垒里曼塑堕旦壁壁堡壅 v o i dc m s v i e w :o n l n i t i a l u p d a t e o c v i e w :o n l n i t i a l u p d a t e 0 ; m y v i e w = g e t d o c u m e n t 0 - g e t v i e w e r 0 c r e a t e v i e w 0 ; m y v i e w - s e t d e g e n e r a t e m o d e o n 0 ; m y d e g e n e r a t e m o d e l s o n = s t a n d a r d _ t r u e ; h a n d l e ( g r a p h i c 3 d _ w n t g r a p h i c d e v i c e ) t h e g r a p h i c d e v i c e2 ( ( c m s a p p + ) a f x g e t a p p 0 ) - g e t g r a p h i c d e v i e e 0 ; h a n d l e ( w n t _ w i n d o w ) a w n t w i n d o w 2 l l e w w n t _ w i n d o w ( t h e g r a p h i c d e v i c e ,g e t s a f e h w n do ) ; m y v i e w 一 s e t w i n d o w ( a w n t w i n d o w ) ; m y c u r r e m m o d e = c u r a c t i o n 3 d _ n o t h i n g ; m y a i s c o n t e x t = g e t d o c u m e n t 0 一 m y a i s c o n t e x t ; 5 、完成初始化。在c m s v i e w 类的o n s i z e 和o n d r a w 函数中,完成o c a f 重绘的初始化。 v o i dc m s v i e w :o n s i z e ( u i n tn t y p e ,i n tc x ,i n te y ) i f ( ! m y v i e w i s n u l l 0 ) m y v i e w - m u s t b e r e s i z e d 0 ; v o i dc m s v i e w :o n d r a w ( c d c + p d c ) c m s d o e + p d o c = g e t d o c u m e n t ( ) ; a s s e r t _ v a l i d ( p d o e ) ; m y v i e w - r e d r a w 0 ; o c a f 生成流程的最终结果就得到本课题所需要的开发框架,这一框架结果 如图4 1 1 : 山东大学硕士学位论文 图4 11 基于o p e nc a s c a d e 单文档应用程序框架界面图 在这个框架的基础上,我们可以在把精力重点放在三维建模模块、显示模块 等的开发,而不必考虑o p e nc a s c a d e 底层的一些接口问题。当然,如果把这 一原型应用在其他编程工具上,也可以建立基于不同编程工具的应用程序框架。 4 4 本章小结 本章介绍了o p e nc a s c a d e 几何内核及o p e nc a s c a d e 提供的0 c a f 工具,并深 入研究了o c a f 工作原理,建立了以0 c a f 为基础的单文档应用程序框架 5 1 第5 章虚拟三维建模平台的儿何内核模块 第5 章虚拟三维建模平台的几何内核模块 本章在基于o c a f 单文档应用程序框架的基础上,设计虚拟三维建模平台的 几何内核模块。分析了几何内核模块的功能之后,完成了相关类的设计,其中包 括两个类的设计:模型库类和模型类。 5 1 几何内核模块的总体设计 几何内核模块是基于o p e nc a s c a d e 的一个功能模块,主要处理3 d 建模的各 种问题,比如建立实体模型、提供布尔操作、面角操作( 倒角、圆角) 、计算实 体属性、可视化操作、数据格式转换等。模块由两个类组成,模型库类和模型类。 模型库类有如下功能:浏览模型、增加模型、删除模型、导入模型;模型类 有如下功能:建立三维模型、保存模型、模型的数据结构设计、模型复杂运算、 模型文件格式的转换等。模型库类部分功能的实现依赖于模型类,如增加模型; m f c 框架的视图类与模型类通信,实现用户对模型的交互式操作,如用户可以通 过对话框在显示区中新建三维模型。它们之间的关系如图5 1 图5 1 几何内核模块内部功能类之间的关系 5 2 模型库类的设计 模型库类是实体类,实体类代表了应用领域的核心内容,它的作用是用来持 山东大学硕士学位论文 久地保存应用程序的实体,同时提供驱动应用程序中大多数的交互服务。 5 2 1 类的设计原则 类是设计工作的核心,系统的实际工作其实也是由类执行的。类的设计原则 如下: 确保类可为用例实现提供必需的行为。 确保提供充足的信息来明确无误地实施类。 处理和类有关的非功能性需求。 包含用于类的设计机制。 5 2 2 类的操作、履性及方法的设计说明 1 ) 类的操作是完成类的功能的重要手段,要确定有关设计类的操作,需要: 研究每一有关的分析类的职责,为每项职责创建一个操作。将职责 的说明作为操作的初始说明。 研究类所参与的用例实现,查看用例实现如何使用操作。扩展操作 ( 此时是一个用例实现) ,改进操作及其说明、返回类型和参数。 用例实现事件流使用文本描述了每个用例实现对于类的需求。 研究用例的特殊需求,确保没有遗漏对于此处所述操作的隐含需求
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年海南职业技术学院单招综合素质考试题库附参考答案详解(A卷)
- 智慧教育评价体系培训心得体会
- 信息安全管理培训
- 2027年广东省清远市单招职业技能考试题库附参考答案详解【考试直接用】
- 2027年河北燕赵文化职业学院高职单招职业技能考试题库附答案详解(培优)
- 2027年廊坊职业技术学院高职单招职业技能考试题库带答案详解(夺分金卷)
- 2027年长沙航空职业技术学院单招综合素质考试模拟试卷及答案详解【真题汇编】
- 2027年陕西现代装备职业学院高职单招职业适应性测试考试模拟试卷【名校卷】附答案详解
- 2027年湖南工程职业技术学院单招职业技能考试模拟试卷附参考答案详解【培优】
- 2025年安阳洹河职业学院单招职业技能考试模拟试卷【综合题】附答案详解
- 实施指南(2025)《HGT 4955-2016 轮胎用射频识别(RFID)电子标签性能试验方法》
- 内镜中心PDCA课件
- 污水设备调试计划方案(3篇)
- 药剂职称评审汇报
- 冬病夏治治疗呼吸系统疾病
- T/CAQI 47-2018饮用水售水机技术要求
- 《简支梁计算》课件
- GB/T 15934-2024电器附件电线组件和互连电线组件
- 仁爱科普版(2024)七年级上册英语Unit 3单元测试卷(含答案)
- 广东省揭阳市普宁市2023-2024学年八年级下学期7月期末数学试题
- 2069-3-3101-002WKB产品判定准则-外发
评论
0/150
提交评论