首页/文章/ 详情

玩转ANSA二次开发-2:开发流程之创建自己的“工具库”

1年前浏览1201


导读:上一篇玩转ANSA二次开发-1:详解实体属性与方法及案例实操介绍了“实体”的属性以及方法一些最基础的用法,配合上其他的命令你就能玩转ANSA二次开发了,今天继续教大家玩转ANSA二次开发。

一、写在文前

大家学习ANSA二次开发一般都是要解决一些实际遇到的工程问题,从重复性的劳动中解放出来。但是大家有没有想过,在每一次针对不同的需求、应用场景进行ANSA二次开发时,我们所写的代码也有很多重复性的劳动。比如说我们在两个应用场景中都需要创建一个RBE2单元:

(1)场景一需要用户通过选点作为RBE2单元的从节点,主节点在从节点中心;(2)场景二需要用户选择一个节点作为主节点,以主节点为中心半径15mm的节点作为从节点。这两个场景可以公用的代码就是使用节点创建RBE2单元的步骤。

正常的做法是写一个函数


def CreateRbe2(master=None,salve=[],name=’’,id=’’):

代码部分实现根据主、从节点创建RBE2单元

这个函数可以通过**的方式循环利用,但是这样每次还要到上一次写的代码中找到,很浪费时间。并且这样写代码的可扩展性将大打折扣。

二、面向对象的编程思路

进阶的方法可以使用面向对象开发的开发思路:

这里需要先介绍Python语言中类的概念。熟悉的同学们请自行跳过。在Python中的,类时一种面向对象编程的机制,用于描述具有相同属性的和方法的对象的**。类定义了一组属性和方法,可以用来创建对象的模板。类定义了一组属性和方法,可以用来创建对象的模板。类可以看作一种自定义的数据类型,它可以包含多个实例,每个实例都具有相同的属性和方法。

类的定义通常包括类名、属性和方法在类定义中,我们可以定义类属性、类方法、实例属性和实例方法等。类属性是整个类的属性,可以通过类名来访问。实例属性是属于实例的属性,只能通过实例名来访问。类方法和实例方法是类中的函数,可以用来执行特定的操作。

以下是一个简单的类定义示例:
















class Person:# 类属性num_of_persons = 0def __init__(self, name, age):# 实例属性self.name = nameself.age = agePerson.num_of_persons += 1# 实例方法def say_hello(self):print("Hello, my name is", self.name)# 类方法@classmethoddef get_num_of_persons(cls):return cls.num_of_persons

在上述示例中,我们定义了一个名为Person的类,它具有一个类属性num_of_persons,表示创建的Person实例的数量。在构造方法__init__()中,我们定义了两个实例属性name和age,并将类属性num_of_persons加1。实例方法say_hello()用于打印一个问候语,其中包含实例属性name的值。类方法get_num_of_persons()返回类属性num_of_persons的值。

使用该类,我们可以创建多个Person的实例,并访问它们的属性和方法。例如,以下代码创建了两个Person实例p1和p2,并调用了它们的实例方法say_hello():









p1 = Person("Alice", 25)
p2 = Person("Bob", 30)p1.say_hello()p2.say_hello()输出结果为:Hello, my name is AliceHello, my name is Bob

我们还可以通过类方法get_num_of_persons()来获取Person实例的数量。例如,以下代码输出了当前创建的Person实例的数量:



print(Person.get_num_of_persons())输出结果为:2

了解了Python类属性的概念后,我们就可以把一个常用的功能封装成一个单独的模块,然后每次使用前通过import导入即可,我们只需要记住这个类的输入、输出、属性、类方法即可,最好在创建前进行注释标注。比如上述我们提到的创建RBE2单元,我们就可以这样进行封装。

我这里只是实现了根据输入的主、从节点进行RBE2单元的创建。可以看到我还预留了输入id以及名字的接口,后期需要可以直接修改。

if __name__ == '__main__':后的代码为测试代码,只有在执行当前.py文件时才会执行。

三、怎么灵活使用上述封装

那么怎么灵活使用上述封装的功能呢?

首先把这个文件存为CreateRbe2.py文件,假设你现在要在另外一个.py文件中用到这个创建RBE2单元的功能,那你只需要如下图这样子将这个模块使用import导入进来:

CreateRbe2.CreateRbe2(nodes[0],nodes[1:]).create()中第一个“CreateRbe2”是.py文件(库)的名称,第二个“CreateRbe2”是模块的名称。因为一个库中可以有很多个模块,所以需要通过库.模块的方式进行精确导入。

如果我们将大部分常用的功能都进行封装,那么你的代码就会是下面这种结构:

每一个插件及功能都是一个文件,主文件中的代码量会变少,方便开发;在有新的功能需要实现,并且是现有功能的补充时候,我们还可以是使用类的继承属性,举个例子:

如果想在上述创建RBE2的功能上增加一个返回RBE2主节点位置的功能,我们只需要:

是不代码量就简洁了很多。

好了以上就是关于ANSA二次开发中“面向对象编程”的一个小技巧。

四、我们ANSA二次开发精品课

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

以下是课程安排

ANSA二次开发从入门到精通22讲:轻松掌握基于python的ANSA二次开发

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

1、你将学到  
  • 基于各种工程实例的Ansa二次开发案例讲解过程
  • 熟练运用Ansa二次开发进行几何清理

  • 熟练运用Ansa二次开发进行网格划分

  • 熟练运用Ansa二次开发进行常见连接(焊点、焊线、螺栓、胶粘)的转换与实体化

  • 熟练运用Ansa二次开发进行GUI界面设计,提高程序交互性

  • 熟练掌握Ansa二次开发中Python的常用数据类型及语法

  • 赠课程全套资料和模型,并提供VIP订阅用户交流,赠知识圈答疑服务
2、适合哪些人学习  
 
  • 学习型仿真工程师

  • 有限元分析兴趣爱好者和结构工程师

  • 理工科在校生和教师

  • 希望通过二次开发简化工作、提高效率的工程师

  • ANSA软件用户和兴趣爱好者

3、读者福利

读者福利:请在文章附件直接下载以下学习资料,如果遇到麻烦,请在文章下方留言或联系平台客服领取。


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

来源:仿真秀App

附件

免费链接.txt
二次开发电子ANSA螺栓
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-05-29
最近编辑:1年前
仿真圈
技术圈粉 知识付费 学习强国
获赞 10080粉丝 21540文章 3537课程 219
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