首先,我们一起考虑如下开发场景:在ACT向导的建模阶段,将三种结构形式:Cube、Cylinder和Sphere的创建流程放在一个步骤中。
其中,Cube创建需要输入Length,Cylinder创建需要输入Radius和Height,Sphere创建需要输入Radius。
那么我们需要定义一个 select 下拉框: Primitive 和三个 float 属性输入控件: Length 、 Radius 和 Height 。 图 1 控件全显示 如上所示,我们如果将所有属性控件都显示在界面上,就会显得很臃肿而且不友好,不够优雅和智能。 那么如何实现如下的控件的动态显示效果呢?即根据Primitive下拉框选择的值,改变Length、Radius和Height三个属性控件的可见性。 图 2 控件动态显示 接下来,小田老师就给大家分享在ACT向导开发中,实现属性控件动态显示的两种方法:XML文件定义和回调函数实现。 方法1:XML文件定义 在ACT帮助文档下《ACT XML Reference:ACT XML Tags》中,我们找到标签,会发现一个attribute:visibleon=,说明如下: 图 3 visibleon 标签属性 可以按照如下步骤实现: (1)将Primitive定义为<propertygroup>,并给定“select”的control类型,通过options给定下拉选项值; (2)定义Length、Radius和Height三个<property>控件,并给定“float”的control类型,放在Primitive属性组下; (3)给定三个属性控件的visibleon属性值为Primitive下拉框中选项值,多个值用“|”隔开。对应的XML结构如下: 图 4 XML 文件代码 方法2:回调函数实现 在ACT向导中,每个属性控件都有对应的回调函数(callbacks),用于处理与用户输入间的界面交互。 我们可以为Primitive属性定义合适的回调函数,然后去更改其他float控件中与可见性相关的属性值。 在ACT帮助文档中,我们发现可以使用< onactivate> 回调函数,而且在通过修改控件的 Visible 属性值,可以更改其可见性。 图 5 onactivate 回调函数 可以按照如下步骤实现: ( 1 )将 Primitive 定义为 ,并给定“ select ”的 control 类型,通过 options 给定下拉选项值; ( 2 )为 Primitive 属性添加回调函数 <onactivate> ,给定方法 dynamicVisibility (函数名任取); ( 3 )定义 Length 、 Radius 和 Height 三个 <property> 控件,并给定“ float ”的 control 类型; 图 6 XML 文件回调函数定义 ( 4 )在与 XML 关联的 IronPython 文件中实现回调函数 dynamicVisibility :通过判断 Primitive 当前属性值 (Value) ,然后修改相应 float 控件的可见性 (Visible) 属性;代码如下: 图 7 回调函数方法实现 两种方法对比 两者方法没有孰好孰坏,只是使用场景不一样: XML定义方式更简单上手,如果只需要更改属性控件显示时,推荐使用。 回调函数方法更强大,不仅可以动态显示控件,还能更改帮助内容、与图形窗口交互等。 而且二者可以配合使用,大家可以根据使用场景灵活选用。 最后,在后期文章更新中,我会分享ANSYS ACT开发系列文章,大家有关心的技术点和问题,欢迎大家参与读者讨论,后续文章会根据大家内容讨论的热度决定更新顺序。点击,立即学习《Python语言在ANSYS的应用10讲》,掌握ANSYS ACT开发能力。