python对文本操作,生成可执行文件

.exe文件主要包含pingmianF.py文件和read_inp_auto.py文件

 

 

实现效果

 

 

代码

read_inp_auto.py

#-*- coding: utf-8 -*-
import re
import sys
import os
import os.path
import time
import pingmianF
from pingmianF import vector
import numpy as np
from tkinter import messagebox
from tkinter import filedialogls_weldline = []
ls_welddomain = []
ls1 = []
ls2 = []
def popupmsg(msg):messagebox.showerror('Warning', msg)#生成资源文件目录访问路径
def resource_path(relative_path):if getattr(sys, 'frozen', False): #是否Bundle Resourcebase_path = sys._MEIPASSelse:base_path = os.path.abspath(".")return os.path.join(base_path, relative_path)
def automation(path_inpname):#访问res文件夹下数据.txt的内容filename = resource_path(os.path.join("file",path_inpname))with open(filename,'r',encoding='utf-8') as fa:for line in fa:if "WELDLINE_" in line:ls1.append(line)if "WELDDOMAIN_" in line:ls2.append(line)print(ls1)print(ls2)# lines = fa.readlines()# print(lines)# f.close()# fa.close()# # with open ('project_incoordinata.txt','r',encoding = 'utf8') as f:# fa = open(r"project_1.inp", 'r',encoding="utf-8")# fb = open("weldline_out.txt",'w')# fc = open("welddomain_out.txt",'w')# # fd = open("all_node_coordinate_out.txt",'w')# for line in fa:##     if "WELDLINE_" in line:#         ls1.append(line)#     if "WELDDOMAIN_"in line:#         ls2.append(line)# print(ls1)# print(ls2)# ['*NSET, NSET=Closed_2_weldline_126578_143528\n', '*NSET, NSET=Closed_2_weldline_126051_144027\n', '*NSET, NSET=Open_3_weldline_126776_189374\n']# ['*ELSET, ELSET=Closed_2_welddomain_318468\n', '*ELSET, ELSET=Closed_2_welddomain_318666\n', '*ELSET, ELSET=Open_3_welddomain_628339\n']for i in range(0,len(ls1)):ls_weldline.append(ls1[i].strip('\n').split('=')[-1])#print(ls_weldline)for j in range(0,len(ls2)):# print(ls_welddomain[j])ls_welddomain.append(ls2[j].strip('\n').split('=')[-1])print(ls_welddomain)print(len(ls_welddomain))# ['Closed_2_weldline_126578_143528', 'Closed_2_weldline_126051_144027', 'Open_3_weldline_126776_189374']# ['Closed_2_welddomain_318468', 'Closed_2_welddomain_318666', 'Open_3_welddomain_628339']# fb.write(str(ls_weldline))# fc.write(str(ls_welddomain))# 从inp里面提取出需要的字符串存入,ls_weldline,ls_welddomainwelddomain_element = []ls_element = []for k in range(0,len(ls_welddomain)):welddomain_element.append(ls_welddomain[k].strip('\n').split('_')[-1])print("welddomain_element is"+str(welddomain_element))print(len(welddomain_element))# ['318468', '318666', '628339']# 提取每个热影响区的起始单元welddomain_ele_node = []filename = resource_path(os.path.join("file",path_inpname))print(filename)with open(filename,'r',encoding='utf-8') as f:# with open('project_1.inp', 'r') as f:for line in f:for j in range(0, len(welddomain_element)):if welddomain_element[j] in line:welddomain_ele_node.append(line)print(welddomain_ele_node )print(len(welddomain_ele_node) )# f.close()# print(welddomain_ele_node)# print(len(welddomain_ele_node))welddomain_ele = []welddomain_node = []welddomain_ele = welddomain_ele_node [0:len(welddomain_element)]print(welddomain_ele)print(len(welddomain_ele))# ['    628339,    126776,    189374,    189375,    189198,    189434,    189435,    189433,\n', '    318666,    144028,    127140,    126051,    144027,    144603,    144602,    144604,\n', '    318468,    143529,    143528,    126578,    126990,    144519,    144521,    144520,\n']#提取单元所在行包含的八个节点for j in range(0, len(welddomain_ele)):welddomain_ele[j] = welddomain_ele[j].strip( ).strip('\n').split(',')[1:4]# print(welddomain_ele)specprint(len(welddomain_ele))# [['    126776', '    189374', '    189375'], ['    144028', '    127140', '    126051'], ['    143529', '    143528', '    126578']]# 提取单元所包含节点里面的前三个节点,用来求取法向量# print(welddomain_ele[0][0])#获取节点坐标文档import refilename = resource_path(os.path.join("file",path_inpname))print(filename)node_coordinate = []with open(filename,'r',encoding='utf-8') as fa:# node_coordinate = []# with open('project_1.inp', 'r') as f:data = fa.read().splitlines()idx1 = data.index('*NODE,NSET=NALL')idx2 = data.index('**')output = data[idx1 + 1 : idx2]# fa.close()filename = resource_path(os.path.join("file","project_incoordinata.txt"))print(filename)node_coordinate = []# with open(filename,'r',encoding='utf-8') as fa:with open (filename,'w',encoding = 'utf8') as f:f.write('\n'.join(output))project_incoordinata = []# f.close()with open (filename,'r',encoding = 'utf8') as f:lines = f.readlines()for line in lines:line = line.strip('\n').split(',')project_incoordinata.append(line)print(len(project_incoordinata))print(project_incoordinata)# f.close()#['    126776', '    189374', '    189375', '    144028', '    127140', '    126051', '    143529', '    143528', '    126578']node = []print(len(welddomain_ele))for j in range (0,len(welddomain_ele)):for k in range(0,3):node.append(welddomain_ele[j][k])print(node)#['    126776', '    189374', '    189375', '    144028', '    127140', '    126051', '    143529', '    143528', '    126578']with open (filename,'r',encoding = 'utf8') as f:for line in f.readlines():str1 = line.split(',')[0]int_str1 = int(str1)for j in range(0,len(node)):if int_str1 == int(node[j]):node_coordinate.append(line)# f.close()# print(node_coordinate)#node_coordinate#['126051,        -213.32157,      -23.94757,       55.92702\n',# '126578,         -49.68242,      -23.94821,      -50.66072\n',# '126776,        -114.42335,      -23.94608,      -46.53174\n',# '127140,        -212.51184,      -23.98995,       56.26252\n',# '143528,         -48.68259,      -23.94195,      -50.67784\n',# '143529,         -48.67345,      -23.97157,      -50.15527\n',# '144028,        -212.89419,      -23.97285,       57.18638\n',# '189374,        -115.39657,      -23.94313,      -46.30191\n',# '189375,        -115.09989,      -23.98079,      -45.04446\n']node_list = []print(len(node))print(len(node_coordinate))for i in range (0,len(node)):for j in range (0,len(node_coordinate)):str1 = node_coordinate[j].strip(' ').split(',')[0]str2 = node[i].strip(' ')# print(str1)# print(str2)str3 = node_coordinate[j].strip(' ').strip('\n').split(',')[1:4]if int(str1) == int(str2):node_list.append(str3)print(node_list)# print(node_list[0])# node_list = np.array(node_list)# print(node_list)# for i in range(0,len(node_list)):#     node_list[i] = node_list[i].astype(np.float64)## print(node_list)##['126776,        -114.42335,      -23.94608,      -46.53174\n',# '189374,        -115.39657,      -23.94313,      -46.30191\n',# '189375,        -115.09989,      -23.98079,      -45.04446\n',# '144028,        -212.89419,      -23.97285,       57.18638\n',# '127140,        -212.51184,      -23.98995,       56.26252\n',# '126051,        -213.32157,      -23.94757,       55.92702\n',# '143529,         -48.67345,      -23.97157,      -50.15527\n',# '143528,         -48.68259,      -23.94195,      -50.67784\n',# '126578,         -49.68242,      -23.94821,      -50.66072\n']# [['        -114.42335', '      -23.94608', '      -46.53174'],# ['        -115.39657', '      -23.94313', '      -46.30191'],# ['        -115.09989', '      -23.98079', '      -45.04446'],# ['        -212.89419', '      -23.97285', '       57.18638'],# ['        -212.51184', '      -23.98995', '       56.26252'],# ['        -213.32157', '      -23.94757', '       55.92702'],# ['         -48.67345', '      -23.97157', '      -50.15527'],# ['         -48.68259', '      -23.94195', '      -50.67784'],# ['         -49.68242', '      -23.94821', '      -50.66072']]# fa.close()## f.close()# f1 = open('weld-current - 副本1.txt', 'r')# f1 = open('weld-current - 副本1.txt', 'w')# f2 = open('weld-current_modify.wdf', 'a')filename1 = resource_path(os.path.join("file","weld-current_modify.wdf"))os.remove(filename1)filename2 = resource_path(os.path.join("file","weld_current.txt"))f1 = open(filename1,'a',encoding='utf-8')f1.write('<weld_definition>\n')# f1.close()# f2 = open('weld-current_modify.wdf', 'a')#import os#try:#except# f2.write('<weld_definition>\n')# for line in f1:# def Macro1(test_wdomain,test_wline):j = 0with open(filename2,'r',encoding='utf-8') as f2:# content = f1.read()# f1.seek(0,0)# f1.write('<weld_definition>\n'+content)for i in range(0,len(ls_welddomain)):lines = f2.read()f2.seek(0)# if '%welddomain' in line:# f1.write(line.replace('%welddomain','welddomain1234_4567'))## lines = lines.replace('%Line_Weld','weld_line[i]')# print('weld_line[i]')lines = lines.replace('%New_Line',ls_weldline[i].upper())lines = lines.replace('%plate_thickness', ls_weldline[i].strip('\n').split('_')[1])lines = lines.replace('%welddomain',"PART-1-1_"+ ls_welddomain[i].upper())lines = lines.replace('%start_element', ls_welddomain[i].strip('\n').split('_')[-1])lines = lines.replace('%reference_normal',str(pingmianF.vector(node_list[j],node_list[j+1],node_list[j+2])))print(vector(node_list[j], node_list[j + 1], node_list[j + 2]))# if '%weldline' in line:# f1.write(line.replace('%weldline', 'weldline1234_4567'))lines = lines.replace('%weldline', "PART-1-1_"+ ls_weldline[i].upper()+"_nodal")lines = lines.replace('%start_node', ls_weldline[i].strip('\n').split('_')[-1])lines = lines.replace('%weld_type', ls_welddomain[i].strip('\n').split('_')[0].capitalize())f1.write(lines)j = j+3f1.write('</weld_definition>')f1.close()f2.close()fa.close()f.close()
if __name__ == '__main__':path_inpname = filedialog.askopenfilenames(title="Select Text File",filetypes=[("INP File", "*.inp"), ("All Files", "*.*")])# print(path_inpname)automation(path_inpname[0])# try:#     automation(path_inpname[0])# except:#     popupmsg('工具运行不成功!')
# f2.close()

