当前网络上关于Ansys Mechanical 自动化的中文资料很少
但是不得不说Ansys给的帮助文档是真的不错,在Mechanical的Automation界面就可以点进帮助页面了
然后完成了我工作中的一个小流程,自动化模型更新并分析出图
发文记录一下要点
模型更新的途径
使用UpdateGeometryFromSource()方法与源文件重新建立链接,这样你提供的源文件更改了,这里的模型也就更改了。目前不确定这是标准操作,但是试了好多种方法,就这个成功了。
UpdateGeometryFromSource()不会重新生成Tree,但是有时候Mesh会没掉,目前不知道为什么
geometry = Model.Geometry
# 在WorkBench里链接Model文件,通过更新实现自动化输入
geometry.UpdateGeometryFromSource()
# 获取模型Part
part1 = geometry.Children[0]
# 要重新给材质,有时候不用,暂时不知道为什么
part1.Material='Structural Steel'
#生成网格,一般先生成网格再添加约束,不知道为什么
Model.Mesh.GenerateMesh()
添加约束并自动找到需要添加的面
这里我用的是网格的重心坐标,定义最低的面为固定支撑,最高的面添加压力。
这要求我的模型非常简单,我想进行的实验就是比较简单的,所以目前可行。
添加约束需要用选择管理器API确定约束位置
body1 = part1.Children[0]
minz,maxz=float("+inf"),float("-inf")
mini,maxi=0,0
for i,face in enumerate(body1.GetGeoBody().Faces):
if face.Centroid[2]<minz:
minz=face.Centroid[2]
mini=i
if face.Centroid[2]>maxz:
maxz=face.Centroid[2]
maxi=i
face1 = body1.GetGeoBody().Faces[mini] # Get the first face of the body.
face2 = body1.GetGeoBody().Faces[maxz]
selection = ExtAPI.SelectionManager.CreateSelectionInfo(SelectionTypeEnum.GeometryEntities)
selection.Entities = [face1]
pressure = Model.Analyses[0].AddPressure()
pressure.Location = selection
pressure.Magnitude.Inputs[0].DiscreteValues = [Quantity("0 [s]"), Quantity("1 [s]")]
pressure.Magnitude.Output.DiscreteValues = [Quantity("10 [Pa]"), Quantity("20 [Pa]")]
fix_supp = Model.Analyses[0].AddFixedSupport()
selection2 = ExtAPI.SelectionManager.CreateSelectionInfo(SelectionTypeEnum.GeometryEntities)
selection2.Entities = [face2]
fix_supp.Location = selection
求解与保存
模型-->网格-->-约束->求解
一般是这么个流程,我昨天才学,也不太清楚到底是不是
反正给个命令
然后用查找器把树里面预设好的分析图筛选出来
激活-->输出图像-->就好了
Model.Solve()
results = DataModel.GetObjectsByType(DataModelObjectCategory.Result)
result=results[0]
result.Activate()
Graphics.ExportImage("D:\\images\\" + result.Name + ".png")