首页/文章/ 详情

ANSA二次开发基础-面向对象的开发思路

1年前浏览11006

大家学习ANSA二次开发一般都是要解决一些实际遇到的工程问题,从重复性的劳动中解放出来。

但是大家有没有想过,在每一次针对不同的需求、应用场景进行ANSA二次开发时,我们所写的代码也有很多重复性的劳动。

比如说我们在两个应用场景中都需要创建一个RBE2单元:

场景一需要用户通过选点作为RBE2单元的从节点,主节点在从节点中心

场景二需要用户选择一个节点作为主节点,以主节点为中心半径15mm的节点作为从节点

这两个场景可以公用的代码就是使用节点创建RBE2单元的步骤。

正常的做法是写一个函数

def CreateRbe2(master=None,salve=[],name=’’,id=’’):
       
            代码部分:实现根据主、从节点创建RBE2单元


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

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

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

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

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

image.png

 

在上述示例中,我们定义了一个名为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():

image.png

输出结果为:

image.png

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


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

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

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

image.png

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

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

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

image.png

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

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

image.png

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

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

image.png

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

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

我是ANSA攻城狮,下次见,同学们!

image.png

 

代码&命令二次开发网格处理几何处理静力学结构基础ANSA
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-04-04
最近编辑:1年前
ANSA攻城狮
硕士 | 仿真工程师 用编程解放双手
获赞 136粉丝 215文章 14课程 7
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