pingmianF.py

# import numpy as np
#
# def compute_normal_vector(point1, point2, point3):
#     vector1 = np.array(point2) - np.array(point1)
#     vector2 = np.array(point3) - np.array(point1)
#     normal_vector = np.cross(vector1, vector2)
#     return normal_vector
#
# # 示例输入
# point1 = [-114.42335,      -23.94608,      -46.53174]
# point2 = [-115.39657,      -23.94313,      -46.30191]
# point3 = [-115.09989,      -23.98079,      -45.04446]
#
# normal_vector = compute_normal_vector(point1, point2, point3)
# print(normal_vector)
# # 在上面的代码示例中,我们使用了numpy库来进行向量的计算。
# # compute_normal_vector函数接受三个点作为输入,然后使用numpy库中的array函数将这些点转换为数组。
# # 接着,我们计算两个向量vector1和vector2,它们分别是point2-point1和point3-point1。
# # 最后,我们使用numpy库中的cross函数计算向量的叉积,得到平面的法向量。# import read_inp_auto as read_inp
import numpy as npp1 =['        -114.42335', '      -23.94608', '      -46.53174']
p2 =['        -115.39657', '      -23.94313', '      -46.30191']
p3 =['        -115.09989', '      -23.98079', '      -45.04446']def vector(p1,p2,p3):# 定义三个点的坐标point1 = np.array(p1)point2 = np.array(p2)point3 = np.array(p3)float_point1 = point1.astype(np.float64)float_point2 = point2.astype(np.float64)float_point3 = point3.astype(np.float64)# 计算两个向量vector1 = float_point2 - float_point1vector2 = float_point3 - float_point1# 计算法向量normal_vector = np.cross(vector1, vector2)# 归一化为单位向量unit_normal_vector = normal_vector / np.linalg.norm(normal_vector)vector_final =",".join(("{:.4f}".format(num) for num in unit_normal_vector))return vector_final
# print(vector(p1,p2,p3))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/338521.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

