0

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

    2023.08.14 | admin | 122次围观

    作者|ANSA攻城狮仿真秀专栏作者

    首发 |仿真秀App

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

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

    一、认识白车身扭转工况

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

    1、加载

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

    2、约束

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

    3、结果读取与计算

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

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

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

    二、编程思路

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

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

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

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

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

    三、代码编写实操

    接下来我们开始编写代码

    1、界面搭建

    首先导入必要的库

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

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

    2、用户选点

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

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

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

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

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

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

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

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

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

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

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

    3、创建Header

    代码如下:

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

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

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

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

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

    效果如下:

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

    四、ANSA二次开发从入门到精通

    笔者原创的《ANSA二次开发从入门到精通14讲》精品课,基于Python对Ansa23进行二次开发(适用于低版本Ansa)。课程通过代码讲解实例演练的方法深入浅出地从:实体概念及用法、几何清理、网格划分、连接转换及实例化和GUI界面设计五个方面进行讲解,后续还为订阅用户提供答疑交流服务。

    以下是课程安排(持续加餐中)

    上新优惠价(限30名)

    限时特价:299元(原价:599元 )

    可开电子发票,赠送答疑专栏

    提供vip群交流,课程可反复回看

    识别下方二维码,立即试看

    此外,笔者为所有订阅用户提供知识圈答疑服务和VIP用户交流群。并附赠课程相关资料等(平台支持自行开具电子发票)。

    1、你将学到

    2、适合哪些人学习

    3、读者福利

    欢迎文章末尾点赞和在看,截图发到仿真秀App公众号对话框,回复ANSA ,24小时后获得以下学习资料。欢迎大家加入QQ群(576156527),群里会不定期给大家分享一些ANSA及二次开发的相关干货知识,一起可以学习讨论本文的代码与模型大家可以加入QQ群的方式领取,群里大家可以互相讨论学习。

    以上资料已经收录到CAE仿真入门学习包,欢迎大家朋友圈收藏领取。

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论