本站首页链接

AVS公司英文网站

国际AVS中心

 

第一章 欢迎使用AVS/Express

CH1.ZIP(45KB)

本章讨论

什么是AVS/Express?

使用AVS/Express

AVS/Express工具箱

AVS/Express中的面向对象技术

连接和对象执行

对象管理器

开发和发送应用程序

1.1 什么是AVS/Express?

AVS/Express是一个面向对象的、可视的开发工具,使你能够建立可重复使用的对象,应用程序组件和复杂的数据可视化应用程序。

面向对象-AVS/Express的开发方法是面向对象;它支持数据和方法的封装;类继承;模板和实例;对象分层结构;以及多态性。在AVS/Express中,从最底层到最高层,所有的应用程序组件都是对象。

注意:术语应用程序组件和对象在本书和其它AVS/Express文档中是可以互相转换的。

可视的开发-Network编辑器是AVS/Express的主要接口。它是一个可视的开发环境,通过鼠标驱动操作来连接、定义、装配和管理对象。

可视化应用程序-AVS/Express提供了几百个预定义的应用程序组件(对象)来处理、显示和管理数据。你在Network编辑器中连接和装配的对象和应用程序组件控制数据如何被处理和显示。如果你愿意,你可以对那些对象进行编译和打包,甚至添加一个用户接口以创建一个完整的应用程序,这个应用程序可以作为一个独立存在的应用程序被分发。

AVS/Express提供了几种方式来使用对象。你可以:

将对象嵌入到AVS/Express应用程序中

使其运行在服务器模式下, 从外部C或C++例程执行和控制其中对象

创建代表独立存在的应用程序的组件

AVS/Express也对集成C,Fortran和C++代码提供完全的支持。组件可以通过调用C,Fortran和C++程序执行它们的处理过程。你也可以使用代码模板产生器输入用户书写的代码和数据,而不需要做什么修改。类似地,C++类产生器也能让你使用C++的强大编程的能力存取AVS/Express组件。

1.2 使用AVS/Express

AVS/Express有三个方法可以被用来创建可视化应用程序。你可以使用主接口(网络编辑器)、AVS/Express V编程语言和V命令处理器(VCP),或者你可以使用AVS/Express应用程序员接口(APIs)。

网络编辑器

你的主要开发工具就是网络编辑器。网络编辑器的上部分包括了对象库,下部分是你拖拽对象和在对象之间画连接线(连接线表示数据引用)来装配应用程序或创建新对象的工作区。

注意:这本指南的应用程序工作区有时使用白色背景。当你启动AVS/Express时,你所看到的背景是一个点桩区。

一个完整应用程序的例子

下图显示了当一个完整的数据可视化应用程序出现在应用程序工作区时的简化图。

只用了五个对象(Read_Field,crop,isosurface,Uviewer,TextString)和四条连接线,这个应用程序:

阅读一个域数据文件(Read_Field)

处理数据(crop和isosurface)

在一个功能完善的数据视图中显示结果(UViewer)

V 代码

网络编辑器提供存取所有的AVS/Express对象、子对象和参数的入口;然而, 你也可以通过手工编辑对象的代码,来查看、增加、删除或编辑对象。AVS/Express对象的代码叫做V代码。

你可以通过以下几种方法获取和使用V代码:

可以使用文本编辑器创建定义一组对象的V文件,然后你可以将其读入AVS/Express。

可以使用网络编辑器把一个对象保存到V文件中。如果你愿意,可以编辑这个V文件修改这些对象,或者可以保留这个文件的初始状态,然后将该V文件读回AVS/Express。

当使用AVS/Express时,你可以通过V命令处理器(VCP)交互地输入V语句和命令。VCP对于检查和调试应用程序特别有用。

应用程序员接口(API)

AVS/Express允许你通过应用程序员接口(APIs)把用户代码集成到一个应用程序中。你可以通过两种方式做到这一点:

从一个对象调用一个程序——AVS/Express对象可以调用C,Fortran或C++例程来执行它的处理过程。在AVS/Express中,把能够获取输入数据、执行处理过程和产生输出数据的对象叫做模块。

管理对象实例——C、Fortran或C++程序可以创建、撤销和修改已存在的AVS/Express对象实例。你可以将AVS/Express当作服务器进行调用,完成应用程序的一些功能,例如可视化一组数据。

AVS/Express有几个工具帮助你集成用户代码。例如,你可以使用AVS/Express的C++类生成器,产生一个控制AVS/Express对象的C++类。

