🌺这里是小刀的不定时更新,喜欢我的文章就关注我吧🌺
前言:
在Adams软件的使用过程中,二次开发显得尤为重要,他允许用户根据特定的工程需求,定制化软件功能,提高工作效率,解决标准软件包无法满足的特定问题。我们可以在学习二次开发的过程中,了解更多Adams建模的底层逻辑、运行规则,整个过程相当于是与Adams软件的一次深入交流,你能看得懂它的规则,它能读得懂你的思路,真正做到游刃有余。
在本文中,我们将选取一个一键修改力值大小的案例,手把手教大家如何搭建自己的二次开发小程序,这部分内容也可以查看我的视频课程进行免费学习。让我们一起来感受二次开发的魅力吧~
一、问题
如下图所示,共搭建了从Force_1一直到Force_10这10个作用力,且力值大小均相同。现在需要统一修改十个力值大小,将数值改为20N,你会怎么操作呢?
二、思考
①方案一:可以手动进行修改,依次点击这十个作用力,并将他们的数值改为20N。这是最简单的一种方式,却是最麻烦、最耗时的方法。
②方案二:经过观察可知,1)每一个力的名字都有规律可循,“Froce_”是固定的,仅仅是后面的数字发生了改变,且数字也是按照顺序进行依次排列的。2)修改力值的操作顺序是“点击力值—右键修改—输入新的数值—关闭窗口”我们需要不断的重复这一操作步骤,如果可以将该操作步骤进行代码复现,让计算机帮我们进行操作,我们只需要让步骤按照规律重复10次,就可以轻而易举的实现10个,甚至更多个力值大小的修改了。
三、实操
①书写工具
Adams进行二次开发可以使用自带的CMD程序语言进行编写,简单来说,我们可以直接使用电脑自带的记事本来编写代码,编写完成后,将文件类型保存为cmd命令脚本格式即可。
①加入设计变量
经过上述分析可知,如果我们需要进行10次重复性的工作,那么应该率先确定一个变量,让这个变量来记录我们的每次操作,也就是起到一个“计数”的功能。又因为力的名字后缀也是不断变化的,所以更需要一个动态的、随时改变的、不断累计的变量来代替名字后缀。综上可知,创建一个“计数”的“动态”变量至关重要。
创建变量的语法结构(部分):
variable create
variable_name=model_name.var_name
real_value=real or
integer_value=integer or
string_value=string or
Object_value=existing entity
units=string
……
每一小段运行程序的首行都是整段命令的关键词,也就是用于说明接下来操作的内容。而下面的几行程序都是命令的种类,你可以在下面的程序中摘取你需要的行进行编辑并运行,可以全部摘选,也可以仅选择部分你需要的内容,且顺序没有要求。
variable create:说明此段脚本的主要内容是创建变量;
variable_name:输入变量的名称;
real(integer/string/object)_value:四选一,输入数值;
units:输入单位
在这个案例中,我们创建一个名字为“N”的变量,变量的初始值为1,从1开始计数,Adams不区分大小写。
VARIABLE CREAT VARIABLE_NAME=N INTEGER=1
②循环语句该怎么写
在Adams中,循环语句可以使用while—end组合来执行重复多次的命令。在Adams/view中,程序会反复执行由While和End括号包围起来的命令,只要While指令关联的条件为真,那么命令会持续运行直到条件变为假。
循环语句的格式为:
while condition=(expression)
……
end
对于本次实例,我们共需要循环10次,可以引入上一步创建好的变量,只需要使变量进行叠加,每次循环一次,变量数值就加一,直到变量的数值变为10,即可完成十次循环。
WHILE CONDITION=(N<=10)
……
VARIABLE MODIFY VARIABLE_NAME=N INTEGER_VALUE=(EVAL(N+1))
END
③修改力值大小的代码怎么写
小技巧:对于初学者来说,我们并不需要掌握太高大上的语句逻辑,只需要对操作命令进行复现即可。同时,对于想要进阶的读者来说,在我的视频课程中,还会对每一个对象命令用法做更详细、灵活的介绍。
重现意味着先进行一遍命令操作,之后得到程序自动生成的命令代码,最后将代码进行简单修改即可。而代码复现的方式,可以直接在操作完成后,点击“F3”快捷键进行获取。
具体方法:1)手动修改力值,任意选择其中一个力进行修改,将力值大小改为20,并关闭窗口。2)按键盘快捷键F3,弹出Adams命令窗口CMD Command Window。3)找到有关于力值修改的段落,如下图所示。4)将该段代码复出来进行简单修改
修改后的脚本为:
force modify direct single_component_force&
single_component_force=(eval(”.model.Force_”//N))&
function=”20”&
action_only=”on”&
comments=””&
mdi graphic_force object=(eval(”.model.Force_”//N)) type=1
注意:1)在所有自动复现的代码中,“adams_id=”这一句话不要加上,这是Adams对所有对象的一个特有标识,如果使用命令循环,不同对象的标识不用,不能用id来识别;2)“&”符号表示与下行为同一部分,只不过做了分段处理,故需要加连接符&,在代码中不可以省略;3)“EVAL”可以理解为对括号内的东西进行计算,或者将括号内的东西翻译成Adams可以理解的语言。
④完整代码展示
VARIABLE CREAT VARIABLE_NAME=N INTEGER=1
WHILE CONDITION=(N<=10)
force modify direct single_component_force&
single_component_force=(eval(”.model.Force_”//N))&
function=”20”&
action_only=”on”&
comments=””&
mdi graphic_force object=(eval(”.model.Force_”//N)) type=1
VARIABLE MODIFY VARIABLE_NAME=N INTEGER_VALUE=(EVAL(N+1))
END
VARIABLE DELETE VARIABLE_NAME=N
⑤如何运行
将改好的代码进行保存,之后在Adams/view界面空白处按下快捷键F2,若没有弹出报错窗口,证明程序可行,若弹出报错窗口,可进行报错内容提示进行脚本修改。
四、效果
依次点开各个创建好的力,我们可以发现,力值大小都修改成了20。整个过程简单、快捷,省去了大量的时间,极大提高了工作效率。
五、内容拓展
以上实例仅针对力值大小的修改进行Adams二次开发,又引入循环语句达到事半功倍的效果。循环语句是Adams二次开发最重要的语法格式之一,实际使用时,我们可以借助Adams代码复现的功能,稍加修改便可以解决大多数的二次开发问题。对于初级小白来说,不需要掌握太详细的语法结构,就能实现代码的编写,轻松上手。
小结:Adams二次开发是提高建模工作效率最有用的手段,对于初级学者来说,我们可以借助Adams本身展现出来的脚本进行复现,过程比较简单,只需要看得懂简单的英文单词即可;对于进阶选手来说,除了可以利用Adams二次开发提高建模速度以外,还能随心所欲修改Adams建模的各项参数并发现Adams隐藏在程序中的小技巧,帮助我们更好的了解Adams建模逻辑,探索建模的乐趣。