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

[二次开发] 利用python根据坐标选择节点并生成集合

[复制链接]
发表于 2016-2-12 15:58:50 | 显示全部楼层 |阅读模式 来自 陕西西安
本帖最后由 htliu.xjtu 于 2016-2-12 16:18 编辑

小弟以前是ANSYSer,最近开始搞Abaqus,但思维仍然深受ANSYS影响!ANSYS有个select命令非常好用,可以根据坐标范围选择节点,而Abaqus貌似没有这个功能,于是看了几天python,写了一个函数,实现了这个功能,这样就可以实现诸如在某一个区域内施加载荷、约束等功能,希望对大家有用!本人觉得重在交流,不搞那些弯弯绕了,直接上程序!

# 思路:将所有节点的节点号,x,y,z坐标提取出来生成序列,在序列中查找与输入坐标在一定公差范围内相同的节点,记录其节点号并保存
# 本例是网格在部件上,若网格在实例上则需稍作修
from abaqus import *
def selectNodesByCoords(modelName,partName,newSetName,xCoordMin=0,xCoordMax=0,yCoordMin=0,
yCoordMax=0,zCoordMin=0,zCoordMax=0,tol=1e-05):

    p = mdb.models[modelName].parts[partName]
    allNodes = p.nodes
    coords  = map(lambda x:[x.label, x.coordinates], allnodes)
    nodeset=[]
    for c in coords:
        if c[1][0]<=(xCoordMax+tol) and c[1][0]>=(xCoordMin-tol) and c[1][1]<=(yCoordMax+tol) and c[1][1]>=(yCoordMin-tol) and c[1][2]<=(zCoordMax+tol) and c[1][2]>=(zCoordMin-tol):
            nodeset.append(c[0])                                    
    if nodeset!=[]:
        selctedNodes=allNodes.sequenceFromLabels(nodeset)   
        p.Set(nodes=selctedNodes,name=newSetName)
    else:
        print 'There are no nodes selected!'
    return nodeset



发表于 2016-2-16 09:38:49 | 显示全部楼层 来自 北京
Simdroid开发平台
是个好东西啊!

要是有一些操作细节(图片说明等),以及提供py文件下载就更好了,期待完善帖子,我给你加分!
回复 不支持

使用道具 举报

发表于 2016-2-16 19:38:48 | 显示全部楼层 来自 浙江杭州
吴聊SP 发表于 2016-2-16 09:38
是个好东西啊!

要是有一些操作细节(图片说明等),以及提供py文件下载就更好了,期待完善帖子,我给你加 ...

版主好,请教个问题,PY能否通过修改某些东西实现人为干预ABA计算的增量步。比如我要在某个时间点必须让它恰好有一个时间步在那(只是一个分析步的话)
回复 不支持

使用道具 举报

发表于 2016-2-17 10:00:03 | 显示全部楼层 来自 上海
sinaamos 发表于 2016-2-16 19:38
版主好,请教个问题,PY能否通过修改某些东西实现人为干预ABA计算的增量步。比如我要在某个时间点必须让 ...

这个好像在abaqus里可以直接设置,不需要PY也可以实现
回复 不支持

使用道具 举报

发表于 2016-2-17 10:06:00 | 显示全部楼层 来自 北京
stupid 发表于 2016-2-17 10:00
这个好像在abaqus里可以直接设置,不需要PY也可以实现

哦?如果可以设置,望赐教~
回复 不支持

使用道具 举报

发表于 2016-2-17 10:06:28 | 显示全部楼层 来自 北京
sinaamos 发表于 2016-2-16 19:38
版主好,请教个问题,PY能否通过修改某些东西实现人为干预ABA计算的增量步。比如我要在某个时间点必须让 ...

PY我没有尝试过,subroutine却是可行的
回复 不支持

使用道具 举报

发表于 2016-2-17 10:18:43 | 显示全部楼层 来自 上海
吴聊SP 发表于 2016-2-17 10:06
哦?如果可以设置,望赐教~

C:\Users\user\Desktop\1.jpg
不知道是不是与提问者说的是一回事,可以参考一下
回复 不支持

使用道具 举报

发表于 2016-2-17 10:22:38 | 显示全部楼层 来自 上海
stupid 发表于 2016-2-17 10:18
不知道是不是与提问者说的是一回事,可以参考一下

图片发表失败了,我描述一下吧,就是在Edit Field Output Request对话框中,Frequecy选项选择From time points, timing选项选择Output at exact times, name选项创建需要计算的时间点列表。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2016-2-18 17:35:52 | 显示全部楼层 来自 北京
stupid 发表于 2016-2-17 10:22
图片发表失败了,我描述一下吧,就是在Edit Field Output Request对话框中,Frequecy选项选择From time p ...

Got it,好办法!
回复 不支持

使用道具 举报

发表于 2016-2-19 19:42:19 | 显示全部楼层 来自 浙江
吴聊SP 发表于 2016-2-17 10:06
PY我没有尝试过,subroutine却是可行的

子程序,可否提供个思路?
回复 不支持

使用道具 举报

发表于 2016-2-19 20:02:31 | 显示全部楼层 来自 浙江
stupid 发表于 2016-2-17 10:22
图片发表失败了,我描述一下吧,就是在Edit Field Output Request对话框中,Frequecy选项选择From time p ...

这个只是说,输出的结果,能够指定时间点吧 ?我是想要在求解的时候指定某个时刻刚好有增量步
回复 不支持

使用道具 举报

发表于 2016-2-19 20:18:58 | 显示全部楼层 来自 浙江
sinaamos 发表于 2016-2-19 20:02
这个只是说,输出的结果,能够指定时间点吧 ?我是想要在求解的时候指定某个时刻刚好有增量步 ...

难道说这样指定输出场的时间点后,计算中就会自己在那个时刻设置增量步了??
回复 不支持

使用道具 举报

发表于 2016-2-19 20:21:48 | 显示全部楼层 来自 浙江
sinaamos 发表于 2016-2-19 20:18
难道说这样指定输出场的时间点后,计算中就会自己在那个时刻设置增量步了?? ...

感谢啊,真的可以,刚才自己试了
回复 不支持

使用道具 举报

发表于 2016-2-21 16:04:50 | 显示全部楼层 来自 四川成都
吴聊SP 发表于 2016-2-16 09:38
是个好东西啊!

要是有一些操作细节(图片说明等),以及提供py文件下载就更好了,期待完善帖子,我给你加 ...

楼主已经把py文件贴出来了
回复 不支持

使用道具 举报

发表于 2016-2-22 09:23:45 | 显示全部楼层 来自 上海
sinaamos 发表于 2016-2-19 20:21
感谢啊,真的可以,刚才自己试了

恩,不用客气,在history output edit里也一样可以设置的。
回复 不支持

使用道具 举报

发表于 2016-10-28 13:01:34 | 显示全部楼层 来自 广东广州
请问下,运行完该程序后再如何处理,直接调用该函数吗?
回复 不支持

使用道具 举报

发表于 2021-7-23 17:28:50 | 显示全部楼层 来自 上海
很不错的资料,感谢
回复 不支持

使用道具 举报

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

本版积分规则

Simapps系列直播

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

GMT+8, 2024-9-21 22:54 , Processed in 0.045935 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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