今天我们来介绍一个二次开发案例—ANSA中零件PID的筛选与操作。

  首先先看一下需求:
  如上图所示。有一堆零件,软件已经自动区分出PID。它们的PID名字都以“part”加数字开头。现在要求:

  将名称含PART1的PID仅显示,topo

  将名称含PART2的PID仅显示,topo

  将名称含PART3的PID仅显示,topo(判断是否有part4,如果有topo,继续判断PART5,6,7……如果没有终止topo)

  首先分析一下需求,将名称含有XXX的PID做指定操作,其实就是对PID进行分类,通过名称含有XXX来筛选,这刚好可以应用字典来解决,那么剩下的就是逻辑了。

  下面来具体写一下这个程序:

import ansa
from ansa import base
from ansa import constants
def main3():#根据SHELL_PROPERTY收集实体   shells=base.CollectEntities(constants.FLUENT,None,'SHELL_PROPERTY')namelist=list()adict={}#对收集到的实体列表进行遍历for shell in shells:val=('Name',)#取到PID名字的字典(单个)namedict=base.GetEntityCardValues(constants.FLUENT,shell,val)#取到字典键‘Name’所对应的值(PID名字)name=namedict.get('Name')#每次将PID名字加入名字列表里namelist.append(name)#对PID名字列表进行遍历for name in namelist:if name[0:5]not in adict: adict[name[0:5]]=[]#取到字典键所对应的值(列表)list2=adict.get(name[0:5])#将名字加入这个列表list2.append(name)print(adict)#测试#取到字典键的列表keys=list(adict.keys())keys.sort()parts=list()#对字典键的列表进行遍历for key in keys:#取到字典键所对应的值(列表)list3=adict.get(key)i=0#对这个存有PID名字的列表进行遍历for l in list3:part=base.GetPartFromName(str(list3[i]))#取到PID名字所对应的零件parts.append(part)i+=1base.Or(parts)base.Topo()options=[ "UNCHECKED FACES","NEEDLE FACES", "COLLAPSED CONS", "TRIPLE CONS", "OVERLAPS", "CRACKS", "SINGLE CONS"]fix=[1,1,1,1,1,1,1]ret=base.CheckAndFixGeometry(parts,options,fix,True,True)if ret==None:print ('No errors!')#清空parts列表del partsbase.All()

注: 因为本身的PID名称列表是无顺序的,所以取到的名字的先后顺序也是跟随PID名称列表的(无序的),就算能够排序,但是不确定含有相同part字段的名字有几个。所以在判断名字中含有part几的时候,不能使用part i,i+=1这种自增形式来顺序的判断part4、part5…



转载自 :http://blog.sina.com.cn/s/blog_68d0921b0102wqzi.html
原文作者: 有限元在线
发表日期: 2016-12-23


  扫描下方二维码关注我的微信公众号 - CAE软件二次开发Lab,精彩内容!

CAE软件二次开发Lab

