Abaqus GUI程序开发之常用控件使用方法(二十二):在自定义窗口中调用Abaqus/CAE内嵌功能组件

Abaqus/CAE中已经集成了较为丰富的功能组件,在编写GUI程序时,没有必要去做一些重复性的开发,在需要使用Abaqus/CAE内嵌的功能组件时,可以在自己的GUI程序中直接调用。例如,直接调用创建零件、创建材料或者划分网格的功能等。


Abaqus/CAE内嵌功能的实现需要借助mainWindow对象的getTargetFromFunction和getSelectorFromFunction两个函数命令,两个函数命令的作用是分别获取Abaqus/CAE内嵌功能的目标和选择器。

实例展示

直接点击按钮,调用Abaqus/CAE内部的东西:

 

 

代码展示

图形界面文件【testcheckbuttonDB.py】

# -* - coding:UTF-8 -*- 
from abaqusConstants import *
from abaqusGui import *
from kernelAccess import mdb, session
import os
thisPath = os.path.abspath(__file__)
thisDir = os.path.dirname(thisPath)
class testcheckbuttonDB(AFXDataDialog):
    def __init__(self, form):
        AFXDataDialog.__init__(self, form, 'Test Check Button',
            self.OK|self.CANCEL, DIALOG_ACTIONS_SEPARATOR)
        okBtn = self.getActionButton(self.ID_CLICKED_OK)
        okBtn.setText('OK')   
        
        GroupBox_1 = FXGroupBox(p=self, text='Element type', opts=FRAME_GROOVE)
        FXCheckButton(p=GroupBox_1, text='SOLID\t选择实体单元', tgt=form.ele_solidKw, sel=0)
        FXCheckButton(p=GroupBox_1, text='SEHLL\t选择壳单元', tgt=form.ele_shellKw, sel=0)

        mainWindow = getAFXApp().getAFXMainWindow()
        #创建材料,指定目标和选择器
        target = mainWindow.getTargetFromFunction('Material->Create')
        selector = mainWindow.getSelectorFromFunction('Material->Create')
        FXButton(GroupBox_1, '创建材料', tgt=target, sel=selector )  
        #创建属性,指定目标和选择器
        target = mainWindow.getTargetFromFunction('Section->Create')
        selector = mainWindow.getSelectorFromFunction('Section->Create')
        FXButton(GroupBox_1, '创建属性', tgt=target, sel=selector )

注册文件【testcheckbutton_plugin.py】

from abaqusGui import *
from abaqusConstants import ALL
import osutils, os


###########################################################################
# Class definition
###########################################################################

class testcheckbutton_plugin(AFXForm):

    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def __init__(self, owner):
        
        # Construct the base class.
        #
        AFXForm.__init__(self, owner)
        self.radioButtonGroups = {}

        self.cmd = AFXGuiCommand(mode=self, method='',
            objectName='', registerQuery=False)
        pickedDefault = ''
        self.ele_solidKw = AFXBoolKeyword(self.cmd, 'ele_solid', 
            AFXBoolKeyword.TRUE_FALSE, True, True)
        self.ele_shellKw = AFXBoolKeyword(self.cmd, 'ele_shell', 
            AFXBoolKeyword.TRUE_FALSE, True, False)

    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def getFirstDialog(self):

        import testcheckbuttonDB
        return testcheckbuttonDB.testcheckbuttonDB(self)

    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def doCustomChecks(self):

        # Try to set the appropriate radio button on. If the user did
        # not specify any buttons to be on, do nothing.
        #
        for kw1,kw2,d in self.radioButtonGroups.values():
            try:
                value = d[ kw1.getValue() ]
                kw2.setValue(value)
            except:
                pass
        return True

    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def okToCancel(self):

        # No need to close the dialog when a file operation (such
        # as New or Open) or model change is executed.
        #
        return False

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Register the plug-in
#
thisPath = os.path.abspath(__file__)
thisDir = os.path.dirname(thisPath)