61. UE5 RPG 实现敌人近战攻击技能和转向攻击

在前面&#xff0c;我们实现了敌人的AI系统&#xff0c;敌人可以根据自身的职业进行匹配对应的攻击方式。比如近战战士会靠近目标后进行攻击然后躲避目标的攻击接着进行攻击。我们实现了敌人的AI行为&#xff0c;但是现在还没有实现需要释放的技能&#xff0c;接下来&#xff0…

VBA字典与数组第十五讲:多行多列数组与同列数单行数组间的运算规则

《VBA数组与字典方案》教程&#xff08;10144533&#xff09;是我推出的第三套教程&#xff0c;目前已经是第二版修订了。这套教程定位于中级&#xff0c;字典是VBA的精华&#xff0c;我要求学员必学。7.1.3.9教程和手册掌握后&#xff0c;可以解决大多数工作中遇到的实际问题。…

开源模型应用落地-LangSmith试炼-入门初体验-监控和自动化(五)

一、前言 在许多应用程序中&#xff0c;特别是在大型语言模型(LLM)应用程序中&#xff0c;收集用户反馈以了解应用程序在实际场景中的表现是非常重要的。 LangSmith可以轻松地将用户反馈附加到跟踪数据中。通常最好提供一个简单的机制(如赞成和反对按钮)来收集用户对应用程序响…

