Explorar o código

Creacion de materiales y secciones

dacowars hai 4 semanas
pai
achega
79ad503129
Modificáronse 1 ficheiros con 198 adicións e 8 borrados
  1. 198 8
      Comb_acciones.py

+ 198 - 8
Comb_acciones.py

@@ -202,7 +202,18 @@ except TimeoutException as exc:
 finally:
     timer.cancel()
 
+# Creacion del material B500 SD
 
+ret_get, _, _, _, _ = SapModel.PropMaterial.GetMaterial("B500 SD")
+if ret_get == 0:
+    ret =SapModel.PropMaterial.AddQuick("Rebar", 6)
+    SapModel.PropMaterial.ChangeName(ret[0], "B500 SD")
+
+SapModel.SetPresentUnits(6)  #kN, m, C
+SapModel.PropMaterial.SetMPUniaxial("B500 SD", 2e8, 1.17e-5)
+SapModel.PropMaterial.SetORebar_1("B500 SD", 500000, 620000, 540000, 680000, 0, 0, 0, 0, 0, False)
+
+                                            
 #se pregunta si se desea borrar todo lo que hay en el SAP
 
 def borrar_combos_existentes():
@@ -558,6 +569,8 @@ def generar_combinaciones_norma_IAPF(combinaciones_validas, restricciones_df, no
                     coef_var_ELSC = np.ones(len(patrones))
                     coef_var_ELSF = np.ones(len(patrones))
                     coef_var_ELSCP =np.ones(len(patrones))
+                    minorados_ELUP.append(coef_var_ELUP)
+                    minorados_ELSC.append(coef_var_ELSC)
                     if (restricciones_df.loc[i,"Tipo"] == "Variable") and combo[i] != 0:
                         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"]
@@ -620,10 +633,10 @@ def generar_combinaciones_norma_IAPF(combinaciones_validas, restricciones_df, no
     mascara = np.multiply(np.ones(len(restricciones_array)), (restricciones_array == "Variable").astype(int))
 
 
-    combos_ELUP = limpiar_combos(combos_ELUP, mascara, 1.5, restricciones_df)
-    combos_ELSC = limpiar_combos(combos_ELSC, mascara, 1, restricciones_df)
-    combos_ELSF = limpiar_combos(combos_ELSF, mascara, 1, restricciones_df)
-    combos_ELSCP = limpiar_combos(combos_ELSCP, mascara, 1, restricciones_df)
+    #combos_ELUP = limpiar_combos(combos_ELUP, mascara, 1.5, restricciones_df)
+    #combos_ELSC = limpiar_combos(combos_ELSC, mascara, 1, restricciones_df)
+    #combos_ELSF = limpiar_combos(combos_ELSF, mascara, 1, restricciones_df)
+    #combos_ELSCP = limpiar_combos(combos_ELSCP, mascara, 1, restricciones_df)
 
     return combos_ELUP, combos_ELUA, combos_ELUS, combos_ELSC, combos_ELSF, combos_ELSCP
 
@@ -686,16 +699,20 @@ def main(ruta_excel, norma_proyecto, vias_cargadas):
     if ("2. ENV ELU ACC" in temp_comboNames): ret = SapModel.RespCombo.SetCaseList("7. ENV ELU TODO", 1, "2. ENV ELU ACC", 1)
     if ("3. ENV ELU SIS" in temp_comboNames): ret = SapModel.RespCombo.SetCaseList("7. ENV ELU TODO", 1, "3. ENV ELU SIS", 1)
 
-def crear_ventana_configuracion():
+def crear_ventana_configuracion(parent):
     """Crea una ventana gráfica para configuración inicial"""
-    ventana = tk.Tk()
+    ventana = tk.Toplevel(parent)
     ventana.title("Configuración de Combinaciones")
     ventana.geometry("600x800")
     ventana.attributes('-topmost', True)
+    ventana.attributes('-topmost', False)
     script_dir = os.path.dirname(os.path.abspath(__file__))
     icon_path = os.path.join(script_dir, 'AYRE.ico')
     ventana.iconbitmap(icon_path)
 
+    ventana.protocol("WM_DELETE_WINDOW", lambda: ventana.destroy() and ventana.grab_release())
+
+    
     
     # Título
     titulo = tk.Label(ventana, text="Configuración Inicial", font=("Arial", 14, "bold"))
@@ -828,10 +845,183 @@ def crear_ventana_configuracion():
 
     comprobacion_SAP_cerrado()
 
-    ventana.mainloop()
+    ventana.grab_set()
+
+
+def crear_ventana_materiales(parent):
+    """Crea una ventana gráfica para definición de materiales y secciones"""
+    ventana_mat = tk.Toplevel(parent)
+    ventana_mat.title("Definición de Geometría")
+    ventana_mat.geometry("500x400")
+    ventana_mat.attributes('-topmost', True)
+    ventana_mat.attributes('-topmost', False)
+    script_dir = os.path.dirname(os.path.abspath(__file__))
+    icon_path = os.path.join(script_dir, 'AYRE.ico')
+    ventana_mat.iconbitmap(icon_path)
+    ventana_mat.protocol("WM_DELETE_WINDOW", lambda: ventana_mat.destroy() and ventana_mat.grab_release())
+    # Título
+    titulo = tk.Label(ventana_mat, text="Definición de Materiales y Secciones", font=("Arial", 14, "bold"))
+    titulo.pack(pady=20)
+
+
+    # Boton crear seccion
+    def on_section():
+        if not SapModel.GetModelisLocked(): SapModel.SetModelisLocked(False)
+        ret = SapModel.SetPresentUnits(6)
+        if ret != 0:
+            confirmacion.config(text="Error al establecer las unidades.", fg="red")
+            return
+        ret_get, _, _, _, _ = SapModel.PropMaterial.GetMaterial(var_material.get())
+        if ret_get == 0:
+            ret = SapModel.PropMaterial.AddMaterial(var_material.get(),
+                                            2,
+                                            Region = "Europe",
+                                            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
+        ret = SapModel.PropFrame.SetRectangle(var_nombre.get(),
+                                        var_material.get(),
+                                       float(var_canto.get()),
+                                       float(var_ancho.get()))
+        if ret != 0:
+            confirmacion.config(text="Error al añadir la sección.", fg="red")
+            return
+        ret = SapModel.PropFrame.SetRebarBeam(var_nombre.get(),
+                                        "B500 SD",
+                                        "B500 SD",
+                                        0.05,
+                                        0.05,
+                                        0,
+                                        0,
+                                        0,
+                                        0)
+        if ret != 0:
+            confirmacion.config(text="Error al asignar el armado.", fg="red")
+            return
+        confirmacion.config(text=f"Sección '{var_nombre.get()}' añadida correctamente.", fg="green")
+  
+
+    # Frame para flechas
+    frame_material = tk.Frame(ventana_mat)
+    frame_material.pack(anchor=tk.W, padx=20, pady=10)
+    label_material = tk.Label(frame_material, text="Hormigón:", font=("Arial", 10))
+    label_material.pack(side=tk.LEFT, padx=5)
+    var_material = tk.StringVar(value="C30/37")
+    combo_material = tk.ttk.Combobox(frame_material, textvariable=var_material,
+                                    values=["C12/15","C16/20","C20/25","C25/30","C30/37","C35/45","C40/50","C45/55",
+                                            "C50/60","C55/67","C60/75","C70/85","C80/95","C90/105"], 
+                                    state="readonly", width=15)
+    combo_material.pack(side=tk.LEFT, padx=5)
+
+    frame_canto = tk.Frame(ventana_mat)
+    frame_canto.pack(anchor=tk.W, padx=20, pady=10)
+    label_canto = tk.Label(frame_canto, text="Canto de la sección (m):", font=("Arial", 10))
+    label_canto.pack(side=tk.LEFT, padx=5)
+    var_canto = tk.StringVar(value="0.4")
+    entry_canto = tk.Entry(frame_canto, textvariable=var_canto, width=10)
+    entry_canto.pack(side=tk.LEFT, padx=5)
+
+    frame_ancho = tk.Frame(ventana_mat)
+    frame_ancho.pack(anchor=tk.W, padx=20, pady=10)
+    label_ancho = tk.Label(frame_ancho, text="Ancho de la sección (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=4)
+    entry_ancho.config(state=tk.DISABLED)
+    var_checkbox = tk.BooleanVar(value=False)
+    def toggle_ancho():
+        if var_checkbox.get():
+            entry_ancho.config(state=tk.NORMAL)
+        else:
+            entry_ancho.config(state=tk.DISABLED)
+    check_ancho = tk.Checkbutton(frame_ancho, variable=var_checkbox, command=toggle_ancho)
+    check_ancho.pack(side=tk.LEFT, padx = 5)
+
+    frame_nombre = tk.Frame(ventana_mat)
+    frame_nombre.pack(anchor=tk.W, padx=20, pady=10)
+    label_nombre = tk.Label(frame_nombre, text="Nombre de la sección:", font=("Arial", 10))
+    label_nombre.pack(side=tk.LEFT, padx=5)
+    var_nombre = tk.StringVar(value="Losa 0.40 m")
+    entry_nombre = tk.Entry(frame_nombre, textvariable=var_nombre, width=20)
+    entry_nombre.pack(side=tk.LEFT, padx=5)
+
+    confirmacion = tk.Label(ventana_mat, text="", font=("Arial", 10), fg="green")
+    confirmacion.pack(pady=10)
+
+    boton_canto = tk.Button(ventana_mat, text="Añadir sección", command=on_section, font=("Arial", 11), bg="#2196F3", fg="white", padx=10, pady=5)
+    boton_canto.pack(pady=20)
+    
+    
+
+    ventana_mat.grab_set()
+
+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.attributes('-topmost', True)
+    ventana_geo.attributes('-topmost', False)
+    script_dir = os.path.dirname(os.path.abspath(__file__))
+    icon_path = os.path.join(script_dir, 'AYRE.ico')
+    ventana_geo.iconbitmap(icon_path)
+    ventana_geo.protocol("WM_DELETE_WINDOW", lambda: ventana_geo.destroy() and ventana_geo.grab_release())
+    # Título
+    titulo = tk.Label(ventana_geo, text="Definición de Geometría", font=("Arial", 14, "bold"))
+    titulo.pack(pady=20)
+
+    ret = SapModel.PropFrame.GetNameList()
+
+
+    ventana_geo.grab_set()
+
+
+def crear_ventana_ppal():
+    ventana_ppal = tk.Tk()
+    ventana_ppal.title("AYRE")
+    ventana_ppal.geometry("400x300")
+    ventana_ppal.attributes('-topmost', True)
+    ventana_ppal.attributes('-topmost', False)
+    script_dir = os.path.dirname(os.path.abspath(__file__))
+    icon_path = os.path.join(script_dir, 'AYRE.ico')
+    ventana_ppal.iconbitmap(icon_path)
+
+    # Título
+    titulo = tk.Label(ventana_ppal, text="Modelizado por SAP2000", font=("Arial", 14, "bold"))
+    titulo.pack(pady=20)
+
+    # Boton para abrir la ventana de materiales y secciones
+    def abrir_materiales():
+        crear_ventana_materiales(ventana_ppal)
+
+    boton_materiales = tk.Button(ventana_ppal, text="Definición de Materiales y Secciones", command=abrir_materiales, font=("Arial", 11), bg="#2F42AC", fg="white", padx=10, pady=5)
+    boton_materiales.pack(pady=20)
+
+    # Boton para abrir la ventana de definicion de la geometria
+    def abrir_geometria():
+        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)
+
+
+    # Botón para abrir ventana de configuración
+    def abrir_configuracion():
+        crear_ventana_configuracion(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)
+
+    
+
+    ventana_ppal.mainloop()
 
 
 
 # Mostrar ventana de configuración
-config = crear_ventana_configuracion()
+config = crear_ventana_ppal()