导读:上一篇《玩转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 = 0
def __init__(self, name, age):
# 实例属性
self.name = name
self.age = age
Person.num_of_persons += 1
# 实例方法
def say_hello(self):
print("Hello, my name is", self.name)
# 类方法
@classmethod
def 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的值。
p1 = Person("Alice", 25)
p2 = Person("Bob", 30)
p1.say_hello()
p2.say_hello()
输出结果为:
Hello, my name is Alice
Hello, 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二次开发从入门到精通22讲:轻松掌握基于python的ANSA二次开发
此外,笔者为所有订阅用户提供知识圈答疑服务和VIP用户交流群。并附赠课程相关资料等(平台支持自行开具电子发票)。
熟练运用Ansa二次开发进行几何清理
熟练运用Ansa二次开发进行网格划分
熟练运用Ansa二次开发进行常见连接(焊点、焊线、螺栓、胶粘)的转换与实体化
熟练运用Ansa二次开发进行GUI界面设计,提高程序交互性
熟练掌握Ansa二次开发中Python的常用数据类型及语法
学习型仿真工程师
有限元分析兴趣爱好者和结构工程师
理工科在校生和教师
希望通过二次开发简化工作、提高效率的工程师
3、读者福利
读者福利:请在文章附件直接下载以下学习资料,如果遇到麻烦,请在文章下方留言或联系平台客服领取。