ANSA二次开发 - PID筛选案例介绍相关推荐

  1. ANSA二次开发 - 抽中面的两种方法

    文章目录 (一) 使用Skin命令抽中面. (二) 使用Casting抽中面.   ANSA是一款非常强大和快捷的前处理软件,用过的人都知道,ANSA在几何清理.模型简化功能方面尤为突出.不仅如此,A ...

  2. ANSA二次开发——初识Entity

    在之前的四篇文章中 ANSA二次开发--BCGUI简介(1) ANSA二次开发--BCGUI简介(2) ANSA二次开发--BCGUI简介(3) ANSA二次开发--BCGUI简介(4) 我们已经对A ...

  3. python仿真搭建_仿真秀学院|从零开始学ANSA二次开发:如何利用Designer搭建窗口,含安装步骤...

    原标题:仿真秀学院|从零开始学ANSA二次开发:如何利用Designer搭建窗口,含安装步骤 作者 | 团长 仿真秀专栏作者 首发 |仿真秀App 导读:大家好,我是团长,是一名CAEer,还是一名C ...

  4. ANSA二次开发——BCGUI简介(3)

    ANSA二次开发--BCGUI简介(3) 上篇文章ANSA二次开发--BCGUI简介(2)主要介绍了在创建GUI界面中常见的组件创建函数,那如何在窗口中将各种不同的组件排列出我们想要的布局呢?下面就介 ...

  5. Revi二次开发_3.筛选不合格厚度的叠合板

    Revi二次开发_3.筛选不合格厚度的叠合板 前言 代码思路 效果 参考 前言 做了一个使用外部接口实现筛选不合格厚度叠合板(属于常规模型)的程序,记录一下. 代码思路 主要借用了IExternalC ...

  6. ANSA二次开发 - 安装外部python库(以xlrd为例)

      Python由于其易用性和良好的可扩展性以及丰富的第三方库,而被越来越多的CAX软件作为二次开发的脚本语言.   ANSA前处理软件得二次开发语言就是Python语言,但其与常规Python发行版 ...

  7. ANSA二次开发 - 加密py文件为pyd格式

    文章目录 加密过程 CompileScript加密函数 函数名称 函数语法 功能描述 函数参数 返回类型 返回值 示例   有时候我们希望保护所开发的ANSA二次开发python代码,需要对明文代码进 ...

  8. ANSA二次开发 - 在PyCharm上搭建ANSA/META二次开发环境

    文章目录 与PyCharm IDE集成 简介 ANSA和META自动补全 安装说明 在PyCharm中工作 与PyCharm IDE集成 简介   PyCharm 是一个集成开发环境(IDE).它是专 ...

  9. php织梦二次开发的功能例子,织梦DedeCMS二次开发联动筛选功能的实现(含多选功能)...

    织梦默认的列表页没有筛选功能,但有时候我们做产品列表页的时候,产品的字段比较多,很多人都需要用到筛选功能,这样可以让用户更方便的找到自己所需要的东西,实现这个联动筛选功能需要对织梦进行二次开发,下面就 ...

最新文章

  1. 两数之和C++代码实现超详细讲解
  2. Provided path doesn't exist. pylama Please fix pylama path or install latest version(UBuntu版本下的情况)
  3. spring对事务的控制 AOP
  4. 安装两个mysql3308_在同一台机器上安装两个版本的MySQL
  5. cad道路里程桩号标注_cad桩号标注插件
  6. linux5 iso镜像下载,Redhat Linux5.4/5.5/5.8/6.0/6.3 ISO镜像文件下载
  7. 环境试验之模拟运输试验
  8. 计算机为什么不用三十二进制,32位进制导致2038年问题
  9. ASPECT RATIO
  10. Hive开启WebUI
  11. 数据投毒攻防对抗技术-1.数据投毒简介
  12. modelsim 常用快捷键
  13. 表格一分为二html,如何在excel表中的将一个格子一分为二
  14. php 解压dat,如何打开dat文件?
  15. php中下载xls某个文件,php下载excel文件
  16. web之HTML入门02
  17. C++版本OpenCv教程(二十七)图像中添加高斯噪声
  18. 第9课:jvm的gc时候核心参数详解:-XX:NewRatio、-XX:SurvivorRatio、-XX:NewSize、-XX:MaxNewSize
  19. 【python3学习笔记】os.chdir(path)用法
  20. vSphere备份实践(一)——用赛门铁克备份还原vSphere中的虚拟机

热门文章

  1. 深度学习入门——Mini-batch、Momentum与Adam算法
  2. 一个人久了,会上瘾的。(转载)
  3. C++实现已知圆的任意三点求圆心和半径
  4. 在线编辑软件之幕布与腾讯文档,语雀
  5. 轻轻松松理解Base64
  6. CAD室内外施工图绘制
  7. 综述:儿童腺病毒肺炎诊治的研究进展
  8. PCIe系列专题之七:PCIe热插拔
  9. 狂潮微课小红书推广引流教程
  10. 天心sunlike erp 生产需求分析 按生产订单号生成单号