找回密码
 注册
Simdroid-非首页
查看: 247|回复: 4

[二次开发] 求助:ABAQUS GUI问题

[复制链接]
发表于 2009-7-9 10:25:47 | 显示全部楼层 |阅读模式 来自 江苏南京
因为在property中的section步中需要用到之前定义的material,所以需要在sectionDB中设置一个AFXCombobox,下拉框内容为之前输入的material名称,但是当我编写gui时,出现一个问题,到某一行后无论写任何东西,编译的时候都显示出错,请教高手到底是什么错误,程序如下:
from abaqusGui import *

###########################################################################
# Class definition
###########################################################################
class SectionDB(AFXDataDialog):
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [
        ID_MATERIAL,
    ] = range(AFXDataDialog.ID_LAST, AFXDataDialog.ID_LAST+1)
   
    def __init__(self, form):
        
        self.form = form
        
        # Construct the base class.
        #
        AFXDataDialog.__init__(self, form, 'Create Section', self.OK|self.CANCEL)
            
        FXMAPFUNC(self, SEL_COMMAND, self.ID_MATERIAL, SectionDB.onMaterialsChanged)
                     
        hf = FXHorizontalFrame(self, LAYOUT_FILL_X, 0,0,0,0, 0,0,0,0)
        
        gb = FXGroupBox(hf, 'Parameters', LAYOUT_FILL_Y|FRAME_GROOVE)
        va = AFXVerticalAligner(gb)
        AFXTextField(va, 12, 'Name:', form.nameKw, 0)
        AFXTextField(va, 12, 'Radius:', form.radiusKw, 0)
        AFXTextField(va, 12, 'Thickness:', form.thicknessKw, 0)
        comboBox = AFXComboBox(va, 0,3, 'Material:')
        self.onMaterialsChanged(self.ID_MATERIAL, self, self)
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
    def onMaterialsChanged(self, sender, sel, ptr):        
        from kernelAccess import mdb
        mats=mdb.models['Model-1'].materials.keys()
        if len(mats)>0:
           for materialName in materialsel:
               comboBox.appendItem(materialName)

就是写到上面mats=mdb.models['Model-1'].materials.keys()这一行的下一行时,无论写什么东西,在abaqus命令行运行时都显示有syntaxError:invalid syntax,请大牛帮忙解决下
发表于 2009-7-10 13:59:42 | 显示全部楼层 来自 北京
Simdroid开发平台
如果连print语句也不行的话,建议楼主将这两句重新写一下,如果是复制粘贴的话行间有可能存在看不见的字符。
应该将comboBox改为self.comboBox,方便在子函数中使用。
for materialName in materialsel:中的materialsel似乎应该改为mats,这样才能将model-1中定义的材料添加到self.comboBox.
另外,根据楼主的使用目的,没有指定ID_MATERIAL的关联对象,仅在sectionDB初始化时调用onMaterialChanged函数,而不是在每次materials发生改变时都调用,这样就没有必要使用FXMAPFUNC,直接定义子函数并调用就可以了。
如此,FXMAPFUNC这句可以删掉,self.onMaterialsChanged这句改为self.onMaterialsChanged(),def onMaterialsChanged(self, sender, sel, ptr)定义可以改为def onMaterialsChanged(self),也没有必要定义ID_MATERIAL。

不值能否解决你的问题。
回复 不支持

使用道具 举报

发表于 2009-7-10 14:00:15 | 显示全部楼层 来自 北京
如果连print语句也不行的话,建议楼主将这两句重新写一下,如果是复制粘贴的话行间有可能存在看不见的字符。
应该将comboBox改为self.comboBox,方便在子函数中使用。
for materialName in materialsel:中的materialsel似乎应该改为mats,这样才能将model-1中定义的材料添加到self.comboBox.
另外,根据楼主的使用目的,没有指定ID_MATERIAL的关联对象,仅在sectionDB初始化时调用onMaterialChanged函数,而不是在每次materials发生改变时都调用,这样就没有必要使用FXMAPFUNC,直接定义子函数并调用就可以了。
如此,FXMAPFUNC这句可以删掉,self.onMaterialsChanged这句改为self.onMaterialsChanged(),def onMaterialsChanged(self, sender, sel, ptr)定义可以改为def onMaterialsChanged(self),也没有必要定义ID_MATERIAL。

不值能否解决你的问题。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2009-7-10 15:15:18 | 显示全部楼层 来自 江苏南京
十分感谢,你说的地方我都已改正,效果也调了出来,只是一开始改的时候都不知道为什么要这么改,你说了稍微明白了一点,有问题再请教
回复 不支持

使用道具 举报

发表于 2010-7-16 10:13:36 | 显示全部楼层 来自 江苏南京
牛人啊!!!!!!
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-28 17:03 , Processed in 0.048402 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表