当前位置:服务支持 >  软件文章 >  基于python的abaqus模型拆分方法与技巧

基于python的abaqus模型拆分方法与技巧

阅读数 3
点赞 0
article_banner

更新:

最近工作量比较大,逐渐意识到之前用.py文件进行宏录制的局限性,对这个程序进行了一部分改进,使它能够更方便的调用。之前的程序是将拆分间距和model名、part名确定的,每次调用都要更改里面的数据,我参照了知乎一位大佬的方法(链接https://zhuanlan.zhihu.com/p/84749135),做了如下改进:

from abaqus import *
from abaqusConstants import *
from caeModules import *

viewportName = session.currentViewportName#获取当前模型名
cobject=session.viewports[viewportName].displayedObject#cobject实际上是一个字典,里面包括当前模型的全部信息
modelNameDE=cobject.modelName#利用modelname函数将cobject中的模型名提取出来
# partNameDE=cobject.name #应用part的方法和model方法类似
# print(modelNameDE)
# print(partNameDE)
modelname=getInput('Are U sure that it is this model',modelNameDE)
number=getInput('what is the number of OCA','0.05')#getinput函数弹出一个对话框,给对话框提供一个默认值,可以简化操作

from driverUtils import executeOnCaeStartup
p = mdb.models[modelNameDE].parts['pad']
f, e, d = p.faces, p.edges, p.datums
t = p.MakeSketchTransform(sketchPlane=f[0], sketchPlaneSide=SIDE1, origin=(
    -124.940785, -0.053036, 0.0))
s = mdb.models[modelNameDE].ConstrainedSketch(name='__profile__',
    sheetSize=588.26, gridSpacing=14.7, transform=t)
g, v, d1, c = s.geometry, s.vertices, s.dimensions, s.constraints
s.setPrimaryObject(option=SUPERIMPOSE)
p = mdb.models[modelNameDE].parts['pad']
p.projectReferencesOntoSketch(sketch=s, filter=COPLANAR_EDGES)
session.viewports['Viewport: 1'].view.setValues(nearPlane=426.19, 
    farPlane=750.334, width=2.07316, height=0.843045, cameraPosition=(20.0515, 
    -0.17324, 588.262), cameraTarget=(20.0515, -0.17324, 0))
s.offset(distance=0.03, objectList=(g[5], g[4]), side=LEFT)
s.offset(distance=0.055, objectList=(g[5], g[4]), side=LEFT)
s.offset(distance=0.055+float(number), objectList=(g[5], g[4]), side=LEFT)
s.offset(distance=0.077+float(number), objectList=(g[5], g[4]), side=LEFT)
s.offset(distance=0.09+float(number), objectList=(g[5], g[4]), side=LEFT)
s.offset(distance=0.09+float(number)+float(number), objectList=(g[5], g[4]), side=LEFT)
s.offset(distance=0.12+float(number)+float(number), objectList=(g[5], g[4]), side=LEFT)
s.offset(distance=0.12+float(number)+float(number)+float(number), objectList=(g[5], g[4]), side=LEFT)
p = mdb.models[modelNameDE].parts['pad']
f = p.faces
pickedFaces = f.getSequenceFromMask(mask=('[#1 ]', ), )
e1, d2 = p.edges, p.datums
p.PartitionFaceBySketch(faces=pickedFaces, sketch=s)
s.unsetPrimaryObject()

基于python对abaqus模型进行拆分的图1~DECOZAZ(LMW)TC3QM6JN_M.png

基于python对abaqus模型进行拆分的图2

----------------------分割线-----------------------------

在abaqus实际使用中,经常需要大量的重复操作,比如将abaqus中的模型拆分成十几个区域,此时在cae中操作很复杂,可以通过python二次开发进行批量操作。

基于python对abaqus模型进行拆分的图31609990040(1).jpg

rom abaqus import *
from abaqusConstants import *
from caeModules import *
from driverUtils import executeOnCaeStartup

#THERE IS A TEMP
f, e, d = p.faces, p.edges, p.datums
t = p.MakeSketchTransform(sketchPlane=f[0], sketchPlaneSide=SIDE1, origin=(
    -124.940785, -0.053036, 0.0))
s = mdb.models[''].ConstrainedSketch(name='__profile__', 
    sheetSize=588.26, gridSpacing=14.7, transform=t)
g, v, d1, c = s.geometry, s.vertices, s.dimensions, s.constraints
s.setPrimaryObject(option=SUPERIMPOSE)

##THERE IS A TEMP
p.projectReferencesOntoSketch(sketch=s, filter=COPLANAR_EDGES)
s.offset(distance=0.025, objectList=(g[4], g[3]), side=LEFT)
s.offset(distance=0.075, objectList=(g[4], g[3]), side=LEFT)
s.offset(distance=0.110, objectList=(g[4], g[3]), side=LEFT)
s.offset(distance=0.160, objectList=(g[4], g[3]), side=LEFT)
s.offset(distance=0.190, objectList=(g[4], g[3]), side=LEFT)
s.offset(distance=0.240, objectList=(g[4], g[3]), side=LEFT)
p = mdb.models['oca_50um_30mm'].parts['pad']
f = p.faces
pickedFaces = f.getSequenceFromMask(mask=('[#1 ]', ), )
e1, d2 = p.edges, p.datums
p.PartitionFaceBySketch(faces=pickedFaces, sketch=s)
s.unsetPrimaryObject()

黑体为需要修改的语句

上图是一个拆分的简单例子,核心思路是:利用草图拆分功能,将底边向上偏置,进行模型的划分。python的二次开发实际上就是批量操作,具体操作是,首先通过abaqus.py文件,获取模型的底边数组为g[3],g[4],然后进行偏置,这样做的优点是可以一键生成拆分,而且修改方便。不过这个方法只适用于简单模型,复杂模型的拆分并不适用。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
相关文章
QR Code
微信扫一扫,欢迎咨询~

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

* 公司名称:

姓名不为空

手机不正确

公司不为空