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 保存脚本 检查无误的脚本可以通过以下几种方式保存:
- 可在Console中点击Save按钮,保存为.scscript二进制文件;
- 或者在Console中单击Save as按钮,另存为Python格式.py的文件;
- 作为Group发布并保存在模型中(.scdoc);
- 作为工具发布(beta版),可作为工具使用。
2.4 脚本录制的局限性 SCDM 脚本录制为我们提供了快速生成脚本的方法,但生成的基础脚本本身具有局限性,部分限制罗列如下:
- 录制脚本中不包含所有的建模操作,部分特征选取和生成操作无法录制;
- 录制脚本中几何特征选择随着几何尺寸或拓扑变化后,特征位置识别可能会失效,导致后续特征生成操作失败,稳定性不强;
- 对于高度参数化或复杂的模型,基础脚本参数化程度低,也不利于参数管理和自动化建模;
- 对于外部导入模型,基础脚本无法自动识别相应特征,无法对几何进行自动识别修复、零件自动装配、自动创建NamedSelection用于边界加载,适用性差;
- 录制脚本只具备基础建模功能,若想与外界数据交互和扩展功能,如Excel表格、SQL数据库等,就需要在其基础进行二次开发。
3、SCDM二次开发
基于上述局限性,在进行 SCDM 二次开发时,可先录制基础建模脚本,然后在其基础上进行修改,添加几何特征识别算法,并扩展相应功能。那在开始之前我们需要了解以下概念。
3.1 开发文档 SCDM 提供了非常完备的 API 开发文档,文件位于软件安装目录,如下:
Install Dir\scdm\SpaceClaim.Api.V17\API_Scripting_Class_Library.chm
Install Dir \scdm\SpaceClaim.Api.V17\API_Class_Library.chm
上述的开发文档 API 囊括了 SCDM 中的建模操作,能实现界面操作等同的功能。在使用开发文档之前,我们需要理解 SCDM 中的
对象和
数据结构。
3.2 文档结构 -Document Structure 在 SCDM 中,文档 (
Document) 是加载和保存模型的单元。假设文档已保存,则文档对应于磁盘上的 SpaceClaim 的 *.scdoc 格式文件。所以, SCDM 中所有的对象和数据结构都是建立在文档基础上的。 SCDM 中
文档包含以下对象:
组件 -Parts
- 文档总是包含至少一个组件,称为其主要组件,这代表着一个设计(Design)。如果主组件有内部元件(Components)(属于同一文档的其他组件的实例),文档也将包含其他组件。内部元件也用于梁轮廓、中面元件和展开钣金元件。
图纸 -Drawing Sheets
材料 -Materials
- 文档包含零个或多个文档材料,这些材料由该文档中的元件(Parts)、设计体(Design Bodies)或梁(Beams)使用。
窗口 -Windows
- 一个文档包含一个或多个窗口,显示结构树中对象几何结构,还提供与之交互的图形界面。
图层 -Layers
3.3 组件结构 -Part Structure SCDM 中的
组件是包含许多对象模型的容器,也是脚本开发最常用到的类对象。结构如下:
元件 -Components
- 一个组件包含零个或多个元件;元件是另一个模板组件的实例;模板组件可能属于同一个文档(内部元件),也可能属于另一个文档(外部元件)。
设计体 -Design Bodies
- 一个组件包含零个或多个设计体。设计体可以是开放的(面体-Surface Body)或封闭的(实体-Solid Body)。设计主体包括设计面(Design Faces)和设计边(Design Edges)。
基准面 -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 脚本开发或课程内容安排,大家有什么疑问和建议,欢迎后台留言交流哦
。
觉得有收获记得转发给你的朋友们哦!