首页/文章/ 详情

ANSA二次开发_Python基础-面向对象结构

7月前浏览5017

通过class的代码形式,批量创建PART。






























import ansafrom ansa import*
class UserName ():  def __init__(self):    window=guitk.BCWindowCreate("Input_Values", guitk.constants.BCOnExitDestroy)    grid=guitk.BCGridLayoutCreate(window, 1, 1)    self.line_1=guitk.BCLineEditCreate(grid, 'name')    guitk.BCGridLayoutAddWidget(grid, self.line_1, 0, 1, guitk.constants.BCAlignVCenter+guitk.constants.BCAlignLeft)    self.label_1=guitk.BCLabelCreate(grid, "part name")    guitk.BCGridLayoutAddWidget(grid, self.label_1, 0, 0, guitk.constants.BCAlignVCenter+guitk.constants.BCAlignLeft)    guitk.BCDialogButtonBoxCreate(window)    guitk.BCWindowSetAcceptFunction(window, self.AcceptFunc, None)    guitk.BCWindowSetRejectFunction(window, self.RejectFunc, None)    guitk.BCShow(window)    def AcceptFunc (self, win, data):    self.name=guitk.BCLineEditGetText(self.line_1)    return 1          def RejectFunc (self, win, data):    return 1    def createpart():  window=UserName()  for value in window.name.split() :    base.CreateEntity(constants.NASTRAN,"ANSAPART",{"Name":value})
createpart ()


python的基础知识

继承

继承允许我们定义一个继承另一个类的属性和方法的类。

封装

封装是OOP的一个核心概念,它隐藏了对象的内部状态和实现细节,仅仅暴露出操作对象的接口。


多态

多态给我们提供了一种使用共有接口的方式,不同的对象可以以自己的方式去实现这些接口。
























# 基类/父类class Animal:    def __init__(self, name):        self.name = name  # 封装:属性name被封装在Animal类中
   def speak(self):  # 多态:不同的动物会以它们自己的方式发出声音        raise NotImplementedError("Subclass must implement abstract method")
# 子类继承自Animalclass Dog(Animal):    def speak(self):        return f"{self.name} says Woof!"
class Cat(Animal):    def speak(self):        return f"{self.name} says Meow!"
# 创建Animal类的实例animals = [Dog('Max'), Cat('Felix')]
# 多态:调用相同的接口speak,执行不同的操作for animal in animals:    print(animal.speak())
继承:Dog和Cat类继承自Animal类。这意味着它们可以继承Animal类的所有属性和方法。

封装:Animal类封装了属性name和方法speak()。name属性在Animal类的构造函数中初始化,而speak()方法则被设计为在子类中实现。

多态:通过Animal类的speak()方法展示了多态。尽管每个子类都有一个speak()方法,但是Dog和Cat类以自己的方式实现了这个方法。

当我们遍历animals列表并调用speak()方法时,Python自动识别对象的实际类型,并调用相应类的speak()方法。


来源:FEAer
ACTNastran二次开发ANSApython清华大学 DeST
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-04-21
最近编辑:7月前
FEAer
本科 | CAE工程师 到点就下班的CAE打工人
获赞 72粉丝 99文章 81课程 2
点赞
收藏
作者推荐

ANSA联合ABAQUS两种过盈配合方式计算结果比较

最近也是忙于工作,所以迟迟没有更新,让大家久等了,所以今天就来给大家分享干货了。 前几天,工作上经常分析装配断裂问题。每次分析不同的过盈量装配,我都要画一遍网格。非常麻烦,设计的工程师又特别烦人。于是,我发现了在ABAQUS中可以设置过盈量进行计算,每次只需要在接触中修改值就可以了,不用再改我们的网格。这简直就是我们网格人的福音啊。所以今天这篇文章在讲怎么设置过盈量的同时,也会对这两种方法进行比较,看结果的差异有没有很大。首先我们在solidworks中建好模型,第一个模型轴的直径10.05mm,孔的内劲10mm第二个模型,轴的直径10mm,孔的内径也是10mm,我们在接触中把这0.05mm的过盈量体现出来。我们把孔的外表面的点固定轴的一端的节点用cp1抓起来,在中间的点施加强制位移下面讲我们的重点,我们在接触中体现我们的过盈量我们用轴的外表面做主面,孔的内表面做从面。我们在INTERFERENCE中创建在这里我们把我们的过盈量体现出来,输入-0.05AMPLITUDE中输入我们的幅值曲线,如果过盈量过大,导致计算不收敛,我们可以修改我们的幅值曲线INTERACTION中输入在FRICTION中定义摩擦系数0.3下面定义我们的分析步最后我们比较一下这两种方法计算的结果从应力值来看,这两者的区别并不是很大,所以这种方法可以应用在设计工程师提供给你多个过盈量分析的时候使用,这样就不用改我们的网格了,又是一个偷懒小技巧,大家学会了没。关注我,每天带你准时下班。来源:FEAer

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