首页/文章/ 详情

Workbench平台GUI二次开发入门系列——菜单栏1

3小时前浏览1

案例使用方法

本入门教程中的所有案例均已测试通过,具体参考入门1中的使用方法。

目录

01 入门1 

02 入门2 

03 布局管理1 

04 布局管理2 

05 菜单栏1 

06 菜单栏2 

07 工具栏 

08 基本控件1 

09 基本控件2 

10 基本控件3 

11 基本控件4 

12 高级控件1 

13 高级控件2 

14 对话框1 

15 对话框2 

16 拖拽功能 

17 绘图1 

18 绘图2 

19 绘图3 

20 绘图4 

21 进度条 

22 游戏——贪吃蛇

菜单栏1

case09 菜单栏

目标:创建菜单栏及一级子菜单

本案例创建了菜单栏和一级子菜单,并设置了退出的快捷键。

# encoding: utf-8
import clr
clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")

from System.Windows.Forms import Application, Form
from System.Windows.Forms import Keys, MenuStrip, ToolStripMenuItem
from System.Drawing import Size

class IForm(Form):
    def __init__(self):
        self.Text = 'Simple Menu'
        self.Size = Size(250200)
        ms = MenuStrip()
        ms.Parent = self
        filem = ToolStripMenuItem("&File")
        exit = ToolStripMenuItem("&Exit"None, self.OnExit)  
        # exit的快捷键
        exit.ShortcutKeys = Keys.Control | Keys.X
        # filem下添加eixt子菜单
        filem.DropDownItems.Add(exit)
        ms.Items.Add(filem)
        self.MainMenuStrip = ms
        self.CenterToScreen()
    def OnExit(self, sender, event):
        self.Close()

IForm().ShowDialog()

退出可以通过点击退出按钮或者快捷键 Ctrl+X效果展示:

case10 子菜单栏

目标:编写多级子菜单

本案例展示如何编写一级及多级子菜单。

# encoding: utf-8
import clr
clr.AddReference("System.Windows.Forms")
clr.AddReference("System.Drawing")

from System.Windows.Forms import Application, Form
from System.Windows.Forms import MenuStrip, ToolStripMenuItem
from System.Drawing import Size

class IForm(Form):
    def __init__(self):
        self.Text = 'Simple Menu'
        self.Size = Size(380200)
        ms = MenuStrip()
        ms.Parent = self
        filem = ToolStripMenuItem("&File")
        # 添加exit功能事件
        exit = ToolStripMenuItem("&Exit"None, self.OnExit)
        importm = ToolStripMenuItem()
        importm.Text = "Import"
        # File添加下级菜单
        filem.DropDownItems.Add(importm)
        temp = ToolStripMenuItem()
        temp.Text = "Import newsfeed list..."
        importm.DropDownItems.Add(temp)
        temp = ToolStripMenuItem()
        temp.Text = "Import bookmarks..."
        importm.DropDownItems.Add(temp)
        temp = ToolStripMenuItem()
        temp.Text = "Import mail..."
        importm.DropDownItems.Add(temp)
        filem.DropDownItems.Add(exit)
        ms.Items.Add(filem)
        self.MainMenuStrip = ms
        self.CenterToScreen()
    def OnExit(self, sender, event):
        self.Close()

IForm().ShowDialog()

效果展示


完整的本地电子版本参阅入门1中的其他。


来源:CAE中学生
WorkbenchSystem二次开发电子游戏
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-01-11
最近编辑:3小时前
CAE无剑
硕士 | 仿真工程师 CAE中学生
获赞 702粉丝 1549文章 256课程 0
点赞
收藏
作者推荐

一文搞懂ANSYS的二次开发逻辑

