首页 > 科技 > 一套SCDM脚本建模与二次开发攻略

一套SCDM脚本建模与二次开发攻略

SCDM提供非常强大的基于Python的脚本建模功能,可快速实现仿真模型参数化建模、批量几何简化、修复与装配、智能边界命名等,大幅缩短仿真前处理周期,提升仿真效率。


一、脚本建模入门脚本、宏和批处理文件是自动化重复任务或者单击一次鼠标即可简化复杂工作流程的好方法。1、脚本建模SCDM中脚本环境,可以进一步简化与几何建模相关的常见任务;我们可以录制或编写脚本命令,这些命令将使重复性任务自动化或使复杂的工作流程变得容易。脚本建模有如下优点:

  • 代替历史特征树,特征重建不失败
  • 自动化重复的任务和繁琐的手工流程
  • 脚本更易于编辑、保存,更灵活
  • 在新模型中重用之前的工作流程

2、脚本录制

SCDM提供脚本录制功能,帮助我们记录基础脚本,并对每一步操作做了相应注释,方便用户后续查看及编辑脚本。可以通过以下几个步骤录制操作脚本:

① 启动SCDM软件,选择File > Script打开脚本编辑器;

② 确保脚本编辑器中Record按钮为选中状态;

③ 像往常一样操作界面建模,SCDM会自动记录操作脚本。

3、脚本运行

几何模型创建完成后,需按照以下步骤检查脚本的有效性:

  • 第一步:点击Record按钮,取消选中状态,停止脚本录制;
  • 第二步:在脚本开头添加“ClearAll()”命令,以便删除创建的几何并从头重新构建;
  • 第三步:点击Run Script按钮,运行脚本检查模型是否重新生成。

4、脚本保存检查无误的脚本可以通过以下几种方式保存:

  • 可在Console中点击Save按钮,保存为.scscript二进制文件;
  • 或者在Console中单击Save as按钮,另存为Python格式.py的文件;
  • 单击Publish按钮,选择作为Group发布并保存在模型中(.scdoc);
  • 单击Publish按钮,选择作为工具发布(beta版),可作为工具使用。

SCDM中直接建模技术的实现方式,实际上是对几何实体(体、面、边、点等)进行编辑和修改;当我们使用界面操作时,可以直接通过鼠标选择需要编辑的几何实体。在使用脚本建模时,同样也需要指定需编辑的几何实体,所以几何实体选择显得尤为重要,它决定了后续特征创建的成败。几何实体对象在SCDM中是以Doc对象类型存在的,它承载了与几何拓扑相关的所有数据。

在脚本环境中提供三种Doc对象的选择模式,分别为:智能变量(Smart Variable)、索引(Index)和射线(Ray)。下面我们来对比三种方式的优缺点:

  • 智能变量:脚本录制时默认指定方法,通过智能变量引用Doc对象,脚本必须保存为.scscript文件。智能变量是SCDM在后台创建的变量,它会储存所选几何对象的信息用来绑定选择对象,所以在几何更改期间匹配所选实体时会更健壮。但是,如果几何拓扑或者脚本环境发生变化,智能变量会无法匹配几何实体,后续特征创建会出现失败,无法在其基础上进行修改以扩展功能。
  • 索引:通过Doc对象的父子关系,通过选定实体的内部索引引用Doc对象,特征创建不失败;同时,索引方式录制的脚本与脚本环境无关,适合在此基础上进行二次开发,扩展建模功能、固化前处理流程。
  • 射线:通过创建射线端点(Point)和指定方向(Direction)生成射线矢量,射线会穿过实体对象与之相交,通过相交的位置引用Doc对象。射线在处理STL文件时尤其有效。

综上,我们推荐使用索引引用的选择方式进行脚本录制和后续的二次开发。

二、脚本二次开发

1、脚本录制的局限性

脚本录制虽然为我们提供了脚本快速生成的方法,但生成的基础脚本本身具有局限性,部分限制罗列如下:

  • 不包含所有的建模操作,部分几何特征选取、创建和编辑过程无法录制,如曲线点选取、梁特征创建等;
  • 随着几何尺寸或拓扑变化后,几何特征位置选择可能会失效,稳定性差;
  • 对于高度参数化或复杂的模型,基础脚本参数化程度低,也不利于参数管理和自动化建模;
  • 导入外部CAD模型,无法自动识别特征、修复几何、装配零件、创建命名选择等,脚本适用性差;
  • 录制的脚本代码冗长,不够精简,智能化程度低;同时与外界的数据交互性差,无法用来进行ACT插件开发,功能单一且扩展性差。

基于上述局限性,在进行SCDM二次开发时,可先录制基础建模脚本,然后基于API开发文档和Python语言特性,对SCDM建模脚本进行二次开发,可解决上述局限性。

