基于VRML和Java的虚拟装配复杂控制的实现概要.docx
- 文档编号:11590408
- 上传时间:2023-03-19
- 格式:DOCX
- 页数:7
- 大小:79.51KB
基于VRML和Java的虚拟装配复杂控制的实现概要.docx
《基于VRML和Java的虚拟装配复杂控制的实现概要.docx》由会员分享,可在线阅读,更多相关《基于VRML和Java的虚拟装配复杂控制的实现概要.docx(7页珍藏版)》请在冰豆网上搜索。
基于VRML和Java的虚拟装配复杂控制的实现概要
第1期(总第158期
2010年2月机械工程与自动化
MECHANICAL ENGINEERING & AUTOMATIONNo11
Feb1
文章编号:
167226413(20100120024203
基于VRML和Java的虚拟装配复杂控制的实现
张本生,刘海光,黄 波
(海军潜艇学院,山东 青岛 266071
摘要:
详细研究了Script节点工作机制及其在Java中的定义,以及实现复杂控制用到的JavaScript类、事件类及方法,并对VRML、Java间的通讯方式、编程实现进行了研究。
最后采用研究结果,实现了某典型部件的虚拟装配。
关键词:
VRML;Java;虚拟装配
中图分类号:
TP39119 文献标识码:
A
收稿日期:
2009205213;修回日期:
2009210213作者简介:
张本生(19722,男,山东平度人,讲师,博士。
0 引言
基于VRML的虚拟装配方法,是一种在计算机网络上实现异地跨平台协同直接预装配的方法,它能够恢复基础装配件和零部件的主要几何信息,使VRML在具有网络浏览功能的同时又具有可装配性。
它能够准确地实现装配的约束,完成对异构CAD系统生成的VRML模型完整装配操作,实现异地协同装配,且具有易于实现、计算效率高、计算误差小等优点。
但是VRML语言内插器节点计算功能薄弱,对于基于物理的动画缺乏描述能力,再加上其造型和动画都有一定的随意性,在动态仿真、科学计算可视化、虚拟装配等要求精确复杂控制的领域表现得不尽人意,限制了VRML在虚拟装配中的应用。
本文就VRML与Java程序结合实现虚拟装配中复杂控制的方法进行了研究,最后应用上面的研究成果实现了某部件的虚拟装配。
1 Script工作机制及定义111 Script节点工作机制研究
Script节点工作机制见图1。
它帮助Java程序从VRML场景中获取字段并对数据进行操作。
VRML代码和Java代码是两个不同的模块,Script节点可以将这两个模块有效地进行连接。
当事件到达Script节点的eventIn事件入口,浏览器对事件在程序之间进行事件分配,程序根据它获取的特定事件信息展开工作,并返回计算结果,被加工的信息由Script节点的eventOut事件出口送出去。
112 Script节点定义
Script节点定义如下:
Script{#exposedFieldMFStringurl[]
#fieldSFBoolDirectOutFALSE#fieldSFBoolmustEvaluateFALSE#eventIneventTypeNameeventName#fieldfieldTypeNamefieldnameinitialValue}
其中:
url域值用来指定多个按照优先级区分的url列表;DirectOut域用来通过设定真或假来说明程序脚本的输出是否受限制;mustEvaluate域用来通过设定真或假来制订脚本是如何进行求值的;field、eventIn等用来定义url域值显示的在Script节点和程序脚本之间的接口
。
图1 Script工作机制
2 JavaScript类、事件类及方法211 JavaScript类、Event类的定义
Java程序要想访问VRML场景中节点,首先要访问Script节点。
Java的VRML类包定义了一个Script类,要对VRML场景产生控制的Java程序都必须继承这一个类[1]。
Script类的定义如下:
publicabstractclassScriptextendsBaseNode
{publicvoidinitialize(;程序脚本初始化时调用
protectedfinalFieldgetField(StringfieldName;获得一个接口域的句柄
protectedfinalFieldgetEventOut(StringeventOutName;获得EventOut事件接口的句柄
publicvoidprocessEvent(Eventevent;程序脚本接收到一组事件,自动被调用
publicvoidshutdown(;程序被终止时被调用}
Initialize(方法用于程序脚本没有接收过任何事件,并且在其被第一次读入时初始化内部数据,getField(方法将initialize(中的字段同外部Script(中字段建立联系,processEvent(Eventevent用于与外部事件建立联系,shutdown(方法用于清除程序终止时残留的东西,如该脚本所创建的线程。
事件类定义:
classEvent
{publicstringgetName(;将Script节点的一个eventIn字段作为字符串类返回
publicConstSFFieldgetValue(;返回一个VRML字段的参考值,并将这个值赋给字段类的只读对象
publicdoublegetTimeStampp(;用于捕获时间}
212 Java字段类方法
Java字段和它的子类用以下方法取值和赋值:
getSize(返回每个多值字段的元素个数;getValue(将VRML类的值转化为Java类的值并返回;setValue(value将Java类型值转化为VRML类型值,并在VRML中设置;addValue(value将Java类型值转化为VRML类型值,并添加到最后一个元素后面;insetValue(intindex,value从Java类型值转换为VRML类型值,并插入到第Index个元素。
3 Script和Java间的通讯研究
Script和Java间的通讯包括从VRML场景到Java代码和Java程序对VRML场景控制[2,3]。
311 从VRML场景到Java
场景中任一事件经路由传到Script节点的
eventIn,浏览器会自动指向关于Script节点的url字段,这样Java代码就开始工作了。
Java通过以下方法访问Script节点的字段:
FieldgetField(stringfieldname:
调用这个方法返回一个名为fieldName的Script节点字段的参考值。
ConstSFBoolgetValue(:
调用这个方法从Script节点获取eventIn字段的布尔值。
FieldgeteventOut(Stringfieldname:
调用这个方法能将返回eventOutfield事件输出字段的参考值转化为相应的Java类。
FieldgeteventIn(stringfieldname:
调用这个方
法将返回eventInfield事件输出字段的值转换为相应的Java类。
通过这些方法就可以实现数据从VRML代码到达Java程序,下面代码实现了从VRML到Java的通讯:
#VRMLV2.0utf8
Tansform{
……
}
DEFAssemScriptScript{
url“TestScript.class”
eventInSFBoolclicked
fieldSFStringsceneEnt“Asseble”
fieldSFFloatf8
fieldSFNodeTheNodeUSETS}
ROUTETS.ctiveTOAssemScript.clicked
importvrml.3;
importvrml.field;
importvrml.node;
publicclassTestScriptextendsScript{
privaeSFStringc;
privateSFFloatf;
publicvoidprocessEvent(Evente
ConstSFBoolv=(ConstSFBoole.getValue(;
If(v.getValue({
C=(SFStringgetField("SceneEnt";
F=(SFFloatgetField("f";
……
}
312 Java程序对VRML场景控制
Java程序到VRML场景控制方法,就是将Java程序从Script节点处获取的事件经进一步的加工,再将在Java程序中实现了操作者逻辑的信息通过方法setValue(反馈到Script节点中,由Script节点的eventOut事件出口通过路由对场景进行控制,最终实现Java程序对VRML场景的复杂控制。
下面的代码实现了数据首先从VRML到达Java程序,Java程序通过代码实现操作者逻辑,最后由“c1setValue(putting”方法通过路由实现了对VRML场景的控制。
#VRMLV2.0
Transform{……
positionDEFvaryPosition{}
}
DEFtouchmeTouchSensor{}
……
DEFScriptingScript{
url“SetPosition.class”
eventInSFTimeget
eventOutSFPostionsetposition
fieldSFBoolonFALSE}
ROUTEtouchme.isActiveTostart.enabled
ROUTEstart.timeToscripting.get
ROUTEscripting.setpositionTOvary.postion
importvrml.3;
importvrml.field.3
importvrml.node.3;
publicclassSetPositionextendsScript{
publicvoidinitialize({
・
5
2
・
2010年第1期 张本生,等:
基于VRML和Java的虚拟装配复杂控制的实现
PrivateSFFloatf;
PublicvoidprocessEvent(Evente
……
c.setValude
d(newposition;
4 典型应用
通过以上研究,实现了某部件的虚拟装配过程。
图2为典型部件虚拟装配实现过程
。
图2 典型部件虚拟装配实现过程
5 结论
本文研究了基于VRML和Java的虚拟装配复杂
控制,介绍了Script节点的工作机制及其在Java中的
定义;研究了复杂控制中用到的类事件及方法;研究
了VRML和Java的通讯及实现方法;最后实现了典型部件的虚拟装配。
从研究的结果看,实现异地虚拟装配复杂控制是可行的。
参考文献:
[1] BruceEckel.Java编程思想[M].陈昊鹏,饶若楠,译.北京:
机械工业出版社,2005.
[2] 萨日娜.基于VRML和Java的虚拟装配技术[J].计算机
辅助工程,2006,15(1:
12214.
[3] 杜培富,刘衍聪,朱晓娟.基于VRML和JavaApplet的虚拟装配平台的实现[J].机械工程与自动化,2008(3:
50251.
UsingJavaandVRMLtoAchieveComplicated
ActioninVirtualAssembly
ZHANGBen-sheng,LIUHai-guang,HUANGBo
(NavySubmarineAcademy,Qingdao266071,China
Abstract:
Inthispaper,basedonthedefinationandworkingmechanismofScriptnode,theJavaScriptclass,eventsandfunctions
werestudied,andthecommunicationbetweenVRMLandJavawasdiscussedindetail
.Atlast,usingthetheoryabove,thevirtualassemblyofatypicalpartwasachieved.
Keywords:
VRML;Java;virtualassembly
(上接第23页
图6 数据收发操作试验截图
5 结束语
RTL8019AS芯片具有性价比高、连接方便等特点,是进行嵌入式以太网设计时首选的控制芯片,本文利用单片机控制RTL8019AS来实现网络通信,主要解
决了硬件电路连接和以太网驱动程序设计的问题。
该方法在工业自动化系统、远程分散式设备控制、网络家电等方面具有广阔的应用前景。
参考文献:
[1] 黄金生.构建基于以太网及Internet技术的嵌入式WEB
服务器[D].天津:
天津工业大学,2004:
34237.
[2] 袁学文,庞辉肖.以太网控制器RTL8019AS工作原理及
应用[J].电子质量,2003,5(4:
34236.
ApplicationofRTL8019ASintheEthernetCommunication
MAYou-chun1,2,LEIMing1,LIJin-ming1
(1.KeyLabonDynamicMeasurementoftheMinistryofEducationofChina,NorthUniversityofChina,Taiyuan030051,China;2.Instrument
ScienceandPhotoelectricityEngineeringCollege,BeijingUniversityofAeronauticsandAstronautics,Beijing100191,China
Abstract:
ThispaperpresentedaconcreteimplementationschemeofthenetworkcommunicationbetweentheMCUandInternet.Firstly,itdesignedahardwarecircuitofthenetworkinterfacecard,thendescribedeachinterfacecircuit(includingtheinterfacecircuitbetweentheMCUandtheexternaldatamemory,theinterfacecircuitbetweentheMCUandethernetcontrollerindetail,andthendesignedthecorrespondingethernetdriveraccordingtotheinternalstructureoftheRTL8019AS.Finally,thecorrectnessofthedesignwasverifiedbyasimpletransceiverexperiment.Keywords:
Internet;RTL8019AS;ethernetdriver
・
62・ 机械工程与自动化 2010年第1期
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VRML Java 虚拟 装配 复杂 控制 实现 概要