首页/文章/ 详情

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

9小时前浏览7

案例使用方法

本入门教程中的所有案例均已测试通过,具体参考入门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 游戏——贪吃蛇

菜单栏2

case11 检查菜单项

目标:制作检查菜单栏

本案例中,展示了检查菜单的用法,在勾选时,状态栏显示 Ready,不勾选时,不显示。

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

from System.Windows.Forms import Application, Form, StatusBar
from System.Windows.Forms import Shortcut, MainMenu, MenuItem
from System.Drawing import Size

class IForm(Form):
    def __init__(self):
        self.Text = 'Simple Menu'
        self.s b = StatusBar()
        self.s b.Parent = self
        self.s b.Text = "Ready"
        mainMenu = MainMenu()
        filem = mainMenu.MenuItems.Add("&File")
        # Exit事件和快捷键的另一种方式    
        filem.MenuItems.Add(MenuItem("E&xit", self.OnExit, Shortcut.CtrlX))
        view = mainMenu.MenuItems.Add("&View")
        self.viewStatusBar = MenuItem("View StatusBar")
        self.viewStatusBar.Checked = True
        self.viewStatusBar.Click += self.ToggleStatusBar
        view.MenuItems.Add(self.viewStatusBar)
        self.Menu = mainMenu
        self.Size = Size(250200)
        self.CenterToScreen()
    def OnExit(self, sender, event):
        self.Close()
    def ToggleStatusBar(self, sender, event):
        check = self.viewStatusBar.Checked
        if (check):
            self.s b.Visible = False
            self.viewStatusBar.Checked = False
        else:
            self.s b.Visible = True
            self.viewStatusBar.Checked = True

IForm().ShowDialog()

效果展示 :

case12 菜单栏的图标,分隔符

目标:菜单栏的子菜单栏前增加图标

本案例是在菜单栏的子菜单栏前增加图标,分隔符等。

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

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

path1 = r"D:\01-图片\icon-png\TrackBar-1.png"
path2 = r"D:\01-图片\icon-png\TrackBar-2.png"
path3 = r"D:\01-图片\icon-png\TrackBar-3.png"

