1、目标
得到ansys workbench网格节点坐标和单元信息(软件版本2023R1)。示意图如下。
2、操作步骤
1)网格生成完成,加载荷和约束,计算完成;
2)右键模型树「Solution」→「Insert」→「Command」;
3)清空原有内容,粘贴命令全文(见下文或附录资源);
4)点击「Solve」求解;计算完成;
5)右键 solution→「open solve files directory」,找到对应文件。
node_info.txt:纯节点信息(带注释抬头 + 仅核心字段);
elem_info.txt:纯单元信息(带注释抬头 + 仅核心字段);
fe_model_info.txt(可选):总文件,先节点后单元。
3、命令全文
! ====================== 核心预处理(保证编号升序) ======================
/PREP7 ! 进入前处理模块,加载完整的网格数据
NUMMRG,NODE ! 合并重复节点(解决节点编号断档的根源)
NUMCMP,NODE ! 强制节点编号从1开始、连续升序(无跳号)
NUMCMP,ELEM ! 强制单元编号从1开始、连续升序(保持你确认的逻辑)
! ====================== 导出纯节点信息(仅编号+坐标,1开始升序) ======================
*CFOPEN,node_info.txt,txt ! 单独生成节点信息文件
! 写入节点信息抬头+注释说明
*VWRITE
(‘========== 节点信息说明‘)
*VWRITE
(‘节点编号:节点的唯一标识(从1开始连续升序)’)
*VWRITE
(‘X/Y/Z坐标:节点在笛卡尔坐标系下的坐标值(单位:模型设定单位)’)
*VWRITE
(’=======================’)
*VWRITE
(‘节点编号’,8X,‘X坐标’,10X,‘Y坐标’,10X,‘Z坐标’)
*VWRITE
(‘---------------------------------’)
! 循环读取所有节点,仅输出核心信息(无任何无关内容)
*GET,Node_Total,NODE,0,COUNT ! 获取总节点数
*DO,i,1,Node_Total
Node_X=NX(i) ! 读取第i个节点的X坐标
Node_Y=NY(i) ! 读取第i个节点的Y坐标
Node_Z=NZ(i) ! 读取第i个节点的Z坐标
*VWRITE,i,Node_X,Node_Y,Node_Z
(F8.0,8X,F12.6,8X,F12.6,8X,F12.6) ! 格式:编号+X+Y+Z,无冗余
*ENDDO
*CFCLOSE ! 关闭节点文件
! ====================== 导出纯单元信息(仅编号+3个节点号,1开始升序) ======================
*CFOPEN,elem_info.txt,txt ! 单独生成单元信息文件
! 写入单元信息抬头+注释说明(适配三角形网格)
*VWRITE
(‘========== 单元信息说明(三角形网格)‘)
*VWRITE
(‘单元编号:单元的唯一标识(从1开始连续升序)’)
*VWRITE
(‘节点1/节点2/节点3:三角形单元对应的3个节点编号(按单元拓扑顺序)’)
*VWRITE
(’===================================’)
*VWRITE
(‘单元编号’,8X,‘节点1’,10X,‘节点2’,10X,‘节点3’)
*VWRITE
(‘---------------------------------------------’)
! 循环读取所有单元,仅输出核心信息(无任何无关内容)
*GET,Elem_Total,ELEM,0,COUNT ! 获取总单元数
*DO,i,1,Elem_Total
Elem_Node1=NELEM(i,1) ! 读取第i个单元的第1个节点号
Elem_Node2=NELEM(i,2) ! 读取第i个单元的第2个节点号
Elem_Node3=NELEM(i,3) ! 读取第i个单元的第3个节点号
*VWRITE,i,Elem_Node1,Elem_Node2,Elem_Node3
(F8.0,8X,F8.0,8X,F8.0,8X,F8.0) ! 格式:单元号+3个节点号,无冗余
*ENDDO
*CFCLOSE ! 关闭单元文件
! ====================== 可选:合并节点+单元到总文件(二选一) ======================
/OUTPUT,fe_model_info.txt,txt
*VWRITE
(‘========== 节点信息(1开始连续升序)‘)
*DO,i,1,Node_Total
*VWRITE,i,NX(i),NY(i),NZ(i)
(F8.0,8X,F12.6,8X,F12.6,8X,F12.6)
*ENDDO
*VWRITE
(’单元信息(三角形网格,1开始连续升序) ==========’)
*DO,i,1,Elem_Total
*VWRITE,i,NELEM(i,1),NELEM(i,2),NELEM(i,3)
(F8.0,8X,F8.0,8X,F8.0,8X,F8.0)
*ENDDO
/OUTPUT
4、over
碎碎念:为了得到这些信息,我和豆包聊一天了,它总是虎我,还一虎一个准,因为我不会编程,也不会命令。(废话,要是会,我还问它干啥)。不断的聊,不断的尝试,不断的再聊。最终还真的得到了我想要的数据,现在回想起来,操作还挺简单,分享给大家,命令直接用,不用再花时间聊了。下午没聊出来的时候,自己非常伤心,出去买了个麦当劳吃,但觉得不好吃,一个人吃太孤单呜呜。最近想念之前的伙伴,很想很想。