OCAF初步

原创 2011年05月14日 09:46:00

   OpenCASCADE不仅为用户提供了三位建模、几何体复杂运算、可视化模块等相关类库,还为用户提供了OCAF。
OCAF是the Open CASCADE Application Framework的简称,是一个用来管理应用程序数据的组织框架,使用它可以很容易组织管理常见的CAD/CAM应用程序数据,为开发人员提供了一个快速开发的手段。
它使产品设计工作在更高的层次上进行,设计人员的操作对象不再是原始的线条和体素,而是产品的功能要素,象螺纹孔、定位孔、键槽等。图形的引用直接体现设计意图,使得建立的产品模型容易为别人理解和组织生产,设计的图样更容易修改。设计人员可以将更多精力用在创造性构思上。
OCAF对于OpenCASCADE是一个其类库的辅助工具,在算法、拓扑或几何建模的过程中,OCAF能处理这些类库中的任何数据与算法,这个框架还可以用于组织、保存应用数据。
它提供了:
1.大部分应用程序通用的数据;
2.一套可升级的扩展协议,它可以使用新的应用程序数据;
3.一个体系:
•能够把数据和拓扑元素结合起来
•把由不同的应用程序生成的数据连接起来;
•注册建模过程创建历史或参数

3. 2. 2 OCAF工作原理

1应用程序和文档
在OCAF中,由是OCAF 应用程序来管理管理文档,用文档来管理数据;
应用程序的主要作用是:
--创建新的文档;
--保存与打开文档;
--初始化文档的视图;
文档除了是应用程序数据额的容器之外,还可以指向其他的文档。例如,文档A可以指向文档B的特定的标签。这功能是通过关键参数来实现的。
可以使用TKLCAF.dll类库中的TdocStd_Application派生出应用程序类来管理OCAF应用程序,在应用程序初始化完成后,应用程序类建立文档类,一个应用程序可以建立多个文档类,建立文档类时可以规定该文档类的文件格式。
Handle_TdocStd_ Application//声明应用程序
myOcafApplication=new OcafApplication;//初始化OCAF应用程序
Handle_TdocStd_Document OCAFDoc;//声明文档类
myOcafApplication->NewDocument(“MyFormat”,OCAFDoc);//使用应用程序类建立文档类

2.文档与数据结构
在文档内部,有一个数据框架,一个模型:

主要有以下特点:
(1) 第一个节点是树的根;
(2) 每一个节点都用一个整型值来表达,称为标记(tag) ;
(3) 子节点称为上一节点的孩子;
(4) 非根节点有一个父亲,在此节点的上一级;
(5) 有相同父亲的节点称为兄弟;
(6) 兄弟间不能有相同的标记;
(7) 一个标记在兄弟间是唯一的;
3. 2. 3 OCAF调用
OCAF的调用一般过程是;
1.要在程序的Document中加入一个OCAF变量:Handle_TDocStd_Document m_OcafDoc;用来表示OCAF的文档,注意,这个OCAF文档类和MFC的文档类并不是同一个内容;下面介绍的文档全是指OCAF的文档;
2.生成一个文档的实例:
  _OCAFApp->NewDocument("文档名称", m_OcafDoc);
在这里可以设置撤消和恢复的数量
    m_OcafDoc->SetUndoLimit(10);
3.创建一个TDF_Label L;生成L的相关参数;
4.利用L和对应的DriverID生成Function;
5.利用DriverID生成图形的Driver,比如生成一个Box的Dirver: myBoxDriver;
6.调用myBoxDriver->Init(L);将两者关联起来;
7.调用myBoxDriver->Execute()函数,在这里生成图形;
以上就是生成一个TDF_Label的简单过程

 

HTML初步认识

HTML初步认识本篇博客给大家带来html最基础的东西,也就是初步认识html,打算从以下几个方面给大家介绍: 认识什么是纯文本文件txt HTML是负责描述文档语义的语言 HTML骨架和基本语法 可...
  • u010624986
  • u010624986
  • 2016年12月16日 23:46
  • 518

计算机专业初学者推荐书籍

以下这些书都是经典的经典的经典,每一本都值得细读、多读、读烂,特别是基础的书。 语言和编程基础: 1. 《C专家编程》  学C语言进阶的经典之作 http://item.jd.com...
  • dear_to_be
  • dear_to_be
  • 2014年05月19日 17:07
  • 891

java语言基础实验报告 第二个实验

package njtcstudent.com; import java.util.Scanner; public class Seond { public static void main(...
  • puhaiyang
  • puhaiyang
  • 2014年09月30日 22:41
  • 622

H - 计算几何初步

Description 我会给你N 个点 的坐标,你来判断这 N个 点最多能 组成 多少个 完全不同 的锐角三角形。 Input 第一行给出T(T≤10),代表有T组数据。 每组数据首先给...
  • xiangchengshishuiguo
  • xiangchengshishuiguo
  • 2016年11月16日 11:37
  • 114

day 1:对Java的初步认识(对于环境变量的理解等)

Java后端方向的基本就业方向如下几部分:移动互联网、互联网金融、智能家居、互联网教育等等 Java的最大特性:一次编译,到处运行。原因归功于虚拟机JVM机制,JVM虚拟机保证了在不同的平台上可以使用...
  • qq_37366958
  • qq_37366958
  • 2018年01月02日 19:32
  • 58

Cardboard虚拟现实开发初步(二)

Google Cardboard 虚拟现实眼镜开发初步(二) Cardboard SDK for Unity的使用 上一篇文章作为系列的开篇,主要是讲了一些虚拟现实的技术和原理,本篇就会带领大家去...
  • sunmc1204953974
  • sunmc1204953974
  • 2015年08月02日 09:06
  • 9447

初步认识linux与入门

习惯了使用windows以后接触另外一个操作系统似乎不太习惯,考虑到linux众多优越性,首先就说说为什么学习linux。在接触linux之前先来说说我对linux的理解。1. linux完全开源,免...
  • cai2016
  • cai2016
  • 2016年07月10日 18:27
  • 820

webvr 的初步认识

webvr 的初步认识
  • qq_16090117
  • qq_16090117
  • 2016年05月11日 20:15
  • 722

[从头学数学] 第205节 初等数论初步

剧情提要: [机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第七转的修炼。 这次要研究的是[初等数论初步]。 正剧开始: 星历2016年05月08日 10:05:37, 银河系厄尔斯星球...
  • mwsister
  • mwsister
  • 2016年05月08日 10:31
  • 816

Linux开发初步

Linux开发初步 宗旨:技术的学习是有限的,分享的精神的无限的。 一、库函数与系统调用 1、系统调用函数和库函数 库函数是一些完成特定功能的函数,一般由某个标准组织制作发布,并形成一定的标...
  • a1314521531
  • a1314521531
  • 2016年03月25日 11:49
  • 300
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OCAF初步
举报原因:
原因补充:

(最多只允许输入30个字)