class IForm(Form):
    def __init__(self):
        self.Text = 'MenuStrip'
        self.Size = Size(250200)
        menuStrip = MenuStrip()
        titem1 = ToolStripMenuItem("File")
        menuStrip.Items.Add(titem1)
        titem2 = ToolStripMenuItem("Tools")
        menuStrip.Items.Add(titem2)
        subm1 = ToolStripMenuItem("New")
        subm1.Image = Image.FromFile(path1)
        titem1.DropDownItems.Add(subm1)
        subm2 = ToolStripMenuItem("Open"
        subm2.Image = Image.FromFile(path2)
        titem1.DropDownItems.Add(subm2)
        titem1.DropDownItems.Add(ToolStripSeparator())
        subm3 = ToolStripMenuItem("Exit")
        subm3.Image = Image.FromFile(path3)
        titem1.DropDownItems.Add(subm3)  
        subm3.Click += self.OnExit
        self.Controls.Add(menuStrip)
        self.MainMenuStrip = menuStrip 
        self.CenterToScreen()
    def OnExit(self, sender, event):
        self.Close()

IForm().ShowDialog()

效果展示:



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



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

超单元&子结构提升大模型计算效率案例分享

01 简介对复杂模型进行仿真计算时,由于有限元模型的网格数量增加,导致计算求解成本骤增。Ansys针对此类工程问题提供模态综合法(Component Mode Synthesis,CMS)来应对,它是一种用于复杂大型结构动力分析的高效方法,该方法大大降低了系统的自由度,提高了计算效率,尤其适用于需要高精度计算和快速响应的场景。其核心技术是将非关键部件网格缩减为超单元,并与保留部分建立连接关系。本文以简化的工程案例,对超单元缩减计算如何在Ansys Workbench 中实现进行说明。02 示例工业设计产品通常需要进行振动试验,在实际试验之前一般会进行仿真验证。由于产品自身结构复杂,加之工装往往是一个更大的结构。因此这类仿真计算非常适合采用子结构技术,将工装等大模型进行超单元缩减计算,可以显著提升计算效率。如图所示,对产品+工装进行振动仿真,计算产品的结构模态以及测点位置的振动响应加速度曲线。03 结果概要从结果可以看出,常规模型计算的结果(未使用缩减)和使用超单元缩减计算结果基本一致,使用超单元缩减计算可以有效完成复杂模型的计算需求,且计算效率大大提升。04 详细操作(1)模型说明产品由PartA和PartB构成,工装为PartC。其中PartA两端夹持部位做共节点处理;产品PartA和工装PartC的连接面有一定间隙,采用Bonded-MPC连接,Radius-3mm ;约束工装底面 fix;(2)产品+工装完整模型计算完整模型计算内容产品+工装一起进行模态和5-2000Hz的谐响应仿真,提取前6阶模态和轴端点的加速度响应,作为验证结果与子结构方法进行对比。a)模态计算模态计算结果如下所示 b)模态叠加法,谐响应扫频计算谐响应扫频提取端点加速度响应以及688Hz、1620Hz处的应力云图如下所示。 (3)子结构&超单元缩减工装进行简化计算a) 工装模型进行超单元缩减由工装+产品的模态计算模块,复 制一个新的模态计算模块;在新模态计算模块中只保留需要缩减为超单元的工装模型,其余模型均做suppress抑制。在工装与产品的连接位置进行Named Selection命名:s1、s2…底面约束fix保留;在模态设置位置插入Commands(APDL)超单元缩减命令;求解计算;计算完成后,在求解文件夹查找*.sub的缩减文件,在WB的Solution显示红色闪电符号并报错,没有影响。b) 产品模型+超单元模态求解由工装+产品的模态计算模块,复 制一个新的模态计算模块;将步骤a中生成的*.sub文件复 制至当前的计算文件夹内;将工装模型suppress抑制,只保留产品模型;选择产品中与工装连接的面,并Named Selection 为 contactSE ;由于工装被抑制,模态计算的fix约束也一并抑制,但无需再增加新的约束;在模态设置位置插入Commands命令;求解计算;注意:工装与产品接触面的连接状态是能够求解成功的关键,其中对应的APDL命令也不同,本文中将连接状态分为三种,其中Commands命令中“ceintf,,all”命令行也不同:理想情况:当工装与产品的连接位置,网格共节点,则该命令行需要取消。较好情况:当工装与产品的连接位置,网格非共节点,但模型配合较好,无间隙,可以正常运行。一般情况:当工装与产品的连接位置,网格非共节点,且有间隙或网格不匹配时会报错误,不能计算。(下文给出应对方法)c) 产品模型+超单元谐响应扫频计算在步骤b超单元缩减工装进行模态计算的基础上,使用模态叠加法进行谐响应扫频计算;将步骤a中生成的*.sub文件复 制、粘贴至当前的计算文件夹内;常规设置完成后求解计算;以上完成该案例介绍,其中的截图仅作为演示说明,与实际的求解状态可能会有不同。(4)特殊情况处理下面根据上文提出的三种连接状态,对理想情况和一般情况给出不同的应对策略a) 工装与产品的连接位置网格共节点步骤a超单元缩减:选定的缩减面为圆环共面区。步骤b模态计算时:APDL命令中可以不用做连接。APDL命令简化如下:b) 工装与产品的连接位置非共节点+有间隙步骤a超单元缩减保持不变。步骤b模态计算时:APDL命令中的“ceintf,,all”命令可以替换为超单元节点与“contactSE”节点的MPC连接。详细Commands APDL命令如下:第二步计算!连接位置进行NS 命名:contactSE!抑制子结构部件,激活其余部件/prep7*get,etmax,etyp,0,num,maxet,etmax+1,50type,etmax+1mat,1se,mysealls!*****建立超单元间连接*****ESEL,S,TYPE,,etmax+1 NSLE,S*get,nodeCount,node,0,count*get,nodeMin,node,0,num,min *dim,nodeLoc,array,nodeCount,3,1 *dim,nodes,array,nodeCount,1,1 *dim,neighborNode,array,nodeCount,1,1 *dim,nodePoint,array,3,3,1 *do,i,1,nodeCount nodes(i)=nodeMin *get,nodeLoc(i,1),node,nodes(i),loc,x *get,nodeLoc(i,2),node,nodes(i),loc,y *get,nodeLoc(i,3),node,nodes(i),loc,z nodeMin=ndnext(nodeMin) *enddoallscmsel,s,contactSE*do,i,1,nodeCount neighborNode(i)=node(nodeLoc(i,1),nodeLoc(i,2),nodeLoc(i,3))*enddoallsel*get,maxelem,elem,,num,max *set,_jid,etmax+2et,_jid,184keyo,_jid,1,13 sectype,_jid, joint, weld, _wbjointsecJoint,,mat,_jidreal,_jidtype,_jidsecnum,_jid*do,i,1,nodeCount *if,nodes(i),ne,neighborNode(i),then nodeA=nodes(i) nodeB=neighborNode(i) en,maxelem+i,nodeA,nodeB *endif*enddoallsel!*****建立超单元间连接*****/solualls c)建议非常推荐使用共节点方式进行建模和超单元缩减,计算结果与完整模型的相比,几乎没有差异(理想情况)。但是该情况对前处理的要求比较高。较好情况属于比较常见的,但是也对前处理有一定的要求;一般情况在工程中最为常见,接触面的匹配度不高,但是相比较将直接将模型简化为质量点的方式,缩减为超单元的方式的计算精度也有所提高。05 其他本文已展示了各连接面的接触情况的处理方式,以及核心技术APDL脚本,只要对WB中的动力学求解有一定了解,就可以复现。 原创不易,如果觉得这篇文章写得还不错,不妨请我喝一杯咖啡,作为感谢,您可以获得:本文的电子版本本案例的计算源文件(版本2021R1)案例的使用说明 来源:CAE中学生

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