第三章 修改数据可视化应用程序
CH3.zip(83KB)
在本章中,使用DataViewer编辑器和网络编辑器修改你的数据可视化应用程序。
在本章中,你:
启动AVS/Express
装入你的应用程序
在你的应用程序中增加对象
增加一个Crop对象到你的应用程序中
保存你的应用程序
3.1 介绍
在上一章中,你创建了一个数据可视化应用程序,这个应用程序阅读域数据文件、产生这个域的一个等值面并在数据视图中显示这个等值面。
在本章中,修改这个应用程序,增加两个模块到应用程序中:
bounds对象在视图中hydrogen对象的周围显示了一个边界框。它通过输入端口连接到Read_Field对象引用hydrogen数据。边界在内部计算域数据的范围。它连接到Uviewer3D对象输出一个边界框,代表视图中数据的范围。
crop对象允许用户减少域数据到一个指定的范围,在它传送到isosurface之前,非常象剪切一张照片。象bounds一样,corp连接到Read_Field上引用数据,由用户通过模块用户接口设置的值剪切数据,并通过到isosurface的连接,输出修改后的数据。
注意:开发版用户可以用在本章学到的技术,在已有的 AVS/Express对象中定制子对象。通过最大化对象和增加子对象到它的网络中,你可以扩展和指定AVS/Express对象的行为。
如果想要得到更多的信息,请参见《使用AVS/Express手册》。
3.2 启动AVS/Express
1.打开一个命令外壳或一个xterm窗口。
2.改变到
3.输入下列的指定平台命令来启动
可视化版用户键入:
|
UNIX
|
Windows
|
|
Vxp
|
bin\pc\vxp
或
点击应用程序图标
|
开发者版用户键入:
|
UNIX
|
Windows
|
|
Express
|
bin\pc\express
或点击应用程序图标
|
注意:不要在后台中启动AVS/Express,而应该在前台中启动AVS/Express,因为AVS/Express的V命令处理器(VCP)使用外壳窗口。
4. 在初始的应用程序对话框中选择None作为应用程序类型:
因为你将装入上一章中建立和保存的应用程序,所以启动不需要应用程序框架的网络编辑器。网络编辑器工作区显示的是Application对象。这是一个包括你装入网络编辑器中的所有应用程序的特殊对象,但不包括DataViewer编辑器或视图窗口。
3.3 装入你的应用程序

从把应用程序装入AVS/Express中开始。
选择File->Load Application。
出现文件选择对话框。
选择你的viz1.v应用程序。
浏览到它,选择它,然后按OK按钮。
AVS/Express将应用程序装入应用程序工作区:

当Read_Field的用户界面接口显示在模块编辑器时,SingleWindowApp DataViewer出现。
读入hydrogen数据。
在Read_Field编辑器面板上点击Browse按钮。
出现一个文件选择对话框。
从文件选择对话框的Files列表中选择hydrogen.fld。
hydrogen数据被读进Read Field模块中,触发isosurface和Uviewer3D模块。hydrogen图象在DataViewer窗口中出现。
3.4 增加对象到你的应用程序中

bounds对象为域创建一个边界框。边界框帮助你使数据区域可视化。本节中增加一个bounds对象到你的应用程序中,并测试它。
注意:使用DataViewer中的对象编辑器,你可以在视图中增加一个边界框到hydrogen对象上。DataViewer提供一个存取边界框的简单方法,但并没给你像bounds对象那么多对边界框的控制。
实例化和连接bounds对象
实例化bounds,然后将它连接到Read_Field和Uviewer3D上,如下图所示。
bounds靠近Mappers库—可以找到isosurface的那个库 —的顶端。
将bounds的左输入端口连接到Read_Field的左输出端口上。把Uviewer3D的输入端口连接到bounds的右输出端口上。
在DataViewer的视图窗口中你还将看不到边界框。
测试应用程序
使用Scale图标缩小对象。
在DataViewer工具条中点击Scale图标:
在视图窗口中移动鼠标箭头到hydrogen图象上,按住鼠标左键并把鼠标箭头向下拖拽一点。
松开鼠标键。
注意对象有一个边界框,当前看上去它是在对象周围的一个白色正方形。
旋转对象。
点击Rotate图标:
移动鼠标箭头到hydrogen图象上。
按住鼠标左键并稍微拖一下鼠标箭头。
松开鼠标键。现在你可以看见的边界框是三维的。

