DMU50_GUI_PY/funct_gen.py
Eduard Gerlitz 377fb1422f .
2025-03-11 15:06:20 +01:00

134 lines
5.2 KiB
Python

# funct_gen.py
import os
import time
import pandas as pd
import paramiko
import yaml
import shutil
# Function to generate the DMUAUT_CFG.SPF configuration file and save selected parameter sets
def generate_config_spf(folder_output, input_vars, selected_params):
# Get the current timestamp for folder name (format: YYMMDD_HHmmSS)
timestamp = time.strftime("%y%m%d_%H%M%S")
folder_path = os.path.join(folder_output, f"{timestamp}")
# Create the folder with the timestamp
if not os.path.exists(folder_path):
os.makedirs(folder_path)
# Define the file path for the SPF configuration file
spf_file_path = os.path.join(folder_path, "DMUAUT_CFG.SPF")
# Generate the SPF file content
with open(spf_file_path, "w") as spf_file:
spf_file.write(f"; CFG FILE FOR DMU50 AUTOMATION\n")
spf_file.write(f"; GENERATED: {timestamp}\n")
spf_file.write("; ---------------------------------------------------\n")
# Iterate over the input variables (each group), and write them into the file
for group_name, variables in input_vars.items():
for var_name, var_value in variables.items():
spf_file.write(f"{var_name.upper()} = {var_value.get()}\n")
spf_file.write("\n")
spf_file.write("; ---------------------------------------------------\n")
# Define the file path for the text file with selected parameter sets
selected_params_file_path = os.path.join(folder_path, "selected_param_sets.txt")
# Save the currently selected parameter sets in a .txt file
with open(selected_params_file_path, "w") as param_file:
param_file.write("Selected Parameter Sets:\n")
for group_name, param_name in selected_params.items():
# Extract the actual value from the tk.StringVar object using .get()
param_file.write(f"{group_name}: {param_name.get()}\n")
print(f"Configuration files saved in {folder_path}")
def generate_config_spf_custom1(folder_output, input_vars, selected_params, filetransfer=False):
filename = "CFG_INL.SPF"
filename2 = "_N_CFG_INL_SPF"
# Get the current timestamp for folder name (format: YYMMDD_HHmmSS)
timestamp = time.strftime("%y%m%d_%H%M%S")
folder_path = os.path.join(folder_output, f"{timestamp}")
# Create the folder with the timestamp
if not os.path.exists(folder_path):
os.makedirs(folder_path)
# Define the file path for the SPF configuration file
spf_file_path = os.path.join(folder_path, filename)
xlsx_path = "cfg_inlay_PUTx.xlsx"
# Extract grid parameters
x_num = int(input_vars['inlay']['INL_X_NUM'].get()) # Number of columns
y_num = int(input_vars['inlay']['INL_Y_NUM'].get()) # Number of rows
x_offset = float(input_vars['inlay']['INL_X_OFFSET'].get()) # X offset
y_offset = float(input_vars['inlay']['INL_Y_OFFSET'].get()) # Y offset
# Check if Excel file exists, if not create it with 'x' values
if not os.path.exists(xlsx_path):
df = pd.DataFrame("x", index=range(x_num), columns=range(y_num))
df.to_excel(xlsx_path, index=False, header=False)
# Load Excel file
df = pd.read_excel(xlsx_path, header=None, dtype=str).fillna("")
df = df.reindex(range(x_num), fill_value=0).reindex(columns=range(y_num), fill_value=0)
df = df.map(lambda x: 1 if str(x).strip().lower() == "x" else 0)
# Generate the SPF file content
with open(spf_file_path, "w") as spf_file:
spf_file.write(f"; CFG FILE FOR DMU50 AUTOMATION\n")
spf_file.write(f"; GENERATED: {timestamp}\n")
spf_file.write("; ---------------------------------------------------\n")
# Write WP_X[i] and WP_Y[i] values
cnt = 0
for j in range(y_num): # Rows
for i in range(x_num): # Columns
if df.iloc[i, j] == 1: # Consider only marked positions
spf_file.write(f"WP_X[{cnt}]={x_offset * i}\n")
spf_file.write(f"WP_Y[{cnt}]={y_offset * j}\n")
cnt += 1
spf_file.write(f"WP_NUM={cnt}\n")
spf_file.write(f"M17\n")
spf_file.write("\n; ---------------------------------------------------\n")
print(f"Configuration file saved at: {spf_file_path}")
if filetransfer:
spf_file_path2 = os.path.join(folder_path, filename2)
shutil.copyfile(spf_file_path, spf_file_path2)
#try:
# Transfer to Sinumerik
url2 = "192.168.214.1"
ssh_username = "manufact"
ssh_password = "SUNRISE"
upload_folder_nc = "/nckfs/_N_MPF_DIR/_N_AUTO_ROB_DIR"
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(url2,username=ssh_username,password=ssh_password)
sftp = ssh.open_sftp()
sftp.chdir(upload_folder_nc)
if filename2 in sftp.listdir():
sftp.remove(filename2)
sftp.put(spf_file_path2, filename2)
sftp.close()
ssh.close()
os.remove(spf_file_path2)
print(f"------->>>> FILE TRANSFERED TO SINUMERIK ------->>>> ")
#except Exception as e:
# print(f"ERROR IN FILETRANSFER {e}")
else:
os.startfile(folder_path)