最近工作之余,想制作一个自动对多cell的Part进行skin并建立相应set的小插件。我的目的是对该Part中各个cell分别进行skin,以便于将来赋予不同的属性。这样可以有效的减少输出结果文件的大小。

本以为这应该是一个极其简单的小问题,不会浪费我太多的精力。但是当开始写程序的时候才发现一个巨大的坑点:Part对象的Skin函数不接受列表类型的参数或者数组类型的参数,它只接受ABAQUS特定的几何数组类型或者序列类型,按理说list类型属于序列类型,但是该函数并不接受。如果通过getSequenceFromMask生成可用faces,mask究竟如何获得又是一个问题。

mask为什么难以获得呢?因为getMask()函数是FaceArray对象的成员函数,而该对象的建立是通过part对象建立的(p.faces),它会生成所有faces的合集(比如[0,1,2,3,4,5,6]),而我要进行skin的cell只包含这些faces中的一部分,并且编号是随机的不可预测的,但是组成该cell的face编号可以通过c.getFaces()((2,3.4,5))。按照我最初的想法,我有了这些面的ID号,把它们从p.faces中读取出来重新组合就可以了,但是组合完成的类型是list,Skin函数不接受它作为参数。我尝试了多种方法均不能将最终的结果转化成Skin可以使用的格式。并且由于组合后的不是abaqus的几何数组类型,所以它并没有getMask()方法,也就无法通过该方法获得可以使用的mask。

无奈之下只好使用getSequenceFromMask函数,这就要解决一个麻烦的问题:getSequenceFromMask的mask值究竟怎么来?目前看来唯一的办法就是解密getMask()函数。(未知原因,公司网络连接不了ABAQUS帮助文件。)

我使用如下命令获取目标part的faces信息,得知共有47个面:

>>> p = mdb.models['G101ABS'].parts['G101ABS-qiaoguan-banhuang-1']

>>> f = p.faces

>>> len(f)

47

>>>

我想先看一下,如果我想选择所有面,mask是多少:

>>> f.getMask()

("('[#ffffffff #7fff ]',),",)

>>>

好吧,我看出来了这是一个十六进制的东西,但是完全搞不明白这堆乱码究竟怎么来的...

我想看看编号是0的面的mask是多少:

>>> f0=f[:1]

>>> f0.getMask()

("('[#1 ]',),",)

>>>

我想看看编号是1的面的mask是多少:

>>> f1=f[1:2]

>>> f1.getMask()

("('[#2 ]',),",)

>>>

不出所料,那么编号2的面mask会是3吗:

>>> f2=f[2:3]

>>> f2.getMask()

("('[#4 ]',),",)

>>>

好吧竟然是4,那么编号3的面mask会是多少呢?

>>> f3=f[3:4]

>>> f3.getMask()

("('[#8 ]',),",)

>>>

那么编号4的面mask会是多少呢?

>>> f4=f[4:5]

>>> f4.getMask()

("('[#10 ]',),",)

>>>

好吧不出意外是16(说过啦,mask是十六进制的)。这让我想起了初中数学对我来说噩梦难度的找规律填数字问题。这到底是一个什么规律呢?各位客官也许已经有了发现,不如让我试试编号是[1,2,3]组合的mask是多少吧:

>>> f123=f[1:4]

>>> f123.getMask()

("('[#e ]',),",)

>>>

结果是e(14),非常漂亮的2+4+8。

到这里大家可以想象一下:有一根导线将这47个face按照顺序串在一起,每一个face都是一个小灯泡,你需要哪个,哪个就亮而其余的都是暗的,然后它们组成了美丽的二进制数字:所以1是1,01是2,001是4,0001是8,00001是16,0111是14。规律好像被我们找到了。不过还有一个问题啊,还记得这个吗?

>>> f.getMask()

("('[#ffffffff #7fff ]',),",)

>>>

这个#ffffffff #7fff 是什么鬼啊?哦哦,应该是ABAQUS希望每32个灯泡一组吧?那就试试吧,看看32号面(第33个面,因为第一面的id是0)的mask是多少吧,应该会是# #1 吧?

>>> f32=f[32:33]

>>> f32.getMask()

("('[#0 #1 ]',),",)

>>>

好的,没问题!到这里我应该是顺利的找出了getMask()的计算方法了,但是我还是不会设置ABAQUS特有的几何数组唉,那只能自己制作一个getmask函数来代替getMask函数来生成期待已久的mask啦。getmask()函数接受正整数list类型参数生成该list的mask。

通过实践顺利完成了对多cell的part进行逐一skin的功能。

等等,还有一个大问题,这些cell都是有公用面的,那么skin出来的face再赋予属性,岂不是相当于公用面赋予了多余的属性?如此看来,还需要对c.getFaces()生成的list进行更进一步的剔除相同项之后再使用自己的getmask函数。这样就完美了。

OK,通过如上的介绍,相信有心人完全可以自己解决这个小问题。附件就是这个小插件啦。期待各位的使用反馈:

