首页/文章/ 详情

Workbench平台GUI二次开发入门系列——布局管理1

14小时前浏览3

案例使用方法

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

case05 基本Anchor示例

目标:创建两个按钮,展示锚定的特性

本案例中展示两个按钮的锚定示例,在拖动窗口时,上面的按钮是始终靠左靠上,下面的按钮是始终靠下靠右。

# 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 Button, AnchorStyles
from System.Drawing import Size, Point

class IForm(Form):
    def __init__(self):
        self.Text = 'Anchor'        
        self.Size = Size(210210)
        btn1 = Button()
        btn1.Text = "Button"
        btn1.Parent = self
        btn1.Location = Point(3030)
        btn2 = Button()
        btn2.Text = "Button"
        btn2.Parent = self
        btn2.Location = Point(3080)
        btn2.Anchor = AnchorStyles.Right
        self.CenterToScreen()

Application.Run(IForm())

效果展示:

case06 文本编辑器

目标:基本Dock示例,创建一个文本编辑器。

本案例展示了下拉菜单,状态栏,文本框等,可以点击退出,也可以在文本框中输入文字,实现最基本的交互。

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

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

class IForm(Form):
    def __init__(self):
        self.Text = 'Editor'
        self.Size = Size(210180)
        mainMenu = MainMenu()
        filem = mainMenu.MenuItems.Add('&File')
        filem.MenuItems.Add(MenuItem('E&xit',self.OnExit, Shortcut.CtrlX))
        self.Menu = mainMenu
        tb = TextBox()
        # 以父体作为展示窗口
        tb.Parent = self
        # tb的展示方式是Fill,也可以是上,下,左,右。
        tb.Dock = DockStyle.Fill
        tb.Multiline = True
        s b = StatusBar()
        s b.Parent = self
        s b.Text = 'Ready'
        self.CenterToScreen()
    def OnExit(self, sender, event): 
        self.Close()

IForm().ShowDialog()

效果展示:

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



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

Hypermesh+Lsdyna的爆炸压力波传播

