1.完善了attrs的功能。

2.增加了生成断面前文件是否被占用的判断。
This commit is contained in:
n3040 2022-07-25 22:02:45 +08:00
parent e4754a3193
commit 3f1560402a
2 changed files with 32 additions and 7 deletions

View File

@ -1,6 +1,8 @@
import os.path import os.path
from collections import OrderedDict from collections import OrderedDict
import re import re
import attrs
import pandas as pd import pandas as pd
from attrs import define from attrs import define
from tkinter.messagebox import NO from tkinter.messagebox import NO
@ -509,6 +511,7 @@ class ContinuousPlate:
@define @define
class ControlFile: class ControlFile:
_z_excel_file_path: bool = attrs.field(init=True, kw_only=False)
_z_file_path: str = "" _z_file_path: str = ""
_dwg_file_path: str = "" _dwg_file_path: str = ""
_from_tower_name: str = "" _from_tower_name: str = ""
@ -519,8 +522,11 @@ class ControlFile:
_s_file_path: str = "" _s_file_path: str = ""
_dir_prefix: str = "" _dir_prefix: str = ""
_z_file_name: str = "" _z_file_name: str = ""
_close_cad_document: bool = attrs.field(init=True, kw_only=False, default=True)
def __init__(self, z_excel_file_path): # def __init__(self, z_excel_file_path):
def __attrs_post_init__(self):
# self._close_cad_document=close_cad_document
z_excel_file_path = self._z_excel_file_path
excel_pf = pd.read_excel(z_excel_file_path) excel_pf = pd.read_excel(z_excel_file_path)
pf_dict = excel_pf.to_dict("records")[0] pf_dict = excel_pf.to_dict("records")[0]
z_excel_path = os.path.split(z_excel_file_path) z_excel_path = os.path.split(z_excel_file_path)
@ -537,6 +543,9 @@ class ControlFile:
self._dwg_file_path = os.path.join(dir_prefix, pf_dict["DWG文件"]) self._dwg_file_path = os.path.join(dir_prefix, pf_dict["DWG文件"])
self._s_file_path = os.path.join(dir_prefix, pf_dict["S文件"]) self._s_file_path = os.path.join(dir_prefix, pf_dict["S文件"])
def get_zt_dwg_file_path(self): # 获得生成的dwg文件名路径
return os.path.join(self._dir_prefix, "ZT" + self._z_file_name + ".dwg")
def draw(self): def draw(self):
continousePlate = ContinuousPlate( continousePlate = ContinuousPlate(
self._dwg_file_path, self._dwg_file_path,
@ -555,7 +564,6 @@ class ControlFile:
) )
string_impact_plate.draw() string_impact_plate.draw()
cad = continousePlate.cad cad = continousePlate.cad
cad.doc.SaveAs( cad.doc.SaveAs(self.get_zt_dwg_file_path())
os.path.join(self._dir_prefix, "ZT" + self._z_file_name + ".dwg") if self._close_cad_document:
) cad.doc.Close(False)
cad.doc.Close(False)

19
gui.py
View File

@ -1,3 +1,5 @@
import os.path
from ui.mainwindow import Ui_mainWindow from ui.mainwindow import Ui_mainWindow
from PyQt6 import QtWidgets from PyQt6 import QtWidgets
@ -8,6 +10,16 @@ from PWFile import ControlFile
class MainWindow(QMainWindow, Ui_mainWindow): class MainWindow(QMainWindow, Ui_mainWindow):
def _test_if_file_occupied(self, file_path):
if not os.path.exists(file_path):
return False
try:
with open(file_path, "wb") as file:
pass
return False
except PermissionError:
return True
def open_dialog(self): def open_dialog(self):
z_control_file_paths = QFileDialog.getOpenFileNames( z_control_file_paths = QFileDialog.getOpenFileNames(
self, self,
@ -17,7 +29,12 @@ class MainWindow(QMainWindow, Ui_mainWindow):
)[0] )[0]
for z_control_file_path in z_control_file_paths: for z_control_file_path in z_control_file_paths:
if z_control_file_path != "": if z_control_file_path != "":
cf = ControlFile(z_control_file_path) cf = ControlFile(z_control_file_path,close_cad_document=False)
if self._test_if_file_occupied(cf.get_zt_dwg_file_path()):
QMessageBox.warning(
self, "注意", f"{cf.get_zt_dwg_file_path()}被占用,请先关闭。"
)
return
cf.draw() cf.draw()
self.statusBar().showMessage( self.statusBar().showMessage(
f"{datetime.datetime.now()} Finished.", 8000 f"{datetime.datetime.now()} Finished.", 8000