首页/文章/ 详情

ANSYS Workbench ACT 向导开发案例:等边识别与自动网格划分

7月前浏览830

ANSYS Workbench 作为业界领先的仿真平台,提供了强大的二次开发工具 ACT(ANSYS Customization Toolkit),允许用户根据特定需求定制界面与自动化流程。本文将通过一个实际开发案例,展示如何创建一个 ACT 向导,实现“等边识别与自动网格划分”功能。该向导能够帮助用户快速选择模型中所有等长的边,并统一设置这些边的网格划分参数,从而提高前处理效率,避免重复手动操作。

一、ACT向导基础结构  

一个ACT向导通常由一个XML文件(定义界面)和一个或多个Python脚本(实现逻辑)组成 

<callbacks>:定义界面操作触发的Python函数。  

<propertygroup>/<property>:定义用户输入控件,支持length(长度)、integer(整数)、geometry_selection(几何选择)等多种类型。  

Python函数接收step参数,通过step.Properties访问属性值,并通过ExtAPI操作Mechanical对象。  

二、案例ACT向导代码展示

 

2.1、向导(XML)解析  

<step>:定义一个向导步骤,名称为“Mesh”,界面标题为“网格划分”。  

<callbacks>:绑定步骤级回调函数。onreset 对应重置操作,这里指定为 RemoveControls(需在 Python 中实现);onupdate 对应点击“下一步”时执行,指向核心函数 CreateMeshControls。  

<propertygroup>:将相关属性分组显示,组标题为“网格参数”。  

<property>:定义具体输入项。  

Ndiv1:整数型,用于设置全局单元大小。  

Location:几何选择控件,限定为边(selection_filter="edge"),并添加 isvalid 回调 IsLocationValid,用于验证用户选择的边是否合法。  

Ndiv:整数型,设置目标边的单元分割数。  

通过这样的配置,向导界面将自动生成,用户可在Mechanical 界面中直接交互。  

2.2、Python 脚本解析

2.2.1、函数流程详解  

获取模型与网格对象  

model = ExtAPI.DataModel.Project.Model 获取当前项目模型,进而获得 mesh 对象。  

设置全局单元大小  

mesh.ElementSize = Quantity(step.Properties["Sizing/Ndiv1"].Value, "mm") 将用户在界面输入的整数转换为带单位 mm 的物理量,并赋值给全局单元尺寸。  

创建尺寸控制(Sizing)  

sizing = mesh.AddSizing() 添加一个新的网格尺寸控制对象。  

获取参考边并计算长度  

sel = step.Properties["Sizing/Location"].Value 获取用户选择的几何实体(至少一条边)。  

entity = ExtAPI.DataModel.GeoData.GeoEntityById(sel.Ids[0]) 取得第一条边的几何实体。  

len = entity.Length 记录该边的长度作为参考长度。  

遍历所有几何体,识别等长边  

通过ExtAPI.DataModel.GeoData.Assemblies[0].Parts 遍历所有部件,再遍历每个部件的 Bodies,最后遍历每个体的 Edges。  

对于每条边,计算其长度与参考长度的相对误差:abs(edge.Length - len) / len < 1e-6。若误差在百万分之一以内,则认为两条边等长,将该边的 ID 加入列表 ids。  

创建新的几何选择集  

sel = ExtAPI.SelectionManager.CreateSelectionInfo(SelectionTypeEnum.GeometryEntities) 创建一个空的几何选择信息对象。  

将等长边的ID 列表赋值给 sel.Ids。  

将尺寸控制的Location 属性设置为该选择集,从而将此控制应用于所有识别出的等长边。  

设置控制类型与参数  

sizing.Type = SizingType.NumberOfDivisions 指定控制类型为“分割数”。  

sizing.NumberOfDivisions = step.Properties["Sizing/Ndiv"].Value 将用户输入的整数作为边的单元分割数。  

保存控制对象以便后续访问  

step.Attributes.SetValue("sizing", sizing) 将创建的尺寸控制对象存储在步骤属性中,便于其他回调(如 onreset)使用。  

生成网格  

mesh.GenerateMesh() 触发网格划分。  

三、案例应用与扩展  

螺栓连接孔边:多个相同直径的螺栓孔,其圆周边缘长度相同,需要一致的网格细化。  

对称模型:对称边界上的边往往等长,统一控制可保证网格对称性。  

周期性结构:如蜂窝、晶格结构,大量重复边需要相同网格划分。  

四、总结  

本文通过一个完整的 ACT 向导开发案例,展示了如何利用 ACT 在 ANSYS Workbench Mechanical 中实现等边识别与自动网格划分。XML 文件负责构建用户界面,Python 脚本实现核心逻辑,两者通过回调机制协同工作。该案例不仅提高了网格划分的自动化程度,也为开发者提供了可复用的模式——通过几何属性比较实现批量选择,进而施加统一控制。随着仿真模型的日益复杂,此类定制工具将显著提升前处理效率,减少人为错误,是仿真流程自动化的重要实践。

  

来源:设计仿真一体化
ACTMechanicalWorkbench动网格二次开发pythonUM控制螺栓
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-03-13
最近编辑:7月前
设计仿真一体化
本科 | 工程师 CAD&CAE
获赞 42粉丝 88文章 76课程 5
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