您现在的位置是:首页 > 行业 > 智慧城市 >

交互性应用与二次开发

2021-10-15 15:28:14作者:海洋石油工程股份有限公司 尹光荣 王衍鑫来源:

摘要  SACS软件和MOSES软件是船舶与海洋工程行业常用的工程软件。SACS软件的运行环境较为封闭,不具备开放式的语言环境以及实时的输入输出反 ...

  SACS软件和MOSES软件是船舶与海洋工程行业常用的工程软件。SACS软件的运行环境较为封闭,不具备开放式的语言环境以及实时的输入输出反馈,在软件运行时,数据输入只需文本格式,数据输出则是文本格式或者是未公开编码的十六进制图形数据。

  不同于SACS软件,MOSES软件能够进行实时的输入输出反馈,这缘于其可以提供高自由度且面向过程的脚本(Script)语言环境。

  迥异的特性代表了两种不同软件的开发技术路线,一种是限制较高的封闭式结构,另一种则是自由度高的开放式结构。目前,两款软件都没有提供官方对于第三方应用程序的软件开发工具包(SDK)和应用程序编程接口(API),只提供了有限的脚本调用方法,因此,目前主流的开发方案只能实现基于文本格式进行输入、输出、数据处理的二次开发方案。

  基于文本格式的二次开发

  基于文本格式的二次开发主要针对软件的输入、输出数据,通常只用到外围数据,不涉及软件内核,所以相对来说比较简单,唯一的难点便是需要开发人员编写算法以实现特定功能。

  以笔者开发的“导管架下水分析前后处理程序”为例,该程序能够实现导管架滑移下水强度模型的自动建立、载荷转化重分布等功能。该程序的核心流程如图所示,A、B、C三个模块是实现特定功能的核心算法,需要编写封装,其余模块是文本数据,其中最上层和最下层分别是SACS和MOSES软件的输出和输入文件。

  基于脚本的二次开发

  脚本(Script)是指使用一种特定的描述性语言,依据一定格式编写的可执行文件。脚本的格式一般为可读式文本格式,由系统内部的解释器将其内容翻译成机器可识别的指令,并按程序顺序执行。效率相对较低,但简单易用。一般常见的bat(批量处理文件)和vbs(脚本语言文件)都是由脚本语言编写的可执行文件。

  由SACS和MOSES软件提供的基于脚本调用的二次开发方案,理论上可以被任何脚本语言调用运行。

  SACS软件的脚本调用

  SACS 13.1版本提供了自动运行文件,支持用命令行调用Analysis Engine(分析引擎),该功能使得脚本调用成为可能。

  ■基于内核的交互性开发

  闭源软件的内核级交互性开发一般由开发该软件的公司完成,其目的是为了建立统一的可视化前后处理平台。Bentley公司就针对SACS和MOSES两款软件进行了交互性开发,在导管架上的安装、分析方面提供了示范案例。

  ■SACS与MOSES的交互性

  SACS 11.2版本增加了在Executive(管理展示板)界面里调用MOSES自动完成Launch(一种特殊的XML格式文件)分析和生成Launch载荷的功能。SACS中的MOSES Launch是完整的MOSES Launch功能的简化版本,仅通过生成与“SACS的预实现功能”最接近的MOSES分析来支持现有的SACS Launch功能。在笔者看来,这是一个功能受限的Demon,其主要目的是展示利用软件内核开发统一平台的可能性。

  ■MOSES与SACS的交互性

  MOSES与SACS的交互性上重点体现在两个方面:第一是对SACS格式数据的支持,第二是与SACS图形界面数据共用。由于&EMIT增加了开关,使得SACS模型在转化成MOSES模型后保留原SACS模型数据,方便后处理输出SACS格式文件。不论是Tow分析还是Launch分析,MOSES都可以输出SACS格式的运动数据或载荷数据,方便直接导入到SACS模型中开展计算,避免开发者重复地操作中间数据的格式转化过程。

  新版本的MOSES结构后处理模块可以创建公共结果文件(CSF文件)和Postvue可视化结果文件,供SACS计算使用、查看计算结果。

  ■基于接口的二次开发

  应用程序接口(API)是一些预先定义的接口(如函数、HTTP接口),是用来实现访问应用程序、服务内部数据等功能的例程。例如,通过代码操作SACS Modeler建模或者Postvue输出。但是,由于Bentley此前从未公开SACS和MOSES的相关API接口定义,因此基本不太可能实现基于API的二次开发。

  在SACS15.0版本中,Bentley提供了SACS模型互操作的API。SACS模型互操作API允许用户创建定制的工具(脚本、宏或应用程序)来开发SACS模型数据。该API以三种格式公开——C++库、Python扩展、COM服务器。尽管操作细节有特定格式要求,但是API在所有格式中都是一致的,所有功能在任何格式上都可用。此外,API是基于对象创建的,一个主对象用于访问模型加载/创建函数并提供对全局数据的访问。尽管该状态仍处于技术预览状态,但新的功能特性已经足以实现基于API的二次开发。在笔者看来,基于API技术的二次开发是未来的技术发展方向。随着计算机软、硬件的不断发展,开发技术的不断创新,应用场景的不断变化,SACS和MOSES软件也越来越走向开放,越来越重视用户体验。在SACS和MOSES逐渐走向融合的过程中,为开发者提供了新的交互性应用和二次开发技术方案。如何更好地应用这些新的技术特性,为二次开发提供新的功能,值得每个船舶与海洋工程行业的开发者重点关注。


(本文不涉密)
责任编辑:

站点信息

  • 运营主体:中国信息化周报
  • 商务合作:赵瑞华 010-88559646
  • 微信公众号:扫描二维码,关注我们