Abaqus二次开发中,可以通过以下两种方法控制 控件 的使用状态。
(1)通过转换函数addTransition()方便地改变对话框中控件的使用状态,在某个转换机制中会将某关键字的值与指定值进行对比,如果两者匹配,则会向目标对象发送相应的状态控制消息。
(2)采用processUpdates()函数控制控件的使用状态。
addTransition(target, op, value, tgt, sel, ptr=None)
addTransition(keyword, op, value, tgt, sel, ptr=None)
小tips:op表示比较,大于小于等于之 类 的,后面会说。
上述两个函数中,当target.getValue() op value或者keyword.getValue() op value指令执行结果为真值时,会将消息地址传递给目标对象tgt(被控对象),从而控制被控对象的使用状态。


本程序将展示用复选框来控制文本框的使用状态,当复选框被勾选时,文本框 可编辑 ,反之,文本框不可编辑。


代码展示:
MKUINT(messageld, messageType)函数可以通过合并消息ID和消息类型来生成消息选择器。
界面文件【test_addTransition_DB.py】
- # -* - coding:UTF-8 -*-
- from abaqusConstants import *
- from abaqusGui import *
- from kernelAccess import mdb, session
- class test_addTransition_DB(AFXDataDialog):
- ID_Mybutton = AFXDataDialog.ID_LAST
- def __init__(self, form):
-
- AFXDataDialog.__init__(self, form, 'Test addTransition',
- self.OK|self.CANCEL, DIALOG_ACTIONS_SEPARATOR)
-
- okBtn = self.getActionButton(self.ID_CLICKED_OK)
- okBtn.setText('OK')
-
- GroupBox_1 = FXGroupBox(p=self, text='Test addTransition',
- opts=FRAME_GROOVE) #创建一个窗口
- self.yesno1=FXCheckButton(p=GroupBox_1,
- text='Cohesive Element', tgt=form.yesnoKw, sel=0) #创建一个复选框
- self.radius1=AFXTextField(p=GroupBox_1, ncols=10,
- labelText='radius:', tgt=form.radiusKw, sel=0) #创建一个文本框
-
- self.addTransition(form.yesnoKw, AFXTransition.EQ,
- False,self.radius1,
- MKUINT(FXWindow.ID_DISABLE, SEL_COMMAND), None)
- self.addTransition(form.yesnoKw, AFXTransition.EQ,
- True,self.radius1,
- MKUINT(FXWindow.ID_ENABLE, SEL_COMMAND), None)
python
注册文件【test_addTransition_plugin.py】
- # -* - coding:UTF-8 -*-
- from abaqusGui import *
- from abaqusConstants import ALL
- import osutils, os
-
- class test_addtransition_plugin(AFXForm):
- [
- ID_WARNING,
- ] = range(AFXForm.ID_LAST, AFXForm.ID_LAST+1)
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- def __init__(self, owner):
-
- # Construct the base class.
- #
- AFXForm.__init__(self, owner)
- FXMAPFUNC(self, SEL_COMMAND, self.ID_WARNING,
- test_addtransition_plugin.onCmdWarning)
- self.radioButtonGroups = {}
-
- self.cmd = AFXGuiCommand(mode=self, method='',
python