2、API开发文档

SCDM提供了非常完备的API开发文档,文件位于软件安装目录,如下:

\scdm\SpaceClaim.Api.V18\ API_Combined_Class_Library.chm

上述的开发文档API囊括了SCDM中的建模操作,能实现界面操作等同的功能。API开发接口是基于.NET框架的C#语言编写的,而脚本是基于Python语言编写的,二者在语法和数据结构上有很大不同。所以要想利用好开发文档,就需要同时了解这两种语言的特性,尤其是面向对象编程思想,以及C#中类的继承、多态、接口、泛型编程的概念,对于初学者来说使用开发文档难度非常大。

3、Python脚本语言

Python是种高级动态编程语言,语法简洁、优雅、编写的程序易读,易于学习和掌握,适用于非高级开发人员应用范围从脚本开发、Web开发、GUI开发、数据科学到人工智能

根据TIOBE编程语言社区排行榜,Python稳居前三,反应了当今Python的热门程度。学好Python,走遍天下都不怕。

ANSYS产品(如SCDM、Mechanical、Workbench、Electronics Desktop、Fluent)的脚本和ACT开发,都支持Python语言,使用的是IronPython(一种在.NET上实现的 Python 语言),可实现日常工作流程自动化、专业流程定制化、行业特定应用程序开发以及将第三方工具和数据集成到 ANSYS 产品线中。

三、脚本开发可以做什么

简要的说,只要是软件界面能实现的直接建模操作,通过脚本建模和二次开发都能实现自动化;而且对于重复性和批量性的前处理操作,如几何修复、简化等操作,使用脚本完成的时间是在分秒级别的。下面我和大家分享几种SCDM脚本开发常见的场景和案例。

1、管理参数化模型

  • 管理SCDM界面几何参数化模型,访问和修改驱动尺寸,实现特征编辑。
  • 使用脚本建模API,结合数学算法,创建和管理高度参数化或复杂的模型;

2、批量模型修复和简化

  • 批量识别缺失面、间隙或缺失的表面,对模型进行自动愈合和修复;
  • 自动检测并修复重复面、小面、额外边、短边,采用Power Selection识别并删除孔洞、倒圆角、凸起和凹陷等特征。

3、自动化CFD仿真前处理

  • 导入外部翼型曲线坐标,生成机翼实体,并创建机翼外流场计算域;最后自动识别边界位置,创建流场命名选择;
  • 结合Fluent(Meshing + Solver)脚本开发,实现自动网格划分、仿真设置求解和后处理操作;
  • 支持导入的CAD几何抽取内流场,开发难度与模型的复杂与好坏程度相关。

4、自动化FEA仿真前处理

  • 创建参数化的草绘曲线和面,并赋予草绘曲线梁轮廓和壳体厚度;
  • 设置分析组件共享拓扑,创建网格控制和边界加载位置命名选择;
  • 结合Mechanical的ACT Python脚本开发实现自动材料设置、网格划分、载荷加载和后处理;
  • 同样也支持实体抽梁、更改梁截面、抽壳和延伸等操作。

5、脚本工具及ACT开发

  • 使用SCDM脚本和WinForms技术,开发可视化的脚本工具;
  • 基于ANSYS ACT平台,结合XML编写和SCDM脚本,开发ACT插件;
  • 通过对脚本代码的封装,达到固化仿真前处理流程,解放生产力。

四、如何编写脚本

SCDM脚本代码由算法和数据结构构成。算法对应着SCDM中建模的流程和步骤,包括如何识别并选择几何实体、如何编辑几何特征、如何参数化建模等。数据结构即几何拓扑数据表示和储存,需考虑如何来设计数据存储结构来让算法更高效。所以要想编写脚本,需要做到以下几个方面:

① 首先了解SCDM直接建模技术,掌握核心的软件操作功能,能独立完成CAE前处理流程;

②如果不熟悉脚本的话,建议先学习有关Python中流程控制、数据结构、函数和面向对象编程的方法;

③在脚本编写前,需了解SCDM数据类型,时常阅读API开发文档,能根据仿真需求录制脚本,并在此基础上进行二次开发。

做到上述要求其实并不难,只要我们平时多了解Python的使用方法,理解SCDM中Doc对象的数据结构与方法,并时常多阅读SCDM的API开发文档,多将理论知识付诸于实践中,相信大家很快都能掌握脚本建模和二次开发的方法。

五、我的思维导图



作者:小田老师,仿真秀专栏作者,硕士毕业于天津大学,擅长ANSYS产品的二次开发,曾完成多个结构和流体仿真开发项目,具备丰富的二次开发经验。

声明:原创文章,首发仿真秀,部分图片源自网络,如有不当请联系我们,欢迎分享,禁止私自转载,转载请联系我们。

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/271812.html