ADAMS二次开发

更新时间:2023-10-23 20:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

2.5 ADAMS 软件的二次开发

ADAMS 具有很强的二次开发功能,包括ADAMS/View 界面的用户化设计,利用.cmd语言实现自动建模和仿真控制,通过编写用户子程序满足用户的某些需求,甚至可以拓展ADAMS 的功能。

2.5.1 界面的二次开发

1、定制菜单

选择 Tools/Menu/Modify 命令可以打开菜单编辑器窗口。在默认情况下,菜单编辑器窗口中显示的是描述ADAMS 标准菜单的菜单文件,用户可以修改该菜单文件得到自己所需要的菜单。菜单文件实际上是用解释性语言编制的程序段,因此,要想定制自己所需的菜单,必须了解编制残单文件的语法规则。下面介绍该解释性语言的编程语法。菜单对象有四种类型:菜单、按钮或图标按钮、开关按钮和分割线,分别用关键词MENUn、BUTTONn、TOGGLEn 和SEPARATORn 定义。

各菜单对象的参数含义如下:

*n 是从1 到10 之间的整数,通常为1、2、3,它定义了对象在菜单中出现的级别。

Level1 表示第一级。例如,MENU1 出现在菜单栏,BUTTON2 出现在MENU1 的之中。

MENU菜单后面的n 是必须要的,而对于其他的对象则为可选项。。如果你忽略级别,ADAMS/View 将默认该对象属于最后一个MENU。你的菜单项可达到10 级,在菜单中你可以按你的需要尽可能多的按钮。

*lable 是出现在菜单中的文本。对于图标按钮,你可以指定图标的名字,或者其 他图形格式文件。在Windows 中,图标名字为bitmap(.bmp)格式的文件名字。 (1)MENU 的创建

可以创建多级的菜单,第一级菜单为 MENU1,出现在菜单条上,低一级的菜单如

MENU2 和MENU3 出现在层叠的下拉菜单中。 语法:

MENUn TITLE NAME=name HELP=Help 参数:

n 为整数值,表明该菜单在菜单条中出现的层数。n=1 时菜单出现在菜单栏上, n≥2 时菜单出现在下拉菜单中。 TITLE 为文字串,出现在菜单栏上,可以在表提前加一个&字符用作记忆法。(如 “&File”在菜单上显示为File)

NAME 为模型数据库中对象的名字。 HELP 为出现在状态栏中的文字。 (2)创建BUTTON

创建按钮就是定义一个菜单命令,你可以在下拉菜单或是子菜单上放置按钮。 语法:

BUTTONn LABLE ACCELERATOR

NAME=name HELP=help

CMD=command 参数:

n 为整数值,表明按钮出现的层数。n=2 时按钮出现在下拉菜单上,n≥3 时按钮出现在子菜单上。

LABLE 为按钮名,出现在下拉菜单或子菜单上。 ACCELERATOR 为键或键组用来执行菜单命令。 NAME 为建模数据库中菜单对象的名字。 HELP 为出现在状态条上的文字。 CMD 为按钮用来命令。

注:多行命令时,每一行前面都要加 CMD。 (3)创建分隔符(SEPERATOR)

在下拉菜单和子菜单中的各项目之间添加分割线。 语法:

SEPERATORn 参数:

n 为整数值,表明分隔符出现的层数。n=2 时分隔符出现在下拉菜单中,n=3 时分隔符出现在子菜单中。 (4)创建开关按钮TOGGLE

在两种状态之间设置开关,开关按钮可以在下拉菜单或是在子菜单上。 语法:

TOGGLEn TITLE NAME=name HELP=help STATE=state CMD=command

其参数含义同上其他对象。 2、定制对话框

ADAMS/View 中使用的对话框包括各种界面对象,如,标题、数据区、按钮等等。你可以使用ADAMS 对话框编辑器来创建和修改对话框以更好地满足你的需要。例如为标准对话框添加一个按钮包含你要作的选项,或添加一个对话框以执行你经常运行的步骤,可包括一个以上的宏。

对话框编辑器包含了你需要用来创建对话框的所有工具。创建对话框的步骤如下: (1) 在“Tool”菜单中,指向“Dialog Box”,然后选择“Create”,出现对

话框编辑器,如图2-1 所示。

图 2-1 对话框编辑器图图 2-2 New Dialog Box 对话框

(2)在“Dialog Box”菜单中,选择“New”,出现新的对话框,如图2-2 所示。

