- (一) 使用Skin命令抽中面。
- (二) 使用Casting抽中面。
ANSA是一款非常强大和快捷的前处理软件,用过的人都知道,ANSA在几何清理、模型简化功能方面尤为突出。不仅如此,ANSA还提供了基于python语言的二次开发接口,大大满足了用户的需求。脚本语言背后的基本思想是用最小的用户交互自动化许多重复和繁琐的程序,那么ANSA提供的接口正满足了这一需求。抽中面这个功能相信画过壳网格的用户都已经用得烂熟于心了,然而它也是一项手动的重复性的工作,下面我们就介绍两种使用ANSA二次开发来进行抽中面的方法。
首先介绍一下需要用到的API(下面的API都基于ansa.base库):
- CollectEntities这个方法是用来收集实体,它返回一个收集到实体的列表。
- GetEntityCardValues这个方法是用来从下图所示的“Card”上获取pid、mid等参数的值。
它的返回值是一个字典。
- CollectNewModelEntities收集新创建或导入的模型实体。它返回一个对象,必须使用report()方法返回一个列表来收集实体。示例代码如下:
示例代码如下:
注意: 此处一定要有del collector.
- SetEntityCardValues设置或者改变”Card”中参数的值。
- CheckAndFixGeometry检查并且自动清理几何,他返回一个包含了错误信息的字典或者None。
- 此外还有Or(),All(),ZoomAll(),Compress(‘’)等辅助方法。
下面介绍一下程序逻辑:
我们这个程序是对于一个装配件而言的,所以会有很多个Part,因此肯定要用到循环来依次取出每一个Part进行操作。首先收集所有的实体,然后使用For循环依次对每个Part进行操作。先使用Or()与ZoomAll()显示单个实体,然后使用CheckAndFixGeometry进行自动几何清理,如果没有错误,则进行下一步(如果有错误说明无法自动清理,需要手动清理)。接下来需要收集实体‘FACE’,如果收集的实体不为空,那么我们将收集到的’FACE’进行Skin抽中面。接下来根据“PSHELL”来收集新的实体对象。“PSHELL”也就是如下图所示的‘Card’
然后执行report()方法获取新的实体列表。如果这个列表长度不为零,那么通过GetEntityCardValues方法获取新的PID信息,然后再通过SetEntityCardValues方法设置属性信息。最后使用All()和ZoomAll()显示所有实体,再使用Compress()压缩即可。
完整代码如下:
这里就不多讲了,方法逻辑基本没多大区别,有不懂得API可以查看帮助文档。直接上代码。
原文作者: 有限元在线
发表日期: 2017-07-17