Abaqus二次开发系列:Python参数化建模快捷方式介绍

1.如何快速创建参数化脚本

我们在操作Abaqus/CAE时,所有动作指令都存储在工作目录下的abaqus.rpy文件中,abaqus.rpy是实时更新的,每操作一步就会更新一下,包括对视图的操作都会记录在内,因此可以直接修改abaqus.rpy文件。

另外,当保存自己创建的CAE模型时,与模型同名的会出现一个.jnl的文件,该文件记录的也是建模过程中的操作指令,不过不包含一些视图操作。代码更为简练,用户同样可以修改此文件来获取脚本。

例如,下面几句是rpy中获得的指令:

p = mdb.models['Model-1'].parts['Ball']

session.viewports['Viewport: 1'].setValues(displayedObject=p)

session.viewports['Viewport: 1'].partDisplay.setValues(sectionAssignments=ON,

   engineeringFeatures=ON)

session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues(

   referenceRepresentation=OFF)

p = mdb.models['Model-1'].parts['Bulk']

session.viewports['Viewport: 1'].setValues(displayedObject=p)

a = mdb.models['Model-1'].rootAssembly

session.viewports['Viewport: 1'].setValues(displayedObject=a)

session.viewports['Viewport: 1'].assemblyDisplay.setValues(

optimizationTasks=OFF, geometricRestrictions=OFF, stopConditions=OFF)

下面几句则是.jnl文件中的指令格式:

from part import *

from material import *

from section import *

from optimization import *

from assembly import *

from step import *

from interaction import *

from load import *

from mesh import *

from job import *

from sketch import *

from visualization import *

from connectorBehavior import *

mdb.jobs['Job-1']._Message(STARTED, {'phase': BATCHPRE_PHASE,

   'clientHost': 'taishanbuzuo-PC', 'handle': 0, 'jobName': 'Job-1'})

mdb.jobs['Job-1']._Message(ODB_FILE, {'phase': BATCHPRE_PHASE,

   'file': 'D:\\temp\\Job-1.odb', 'jobName': 'Job-1'})

mdb.jobs['Job-1']._Message(COMPLETED, {'phase': BATCHPRE_PHASE,

   'message': 'Analysis phase complete', 'jobName': 'Job-1'})

mdb.jobs['Job-1']._Message(STATUS, {'totalTime': 0.0, 'attempts': ' 1U',

   'timeIncrement': 0.0001, 'increment': 1, 'stepTime': 0.0, 'step': 1,

   'jobName': 'Job-1', 'severe': 1, 'iterations': 12, 'phase': STANDARD_PHASE,

   'equilibrium': 11})

Abaqus二次开发系列 (一)python参数化建模的快捷方法简介的图1Abaqus二次开发系列 (一)python参数化建模的快捷方法简介的图2



2.python脚本的格式控制


在修改由.rpy或者.jnl文件获取的代码时,经常会出现下面这种格式的语句:

p = mdb.models['Model-1'].parts['Part-1']

f = p.faces

faces = f.getSequenceFromMask(mask=('[#2 ]', ), )  

p.Set(faces=faces, name='Set-2')

上述语句中对于一个和特征的索引采用的是一种掩码的方式,即getSequenceFromMask()函数,我们是无法确定自己所需对象的掩码的。因此,就需要采用其他更直观的方式获取用户所需要的对象。下面将介绍如何转换.rpy文件以及.jnl文件的指令输出格式。

第一种,在CAE主视图下方的命令交互行输入以下指令:

>>>session.journalOptions.setValues(replayGeometry=COORDINATE,recoverGeometry= COORDINATE)

运行上述指令之后,在CAE中重复上述set的建立过程,将set命名为“set-3”,类型择Geometry,且仍旧选择同一平面作为该集合对象。操作完成后,重新查阅当前工作目录下的Abaqus.rpy文件,代码会变成如下形式:

p = mdb.models['Model-1'].parts['Part-1']

f = p.faces

faces = f.findAt(((20.211912, 3.333333, 20.0), ))

p.Set(faces=faces, name='Set-3')

此时对象faces的索引方式已经转换为findAt()函数配合点坐标的方式。

第二种:在Abaqus GUI命令行交互窗口输入以下指令:

>>>session.journalOptions.setValues(replayGeometry=INDEX,recoverGeometry=INDEX)

上述命令执行完后,再次重复建立一个集合,命名为“set-4”,集合类型和对象同上。再次查看工作目录下的Abaqus.rpy文件,其最新更新内容如下:

p = mdb.models['Model-1'].parts['Part-1']

f = p.faces

faces = f[1:2]                                    

p.Set(faces=faces, name='Set-4')

此时选取对象faces的索引方式已经转换为实际特征索引号的方式。按照同样的道理,读者可以建立相同的单元集合或者节点集合来检验上述区别,一般地,在Abaqus的GUI程序开发中,优先选择这两种对象索引方式,不推荐使用掩码的方式,该方式一般不具有通用性。

   

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空