下面我们将使用用户接口来检查bounds。
bounds让你显示沿着边界的不同表面。
从DataViewer的编辑器面板顶端的Modules选择菜单中,选择bounds。出现包括一组开关选择的bounds用户接口:
选择下列开关:Edges,Imax和Data。AVS/Express沿着最大的I面显示表面数据:

3.5 增加一个Crop对象到你的应用程序中

crop对象沿着选择的一或多维剪切一组域数据。在你的应用程序中,你在Read_Field和isosurface之间插入crop,这样应用程序就会显示被剪切的数据等面。
实例化和连接crop
从Read_Field中断开isosurface的连接。
断开对象连接的一个方法是重复连接操作,就象是在做第二次连接。另一个方法是移动鼠标箭头到连接线上,然后用鼠标右键,选择Delete
Connection弹出命令。AVS/Express就断开了对象的连接。
你若想在Read_Field和isosurface之间插入crop,但又不适合插入,这时怎么办呢?你首先把isosurface和Uviewer3D向下移。下移的一种方法是分别拖拽每个对象。另一种方法是将两个对象套在一起,同时移动它们。下面的说明演示如何套住对象。
注意:你不必直接将crop放在Read_Field和isosurface之间作连接。你可以将它放在任何地方,但是这样做连接线是不清楚的,很难看清你的应用程序的结构。
移动鼠标箭头,使它指到刚好在isosurface上面没有被压的地方。
按住鼠标左键,向下稍右拖拽鼠标箭头。
这样做的时候,网络编辑器显示一个矩形,这就是一个套。当你松开鼠标键时,完全或部分在这个套中的对象将被选定。
当该套部分包含isosurface和Uviewer3D时,松开鼠标键。
网络编辑器就选定这两个对象,并用蓝色加亮它们。
把鼠标箭头放在一个被选定的对象上,用鼠标左键拖拽箭头向下移动isosurface和Uviewer3D。
现在对象看上去象这样:
注意Uviewer3D和bounds之间的连接线在isosurface下面穿过,你可以将Uviewer3D移到右边,使连接线看起来更清晰。
在应用程序工作区中把鼠标箭头移动到没有被压的地方,然后单击鼠标左键。
这样放弃对两个对象的选择。
把Uviewer3D向右拖。
当前唯一被选择的对象
现在已做好增加crop对象的准备。
实例化crop并把它放到Read_Field之下。然后把crop与Read_Field和isosurface连接起来,如下图所示。
Crop被放在Filters库中。把crop的左输入端口连接到Read_Field的左输出端口上,再把isosurface的左输入端口连接到crop的左输出端口上。
测试应用程序
把DataViewer弄到前面来。
试一下crop的用户接口。
从Modules选项菜单中选择crop项。出现crop的用户接口,包括维I、J和K的一组最小和最大滑尺。用鼠标左键拖I最大滑尺(下面第二个),直到置为32。
AVS/Express剪切数据对象,沿I维清除所有大于32的值。这里就是剪切前后在视图窗口中看到的数据对象的样子:
剪切前, 剪切后分别示于下面:

剪切前 剪切后
3.6 保存你的应用程序
最后,保存应用程序。
从网络编辑器中选择File->Save Application。
出现一个标准的文件选择对话框。
把应用程序保存在文件viz1.v中,取代你以前的应用程序。
|
UNIX
|
Windows
|
|
在保存应用程序对话框中,从文件列表中选择viz1.v。
单击OK。
|
在保存应用程序对话框中,从文件列表中选择viz1.v。
单击OK。
|
AVS/Express需要确认,然后保存应用程序。
从网络编辑器中选择File->Exit,以退出AVS/Express。
这一节指导结束。
3.7 更多的信息
参见《使用AVS/Express》的第3章“使用Network编辑器”
参见《可视化技术》书中标题为“宏”的这一章
|