1.3 AVS/Express的软件包

组件技术是从可重用的、模块化散片或组件中创建一个应用程序的能力。AVS/Express通过其预定义应用程序组件的范围的分类来提供组件技术。你也可以使用AVS/Express来创建你自己的组件,或使用由其它AVS/Express用户开发的组件。

AVS/Express将它的预定义组件组织进库中。AVS/Express提供下列库:

数据可视化软件包——数据可视化对象使你能够阅读、管理、改变和分析多维、多变量数据。除了它的许多模块以外,数据可视化工具箱还包括创建新的可视化对象的API。大多数数据可视化对象有前缀“dv”。

图象处理软件包——图象处理对象使你能够阅读多频段图象数据, 有40多个图象处理函数(例如blend,edge,dilate和fft)。大多数图象处理对象有前缀“ip”。

图形显示软件包——图形显示对象使你能够建立交互的2D和3D图形显示应用程序。图形显示工具箱提供预建的数据显示器, 你能不仅修改使用或进行定制。大多数图形显示对象有前缀“gd”。

标注和图形化对象软件包——标注和图形化对象使你能够建立多维数据的复杂图形。标注和图形化对象包括标题、箭头、圆、图表(例如条图,饼壮图,阶梯图)、图例和数轴。大多数的标注和图形化对象都有前缀“ag”。

数据库软件包——数据库对象使你能够从AVS/Express应用程序中,存取和修改本地或远程关系数据库中的数据。大多数的数据库对象都有前缀“db”。

用户界面接口软件包——用户接口对象使你能够建立平台独立的图形用户接口。用户接口对象定义窗口、对话框、构件、交互器和视图显示区。AVS/Express的设计编辑器使你可以用鼠标交互修改用户接口。大多数的用户接口对象有前缀“ui”。

AVS5兼容软件包——AVS5兼容软件包的对象使以前的AVS5用户可以使用现有的AVS5模块。

1.4 AVS/Express中的面向对象技术

AVS/Express支持许多面向对象技术:数据和方法的封装;继承;模板和实例;对象分层;派生层次和多态性。下面非常简单地介绍一下在AVS/Express中怎样使用这些技术。如需详细的解释,请参见使用AVS/Express。

  • 数据和方法的封装——对象封装(或绑定)数据和操作数据的方法。封装的主要优点就是一个单一实体可以代表与一个特定对象相关联的所有东西。这提供了组件工程的基础,即新开发的组件可以被放入已存在的应用程序中。
  • 继承——一个对象可以继承一个或多个其它对象的特性。这叫做子类化。如果你从另外一个对象中创建一个对象,那么这个新对象就获得了那个原始对象的数据和方法。新对象可以修改它继承的数据;类似地,新对象也可以定义附加的数据和方法。继承的主要优点是你能只定义一组数据和方法一次,但是那些特征可被很多对象继承。
  • 模板和实例——根据AVS/Express对象所在地点的不同,它们被访问的方式也不同。如果你查询AVS/Express库,对象就被认为是模板;它们包括了对象的定义。如果你将对象的图标从库中拖到工作区,模板对象仍在库里,工作区所出现的则是它的一个执行实例。

注意:对象的模板保留在库中意味着你可以创建同一对象的多个实例。

  • 对象分层——AVS/Express允许你组合对象形成越来越高层次的对象。你在AVS/Express中看到的大多数对象实际上是其它对象的组合。打开一个对象,你可以看见和修改它的下层定义。

例如,Advect是一个包含一个示例应用程序的模块。你可以在例库的可视化子库中找到它。下面是Advect在网络编辑器中的样子。

通过实例化并双击Advect,你可将其最大化,查看它的组成对象:

正象你所看到的,Advect实际上是其它对象的组合,如Read_UCD、advector、Arrow2等等。而这些对象中的许多本身也是对象的组合。你可以继续打开这些对象里的对象,进入对象层次中,这样你就可以改变或增加更低层次的对象。

例如, 如果你双击网络上的advector,它也最大化并显示它的子对象:

  • 多态性——多态性文字上有很多含义。在AVS/Express中,它意味着一个对象可以操作不同类型的数据,根据它接收的数据的不同而有不同的操作。

    例如isosurface对象可以接受2D或3D数据。如果你传送一个2D数据集给isosurface,它就创建一个等值线。如果你传送一个3D数据集,它就创建一个等值面。

1.5 连接和对象执行

