Kaynağa Gözat

A medio camino de varias cosas (gen cargas sin excel y gen archivo JSON)

dacowars 3 hafta önce
ebeveyn
işleme
22a92d410b
1 değiştirilmiş dosya ile 125 ekleme ve 8 silme
  1. 125 8
      Comb_acciones.py

+ 125 - 8
Comb_acciones.py

@@ -630,7 +630,7 @@ def generar_combinaciones_norma_IAPF(combinaciones_validas, restricciones_df, no
 
     restricciones_array = restricciones_df.loc[:,"Tipo"]
 
-    mascara = np.multiply(np.ones(len(restricciones_array)), (restricciones_array == "Variable").astype(int))
+    #mascara = np.multiply(np.ones(len(restricciones_array)), (restricciones_array == "Variable").astype(int))
 
 
     #combos_ELUP = limpiar_combos(combos_ELUP, mascara, 1.5, restricciones_df)
@@ -663,7 +663,7 @@ def crear_combo_envolvente(combo_name = "", busca = "", total_envolventes = 0, a
         if busca in comboNames[1][j]: patron.append(comboNames[1][j])  
     if len(patron):
         ret = SapModel.RespCombo.Add(combo_name, 1)
-        for i, name in enumerate(patron):
+        for _, name in enumerate(patron):
             ret = SapModel.RespCombo.SetCaseList(combo_name, 1, name, 1)
             contador_envolvente += 1
             printProgressBar(contador_envolvente + acumulador, total_envolventes, prefix = f'Creando {combo_name} envolvente:', suffix = 'Completado', length = 50)
@@ -872,6 +872,7 @@ def crear_ventana_materiales(parent):
             confirmacion.config(text="Error al establecer las unidades.", fg="red")
             return
         ret_get, _, _, _, _ = SapModel.PropMaterial.GetMaterial(var_material.get())
+        print(ret_get)
         if ret_get == 0:
             ret = SapModel.PropMaterial.AddMaterial(var_material.get(),
                                             2,
@@ -879,9 +880,8 @@ def crear_ventana_materiales(parent):
                                             Standard = "EN 1992-1-1 per EN 206-1",
                                             Grade = var_material.get())
             print(ret)
-        if (ret[0] != var_material.get()) or (ret != 0):
-            confirmacion.config(text="Error al añadir el material.", fg="red")
-            return
+        #if (ret[0] != var_material.get()):
+        #    confirmacion.config(text="Error al añadir el material.", fg="red")
         ret = SapModel.PropFrame.SetRectangle(var_nombre.get(),
                                         var_material.get(),
                                        float(var_canto.get()),
@@ -889,6 +889,7 @@ def crear_ventana_materiales(parent):
         if ret != 0:
             confirmacion.config(text="Error al añadir la sección.", fg="red")
             return
+        #aqui se puede añadir la cuantia de armado que se quiera
         ret = SapModel.PropFrame.SetRebarBeam(var_nombre.get(),
                                         "B500 SD",
                                         "B500 SD",
@@ -963,7 +964,7 @@ def crear_ventana_geometria(parent):
     """Crea una ventana gráfica para definición de la geometría"""
     ventana_geo = tk.Toplevel(parent)
     ventana_geo.title("Definición de Geometría")
-    ventana_geo.geometry("500x400")
+    ventana_geo.geometry("550x400")
     ventana_geo.attributes('-topmost', True)
     ventana_geo.attributes('-topmost', False)
     script_dir = os.path.dirname(os.path.abspath(__file__))
@@ -974,16 +975,122 @@ def crear_ventana_geometria(parent):
     titulo = tk.Label(ventana_geo, text="Definición de Geometría", font=("Arial", 14, "bold"))
     titulo.pack(pady=20)
 
+    frame_geometria =tk.Frame(ventana_geo)
+    frame_geometria.pack(anchor=tk.W, padx=0, pady=10, fill = tk.X)
+    label_geometria = tk.Label(frame_geometria, text="LI\t        LS\t                 HI\t           HD", font=("Arial", 10))
+    label_geometria.pack(side=tk.LEFT, padx=120)
+    frame_seccion = tk.Frame(ventana_geo)
+    frame_seccion.pack(anchor=tk.W, padx=10, pady=10)
+    label_seccion = tk.Label(frame_seccion, text="Sección:", font=("Arial", 10))
+    label_seccion.pack(side=tk.LEFT, padx=5)
+    # utilizar los valores de ret para hacer un desplegable con las secciones disponibles
     ret = SapModel.PropFrame.GetNameList()
+    var_seccion_LI = tk.StringVar(value=ret[1][0])
+    var_seccion_LD = tk.StringVar(value=ret[1][0])
+    var_seccion_HI = tk.StringVar(value=ret[1][0])
+    var_seccion_HD = tk.StringVar(value=ret[1][0])
+    combo_seccion_LI = tk.ttk.Combobox(frame_seccion, textvariable=var_seccion_LI,
+                                    values=ret[1], 
+                                    state="readonly", width=10)
+    combo_seccion_LI.pack(side=tk.LEFT, padx=5)
+    combo_seccion_LD = tk.ttk.Combobox(frame_seccion, textvariable=var_seccion_LD,
+                                    values=ret[1], 
+                                    state="readonly", width=10)
+    combo_seccion_LD.pack(side=tk.LEFT, padx=5)
+    combo_seccion_HI = tk.ttk.Combobox(frame_seccion, textvariable=var_seccion_HI,
+                                    values=ret[1], 
+                                    state="readonly", width=10)
+    combo_seccion_HI.pack(side=tk.LEFT, padx=5)
+    combo_seccion_HD = tk.ttk.Combobox(frame_seccion, textvariable=var_seccion_HD,
+                                    values=ret[1], 
+                                    state="readonly", width=10)
+    combo_seccion_HD.pack(side=tk.LEFT, padx=5)
+
+    frame_ancho = tk.Frame(ventana_geo)
+    frame_ancho.pack(anchor=tk.W, padx=10, pady=10)
+    label_ancho = tk.Label(frame_ancho, text="Ancho modelo (m):", font=("Arial", 10))
+    label_ancho.pack(side=tk.LEFT, padx=5)
+    var_ancho = tk.StringVar(value="1.0")
+    entry_ancho = tk.Entry(frame_ancho, textvariable=var_ancho, width=10)
+    entry_ancho.pack(side=tk.LEFT, padx=5)
+
+    frame_alto = tk.Frame(ventana_geo)
+    frame_alto.pack(anchor=tk.W, padx=10, pady=10)
+    label_alto = tk.Label(frame_alto, text="Alto modelo (m):", font=("Arial", 10))
+    label_alto.pack(side=tk.LEFT, padx=5)
+    var_alto = tk.StringVar(value="1.0")
+    entry_alto = tk.Entry(frame_alto, textvariable=var_alto, width=10)
+    entry_alto.pack(side=tk.LEFT, padx=5)
+
+    def on_geometria():
+        SapModel.SetPresentUnits(6)
+        ancho = float(var_ancho.get())
+        alto = float(var_alto.get())
+        FrameName1 = ""
+        FrameName2 = ""
+        FrameName3 = ""
+        FrameName4 = ""
+        [FrameName1, ret] = SapModel.FrameObj.AddByCoord(0, 0, 0, ancho, 0, 0, FrameName1, var_seccion_LI.get(), "LI", "Global")
+        [FrameName2, ret] = SapModel.FrameObj.AddByCoord(0, 0, 0, 0, 0, alto, FrameName2, var_seccion_HI.get(), "HI", "Global")
+        [FrameName3, ret] = SapModel.FrameObj.AddByCoord(0, 0, alto, ancho, 0, alto, FrameName3, var_seccion_LD.get(), "LD", "Global")
+        [FrameName4, ret] = SapModel.FrameObj.AddByCoord(ancho, 0, 0, ancho, 0, alto, FrameName4, var_seccion_HD.get(), "HD", "Global")
+        SapModel.View.RefreshView(0, False)
+        
+        
+
+    boton_geometria = tk.Button(ventana_geo, text="Definir geometría", command=on_geometria, font=("Arial", 11), bg="#2196F3", fg="white", padx=10, pady=5)
+    boton_geometria.pack(pady=20)
+
+    
 
 
     ventana_geo.grab_set()
 
+def crear_ventana_cargas(parent):
+    """Crea una ventana gráfica para definición de cargas"""
+    ventana_cargas = tk.Toplevel(parent)
+    ventana_cargas.title("Definición de Cargas")
+    ventana_cargas.geometry("500x400")
+    ventana_cargas.attributes('-topmost', True)
+    ventana_cargas.attributes('-topmost', False)
+    script_dir = os.path.dirname(os.path.abspath(__file__))
+    icon_path = os.path.join(script_dir, 'AYRE.ico')
+    ventana_cargas.iconbitmap(icon_path)
+    ventana_cargas.protocol("WM_DELETE_WINDOW", lambda: ventana_cargas.destroy() and ventana_cargas.grab_release())
+    # Título
+    titulo = tk.Label(ventana_cargas, text="Definición de Cargas", font=("Arial", 14, "bold"))
+    titulo.pack(pady=20)
+
+    frame = tk.Frame(ventana_cargas)
+    scrollbar = tk.Scrollbar(frame, orient=tk.VERTICAL)
+    hscrollbar = tk.Scrollbar(frame, orient=tk.HORIZONTAL)
+    label_lista_cargas = tk.Listbox(frame, font=("Arial", 10), bg="white", selectbackground="#2196F3",
+                                     selectforeground="black", yscrollcommand = scrollbar.set,
+                                     xscrollcommand = hscrollbar.set, width=20, height=15)
+    scrollbar.config(command=label_lista_cargas.yview)
+    hscrollbar.config(command=label_lista_cargas.xview)
+    scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
+    hscrollbar.pack(side=tk.BOTTOM, fill=tk.X)
+    label_lista_cargas.pack(side =tk.LEFT, padx=5, pady=5)
+    frame.pack()
+
+    ruta_excel = "C:/Users/Daniel.p/Documents/2. Petrucco/114. A 1472 R1 Campo de Criptana/3. Calculo/2. Cajon/SAP/Comb_acciones.xlsx"
+    compatibilidades_df, restricciones_df =extraer_datos_excel(ruta_excel)
+    label_lista_cargas.insert(tk.END, *restricciones_df.loc[:, "Definición de 'Load Cases'"])
+
+    def on_double_click(event):
+        print("hola")
+
+    label_lista_cargas.bind('<Double-Button-1>', on_double_click)
+
+
+
+    ventana_cargas.grab_set()
 
 def crear_ventana_ppal():
     ventana_ppal = tk.Tk()
     ventana_ppal.title("AYRE")
-    ventana_ppal.geometry("400x300")
+    ventana_ppal.geometry("400x600")
     ventana_ppal.attributes('-topmost', True)
     ventana_ppal.attributes('-topmost', False)
     script_dir = os.path.dirname(os.path.abspath(__file__))
@@ -1003,7 +1110,10 @@ def crear_ventana_ppal():
 
     # Boton para abrir la ventana de definicion de la geometria
     def abrir_geometria():
-        crear_ventana_geometria(ventana_ppal)
+        if not SapModel.PropFrame.GetNameList()[1] :
+            tk.messagebox.showerror("Error", "No hay secciones definidas")
+        else:
+            crear_ventana_geometria(ventana_ppal)
 
     boton_geometria = tk.Button(ventana_ppal, text="Definición de Geometría", command=abrir_geometria, font=("Arial", 11), bg="#673AB7", fg="white", padx=10, pady=5)
     boton_geometria.pack(pady=20)
@@ -1016,6 +1126,13 @@ def crear_ventana_ppal():
     boton_config = tk.Button(ventana_ppal, text="Configuración Combinaciones", command=abrir_configuracion, font=("Arial", 11), bg="#4CAF50", fg="white", padx=10, pady=5)
     boton_config.pack(pady=20)
 
+    # Botón para abrir ventana de cargas
+    def abrir_cargas():
+        crear_ventana_cargas(ventana_ppal)
+
+    boton_cargas = tk.Button(ventana_ppal, text="Definición de Cargas", command=abrir_cargas, font=("Arial", 11), bg="#FF9800", fg="white", padx=10, pady=5)
+    boton_cargas.pack(pady=20)
+
     
 
     ventana_ppal.mainloop()