toolset = getAFXApp().getAFXMainWindow().getPluginToolset()
toolset.registerGuiMenuButton(
    buttonText='test checkbutton', 
    object=testcheckbutton_plugin(toolset),
    messageId=AFXMode.ID_ACTIVATE,
    icon=None,
    kernelInitString='',
    applicableModules=ALL,
    version='N/A',
    author='N/A',
    description='N/A',
    helpUrl='N/A'
)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
0. ABAQUS入门资料 4 1. 论坛提问要诀 5 2. 故障诊断基本方法 5 3. 约束刚体位移 / NUMERICAL SINGULARITY 6 4.过约束(Overconstraint) 8 5.其他常见error和warning信息 9 6.ABAQUS无法正常运行(安装、License、环境变量) 13 6.1 ABAQUS安装方法 13 6.2 ABAQUS显示异常(无法显示栅格、显卡冲突、更改界面颜色) 22 6.3 Document无法搜索 23 6.4 磁盘空间不足 23 6.5 Linux系统 24 6.6 死机后恢复模型 24 7.弹塑性分析 25 7.1 塑性问题不收敛的常见现象 25 7.2 接触问题和塑性材料不要用二阶单元 25 7.3 不要在塑性材料上施加点载荷 26 7.4 塑性材料参数 26 7.5 屈服准则 31 7.6 后处理 / 判断材料是否屈服 33 7.7 切削 34 7.8 材料非线性实验与FEM的比较 35 8. 接触分析 36 8.0 接触分析的基本概念 36 8.1 接触分析不收敛的常见现象和解决方法 37 8.2 接触面上的网格密度 38 8.3 接触面的定义 40 8.4 过盈接触 41 8.5 管土/桩土接触 43 8.6 板料成形的接触问题 49 8.7 凹坑成型的接触问题 54 8.8 刚体穿透 57 8.9 接触力 57 8.10 Explicit的接触问题 58 8.11 改变接触状态 60 8.12 其他与接触有关的Error和Warning信息 62 9. 各个量的单位 62 9.1 各个量的单位要相互一致 63 9.2 时间/增量步的含义 65 10.导入 / 修改 / 求解inp文件 66 10.1 把inp文件导入ABAQUS/CAE 66 10.2 运行inp文件 67 10.3 修改inp文件 68 11.用户子程序和FORTRAN 71 11.1 运行用户子程序时出错 / FORTRAN版本 71 11.2 用户子程序入门资料 72 11.3 用户材料UMAT 74 12.创建/修改part 75 13.在Assembly定位 76 14.划分网格 77 14.1 提示信息: 严重扭曲的单元 / 单元体积为0 77 14.2 划分网格和布置种子的技巧 79 14.3 网格重划 82 14.4 从orphan mesh抽出几何 82 15.选择单元类型 83 16.截面属性和材料 85 16.1 定义截面属性 85 16.2 用OFFSET参数偏置shell的性面 86 16.3 材料属性 86 17.载荷 / 速度场 88 17.1 集力 88 17.2 线载荷 90 17.3 面载荷 90 17.4 Body Force / Gravity 92 17.5 随时间变化的载荷 / Amplitude 92 17.6 在实体单元上施加弯矩 / 旋转速度 96 18.边界条件 100 19.定义Set / 选取模型的局部 102 20.弹簧 103 21.约束(coupling, tie) 104 22.后处理 106 22.1 显示局部坐标系上的结果 106 22.2 绘制曲线(X–Y data) 106 22.3 field output / history output 108 22.4 显示结果 108 22.5 shell和beam的应力应变结果 113 23.多步骤分析 114 23.1 重启动分析(Restart) 114 23.2 子模型(Submodel) 115 23.3 用 *import 把计算结果传递到下一个过程 116 24.岩土分析 116 24.0 岩土分析入门资料 116 24.1 初始地应力平衡 118 24.2 基坑开挖 122 24.3 钢筋混凝土(Rebar Layer和Embedded Element) 122 24.4 实体单元的截面力/弯矩/转角 125 24.5 软土固结 127 24.6 无限元 128 24.7 岩土本构模型 129 25.热分析 129 26.动态分析 135 26.0 静态分析还是动态分析 135 26.1 Explicit分析 138 26.2 分析结果与amplitude不一致 139 26.3 固有频率 140 26.4 *DYNAMIC分析 141 26.5 动态分析还是静态分析 141 27.屈曲分析 142 28.材料失效破坏 / 裂纹 144 28.1 材料失效 144 28.2 裂纹 145 28.3 Cohesive单元 147 29.连接单元(CONNECTOR) 149 30.惯性释放(INERTIA RELIEF) 149 31.非线性问题的算法 149 32.ABAQUS和其它软件的比较 150 33.使用ABAQUS帮助手册 151 34.论坛的“全文搜索”功能 152 35.关于找抢手 152
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是刃小木啦~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值