找回密码
 注册
Simdroid-非首页
查看: 358|回复: 8

给PATRAN加个执行脚本的菜单

[复制链接]
发表于 2005-3-3 06:16:45 | 显示全部楼层 |阅读模式 来自 江苏南京
给PATRAN加个执行脚本的菜单

我今天用PCL在PATRAN下作了个好玩的东东,就是可以在PATRAN下加一个菜单,点击该菜单可以执行自动编译预定的pcl文件。这样可以偷懒在patran下输入命令了,因为patran的命令行很不方便,又只要那么一小行,看着也费劲。

我来说说我是怎么作的,不会pcl的也可以照这我说的作,应该可以实现。:)
首先要在C:\msc\patran2001r3\init.pcl文件最后加一句命令,如下
########## by kingwq
!!input aaa_myinit.pcl
########## by kingwq
这个命令是在patran启动时自动编译 aaa_myinit.pcl文件。aaa_myinit.pcl这个文件就是我们自己的随patran启动而自动编译的文件。这个文件放在每次运行patran的工作目录下。内容如下:
$$$$$$$$$$$ by kingwq
$
$$$ 生成菜单的类
CLASS  my_menu
   FUNCTION init()
      WIDGET  menubar, menu, item1
      menubar= uil_primary.get_menubar_id()
      menu= ui_menu_create (menubar, "my_menu_cb", "用户菜单")
      item1= ui_item_create (menu, "zzzz_do", "ZZZZ_DO", FALSE )
   END FUNCTION   /* init  */
   FUNCTION my_menu_cb ( item_name )
   STRING item_name[]
   SWITCH (item_name)
    CASE ("zzzz_do")
        WRITE (" you have selected ZZZZ_DO ")
  sys_input("zzzz_do.pcl")
   END SWITCH
   END FUNCTION    /* beso_menu_cb */
   FUNCTION display()
   END FUNCTION /* display */
END CLASS    /*  training  */
$$$ 生成菜单的类 end
$
$$$ 显示菜单
UI_EXEC_FUNCTION ("my_menu", "display")
$
$$$$$$$$$$$$ by kingwq  ,  file end

这个文件会编译并显示一个菜单,其中 ZZZZ_DO 菜单项的功能是编译 zzzz_do.pcl 文件。
文件 zzzz_do.pcl 也是放在每次运行patran的工作目录下。
我们可以在 zzzz_do.pcl 放入要执行的命令,可以随时修改,然后点击菜单 ZZZZ_DO 就可以自动编译执行了,好处是用文件来代替在PATRAN命令行输入命令,可以一次写大段的命令,相当于一个执行脚本。

下面给个 zzzz_do.pcl 文件的例子,求99*99的积,可以演示这个功能。

$$$$$$$$$$$$ by kingwq
write(" do zzzz_do.pcl ")
integer  i1,i2,
i1=99
i2=99
i2=i1*i2
write(" 99*99 = "//str_from_integer(i2))
$$$$$$$$$$$ by kingwq

在patran的 command history 可以看到输出
$#  do zzzz_do.pcl
$#  99*99 = 9801

 楼主| 发表于 2005-3-3 06:23:38 | 显示全部楼层 来自 江苏南京

Re:给PATRAN加个执行脚本的菜单

Simdroid开发平台
如何在pcl函数中让patran提交nastran计算然后等待nastran计算完成后导入结果。
可以用命令analysis_submit( "MSC.Nastran", master_name ,true)来提交任务。patran中一般用的是analysis_submit_2("MSC.Nastran", master_name )函数,提交计算后不等待nastran的计算完成。如果要编程进行循环的修改和计算,就要用analysis_submit命令来提交。
这个问题我曾经花了好久时间去想办法,最后突然想到有analysis_submit_2()就有analysis_submit(),试了试果然行,我以前到msc公司论坛问都没人回答。

评分

1

查看全部评分

发表于 2005-3-3 16:40:38 | 显示全部楼层 来自 北京

Re:给PATRAN加个执行脚本的菜单

挺好的小把戏。

不过对大程序,就要用makefile了。
发表于 2005-3-3 18:25:42 | 显示全部楼层 来自 江苏南京

Re:给PATRAN加个执行脚本的菜单

写的不错.其实如果你的程序比较简单,不需要牵涉到界面的话,直接写成ses,然后play就可以了.
加一分鼓励一下.
 楼主| 发表于 2005-3-4 12:17:35 | 显示全部楼层 来自 江苏南京

Re:给PATRAN加个执行脚本的菜单

heman ,你好,我学pcl有半年多了,主要是做了一个patran下进行拓扑优化的程序,我现在有个问题一直没有解决,就是我的程序循环对模型进行修改计算,然后系统的内存被逐渐地消耗掉,我每次算题都会把500多M内存用差不多完,我想是不是虚数组没有被及时释放,但是检查程序好像都进行了虚数组free了阿。你有类似经验吗,请教了,:)

ps:上面这个小cake,是我用两台计算机算题,为了方便控制另外一台计算机执行命令,我就搞了这个小程序,可以方便地在用文件来替代在另一台计算机输入命令。还蛮好用的,哈哈。
 楼主| 发表于 2005-3-4 12:25:28 | 显示全部楼层 来自 江苏南京

Re:给PATRAN加个执行脚本的菜单

谢谢斑竹加分,我的第一分啊,哈哈,好开心。

我还有个问题,以前见有高人用c语言作了patran的二次开发,一直很想知道是怎么做的,请问你们知道吗???

我迫不及待想看到heman的pcl开发专题了。 :)
发表于 2005-3-4 13:54:42 | 显示全部楼层 来自 北京

Re:给PATRAN加个执行脚本的菜单

kingwq,
根据我的经验,PCL虚拟数组用得不好,会很浪费资源。建议用固定数组试试,看看是否是编程的问题。然后再讨论。

good luck。
 楼主| 发表于 2005-3-4 21:00:03 | 显示全部楼层 来自 江苏南京

Re:给PATRAN加个执行脚本的菜单

patran中用函数读取应力和位移结果,只能用虚数组做参数,还有对不同规模的模型要建立模型的节点和单元的相关信息都要用虚数组避免定义的数组过大或者过小。

我用虚数组循环读取应力,分析,修改,再计算,觉得每次都free了,会不会patran自己每次没有free读取op2文件的内存?

我原来花了一段时间搞这个问题,但是我用的虚数组太多了,最后还是没搞定,不过反正可以算,就不管了,每次算了就关掉patran然后再开了重算。:)

我的联系方法,kongwenqin@hotmail.com,希望多交流。
发表于 2012-4-18 11:17:21 | 显示全部楼层 来自 福建福州
UI_EXEC_FUNCTION ("my_menu", "display")
才是关键,请教下,子菜单的pcl是和class那段程序编制在一起吗?
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-9-30 12:32 , Processed in 0.048772 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表