01引子先做一个小例子。(1)准备一个简单的、能算的Ansys算例,注意!一定要简单!!!(2)导出求解文件(.dat)文件在Solution→WriteInputFile中导出求解文件(3)Win+R,调出运行,输入cmd,打开cmd命令窗口,在其中输入以下命令:"D:\ProgramFiles\ANSYSInc\v211\ANSYS\bin\winx64\ansys211"-b-dir"E:\APDL-Batch-Demo"-iStatic.dat-ofile.out其中:"D:\ProgramFiles\ANSYSInc\v211\ANSYS\bin\winx64\ansys211"是求解器的执行程序路径,ansys211实际是ansys211.exe执行程序;-b表示Batch模式;-dir"E:\APDL-Batch-Demo"求解文件(.dat)的所在路径;-iStatic.dat求解文件的名称;-ofile.out指定输出文件此外,还可指定求解时的CPU个数:-np4指定计算核心数为4;等待求解完成,文件夹的变化如下求解器的执行程序路径也可以改写成:"%AWP_ROOT211%\ANSYS\bin\winx64\ansys211"其中:"%AWP_ROOT211%是系统环境变量。那为什么"%AWP_ROOT211%能够起作用呢?这是因为"%AWP_ROOT211%已经添加到系统的环境变量中,所以在cmd中可以识别。这也是为什么有些软件在安装的过程中需要添加环境变量的原因。同理求解器的执行程序路径也可以改写成:"%ANSYS211_DIR%\bin\winx64\ansys211"以上命令汇总:"D:\ProgramFiles\ANSYSInc\v211\ANSYS\bin\winx64\ansys211"-b-dir"E:\APDL-Batch-Demo"-iStatic.dat-ofile.out"%AWP_ROOT211%\ANSYS\bin\winx64\ansys211"-b-dir"E:\APDL-Batch-Demo"-iStatic.dat-ofile.out"%ANSYS211_DIR%\bin\winx64\ansys211"-b-dir"E:\APDL-Batch-Demo"-iStatic.dat-ofile.out"%ANSYS211_DIR%\bin\winx64\ansys211"-b-np4-dir"E:\APDL-Batch-Demo"-iStatic.dat-ofile.out02ANSYS的二次开发逻辑上面展示了有限元分析(Ansys)的采用命令行方式运行Batch模式的基本流程:输入求解文件→求解器求解→返回结果文件其实以上的内容看似和二次开发关系不大,但如果以文本模式打开.dat文件,可以发现,它是ansys的本身的开发语言——APDL,也就是说,用户提交了一个以APDL语言编写的求解文件,通过求解器解释给计算机,让计算机进行计算,结果返回给求解器,求解器最终输出结果文件,也就是.rst文件(结构与耦合结果文件)。通俗点说即:用户想进行有限元分析,提出了一些需求,有人(Ansys)开发出一个求解器,并且为了保证用户和求解器能正常交互,所以定义了交流语言(APDL语言),这样用户的需求就可以通过交流语言,借助求解器与计算机的翻译交流得以满足,以上的整个过程可以简称为求解或者编译。实际上,作为用户而言,求解器是个黑匣子,里面具体如何运行无从得知,市面上有也有非常多的求解器,商用的以及开源的都有。以WorkBench为例,这个产品本身就属于一次开发,同时,它也开放了一些接口,得以让用户在WB的框架下进行相应的二次开发,这个二次开发是基于有限元仿真的基本流程的,因为编译的过程是黑匣子,无需开发。那么二次开发的重点就在如何得到求解文件以及如何处理结果文件上。通常情况下,为了得到求解文件和处理结果文件,用户会在Workbench平台中做非常多的操作,这些操作,可以通过鼠标点击来实现,当然也可以通过特定语言来实现(IronPython),然后WorkBench的执行程序会将这些特定语言翻译给计算机,在去执行用户的命令。下面给出WorkBench在cmd命令窗口运行.py文件的命令"%AWP_ROOT211%\Framework\bin\Win64\RunWB2"-b-i-r"path\main.py"其中:"%AWP_ROOT211%\Framework\bin\Win64\RunWB2"是RunWB2.exe执行程序的路径求解器的执行程序路径;-i表示交互模式-b表示Batch模式-r"path\main.py"是.py执行文件的绝对路径;WorkBench运行.py的逻辑和Ansys求解的逻辑一致,即采用了求解器能够识别的语言,并编译给计算机,最终执行用户的命令。实际上Mechanical中的二次开发的语言也是ironpython,但是它的执行程序是嵌套在Workbench平台下的,并不能脱离WB平台单独运行,因此也就无法在cmd命令窗口使用命令去单独运行。它的安装路径如下:D:\ProgramFiles\ANSYSInc\v211\aisol\bin\winx64\AnsysWBU.exe双击打开会弹出一下窗口最后总结一下:ANSYS二次开发,或者说编程的逻辑就是用解释器能读懂的语言,执行用户下达的命令。这里能读懂的语言如何编写,实际上就是用户需要学习的,即API(ApplicationProgrammingInterface)。03简单案例案例展示如何在WB平台下录制脚本,作为基础代码。这样就得到了一个基础代码(未修改)。#encoding:utf-8#2021R1SetScriptVersion(Version="21.1.216")template1=GetTemplate(TemplateName="StaticStructural",Solver="ANSYS")system1=template1.CreateSystem()将test.wbjn名称直接修改为test.py,在cmd窗口输入:"%AWP_ROOT211%\Framework\bin\Win64\RunWB2"-b-i-r"C:\Users\Tiyaya\Desktop\test.py"其中:-r"C:\Users\Tiyaya\Desktop\test.py"需要根据实际地址修改;效果如下:04扩展上面展示的是基于ANSYS2021R1的二次开发技术,实际上Anasys官方也做了python相关的二次开发的项目叫做pyansys,官方地址是:https://docs.pyansys.com/其中和结构相关的有关的主要如下图:里面还有其它Ansys的产品模块,所以pyansys项目的目的就是通过Python使用Ansys产品,前提是需要安装Ansys的本体产品,例如做有限元分析的前后处理,调用Ansys的求解器求解等等,而且很多Python相关的package是后期开发出来的,对Ansys的版本是有要求的。例如:PyMAPDL最低的建议版本要求是2021R1,同时也对安装的python解释器有版本要求(3.9~3.12)。PyMechanical最低的建议版本要求是2023R2来源:CAE中学生

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