找回密码
 注册
Simdroid-非首页
查看: 451|回复: 15

[二次开发] 请问如何实现一个面的获取(findat或者getClosesd)

[复制链接]
发表于 2011-7-11 18:09:39 | 显示全部楼层 |阅读模式 来自 上海
各位大侠:
      问题如下,如图所示,小弟建一个有缺陷的1/8圆,实现自动化建模和批量处理。由于图示中的面不是真球的面,且这部分面中的一个点的坐标很难定,因此很难使用faces.findAt()语句自动找到这个面(findAt语句查找的面与给定的点坐标差距必须在10-6范围内)。尝试着使用abaqus的getClosest()函数去自动拾取这个面,也没有成功,请问哪位牛人有好点的方法,在此谢过。
       模型中下面大圆部分是真球,要拾取的面为球体的上方,与真球有一个小量的凹陷。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

发表于 2011-7-11 19:43:39 | 显示全部楼层 来自 江苏镇江
Simdroid开发平台
你上面那个缺陷面是怎么弄出来的?每个模型形状都和这个差不多么?
回复 不支持

使用道具 举报

发表于 2011-7-11 22:10:02 | 显示全部楼层 来自 江苏苏州
排除法不就可以了吗
回复 不支持

使用道具 举报

 楼主| 发表于 2011-7-12 08:39:07 | 显示全部楼层 来自 上海
1# puyingchao
版主您好。我上面那个缺陷部分是这样弄出来的,下半部分是整个圆的一部分,上半部分是三个点(缺陷部分与整圆连接点及轴对称点,顶端缺陷点:坐标为R-delta(缺陷))拟合的曲线(SPline)。然后通过revolve出来的。谢谢。各个模型基本上都是相似的,就是R和delta不一样而已。
回复 不支持

使用道具 举报

 楼主| 发表于 2011-7-12 08:39:33 | 显示全部楼层 来自 上海
3# ffubei
大哥,排除法如何弄的?如何实现呢?具体语句怎么写?thanks。。。。
回复 不支持

使用道具 举报

发表于 2011-7-12 09:09:21 | 显示全部楼层 来自 欧洲
4# puyingchao
如果这样那就好办了,相似的结构,相同的建模方法下,abaqus生成的面的序列是相同的,意味着,你上面那个小缺陷面的编号不会变时固定的,你在cae中选一下那个面,看看标号时多少,以后就用多少。
回复 不支持

使用道具 举报

 楼主| 发表于 2011-7-12 09:13:08 | 显示全部楼层 来自 上海
6# JingheSu 谢谢您斑竹。我按照您的意思去试试。中午给您答案。thanks
回复 不支持

使用道具 举报

 楼主| 发表于 2011-7-12 09:37:59 | 显示全部楼层 来自 上海
6# JingheSu
版主您好。
按照您的方法我尝试了以下方式:
a = mdb.models['Model-1'].rootAssembly
f1 = a.instances['Part-1-1'].faces
faces1 = f1.getSequenceFromMask(mask=('[#3 ]', ), )
a.Set(faces=faces1, name='Set-2')
使用Mask()选取了想选取的面,但是Mask具体是个什么东西不知您知道不,有什么经验么?thanks

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2011-7-12 11:12:16 | 显示全部楼层 来自 上海
具体请查帮助,我也不是很清楚,不过平时一直这么用的。
回复 不支持

使用道具 举报

发表于 2011-7-13 12:15:27 | 显示全部楼层 来自 澳大利亚
1. getSequenceFromMask 是由ABAQUS CAE操作而产生在JOURNAL 文件的。 但具体这个MASK值是什么意思,ABAQUS帮助上也没具体说清楚;
2. 对于你这个问题可以试试以下几个方法,看行不行
getByBoundingBox(...)
getByBoundingCylinder(...)
getByBoundingSphere(...)

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2012-6-10 11:35:37 | 显示全部楼层 来自 甘肃兰州
JingheSu 发表于 2011-7-12 09:09
4# puyingchao
如果这样那就好办了,相似的结构,相同的建模方法下,abaqus生成的面的序列是相同的,意味 ...

版主您好,我最近在做圆柱体的参数化建模,也有“相似的结构,相同的建模方法下,abaqus生成的面的序列是相同的”的体会,起初还以为是偶然但是发现尺寸参数不管怎么变化,都可以生成set。我想请教下为什么会出现这种现象呀?
回复 不支持

使用道具 举报

发表于 2012-6-11 08:42:37 | 显示全部楼层 来自 上海
勇敢的海豚 发表于 2012-6-10 11:35
版主您好,我最近在做圆柱体的参数化建模,也有“相似的结构,相同的建模方法下,abaqus生成的面的序列是 ...

abaqus中的对象(face,cell,edge)都是有一定编号的,对结构相同的东西,abaqus按内部规定给的编号一般都是一样的,所以改了尺寸py程序照样可以运行。
回复 不支持

使用道具 举报

发表于 2012-6-11 08:46:50 | 显示全部楼层 来自 甘肃兰州
JingheSu 发表于 2012-6-11 08:42
abaqus中的对象(face,cell,edge)都是有一定编号的,对结构相同的东西,abaqus按内部规定给的编号一般 ...

那这种编号和input文件中的编号是一回事吗?还有划分网格后的节点编号跟着不是一回事了吧。

点评

谢谢版竹!  发表于 2012-6-11 08:54
和inp没一点关系  发表于 2012-6-11 08:48
回复 不支持

使用道具 举报

发表于 2012-6-11 11:06:32 | 显示全部楼层 来自 上海
puyingchao 发表于 2011-7-12 09:37
6# JingheSu  
版主您好。
按照您的方法我尝试了以下方式:

mask是个16进制数,是.jnl文件中存储edge、face、cell等编号的格式,如果要看得更清楚,把mask转化为2进制
比如你的instance有16个face,那么你把所有面全选中的时候,mask=#FFFF,表示为二进制1111111111111111(16位全为1);如果你选择的是face[0]、face[15],那么二进制为1000000000000001(只有第1位和第16位为1),即mask=#8001。大致就是这个意思。
好久没用了,你可以用pythonreader验证一下。
另外,可以用edges[].getfaces()等命令来选,再把多余的逐个从序列中排除。
回复 不支持

使用道具 举报

发表于 2017-7-24 14:18:22 | 显示全部楼层 来自 上海
微信公众号名称:TclTk语言开发
公众号:Tcl-Tk
分享TclTk语言编程开发技术干货
回复 不支持

使用道具 举报

发表于 2017-7-25 16:42:37 | 显示全部楼层 来自 陕西西安
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-28 19:50 , Processed in 0.045497 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表