首页/文章/ 详情

Adams二次开发——插件集成(Plugin)(2/2)

2月前浏览1449
  • 背景

日常仿真工作中,我们会基于软件自带的Dialog Box 或Macro开发一些自定义的窗口或命令,如何把这些窗口或命令集成在软件自带的Plugin Manager中进行管理和调用,是本次文章介绍的背景。

作者目前的背景是,已经基于自带的整车K&C分析界面,魔改成了用于悬架K&C分析的界面,同时,修改了后台代码,可实现在一个界面中完成所有悬架K&C分析的参数设置和提交求解。

  • 实现方法
    1、编写build.cmd,如下图所示:  

    其中:

  • 1-4行:先创建名为“LXY”的库,并在库里面创建一个macros和dboxes的分支,用于管理对话框和宏命令(按需);

  • 7行:运行对话框创建的命令(后文中分享);

  • 15-end:创建该插件加载(Load)和卸载(UnLoad)的宏命令,此两个命令必须写,格式参考上图。


    2、入口按钮创建的cmd(dboxes_ana.cmd)

    如下图所示:


    其中:

  • 1-4行:判断库中是否有名为“dbox_ana_ful_spm_sub”的对话框,如有则先删除,当然,也可加入其他的判断语句,如对库和库下面分支的判断,以保证有效更新修改后的对话框和宏命令;

  • 6-8行:运行对话框创建的命令,该对话框的名称为“dbox_ana_ful_spm_sub”;

  • 10-14行:判断启动该对话框的按钮是否存在,如有则删除;

  • 16-end:在Adams指定界面位置插入启动该对话框的按钮,上图所示的代码正常运行后,该按钮的位置在界面如下图所示位置:

    如要在其他位置插入按钮,则修改对应19和32行。


