ACT开发指南:如何自定义属性控件
在前期文章中,给大家介绍过:在ACT向导中开发中,可以使用<property />元素定义属性控件,通过control属性定义控件类型,基础控件类型列举如下:上述各基础控件类型在XML中定义和在界面中显示样式如下所示:
在日常使用场景中,基础属性控件能满足参数输入的需要,但是在某些使用场景中,例如,在实现图形中几何对象交互选择、集成调用外置界面时,往往都满足不了需求,这个时候就需要自定义属性控件。那么应该如何自定义属性控件呢?答案是:基于上述基础属性控件类型,再加上Python代码,就可以实现复杂的属性控件交互功能。例如,官方提供的属性控件`fileopen`类型,就是基于`custom`类型属性定义的;Mechanical中几何交互选择的属性控件`geometry_selection`是基于`applycancel`类型属性定义的,详情可以查看Addins\ACT\templates和Addins\ACT\libraries下的源文件。在通过对官方提供的源文件分析后,小田老师总结出两种可行的自定义属性控件的方法,即通过定义回调函数(callbacks)或属性控制类(controller class)。在帮助文档中《ACT XML Reference - ACT XML Tags》中,可以找到<property>标签,其中列举了<property />元素中可以定义的属性及回调函数,在此为了方便朋友们日后查阅,小田老师已将常用的回调汇总如下,后期可以根据功能需求合理选用。在XML文件中定义了回调标签之后,需要在对应的Python文件中实现回调函数;属性的回调函数都是带着默认参数,通常约定为step和prop,参数说明如下:
XML中定义的属性回调函数的说明列举如下,前后名称需保持一致:
ACT采用MVC框架,前端界面(View)是采用html编写的,通过更改属性控件的控制器(Controller),即可自定义属性的交互功能。在XML文件中,可以在<property />元素标签中,将controller的类名赋给class属性,可以更改控制器类,如下:然后,需要在对应的Python文件中,实现属性控制器类,通常的控制器类定义模板如下,可以理解为将回调以面向对象的方式进行定义。
后续控件自定义过程中,根据实际的需求选择回调函数,然后实现控制类中相应的回调函数即可。接下来,我们采用上述两种方法自定义`文件保存`属性控件,因为在预定义的属性模板库中,官方只提供了文件打开:`fileopen`和文件夹打开:`folderopen`两种属性控件,都无法适用文件保存的场景。所以,这次我们自己动手DIY一个,最终`文件保存`属性控件实现的效果如下:首先,我们在XML中通过<property />标签定义两个属性`fileSave1`和`fileSave2`;其中`fileSave1`通过定义在main.py中的控制器类`FileSaveObj`实现,`fileSave2`通过定义在main.py中的回调函数`onFileSaveActive`和`onFileSaveShow`实现。定义`文件保存`控件,我们以`custom`控件为基础,用到两个回调功能<onshow>和<onactivate>,分别实现显示属性控件后更改按钮显示文字和实现按钮点击后的功能。对应的Python代码如下所示。上面两种方式虽然可以自定义属性,但是有个明显缺点:每个属性控件都需要定义回调或者控制类;对于相同类型的属性控件来说,如果定义多个属性的话,代码就会显得臃肿和重复。这种情况下,我们可以通过XML中<templates>和< controltemplate>标签,将属性控件定义为模板,方便属性控件的复用,代码如下:
以上就是本期所有内容,希望对大家有所帮助;朋友们在实际开发过程中,如有相关技术问题或项目合作,可以直接在后台留言,或者邮件至:tguangs@163.com,小田老师都会定期查看和回复信息的。
点击推荐课程,立即学习《Python语言在ANSYS的应用52讲》,掌握ANSYS 脚本自动化及ACT二次开发能力。