(3)在“Name”栏,输入你的对话框的标题,然后选择你想在对话框上添加的按钮。

(4)选择“OK”完成设置,于是出现一个新对话框,如图2-3 所示。

图 2-3 新创建的对话框

当创建了一个新的对话框后,用户可以通过对话框编辑器上的“Create”命令来为用户定制的对话框添加界面对象(大多数对象都有ADAMS/View 可执行的命令,这些命令才是真正界面的操作命令,或改变你的模型,或改变用户输入数据和作出选择。),各界面对象的名称和功用见表2-1,其详细的创建过程本文不在此赘述。

表 2-1 对话框界面对象的名称和功用 对象 数值含义

Label(标签) 用在对话框中显示文本和图像 Field(数据区) 当前数据区内容 Button(按钮) 激活一个操作

Toggle-button(开关按钮) 当前定义的开关值

Separator(分隔线) 可画出一条水平分隔线

Slide(滑动条) 通过滑动条可取当前防卫内的整数值

Option-menu(可选菜单项) 可从多个菜单项中选定一个;包含有一个弹出菜单形式的图

框;只显示一行选定菜单项

Radio-box(状态设置框) 设置状态或模式

Button stack(按钮组) 可包含多个按钮而只显示一个按钮;只能有一个按钮起作

用;可有鼠标右键弹出显示所有按钮,并可选择其中一个

Container(界面对象区) 可添加信息的区域

Tab container(标签界面对象) 给界面和对话框设置标签

Data table(数据表) 用来显示数据的表格。你可增加栏或列。

2.5.2 宏命令的使用

宏命令实际上是一组命令集,它可以执行一连串的 ADAMS/View 命令。创建宏命令时,给出你想执行的 ADAMS/View 命令的名单。然后用ADAMS/View 的命令语言将这些命令写成宏命令的形式。

在宏命令中,你也可以使用参数。每次你使用宏命令时,你都将通过参数将数据传给宏。当你执行带有参数的宏命令时,ADAMS/View 将你提供的值替代到宏命令中。

ADAMS/View 对宏命令与其他的ADAMS/View 的命令一样。你可以在命令窗口中输入宏命令,从命令向导中选择它,也可将它包含在其他的宏命令中,或者从自己的定制菜单,对话框,或按钮中执行它。 宏命令可以做到:

(1)自动化重复性的工作。

(2)为ADAMS/View 建立模型数据交换功能。 (3)自动创建整个模型。

(4)快速建立机械系统的多个变量。

通常可以通过 3 种方式来创建宏命令:记录方式、使用宏编辑器来编辑和创建宏命令、通过导入文件来创建宏命令。 1. 以记录方式创建宏命令 (1)记录宏 在“Tool”菜单中,指向“Macro”,再指向“Record/Replay”,然后选择“Record Start”。

完成你想在宏命令中进行的操作。

要停止记录宏,在“Tool”菜单中,指向“Macro”,再指向“Record/Replay”,然后选择“Record Stop”。 (2)回放记录的宏 在“Tools”菜单中,指向“Macro”,再指向“Record/Replay”,然后选中“Execute Record Maro”。 (3)保存记录的宏 在“Tools”菜单中,指向“Macro”,再指向“Record/Replay”,然后选择“Write Record Macro”。

ADAMS/View 将宏命令保存为macro.cmd 的命令格式。如果文件macro.cmd 早已存在,ADAMS/View 会询问你是否覆盖,或者创建它的备份文件。

注:当你保存数据库时,ADAMS/View 将记录的宏保存在模型数据库(.bin)中。

2.使用宏编辑器来编辑和创建宏命令

你可以使用宏编辑器来编辑你已录制的宏,或者你通过导入文件创建的宏命令。你也可通过宏编辑器来创建宏。 使用宏编辑器:

(1)在“Tools”菜单中,指向“Macro”,再指向“Edit”,然后选择“New”或者“Modify”。

(2)如果你选择“Modify”,出现数据库向导。 (3)如果你选择“New”,则弹出创建宏命令对话框,如图2-4 所示。在“Macro Name”文字栏,输入宏的名字。

(4)在“Command”文字栏,输入执行宏命令的命令串。使用宏的名字,选择“Use Macro Name”。

