240 likes | 668 Views
第十七章 ACIS 的简介与环境配置. 17.1 概述 17.2 ACIS 的概念 17.3 ACIS 的环境配置. 1 7.1 概述. 几何造型是 CAD/CAM 技术的基础,随着 CAD/CAM 技术的应用范围不断扩大,人们对相应的软件系统的要求越来越高,这种要求不断地推动几何造型理论和方法的更新与发展,从普通的球体、棱柱体等规则形状的表示到自由曲面的设计,再到基于图像的三维模型重建,几何造型技术的应用领域不断扩大,而其复杂性也越来越高。
E N D
第十七章 ACIS的简介与环境配置 • 17.1 概述 • 17.2 ACIS的概念 • 17.3 ACIS的环境配置
17.1 概述 • 几何造型是CAD/CAM技术的基础,随着CAD/CAM技术的应用范围不断扩大,人们对相应的软件系统的要求越来越高,这种要求不断地推动几何造型理论和方法的更新与发展,从普通的球体、棱柱体等规则形状的表示到自由曲面的设计,再到基于图像的三维模型重建,几何造型技术的应用领域不断扩大,而其复杂性也越来越高。 • 我国在高档图形系统开发方面与世界发达国家有一定的差距,造成这个结果的主要原因就是图形系统的技术复杂性。图形系统的基本技术包括:江苏几何、解析几何、微分几何以及数值逼近等数学技术和软件技术。而这些技术的发展不是一蹴而就,而是按层次分阶段的发展,由于这个原因,现在世界上主要的图形核心软件平台包括ACIS也就有三四个,而许多商业化图形软件系统源自ACIS这些图形平台,如Autodesk公司的MDT5.0、AutoInventor 以及其他一些产品、老牌的CAD软件CadKey 等。 • ACIS作为一个世界级的几何造型平台,集成了当今先进的造型方法与技术,以他为基础开发图形系统或者作为学习研究几何造型技术的工具都可以获得事半功倍的效果。ACIS一词有英国剑桥博士Ian Braid及其同窗Alan Grayer、导师Charles Lang三人的名字的第一个字母再加上Solid(实体)的第一个字母组合而成。
什么是ACIS • ACIS是一个基于面向对象软件技术的三维几何造型引擎,它是美国Spatial公司的产品。它可以为应用软件系统提供功能强大的几何造型功能。 • ACIS是用C++技术构造的,它包含了一整套C++类(包括数据成员和方法)和函数,开发人员可以使用这些类和函数构造有关某些终端用户的2/3维软件系统。ACIS可以向应用程序提供一个包括曲线、曲面和实体造型的统一开发环境,它提供了通用的基本造型功能,用户也可以根据自己的特殊需要采用其中的一部分,也可以在这个基础上扩展它的功能。 • 在ACIS中集成了线框造型、曲面造型以及实体造型方法,而且这些造型方法可以在一个统一的数据结构中共存,因此,一个ACIS实体可以用上述方法中的一种和多种同时表示。 • 从应用角度看,不准确地说,初学者(尤其是在C++环境下的ACIS的初学者)可以把ACIS看成C++环境中的一个图形开发类库,而C++是它的运行环境(当然ACIS有自带的运行环境Scheme,这将在本章第三节讲到)。
SAT文件 • ACIS提供了文件处理功能,它可以将模型信息保存到磁盘文件中,当然也可以从这些文件里读出并恢复保存的模型信息。这些文件的格式是公开的,这样非ACIS软件系统就可以使用这些信息。例如,一个非ACIS应用程序如果把ACIS模型信息转换到另外的系统中去,就需要了解ACIS存储文件的格式,反之亦然。 • 有两种ACIS存储文件格式:标准的ACIS文本文件(文件扩展名为.SAT)和标准的ACIS二进制文件(文件扩展名为.SAB)。这两种格式的唯一不同是一个为ASCII文本格式而另一个为二进制格式,这两种文件格式的组织结构是统一的。
应用程序与ACIS的接口 • C++应用程序与ACIS的接口可以通过API(Application Procedural Interface,应用程序接口)、C++类及其直接接口函数来实现。对于Microsoft的Windows平台,开发人员也可以在MFC(Microsoft Foundation Class,微软基本类库)中使用ACIS接口(本章第三节讲的就是在VC++环境下如何配置ACIS及构建应用程序框架)。 • 1.API函数 • API函数是应用程序和ACIS的主要接口,它是应用程序用来产生、修改和接受数据的主要方法。API函数将造型功能和一些应用程序特征结合在一起,如参数错误检查和返回操作等。这些函数保证不同版本之间的一致性,这个一致性对一些低级的ACIS数据结构做了改变也要得到保证。 • 2.类 • 类接口是指用于定义ACIS模型中几何体、拓扑以及其他特性的C++类的集合。应用程序可以通过这些类中的公共和保护数据成员和超越函数(方法)直接与ACIS通讯,开发人员为了实现特殊目的,可以从ACIS的类派生出特殊用途的类。类接口在不同版本之间可能存在不同。 • 3.类的直接接口函数 • 这类函数提供了直接调用造型操作的功能,它不具备API函数的应用支持特征,因此这些函数不保证不同版本的一致性。
第十七章 ACIS的简介与环境配置 • 17.1 概述 • 17.2 ACIS的概念 • 17.3 ACIS的环境配置
17.2 ACIS的概念 • ACIS和C++ • ACIS是用C++构造的图形系统开发平台,它包括一系列的C++函数和类(包括数据成员和方法)。开发者可以利用这些功能开发面向终端用户的三维造型系统。 • ACIS是一个实体造型器,但是线框和曲面模型也可以在ACIS中表示。ACIS通过一个统一的数据结构来同时描述线框、曲面和实体模型,这个数据结构用分层的C++类实现。ACIS利用C++的特点构造了标准的、可维护的接口。API函数在不同ACIS版本之间保持一致性,而类及其接口函数则可能改变。 • ACIS中应用到的主要C++概念包括:数据封装、类构造重载、构造拷贝、类方法和操作符重载以及函数重载等。 • C++没有提供描述几何体的数学基本类,ACIS提供了一些C++基类实现这个功能,并且利用C++的特性可以对它进行了扩充,这样ACIS就可以支持任意几何体的定义和构造功能。
实体和模型对象 • 实体(Entities)是ACIS中最基本的对象,它由C++中的ENTITY类实现,所有的实体对象具有一组相同的功能,例如,实体本身的信息保存功能、自身复制功能以及调试功能。所有的高级ACIS模型对象都继承于ENTITYl类。模型对象(Model Objects)可以是任何能保存到ACIS的SAT文件和能从SAT文件恢复的对象。ACIS的模型对象由派生于ENTITY • 类的不同层次的类实现。 • 需要说明的是,这里所说的实体与实体造型中的“实体”不是一个概念,后者指“实心体”。
属性和维度 • 属性被用于给实体附加数据,每个实体可以没有或有多个属性。C++中的ATTRIB类直接继承于ENTITY类,它提供了所有属性共享的数据和功能,包括用户定义属性和系统属性。ATTRIB类执行将属性列表附加到模型实体的常务性操作。属性可以是简单数据、指向其他实体的指针、与某个应用程序的链接或可变长度数据。许多属性执行派生于ATTRIB类的特殊任务。 • 对象的维度是为了确定对象上一点所需的个数。一个点需要一个参数表示,则其维度为一,需要两个参数表示则其维度为二,依次类推。换句话说,线上的点是一维的,面上的点是二维的,体上的点是三维的。在ACIS中,一维指线(如直线),二维指面(如平面),三维指实体(如方块或球体)。ACIS中的对象的维度与它所在的空间的维度没有关系,例如三维空间里的一维曲线仍然是一个一维实体。当不同维度的对象在同一个模型中表示的时候,混合维度就出现了。ACIS明确地表示混合维度的对象并允许混合维度操作。一个物体可以包括三维区域、二维和一维区域。如图16.2.1,就表示了一个合法的ACIS模型,它含有两个实体球、两个球体轴心线以及链接平面,整个模型存在于三维模型空间,而面是二维实体,轴心线是一维实体。
ACIS允许在三维区域包含线和平面,这些线和面不必与实体区域的边界相连,可以是封闭和开放的。被包含的面表示实体区域里的一个裂缝或一个非常窄的空间,也就是说二维区域不在实体的点集合中。被包含的线表示实体区域内的一个无限小的小洞,也就是说一维区域不在实体的点集合中。ACIS允许在三维区域包含线和平面,这些线和面不必与实体区域的边界相连,可以是封闭和开放的。被包含的面表示实体区域里的一个裂缝或一个非常窄的空间,也就是说二维区域不在实体的点集合中。被包含的线表示实体区域内的一个无限小的小洞,也就是说一维区域不在实体的点集合中。
第十七章 ACIS的简介与环境配置 • 17.1 概述 • 17.2 ACIS的概念 • 17.3 ACIS的环境配置
17.3 ACIS的环境配置 • 本节主要介绍ACIS的运行环境及其配置。如前所述ACIS的运行环境,从大方面分有两种:Scheme和C++,若再细分,C++又可分为windows控制台程序和VC++的可视化的AppWizard程序。首先,把ACIS光盘中的acis目录下的文件拷贝到你的计算机硬盘上。
Scheme环境及其运行 • Scheme是一种派生与LISP(一种公共程序开发语言)的解释型程序开发语言,它为应用程序开发提供了快速原型方法。这种语言与其他解释型语言(如BASIC、Prolog)的不同之处是它的执行效率非常高。由于它是解释型的程序开发语言,所以用它编写的程序不需要编译和链接就可以在解释器中直接运行,开发者可以通过一些简单的练习而快速地掌握它。Scheme非常适用于控制任务,如用户交互命令的处理等。 • Scheme解释器又称为Scheme ACIS接口驱动扩展(Scheme ACIS Interface Driver Extension, Scheme AIDE)。这个应用程序在一个命令窗口中接收Scheme命令,而在图形显示窗口中显示该命令的执行结果。Scheme AIDE通过对Scheme命令的解释与ACIS进行数据交换。初学者可以利用Scheme AIDE来熟悉ACIS的基本功能、测试某些思想或者产生应用程序原型。 • Scheme语言与C++语言相比有三个特点:没有指针、不需要头文件以及可以进行交互式程序设计,程序员可以在解释器中立即执行这些程序,从这个特点来看Scheme更像Basic和Prolog等程序设计语言。
运行ACIS Scheme解释器的步骤如下 • (1)在ACIS根目录中的bin子目录里,找到程序acis3d.exe,该程序就是Scheme AIDE的可执行程序,同时也是ACIS Scheme解释器。 • (2)按下述命令格式运行该程序,-p后面的内容是解释器的加载路径,该路径指定的目录里含有初始化文件aisinit.scm 。 • d:\acis\bin\nt\acis3dt.exe –p d:\acis\scm\examples • 在Windows中,我们也可以选择【开始】|【运行】菜单,将上述命令输入到命令编辑框里,从而运行该程序。 • 初始化文件acisinit.scm里含有一些很有用的功能,如视图旋转和缩放功能,在ACIS Scheme的任意显示视图里,可以通过鼠标左键进行旋转操作,用右键进行放缩操作,左右键同时使用可以进行移动操作。
用Windows控制台环境编译ACIS程序 • 本书的示例程序可以运行在UNIX和Windows平台上,编译和链接的详细过程对于每个平台可能有所不同。下面介绍Windows平台上C++例程(本节的例程环境是Windows控制台程序,即Windows中运行的DOS程序)的编译和链接方法。 • 假设你的计算机已经安装了Windows(Win98/2000/xp或者WindowsNT)操作系统和Visual C++ 6.0以及相应的ACIS系统。 • 默认的ACIS调试动态链接库位于〈acis_dir〉/lib/NT_DLLD/路径中(其中〈acis_dir〉是ACIS系统的安装路径,如:d:\acis),扩展名为.DLL,将这些文件拷贝到系统路径Windows/system中,或者按下述方法在系统环境变量Path中: • 右击“我的电脑”; • 选择【属性】菜单,出现“系统属性”对话框,选择“高级”选项卡; • 选择“环境变量”按钮,在系统变量列表框中选择“Path”; • 选择“编辑”按钮,在“变量值”里,输入“<acis_dir>/lib/NT_DLLD”(<acis_dir> • 要根据具体的ACIS安装路径设置,如:d:\acis); • 选择“确定”按钮。
启动Visual C++ 6.0 • 打开File菜单,选择New菜单项,出现new对话框。 • 选择new对话框中的Project选项卡,在列表框中选择Win32 console Application, • 并在Project Name文本框中输入工程名(如“My”),在Location文本框中输入保存路径名称,选择OK按钮,出现Win32 Console Application Step 1 of 1对话框。 • 选择An empty project单选项,最后选择Finish按钮。 • 打开Project菜单组,再打开Add to Project菜单组,选择Files菜单项,出现Insert • Files Into Project对话框,选择block.cxx文件,最后选择OK按钮,将该文件加入到当前工程之中。 • 打开Visual C++的Build菜单组,选择Set Active Configuration命令,出现Set Active • Project Configuration对话框,在Project Configurations列表框中选择My-Win32 Debug选项。 • 打开Visual C++的Project菜单,选择Settings命令,出现Project Settings对话框, • 确认工程名(本例中“My”)被选中。 • 选择C/C++选项卡并选择Category下拉列表框中的Preprocessor选项。 • 10.在Preprocessor Definitions文本框中输入“NT”和“ACIS_DLLD”。 • 11.在Additional Include Directories(其他包含目录)文本框中输入以下内容: • 〈acis_dir〉/cstr,〈acis_dir〉/kern,〈acis_dir〉/base • 上述内容要根据例程使用的ACIS组件作相应的修改。 • 12.选择C/C++选项卡并选择Category下拉列表框中的Code Generation选项。 • 13.选择Use run-time library(运行库)下拉列表框中的Debug Mulithreaded DLL。 • 14.选择Link选项卡并选择Category下拉列表框中的Input选项,在Additional library Path(附加链接路径)文本框中输入:〈acis_dir〉\lib\NT_DLLD。 • 15.打开Visual C++的Build菜单,选择Build my.exe命令,就可以得到一个可以运行的控制台程序了。
用ACIS AppWizard生成ACIS应用程序框架 • ACIS AppWizard可以产生一个应用程序框架,它的使用方法与MFC AppWizard类似。下面就一步步来说明如何利用ACIS AppWizard在Microsoft Developer Studio 6.0中建立自己的第一个基于MFC的ACIS应用程序。 • 配置环境变量: • 在Windows NT和Windows 2000中, • 右击“我的电脑”; • 选择【属性】菜单,出现“系统属性”对话框,选择“高级”选项卡; • 选择“环境变量”按钮,在系统变量列表框中选择“Path”; • 选择“编辑”按钮,在“变量值”里,输入“<acis_dir>/lib/NT_DLLD”(<acis_dir> • 要根据具体的ACIS安装路径设置,如:d:\acis); • (5)在系统变量列表框下点“新建”按钮,“变量名”里输入“A3DT”,“变量值”里输入“<acis_dir>/object”; • (6)在系统变量列表框下点“新建”按钮,“变量名”里输入“ARCH”,“变量值”里输入“NT_DLLD”; • 选择“确定”按钮。
把ACIS AppWizard(即ACIS的Object\amfc\aw-i386下的AcisAW.awx)拷贝到装有Microsoft Developer Studio 6.0的Common\MSDev98\Template目录下。 • 启动Visual C++ 6.0。 • 打开File菜单,选择New菜单项,出现new对话框。 • 选择new对话框中的Project选项卡。 • 从Type选项组中选择ACIS AppWizard,在Name文本框中输入工程名称(如My), • 选择OK按钮,出现ACIS AppWizard Step-1对话框,选择Multiple Document(多文档界面)单选按钮。现在ACIS只支持多文档界面和单文档界面,选择Next按钮,出现ACIS AppWizard Step-2 of 7对话框。
接受ACIS AppWizard Step-2 of 7对话框的默认设置,选择Next按钮,出现ACIS • AppWizard Step-3 of 7对话框。 • ACIS AppWizard的第3个对话框中选择Full-Server单选按钮和What other sup- • port would you like to include复选框中的Automation选项。选择Next按钮,出现ACIS AppWizard Step-4 of 7对话框。 • ACIS AppWizard Step-4 of 7对话框中有一个可选步骤,选择Advanced按钮,出 • 现Advanced options对话框。在File extension文本框中输入ACIS模型文件的后缀.SAT,选择Close按钮返回ACIS AppWizard Step-4 of 7对话框,选择Next按钮出现ACIS AppWizard Step-5 of 7对话框。 • 10.ACIS AppWizard Step-5 of 7对话框中选择use a shared DLL(使用共享DLL) • 单选按钮,选择Next按钮,出现ACIS AppWizard Step-6 of 7对话框。
ACIS AppWizard Step-6 of 7对话框中选择AMFC提供的一些常用功能,用 • 户一旦选取了其中的某个功能,系统就会自动生成相应的代码。这些功能包括: • Doc Editing-Undo/Redo/Clear(文档编辑); • View Editing-Cut/Paste(视图编辑); • View Commands-Top/Right/Front/…(方向视图命令); • View Commands-Zoom/Pan/Orbit/…(视图缩放命令)。 • 12.接受ACIS AppWizard Step-7 of 7对话框中的默认设置,选择“Finish”按钮,出现New Project Information对话框,选择OK按钮,这时新的ACIS应用程序框架就是构造完毕,为了使程序能够正确编译,还要进行一些必要的辅助工作。 • 13.把acismfc(在object/amfc目录下)整个复制到新工程所在的目录里,然后在VC的File View选项卡的Source Files文件夹里新建一个文件夹,并把它命名为“ACIS MFC”, • 再在该文件夹中创建一个名称为“Tools”的文件夹。用鼠标右击ACIS MFC文件夹并选择“Add Files to Folder”菜单项,把acismfc目录(在新工程所在目录里)中的*.cxx文件加入到该文件夹里。再用鼠标右击Tools文件夹并选择“Add Files to Folder”菜单项,把acismfc/tools目录(在新工程所在目录里)中的*.cxx文件加入到该文件夹中。 • 14.打开VC++的Project菜单,选择Settings命令,出现Project Settings对话框,确认工程名(本例中为“My”)被选中。根据程序类型选择配置类型(Win32 Debug、Win32 Release或者All Configurations,一般选择Debug)。
选择C/C++选项卡并选择Category(类别)下拉列表框中的Preprocessor(预处理)选项。选择C/C++选项卡并选择Category(类别)下拉列表框中的Preprocessor(预处理)选项。 • 16.在Additional Include Directories(其他包含目录)文本框里输入以下内容: • $(A3DT)\ag,$(A3DT)\amfc,$(A3DT)\blnd,$(A3DT)\law,$(A3DT)\base,$(A3DT)\bool,$(A3DT)\br,$(A3DT)\clr,$(A3DT)\covr,$(A3DT)\cstr,$(A3DT)\ct,$(A3DT)\eulr,$(A3DT)\fct,$(A3DT)\ga,$(A3DT)\gi,$(A3DT)\gl,$(A3DT)\ihl,$(A3DT)\intr,$(A3DT)\kern,$(A3DT)\ofst,$(A3DT)\oper,$(A3DT)\part,$(A3DT)\pid,$(A3DT)\rbase,$(A3DT)\rem,$(A3DT)\skin,$(A3DT)\swp(每项间不能有空格) • 上述内容可能会因使用不同的ACIS组件或ACIS版本而有增加。 • 17.选择C/C++选项并选择Category(类别)下拉列表框中的Code Generation选项。 • 18.选择Use run-time library(运行库)下拉列表框中的Debug Multithreaded DLL或者Multithreaded DLL(根据工程设置的类型Win32 Debug/Release而定)。 • 19.选择Link选项卡并选择Category(类别)下拉列表框中的Input选项,在Addi- tional library path(附加链接路径)文本框里输入:$(A3DT)\lib\$(ARCH)。 • 20.选择Source File文件夹里的my.rc文件。 • 21.选择Resources选项卡。 • 22.在Additional resource include directories(附加资源路径)文本框里输入: • $(A3DT)\amfc。 • 23.打开VC++的Build菜单选择Build my.exe命令,就可以得到一个可以运行的AMFC程序了,该程序可以打开ACIS的模型文件,还可以进行不同方式的观察操作和当前图形的打印预览以及打印操作。
总结 • 17.1 概述 • 17.2 ACIS的概念 • 17.3 ACIS的环境配置