Vue3中的常见组件通信之props和自定义事件

Vue3中的常见组件通信 概述 ​ 在vue3中常见的组件通信有props、mitt、v-model、 r e f s 、 refs、 refs、parent、provide、inject、pinia、slot等。不同的组件关系用不同的传递方式。常见的撘配形式如下表所示。 组件关系传递方式父传子1. props2. v-model3. $refs4. 默认…

【计算机毕业设计】331基于微信小程序的家庭财务管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

Linux——多线程(一)

一、线程的概念 1.1线程概念 教材中的概念&#xff1a; (有问题?) 线程是进程内部的一个执行分支&#xff0c;线程是CPU调度的基本单位 之前我们讲的进程&#xff1a; 加载到内存中的程序&#x…

数据库与缓存⼀致性⽅案

数据库与缓存⼀致性⽅案 1、背景2、数据⼀致性⽅案设计3、数据⼀致性⽅案流程图4、关键代码4.1、 处理数据⼀致性的消息队列⼊⼝4.2、数据⼀致性配置的常量信息 1、背景 现有的业务场景下&#xff0c;都会涉及到数据库以及缓存双写的问题&#xff0c;⽆论是先删除缓存&#xf…

claude3国内API接口对接

众所周知&#xff0c;由于地理位置原因&#xff0c;Claude3不对国内开放&#xff0c;而国内的镜像网站使用又贵的离谱&#xff01; 因此&#xff0c;团队萌生了一个想法&#xff1a;为什么不创建一个一站式的平台&#xff0c;让用户能够通过单一的接口与多个模型交流呢&#x…

壁纸动态-Mac电脑-4K超高清[po破]动态壁纸[解]Dynamic WallPaper 安装使用教程

Mac分享吧 文章目录 效果一、准备工作二、开始安装1、双击运行软件&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功 三、运行调试1、打开软件&#xff0c;选择自己喜欢的壁纸2、调整设置&#xff0c;使多个壁…

OpenAI 再次刷新认知边界:GPT-4 颠覆语音助手市场,流畅度直逼真人互动?

前言 近日&#xff0c;美国人工智能研究公司 OpenAI 发布了其最新旗舰模型 GPT-4o&#xff0c;这一革命性的进展不仅标志着人工智能领域的新突破&#xff0c;更预示着即将步入一个全新的交互时代&#xff1f;GPT-4o 的发布&#xff0c;对于我们来说&#xff0c;意味着人工智能…