注:你输入的命令串的名字必须是唯一的。你不能重新定义一个已存在的命令,尽管你可以在已存在的命令中添加新的关键词。例如,输入“MARKER CREATE”就是无效的,因为“MARKER CREATE”是早已存在的命令,但输入“MARKER MODIFY”就是有效的。

(5)指明整个宏命令是否能用单个的“Undo”命令撤销。注意到,对于非常大的宏命令,单个的“Undo”会消耗大量的内存,甚至你没有使用撤销操作都会显著地减慢宏命令的执行速度。你应当指明在初始化创建和调试阶段,

“Undo=yes”知道你的宏命令正常工作之后,切换到“Undo=no”来提高运行速度。

图 2-4 创建宏命令的对话框图 2-5 导入宏命令的对话框

(6)在命令文字区域,输入要执行的命令,然后选择“OK”。 3.通过导入文件来创建宏命令

(1)在“Tools”菜单中,指向“Macro”,然后选择“Read”。出现导入宏对话框,如图2-5 所示。

(2)在“Macro Name”文字框,输入ADAMS/View 将在当前数据库中保存宏的名字。

(3)在“File Name”文字栏,输入包含要执行命令的文件。

(4)在“User Entered Command”文字栏,指明将要执行宏命令的命令串。如果你不输入命令串的名字,则缺省为宏命令的名字。

(5)指明整个宏命令能否被单个的“Undo”命令撤销。对于大的宏命令,单个的“Undo”命令会消耗大量的内存或者显著地减慢宏命令执行的速度。 (6)指明包含宏命令帮助文件或者输入文字串来描叙宏。 (7)确信你没有创建过期的对话框,从“Create Panel”选择菜单中,选择“no”。 (8)选择“OK”。

2.5.3 条件命令的使用

条件命令可以用在菜单命令、对话框命令和用户自己编写的宏命令程序文件中,它的主要形式有以下三种: (1)IF/ELSEIF/ELSE/END (2)BREAK (3)CONTINUE

在次只对IF/ELSEIF/ELSE/END 命令做一简要说明。

IF/ELSEIF/ELSE/END 命令的功能为:可以用IF、ELSEIF、ELSE 和END 命令有条件地执行一组命令,用来实现逻辑判断功能。该组命令包含在IF 和END 内。该条件值取决于表达式(expression)的逻辑值。在IF/END 内,如果表达式逻辑值为1,则符合条件而执行内部命令。如果表达式逻辑值为0,则不符合条件而执行ELSE/END 中的命令。该命令可以用在命令语言、宏命令和命令文件中。

IF/ELSEIF/ELSE/END 命令的一般格式为: ①IF CONDITION=(expression) ? END

②IF CONDITION=(expression) ? ELSE ? END

③IF CONDITION=(expression) ?

ELSEIF ? ELSE ? END

下面是IF/ELSEIF/ELSE/END 命令使用的一个例子: if condition=(db_exists(\

constraint modify motion motion_name=.my_model.rotate adams_id=1 typ=rot &

joint_name=.my_model.gibell_rev function=\

constraint modify motion motion_name=.my_model.move adams_id=2 typ=rot &

joint_name=.my_model.dummy1_rev function=\else

gimovement

constraint create motion motion_name=.my_model.rotate adams_id=1 typ=rot &

joint_name=.my_model.gibell_rev function=\

constraint create motion motion_name=.my_model.move adams_id=2 typ=rot

&

joint_name=.my_model.dummy1_rev function=\end

在上例中,如果数据库中存在.my_model.move,则对其进行修改,如果不存 在.my_model.move,则调用命令文件gimovemen 创建它。

2.5.4 利用ADAMS/View 命令语言实现对界面的控制

利用 ADAMS/View 命令语言可以实现对菜单项的激活和失效控制、显示和隐藏对话框、根据程序需要改变对话框上的控件属性等。具体语法格式为: 菜单项在默认状态下是处于激活状态的,若要改变某个菜单项的状态,可以使用以下语句:

interface push_button modify &

push_button_name = 菜单项的名称 &

enabled =开关值!开关值为 yes 或no,yes 表示被激活,no 表示失效。 与此类似,下面两条语句用来控制对话框的显示和消失: interface dialog display dialog =对话框名!显示对话框; interface dialog undisplay dialog =对话框名!显示对话框;

如果由于程序需要,要改变对话框上某些控件的属性,可以用以下语法结构: interface 控件类型号modify field_name =控件名 enabled =开关值

本文来源:https://www.bwwdw.com/article/xsy2.html

Top