之前发的ANSA二次开发创建螺栓和Box(代码篇)有很多小伙伴留言,其中有人问怎么没有预紧力,螺栓不是这么建模的。其实螺栓的建模方式实在太多,甚至每个座椅厂都是不一样的,然后每家座椅厂都有自己的建模道理。就是谁也不服谁,都说自己对标过,然后问能不能给证明的资料,就都说这是机密。主机厂也就不管了,让我说整这么复杂干嘛,我就觉得rbe2挺好的(不是)。回归正题,在我们要二次开发前,必然是要对自己开发的功能是非常熟悉的,所以我们必须自己手动建立一遍螺栓预紧力。点击后会让你建立一个beam的SET和预紧力的加载曲线,如下图:所以我们二次开发的思路就是创建一个SET,然后把我们的BEAM添加到这个SET里,然后再创建一个Curve,这是我们的预紧力加载曲线,最后创建预紧力,上面创建的SETID号和LCID号填进去就可以了,就是这么简单。
beam=base.CreateEntity(constants.LSDYNA,'ELEMENT_BEAM_ELFORM_9',val1)
#创建梁单元的预紧力
s1_id=[]
SET1S=base.CollectEntities(constants.LSDYNA,None,'SET')
SID1=SET1S[-1]._id+1
beam_set=base.CreateEntity(constants.LSDYNA,'SET',{'SID':SID1})
base.AddToSet(beam_set,beam)
这里就是先收集SET,然后得到SET的最大的ID号,再把前面创建的Beam添加到SET里。
#创建预紧力加载曲线
deck=constants.LSDYNA
curves= base.CollectEntities(deck, None, 'DEFINE_CURVE')
curve_num = len(curves)
print(curve_num)
curves_of_table = []
#Create individual curves
curve1 = base.CreateLoadCurve("DEFINE_CURVE", {"Name": "2000N","SFO": "1",'LCID':1+curve_num})
val = ((0,0.),
(0.002,2000),
(1,2000))
base.SetLoadCurveData(curve1, val)
base.CreateEntity(deck,'INITIAL_AXIAL_FORCE_BEAM',{"BSID":SID1,"Name": "2000N",'LCID':1+curve_num})
这里也是先收集曲线的ID,得到最大的ID号,后创建曲线,这里创建了2000N的预紧力,大家可以随意修改数值,最后创建我们的螺栓预紧力。是不是非常简单,大家有关二次开发的问题都可以来知识星球问我,还能带着大家一起赚点小钱。