首页/文章/ 详情

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

4月前浏览1070

通过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()方法。

来源:TodayCAEer
ACTNastran二次开发ANSApython
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-08-14
最近编辑:4月前
TodayCAEer
本科 签名征集中
获赞 22粉丝 40文章 257课程 0
点赞
收藏
作者推荐

ANSA二次开发:解决ANSA延伸功能的不完善

大家可能都有过这样的经历,在从使用HyperMesh以及ANSA的过程中,会发现一些常用的功能在ANSA中得到了不同的实现。其中,一个就是延伸网格操作,它在HyperMesh中命令是"drag",允许用户选择节点并指定延伸方向和距离,从而快速创建新的网格。在ANSA中,延伸功能也有对应的操作,名为"Extrude",但从我个人使用情况来看,似乎不太符合我的期望。在ANSA中的延伸功能存在一个限制:用户必须选择的延伸方向的,是基于边(edge)或曲线(curve),并且所选择的路径还得在选择延伸边界的前方。这种约束就使用户操作起来相对繁琐,并且限制了延伸的灵活性。例如不能通过三点法向,两点矢量,正交矢量延伸,为了解决这个问题,我编写了一个二次开发程序。通过选择edge并指定通过一点,两点,三点的方式指定延伸方向和距离,就成功实现了类似于HyperMesh中"drag"功能的延伸操作。当然,我要强调的是,这个程序仅代表我个人对于ANSA软件的理解,并不意味着ANSA本身的不足。如果你对这个程序感兴趣,只需回复关键字"ANSA_extend",自动回复文件链接。###########################此外,当ANSA系列完结后,后台有不少的小伙伴在咨询ANSA二次开发相关的问题,那么就创建一个交流群吧。欢迎对ANSA感兴趣的小伙伴。与我们一起探讨技术难题,期待与你们的交流,共同进步。此外希望您对ANSA具有一定的开发能力或使用经验。以下问题任选四个,以尽量简短的话,后台回复您的思路即可。或其他能代表ANSA开发能力、ANSA使用能力的说明。ANSA交流群二次开发基础问题:1、如何通过一个单元获取单元所在面的单元对象。2、如何通过一个点抓取指定圆球半径内的节点对象。3、如何通过一个点与矢量,直径,抓取圆柱范围内的节点对象4、如何获取距离最近坐标点的节点对象。5、如何自动修复模型check>Mesh>crake错误。6、如何创建rbe2单元,并且主点在质心,而不是中心。7、如何对一组相连但无序的节点按照拓扑关系进行排序。8、当一个PART存在多个零件,如何按照PIDRigion的拓扑关系进行分组。来源:TodayCAEer

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