这是一篇2D的ALE算法爆炸案例无反射边界的爆炸动画涉及的软件有Hypermesh、Hyperview、Ls-Run、LS-prepost使用的Dyna模板,涉及的主要关键字有:#ALE算法控制关键字*CONTROL_ALE#ALE单元MPP计算分配关键字*CONTROL_MPP_DECOMPOSITION_DISTRIBUTE_ALE_ELEMENTS#计算时长*CONTROL_TERMINATION#计算步长及质量缩放*CONTROL_TIMESTEP#单位设定,非必要项*CONTROL_UNITS#后处理数据输出项(场变量)*DATABASE_BINARY_D3PLOT#后处理数据输出项(历史变量)*DATABASE_OPTION(此篇文章未提取相关数据)#材料相关关键字,炸药*MAT_HIGH_EXPLOSIVE_BURN#材料相关关键字,空气、水*MAT_NULL#材料相关状态方程,多项式*EOS_LINEAR_POLYNOMIAL#材料相关状态方程,JWL爆炸*EOS_JWL#属性*SECTION_ALE2D#多物质材料组*ALE_MULTI-MATERIAL_GROUP#SPC固定约束*BOUNDARY_SPC_SET#边界条件,点起爆*INITIAL_DETONATION以上就是所涉及的关键字,下面开始进入正题模型示意:模型为2D轴对称,炸药和空气域进行共节点处理,以Y轴对称,在Hypermesh中完成建模如果第一次接触Dyna,需要注意的一点就是Comp那边的CardImage需要设置为Part,在其他cae软件中可能没有Part的概念,但Dyna必须设置材料的属性正常赋予,主要是EOSID那边需要选特定的状态方程,还需要设置沙漏控制,本案例未设置,在提交求解后会出现一个警告,所以正常情况下需要设置沙漏QH的值,具体值需要根据经验或者关键字手册,默认为0.1状态方程:用来描述材料在极端条件下(如高应变率、高压等)的压力-体积-能量之间关系的数学表达式。它主要用于处理材料在冲击、爆炸等动态加载过程中的行为我按照左侧结构树中的顺序从上至下进行梳理下红框中的Card是需要自己添加的,其余都是默认自带的,添加方式如图所示在ALE1的卡片中,需要注意的就是DCT=-1和AFAC=-1,如果这两个值默认的话,提交计算会存在警告,而且计算出来的结果也会存在问题,后面文章会做对比Termin这个卡片代表的是计算时长,一般只需要设置ENDTIM,本案例设置的为0.0001s,时间比较小,这是由于爆炸是一瞬间的事情,量级一般为us级别Timestep这个卡片代表的是质量缩放(步长),需要设置TSSFAC和DT2MS,TSSFAC默认为0.9,对于结构分析而言保持默认即可,但对于爆炸相关的模型而言,网上推荐的数据为0.67-0.68,DT2MS就是时间步长,可设置为正或者负值,设置正值即对所有的单元进行质量缩放,如果设置为负值,就是对不满足步长要求的节点进行质量缩放,这样的话就在一定程度上保证了质量增加系数,因此推荐设置负值提交计算后出现的步长dt就是DT2MS*TSSFAC的乘积,这个对于显式动力学软件来说是通用的对于Units这个卡片来说,不是必须项,因为Hypermesh本身是无单位制的软件,当然这句话可能不严谨,但是你在设置密度、弹性模量的时候,是啥单位由你自己定,如果是mmmsg,那钢的密度就是0.00785,如果是mmsTonne,那钢的密度就是7.85e-9,如果是mkgs,那钢的密度就是7850,所以单位这块在设置的时候一定要换算清楚DBplot是后处理的云图数据输出,这个一般可以设置DT,也就是多少时间步每输出一个云图,这个比较好理解Decomposition_Ale_Elems这个卡片是在使用MPP求解ALE算法的时候,不设置的话会报警告,所以设置了这个卡片本例的Card基本上就这些内容,Comp这边也没有什么好说的,那就进行LoadCollector,设置的边界条件都在这个里面,在Hypermesh中使用dyna模板时候一定要打开Solver这个Tab页,不然设置的边界条件参数都找不到地方设置,这时候就需要从Model切换到Solver的Tab页下,打开如下图所示在Dyna里面这个就很清晰,对整个模型可以一览无余边界条件很简单,一个是点起爆,需要设置起爆点的坐标和起爆时间,另一个就是SPC固定约束,约束6个自由度为0,如下图下面就是材料,这块就是MAT8和MAT9,前者是爆炸的御用材料,后者是水,空气等物质的御用材料,下图为相关参数,参数也是从网上随便查的,不代表工程数据接下来就是属性,属性这块也没啥选的,由于是2D的ALE轴对称模型,因此选择ALE_2D的单元属性,然后选择多物质材料11号算法,再选择轴对称算法,如果是3D的实体模型,就需要选择SolidSection,然后单元算法选择11号,单点的ALE算法接下来就是Set集,建立节点集进行SPC固定约束的添加建立ALE_MMG的Set集,因为在属性的时候选择的是ALE_2D,就需要建多物质组将所有与ALE相关的comp放入进去下面就是状态方程,左边是空气的多项式,右边是JWL炸药以上就是结构树中的设置及相关用法,设置后导出K文件提交LS-Run进行计算,下面是Ls-run的提交界面求解完成后,使用Hyperview打开D3plot文件,相当于ABAQUS的ODB,可以看到爆炸之后的压力波在空气中的传播状态,并提取一个单元的压力曲线,有经验的网友会看到这个压力曲线是震荡的,不符合常规,这是由于我前面设置的为SPC固定约束,如果设置为无反射的边界条件,那压力波在边界就不会反射回来,也就是单元的压力曲线会在冲击波经过的时候达到压力峰值,然后最终断崖式下降边界反射的压力曲线对比如下图所示篇幅有点长了,下次接着这篇继续,无反射边界的施加以及不添加ALE控制卡片的对比来源:CAE中学生

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