getMask()讨论:Abaqus Part对象的成员变量常用函数​www.jishulink.com

c2064 项不会计算为接受0个参数的函数_getMask()讨论:Abaqus Part对象的成员变量常用函数...相关推荐

  1. c2064 项不会计算为接受0个参数的函数_【JS必知必会】高阶函数详解与实战

    本文涵盖 前言 高级函数概念 函数作为参数的高阶函数 map filter reduce sort详解与实战 函数作为返回值的高阶函数 isType函数与add求和函数 如何自己创建高阶函数 前言 一 ...

  2. c2064 项不会计算为接受0个参数的函数_无网格法理论与Matlab程序设计(6)——传统径向基点插值(RPIM)形函数...

    参考资料 G.R.Liu Y.T.GU著 王建明 周学军译 <无网格法理论及程序设计> 数值实现 Matlab 2019a 前情回顾 形式主义的居士:无网格法理论与Matlab程序设计(1 ...

  3. c++ 项不会计算为接受 0 个参数的函数_OFFSET函数从入门到进阶之进阶操作篇(与MATCH组合)...

    了解了OFFSET函数的参数和基本用法,我们就开始进行进阶操作了.在基本用法中,发现各个参数都是我们单个输入,实际工作中,OFFSET函数通常用在区域数据的引用,这就会牵涉到通过拖动进行填充,那里面的 ...

  4. oracle中计算两个日期之间得天数、月数、年数以及结合使用常用函数

    1.相差天数(两个日期相减)--Oracle中两个日期相差天数-- select TO_NUMBER(TO_DATE('2018-6-5','yyyy-mm-dd hh24:mi:ss')- TO_D ...

  5. C语言sum函数不接受一个参数,函数不接受2个参数怎么解决

    c++函数不接受两个参数是为什么 class Time { int hour,minute,second; public: Time(int a=0,int b=0,i需要在使用之前声明一下函数,你在 ...

  6. 【体能五项】体能五项训练成绩计算Python实现

    文章目录 一.项目介绍 1.1 简介 1.2 项目编制环境 1.3 程序界面 (1)自动填表程序界面 (2)成绩计算程序界面 1.4 实现效果 (1)自动填表功能 (2)成绩计算功能 二.项目结构 2 ...

  7. java实现频繁项集_java实现Apriori算法——频繁项集的计算

    请注意,本文编写于 1195 天前,最后修改于 708 天前,其中某些信息可能已经过时. 前言 之前学校开的选修课<数据挖掘>,布置的两道算法题,时间有限完成其中一道:用Apriori算法 ...

  8. 要求将数组中的0项去掉,将不为0的值存入一个新的数组,

    package Day05;/*** 7.* 现在有如下一个数组:* int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};* 要求将以上数组中的0项去掉,将不 ...

  9. 岩土工程、颗粒流计算软件PFC6.0疫情传播案例——生化危机、病毒传播感染、古尔丹大战霜狼氏族

    颗粒流软件PFC6.0 案例--病毒感染.传播感染算例<古尔丹的黑魔法军团> 没人点赞这个博客就关啦!T_T 博客介绍 代码 结果 没人点赞这个博客就关啦!T_T 博客介绍 想了几个名字: ...

最新文章

  1. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(改变图例位置、移除图例)实战
  2. 一首歌的时间看懂荷兰三色旗问题
  3. HDU 4777 Rabbit Kingdom 树状数组
  4. 交换机用光纤模块互连一端灯不亮或两端都不亮,如何处理?
  5. 程序员降薪求职到底该不该?
  6. PyPI 管理员删除已潜伏10个月且下载量超1万次的恶意包
  7. 中间件和Django缓存
  8. 农广传媒获中体基金2000万元Pre-A轮融资
  9. 【转载】别了,摩托罗拉(十一):小高尔文“新政”
  10. Metasplotable3 简易安装教程
  11. Java自学指南一、找一个开始并能坚持下去的理由
  12. 银河麒麟安装steam
  13. 全国哀悼日 网站变灰装(附代码)
  14. 组织架构与中台建设,回顾阿里小米京东美团四大商业巨头的战略变迁
  15. 哪个数据库替代oracle,关于Oracle数据库替代加密算法
  16. 超融合架构真的完美吗?
  17. fatal error C1189
  18. 解析:未来物联网发展的十大趋势
  19. ios android md5加密,iOS中使用MD5加密
  20. Android实现语音识别成中文

热门文章

  1. linux系统更新字体,更换Linux下字体
  2. Python那些优雅的写法:switch-case
  3. python调用shell命令之三慷慨法
  4. 10 行 Python 代码,批量压缩图片 500 张,简直太强大了
  5. 前台提示_提示一下大家,如果考试科目不合格,可以到前台自助机查询
  6. C语言 结构体里的元素前面有一点“.”代表什么意思?
  7. css设置元素的宽高为整数,为什么有的浏览器解析出来的宽高是小数?
  8. win10如何设置麦克风?
  9. Python 编码规范 TODO注释
  10. 初识Linux——菜鸟篇