我如何创建一个可以更改的网格而不会使 Abaqus 中的本机集失效?
How can I create a mesh that can be changed without invalidating native sets in Abaqus?
如果更改网格,我在 Abaqus 中创建的 "by feature edge" 节点集将失效。
我有什么选择可以防止这种情况发生?
我问是因为我正在尝试编写一个 phython 文件,在其中更改网格作为参数。如果更改网格会使节点集无效,那将是不可能的。
和往常一样,方法不止一种。
如果您知道感兴趣边缘上或附近某个点的坐标,一种技术是使用 EdgeArray.findAt() 方法,然后使用 Edge.getNodes() return Node 对象的方法,然后从中定义一个新集合。您可以使用以下代码作为您可能想到的其他更复杂方法的灵感来源:
# Tested on Abaqus/CAE 6.12
# Assumes access from the Part-level (Assembly-level is similar):
p = mdb.models['Model-1'].parts['Part-1'] # the Part object
e = p.edges # an EdgeArray of Edge objects in the Part
# Look for your edge at the specified coords, then get the nodes:
e1 = e.findAt( coordinates = (0.5, 0.0, 0.0) ) # the Edge object of interest
e1_nodes = e1.getNodes() # A list of Node objects
# Specify the new node set:
e1_nset = p.SetFromNodeLabels( name='Nset-1', nodeLabels=[node.label for node in e1_nodes] )
如果更改网格,我在 Abaqus 中创建的 "by feature edge" 节点集将失效。 我有什么选择可以防止这种情况发生?
我问是因为我正在尝试编写一个 phython 文件,在其中更改网格作为参数。如果更改网格会使节点集无效,那将是不可能的。
和往常一样,方法不止一种。
如果您知道感兴趣边缘上或附近某个点的坐标,一种技术是使用 EdgeArray.findAt() 方法,然后使用 Edge.getNodes() return Node 对象的方法,然后从中定义一个新集合。您可以使用以下代码作为您可能想到的其他更复杂方法的灵感来源:
# Tested on Abaqus/CAE 6.12
# Assumes access from the Part-level (Assembly-level is similar):
p = mdb.models['Model-1'].parts['Part-1'] # the Part object
e = p.edges # an EdgeArray of Edge objects in the Part
# Look for your edge at the specified coords, then get the nodes:
e1 = e.findAt( coordinates = (0.5, 0.0, 0.0) ) # the Edge object of interest
e1_nodes = e1.getNodes() # A list of Node objects
# Specify the new node set:
e1_nset = p.SetFromNodeLabels( name='Nset-1', nodeLabels=[node.label for node in e1_nodes] )