You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Abaqus管线建模获取wire索引及edges.findAt参数含义咨询

Abaqus edges.findAt参数含义与管线集创建解决方案

edges.findAt参数说明

edges.findAt()括号内传入的是目标wire边(edge)上任意一个点的三维坐标,只要该坐标唯一落在某条edge的几何范围内,就能精准匹配到对应edge对象。
你在jnl文件里看到的非特征点坐标,是Abaqus录制操作时抓取的你手动点选wire时鼠标点击位置的模型空间坐标,不需要是端点、中点等特征点,仅要求点位落在目标edge上即可。

可行解决方法

  • 方法1:利用建模原始数据直接定位edge
    你是通过自定义VBA脚本生成的管线wire,所有管线的两个端点坐标都是已知的。对需要加入指定管径集的wire,直接取其两个端点的中点坐标传入findAt即可100%匹配到对应edge,无需查询Abaqus内部的edge ID。
    示例:某段6英寸管线端点为(x1,y1,z1)和(x2,y2,z2),取中点((x1+x2)/2, (y1+y2)/2, (z1+z2)/2)作为findAt参数即可。
  • 方法2:遍历edge按截面属性批量筛选
    如果你已经为不同管径的wire分配了对应命名的截面属性,可以直接遍历所有edge,匹配截面名称后批量创建集,无需调用findAt。
    参考代码:
    target_part = mdb.models['model-1'].parts['part-1']
    edge_list = []
    for edge in target_part.edges:
        sec_assignment = target_part.getSectionAssignment(region=(edge,))
        # 替换为你6英寸管线对应的截面名判断规则
        if '6inch' in sec_assignment.sectionName:
            edge_list.append(edge)
    target_part.Set(edges=edge_list, name='set-6inch')
    
  • 方法3:输出所有edge信息核对
    如果你需要查询现有模型中所有edge的索引、对应坐标信息,可运行以下代码输出核对:
    target_part = mdb.models['model-1'].parts['part-1']
    for idx, edge in enumerate(target_part.edges):
        p_start = edge.pointOn[0]
        p_end = edge.pointOn[1]
        mid_p = ((p_start[0]+p_end[0])/2, (p_start[1]+p_end[1])/2, (p_start[2]+p_end[2])/2)
        print(f"Edge索引:{idx} | 起点:{p_start} | 终点:{p_end} | 中点:{mid_p}")
    

内容的提问来源于stack exchange,提问作者NobrainJustStubborn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:45:03