不重启abaqus,调试abaqus GUI界面,qycache开发环境的搭建

#搭建abaqus GHI脚本开发环境的方法
1、PrototypeToolsetGui.py
头部文件
import label_Directory_plugin
改变 初始化函数__init__中
self.form = test_plugin.Test_plugin(self)
改变onCmdForm()函数中
reload(test_plugin)
self.form = test_plugin.Test_plugin(self)
将test_plugin和Test_plugin改变为自己脚本中的plugin文件
2、改变自己脚本的注册文件plugin.py

#改变初始函数
def __init__(self, owner):
        self.cmd = AFXGuiCommand(mode=self, method='label_print',
        objectName='func1', registerQuery=False)
#在getFirstDialog中增加 reload(label_DirectoryDB)
def getFirstDialog(self):
	import label_DirectoryDB
	reload(label_DirectoryDB)
return label_DirectoryDB.Label_DirectoryDB(self)

3、注释Register the plug-in下面部分的代码

qycache脚本文件:
以下代码来源于abaqus官方文档
prototypeMainWindow.py

"""
This script will create the prototype application main window.
"""

from abaqusGui import *
from sessionGui import *
from canvasGui import CanvasToolsetGui
from viewManipGui import ViewManipToolsetGui
from prototypeToolsetGui import PrototypeToolsetGui


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

class PrototypeMainWindow(AFXMainWindow):

    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def __init__(self, app, windowTitle=''):

        # Construct the GUI infrastructure.
        #
        AFXMainWindow.__init__(self, app, windowTitle)
        
        # Register the "persistent" toolsets.
        #
        self.registerToolset(FileToolsetGui(), GUI_IN_MENUBAR|GUI_IN_TOOLBAR)
        self.registerToolset(ModelToolsetGui(), GUI_IN_MENUBAR)
        self.registerToolset(CanvasToolsetGui(), GUI_IN_MENUBAR)
        self.registerToolset(ViewManipToolsetGui(), GUI_IN_MENUBAR|GUI_IN_TOOLBAR)
        self.registerToolset(PrototypeToolsetGui(), GUI_IN_MENUBAR|GUI_IN_TOOLBOX)

        self.registerHelpToolset(HelpToolsetGui(), GUI_IN_MENUBAR|GUI_IN_TOOLBAR)

        # Register modules.
        #
        self.registerModule('Part',          'Part')
        self.registerModule('Property',      'Property')
        self.registerModule('Assembly',      'Assembly')
        self.registerModule('Step',          'Step')
        self.registerModule('Interaction',   'Interaction')
        self.registerModule('Load',          'Load')
        self.registerModule('Mesh',          'Mesh')
        self.registerModule('Job',           'Job')
        self.registerModule('Visualization', 'Visualization')
        self.registerModule('Sketch',        'Sketch')

prototypeApp.py

"""
This script will create the prototype application.
"""

from abaqusGui import *
import sys
from prototypeMainWindow import PrototypeMainWindow

# Initialize the application object.
#
app = AFXApp('ABAQUS/CAE', 'ABAQUS, Inc.')
app.init(sys.argv)

# Construct the main window.
#
PrototypeMainWindow(app)

# Create the application and run it.
#
app.create()
app.run()

applcons.py

"""
This module defines icons used for the prototype application.
"""

dialogIconData = [
"24 24 2 1",
"  c navy",
"X c None s None",
"XXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXX",
"XXX            XXXXXXXXX",
"XXX              XXXXXXX",
"XXX               XXXXXX",
"XXX    XXXXXX      XXXXX",
"XXX    XXXXXXX      XXXX",
"XXX    XXXXXXXX     XXXX",
"XXX    XXXXXXXX     XXXX",
"XXX    XXXXXXXXX     XXX",
"XXX    XXXXXXXXX     XXX",
"XXX    XXXXXXXXX     XXX",
"XXX    XXXXXXXXX     XXX",
"XXX    XXXXXXXXX     XXX",
"XXX    XXXXXXXXX     XXX",
"XXX    XXXXXXXX     XXXX",
"XXX    XXXXXXXX     XXXX",
"XXX    XXXXXXX      XXXX",
"XXX    XXXXXXX     XXXXX",
"XXX               XXXXXX",
"XXX              XXXXXXX",
"XXX            XXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXX",
]

