【ABAQUS 的 python 脚本】Abaqus实用小插件开发:基于坐标创建节点集(改进版本)

文摘   2024-11-12 09:00   广西  

随着有限元分析软件Abaqus在工程领域的广泛应用,提高建模效率成为了许多工程师关注的重点。本公众号曾介绍过一款基于节点坐标创建节点集合的小插件,在此基础上,我对原有代码进行了优化和功能扩展,进一步提升了用户体验和工作效率。本文将详细介绍这款改进后的插件,包括其核心逻辑、用户界面。通过这款插件,用户可以更便捷地根据节点坐标创建节点集合,从而简化建模过程。


1.插件概述

本插件利用Python脚本与Abaqus的API接口进行交互,实现了基于节点坐标自动创建节点集合的功能。整个插件由三个主要部分组成:

文件结构
  1. 核心处理逻辑:位于 myKernel.py 文件中,负责处理节点数据并创建节点集合。

  2. 用户界面:由 nodeSetCreatorDB.py 定义,提供了直观易用的图形界面。

  3. 插件注册:通过 nodeSetCreator_plugin.py 将插件集成到Abaqus环境中。

完善后的界面如下👇:

完善后的插件界面,支持自定义节点集名称

2.核心逻辑解析

myKernel.py 文件中定义了一个名为 CreateNdSet 的函数,该函数定义如下:

def CreateNdSet(modelName,partName,ndX,ndY,ndZ,SetName):
print("**************************** ")
print("Node Set Creator by It_tumulao")
print(modelName,partName,ndX,ndY)
def check_node(x,y,z):
if abs(x - ndX) < 1e-6 and abs(y - ndY)<1e-6 and abs(z - ndZ)<1e-6:
return True
return False

model = mdb.models[modelName]
part = model.parts[partName]
nodes = part.nodes
nd_sets = []
for i, nd in enumerate(nodes):
x, y,z = nd.coordinates[:3]
# print(x,y)
if check_node(x,y,z):
nd_sets.append(i + 1)

print(nd_sets)
ins_key = model.rootAssembly.instances.keys()[0]
print( "ins key used : ", ins_key)
mask = model.rootAssembly.instances[ins_key].nodes.sequenceFromLabels(nd_sets)
model.rootAssembly.Set(name=SetName, nodes=mask)
print("done !!!")
print("**************************** ")

该函数接收如下参数:

  • modelName:模型名称。

  • partName:部件名称。

  • ndX, ndY, ndZ:目标节点的X、Y、Z坐标。

  • SetName:要创建的节点集合名称。

函数首先打印一些基本的信息,然后定义了一个辅助函数 check_node,用于判断节点坐标是否与给定坐标匹配。接着,函数遍历指定部件中的所有节点,找出符合条件的节点,并将它们添加到一个列表中。最后,使用这些节点在装配体中创建一个节点集合。

3.用户界面设计

nodeSetCreatorDB.py 文件定义了一个简单的用户界面,包括以下几个部分:

  • 模型选择:允许用户从当前模型中选择一个部件。

  • 坐标输入:用户可以输入目标节点的X、Y、Z坐标。

  • 集合名称:用户可以为新创建的节点集合命名。

通过这个界面,用户可以轻松地配置所需参数,点击“OK”按钮后,插件会调用 CreateNdSet 函数执行节点集合创建操作。

4.插件注册与使用

nodeSetCreator_plugin.py 负责将插件注册到Abaqus环境中。它通过调用 registerGuiMenuButton 方法,在Abaqus的工具栏中添加一个按钮,用户点击该按钮即可启动节点集合创建工具。同时,该脚本还指定了当插件被激活时需要导入的核心逻辑模块 myKernel。需要注意的是:所输入的节点坐标,需要网格节点中确实存在的才可创建对应节点集。

演示视频如下:

5.结语

通过这小插件,我们可以更加高效地完成节点集合的创建工作,从而节省时间,提高工作效率。也可进一步扩展插件的功能,例如批量创建节点集合等。感兴趣的朋友可到公众号后台发送ABAQUS节点集创建插件获取该插件。

推荐阅读


挨踢的土木佬
一名学习编程的土木佬,计算固体力学,以第一/通讯作者身份在IJNME、IJSS、力学学报、振动工程学报等权威期刊发表论文若干。热衷分享Python编程、数据处理和数值分析(含有限元)新知,不定期更新文章与笔记。
 最新文章