ANSA二次开发 - PID筛选案例介绍

  今天我们来介绍一个二次开发案例—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+=1
           base.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 parts
    base.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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值