【发布时间】:2021-03-16 16:42:51
【问题描述】:
我正在编写一个脚本来自动执行在 Abaqus 中创建模型的部分。在模型中,两个连接器元素应用于两个实例的 2 个节点。第一个连接器从实例 1 上的点 a 开始,到实例 2 上的点 b 结束。第二个连接器反之亦然。这意味着这两个连接器显然共享相同的坐标和重叠。用光标选择底层连接器不是问题,但是自动化这一步并选择底层连接器来分配一个部分是我卡住的地方,因为你不能使用 findAt() 方法,因为它总是选择顶部连接器。两条线都已实现,但将部分分配给第二个连接器不起作用。我可以以某种方式使用 getSequenceFromMask 来访问第二个底层连接器吗?
我认为这与我如何找到边缘以及在创建连接器的电线时为边缘创建名称或设置有关。我可以将 getSequenceFromMask 中的掩码指定为第二个连接器的所需边缘吗? 这是循环的一部分。坐标来自图书馆,部分的名称来自列表
mdb.models['Model-1'].rootAssembly.WirePolyLine(mergeType=IMPRINT, meshable=False, points=((
mdb.models['Model-1'].rootAssembly.instances[ListeGConZug[0]].vertices.findAt((
dctX2['XKoordLLZ_%s' % ladida[i]][y], dctY2['YKoordLLZ_%s' % ladida[i]][y], dctZ2['ZKoordLLZ_%s' %
ladida[i]][y]), ),
mdb.models['Model-1'].rootAssembly.instances[ladida[i]].vertices.findAt((
dctX3['XKoordLLE_%s' % ladida[i]][y], dctY3['YKoordLLE_%s' % ladida[i]][y], dctZ3['ZKoordLLE_%s' %
ladida[i]][y]), )), ))
mdb.models['Model-1'].rootAssembly.features.changeKey(NameWire[-1],
toName=NameWire[-1])
mdb.models['Model-1'].rootAssembly.Set(edges=
mdb.models['Model-1'].rootAssembly.edges.findAt(((dctX3['XKoordLLE_%s' % ladida[i]][y],
dctY3['YKoordLLE_%s' % ladida[i]][y], dctZ3['ZKoordLLE_%s' % ladida[i]][y]), )),
name=NameWireSetConGZug[-1])
mdb.models['Model-1'].rootAssembly.SectionAssignment(region=
mdb.models['Model-1'].rootAssembly.sets[NameWireSetConGZug[-1]], sectionName=
NameWireSetConGZug[-1])
【问题讨论】:
-
我建议您查看重播文件 (
*.rpy),了解用于选择正确选项的特定选项,当您使用光标选择连接器并从那里开始时。 -
感谢您的建议,但回放文件仍然只显示 findAt() 而没有显示如何访问其他边缘
-
在创建每个连接器时为其创建单独的集合可能是可行的方法。你能提供一个最小的工作示例吗?
-
感谢您的提示,但要这样做,您必须选择线组,您只能通过 findAt() 选择边来这样做