SpaceClaim简称SCDM,是ANSYS的一款强大的多功能3D直接建模软件,作为其结构和流体分析默认几何前处理模块,为用户提供非常强大的脚本建模功能,可快速实现仿真模型参数化建模、几何修复和装配、边界位置识别等,大幅缩短仿真前处理周期,提升仿真效率。
1、SCDM二次开发概述
1.1脚本建模的优点
1.2 Python脚本语言
Python是种高级动态编程语言,是由Python之父-Guido van Rossum在1991创建发行,应用范围从Web开发、GUI开发、数据科学到人工智能再到DevOps。
Python支持多种编程范式,包括面向对象的、命令式的、函数式的和过程式的,并拥有一个大型的、全面的标准库。其作为一种通用的脚本开发语言,相比其他编程语言更加简单、易学,而且其面向对象特性相比Java、C#、.Net更加彻底,非常适合快速开发。根据TIOBE编程语言社区排行榜,Python稳居前三,反应了当今Python的热门程度。所以学好Python,走遍天下都不怕!
SCDM和Workbench的脚本语言都是基于IronPython:是一种在.NET和Mono上实现的Python语言。IronPython是.NET框架的优秀补充,它为Python开发人员提供了.NET框架的强大功能。我们可以通过CLR平台,加载.NET Framework(基类库、GUI框架)和任何以.NET为基础的动态链接库;如下代码所示:脚本中可以引用“Microsoft.Office.Interop.Excel.dll”,实现仿真流程与Excel表格之间的交互。
2、脚本录制和运行
SCDM提供脚本录制功能,帮助我们记录基础脚本,并对每一步操作做了相应注释,方便用户后续查看及编辑脚本。
2.1脚本录制可以通过以下几个步骤录制操作脚本:① 启动SCDM软件,选择File>Script打开脚本编辑器;② 确保脚本编辑器中Record按钮为选中状态;③ 像往常一样操作界面建模,SCDM会自动记录操作脚本。
2.2脚本运行模型创建完成后,按照以下步骤检查脚本的有效性:① 点击Record按钮,取消选中状态,停止脚本录制;② 在脚本开头添加“ClearAll()”命令,以便删除创建的几何并从头重新构建;
③点击Run Script按钮,运行脚本检查模型是否重新生成。
2.3保存脚本检查无误的脚本可以通过以下几种方式保存:
2.4脚本录制的局限性SCDM脚本录制为我们提供了快速生成脚本的方法,但生成的基础脚本本身具有局限性,部分限制罗列如下:
3、SCDM二次开发
基于上述局限性,在进行SCDM二次开发时,可先录制基础建模脚本,然后在其基础上进行修改,添加几何特征识别算法,并扩展相应功能。那在开始之前我们需要了解以下概念。3.1开发文档SCDM提供了非常完备的API开发文档,文件位于软件安装目录,如下:
InstallDir\scdm\SpaceClaim.Api.V17\API_Scripting_Class_Library.chm
InstallDir\scdm\SpaceClaim.Api.V17\API_Class_Library.chm
上述的开发文档API囊括了SCDM中的建模操作,能实现界面操作等同的功能。在使用开发文档之前,我们需要理解SCDM中的对象和数据结构。3.2文档结构-Document Structure在SCDM中,文档(Document)是加载和保存模型的单元。假设文档已保存,则文档对应于磁盘上的SpaceClaim的*.scdoc格式文件。所以,SCDM中所有的对象和数据结构都是建立在文档基础上的。SCDM中文档包含以下对象:
组件-Parts
图纸-Drawing Sheets
材料-Materials
窗口-Windows
图层-Layers
3.3组件结构-Part StructureSCDM中的组件是包含许多对象模型的容器,也是脚本开发最常用到的类对象。结构如下:
元件-Components
设计体-Design Bodies
基准面-Datum Planes
设计曲线-Design Curves
坐标系-Coordinate Systems
折弯钣金壁-Sheet Metal Bends
梁-Beams
点焊接头-Spot Weld Joints组件包含零个或多个点焊接头;点焊接头有一组点焊,每个点焊在设计面上焊接两个或多个点。
3.4文档和Doc对象Doc对象属于文档对象,是唯一具有文档属性的对象。Doc对象包括:Part、Component、DesignBody、DesignFace、DatumPlane等。Doc对象是父-子树包含层次结构的一部分,其中父对象表示容器(Container),子对象表示内容(Contents)。如果一个Doc对象被删除,它的所有子对象(子对象,递归地)也会被删除。我们可以看下面例子来加深理解。例如:一个Part包含零个或者多个DesignBody对象,每个DesignBody对象包含一个或多个DesignFace对象。DesignFace的父级是DesignBody,DesignBody的父级是Part;同样地,DesignBody是Part的子对象,DesignFace是DesignBody的子对象。父对象和子对象的访问方法如下代码所示。
3.5自动补全SCDM脚本编辑器提供自动补全功能:通过在对象后加“.”,编辑器会自动列出对象属性和方法,方便使用。
4、案例演示
下面我们通过几个简单的案例来快速上手SCDM脚本开发。
案例1:获取目标面的特征属性
案例2:获取几何实体的特征属性
案例3:创建圆环
案例4:批量填充圆孔
案例5:批量导出坐标点
5、后记
最近针对客户的仿真需求,使用SCDM加Mechanical、Fluent做了几个大大小小的二次开发项目,深感SCDM的脚本功能的强大。在仿真模板开发环节中,个人感觉最难就在于前处理建模部分:如何生成高度参数化模型、如何自动修复外部导入模型、如何自动识别特征位置等等。上述问题通过SCDM二次开发都能完美解决,你说厉不厉害!另外,个人计划录制些SCDM脚本二次开发的培训课程,不知道大家感不感兴趣呢?最后,对于SCDM脚本开发或课程内容安排,大家有什么疑问和建议,欢迎文章留言交流哦。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删