通过连接一个对象的端口到另一个对象的端口,AVS/Express对象可以引用另一个对象的数据。例如下面的应用程序在Read_Geom对象和Uviewer3D对象的红色端口之间显示出连接线。

Read_Geom对象读一个数据文件并创建一个AVS/Express域,Uviewer3D对象提供一个完全功能的数据显示器。两个对象之间的连接线指明Uviewer3D应该显示Read_Geom创建的数据。Uviewer3D并不拷贝Read_Geom的数据,而是引用它的数据。

在AVS/Express中,连接不仅定义一个对象怎样获取它的数据,而且连接也驱动应用程序的执行。当数据变化时,引用这个数据的对象也被告知这种变化,这通常导致对象的执行。

例如,考虑由Read_Geom连接到Uviewer3D所组成的数据可视化应用程序。如果这个应用程序的开发者决定读入一个新的数据文件,读入新数据文件的动作就引起了Read_Geom数据的变化。因为Uviewer3D被连接到Read_Geom上,因此Uviewer3D也被告知变化,从而引起Uviewer3D执行和显示新数据。

在AVS/Express中,执行顺序不是由你可能需要编码的一组过程指令或消息发送模式来决定,而是由你在应用程序的对象之间所作的连接来控制。

如有必要,你也可以显示地控制执行顺序。例如,在执行顺序非常重要但又模糊不清的情况下,你可以指明对象之间的依赖关系来控制执行顺序。你也可以使用C、Fortran或C++例程显示地提示对象以强迫执行。

1.6 对象管理器

AVS/Express的核心是一个功能强大的运行时刻引擎,叫对象管理器。你看不到它,但是对象管理器管理着你的应用程序的定义和执行。

对象管理器:

  • 当你建立对象时使对象有效
  • 执行对象
  • 管理对象的数据
  • 管理对象之间的连接和调度它们的执行
  • 调用对象的方法
  • 控制从C或C++程序中的API调用,更新对象和它们的数据
  • 支持多进程计算,因而对象可以不作修改地从一个进程移到另一进程

当开发应用程序时,对象管理器为孤立的错误倾向或快速变化代码提供了一个方便的调试环境。

1.7 开发和分发应用程序

当你使用AVS/Express时,你典型的目标是创建一个数据可视化应用程序。这个应用程序可以只供你自己使用,也可以被你的公司中其它人所使用,或者可能经过编译,产品化,卖给其它客户。无论用户是谁,你交给用户的是一个应用程序。在AVS/Express术语中,你开发的应用程序叫做一个工程。

AVS/Express工程

AVS/Express工程定义了你的开发和执行环境。一个工程包括:

  • 库——模板对象库
  • 外部代码——C、Fortran或C++例程
  • 进程——express进程,或任何其他外部进程

当你启动AVS/Express时,你就进入了AVS/Express的开发和执行环境,换句话说,你启动和进入了一个缺省进程。当你保存你的应用程序时,你既保存了组成应用程序的所有对象,也保存了支持这个应用程序的环境(库、代码和进程)。在AVS/Express术语中,这意味着你为你的应用程序保存了一个工程。你保存的这个工程把其自身定义为安装工程,和在其上进行的任意补充或修改。

一旦你创建了一个工程,你就可以定义工程链,其中一个工程是某个其它工程的派生,反过来,这个工程可以派生另外一个工程。这样就允许一组开发者共享对象,并在对他们自己的开发任务来说是唯一的特定对象上工作。

应用程序分发

你可以使用AVS/Express的三种方式来分发完整的应用程序,也可以发送较小的应用程序组件。

  • 集成的开发和执行环境
  • 你可以使用AVS/Express建立、调试和发送完整的应用程序,并保证这个应用程序可以在AVS/Express的任意版本上运行。你也可以生成那些应用程序的运行版本,将它们当作独立的可执行程序发送。
  • 组件建立器
  • 你可以建立可重用的应用程序组件,嵌入到其它应用程序中或从AVS/Express外部进行调用。
  • 应用程序服务器
  • AVS/Express可以在客户程序的控制下被用作一个服务器,这个客户或者启动AVS/Express,或者连接到AVS/Express的一个已经执行的实例上。通过API,客户实例化和执行AVS/Express对象。

  

 

地址:北京市海淀区上地佳园6号楼1单元501室(100085)

电话:010-62971354,010-62970626 传真:010-62970626

E-mail:avs@visualsky.com Rockies@public.bta.net.cn