|
马上注册,结交更多同行朋友,交流,分享,学习。
您需要 登录 才可以下载或查看,没有帐号?注册
x
nijinf wrote:
如何利用c语言进行二次开发困扰了我很长时间,得益于论坛上众多大侠的探索,如lemonwj,中山狼等。我也摸索了一点,如今能用c语言实现设计过程design time的函数。许多人能成功生成dll文件,可以看下中山狼的帖子,但在运行后却找不到自定义的函数。我发现要生成aview中的设计过程函数,在选择生成dll文件时不要选择adams/aview下的cr-user,而应直接选择adams cr-user,好像生成的是solver的动态连接库,但却可应用于aview中。生成动态连接库后,运行adams12 av ru-user,在询问aview的动态连接库时敲入生成的dll文件,在function builder的misc函数集中就可找到自定义函数了。郑建荣书中的例子我改了一下,实际上他写的有误。自定义函数必须在vc_initialize_user()中注册,而注册类型必须与mdi_c.h中的类型相符,他定义的函数有四个实数参数,这在mdi_c.h中找不到,我试着在mdi_c.h中加了fn_R_RRRR的类型,但在adams中发现参数类型为int型了。于是我用了三个实数参数,注意在vc_initialize_user()中参数个数为3,这样就可以成功进行函数的使用了。我定义的marc如下:
!$first_marker:t=marker
!$second_marker:t=marker
!$new_marker:t=new_marker
marker create marker_name=$new_marker &
location =(dist2($first_marker.loc_x,$second_marker.loc_x,$first_marker.loc_y)),&
($first_marker.loc_y),0 &
orientation =0,0,0 &
relative_to =ground
Adams12的solver中没有提供c语言的子程序模板,只有fortran的。所以要进行运行过程函数的开发,只有用fortran了,要不就自己用c编,它提供了许多头函数。
这是在精华区以前nijinf的一篇文章.
可是我是一个刚入门的菜鸟,想知道用户子程序的编制详细的步骤是怎么样的,有谁能帮帮忙呢? 就拿郑建荣老师书上的拿个例子讲讲吧. 或者有没有相关的文章之类的.
先谢谢了. |
|