|
@@ -5,14 +5,24 @@ import pandas as pd
|
|
|
import itertools
|
|
import itertools
|
|
|
import tkinter as tk
|
|
import tkinter as tk
|
|
|
from tkinter import *
|
|
from tkinter import *
|
|
|
|
|
+from tkinter import ttk
|
|
|
from tkinter.filedialog import askopenfilename
|
|
from tkinter.filedialog import askopenfilename
|
|
|
import math
|
|
import math
|
|
|
import numpy as np
|
|
import numpy as np
|
|
|
|
|
+import warnings
|
|
|
|
|
+warnings.filterwarnings('ignore', category=UserWarning, module='openpyxl')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+# Códigos ANSI de color
|
|
|
|
|
+ROJO = '\033[91m'
|
|
|
|
|
+VERDE = '\033[92m'
|
|
|
|
|
+AMARILLO = '\033[93m'
|
|
|
|
|
+AZUL = '\033[94m'
|
|
|
|
|
+RESET = '\033[0m'
|
|
|
|
|
+
|
|
|
# Print iterations progress
|
|
# Print iterations progress
|
|
|
-def printProgressBar (iteration, total, prefix = '', suffix = '', decimals = 1, length = 100, fill = '█', printEnd = "\r"):
|
|
|
|
|
|
|
+def printProgressBar (iteration, total, prefix = '', suffix = '', decimals = 1, length = 100, fill = '█', printEnd = "\r", clear_line = False):
|
|
|
"""
|
|
"""
|
|
|
Call in a loop to create terminal progress bar
|
|
Call in a loop to create terminal progress bar
|
|
|
@params:
|
|
@params:
|
|
@@ -24,14 +34,20 @@ def printProgressBar (iteration, total, prefix = '', suffix = '', decimals = 1,
|
|
|
length - Optional : character length of bar (Int)
|
|
length - Optional : character length of bar (Int)
|
|
|
fill - Optional : bar fill character (Str)
|
|
fill - Optional : bar fill character (Str)
|
|
|
printEnd - Optional : end character (e.g. "\r", "\r\n") (Str)
|
|
printEnd - Optional : end character (e.g. "\r", "\r\n") (Str)
|
|
|
|
|
+ clear_line - Optional : if True, clears the line instead of adding newline when complete (Bool)
|
|
|
"""
|
|
"""
|
|
|
percent = ("{0:." + str(decimals) + "f}").format(100 * (iteration / float(total)))
|
|
percent = ("{0:." + str(decimals) + "f}").format(100 * (iteration / float(total)))
|
|
|
filledLength = int(length * iteration // total)
|
|
filledLength = int(length * iteration // total)
|
|
|
bar = fill * filledLength + '-' * (length - filledLength)
|
|
bar = fill * filledLength + '-' * (length - filledLength)
|
|
|
- print(f'\r{prefix} |{bar}| {percent}% {suffix}', end = printEnd)
|
|
|
|
|
|
|
+ line = f'{prefix} |{bar}| {percent}% {suffix}'
|
|
|
|
|
+ # Agregar espacios al final para limpiar líneas anteriores más largas
|
|
|
|
|
+ print(f'\r{line:<150}', end = printEnd)
|
|
|
# Print New Line on Complete
|
|
# Print New Line on Complete
|
|
|
- if iteration == total:
|
|
|
|
|
- print()
|
|
|
|
|
|
|
+ if iteration == total:
|
|
|
|
|
+ if clear_line:
|
|
|
|
|
+ print('\r' + ' ' * 150 + '\r', end = '')
|
|
|
|
|
+ else:
|
|
|
|
|
+ print()
|
|
|
|
|
|
|
|
|
|
|
|
|
#diccionario donde se encuentran todos los coef de comb acciones de las normas
|
|
#diccionario donde se encuentran todos los coef de comb acciones de las normas
|
|
@@ -187,31 +203,102 @@ def borrar_patrones_carga():
|
|
|
printProgressBar(patternNames[1].index(name)+1, patternNames[0], prefix = 'Borrando patrones de carga existentes:', suffix = 'Completado', length = 50)
|
|
printProgressBar(patternNames[1].index(name)+1, patternNames[0], prefix = 'Borrando patrones de carga existentes:', suffix = 'Completado', length = 50)
|
|
|
|
|
|
|
|
|
|
|
|
|
-respuesta = input("¿Deseas borrar todos las combinaciones existentes? (Y/n): ")
|
|
|
|
|
-if respuesta.lower() == 'y' or len(respuesta) == 0:
|
|
|
|
|
|
|
+def crear_ventana_configuracion():
|
|
|
|
|
+ """Crea una ventana gráfica para configuración inicial"""
|
|
|
|
|
+ resultado = {'borrar_combos': False, 'borrar_cargas': False, 'norma': 'IAPF', 'vias': '1', 'elu_p_1_5': True}
|
|
|
|
|
+
|
|
|
|
|
+ ventana = tk.Tk()
|
|
|
|
|
+ ventana.title("Configuración de Combinaciones")
|
|
|
|
|
+ ventana.geometry("400x380")
|
|
|
|
|
+ ventana.attributes('-topmost', True)
|
|
|
|
|
+ script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
|
|
|
+ icon_path = os.path.join(script_dir, 'AYRE.ico')
|
|
|
|
|
+ ventana.iconbitmap(icon_path)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ # Título
|
|
|
|
|
+ titulo = tk.Label(ventana, text="Configuración Inicial", font=("Arial", 14, "bold"))
|
|
|
|
|
+ titulo.pack(pady=10)
|
|
|
|
|
+
|
|
|
|
|
+ # Checkbox 1: Borrar combinaciones
|
|
|
|
|
+ var_combos = tk.BooleanVar(value=True)
|
|
|
|
|
+ check_combos = tk.Checkbutton(ventana, text="Borrar combinaciones existentes", variable=var_combos, font=("Arial", 10))
|
|
|
|
|
+ check_combos.pack(anchor=tk.W, padx=20, pady=5)
|
|
|
|
|
+
|
|
|
|
|
+ # Checkbox 2: Borrar cargas
|
|
|
|
|
+ var_cargas = tk.BooleanVar(value=True)
|
|
|
|
|
+ check_cargas = tk.Checkbutton(ventana, text="Borrar cargas existentes", variable=var_cargas, font=("Arial", 10))
|
|
|
|
|
+ check_cargas.pack(anchor=tk.W, padx=20, pady=5)
|
|
|
|
|
+
|
|
|
|
|
+ # Frame para norma
|
|
|
|
|
+ frame_norma = tk.Frame(ventana)
|
|
|
|
|
+ frame_norma.pack(anchor=tk.W, padx=20, pady=10)
|
|
|
|
|
+ label_norma = tk.Label(frame_norma, text="Norma:", font=("Arial", 10))
|
|
|
|
|
+ label_norma.pack(side=tk.LEFT, padx=5)
|
|
|
|
|
+ var_norma = tk.StringVar(value="IAPF")
|
|
|
|
|
+ combo_norma = tk.ttk.Combobox(frame_norma, textvariable=var_norma, values=["IAPF", "IAP"], state="readonly", width=15)
|
|
|
|
|
+ combo_norma.pack(side=tk.LEFT, padx=5)
|
|
|
|
|
+
|
|
|
|
|
+ # Frame para vías
|
|
|
|
|
+ frame_vias = tk.Frame(ventana)
|
|
|
|
|
+ frame_vias.pack(anchor=tk.W, padx=20, pady=10)
|
|
|
|
|
+ label_vias = tk.Label(frame_vias, text="Vías cargadas:", font=("Arial", 10))
|
|
|
|
|
+ label_vias.pack(side=tk.LEFT, padx=5)
|
|
|
|
|
+ var_vias = tk.StringVar(value="1")
|
|
|
|
|
+ combo_vias = tk.ttk.Combobox(frame_vias, textvariable=var_vias, values=["1", "2", "3", "Más de 3"], state="readonly", width=15)
|
|
|
|
|
+ combo_vias.pack(side=tk.LEFT, padx=5)
|
|
|
|
|
+
|
|
|
|
|
+ # Checkbox 3: Combos ELU P con coeficientes 1.5
|
|
|
|
|
+ var_elu_p_1_5 = tk.BooleanVar(value=False)
|
|
|
|
|
+ check_elu_p = tk.Checkbutton(ventana, text="Combos ELU P con coeficientes a '1.5'", variable=var_elu_p_1_5, font=("Arial", 10))
|
|
|
|
|
+ check_elu_p.pack(anchor=tk.W, padx=20, pady=5)
|
|
|
|
|
+
|
|
|
|
|
+ # Botón OK
|
|
|
|
|
+ def on_ok():
|
|
|
|
|
+ resultado['borrar_combos'] = var_combos.get()
|
|
|
|
|
+ resultado['borrar_cargas'] = var_cargas.get()
|
|
|
|
|
+ resultado['norma'] = var_norma.get()
|
|
|
|
|
+ resultado['vias'] = var_vias.get()
|
|
|
|
|
+ resultado['elu_p_1_5'] = var_elu_p_1_5.get()
|
|
|
|
|
+ ventana.destroy()
|
|
|
|
|
+
|
|
|
|
|
+ boton_ok = tk.Button(ventana, text="Aceptar", command=on_ok, font=("Arial", 11), bg="#4CAF50", fg="white", padx=20, pady=10)
|
|
|
|
|
+ boton_ok.pack(pady=20)
|
|
|
|
|
+
|
|
|
|
|
+ ventana.mainloop()
|
|
|
|
|
+ return resultado
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+# Mostrar ventana de configuración
|
|
|
|
|
+config = crear_ventana_configuracion()
|
|
|
|
|
+
|
|
|
|
|
+# Asignar valores
|
|
|
|
|
+if config['borrar_combos']:
|
|
|
borrar_combos_existentes()
|
|
borrar_combos_existentes()
|
|
|
|
|
|
|
|
-respuesta = input("¿Deseas borrar todos las cargas existentes? (Y/n): ")
|
|
|
|
|
-if respuesta.lower() == 'y' or len(respuesta) == 0:
|
|
|
|
|
|
|
+if config['borrar_cargas']:
|
|
|
borrar_load_cases()
|
|
borrar_load_cases()
|
|
|
borrar_patrones_carga()
|
|
borrar_patrones_carga()
|
|
|
|
|
|
|
|
-
|
|
|
|
|
-#se selecciona la norma a utilizar para la comb acciones
|
|
|
|
|
-respuesta = input("¿La norma a seguir es la IAPF - 07? (Y / n [IAP - 11]): ")
|
|
|
|
|
-if respuesta.lower() == 'y' or len(respuesta) == 0:
|
|
|
|
|
- norma_proyecto = "IAPF"
|
|
|
|
|
- vias_cargadas = input("¿Cuantas vias hay cargadas a la vez 1, 2 o 3 (o más)?")
|
|
|
|
|
-
|
|
|
|
|
-else: "IAP"
|
|
|
|
|
|
|
+norma_proyecto = config['norma']
|
|
|
|
|
+vias_cargadas = config['vias']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#Extraccion de datos del excel
|
|
#Extraccion de datos del excel
|
|
|
|
|
|
|
|
-
|
|
|
|
|
-tk.Tk().withdraw()
|
|
|
|
|
-ruta_excel = askopenfilename()
|
|
|
|
|
|
|
+# Crear ventana para el diálogo de selección con icono
|
|
|
|
|
+root = tk.Tk()
|
|
|
|
|
+root.withdraw() # Oculta la ventana
|
|
|
|
|
+script_dir = os.path.dirname(os.path.abspath(__file__))
|
|
|
|
|
+try:
|
|
|
|
|
+ icon_path = os.path.join(script_dir, 'AYRE.ico')
|
|
|
|
|
+ root.iconbitmap(icon_path)
|
|
|
|
|
+except:
|
|
|
|
|
+ pass
|
|
|
|
|
+root.attributes('-topmost', True)
|
|
|
|
|
+ruta_excel = askopenfilename(parent=root)
|
|
|
|
|
+root.destroy()
|
|
|
|
|
|
|
|
#ruta_excel = "C:/Users/Daniel.p/Documents/14. Ay-A 0042 Foso ataque empuje tubos y cimentaciones grua ( PALENCIA)/1. MEMORIA/Comb_acciones.xlsx"
|
|
#ruta_excel = "C:/Users/Daniel.p/Documents/14. Ay-A 0042 Foso ataque empuje tubos y cimentaciones grua ( PALENCIA)/1. MEMORIA/Comb_acciones.xlsx"
|
|
|
|
|
|
|
@@ -290,8 +377,8 @@ todas_combinaciones = list(itertools.product(*[valores_por_patron[pat] for pat i
|
|
|
#funcion para comprobar que la combiacion de cargas es posible debido a las restricciones
|
|
#funcion para comprobar que la combiacion de cargas es posible debido a las restricciones
|
|
|
|
|
|
|
|
def validar_combinacion(comb, patrones, compatibilidad_df, restricciones_df):
|
|
def validar_combinacion(comb, patrones, compatibilidad_df, restricciones_df):
|
|
|
- #se comprueba la matriz de compatibilidad buscando por cada caga que este activa en este combo
|
|
|
|
|
- #otra targa que este activa y se comprueba en la matriz buscando una 'r'
|
|
|
|
|
|
|
+ #se comprueba la matriz de compatibilidad buscando por cada carga que este activa en este combo
|
|
|
|
|
+ #otra carga que este activa y se comprueba en la matriz buscando una 'r'
|
|
|
for i in range(len(patrones)):
|
|
for i in range(len(patrones)):
|
|
|
if comb[i]:
|
|
if comb[i]:
|
|
|
for j in range(i+1, len(patrones)):
|
|
for j in range(i+1, len(patrones)):
|
|
@@ -508,21 +595,26 @@ for combo in combinaciones_validas:
|
|
|
coef_var_ELUS[j] = normas["IAPF"]["CoefVar"]["Resto"]["psi2"]
|
|
coef_var_ELUS[j] = normas["IAPF"]["CoefVar"]["Resto"]["psi2"]
|
|
|
minorados_ELUS.append(coef_var_ELUS)
|
|
minorados_ELUS.append(coef_var_ELUS)
|
|
|
if (restricciones_df.loc[i,"Accion IAPF"] != "Sismo") and (restricciones_df.loc[i,"Tipo"] == "Accidental") and combo[i] != 0:
|
|
if (restricciones_df.loc[i,"Accion IAPF"] != "Sismo") and (restricciones_df.loc[i,"Tipo"] == "Accidental") and combo[i] != 0:
|
|
|
|
|
+ appended_for_acc = False
|
|
|
for k in range(len(combo)):
|
|
for k in range(len(combo)):
|
|
|
coef_var_ELUA = np.ones(len(patrones))
|
|
coef_var_ELUA = np.ones(len(patrones))
|
|
|
- if restricciones_df.loc[k,"Tipo"] == "Variable":
|
|
|
|
|
|
|
+ if (restricciones_df.loc[k,"Tipo"] == "Variable") and combo[k] != 0:
|
|
|
if restricciones_df.loc[k,"Accion IAPF"] == "Trafico":
|
|
if restricciones_df.loc[k,"Accion IAPF"] == "Trafico":
|
|
|
coef_var_ELUA[k] = normas["IAPF"]["CoefVar"]["Trafico"]["psi1"][vias_cargadas if int(vias_cargadas) < 4 else "3"]
|
|
coef_var_ELUA[k] = normas["IAPF"]["CoefVar"]["Trafico"]["psi1"][vias_cargadas if int(vias_cargadas) < 4 else "3"]
|
|
|
else:
|
|
else:
|
|
|
coef_var_ELUA[k] = normas["IAPF"]["CoefVar"]["Resto"]["psi1"]
|
|
coef_var_ELUA[k] = normas["IAPF"]["CoefVar"]["Resto"]["psi1"]
|
|
|
for j in range(len(combo)):
|
|
for j in range(len(combo)):
|
|
|
if (restricciones_df.loc[j,"Tipo"] == "Variable") and (j != k):
|
|
if (restricciones_df.loc[j,"Tipo"] == "Variable") and (j != k):
|
|
|
- #se asigna el coeficiente de la variable al resto de variables
|
|
|
|
|
|
|
+ #se asigna el coeficiente de la variable al resto de variables
|
|
|
if restricciones_df.loc[j,"Accion IAPF"] == "Trafico":
|
|
if restricciones_df.loc[j,"Accion IAPF"] == "Trafico":
|
|
|
coef_var_ELUA[j] = normas["IAPF"]["CoefVar"]["Trafico"]["psi2"]
|
|
coef_var_ELUA[j] = normas["IAPF"]["CoefVar"]["Trafico"]["psi2"]
|
|
|
else:
|
|
else:
|
|
|
coef_var_ELUA[j] = normas["IAPF"]["CoefVar"]["Resto"]["psi2"]
|
|
coef_var_ELUA[j] = normas["IAPF"]["CoefVar"]["Resto"]["psi2"]
|
|
|
- minorados_ELUP.append(coef_var_ELUA)
|
|
|
|
|
|
|
+ minorados_ELUA.append(coef_var_ELUA)
|
|
|
|
|
+ appended_for_acc = True
|
|
|
|
|
+ # Si no se encontraron variables activas, añadimos el vector por defecto (unos)
|
|
|
|
|
+ if not appended_for_acc:
|
|
|
|
|
+ minorados_ELUA.append(np.ones(len(patrones)))
|
|
|
|
|
|
|
|
else:
|
|
else:
|
|
|
if n_var == 1:
|
|
if n_var == 1:
|
|
@@ -545,7 +637,7 @@ for combo in combinaciones_validas:
|
|
|
coef_var_ELUP = np.ones(len(patrones))
|
|
coef_var_ELUP = np.ones(len(patrones))
|
|
|
coef_var_ELSC = np.ones(len(patrones))
|
|
coef_var_ELSC = np.ones(len(patrones))
|
|
|
coef_var_ELSF = np.ones(len(patrones))
|
|
coef_var_ELSF = np.ones(len(patrones))
|
|
|
- coef_var_ELSCP = np.ones(len(patrones))
|
|
|
|
|
|
|
+ coef_var_ELSCP =np.ones(len(patrones))
|
|
|
if (restricciones_df.loc[i,"Tipo"] == "Variable") and combo[i] != 0:
|
|
if (restricciones_df.loc[i,"Tipo"] == "Variable") and combo[i] != 0:
|
|
|
if restricciones_df.loc[i,"Accion IAPF"] == "Trafico":
|
|
if restricciones_df.loc[i,"Accion IAPF"] == "Trafico":
|
|
|
coef_var_ELSF[i] = normas["IAPF"]["CoefVar"]["Trafico"]["psi1"][vias_cargadas if int(vias_cargadas) < 4 else "3"]
|
|
coef_var_ELSF[i] = normas["IAPF"]["CoefVar"]["Trafico"]["psi1"][vias_cargadas if int(vias_cargadas) < 4 else "3"]
|
|
@@ -602,24 +694,54 @@ combos_ELSC = np.unique(np.array(combos_ELSC), axis=0)
|
|
|
combos_ELSF = np.unique(np.array(combos_ELSF), axis=0)
|
|
combos_ELSF = np.unique(np.array(combos_ELSF), axis=0)
|
|
|
combos_ELSCP = np.unique(np.array(combos_ELSCP), axis=0)
|
|
combos_ELSCP = np.unique(np.array(combos_ELSCP), axis=0)
|
|
|
|
|
|
|
|
-print("------------------------------------------------")
|
|
|
|
|
-print(combos_ELUP)
|
|
|
|
|
-print(len(combos_ELUP))
|
|
|
|
|
-print("------------------------------------------------")
|
|
|
|
|
-print(combos_ELUA)
|
|
|
|
|
-print(len(combos_ELUA))
|
|
|
|
|
-print("------------------------------------------------")
|
|
|
|
|
-print(combos_ELUS)
|
|
|
|
|
-print(len(combos_ELUS))
|
|
|
|
|
-print("------------------------------------------------")
|
|
|
|
|
-print(combos_ELSC)
|
|
|
|
|
-print(len(combos_ELSC))
|
|
|
|
|
-print("------------------------------------------------")
|
|
|
|
|
-print(combos_ELSF)
|
|
|
|
|
-print(len(combos_ELSF))
|
|
|
|
|
-print("------------------------------------------------")
|
|
|
|
|
-print(combos_ELSCP)
|
|
|
|
|
-print(len(combos_ELSCP))
|
|
|
|
|
|
|
+
|
|
|
|
|
+restricciones_array = restricciones_df.loc[:,"Tipo"]
|
|
|
|
|
+
|
|
|
|
|
+mascara = np.multiply(np.ones(len(restricciones_array)), (restricciones_array == "Variable").astype(int))
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+def limpiar_combos(combos, mascara, coef_comp):
|
|
|
|
|
+ combos_limpios = []
|
|
|
|
|
+ for combo in combos:
|
|
|
|
|
+ peligro = 0
|
|
|
|
|
+ combo_masc = np.multiply(combo, mascara)
|
|
|
|
|
+ for i, _ in enumerate(combo_masc):
|
|
|
|
|
+ if combo_masc[i] == coef_comp:
|
|
|
|
|
+ peligro += 1
|
|
|
|
|
+ if peligro < 2:
|
|
|
|
|
+ combos_limpios.append(combo)
|
|
|
|
|
+ return np.array(combos_limpios)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+if not config['elu_p_1_5']:
|
|
|
|
|
+ combos_ELUP = limpiar_combos(combos_ELUP, mascara, 1.5)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+combos_ELSC = limpiar_combos(combos_ELSC, mascara, 1)
|
|
|
|
|
+combos_ELSF = limpiar_combos(combos_ELSF, mascara, 1)
|
|
|
|
|
+combos_ELSCP = limpiar_combos(combos_ELSCP, mascara, 1)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+#print("------------------------------------------------")
|
|
|
|
|
+#print(combos_ELUP)
|
|
|
|
|
+#print(len(combos_ELUP), "ELU Persistente" )
|
|
|
|
|
+#print("------------------------------------------------")
|
|
|
|
|
+#print(combos_ELUA)
|
|
|
|
|
+#print(len(combos_ELUA), "ELU Accidental")
|
|
|
|
|
+#print("------------------------------------------------")
|
|
|
|
|
+#print(combos_ELUS)
|
|
|
|
|
+#print(len(combos_ELUS), "ELU Sismo")
|
|
|
|
|
+#print("------------------------------------------------")
|
|
|
|
|
+#print(combos_ELSC)
|
|
|
|
|
+#print(len(combos_ELSC), "ELS Caracteristico")
|
|
|
|
|
+#print("------------------------------------------------")
|
|
|
|
|
+#print(combos_ELSF)
|
|
|
|
|
+#print(len(combos_ELSF), "ELS Frecuente")
|
|
|
|
|
+#print("------------------------------------------------")
|
|
|
|
|
+#print(combos_ELSCP)
|
|
|
|
|
+#print(len(combos_ELSCP), "ELS Cuasipermanente")
|
|
|
|
|
+#print()
|
|
|
|
|
|
|
|
total_combos = len(combos_ELUP) + len(combos_ELSC) + len(combos_ELSF) + len(combos_ELSCP) + len(combos_ELUA) + len(combos_ELUS)
|
|
total_combos = len(combos_ELUP) + len(combos_ELSC) + len(combos_ELSF) + len(combos_ELSCP) + len(combos_ELUA) + len(combos_ELUS)
|
|
|
#creacion de los combos en SAP2000
|
|
#creacion de los combos en SAP2000
|
|
@@ -640,7 +762,7 @@ for combo in combos_ELUP:
|
|
|
|
|
|
|
|
#creacion de los combos ELU Accidentales
|
|
#creacion de los combos ELU Accidentales
|
|
|
tot = combo_num
|
|
tot = combo_num
|
|
|
-combo_num = 0
|
|
|
|
|
|
|
+combo_num = 0
|
|
|
|
|
|
|
|
for combo in combos_ELUA:
|
|
for combo in combos_ELUA:
|
|
|
combo_name = "ELU_ACC_{:03d}".format(combo_num)
|
|
combo_name = "ELU_ACC_{:03d}".format(combo_num)
|
|
@@ -649,7 +771,7 @@ for combo in combos_ELUA:
|
|
|
coeficiente = combo[idx]
|
|
coeficiente = combo[idx]
|
|
|
if coeficiente != 0:
|
|
if coeficiente != 0:
|
|
|
ret = SapModel.RespCombo.SetCaseList(combo_name, 0, patron, coeficiente)
|
|
ret = SapModel.RespCombo.SetCaseList(combo_name, 0, patron, coeficiente)
|
|
|
- printProgressBar(combo_num, total_combos, prefix = 'Creando combos ELU Accidental:', suffix = 'Completado', length = 50)
|
|
|
|
|
|
|
+ printProgressBar(tot + combo_num, total_combos, prefix = 'Creando combos ELU Accidental:', suffix = 'Completado', length = 50)
|
|
|
combo_num += 1
|
|
combo_num += 1
|
|
|
|
|
|
|
|
#creacion de los combos ELU Sismo
|
|
#creacion de los combos ELU Sismo
|
|
@@ -667,7 +789,7 @@ for combo in combos_ELUS:
|
|
|
|
|
|
|
|
#creacion de los combos ELS Caracteristico
|
|
#creacion de los combos ELS Caracteristico
|
|
|
tot += combo_num
|
|
tot += combo_num
|
|
|
-combo_num = 0
|
|
|
|
|
|
|
+combo_num = 0
|
|
|
|
|
|
|
|
for combo in combos_ELSC:
|
|
for combo in combos_ELSC:
|
|
|
combo_name = "ELS_C_{:03d}".format(combo_num)
|
|
combo_name = "ELS_C_{:03d}".format(combo_num)
|
|
@@ -695,7 +817,7 @@ for combo in combos_ELSF:
|
|
|
|
|
|
|
|
#creacion de los combos ELS Cuasi Permanente
|
|
#creacion de los combos ELS Cuasi Permanente
|
|
|
tot += combo_num
|
|
tot += combo_num
|
|
|
-combo_num = 0
|
|
|
|
|
|
|
+combo_num = 0
|
|
|
|
|
|
|
|
for combo in combos_ELSCP:
|
|
for combo in combos_ELSCP:
|
|
|
combo_name = "ELS_CP_{:03d}".format(combo_num)
|
|
combo_name = "ELS_CP_{:03d}".format(combo_num)
|
|
@@ -707,6 +829,8 @@ for combo in combos_ELSCP:
|
|
|
printProgressBar(tot+combo_num, total_combos, prefix = 'Creando combos ELS Cuasipermanente:', suffix = 'Completado', length = 50)
|
|
printProgressBar(tot+combo_num, total_combos, prefix = 'Creando combos ELS Cuasipermanente:', suffix = 'Completado', length = 50)
|
|
|
combo_num += 1
|
|
combo_num += 1
|
|
|
printProgressBar(total_combos, total_combos, prefix = 'Creando combos ELS Cuasipermanente:', suffix = 'Completado', length = 50)
|
|
printProgressBar(total_combos, total_combos, prefix = 'Creando combos ELS Cuasipermanente:', suffix = 'Completado', length = 50)
|
|
|
|
|
+print(f"{VERDE}Combos creados exitosamente{RESET}")
|
|
|
|
|
+
|
|
|
#creacion del combo envolvente
|
|
#creacion del combo envolvente
|
|
|
print()
|
|
print()
|
|
|
|
|
|
|
@@ -715,69 +839,77 @@ combo_name = "1. ENV ELU P"
|
|
|
ret = SapModel.RespCombo.Add(combo_name, 1)
|
|
ret = SapModel.RespCombo.Add(combo_name, 1)
|
|
|
comboNames = SapModel.RespCombo.GetNameList()
|
|
comboNames = SapModel.RespCombo.GetNameList()
|
|
|
patron = []
|
|
patron = []
|
|
|
-for i in range(comboNames[0]):
|
|
|
|
|
- if "ELU_P" in comboNames[1][i]: patron.append(comboNames[1][i])
|
|
|
|
|
|
|
+for j in range(comboNames[0]):
|
|
|
|
|
+ if "ELU_P" in comboNames[1][j]: patron.append(comboNames[1][j])
|
|
|
|
|
+
|
|
|
|
|
+# Calcular total de combos envolventes a crear
|
|
|
|
|
+total_envolventes = 0
|
|
|
|
|
+temp_comboNames = SapModel.RespCombo.GetNameList()
|
|
|
|
|
+for combo_type in ["ELU_P", "ELU_ACC", "ELU_SIS", "ELS_C_", "ELS_F_", "ELS_CP"]:
|
|
|
|
|
+ total_envolventes += sum(1 for idx in range(temp_comboNames[0]) if combo_type in temp_comboNames[1][idx])
|
|
|
|
|
+
|
|
|
|
|
+contador_envolvente = 0
|
|
|
for i, name in enumerate(patron):
|
|
for i, name in enumerate(patron):
|
|
|
ret = SapModel.RespCombo.SetCaseList(combo_name, 1, name, 1)
|
|
ret = SapModel.RespCombo.SetCaseList(combo_name, 1, name, 1)
|
|
|
- printProgressBar(i+1, comboNames[0], prefix = 'Creando combo envolvente ELU P:', suffix = 'Completado', length = 50)
|
|
|
|
|
-n=i
|
|
|
|
|
-
|
|
|
|
|
|
|
+ contador_envolvente += 1
|
|
|
|
|
+ printProgressBar(contador_envolvente, total_envolventes, prefix = 'Creando ELU P envolvente:', suffix = 'Completado', length = 50)
|
|
|
|
|
+print()
|
|
|
combo_name = "2. ENV ELU ACC"
|
|
combo_name = "2. ENV ELU ACC"
|
|
|
ret = SapModel.RespCombo.Add(combo_name, 1)
|
|
ret = SapModel.RespCombo.Add(combo_name, 1)
|
|
|
comboNames = SapModel.RespCombo.GetNameList()
|
|
comboNames = SapModel.RespCombo.GetNameList()
|
|
|
patron = []
|
|
patron = []
|
|
|
-for i in range(comboNames[0]):
|
|
|
|
|
- if "ELU_ACC" in comboNames[1][i]: patron.append(comboNames[1][i])
|
|
|
|
|
|
|
+for j in range(comboNames[0]):
|
|
|
|
|
+ if "ELU_ACC" in comboNames[1][j]: patron.append(comboNames[1][j])
|
|
|
for i, name in enumerate(patron):
|
|
for i, name in enumerate(patron):
|
|
|
ret = SapModel.RespCombo.SetCaseList(combo_name, 1, name, 1)
|
|
ret = SapModel.RespCombo.SetCaseList(combo_name, 1, name, 1)
|
|
|
- printProgressBar(n+i+1, comboNames[0], prefix = 'Creando combo envolvente ELU ACC:', suffix = 'Completado', length = 50)
|
|
|
|
|
-n+=i
|
|
|
|
|
-
|
|
|
|
|
|
|
+ contador_envolvente += 1
|
|
|
|
|
+ printProgressBar(contador_envolvente, total_envolventes, prefix = 'Creando ELU Acc envolvente:', suffix = 'Completado', length = 50)
|
|
|
|
|
+print()
|
|
|
combo_name = "3. ENV ELU SIS"
|
|
combo_name = "3. ENV ELU SIS"
|
|
|
ret = SapModel.RespCombo.Add(combo_name, 1)
|
|
ret = SapModel.RespCombo.Add(combo_name, 1)
|
|
|
comboNames = SapModel.RespCombo.GetNameList()
|
|
comboNames = SapModel.RespCombo.GetNameList()
|
|
|
patron = []
|
|
patron = []
|
|
|
-for i in range(comboNames[0]):
|
|
|
|
|
- if "ELU_SIS" in comboNames[1][i]: patron.append(comboNames[1][i])
|
|
|
|
|
|
|
+for j in range(comboNames[0]):
|
|
|
|
|
+ if "ELU_SIS" in comboNames[1][j]: patron.append(comboNames[1][j])
|
|
|
for i, name in enumerate(patron):
|
|
for i, name in enumerate(patron):
|
|
|
ret = SapModel.RespCombo.SetCaseList(combo_name, 1, name, 1)
|
|
ret = SapModel.RespCombo.SetCaseList(combo_name, 1, name, 1)
|
|
|
- printProgressBar(n+i+1, comboNames[0], prefix = 'Creando combo envolvente ELU ACC:', suffix = 'Completado', length = 50)
|
|
|
|
|
-n+=i
|
|
|
|
|
-
|
|
|
|
|
|
|
+ contador_envolvente += 1
|
|
|
|
|
+ printProgressBar(contador_envolvente, total_envolventes, prefix = 'Creando ELU Sis envolvente:', suffix = 'Completado', length = 50)
|
|
|
|
|
+print()
|
|
|
combo_name = "4. ENV ELS C"
|
|
combo_name = "4. ENV ELS C"
|
|
|
ret = SapModel.RespCombo.Add(combo_name, 1)
|
|
ret = SapModel.RespCombo.Add(combo_name, 1)
|
|
|
comboNames = SapModel.RespCombo.GetNameList()
|
|
comboNames = SapModel.RespCombo.GetNameList()
|
|
|
patron = []
|
|
patron = []
|
|
|
-for i in range(comboNames[0]):
|
|
|
|
|
- if "ELS_C_" in comboNames[1][i]: patron.append(comboNames[1][i])
|
|
|
|
|
|
|
+for j in range(comboNames[0]):
|
|
|
|
|
+ if "ELS_C_" in comboNames[1][j]: patron.append(comboNames[1][j])
|
|
|
for i, name in enumerate(patron):
|
|
for i, name in enumerate(patron):
|
|
|
ret = SapModel.RespCombo.SetCaseList(combo_name, 1, name, 1)
|
|
ret = SapModel.RespCombo.SetCaseList(combo_name, 1, name, 1)
|
|
|
- printProgressBar(n+i+1, comboNames[0], prefix = 'Creando combo envolvente ELS C:', suffix = 'Completado', length = 50)
|
|
|
|
|
-n+=i
|
|
|
|
|
-
|
|
|
|
|
|
|
+ contador_envolvente += 1
|
|
|
|
|
+ printProgressBar(contador_envolvente, total_envolventes, prefix = 'Creando ELS C envolvente:', suffix = 'Completado', length = 50)
|
|
|
|
|
+print()
|
|
|
|
|
|
|
|
combo_name = "5. ENV ELS F"
|
|
combo_name = "5. ENV ELS F"
|
|
|
ret = SapModel.RespCombo.Add(combo_name, 1)
|
|
ret = SapModel.RespCombo.Add(combo_name, 1)
|
|
|
comboNames = SapModel.RespCombo.GetNameList()
|
|
comboNames = SapModel.RespCombo.GetNameList()
|
|
|
patron = []
|
|
patron = []
|
|
|
-for i in range(comboNames[0]):
|
|
|
|
|
- if "ELS_F_" in comboNames[1][i]: patron.append(comboNames[1][i])
|
|
|
|
|
|
|
+for j in range(comboNames[0]):
|
|
|
|
|
+ if "ELS_F_" in comboNames[1][j]: patron.append(comboNames[1][j])
|
|
|
for i, name in enumerate(patron):
|
|
for i, name in enumerate(patron):
|
|
|
ret = SapModel.RespCombo.SetCaseList(combo_name, 1, name, 1)
|
|
ret = SapModel.RespCombo.SetCaseList(combo_name, 1, name, 1)
|
|
|
- printProgressBar(n+i+1, comboNames[0], prefix = 'Creando combo envolvente ELS F:', suffix = 'Completado', length = 50)
|
|
|
|
|
-n+=i
|
|
|
|
|
-
|
|
|
|
|
|
|
+ contador_envolvente += 1
|
|
|
|
|
+ printProgressBar(contador_envolvente, total_envolventes, prefix = 'Creando ELS F envolvente:', suffix = 'Completado', length = 50)
|
|
|
|
|
+print()
|
|
|
|
|
|
|
|
combo_name = "6. ENV ELS CP"
|
|
combo_name = "6. ENV ELS CP"
|
|
|
ret = SapModel.RespCombo.Add(combo_name, 1)
|
|
ret = SapModel.RespCombo.Add(combo_name, 1)
|
|
|
comboNames = SapModel.RespCombo.GetNameList()
|
|
comboNames = SapModel.RespCombo.GetNameList()
|
|
|
patron = []
|
|
patron = []
|
|
|
-for i in range(comboNames[0]):
|
|
|
|
|
- if "ELS_CP" in comboNames[1][i]: patron.append(comboNames[1][i])
|
|
|
|
|
|
|
+for j in range(comboNames[0]):
|
|
|
|
|
+ if "ELS_CP" in comboNames[1][j]: patron.append(comboNames[1][j])
|
|
|
for i, name in enumerate(patron):
|
|
for i, name in enumerate(patron):
|
|
|
ret = SapModel.RespCombo.SetCaseList(combo_name, 1, name, 1)
|
|
ret = SapModel.RespCombo.SetCaseList(combo_name, 1, name, 1)
|
|
|
- printProgressBar(n+i+1, comboNames[0], prefix = 'Creando combo envolvente ELS CP:', suffix = 'Completado', length = 50)
|
|
|
|
|
-printProgressBar(comboNames[0], comboNames[0], prefix = 'Creando combo envolvente ELS CP:', suffix = 'Completado', length = 50)
|
|
|
|
|
|
|
+ contador_envolvente += 1
|
|
|
|
|
+ printProgressBar(contador_envolvente, total_envolventes, prefix = 'Creando ELS CP envolvente:', suffix = 'Completado', length = 50)
|
|
|
|
|
|
|
|
print()
|
|
print()
|
|
|
-print("Combinaciones de acciones creadas con éxito.")
|
|
|
|
|
|
|
+print(f"{VERDE}Envolventes creadas con éxito.{RESET}")
|