手把手教你编写白车身扭转工况ANSA二次开发程序

电子说

1.3w人已加入

描述

导读:在我推出的《ANSA二次开发从入门到精通》这门课程中从几何检查到网格划分,再到常见连接(螺栓、焊点、焊线、胶粘),最后到界面设计给大家全面的讲解了ANSA二次开发中常用的函数及用法,也通过代码+实例的方法逐步带大家学习相关知识。但是大家有许多同学也是刚开始接触ANSA二次开发,所以我们在课程中的例子还是比较简单的,想在工程实际应用还需要多进行练习,但是也无非是课程中的知识的组合。

作为一名汽车仿真工程师做得最多的就是汽车相关工况的二次开发,本文就用一个最常见的白车身扭转工况来带大家再次领略ANSA二次开发的魅力,后期也会有更多针对工程实例的课程、文章,欢迎大家关注我的仿真秀专栏-ANSA攻城狮

一、认识白车身扭转工况

首先介绍一下白车身扭转工况的具体加载、约束以及结果读取吧。

1、加载

扭转顾名思义需要在车身上加载一个扭矩,主流主机厂的仿真方法是在车身减震器安装点位置左右分别施加两个相反的力。如下图所示

Sansa

2、约束

为了保证在加载过程中车身不会发生刚体位移,我们需要施加约束。通常是在车身后部减震器安装点位置约束1-3方向自由度,有的主机厂还会在保险杠中部约束一个点的3方向自由度。

3、结果读取与计算

不同企业的计算方法不同,这里选取一个比较主流的车身扭转刚度计算方法

读取前减震器z向位移Z1,Z2(单位m)。扭矩为T(单位N.m),前左右安装点距离为D(单位m),车身扭转刚度计算公式为:

Sansa

最终计算出来的扭转刚度单位为:N.m/deg

二、编程思路

Sansa

首先创建一个界面用于和用户进行交互。

Sansa

点击选点按钮后用户选择前后减震器安装点,软件会自动通过位置判断每个选点的位置,然后为其创建对应的集合

点击创建模型按钮后,软件会自动根据模型里面的集合来创建载荷以及约束。这样做的好处就是下次在使用之前已经选点好的模型进行白车身扭转刚度分析,只需要点击“创建模型”按钮就可以直接创建模型,而无需再次选点。

界面很简单,但是已经能够实现基本的功能,大家也可以在此基础上增加组件,实现更加复杂的交互功能。由于篇幅有限这里只进行最基础功能的实现,更加复杂的功能与丰富的工程实例请大家继续关注我后期的课程与文章。

总结下来我们一共要建立三个函数:

1.搭建GUI界面的函数

2.允许用户界面中选点的函数

3.创建载荷、约束、Header的函数

三、代码编写实操

接下来我们开始编写代码

1、界面搭建

首先导入必要的库

Sansa

接下来创建一个简单的界面,对代码不熟悉的同学请自行查看帮助文档或者跟着《ANSA二次开发从入门到精通》课程系统学习

Sansa

这里面我们先把选点的函数SelectNode以及创建模型的函数CreateHeader创建出来,这样子才能显示出界面

Sansa

2、用户选点

这里给大家讲解一下具体代码的变成思路

下面这段代码是允许用户选点,并且根据位置来判断选取的点是前后减震器中的哪一个并创建对应的集合,其中还加了一些逻辑判断。

Sansa

这段代码中由四部分逻辑相同的部分,这里拿出来其中一部分进行讲解

Sansa

(1)PickEntities()是允许用户在界面中选择节点的函数,用户可以选择四个减震器安装点中任意几个。

(2)接下来通过.position的类属性来判断改点所在位置,并进行对应集合的创建。

(3)然后通过GetEntity来获取集合,如果存在我们就用已经存在的集合,并且将集合中的点通过CollectEntities()搜集起来,再通过RemoveFromSet()将集合中的点移除集合;不存在我们就使用CreateEntity()创建一个新的集合。

这样做是为了我们在已经存在集合(之前选取过点)的模型中重新选点时能够使用新选择的点来覆盖旧的点,增加程序的灵活性。当然了我们每个位置点所建立的Set是有固定的ID的,这样子方便索引。

(4)最后就是将这个点通过AddToSet()来储存到几何中进行位置判断时大家根据自己模型中的全局坐标系进行判断就好,我这里的全局坐标系如下图所示:

Sansa

进行到这里大家可以测试一下程序能否正常运行,效果就是这样的

我们在第一次选择时会创建新的Set来装每个减震器安装点的节点,第二次选择时则会覆盖之前集合中的节点。见下视频:

3、创建Header

代码如下:

Sansa

(5)首先通过GetEntity()获取四个减震器安装点储存的集合

(6)然后我们判断一下集合是否为空,如果为空我们弹出对话框提示用户“请检查约束点及加载点集合”

Sansa

(7)集合不为空,我们搜集集合中的节点,使用变量储存

(8)使用CreateEntity分别创建Force及SPC

(9)最后使用CreateEntity创建Header,使用SetNastranHeader来设置Header中的内容,进行求解

效果如下:

到这里我们的程序就写完了,其实其中还可以增加很多的逻辑判断来增强我们程序的容错率,不要出现错误就异常退出,比如说判断集合中的节点数是否为1,如果节点数多余1说明这个集合有问题,这时候可以提示用户检查集合。再比如还可以增加在创建完Header后让用户选择路径输出计算文件。这里大家就自由发挥想象。

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分