3、对话框创建的cmd(dbox_ana_ful_spm_sub.cmd

如下图所示为对话框定义的部分代码,主要是定义各个控件的属性及窗口运行的代码,可基于自带的dialog box进行修改,也可手动编写:


至此,便完成了自定义对话框的编辑和设置。

此时,可在Adams界面中,导入(或按F2)build.cmd,即可在指定位置创建按钮,并运行自定义对话框了。

不过,通过cmd的方式去运行会存在一些便捷性的问题,下文将介绍如何将自定义对话框加入plugin manager的界面进行管理。

1、在运行build.cmd后,在Database中可以看到对应的库:

2、在command Navigator中搜索“bin”,会出现如下所示功能:

3、选择“binary” 下面的“write”,设置输出bin文件的名称和路径,在“Entity Name”中选择创建的“LXY”库和“gui”界面下创建的按钮,将此两部分输出到bin文件中:

4、在bin文件同目录,创建一个xml文件,该xml文件的文件名为bin文件文件名后面加“_plg.xml”,如bin文件的文件名为“lxy.bin”,则对应xml文件的文件名为“lxy_plg.xml”;

5、xml文件的内容如下(固定格式):






<?xml version="1.0"?>
<MSCPlugin xmlns="http://www.adams.com/:MDI" xmlns:kernel="http://www.adams.com/:kernel">
 <kernel:Bibliography>    <File schema="plugin" version="1.0.0" publicationDate="2008-04-16 20:04:16 -0500" />    <Revision version="1" />    <Corporation author="MSC.Software" URI="http://www.mscsoftware.com/Products/CAE-Tools/Adams.aspx" />    <Author user="Unknown" name="Unknown" />    <Environment hostName="Unknown" operatingSystem="Unknown" />    <Application name="Adams" version="2013.0" />  </kernel:Bibliography>
 <Plugin>    <Name>LXY KnC</Name>    <Description>      <![CDATA[Full KnC Analysis in one window]]>    </Description>    <Version></Version>    <Author>LXY</Author>    <Type>Public</Type>    <LicenseFeature></LicenseFeature>    <ValidWith>acar</ValidWith>    <NotValidWith>aview:ppt</NotValidWith>  </Plugin>
</MSCPlugin>

其中:

a、15行中写入插件的名称,按需取;

b、17行中写入此插件的描述;

c、20行写入作者名称;

d、23行,此行表示该插件可以在哪些界面中显示,依次写入,按“:”隔开,如果希望此插件可以在car和view界面中显示和使用,则写入“acar:aview”;

e、24行,此行表示该插件不可在哪些界面中显示和使用,语法与23行一致。


5、将创建好的bin文件和xml文件,放置在一个文件夹中,该文件夹的名称与bin文件保持一致,如“D:\adams_plugin\lxy”文件夹;


6、添加环境变量,变量名和值为:



变量名:MDI_USER_PLUGIN_DIR变量值:D:\adams_plugin

注:变量值的路径为插件名文件夹的上一层。


至此,便可以重启Adams,在Plugin Manager界面中看到我们所创建的插件了。


温馨提示:由于Adams没有提供对应的IDE,所以在整个写代码过程可能不会一帆风顺,特别是一些符号、空格、换行之类的,需要一些耐心。如果在此过程中,有任何问题,也可与笔者联系和讨论。


    希望大家点个关注,不迷路。

来源:TodayCAEer
SystemAdams二次开发UG
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-08-14
最近编辑:2月前
TodayCAEer
本科 签名征集中
获赞 17粉丝 25文章 231课程 0
点赞
收藏
作者推荐

ANSA二次开发_Python基础-OS模块

通过os模块查找文件夹内的指定后缀文件,并批量导入。importansafromansaimportbaseimportosdeffind_files(directory,extension):forroot,dirs,filesinos.walk(directory):forfileinfiles:iffile.endswith(extension):base.InputNastran((os.path.join(root,file)),elements_id=&quot;offset&quot;)#指定目录和文件后缀directory=&#39;D:/temp&#39;extension=&#39;.bdf&#39;find_files(directory,extension)Python的os模块提供了丰富的方法用于与操作系统交互。包括执行文件系统操作,如创建和删除文件,目录,获取文件属性,处理路径等。方法太多了,这里仅列举部分文件相关的方法。以下介绍os模块的常用方法1.os.getcwd()获取当前工作目录current_directory=os.getcwd()print(f&quot;当前工作目录:{current_directory}&quot;)2.os.chdir(path)改变当前工作目录os.chdir(&#39;/path/to/directory&#39;)print(f&quot;目录已更改到:{os.getcwd()}&quot;)3.os.listdir(path=&#39;.&#39;)列出指定目录下的所有文件和目录名files_and_directories=os.listdir(&#39;.&#39;)print(f&quot;当前目录中的文件和目录:{files_and_directories}&quot;)4.os.mkdir(path,mode=0o777)创建目录os.mkdir(&#39;new_directory&#39;)print(&quot;目录已创建&quot;)5.os.makedirs(name,mode=0o777,exist_ok=False)递归创建目录os.makedirs(&#39;new_directory/sub_directory&#39;)print(&quot;递归目录已创建&quot;)6.os.rmdir(path)删除目录os.rmdir(&#39;new_directory&#39;)print(&quot;目录已删除&quot;)7.os.remove(path)删除文件os.remove(&#39;file.txt&#39;)print(&quot;文件已删除&quot;)8.os.rename(src,dst)重命名文件或目录os.rename(&#39;old_name.txt&#39;,&#39;new_name.txt&#39;)print(&quot;文件已重命名&quot;)9.os.stat(path)获取文件或目录的状态信息stat_info=os.stat(&#39;example.txt&#39;)print(f&quot;文件大小:{stat_info.st_size}字节&quot;)print(f&quot;最后修改时间:{stat_info.st_mtime}&quot;)10.os.path.join(path,paths)合并路径,返回一个新路径full_path=os.path.join(&#39;directory&#39;,&#39;subdirectory&#39;,&#39;file.txt&#39;)print(f&quot;完整路径:{full_path}&quot;)11.os.path.split(path)分割路径,返回路径和文件名path,filename=os.path.split(&#39;/directory/subdirectory/file.txt&#39;)print(f&quot;路径:{path},文件名:{filename}&quot;)12.os.path.exists(path)检查路径是否存在ifos.path.exists(&#39;file.txt&#39;):print(&quot;文件存在&quot;)else:print(&quot;文件不存在&quot;)如果需要获取os模块下的所有方法,可以使用dir()函数列出os模块下的所有属性和方法。importosfortindir(os):print(t)#DirEntry#EX_OK#F_OK#GenericAlias#Mapping#MutableMapping#O_APPEND#O_BINARY#O_CREAT#O_EXCL#O_NOINHERIT#O_RANDOM#O_RDONLY#O_RDWR#O_SEQUENTIAL#O_SHORT_LIVED#O_TEMPORARY#O_TEXT#O_TRUNC#O_WRONLY#P_DETACH#P_NOWAIT#P_NOWAITO#P_OVERLAY#P_WAIT#PathLike#R_OK#SEEK_CUR#SEEK_END#SEEK_SET#TMP_MAX#W_OK#X_OK#_AddedDllDirectory#_Environ#__all__#__builtins__#__doc__#__file__#__loader__#__name__#__package__#__spec__#_check_methods#_execvpe#_exists#_exit#_fspath#_get_exports_list#_walk#_wrap_close#abc#abort#access#add_dll_directory#altsep#chdir#chmod#close#closerange#cpu_count#curdir#defpath#device_encoding#devnull#dup#dup2#environ#error#execl#execle#execlp#execlpe#execv#execve#execvp#execvpe#extsep#fdopen#fsdecode#fsencode#fspath#fstat#fsync#ftruncate#get_exec_path#get_handle_inheritable#get_inheritable#get_terminal_size#getcwd#getcwdb#getenv#getlogin#getpid#getppid#isatty#kill#linesep#link#listdir#lseek#lstat#makedirs#mkdir#name#open#pardir#path#pathsep#pipe#popen#putenv#read#readlink#remove#removedirs#rename#renames#replace#rmdir#scandir#sep#set_handle_inheritable#set_inheritable#spawnl#spawnle#spawnv#spawnve#st#startfile#stat#stat_result#statvfs_result#strerror#supports_bytes_environ#supports_dir_fd#supports_effective_ids#supports_fd#supports_follow_symlinks#symlink#sys#system#terminal_size#times#times_result#truncate#umask#uname_result#unlink#unsetenv#urandom#utime#waitpid#waitstatus_to_exitcode#walk#write来源:TodayCAEer

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