当前位置:首页>python>用 Python 一键修改 inp 文件——Isight 参数化建模的一个实用小技巧

用 Python 一键修改 inp 文件——Isight 参数化建模的一个实用小技巧

  • 2026-09-20 09:24:21
用 Python 一键修改 inp 文件——Isight 参数化建模的一个实用小技巧
在做 Isight 参数化仿真时,很多人都会遇到一个非常现实的问题:

👉 CAE 输入文件(如 .inp)很大,参数埋得很深,只想改其中几行材料参数,怎么办?

这篇文章分享一个非常简单但极其实用的方法:
用 Python 精确修改指定行号的内容,并通过 bat 文件调用,实现 Isight 参数化。

一、问题背景

以 Abaqus/OptiStruct 等求解器的 .inp 文件为例:
文件行数巨大
材料参数集中在某一小段
Isight 本身不擅长做“复杂文本替换”
但Isight 非常擅长:改参数 + 调用脚本
👉 那我们就让Python 来做文本修改,Isight 只负责传参和运行。

二、核心思路

整体流程非常清晰:
Isight → 传递参数
→ 调用 bat
→ python aaa.py
→ 精确修改 aaa.inp 中指定行
→ 覆盖原文件
→ 求解器运行
关键点只有两个:
Python 按行号修改文件
bat 文件中调用 python 脚本

三、Python 核心函数:按行号修改文件

下面是完整的 Python 函数,用于替换指定行号范围的内容:
defmodify_lines_in_file(file_path, start_line, end_line, replacement_lines):
"""
修改文件中的指定范围的行数内容并替换源文件
:param file_path: 源文件路径
:param start_line: 开始行(从1开始计数)
:param end_line: 结束行(从1开始计数,包含此行)
:param replacement_lines: 替换的行内容列表
"""

读取源文件内容

withopen(file_path, 'r', encoding='utf-8') as file:
lines = file.readlines()

检查替换范围是否有效

if start_line < 1or end_line > len(lines) or start_line > end_line:
raise ValueError("Invalid line range specified")

替换指定范围的行

lines[start_line - 1:end_line] = replacement_lines

写回源文件

withopen(file_path, 'w', encoding='utf-8') as file:
file.writelines(lines)
✅ 优点:
不需要正则
不依赖文件结构
只要行号确定,100% 稳定

四、材料参数的参数化示例

假设你在 Isight 中要参数化一组材料参数:

Isight 参数

E1 = 118.0
E2 = 6982.88
E3 = 8247.52
T2 = 81.294
C2 = 257.455
T3 = 80.9455
C3 = 254.87
G12 = 90.2549
G23 = 95.3902
G31 = 85.1196
.inp 文件中对应的是第 1015075 ~ 1015078 行,那就直接这样写:
file_path = 'aaa.inp'#文件路径
start_line = 1015075#初始行号
end_line = 1015078#结束行号
replacement_lines = [
str(E1)+","+str(E2)+","+str(E3)+",    0.27,    0.27,    0.27,   3800.,   3800.\n"
"3000.,      0.,      0.,      0.,      0.,      0.,      0.,      0.\n"
"2470.,   1062.,"+str(T2)+","+str(C2)+","+str(T3)+","+str(C3)+",      0.,      0.\n"
""+str(G12)+","+str(G23)+","+str(G31)+"\n"
]
modify_lines_in_file(file_path, start_line, end_line, replacement_lines)
📌说明:
replacement_lines 的行数必须和替换范围一致
字符串里注意 \n
这种写法对 Isight 非常友好

五、bat 文件调用方式

假设 Python 文件名为:
aaa.py
那 bat 文件内容只需要一行:
python aaa.py
在 Isight 里:
用Command Component
指向该 bat 文件
参数直接映射到 aaa.py 中的变量即可

六、Isight中调用方法

(1)读取aaa.py文件,映射参数
(2)选取调用aaa.py的bat命令

最新文章

随机文章