在 ANSYS 中按坐标批量提取节点应力,主要可通过 APDL 命令流 或 Python 脚本(结合 DPF 或 Workbench) 实现。以下是两种主流方法的简明操作指南:一、APDL 命令流方法(适用于经典 ANSYS)
适用于已知坐标范围(如 X 坐标在某一区间内)的节点应力提取。
选择目标节点
使用 NSEL 命令按坐标范围筛选节点。例如,提取 X 坐标在 100~101 范围内的节点:apdl
NSEL,S,LOC,X,100,
NSEL,R,LOC,Y,Ymin,Ymax ! 可选:进一步限制 Y 范围
NSEL,R,LOC,Z,Zmin,Zmax ! 可选:进一步限制 Z 范围
获取节点信息与应力
使用 *GET 和循环提取每个节点的编号、坐标及应力分量(如 Sx, Sy, Sxy, S1, S3):apdl
*GET,n1,NODE,,COUNT ! 获取选中节点总数
*DIM,nn1,ARRAY,n1 ! 节点编号数组
*DIM,xx1,ARRAY,n1 ! X 坐标数组
*DIM,stress,ARRAY,n1,5 ! 应力分量数组(5列:Sx,Sy,Sxy,S1,S3)
*GET,nmin,NODE,,NUM,MIN ! 最小节点编号
nn1(1) = nmin
DO,i,1,n
xx1(i) = NX(nn1(i)) ! X 坐标
*GET,stress(i,1),NODE,nn1(i),S,X ! Sx
*GET,stress(i,2),NODE,nn1(i),S,Y ! Sy
*GET,stress(i,3),NODE,nn1(i),S,XY ! Sxy
*GET,stress(i,4),NODE,nn1(i),S,1 ! S
*GET,stress(i,5),NODE,nn1(i),S,3 ! S
IF(i < n1) THEN
nn1(i+1) = NDNEXT(nn1(i))
ENDIF
ENDDO
导出结果到文件
使用 *CFOPEN 和 *VWRITE 将数据写入文本文件:apdl
*CFOPEN,应力结果,txt
*VWRITE,xx1(1),stress(1,1),stress(1,2),stress(1,3),stress(1,4),stress(1,5)
(F10.4,6E12.4)
*CFCLOS
✅ 此方法适用于稳态或单时间步结果。若需处理多时间步,可外层嵌套 SET 命令循环读取不同时间步结果
二、Python + ANSYS DPF 方法(适用于 Workbench / 瞬态分析)
适用于自动化处理大量时间步,并导出含坐标与应力的 CSV 文件。
依赖库:安装 ansys-dpf-core
bash
pip install ansys-dpf-core
核心流程:打开 .rst 结果文件;
遍历每个时间步;
提取每个节点的坐标(x, y, z)和 von Mises 应力(或其他分量);
合并为 DataFrame 并保存为 timestep_XXX.csv。
示例代码片段(完整脚本见
):python
from ansys.dpf import core as dpf
import pandas as pd
import os
model = dpf.Model("path/to/your/file.rst")
coords_field = model.metadata.meshed_region.nodes.coordinates_field
coords_df = pd.DataFrame({
"node_id": coords_field.scoping.ids,
"x": coords_arr[:,0], "y": coords_arr[:,1], "z": coords_arr[:,2]
})
for time_idx in range(1, n_sets + 1):
stress_op = model.results.stress()
stress_op.inputs.time_scoping.connect(time_idx)
vm_op = dpf.operators.invariant.von_mises_eqv(stress_op)
vm_field = vm_op.outputs.fields_container()[0]
vm_df = pd.DataFrame({"node_id": vm_field.scoping.ids, "von_mises": vm_field.data})
merged = pd.merge(vm_df, coords_df, on="node_id", how="inner")
merged.to_csv(f"timesteps/timestep_{time_idx:03d}.csv", index=False)
✅ 该方法支持瞬态、多载荷步分析,可自动筛选特定区域(如通过 x_min, x_max 过滤)
三、推荐选择
仅需单时间步、简单坐标筛选 → 使用 APDL 命令流
需处理瞬态、大量时间步、自动化批量导出 → 使用 Python + DPF
如需进一步帮助,可提供具体模型类型(如 Workbench 还是 Classic)、是否为瞬态分析、目标坐标范围等信息。
武汉格发信息技术有限公司 | 许可分析,许可优化,许可管理,许可授权,软件授权