Table of Contents
前言
1 平台简介
1.1 模块组成
1.2 .Net环境搭建
1.3 MFC环境搭建
1.3 Qt环境搭建
2 数学基础
2.1 向量
2.2 矩阵
2.3 练习
3 几何造型
3.1 基本体造型
3.2 实体造型
3.3 模型信息提取
3.4 曲线分割
3.5 计算误差
3.6 空间变换
4 显示引擎
4.1 整体架构
4.2 场景树管理
4.3 模型显示
4.4 材质与Style
4.5 选择拾取
4.6 显示设置
4.7 视图交互
4.8 内建显示对象
4.9 空间变换
4.10 动画
5 数据交互
5.1 STEP/IGES
5.2 DXF
5.3 STL
5.4 3DS/OBJ等
2
1.1
1.2
1.2.1
1.2.2
1.2.3
1.2.4
1.3
1.3.1
1.3.2
1.3.3
1.4
1.4.1
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.5
1.5.1
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.5.10
1.6
1.6.1
1.6.2
1.6.3
1.6.4
5.5 内存流
6 应用案例
6.1 最佳实践
7 附录
7.1 参考资料
7.2 鸣谢
7.3 赞助商
1.6.5
1.7
1.7.1
1.8
1.8.1
1.8.2
1.8.3
3
前言
三维图形平台技术是一项投入大见效慢的技术,是需要在这方面长期积累和持续投入才能掌握的核心
技术。经过多年的发展,AnyCAD在几何造型、三维显示引擎、模型数据管理等三维图形方面积累了丰
富的经验,AnyCAD的产品和三维解决方案被广泛应用于机械制造、建筑信息化、电力信息化、数控加
工、机器人仿真、教育等多个应用领域。
AnyCAD一直致力于帮助缺乏三维技术的企业单位快速地容易地搭建三维应用程序,帮助企业在日益竞
争激烈和快速发展的信息化浪潮中取得竞争优势。
AnyCAD三维图形开发平台是AnyCAD的核心平台,是AnyCAD所有图形产品的基石。AnyCAD
Graphics SDK Pro提供了基本的几何造型和三维显示解决方案,支持C++和.Net平台,可以与MFC、
Qt、WinForm、WPF等主流的UI框架集成。
《AnyCAD 三维图形开发宝典 (专业版)》共分为六章,主要内容如下:
第一章总体介绍AnyCAD SDK框架,并介绍如何在不同UI框架中集成AnyCAD SDK;
第二章介绍基本的数学计算相关API的使用;
第三章介绍几何造型相关API的用法;
第四章介绍三维显示引擎的使用方法;
第五章介绍数据交换和模型文件读写相关的内容;
第六章介绍应用案例,从整体上看AnyCAD能做什么
书中的大部分示例使用C#编程语言编写,使用简单的语法,读者可以很容易的转换成其他的编程语
言。在阅读过程中,建议读者同时打开API参考手册,查看每个类的方法。虽然本书经过反复斟酌修
改,难免有疏漏之处。欢迎读者能提出建议。
AnyCAD中国
2016年7月于上海
4
1 平台介绍
AnyCAD三维图形平台(专业版)是一个通用的三维图形应用程序开发库,底层使用高效的C++实现,
支持C++和.Net开发语言,AnyCAD的C++版本和C#版本的API基本一致(UI控件的接口有差别)。
AnyCAD的设计目标是简单易用,用户不需要掌握复杂的的三维图形知识就可以开发出专业的三维应用
程序。
C++内存管理
C++版本的内存管理由SDK内部管理,接口一般不会有裸指针的使用情况,
AnyCAD的API对象不能使用new方法在堆上创建,直接在栈上即可。AnyCAD内部使用引用和使用智能
指针确保不会产生内存泄露。
5
1.1 模块组成
本节从总体上介绍AnyCAD三维图形平台的架构和各模块的功能。
AnyCAD三维图形平台专业版主要有基本的数学库、几何造型引擎、三维显示引擎、模型转换、UI控件
组成。整体关系如下图所示:
用户根据自己擅长的开发语言和UI框架选用相应组件进行开发。C++和.Net的API接口基本一致,掌握
其中一种语言的用法基本上就可以顺利的迁移到另外的一种语言,所以基本没有切换平台的代价。
1.1.1 数学计算
主要是基本的向量计算(Vector2, Vector3)、四元组(Quaternion)和矩阵计算(Matrix4)
1.1.2 几何造型
6
采用BREP结构描述的几何拓扑结构(TopoShape)统一描述基本体和复杂模型。
造型方法
在BrepTools类实现,主要包含:
2D/3D基本体:直线、曲线、圆弧、椭圆弧、B-Spline、球体、圆柱体、圆锥体等
特征操作:拉伸、扫略、放样、倒直角、倒圆角、回转等
布尔运算:交、并、差
拓扑结构遍历
矩阵变换:位置、缩放、旋转
模型信息提取
曲线(GeomCurve)、曲面(GeomSurface)上的信息提取,比如指定参数域下的点、法线信息;长
度、面积、体积计算(TopoShapeProperty)等
1.1.3 模型显示
包括模型在三维空间的显示和三维视图的相机操作。
1.1.3.1 场景管理
拓扑对象(TopoShape)转换为显示场景节点对象(SceneNode)就可以在三维显示引擎中显示,可
以分别设置显示对象的点、边、面的显示样式,比如线宽、面的透明度、材质等。可以控制模型的顶
点、边、面的可见性和选择过滤器。
通过设置显示对象的矩阵变换可以在显示层面控制模型在空间的位置。
通过场景管理器可以添加、删除、查找、遍历场景节点对象。
1.1.3.2 显示交互
使用内置的视图控制命令,可以控制视图旋转、缩放、平移,自由控制相机位置、设置标准的视图方
向。
1.1.4 模型读写
AnyCAD支持读写标准的STEP、IGES格式模型。可以把TopoShape保存为字符串流,同时支持从字符
串流创建TopoShape。用户可以把TopoShape嵌入自己的文件格式中。
1.1.5 UI框架
View模块封装了三维显示引擎,提供基本的Command和Editor框架,在此基础上分别针对MFC、Qt、
WinForm封装易于集成的控件。用户只需要做很少的改动就可以方便地把控件集成到业务系统中。
小结
7
AnyCAD三维图形平台提供完整的通用的三维建模和显示解决方案,是一个基础的技术平台,用户需要
根据领域和具体业务进行集成开发。
8