SCDM二次开发快速入门|应用+技巧
本文摘要(由AI生成):
SpaceClaim简称SCDM,是ANSYS的一款强大的多功能3D直接建模软件,作为其结构和流体分析默认几何前处理模块,为用户提供非常强大的脚本建模功能,可快速实现仿真模型参数化建模、几何修复和装配、边界位置识别等,大幅缩短仿真前处理周期,提升仿真效率。SCDM二次开发主要使用Python脚本语言,通过录制基础脚本,并在其基础上进行修改,添加几何特征识别算法,并扩展相应功能。SCDM提供了非常完备的API开发文档,文档结构包括文档、组件、图纸、材料、窗口和图层等。SCDM脚本编辑器提供自动补全功能,方便使用。通过几个简单的案例可以快速上手SCDM脚本开发。
SpaceClaim简称SCDM,是ANSYS的一款强大的多功能 3D直接建模软件,作为其结构和流体分析默认几何前处理模块,为用户提供非常强大的脚本建模功能,可快速实现仿真模型参数化建模、几何修复和装配、边界位置识别等,大幅缩短仿真前处理周期,提升仿真效率。
1、SCDM二次开发概述
1.2 Python脚本语言
Python是种高级动态编程语言,是由Python之父 -Guido van Rossum在1991创建发行,应用范围从Web开发、GUI开发、数据科学到人工智能再到DevOps。
Python支持多种编程范式,包括面向对象的、命令式的、函数式的和过程式的,并拥有一个大型的、全面的标准库。其作为一种通用的脚本开发语言,相比其他编程语言更加简单、易学,而且其面向对象特性相比Java、C#、.Net更加彻底,非常适合快速开发。根据TIOBE编程语言社区排行榜,Python稳居前三,反应了当今Python的热门程度。所以学好Python,走遍天下都不怕!
![20190815102211-1.png 1.png](https://public.fangzhenxiu.com/ueditor/20190815102211-1.png?imageView2/0)
SCDM和Workbench的脚本语言都是基于IronPython:是一种在 .NET 和 Mono 上实现的Python 语言。
IronPython是.NET框架的优秀补充,它为Python开发人员提供了.NET框架的强大功能。我们可以通过CLR平台,加载.NET Framework(基类库、GUI框架)和任何以.NET为基础的动态链接库;如下代码所示:脚本中可以引用“Microsoft.Office.Interop.Excel.dll”,实现仿真流程与Excel表格之间的交互。
![20190815102217-2.png 2.png](https://public.fangzhenxiu.com/ueditor/20190815102217-2.png?imageView2/0)
2、脚本录制和运行
SCDM提供脚本录制功能,帮助我们记录基础脚本,并对每一步操作做了相应注释,方便用户后续查看及编辑脚本。
① 启动SCDM软件,选择File > Script打开脚本编辑器;③ 像往常一样操作界面建模,SCDM会自动记录操作脚本。![20190815102228-3.jpg 3.jpg](https://public.fangzhenxiu.com/ueditor/20190815102228-3.jpg?imageView2/1/w/1756/h/1052)
① 点击Record按钮,取消选中状态,停止脚本录制;② 在脚本开头添加“ClearAll()”命令,以便删除创建的几何并从头重新构建;![20190815102242-4.png 4.png](https://public.fangzhenxiu.com/ueditor/20190815102242-4.png?imageView2/1/w/1660/h/308)
③点击Run Script按钮,运行脚本检查模型是否重新生成。
![20190815102254-5.png 5.png](https://public.fangzhenxiu.com/ueditor/20190815102254-5.png?imageView2/0)
- 可在Console中点击Save按钮,保存为.scscript二进制文件;
- 或者在Console中单击Save as按钮,另存为Python格式.py的文件;
- 作为Group发布并保存在模型中(.scdoc);
![20190815102300-6.jpg 6.jpg](https://public.fangzhenxiu.com/ueditor/20190815102300-6.jpg?imageView2/1/w/1740/h/892)
![20190815102313-7.jpg 7.jpg](https://public.fangzhenxiu.com/ueditor/20190815102313-7.jpg?imageView2/1/w/1742/h/686)
SCDM脚本录制为我们提供了快速生成脚本的方法,但生成的基础脚本本身具有局限性,部分限制罗列如下:- 录制脚本中不包含所有的建模操作,部分特征选取和生成操作无法录制;
![20190815102329-8.png 8.png](https://public.fangzhenxiu.com/ueditor/20190815102329-8.png?imageView2/0)
![20190815102334-9.jpg 9.jpg](https://public.fangzhenxiu.com/ueditor/20190815102334-9.jpg?imageView2/0)
- 对于高度参数化或复杂的模型,基础脚本参数化程度低,也不利于参数管理和自动化建模;
- 对于外部导入模型,基础脚本无法自动识别相应特征,无法对几何进行自动识别修复、零件自动装配、自动创建NamedSelection用于边界加载,适用性差;
- 录制脚本只具备基础建模功能,若想与外界数据交互和扩展功能,如Excel表格、SQL数据库等,就需要在其基础进行二次开发。
3、SCDM二次开发
基于上述局限性,在进行SCDM二次开发时,可先录制基础建模脚本,然后在其基础上进行修改,添加几何特征识别算法,并扩展相应功能。那在开始之前我们需要了解以下概念。SCDM提供了非常完备的API开发文档,文件位于软件安装目录,如下:Install Dir\scdm\SpaceClaim.Api.V17\API_Scripting_Class_Library.chm
![20190815102343-10.jpg 10.jpg](https://public.fangzhenxiu.com/ueditor/20190815102343-10.jpg?imageView2/1/w/1900/h/1278)
Install Dir \scdm\SpaceClaim.Api.V17\API_Class_Library.chm
![20190815102356-11.jpg 11.jpg](https://public.fangzhenxiu.com/ueditor/20190815102356-11.jpg?imageView2/1/w/1932/h/1108)
上述的开发文档API囊括了SCDM中的建模操作,能实现界面操作等同的功能。在使用开发文档之前,我们需要理解SCDM中的对象和数据结构。
3.2 文档结构-Document Structure在SCDM中,文档(Document)是加载和保存模型的单元。假设文档已保存,则文档对应于磁盘上的SpaceClaim的*.scdoc格式文件。所以,SCDM中所有的对象和数据结构都是建立在文档基础上的。SCDM中文档包含以下对象:
![20190815102409-12.png 12.png](https://public.fangzhenxiu.com/ueditor/20190815102409-12.png?imageView2/1/w/1900/h/392)
- 文档总是包含至少一个组件,称为其主要组件,这代表着一个设计(Design)。如果主组件有内部元件(Components)(属于同一文档的其他组件的实例),文档也将包含其他组件。内部元件也用于梁轮廓、中面元件和展开钣金元件。
- 文档包含零个或多个文档材料,这些材料由该文档中的元件(Parts)、设计体(Design Bodies)或梁(Beams)使用。
- 一个文档包含一个或多个窗口,显示结构树中对象几何结构,还提供与之交互的图形界面。
SCDM中的组件是包含许多对象模型的容器,也是脚本开发最常用到的类对象。结构如下:
![20190815102421-13.jpg 13.jpg](https://public.fangzhenxiu.com/ueditor/20190815102421-13.jpg?imageView2/1/w/1916/h/1036)
- 一个组件包含零个或多个元件;元件是另一个模板组件的实例;模板组件可能属于同一个文档(内部元件),也可能属于另一个文档(外部元件)。
- 一个组件包含零个或多个设计体。设计体可以是开放的(面体-Surface Body)或封闭的(实体-Solid Body)。设计主体包括设计面(Design Faces)和设计边(Design Edges)。
- 组件包含零个或多个基准面。正如其名称所示,基准面既可以用作构造平面,也可以包含平面中的设计曲线和文字注释。移动基准面时,也会移动其子平面。
- 组件包含零条或多条设计曲线。设计曲线具有三维几何形状,尽管它们通常是在平面上绘制的。例如,如果复 制和粘贴设计边,就会创建设计曲线,而这些曲线不必位于平面上,也可以属于基准面和图纸。
- 组件包含零个或多个坐标系。一个坐标系包含三个相互垂直的坐标轴。
- 如果一个组件是钣金件,那么它包含零或更多的钣金折弯,这可能是圆柱形或锥形。如果一个部件是钣金件,那么它就具有钣金方面,这是表示钣金信息的伴生对象,包括折弯。
- 一个组件包含零个或多个梁,这些梁具有修剪后的曲线路径、平面横截面以及有关横截面相对于梁路径的位置和方向的信息。
组件包含零个或多个点焊接头;点焊接头有一组点焊,每个点焊在设计面上焊接两个或多个点。
Doc对象属于文档对象,是唯一具有文档属性的对象。Doc对象包括:Part、Component、DesignBody、DesignFace、DatumPlane等。Doc对象是父-子树包含层次结构的一部分,其中父对象表示容器(Container),子对象表示内容(Contents)。如果一个Doc对象被删除,它的所有子对象(子对象,递归地)也会被删除。我们可以看下面例子来加深理解。例如:一个Part包含零个或者多个DesignBody对象,每个DesignBody对象包含一个或多个DesignFace对象。DesignFace的父级是DesignBody,DesignBody的父级是Part;同样地,DesignBody是Part的子对象,DesignFace是DesignBody的子对象。父对象和子对象的访问方法如下代码所示。
![20190815102453-14.jpg 14.jpg](https://public.fangzhenxiu.com/ueditor/20190815102453-14.jpg?imageView2/1/w/1848/h/838)
SCDM脚本编辑器提供自动补全功能:通过在对象后加“.”,编辑器会自动列出对象属性和方法,方便使用。
![20190815102508-15.png 15.png](https://public.fangzhenxiu.com/ueditor/20190815102508-15.png?imageView2/0)
4、案例演示
下面我们通过几个简单的案例来快速上手SCDM脚本开发。
案例1:获取目标面的特征属性
![20190815102546-16.jpg 16.jpg](https://public.fangzhenxiu.com/ueditor/20190815102546-16.jpg?imageView2/1/w/1784/h/972)
案例2:获取几何实体的特征属性
![20190815102558-17.jpg 17.jpg](https://public.fangzhenxiu.com/ueditor/20190815102558-17.jpg?imageView2/1/w/1924/h/1276)
案例3:创建圆环
![20190815102609-18.jpg 18.jpg](https://public.fangzhenxiu.com/ueditor/20190815102609-18.jpg?imageView2/1/w/1844/h/752)
案例4:批量填充圆孔
![20190815102619-19.jpg 19.jpg](https://public.fangzhenxiu.com/ueditor/20190815102619-19.jpg?imageView2/1/w/1844/h/704)
案例5:批量导出坐标点
![20190815102634-20.jpg 20.jpg](https://public.fangzhenxiu.com/ueditor/20190815102634-20.jpg?imageView2/1/w/1900/h/806)
5、后记
最近针对客户的仿真需求,使用SCDM加Mechanical、Fluent做了几个大大小小的二次开发项目,深感SCDM的脚本功能的强大。在仿真模板开发环节中,个人感觉最难就在于前处理建模部分:如何生成高度参数化模型、如何自动修复外部导入模型、如何自动识别特征位置等等。上述问题通过SCDM二次开发都能完美解决,你说厉不厉害!另外,个人计划录制些SCDM脚本二次开发的培训课程,不知道大家感不感兴趣呢?最后,对于SCDM脚本开发或课程内容安排,大家有什么疑问和建议,欢迎文章留言交流哦。