当前位置:服务支持 >  软件文章 >  Adams模态力载荷文件生成脚本(基于Optistruct格式)

Adams模态力载荷文件生成脚本(基于Optistruct格式)

阅读数 6
点赞 0
article_banner

在使用HyperMesh建模,使用Optistruct求解Adams中性文件时,可能会面临着分布载荷加载的问题。 如果需要在柔性体上加载模态力,那么需要先生成 xxx.loads 的载荷文件,再使用ADAMS Flex Toolkit将载荷文件写入mnf文件中,如果数据点较多,就需要编程完成载荷文件的自动生成,下面给出1种代码供参考。

这里有几个前提: 1 将需要加载分布载荷的节点建立SET集合; 2 节点集合的ID号需要是1-9的个位数,因为这里没有做格式的适配,默认为1; 3 将SET集合输出到FEM文件中。

cut-off

# 弹出对话框输入文件路径,载荷方向及数值
# 打开FEM文件,读取包含所有要施加载荷的节点SET,获得所有节点信息
# 新建模态力载荷文件,并写入信息,关闭文件

import re
from tkinter import filedialog
from tkinter import messagebox
from tkinter.simpledialog import *


def makeAdamsLoadFile(filename, setnum, direction, force):  # 定义函数
    # 打开FEM文件
    with open(filename, mode='r') as file:  # 打开有限元文件
        file.seek(0, 2)  # 移动指针到文件末尾
        eof = file.tell()  # 文件包含的所有指针
        file.seek(0, 0)  # 重新将指针移动到文件开头

        line = file.readline()  # 读取一行
        setStartLine = "SET     " + str(setnum) + "       GRID    LIST    "  # 注意不要修改SET文件格式
        setEndLine = '$'  # 定义SET结束标志符

        gridNum = []  # 初始化节点编号列表

        while setStartLine not in line:  # 判断是否找到需要的set语句
            line = file.readline()
            if file.tell() >= eof:  # 判断是否到文件末尾
                messagebox.showinfo('提示', '没有找到SET!')  # 弹出对口框
                break
        else:
            while setEndLine not in line:  # 找到SET语句
                line = file.readline()  # 读取一行
                gridLine = re.findall("\d+\.?\d*", line)  # 获取行内节点号
                if gridNum == []:
                    gridNum = list(map(int, gridLine))  # 创建节点编号列表
                else:
                    gridNum = gridNum + list(map(int, gridLine))  # 节点编号列表增加数据
                if file.tell() >= eof:  # 判断是否到文件末尾
                    messagebox.showinfo('提示', '没有找到SET结束标识!')  # 弹出对口框
                    break

            else:  # 写入文件
                newline = []
                newline.append('%C My first subcase')  # 第一行需要写的内容,可以在生成的文件自己更改
                for i in gridNum:
                    newline.append(str(i) + ' ' + direction + ' ' + str(force))  # 生成内容列表

                newfilename = filename + '.loads'  # 新文件名称
                with open(newfilename, mode='w', encoding='utf-8') as newfile:
                    for content in newline:  # 将新内容逐行写入
                        newfile.write(content + "\n")
                newfile.close()
                messagebox.showinfo('提示', '已生成loads文件!')  # 弹出对口框

        file.close()


# 运行脚本
if __name__ == '__main__':
    # filename = "E:\\02_Work\\02 Project\\2023\\03 Adams\\230918\\Roller130.fem"
    # setnum = 1
    # direction = "FY"
    # force = 1

    filename = filedialog.askopenfilename(title="请选择包含SET的FEM文件")
    setnum = askstring(title="", prompt="请输入SET编号", initialvalue="1")
    direction = askstring(title="", prompt="请输入载荷方向", initialvalue="FY")
    force = askstring(title="", prompt="请输入载荷数值", initialvalue="1")

    makeAdamsLoadFile(filename, setnum, direction, force)


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空