欢迎来到天天文库
浏览记录
ID:26875444
大小:220.50 KB
页数:39页
时间:2018-11-29
《acis的实例代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十八章ACIS的实例代码18.1用Scheme语言生成ACIS程序18.2用Windows控制台环境编译ACIS程序18.3用ACISAppWizard生成应用程序框架18.1用Scheme语言生成ACIS程序ACIS从实用角度而言(不准确地说),是一个大型的专门用于几何造型的类库,而它的运行环境正如上一章所述,是Scheme和C++;本章将就ACIS的Scheme程序、C++的Windows控制台程序和C++的AppWizard应用程序,进行实例讲解。用Scheme语言生成ACIS程序本节主要介绍Scheme语言的使用规则,简要讲解其基本概念如表达式、变量、函
2、数、简单几何造型功能等,并附有可以直接运行的例程代码。Scheme语言基础语法ACIS中的Scheme解释器是用C++设计的,ACIS中的几何造型功能通过对标准Scheme命令的扩展实现,这些扩展命令也是用C++设计的,它们支持ACIS中的高级造型功能,如模型着色和零件管理功能。与C++相比,Scheme是一种快速程序设计语言,而且简洁易学。Scheme语言的语法规则很少,总结如下:通过交互地调用Scheme过程来执行程序;Scheme过程及其参数都被包含在一对圆括号里;圆括号里的部分被称为Scheme表达式;表达式中包含过程名称和过程参数,具体格式如下:(过程名
3、称〈参数1,参数2,…〉)分号“;”引导的部分为程序注释。(如何运行ACISScheme解释器,请参看17.3.1节)表达式由于Scheme是一种解释型的程序开发语言,其表达式只能在解释器中执行。运行ACIS的SchemeAIDE解释程序后,就可以在它的“acis〉”提示符下输入表达式,在表达式的结束处按回车就可以执行该表达式。以下是几个典型的算术表达式:acis〉输入:(*56)回车输出:30acis〉(*567)210在Scheme的表达式中,操作符(如*)后面可以跟任意多个参数,但是其间一定要用‘空格’隔开;并且一个表达式里可以包含一个或者多个表达式,如:a
4、cis〉(*(+12)(*56))90理论上,表达式之间互相嵌套的层数是没有限制的,程序员只要匹配好括号就行了。上面表达式的例子中使用了两个标准的Scheme内部过程进行乘法和加法运算,而ACISScheme还扩充了ACIS造型器专用的过程,用户可以按照上述标准Scheme过程方法调用这些造型过程,如下面命令可产生立方体:acis〉输入:(solid:block(position000)(position101010))回车输出:#[entity10]上述命令产生了一个正方体,如图17.1.1,共调用了两个ACISScheme过程(position和solid:b
5、lock),#[entity10]是该正方体的默认名称。外部描述符Scheme表达式产生的每个对象都有一个外部描述符和一个内部描述符。虽然外部描述符看上去比较简单,它在与用户交互过程中有重要作用。它会将一个过程的执行结果反馈给用户,例如我们前面举的一些例子中,如果表达式的计算结果不被用作其他表达式的参数,也就是说该表达式未被嵌套在其他表达式中,则Scheme解释器自动将表达式执行结果的外部描述符输出,对于算术运算来说其外部描述符只是一些简单的数字,如30,210,90等。ACIS的对象也具有外部描述符,当一个含有ACIS造型功能的过程被调用后,它所产生的ACIS对
6、象的描述符就会被解释器输出,其一般格式如下:#[type_of_object<参数>]下面,我们看一个关于ACIS对象的例子:;产生一个position对象acis〉(position10,20,30)#[position10,20,30]这个position对象的外部描述符表示了一个x=10,y=20,z=30的坐标点。从ACIS的ENTITY类派生的对象的外部描述符与position对象的外部描述符类似,稍微复杂之处就是,这些东西被组织到所谓的零件(PART)单元中。在ACISScheme解释器开始运行时,它会自动产生一个编号为1的默认零件。下面就是关于ACI
7、S的ENTITY对象的Scheme例子:;产生一个长方体acis〉(solid:block(position000)(position101010))#[entity10]过程solid:block产生了一个ACIS实体对象,#[entity10]是它的外部描述符,该描述符由两部分组成,即实体号(1)和零件号(0),实体号可以作为其他过程的参数。下面就是一个使用实体号的例子:;删除一个实体acis〉(entity:delete(entity1))()注意:“()”表示空元素,Scheme语言的列表结构中会自动地在列表末尾增加它。变量在Scheme语言中可以用变量名
8、称记录变量
此文档下载收益归作者所有