2019-1-30手把手教你怎么用AbaqusGUI二次开发攻略
2019年1月30日13:05:51
手把手教你怎么用Abaqus进行GUI二次开发攻略
1.前言:
最近研究了下GUI二次开发,做了如下几个插件,学到了一些东西特地就跟大家做个分享,其中插件注册到了顶部菜单栏,而不是plugin下面。接下来,循序渐进,带你ABAQUS二次开发从入门到‘放弃’教程
注:本文面向有一定ABAQUS基础的人员,下文中对ABAQUS的基本的,简单的操作,不作赘述,有问题,可以下方留言。
2.快速上手
本节目标:假设我们要生成一个的实体,自己给定构件名称长高宽,制作成插件:
- 启动ABAQUS软件,注意观察在ABAQUS的工作目录内有一个名为“abaqus.rpy”的文件将会生成,建议采用notepad++ 或者editplus软件打开,建议采用notepad++,因为是免费,不需要受到侵权困扰,记住,不要用电脑自带的文本编辑器打开!!!网上有很多盛传的ABAQUSreader等工具,也可以采用,但本人比较懒,满足需求就行,懒得折腾。
不知道自己工作目录在哪里的小伙伴,按照下图查找
打开文本后,发现如下代码,好,我们暂时不用管他
# `-*- coding: mbcs -*-`
`#`
# `Abaqus/CAE Release 6.14-4 replay file`
# `Internal Version: 2015_06_12-04.41.13 135079`
# `Run by yanguowei on Wed Jan 30 12:54:57 2019`
`#`
# `from driverUtils import executeOnCaeGraphicsStartup`
# `executeOnCaeGraphicsStartup()`
`#: Executing "onCaeGraphicsStartup()" in the site directory ...`
`**from abaqus import ***`
`**from abaqusConstants import** *`**
`session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=207.385406494141,`
`height=31.0)`
`session.viewports['Viewport: 1'].makeCurrent()`
`session.viewports['Viewport: 1'].maximize()`
**`from caeModules import *`
`from driverUtils import executeOnCaeStartup`**
`executeOnCaeStartup()`
2.在ABAQUS界面生成 10mm × 20mm × 60mm 的长方体,首先创建一个 10 × 20的草图,然后拉伸60mm,名称为默认“Part-1”,然后回到notedpad文本,出现如下
点“是”
#: The model "Model-1" has been created.
session.viewports['Viewport: 1'].setValues(displayedObject=None)
s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__',
sheetSize=200.0)
g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints
s.setPrimaryObject(option=STANDALONE)
session.viewports['Viewport: 1'].view.setValues(nearPlane=168.36,
farPlane=208.764, width=139.755, height=65.8, cameraPosition=(-5.77065,
3.49905, 188.562), cameraTarget=(-5.77065, 3.49905, 0))
s.rectangle(point1=(0.0, 0.0), point2=(10.0, 20.0))
p = mdb.models['Model-1'].Part(name='Part-1', dimensionality=THREE_D,
type=DEFORMABLE_BODY)
p = mdb.models['Model-1'].parts['Part-1']
p.BaseSolidExtrude(sketch=s, depth=60.0)
s.unsetPrimaryObject()
p = mdb.models['Model-1'].parts['Part-1']
session.viewports['Viewport: 1'].setValues(displayedObject=p)
del mdb.models['Model-1'].sketches['__profile__']
好,重头戏来了,大家寻找
#: A new model database has been created.
#: The model "Model-1" has been created.
session.viewports['Viewport: 1'].setValues(displayedObject=None)
s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__',
sheetSize=200.0)
g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints
s.setPrimaryObject(option=STANDALONE)
session.viewports['Viewport: 1'].view.setValues(nearPlane=168.36,
farPlane=208.764, width=139.755, height=65.8, cameraPosition=(-5.77065,
3.49905, 188.562), cameraTarget=(-5.77065, 3.49905, 0))
s.rectangle(point1=(0.0, 0.0), point2=(10.0, 20.0))
p = mdb.models['Model-1'].Part(name='Part-1', dimensionality=THREE_D,
type=DEFORMABLE_BODY)
p = mdb.models['Model-1'].parts['Part-1']
p.BaseSolidExtrude(sketch=s, depth=60.0)
s.unsetPrimaryObject()
p = mdb.models['Model-1'].parts['Part-1']
session.viewports['Viewport: 1'].setValues(displayedObject=p)
del mdb.models['Model-1'].sketches['__profile__']
我们容易找到以下三行代码
s.rectangle(point1=(0.0, 0.0), point2=(10.0, 20.0))
******************分割符********************
p = mdb.models['Model-1'].Part(name='Part-1', dimensionality=THREE_D,
type=DEFORMABLE_BODY)
******************分割符********************
p.BaseSolidExtrude(sketch=s, depth=60.0)
容易看到,分别对应4个参数值,分别对应我们刚刚建立模型时的,10, 20, 60, part-1,好了,我们另起新建一个Python脚本,初学者建议点击下文传送门(若有版权问题联系本人删除文章)
https://blog.****.net/pdcfighting/article/details/80297499
老鸟忽略~~~~
新建一个‘creat_part.py’文本,注意:不支持中文!!!
首先把下面两行敲进去,
from abaqus import *
from abaqusConstants import *
创建任何一个插件都必须有上面两行,切记
继续敲下面的
def creat_part(name,length, width, height):
分别对应构件名称,长、宽、高
接下来分为两个方案
如果你是初学者:
那么把刚刚的notepad文本中,全部复制----》粘贴,并且保证每行代码的前面有4个空格(Python基础语法是按照缩进来判断格式的,这里不赘述)
from abaqus import *
from abaqusConstants import *
def creat_part(name,length, width, height):
# -*- coding: mbcs -*-
#
# Abaqus/CAE Release 6.14-4 replay file
# Internal Version: 2015_06_12-04.41.13 135079
# Run by yanguowei on Wed Jan 30 12:54:57 2019
#
# from driverUtils import executeOnCaeGraphicsStartup
# executeOnCaeGraphicsStartup()
#: Executing "onCaeGraphicsStartup()" in the site directory ...
from abaqus import *
from abaqusConstants import *
session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=207.385406494141,
height=31.0)
session.viewports['Viewport: 1'].makeCurrent()
session.viewports['Viewport: 1'].maximize()
from caeModules import *
from driverUtils import executeOnCaeStartup
executeOnCaeStartup()
Mdb()
#: A new model database has been created.
#: The model "Model-1" has been created.
session.viewports['Viewport: 1'].setValues(displayedObject=None)
s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__',
sheetSize=200.0)
g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints
s.setPrimaryObject(option=STANDALONE)
session.viewports['Viewport: 1'].view.setValues(nearPlane=168.36,
farPlane=208.764, width=139.755, height=65.8,
cameraPosition=(-5.77065,
3.49905, 188.562),
cameraTarget=(-5.77065, 3.49905, 0))
s.rectangle(point1=(0.0, 0.0), point2=(10.0, 20.0))
p = mdb.models['Model-1'].Part(name='Part-1', dimensionality=THREE_D,
type=DEFORMABLE_BODY)
p = mdb.models['Model-1'].parts['Part-1']
p.BaseSolidExtrude(sketch=s, depth=60.0)
s.unsetPrimaryObject()
p = mdb.models['Model-1'].parts['Part-1']
session.viewports['Viewport: 1'].setValues(displayedObject=p)
del mdb.models['Model-1'].sketches['__profile__']
好,接下来将def creat_part(name,length, width, height):下面的
from abaqus import *
from abaqusConstants import *
两行代码删除,(当然不删也可以,这里只是简略起见)
接下来,对代码进行修改
s.rectangle(point1=(0.0, 0.0), point2=(10.0, 20.0))`enter code here`
修改为:
s.rectangle(point1=(0.0, 0.0), point2=(length, width))
将文本中的’Part-1’ 替换为 name,注意 name前后没有引号
p.BaseSolidExtrude(sketch=s, depth=60.0)
修改为:
p.BaseSolidExtrude(sketch=s, depth=height)
好了,保存这个.py文本,再次打开ABAQUS软件,
切换到“GUI”标签页
依次按照下图操作:
至此,插件开发完毕,我们做个测试,比如输入
随后点击“ok”或者“apply”,
随后我们可以看到出来这么个东西,大家自行测量长度,这里不赘述,
最后一步啦~~~~~~~~~别方
我们在这里输入
其他选项下一篇文章讲述
点击“OK”
好了,关闭ABAQUS软件。之后再打开
双击,一个小小小的插件出来了~~~~
大家随意使用吧~!!!
如果看官觉得我的文章写的还算不错,还请给个小捐赠
上述插件已经上传到我的github仓库
https://github.com/yechong316/ABAQUS-plugin.git