formIconData = [
"24 24 2 1",
"  c navy",
"X c None s None",
"XXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXX",
"XXXX               XXXXX",
"XXXX               XXXXX",
"XXXX               XXXXX",
"XXXX     XXXXXXXXXXXXXXX",
"XXXX     XXXXXXXXXXXXXXX",
"XXXX     XXXXXXXXXXXXXXX",
"XXXX     XXXXXXXXXXXXXXX",
"XXXX     XXXXXXXXXXXXXXX",
"XXXX             XXXXXXX",
"XXXX             XXXXXXX",
"XXXX             XXXXXXX",
"XXXX     XXXXXXXXXXXXXXX",
"XXXX     XXXXXXXXXXXXXXX",
"XXXX     XXXXXXXXXXXXXXX",
"XXXX     XXXXXXXXXXXXXXX",
"XXXX     XXXXXXXXXXXXXXX",
"XXXX     XXXXXXXXXXXXXXX",
"XXXX     XXXXXXXXXXXXXXX",
"XXXX     XXXXXXXXXXXXXXX",
"XXXX     XXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXX",
]

prototypeToolsetGui.type

from abaqusGui import *
from appIcons import *
import testForm


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

class PrototypeToolsetGui(AFXToolsetGui):

    [
        ID_FORM,
    ] = range(AFXToolsetGui.ID_LAST, AFXToolsetGui.ID_LAST+1)
    
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def __init__(self):

        # Construct the base class.
        #
        AFXToolsetGui.__init__(self, 'Test Toolset')
        
        FXMAPFUNC(self, SEL_COMMAND, self.ID_FORM, PrototypeToolsetGui.onCmdForm)
      
        self.form = testForm.TestForm(self)
        
        # Toolbox buttons
        #
        group = AFXToolboxGroup(self)
        formIcon = FXXPMIcon(getAFXApp(), formIconData)
        AFXToolButton(group, '\tReload Form', formIcon, self,
            self.ID_FORM)
        dialogIcon = FXXPMIcon(getAFXApp(), dialogIconData)
        self.dialogBtn = AFXToolButton(group, '\tPost Dialog', dialogIcon, self.form, 
            AFXMode.ID_ACTIVATE)

    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def onCmdForm(self, sender, sel, ptr):

        # Reload the form module and reconstruct the form so that any
        # changes to that module are updated.
        #
        reload(testForm)
        self.form = testForm.TestForm(self)
        self.dialogBtn.setTarget(self.form)
        getAFXApp().getAFXMainWindow().writeToMessageArea(
            'The form has been reloaded.')
        
        return 1

testForm.py

from abaqusGui import *
import testDB
# Note: The above form of the import statement is used for the prototype
# application to allow the module to be reloaded while the application is
# still running. In a non-prototype application you would use the form:
# from myDB import MyDB


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

class TestForm(AFXForm):

    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def __init__(self, owner):

        # Construct the base class.
        #
        AFXForm.__init__(self, owner)
                
        # Command
        #
        self.cmd = AFXGuiCommand(self, 'myCommand', 'myObject')
        
        self.kw1 = AFXStringKeyword(self.cmd, 'kw1', TRUE)
        self.kw2 = AFXIntKeyword(self.cmd, 'kw2', TRUE)
        self.kw3 = AFXFloatKeyword(self.cmd, 'kw3', TRUE)
        
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def getFirstDialog(self):

        # Note: The style below is used for the prototype application to 
        # allow the dialog to be reloaded while the application is
        # still running. In a non-prototype application you would use:
        #
        # return MyDB(self)
        
        # Reload the dialog module so that any changes to the dialog 
        # are updated.
        #
        reload(testDB)
        return testDB.TestDB(self)

    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def issueCommands(self):
    
        # Since this is a prototype application, just write the command to
        # the Message Area so it can be visually verified. If you have 
        # defined a "real" command, then you can comment out this method to
        # have the command issued to the kernel.
        #
        # In a non-prototype application you normally do not need to write
        # the issueCommands() method.
        #
        cmds = self.getCommandString()
        getAFXApp().getAFXMainWindow().writeToMessageArea(cmds)
        self.deactivateIfNeeded()
        return TRUE
      

testDB.py

from abaqusGui import *


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

class TestDB(AFXDataDialog):

    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def __init__(self, form):

        # Construct the base class.
        #
        AFXDataDialog.__init__(self, form, 'Test Dialog',
            self.OK|self.CANCEL, DECOR_RESIZE|DIALOG_ACTIONS_SEPARATOR)
        
        # Create the contents of the dialog
        #
        va = AFXVerticalAligner(self)
        AFXTextField(va, 10, 'String:', form.kw1, 0)
        AFXTextField(va, 10, 'Integer:', form.kw2, 0)
        AFXTextField(va, 10, 'Float:', form.kw3, 0)

    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    def show(self):
        
        # Note: This method is only necessary because the prototype
        # application allows changes to be made in the dialog code and
        # reloaded while the application is still running. Normally you
        # would not need to have a show() method in your dialog.
        
        # Resize the dialog to its default dimensions to account for
        # any widget changes that may have been made.
        #
        self.resize(self.getDefaultWidth(), self.getDefaultHeight())
        AFXDataDialog.show(self)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值