当前位置: 首页 > news >正文

将二进制的stl文件转换为ascii的形式

总会遇到可多软件导出的stl是二进制形式,导致不能修改;自己写个程序转换下,以防后续使用没办法转化;
在这里插入图片描述

1.具体程序如下:

import sys
import vtk
import os
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLineEdit, QTextEdit, QFileDialogdef convert_stl_to_ascii(input_stl_path, output_stl_path):# 读取 STL 文件reader = vtk.vtkSTLReader()reader.SetFileName(input_stl_path)reader.Update()# 获取读取的数据polydata = reader.GetOutput()# 创建 STL 写入器writer = vtk.vtkSTLWriter()writer.SetFileName(output_stl_path)writer.SetInputData(polydata)writer.SetFileTypeToASCII()# 写入文件writer.Write()# 处理文件第一行,将其替换为 solid + 文件名file_name_without_ext = os.path.splitext(os.path.basename(input_stl_path))[0]new_first_line = f'solid {file_name_without_ext}'with open(output_stl_path, 'r+') as f:lines = f.readlines()if lines:lines[0] = new_first_line + '\n'f.seek(0)f.writelines(lines)f.truncate()def batch_convert_stl_files(input_folder, status_text):output_folder = f"{input_folder}_output"if not os.path.exists(output_folder):os.makedirs(output_folder)for root, _, files in os.walk(input_folder):for file in files:if file.lower().endswith('.stl'):input_file_path = os.path.join(root, file)output_file_name = os.path.splitext(file)[0] + ".stl"output_file_path = os.path.join(output_folder, output_file_name)convert_stl_to_ascii(input_file_path, output_file_path)status_text.append(f"已将 {input_file_path} 转换为 ASCII 格式的 {output_file_path}")class STLConverterApp(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):layout = QVBoxLayout()# 选择文件夹按钮self.select_button = QPushButton("选择文件夹")self.select_button.clicked.connect(self.select_folder)layout.addWidget(self.select_button)# 文件夹路径输入框self.folder_entry = QLineEdit()layout.addWidget(self.folder_entry)# 开始转换按钮self.start_button = QPushButton("开始转换")self.start_button.clicked.connect(self.start_conversion)layout.addWidget(self.start_button)# 状态文本框self.status_text = QTextEdit()self.status_text.setReadOnly(True)layout.addWidget(self.status_text)self.setLayout(layout)self.setWindowTitle("STL 文件批量转换工具")self.setGeometry(300, 300, 600, 400)def select_folder(self):folder = QFileDialog.getExistingDirectory(self, "选择文件夹")if folder:self.folder_entry.setText(folder)def start_conversion(self):input_folder = self.folder_entry.text()if input_folder:batch_convert_stl_files(input_folder, self.status_text)if __name__ == '__main__':app = QApplication(sys.argv)window = STLConverterApp()window.show()sys.exit(app.exec())

2.打包

打包命令如下:

C:\Users\xxx\.conda\envs\py310\Scripts\pyinstaller.exe --add-data="C:\Users\zpp\.conda\envs\py310\Library\bin\ffi-8.dll;." -F -w  pyside6.py

相关文章:

  • stm32F103、GD32F103读写Nor Flash实战指南
  • 吉利矩阵(DFS)
  • [AI]浅谈大模型应用开发的认知构建
  • ecovadis审核有什么原则?什么是ecovadis审核,有什么意义
  • 递归函数详解
  • Langchain-构建向量数据库和检索器
  • 【APM】NET Traces, Metrics and Logs to OLTP
  • 期货数据API对接实战指南
  • win11改回win10
  • 每日一题(小白)暴力娱乐篇31
  • Electricity Market Optimization(VI) - 机组组合问题的 GAMS 求解
  • 论文研读: LLaVA, 微调大模型以理解图像内容
  • pycharm配置python编译器,安装第三方库 (通俗易懂)
  • 【web考试系统的设计】
  • 前端开发 + Vue 2 + 卡片拖拽(带坐标系、左右互拖、多卡同容器)+ 学习参考
  • QT日历控件重写美化
  • T113S3学习记录—软件说明(三)
  • Linux:初学者的简单指令
  • CST仿真天线流程
  • 【Linux】第十章 配置和保护SSH
  • 10台核电新机组获核准,上海核电厂商独揽超500亿元订单
  • 法院为“外卖骑手”人身权益撑腰:依法认定实际投保人地位
  • 美军空袭也门拘留中心,已致68人死亡
  • 荣盛发展去年亏损约84.43亿元,要“过苦日子、紧日子”
  • 读科学发展的壮丽史诗,也读普通人的传奇
  • 艺术与医学的对话,瑞金医院办了一个展览