首页/文章/ 详情

ACT开发指南:如何自定义属性控件

2年前浏览5034
前期文章中,给大家介绍过:在ACT向导中开发中,可以使用<property />元素定义属性控件,通过control属性定义控件类型,基础控件类型列举如下:
  • text:文本属性输入

  • integer:整型属性输入

  • float:数字属性输入

  • select:选择输入框,通过presentation特性(Attributes)指定是否为单选框

  • boolean:复选框

  • custom:自定义属性

  • applycancel:确认/取消属性

上述各基础控件类型在XML中定义和在界面中显示样式如下所示:

image.png
在日常使用场景中,基础属性控件能满足参数输入的需要,但是在某些使用场景中,例如,在实现图形中几何对象交互选择、集成调用外置界面时,往往都满足不了需求,这个时候就需要自定义属性控件。
那么应该如何自定义属性控件呢?答案是:基于上述基础属性控件类型,再加上Python代码,就可以实现复杂的属性控件交互功能。
例如,官方提供的属性控件`fileopen`类型,就是基于`custom`类型属性定义的;Mechanical中几何交互选择的属性控件`geometry_selection`基于`applycancel`类型属性定义的,详情可以查看Addins\ACT\templatesAddins\ACT\libraries下的源文件。
image.png
在通过对官方提供的源文件分析后,小田老师总结出两种可行的自定义属性控件的方法,即通过定义回调函数(callbacks)属性控制类(controller class)
1)回调函数定义
在帮助文档中《ACT XML Reference - ACT XML Tags》中,可以找到<property>标签,其中列举了<property />元素中可以定义的属性及回调函数,在此为了方便朋友们日后查阅,小田老师已将常用的回调汇总如下,后期可以根据功能需求合理选用。
图片
XML文件中定义了回调标签之后,需要在对应的Python文件中实现回调函数;属性的回调函数都是带着默认参数,通常约定为stepprop,参数说明如下:
  • step表示当前的仿真步骤,对应类型为UserStep,实现IUserObject接口。

  • prop表示当前属性控件,对应类型为SimProperty,实现ISimProperty接口。

XML中定义的属性回调函数的说明列举如下,前后名称需保持一致:

图片
2)属性控制类
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二次开发能力

附件

100积分UserProperty.rar
WorkbenchMechanicalSpaceClaimACT
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2021-08-25
最近编辑:2年前
小田老师
硕士 | 仿真工程师 欢迎关注ANSYS仿真与开发!
获赞 627粉丝 3672文章 62课程 4
点赞
收藏
作者推荐
未登录
4条评论
董伟俊
签名征集中
2年前
老师的免费act插件分享文章已经分享点赞了,求下载地址
回复
于欢
签名征集中
2年前
小田老师,包含spaceclaim、mechanical的整个流程的ACT开发。完成分析后,我在workbench的主平台中打开某个组件,为什么ACT的设置界面就不见了呢?可以实现一直呈现吗?
回复
小恒
签名征集中
2年前
小田老师您好,请问本文提到的property基础控件类型在wizard中能正常实现,但为啥在simdata中就有问题了呢?
回复 1条回复
于欢
签名征集中
2年前
小田老师你好,购买课程后如何开发票?
回复 1条回复
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