23.Labview中的数值类型讨论 ---- 位(bit)、字节(byte)、I8、U8、单双精度、复数

hello&#xff0c;大家好&#xff0c;本篇向大家介绍一个最常用但最容易让人忽略和最容易犯错的知识&#xff1a;数值。 “数值” 这个概念在Labview中被涉及的还是很多的&#xff0c;几乎任何一个程序都无可避免的会用到&#xff0c;但我相信大家绝大多数人对数值这个概念应用…

低代码开发平台(Low-code Development Platform)的模块组成部分

低代码开发平台&#xff08;Low-code Development Platform&#xff09;的模块组成部分主要包括以下几个方面&#xff1a; 低代码开发平台的模块组成部分可以按照包含系统、模块、菜单组织操作行为等维度进行详细阐述。以下是从这些方面对平台模块组成部分的说明&#xff1a; …

python编程:SQLite 管理图片数据库

在本博客中&#xff0c;我们将介绍如何使用 wxPython 和 sqlite3 模块构建一个 GUI 应用程序&#xff0c;该程序可以遍历指定文件夹中的所有图片&#xff0c;并将其信息存储到 SQLite 数据库中。 C:\pythoncode\new\InputImageOFFolderTOSqlite.py 项目简介 我们的目标是创建…

【Modelground】个人AI产品MVP迭代平台(2)——网站从0-1部署教程

文章目录 1.选购一台云服务器2. 购买域名3. 通过nginx部署静态网站4. 通过gitee在云服务器拉取代码5. ICP备案总结 1.选购一台云服务器 目前阿里云在促销&#xff0c;一台2核2GB内存3Mbps宽带的云服务器&#xff0c;一年只需要99元&#xff0c;学生更便宜&#xff0c;我认为这…

LitCTF部分wp

litctf wp 第一次ak了web和misc&#xff0c;非常激动&#xff0c;感谢lictf给我这个机会 最终成果 全靠队里的密码逆向✌带飞。一个人就砍了近一半的分数 这里是我们队的wp web exx 题目名反过来就是xxe&#xff0c;考察xxe&#xff0c;查看登录的数据包 发现传的就是xml…

【Java数据结构】详解LinkedList与链表(四)

&#x1f512;文章目录&#xff1a; 1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; 2.什么是LinkedList 3.LinkedList的使用 3.1LinkedList的构造方法 3.2LinkedList的其他常用方法介绍 addAll方法 subList方法 LinkedList的常用方法总使…

携程梁建章:持续投资创新与AI,开启旅游行业未来增长

5月30至31日&#xff0c;携程集团在上海和张家界举办Envision 2024全球合作伙伴大会&#xff0c;邀请超50个国家和地区的1600余名外籍旅游业嘉宾与会&#xff0c;共同探讨中国跨境旅游市场发展机遇&#xff0c;讲好中国故事。 携程国际业务增速迅猛&#xff0c;创新与AI解锁未…

【设计模式深度剖析】【4】【结构型】【组合模式】| 以文件系统为例加深理解

&#x1f448;️上一篇:适配器模式 | 下一篇:桥接模式&#x1f449;️ 设计模式-专栏&#x1f448;️ 目 录 组合模式定义英文原话直译如何理解&#xff1f; 3个角色UML类图代码示例 组合模式的优点组合模式的使用场景示例解析&#xff1a;文件系统UML类图代码示例 组合模…

sqoop操作

介绍 sqoop是隶属于Apache旗下的, 最早是属于cloudera公司的,是一个用户进行数据的导入导出的工具, 主要是将关系型的数据库(MySQL, oracle...)导入到hadoop生态圈(HDFS,HIVE,Hbase...) , 以及将hadoop生态圈数据导出到关系型数据库中 操作 将数据从mysql中导入到HDFS中 1.全量…

【用Python画画】六一儿童节画爱心

本文收录于 《Python编程入门》专栏&#xff0c;从零基础开始&#xff0c;分享一些Python编程基础知识&#xff0c;欢迎关注&#xff0c;谢谢&#xff01; 文章目录 一、前言二、代码示例三、知识点梳理四、总结 一、前言 本文介绍如何使用Python的海龟画图工具turtle&#xf…