我目前正在为我的MSc研究项目。我的项目涉及使用二进制建模技术评估机织粗纱面料。这意味着我将织物的编织形式表示为线/桁架,而将树脂/基质表示为简单的块。
我一直在编写代码以运行多个仿真,尽管目前我只想运行一个。我在Python方面的经验有限,我的Abaqus经验也有限。到目前为止,我已经能够创建我的几何图形,分配我的材料,创建截面并对所有零件进行网格划分。组件由矩阵,warp1,warp2,weft1和weft2组成。将它们放置到位后,我将定义线性图案以创建层压复合材料。这是在python脚本中完成的所有工作,我可以选择层数,纬线间距,经线等等fwd.I
我的问题如下:
findAt
和getByBoundingBox
,但是这些都需要使用零件的名称才能工作,如何使它动态选择而不依赖于有多少零件?我尝试使用rootAssembly.allinstances.edges.getByBoundingBox(....)
,但没有成功。我总是以空数组结尾。这是模型看起来如何组装的示例。在这种情况下,有5层机织粗纱织物。
如果有人可以帮助我解决此类问题,我将不胜感激!
这是一排手动添加的弹簧。它们应该是在经纬之间而不是层之间相互作用:
答案 0 :(得分:0)
希望正确理解您的描述:
mdbModel = mdb.models[modelName]
要选择所有当前的边,只要在rootAssembly
:allEdges = [eachEdge for eachEdge in eachInstance.edges for eachInstance in mdbModel.rootAssembly.instances.values()]
中确实存在这些实例,就可以遍历Assembly中的实例。创建集合并在集合之间进行操作可以简化操作。
在复制每个实例时,为其分配一个名称,使其易于识别(例如,instanceName="Instance_1_3"
用于重复i=1
和j=3
处的位置。然后,您可以只需在mdbModel.rootAssembly.instances["Instance_1_2"]
方向上寻找i
的前一个邻居,依此类推。如果您想在两个接近的点之间进行简单弹跳,则可以迭代边界节点并进行{{ 1}}在相邻部分的节点上。