diff --git a/.gitignore b/.gitignore
index acf4f59..148e96c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,3 +21,9 @@ $RECYCLE.BIN/
# =========================
# Operating System Files
# =========================
+tests.ipynb
+test.py
+
+__pycache__/
+app/__pycache__/
+.vscode/
\ No newline at end of file
diff --git a/LEGAL.md b/LEGAL.md
new file mode 100644
index 0000000..fb9a261
--- /dev/null
+++ b/LEGAL.md
@@ -0,0 +1,16 @@
+# Aviso Legal - Fork de Navier
+
+## Direitos Autorais
+- **Projeto Original**: [Anderson3/Navier](https://github.com/Anderson3/Navier)
+- **Autor Original**: Anderson3
+- **Direitos**: Todos os direitos do código original pertencem ao autor Anderson3
+
+## Propósito deste Fork
+Este fork foi criado para:
+- Manter o projeto atualizado
+- Corrigir issues e bugs
+- Adicionar novas funcionalidades
+- Enviar melhorias via Pull Request para o projeto original
+
+## Status
+Aguardando resposta do autor original para coordenação de contribuições.
\ No newline at end of file
diff --git a/README.md b/README.md
index 1b470fa..79312f9 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,12 @@
-# Navier
-Software de cálculo de peças de concreto armado, baseado na NBR 6118/14. Desenvolvido com Python 3.7 + PyQt5.
+# Navier - Fork de Contribuição
-
+> **⚠️ AVISO LEGAL**: Este é um fork do projeto original [Anderson3/Navier](https://github.com/Anderson3/Navier).
+> Todos os direitos do código original pertencem a Anderson3.
+> Este fork tem fins de manutenção, atualização e contribuição para o projeto original.
+
+**Fork mantido por [viviangiulia](https://github.com/viviangiulia)**
+
+---
## Pequena Descrição
O Navier é um programa desenvolvido em Python com finalidade de produzir dados de dimensionamento de peças de Concreto Armado. Essa aplicação com finalidade para Desktops permite calcular Vigas, Pilares, Lajes e Sapatas analisando as peças de manaira isolada. Cada elemento estrutural é tratado no programa como um módulo de cálculo interno. O Navier se baseia nas condições normativas brasileiras de Concreto Armado, principalmente respaldadas através da ABNT NBR 6118/14.
diff --git a/bitolas_ferros.ui b/app/bitolas_ferros.ui
similarity index 100%
rename from bitolas_ferros.ui
rename to app/bitolas_ferros.ui
diff --git a/app/calculos/vigas.py b/app/calculos/vigas.py
new file mode 100644
index 0000000..c1111ef
--- /dev/null
+++ b/app/calculos/vigas.py
@@ -0,0 +1,356 @@
+import sys
+import os
+import math
+
+from dataclasses import dataclass
+
+
+@dataclass
+class DadosViga:
+ mk: float
+ vk: float
+ bw: float
+ h: float
+ d: float
+ fck: float
+ fyk: float
+ fcd: float
+ fyd: float
+ vsd: float
+ theta_transversal: int = 45
+ modelo_calculo: str = "Modelo I"
+ xis_dominio: float = 0.450
+
+ def validar_dados(self) -> tuple[bool, str]:
+ """Valida se todos os dados necessários para cálculo foram preenchidos."""
+ campos = {
+ "Momento Fletor (Mk)": self.mk,
+ "Largura da Viga (bw)": self.bw,
+ "Altura Total (h)": self.h,
+ "Altura Útil (d)": self.d,
+ "Concreto (fck)": self.fck,
+ "Aço (fyk)": self.fyk,
+ "Concreto (fcd)": self.fcd,
+ "Aço (fyd)": self.fyd,
+ }
+
+ for nome, valor in campos.items():
+ if valor is None or valor <= 0:
+ return False, f"O valor de '{nome}' está ausente ou inválido."
+
+ return True, "Todos os dados válidos."
+
+
+class CalculadoraViga:
+
+ @staticmethod
+ def calcular_viga_cortante(dados_viga: DadosViga) -> dict:
+
+ alfa_transversal = (
+ 90 # Estribos verticais (ãngulo de 90° com relação ao eixo da barra)
+ )
+
+ alfa_transversal = (alfa_transversal / 180) * math.pi
+ fator_cotangentes_transversal = (
+ (math.cos(alfa_transversal) / math.sin(alfa_transversal))
+ ) + (
+ math.cos(dados_viga.theta_transversal)
+ / math.sin(dados_viga.theta_transversal)
+ )
+ fator_cotangentes_transversal = 1
+
+ vrd2 = (
+ # -------------- TENSÃO MÁXIMA CONVENCIONAL DE CISALHAMENTO
+ 0.27
+ * (1 - (dados_viga.fck / 250)) # alfav2
+ * dados_viga.fcd
+ # -------------- TENSÃO MÁXIMA CONVENCIONAL DE CISALHAMENTO
+ * (dados_viga.bw / 100) # bw em metros
+ * (dados_viga.d / 100) # d em metros
+ * (math.sin(2 * dados_viga.theta_transversal))
+ * fator_cotangentes_transversal
+ * 1000
+ ) # Força cortante resistente de cálculo
+ vrd2 = round(vrd2, 2)
+
+ print(
+ f"[NOTICE] Força Cortante Solicitante de Cálculo Vsd: {dados_viga.vsd:.2f} kN"
+ )
+ print(
+ f"[NOTICE] Força Cortante Resistente de Cálculo (ruína das diagonais comprimidas) VRd2: {vrd2:.2f} kN"
+ )
+
+ if vrd2 < dados_viga.vsd:
+ print(
+ "[ERROR] A seção de concreto não permite gerar bielas resistentes à compressão. "
+ "Reveja as dimensões da viga ou esforços de cálculo para a estrutura."
+ )
+ raise ValueError(
+ "A seção de concreto não permite gerar bielas resistentes à compressão. "
+ "Reveja as dimensões da viga ou esforços de cálculo para a estrutura."
+ )
+ else:
+ vc_0 = (
+ 0.09
+ * (dados_viga.fck ** (2 / 3))
+ * (dados_viga.bw / 100)
+ * (dados_viga.d / 100)
+ * 1000
+ )
+ if dados_viga.modelo_calculo == "Modelo II":
+ vc_0 = vc_0 * ((vrd2 - dados_viga.vsd) / (vrd2 - vc_0))
+
+ vsw = dados_viga.vsd - vc_0
+
+ as_transversal = (
+ vsw
+ / (0.9 * (dados_viga.d / 100) * dados_viga.fyd)
+ * math.tan(dados_viga.theta_transversal)
+ ) * 1000
+
+ taxa_aco_cortante_retangular = (
+ 0.2 * (0.3 * dados_viga.fck ** (2 / 3)) / dados_viga.fyk
+ )
+
+ as_min_transversal = (
+ (dados_viga.bw * 10) * taxa_aco_cortante_retangular
+ ) * 1000 # para deixar em mm²
+
+ print(f"[NOTICE] Força Cortante Vk: {dados_viga.vk:.2f} kN")
+ print(
+ f"[NOTICE] Força Cortante Mecanismos Complementares (ângulo = 45)° Vc0: {vc_0:.2f} kN"
+ )
+ print(
+ f"[NOTICE] Força Cortante parcela resistida pela armadura transversal Vsw: {vsw:.2f} kN"
+ )
+ print(
+ f"[NOTICE] Área da Seção Transversão dos Estribos Asw: {as_transversal:.2f} mm²"
+ )
+ print(
+ f"[NOTICE] Área de aço transversal mínima por metro linear Aswmin/s: {as_min_transversal:.2f} mm²/m"
+ )
+
+ # TODO verificar se vou usar essa informação
+ if dados_viga.vsd <= 0.67 * vrd2:
+ espass_maximo = 30
+ else:
+ espass_maximo = 20
+
+ return {
+ "vk_viga": dados_viga.vk,
+ "vsd": dados_viga.vsd,
+ "vrd2": vrd2,
+ "vc_0": vc_0,
+ "as_transversal": as_transversal,
+ "taxa_aco_cortante_retangular": taxa_aco_cortante_retangular,
+ "as_min_transversal": as_min_transversal,
+ "vsw": vsw,
+ }
+
+ @staticmethod
+ def calcular_viga_simples(dados_viga: DadosViga) -> dict:
+ """Retonar um dicionário com os resultados obtidos após terminar o dimensionamento da viga simplesmente armada."""
+ d_linha = dados_viga.h - dados_viga.d
+ area_secao_viga = dados_viga.bw * dados_viga.h
+
+ kmd_viga = (dados_viga.mk * 1.4 * 1000) / (
+ (dados_viga.bw / 100)
+ * ((dados_viga.d / 100) ** 2)
+ * (0.85 * dados_viga.fcd * 1000000)
+ )
+
+ if kmd_viga > 0.5:
+ print(
+ "[ERROR] Os esforços especificados não são suportados pela seção de concreto analisada. "
+ "Por favor altere as dimensões da seção da viga ou reveja os esforços de cálculo para a estrutura."
+ )
+ raise ValueError(
+ "Os esforços especificados não são suportados pela seção de concreto analisada. "
+ "Por favor altere as dimensões da seção da viga ou reveja os esforços de cálculo para a estrutura."
+ )
+ else:
+ kx_viga = (1 - math.sqrt(1 - 2 * kmd_viga)) / 0.8
+ kz_viga = 1 - 0.4 * kx_viga
+ as_viga = (dados_viga.mk * 1.4 * 1000) / (
+ kz_viga * (dados_viga.d / 100) * dados_viga.fyd
+ )
+
+ as_sobre_apoio_viga = as_viga / 3
+ if dados_viga.h >= 60:
+ as_pele = (0.1 / 100) * area_secao_viga * 100
+ else:
+ as_pele = 0
+
+ as_max_viga = (4 / 100) * area_secao_viga * 100
+
+ # TODO código repetido refatorar
+ taxa_aco_por_fck = {
+ 20: 0.0015,
+ 25: 0.0015,
+ 30: 0.00173,
+ 35: 0.00201,
+ 40: 0.00203,
+ 45: 0.00259,
+ 50: 0.00288,
+ }
+ taxa_aco_viga_retangular = taxa_aco_por_fck.get(dados_viga.fck)
+
+ if taxa_aco_viga_retangular is None:
+ raise ValueError(f"fck inválido: {dados_viga.fck}")
+
+ as_min_viga = taxa_aco_viga_retangular * area_secao_viga * 100
+
+ # TODO melhorar esta estrutura
+ if kx_viga < 0:
+ dominio_viga = "Domínio 1"
+ elif kx_viga > 0 and kx_viga < 0.259:
+ dominio_viga = "Domínio 2"
+ elif kx_viga > 0.259 and kx_viga < 0.45:
+ dominio_viga = "Domínio 3 - Dúctil"
+ elif kx_viga > 0.45 and kx_viga < 0.63:
+ dominio_viga = "Domínio 3 - Não Dúctil"
+ elif kx_viga > 0.628 and kx_viga < 1:
+ dominio_viga = "Domínio 4a"
+ elif (kx_viga > 0.438 and kx_viga < 1) and (dados_viga.fyk == 600):
+ dominio_viga = "Domínio 4a"
+ else:
+ dominio_viga = "Domínio 4b"
+
+ print(
+ f"[NOTICE] Intensidade do momento fletor solicitante Kmd: {kmd_viga:.2f}"
+ )
+ print(f"[NOTICE] Profundidade da linha neutra Kx: {kx_viga:.2f}")
+ print(f"[NOTICE] Altura do braço de alavanca interno Kz: {kz_viga:.2f}")
+ print(
+ f"[NOTICE] Área da seção transversal da armadura longitudinal de tração As: {as_viga:.2f} mm²"
+ )
+
+ resultados_viga = CalculadoraViga.calcular_viga_cortante(dados_viga)
+
+ resultados_viga.update(
+ {
+ "kmd_viga": kmd_viga,
+ "kx_viga": kx_viga,
+ "kz_viga": kz_viga,
+ "as_viga": as_viga,
+ "as_sobre_apoio_viga": as_sobre_apoio_viga,
+ "as_max_viga": as_max_viga,
+ "as_min_viga": as_min_viga,
+ "as_pele": as_pele,
+ "d_linha": d_linha,
+ "dominio_viga": dominio_viga,
+ }
+ )
+
+ return resultados_viga
+
+ @staticmethod
+ def calcular_viga_dupla(dados_viga: DadosViga) -> dict:
+
+ d_linha = dados_viga.h - dados_viga.d
+
+ xis_dominio = dados_viga.xis_dominio
+
+ d_min_viga = math.sqrt(
+ (dados_viga.mk * 1.4 * 1000)
+ / (
+ (dados_viga.bw / 100)
+ * (dados_viga.fcd * 1000000)
+ * (0.68 * xis_dominio - 0.272 * (xis_dominio**2))
+ )
+ )
+
+ x_lim_viga = xis_dominio * (dados_viga.d / 100)
+
+ momento_lim_viga = (
+ 0.68
+ * (dados_viga.bw / 100)
+ * (dados_viga.fcd * 1000)
+ * x_lim_viga
+ * ((dados_viga.d / 100) - 0.4 * x_lim_viga)
+ )
+
+ if d_min_viga < (dados_viga.h / 100):
+ print(
+ "[NOTICE] A altura atual da viga é maior que a altura útil mínima, calcule como simplesmente armada."
+ )
+ raise ValueError(
+ "A altura atual da viga é maior que a altura útil mínima, calcule como simplesmente armada."
+ )
+
+ else:
+ momento_lim_viga = (
+ 0.68
+ * (dados_viga.bw / 100)
+ * (dados_viga.fcd * 1000)
+ * x_lim_viga
+ * ((dados_viga.d / 100) - 0.4 * x_lim_viga)
+ )
+ momento_2_viga = (dados_viga.mk * 1.4) - momento_lim_viga
+
+ as_compressao_viga = (momento_2_viga * 1000) / (
+ ((dados_viga.d / 100) - (d_linha / 100)) * (dados_viga.fyd)
+ )
+
+ as_tracao_viga = (momento_lim_viga * 1000) / (
+ (1 - 0.4 * xis_dominio) * (dados_viga.d / 100) * dados_viga.fyd
+ )
+
+ as_tracao_viga = as_tracao_viga + as_compressao_viga
+
+ as_total_viga = as_tracao_viga + as_compressao_viga
+
+ as_sobre_apoio_viga = as_tracao_viga / 3
+
+ area_secao_viga = dados_viga.bw * dados_viga.h
+ if dados_viga.h >= 60:
+ as_pele = (0.1 / 100) * area_secao_viga * 100
+ else:
+ as_pele = 0
+
+ # TODO Código repetido refatorar
+ taxa_aco_por_fck = {
+ 20: 0.0015,
+ 25: 0.0015,
+ 30: 0.00173,
+ 35: 0.00201,
+ 40: 0.00203,
+ 45: 0.00259,
+ 50: 0.00288,
+ }
+ taxa_aco_viga_retangular = taxa_aco_por_fck.get(dados_viga.fck)
+
+ if taxa_aco_viga_retangular is None:
+ raise ValueError(f"fck inválido: {dados_viga.fck}")
+
+ as_max_viga = (4 / 100) * area_secao_viga * 100
+ as_min_viga = taxa_aco_viga_retangular * area_secao_viga * 100
+
+
+ print(f"[NOTICE] Altura útil mínima para evitar armadura dupla d_min: {d_min_viga:.2f} m")
+ print(f"[NOTICE] Posição limite da linha neutra para domínio 3 x_lim: {x_lim_viga:.2f} m")
+ print(f"[NOTICE] Momento resistente último para armadura simples Mlim: {momento_lim_viga:.2f} kN.m")
+ print(f"[NOTICE] Momento excedente para armadura dupla Momento2: {momento_2_viga:.2f} kN.m")
+ print(f"[NOTICE] Área de aço de compressão As Compressão: {as_compressao_viga:.2f} mm²")
+ print(f"[NOTICE] Área de aço de tração As Tração: {as_tracao_viga:.2f} mm²")
+
+ resultados_viga = CalculadoraViga.calcular_viga_cortante(dados_viga)
+
+ resultados_viga.update(
+ {
+ "d_min_viga": d_min_viga,
+ "x_lim_viga": x_lim_viga,
+ "momento_lim_viga": momento_lim_viga,
+ "momento_2_viga": momento_2_viga,
+ "as_compressao_viga": as_compressao_viga,
+ "as_tracao_viga": as_tracao_viga,
+ "as_sobre_apoio_viga": as_sobre_apoio_viga,
+ "as_max_viga": as_max_viga,
+ "as_min_viga": as_min_viga,
+ "as_pele": as_pele,
+ "as_total_viga":as_total_viga,
+ "d_linha": d_linha,
+ }
+ )
+
+ return resultados_viga
diff --git a/class_agres.ui b/app/class_agres.ui
similarity index 100%
rename from class_agres.ui
rename to app/class_agres.ui
diff --git a/detalhamento_vigas_alt.ui b/app/detalhamento_vigas_alt.ui
similarity index 100%
rename from detalhamento_vigas_alt.ui
rename to app/detalhamento_vigas_alt.ui
diff --git a/btn_caa.png b/app/images/btn_caa.png
similarity index 100%
rename from btn_caa.png
rename to app/images/btn_caa.png
diff --git a/btn_cadicional.png b/app/images/btn_cadicional.png
similarity index 100%
rename from btn_cadicional.png
rename to app/images/btn_cadicional.png
diff --git a/btn_flexaocomposta.png b/app/images/btn_flexaocomposta.png
similarity index 100%
rename from btn_flexaocomposta.png
rename to app/images/btn_flexaocomposta.png
diff --git a/btn_flexaosimples.png b/app/images/btn_flexaosimples.png
similarity index 100%
rename from btn_flexaosimples.png
rename to app/images/btn_flexaosimples.png
diff --git a/btn_inicio_fundacoes.png b/app/images/btn_inicio_fundacoes.png
similarity index 100%
rename from btn_inicio_fundacoes.png
rename to app/images/btn_inicio_fundacoes.png
diff --git a/btn_inicio_lajes.png b/app/images/btn_inicio_lajes.png
similarity index 100%
rename from btn_inicio_lajes.png
rename to app/images/btn_inicio_lajes.png
diff --git a/btn_inicio_pilares.png b/app/images/btn_inicio_pilares.png
similarity index 100%
rename from btn_inicio_pilares.png
rename to app/images/btn_inicio_pilares.png
diff --git a/btn_inicio_vigas.png b/app/images/btn_inicio_vigas.png
similarity index 100%
rename from btn_inicio_vigas.png
rename to app/images/btn_inicio_vigas.png
diff --git a/btn_tabbitolas.png b/app/images/btn_tabbitolas.png
similarity index 100%
rename from btn_tabbitolas.png
rename to app/images/btn_tabbitolas.png
diff --git a/btn_tabmarcus.png b/app/images/btn_tabmarcus.png
similarity index 100%
rename from btn_tabmarcus.png
rename to app/images/btn_tabmarcus.png
diff --git a/btn_tabventirinni.png b/app/images/btn_tabventirinni.png
similarity index 100%
rename from btn_tabventirinni.png
rename to app/images/btn_tabventirinni.png
diff --git a/cota_h_laje.png b/app/images/cota_h_laje.png
similarity index 100%
rename from cota_h_laje.png
rename to app/images/cota_h_laje.png
diff --git a/cota_v_laje.png b/app/images/cota_v_laje.png
similarity index 100%
rename from cota_v_laje.png
rename to app/images/cota_v_laje.png
diff --git a/engaste_d.xcf b/app/images/engaste_d.xcf
similarity index 100%
rename from engaste_d.xcf
rename to app/images/engaste_d.xcf
diff --git a/engh.png b/app/images/engh.png
similarity index 100%
rename from engh.png
rename to app/images/engh.png
diff --git a/engv.png b/app/images/engv.png
similarity index 100%
rename from engv.png
rename to app/images/engv.png
diff --git a/esquema_bielas.png b/app/images/esquema_bielas.png
similarity index 100%
rename from esquema_bielas.png
rename to app/images/esquema_bielas.png
diff --git a/esquema_bielas_legenda.png b/app/images/esquema_bielas_legenda.png
similarity index 100%
rename from esquema_bielas_legenda.png
rename to app/images/esquema_bielas_legenda.png
diff --git a/esquema_pilar.png b/app/images/esquema_pilar.png
similarity index 100%
rename from esquema_pilar.png
rename to app/images/esquema_pilar.png
diff --git a/git_logo.png b/app/images/git_logo.png
similarity index 100%
rename from git_logo.png
rename to app/images/git_logo.png
diff --git a/laje-esqm.png b/app/images/laje-esqm.png
similarity index 100%
rename from laje-esqm.png
rename to app/images/laje-esqm.png
diff --git a/laje.png b/app/images/laje.png
similarity index 100%
rename from laje.png
rename to app/images/laje.png
diff --git a/laje_unidirecional_ee.png b/app/images/laje_unidirecional_ee.png
similarity index 100%
rename from laje_unidirecional_ee.png
rename to app/images/laje_unidirecional_ee.png
diff --git a/laje_unidirecional_ee2.png b/app/images/laje_unidirecional_ee2.png
similarity index 100%
rename from laje_unidirecional_ee2.png
rename to app/images/laje_unidirecional_ee2.png
diff --git a/laje_unidirecional_le.png b/app/images/laje_unidirecional_le.png
similarity index 100%
rename from laje_unidirecional_le.png
rename to app/images/laje_unidirecional_le.png
diff --git a/laje_unidirecional_le2.png b/app/images/laje_unidirecional_le2.png
similarity index 100%
rename from laje_unidirecional_le2.png
rename to app/images/laje_unidirecional_le2.png
diff --git a/laje_unidirecional_ll.png b/app/images/laje_unidirecional_ll.png
similarity index 100%
rename from laje_unidirecional_ll.png
rename to app/images/laje_unidirecional_ll.png
diff --git a/laje_unidirecional_ll2.png b/app/images/laje_unidirecional_ll2.png
similarity index 100%
rename from laje_unidirecional_ll2.png
rename to app/images/laje_unidirecional_ll2.png
diff --git a/laje_unidirecional_modelo.png.png b/app/images/laje_unidirecional_modelo.png.png
similarity index 100%
rename from laje_unidirecional_modelo.png.png
rename to app/images/laje_unidirecional_modelo.png.png
diff --git a/lajes_view.png b/app/images/lajes_view.png
similarity index 100%
rename from lajes_view.png
rename to app/images/lajes_view.png
diff --git a/livh.png b/app/images/livh.png
similarity index 100%
rename from livh.png
rename to app/images/livh.png
diff --git a/livv.png b/app/images/livv.png
similarity index 100%
rename from livv.png
rename to app/images/livv.png
diff --git a/logo.ico b/app/images/logo.ico
similarity index 100%
rename from logo.ico
rename to app/images/logo.ico
diff --git a/logo.png b/app/images/logo.png
similarity index 100%
rename from logo.png
rename to app/images/logo.png
diff --git a/logo3.png b/app/images/logo3.png
similarity index 100%
rename from logo3.png
rename to app/images/logo3.png
diff --git a/logo_a3_mini.png b/app/images/logo_a3_mini.png
similarity index 100%
rename from logo_a3_mini.png
rename to app/images/logo_a3_mini.png
diff --git a/logo_brunel.png b/app/images/logo_brunel.png
similarity index 100%
rename from logo_brunel.png
rename to app/images/logo_brunel.png
diff --git a/logo_engtool.png b/app/images/logo_engtool.png
similarity index 100%
rename from logo_engtool.png
rename to app/images/logo_engtool.png
diff --git a/nassau_logo.png b/app/images/nassau_logo.png
similarity index 100%
rename from nassau_logo.png
rename to app/images/nassau_logo.png
diff --git a/navier_logo.png b/app/images/navier_logo.png
similarity index 100%
rename from navier_logo.png
rename to app/images/navier_logo.png
diff --git a/navier_logo_mini.png b/app/images/navier_logo_mini.png
similarity index 100%
rename from navier_logo_mini.png
rename to app/images/navier_logo_mini.png
diff --git a/navier_logo_mini_alt.png b/app/images/navier_logo_mini_alt.png
similarity index 100%
rename from navier_logo_mini_alt.png
rename to app/images/navier_logo_mini_alt.png
diff --git a/navier_logo_mod.png b/app/images/navier_logo_mod.png
similarity index 100%
rename from navier_logo_mod.png
rename to app/images/navier_logo_mod.png
diff --git a/navier_pilar_esquema.png b/app/images/navier_pilar_esquema.png
similarity index 100%
rename from navier_pilar_esquema.png
rename to app/images/navier_pilar_esquema.png
diff --git a/navier_viga_dupla.png b/app/images/navier_viga_dupla.png
similarity index 100%
rename from navier_viga_dupla.png
rename to app/images/navier_viga_dupla.png
diff --git a/pilar_engaste_a.png b/app/images/pilar_engaste_a.png
similarity index 100%
rename from pilar_engaste_a.png
rename to app/images/pilar_engaste_a.png
diff --git a/pilar_engaste_b.png b/app/images/pilar_engaste_b.png
similarity index 100%
rename from pilar_engaste_b.png
rename to app/images/pilar_engaste_b.png
diff --git a/pilar_engaste_c.png b/app/images/pilar_engaste_c.png
similarity index 100%
rename from pilar_engaste_c.png
rename to app/images/pilar_engaste_c.png
diff --git a/pilar_engaste_d.png b/app/images/pilar_engaste_d.png
similarity index 100%
rename from pilar_engaste_d.png
rename to app/images/pilar_engaste_d.png
diff --git a/sapata_perfil.png b/app/images/sapata_perfil.png
similarity index 100%
rename from sapata_perfil.png
rename to app/images/sapata_perfil.png
diff --git a/sapata_sup.png b/app/images/sapata_sup.png
similarity index 100%
rename from sapata_sup.png
rename to app/images/sapata_sup.png
diff --git a/secao_viga.png b/app/images/secao_viga.png
similarity index 100%
rename from secao_viga.png
rename to app/images/secao_viga.png
diff --git a/secao_viga_detalhamento.png b/app/images/secao_viga_detalhamento.png
similarity index 100%
rename from secao_viga_detalhamento.png
rename to app/images/secao_viga_detalhamento.png
diff --git a/secao_viga_detalhamento_infos.png.png b/app/images/secao_viga_detalhamento_infos.png.png
similarity index 100%
rename from secao_viga_detalhamento_infos.png.png
rename to app/images/secao_viga_detalhamento_infos.png.png
diff --git a/inicio_alt.ui b/app/inicio_alt.ui
similarity index 99%
rename from inicio_alt.ui
rename to app/inicio_alt.ui
index 749dfc2..1a054fa 100644
--- a/inicio_alt.ui
+++ b/app/inicio_alt.ui
@@ -63,7 +63,7 @@ p, li { white-space: pre-wrap; }
- navier_logo_mini.png
+ images/navier_logo_mini.png
@@ -397,7 +397,7 @@ p, li { white-space: pre-wrap; }
- navier_logo.png
+ images/navier_logo.png
false
@@ -416,7 +416,7 @@ p, li { white-space: pre-wrap; }
- nassau_logo.png
+ images/nassau_logo.png
true
@@ -1086,7 +1086,7 @@ p, li { white-space: pre-wrap; }
- navier_logo.png
+ images/navier_logo.png
@@ -1168,7 +1168,7 @@ p, li { white-space: pre-wrap; }
- logo_a3_mini.png
+ images/logo_a3_mini.png
true
@@ -1187,7 +1187,7 @@ p, li { white-space: pre-wrap; }
- git_logo.png
+ images/git_logo.png
true
@@ -1219,7 +1219,7 @@ p, li { white-space: pre-wrap; }
- logo_brunel.png
+ images/logo_brunel.png
true
@@ -1238,7 +1238,7 @@ p, li { white-space: pre-wrap; }
- logo_engtool.png
+ images/logo_engtool.png
true
diff --git a/lajes_alt.ui b/app/lajes_alt.ui
similarity index 100%
rename from lajes_alt.ui
rename to app/lajes_alt.ui
diff --git a/lajes_carg_adicional_atualizada.ui b/app/lajes_carg_adicional_atualizada.ui
similarity index 100%
rename from lajes_carg_adicional_atualizada.ui
rename to app/lajes_carg_adicional_atualizada.ui
diff --git a/app/main.py b/app/main.py
new file mode 100644
index 0000000..2ba826e
--- /dev/null
+++ b/app/main.py
@@ -0,0 +1,2460 @@
+import sys
+import os
+import math
+
+from PyQt6.uic import loadUi
+from PyQt6.QtWidgets import (
+ QApplication,
+ QMainWindow,
+ QLabel,
+ QMessageBox,
+ QVBoxLayout,
+ QHBoxLayout,
+ QDialog,
+ QMessageBox,
+ QTableWidget,
+ QTableWidgetItem,
+ QStatusBar,
+ QToolBar,
+ QLineEdit,
+ QComboBox,
+ QSpinBox,
+)
+from PyQt6.QtGui import QPixmap, QIcon, QImage
+from PyQt6 import QtWidgets, QtGui, QtCore
+import pyqtgraph as pg
+from calculos.vigas import DadosViga, CalculadoraViga
+
+# import marcus
+
+tabela_marcus = "tabela_marcus.pdf"
+abaco_normal = "abaco_normal.pdf"
+abaco_obliqua = "abaco_obliqua.pdf"
+
+
+class Inicio(QMainWindow):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+ self.setWindowTitle("Navier - Início")
+ self.ui = None
+ self.load_ui()
+ self.load_signals()
+
+ def load_ui(self):
+ self.ui = loadUi("inicio_alt.ui", self)
+ self.label.setStyleSheet("Background-Color: #ddebff;")
+
+ self.pushButton.setIcon(QtGui.QIcon("images/btn_inicio_vigas.png"))
+ self.pushButton.setIconSize(QtCore.QSize(52, 52))
+ self.pushButton_3.setIcon(QtGui.QIcon("images/btn_inicio_pilares.png"))
+ self.pushButton_3.setIconSize(QtCore.QSize(42, 42))
+ self.pushButton_9.setIcon(QtGui.QIcon("images/btn_inicio_lajes.png"))
+ self.pushButton_9.setIconSize(QtCore.QSize(42, 42))
+ self.pushButton_11.setIcon(QtGui.QIcon("images/btn_inicio_fundacoes.png"))
+ self.pushButton_11.setIconSize(QtCore.QSize(45, 45))
+
+ self.label_5.setStyleSheet("Background-Color: #ddebff;")
+ self.label_10.setStyleSheet("Background-Color: #ddebff;")
+ self.label_9.setStyleSheet("Background-Color: #ddebff;")
+ self.label_11.setStyleSheet("Background-Color: #ddebff;")
+
+ self.pushButton_2.setIcon(QtGui.QIcon("images/btn_caa.png"))
+ self.pushButton_2.setIconSize(QtCore.QSize(45, 45))
+ self.pushButton_5.setIcon(QtGui.QIcon("images/btn_cadicional.png"))
+ self.pushButton_5.setIconSize(QtCore.QSize(45, 45))
+ self.pushButton_6.setIcon(QtGui.QIcon("images/btn_tabbitolas.png"))
+ self.pushButton_6.setIconSize(QtCore.QSize(45, 45))
+ self.pushButton_7.setIcon(QtGui.QIcon("images/btn_tabmarcus.png"))
+ self.pushButton_7.setIconSize(QtCore.QSize(45, 45))
+ self.pushButton_8.setIcon(QtGui.QIcon("images/btn_flexaosimples.png"))
+ self.pushButton_8.setIconSize(QtCore.QSize(45, 45))
+ self.pushButton_23.setIcon(QtGui.QIcon("images/btn_flexaocomposta.png"))
+ self.pushButton_23.setIconSize(QtCore.QSize(45, 45))
+
+ self.label_21.setToolTip(
+ "Brunel - programa de cálculo e verificação de perfis metálicos para perfis brasileiros"
+ )
+ self.label_22.setToolTip(
+ "EngTool - aplicação mobile para cálculo de vigas de concreto armado"
+ )
+
+ self.setFixedSize(570, 450)
+
+ self.setWindowIcon(QtGui.QIcon("images/logo.ico"))
+
+ self.show()
+
+ def load_signals(self):
+ self.pushButton.clicked.connect(self.iniciar_vigas)
+ self.pushButton_3.clicked.connect(self.iniciar_pilares)
+ self.pushButton_9.clicked.connect(self.iniciar_lajes)
+ self.pushButton_11.clicked.connect(self.iniciar_fundacoes)
+
+ self.pushButton_2.clicked.connect(self.iniciar_classe_agressividade)
+ self.pushButton_5.clicked.connect(self.iniciar_carga_adicional)
+ self.pushButton_6.clicked.connect(self.iniciar_tabela_bitolas)
+
+ self.pushButton_7.clicked.connect(
+ lambda: self.abrirTabelaAuxiliar(tabela_marcus)
+ )
+ self.pushButton_23.clicked.connect(
+ lambda: self.abrirTabelaAuxiliar(abaco_normal)
+ )
+ self.pushButton_8.clicked.connect(
+ lambda: self.abrirTabelaAuxiliar(abaco_obliqua)
+ )
+
+ def abrirTabelaAuxiliar(self, file):
+ os.startfile(file)
+
+ def iniciar_vigas(self) -> None:
+ """Exibe a janela de dimensiomaneto de vigas."""
+ print("[INFO] Janela de Dimensionamento de Vigas carregada corretamente!")
+ vigas.show()
+
+ def iniciar_pilares(self):
+ print("pilares")
+ pilares.show()
+
+ def iniciar_lajes(self):
+ print("lajes")
+ lajes.show()
+
+ def iniciar_fundacoes(self):
+ print("fundações")
+ sapatas.show()
+
+ # --------------------------- forms complementares -----------------------------
+ def iniciar_carga_adicional(self):
+ print("carga adicional")
+ carga_adicional.show()
+
+ def iniciar_tabela_bitolas(self):
+ print("carga adicional")
+ tabela_bitolas.show()
+
+ def iniciar_classe_agressividade(self):
+ print("classe de agressividade")
+ tabela_classe_agressividade.show()
+
+
+class Vigas(QtWidgets.QMainWindow):
+ def __init__(self):
+ super().__init__()
+ self.ui = loadUi("vigas_alt.ui", self)
+ self.load_signals()
+
+ self.setWindowIcon(QtGui.QIcon("images/logo.ico"))
+
+ self.setWindowTitle("Navier - Vigas")
+ self.setFixedSize(860, 620)
+
+ def load_signals(self):
+ self.btn_viga_armacao_simples.clicked.connect(
+ lambda: self.stacked_viga_modelo_armacao.setCurrentIndex(1)
+ )
+ self.btn_viga_armacao_dupla.clicked.connect(
+ lambda: self.stacked_viga_modelo_armacao.setCurrentIndex(0)
+ )
+ self.btn_viga_gerar_detalhamento.clicked.connect(lambda: detalhar_vigas.show())
+
+ self.btn_viga_calcular.clicked.connect(self.calcular_viga_index)
+ self.btn_viga_limpar.clicked.connect(self.limpar_preenchimento_janela_vigas)
+
+ self.radio_viga_dominio_2.clicked.connect(
+ lambda: self.ledit_viga_linha_neutra.setText("0.450")
+ )
+ self.radio_viga_dominio_3.clicked.connect(
+ lambda: self.ledit_viga_linha_neutra.setText("0.628")
+ )
+
+ def calcular_viga_index(self) -> None:
+ """Define o tipo de cálculo a ser realizado para dimensionamento da viga.
+ Viga simplesmente ou duplamente armada.
+ """
+ indice = self.stacked_viga_modelo_armacao.currentIndex()
+
+ if indice == 1:
+ print("[INFO] Calculando Viga Simplesmente armada.")
+ try:
+ dados_viga = self._coletar_dados_interface(tipo_armacao_viga="Simples")
+ calculos_viga = CalculadoraViga()
+ dicionario_resultados = calculos_viga.calcular_viga_simples(dados_viga)
+ self._atualizar_dados_interface(
+ dicionario_resultados, tipo_armacao_viga="Simples"
+ )
+ except Exception as e:
+ QMessageBox.warning(
+ self,
+ "Aviso",
+ str(e) or "Dados inconsistentes — verifique os campos.",
+ )
+ return
+ else:
+ print("[INFO] Calculando Viga Duplamente armada.")
+ try:
+ dados_viga = self._coletar_dados_interface(tipo_armacao_viga="Dupla")
+ calculos_viga = CalculadoraViga()
+ dicionario_resultados = calculos_viga.calcular_viga_dupla(dados_viga)
+ self._atualizar_dados_interface(
+ dicionario_resultados, tipo_armacao_viga="Dupla"
+ )
+ except Exception as e:
+ QMessageBox.warning(
+ self,
+ "Aviso",
+ str(e) or "Dados inconsistentes — verifique os campos.",
+ )
+ return
+
+ def limpar_preenchimento_janela_vigas(self) -> None:
+ """Retorna todos os widgets da janela para seus valores default."""
+
+ for widget in self.findChildren(QLineEdit):
+ widget.clear()
+
+ for widget in self.findChildren(QComboBox):
+ widget.setCurrentIndex(0)
+
+ for spin in self.findChildren(QSpinBox):
+ if spin.objectName() == "spin_viga_angulo_theta":
+ spin.setValue(30)
+
+ self.radio_viga_dominio_3.setChecked(False)
+ self.radio_viga_dominio_2.setChecked(True)
+ self.radio_viga_modelo_calculo_1.setChecked(True)
+ self.radio_viga_modelo_calculo_2.setChecked(False)
+
+ def _verificar_modelo_calculo_viga(self) -> str:
+ """Retorna o modelo de cálculo que será utilizado para verificação ao cisalhamento no ELU.
+
+ Modelo I: Diagonais de compressão inclinadas a 45° em relação ao eixo longitudinal do elemento estrutural e
+ parcela complementar Vc de valor constante, independente de VSd.
+
+ Modelo II: Diagonais de compressão inclinadas em relação ao eixo longitudinal da peça, variando livremente entre 30° e 45°. Admite ainda
+ que a parcela complementar Vc sofra redução com o aumento de VSd.
+
+ """
+ if self.radio_viga_modelo_calculo_2.isChecked():
+ modelo_calculo = "Modelo II"
+ else:
+ modelo_calculo = "Modelo I"
+ return modelo_calculo
+
+ def _coletar_dados_interface(self, tipo_armacao_viga: str) -> DadosViga:
+ """Coleta e converte dados da interface para DTO para serem utilizados no dimensionamento das vigas."""
+
+ modelo_calculo = self._verificar_modelo_calculo_viga()
+
+ if modelo_calculo == "Modelo I":
+ theta_transversal = 45
+ else:
+ theta_transversal = self.spin_viga_angulo_theta.value()
+
+ if tipo_armacao_viga == "Simples":
+
+ dados_calculo_viga = DadosViga(
+ mk=float(self.ledit_viga_momento_fletor.text()),
+ vk=float(self.ledit_viga_cortante.text()),
+ bw=float(self.ledit_viga_armacao_simples_largura.text()),
+ h=float(self.ledit_viga_armacao_simples_altura.text()),
+ d=float(self.ledit_viga_armacao_simples_altura_util.text()),
+ fck=float(self.combo_viga_concreto_fck.currentText()),
+ fyk=float(self.combo_viga_aco_classe.currentText()),
+ fcd=float(self.combo_viga_concreto_fck.currentText()) / 1.4,
+ fyd=float(self.combo_viga_aco_classe.currentText()) / 1.15,
+ vsd=float(self.ledit_viga_cortante.text()) * 1.4,
+ theta_transversal=(theta_transversal / 180) * math.pi,
+ modelo_calculo=modelo_calculo,
+ )
+
+ validacao, mensagem = dados_calculo_viga.validar_dados()
+ if not validacao:
+ raise ValueError(mensagem)
+
+ return dados_calculo_viga
+
+ else:
+ dados_calculo_viga = DadosViga(
+ mk=float(self.ledit_viga_momento_fletor.text()),
+ vk=float(self.ledit_viga_cortante.text()),
+ bw=float(self.ledit_viga_armacao_dupla_lagura.text()),
+ h=float(self.ledit_viga_armacao_dupla_altura.text()),
+ d=float(self.ledit_viga_armacao_dupla_altura_util.text()),
+ fck=float(self.combo_viga_concreto_fck.currentText()),
+ fyk=float(self.combo_viga_aco_classe.currentText()),
+ fcd=float(self.combo_viga_concreto_fck.currentText()) / 1.4,
+ fyd=float(self.combo_viga_aco_classe.currentText()) / 1.15,
+ vsd=float(self.ledit_viga_cortante.text()) * 1.4,
+ theta_transversal=(theta_transversal / 180) * math.pi,
+ modelo_calculo=modelo_calculo,
+ xis_dominio=float(self.ledit_viga_linha_neutra.text()),
+ )
+
+ validacao, mensagem = dados_calculo_viga.validar_dados()
+ if not validacao:
+ raise ValueError(mensagem)
+
+ return dados_calculo_viga
+
+ def _atualizar_dados_interface(
+ self, resultados_viga: dict, tipo_armacao_viga: str
+ ) -> None:
+ """Atualiza a interface com os resultados do cálculo do dimensionamento da viga."""
+
+ dados_viga = self._coletar_dados_interface(tipo_armacao_viga)
+
+ self.ledit_viga_vsd.setText(
+ str(round(resultados_viga["vk_viga"] * 1.4, ndigits=4))
+ )
+ self.ledit_viga_vrd2.setText(str(round(resultados_viga["vrd2"], ndigits=4)))
+ self.ledit_viga_vc.setText(str(round(resultados_viga["vc_0"], ndigits=4)))
+ self.ledit_viga_vsw.setText(str(round(resultados_viga["vsw"], ndigits=4)))
+ self.ledit_viga_as_s.setText(
+ str(round(resultados_viga["as_transversal"], ndigits=4))
+ )
+ self.ledit_viga_as_min_s.setText(
+ str(round(resultados_viga["as_min_transversal"], ndigits=4))
+ )
+
+ if tipo_armacao_viga == "Simples":
+
+ self.ledit_viga_armacao_simples_md.setText(
+ str(round(dados_viga.mk * 1.4, ndigits=4))
+ )
+ self.ledit_viga_armacao_simples_kmd.setText(
+ str(round(resultados_viga["kmd_viga"], 4))
+ )
+ self.ledit_viga_armacao_simples_kx.setText(
+ str(round(resultados_viga["kx_viga"], 4))
+ )
+ self.ledit_viga_armacao_simples_kz.setText(
+ str(round(resultados_viga["kz_viga"], 4))
+ )
+
+ self.ledit_viga_armacao_simples_as.setText(
+ str(round(resultados_viga["as_viga"], ndigits=4))
+ )
+ self.ledit_viga_armacao_simples_area_sobre_apoio.setText(
+ str(round(resultados_viga["as_sobre_apoio_viga"], ndigits=4))
+ )
+ self.ledit_viga_armacao_simples_as_pele.setText(
+ str(round(resultados_viga["as_pele"], ndigits=4))
+ )
+ self.ledit_viga_armacao_simples_as_max.setText(
+ str(round(resultados_viga["as_max_viga"], ndigits=4))
+ )
+ self.ledit_viga_armacao_simples_as_min.setText(
+ str(round(resultados_viga["as_min_viga"], ndigits=4))
+ )
+
+ self.ledit_viga_armacao_simples_dominio_ruptura.setText(
+ resultados_viga["dominio_viga"]
+ )
+
+ self.ledit_viga_armacao_simples_d_linha.setText(
+ str(round(resultados_viga["d_linha"], ndigits=2))
+ )
+
+ if (resultados_viga["dominio_viga"] == "Domínio 4a") or (
+ resultados_viga["dominio_viga"] == "Domínio 4b"
+ ):
+ QMessageBox.about(
+ self,
+ "Atenção",
+ "Domínio de Cálculo 4: recomenda-se utilizar, em seção retangular, armadura dupla ou seção tê para contenção dos esforços de compressão do concreto.",
+ )
+
+ if resultados_viga["as_viga"] > resultados_viga["as_max_viga"]:
+ QMessageBox.about(
+ self,
+ "Atenção",
+ "Área Total calculada superior a Área Máxima especificada para a seção da viga.",
+ )
+ if resultados_viga["as_viga"] < resultados_viga["as_min_viga"]:
+ QMessageBox.about(
+ self,
+ "Atenção",
+ "Área Total calculada inferior a Área Mínima especificada para a seção da viga.",
+ )
+
+ else:
+
+ self.ledit_viga_d_limite.setText(
+ str(round(resultados_viga["d_min_viga"], ndigits=5))
+ )
+ self.ledit_viga_x_limite.setText(
+ str(round(resultados_viga["x_lim_viga"], ndigits=5))
+ )
+ self.ledit_viga_momento_limite.setText(
+ str(round(resultados_viga["momento_lim_viga"], ndigits=5))
+ )
+ self.ledit_viga_momento_2.setText(
+ str(round(resultados_viga["momento_2_viga"], ndigits=5))
+ )
+
+ self.ledit_viga_as_compressao.setText(
+ str(round(resultados_viga["as_compressao_viga"], ndigits=5))
+ )
+ self.ledit_viga_as_tracao.setText(
+ str(round(resultados_viga["as_tracao_viga"], ndigits=5))
+ )
+ self.ledit_viga_area_sobre_apoio.setText(
+ str(round(resultados_viga["as_sobre_apoio_viga"], ndigits=5))
+ )
+ self.ledit_viga_as_pele.setText(
+ str(round(resultados_viga["as_pele"], ndigits=5))
+ )
+ self.ledit_viga_as_total.setText(
+ str(round(resultados_viga["as_total_viga"], ndigits=2))
+ )
+ self.ledit_viga_as_max.setText(
+ str(round(resultados_viga["as_max_viga"], ndigits=2))
+ )
+ self.ledit_viga_as_min.setText(
+ str(round(resultados_viga["as_min_viga"], ndigits=2))
+ )
+
+ self.ledit_viga_armacao_dupla_d_linha.setText(
+ str(round(resultados_viga["d_linha"], ndigits=2))
+ )
+
+ if resultados_viga["as_total_viga"] > resultados_viga["as_max_viga"]:
+ QMessageBox.about(
+ self,
+ "Atenção",
+ "Área Total calculada superior a Área Máxima especificada para a seção da viga.",
+ )
+ if resultados_viga["as_total_viga"] < resultados_viga["as_min_viga"]:
+ QMessageBox.about(
+ self,
+ "Atenção",
+ "Área Total calculada inferior a Área Mínima especificada para a seção da viga.",
+ )
+
+
+tabela_bitolas_ferro = [
+ [6.3, 31.17],
+ [8, 50.26],
+ [10, 78.53],
+ [12.5, 122.71],
+ [16, 201.06],
+ [20, 314.15],
+ [25, 490.87],
+ [32, 804.24],
+ [40, 1256.63],
+]
+
+
+class Detalhar_viga(QtWidgets.QMainWindow):
+ def __init__(self):
+ super().__init__()
+ self.load_ui()
+ self.load_signals()
+
+ def load_ui(self):
+ self.ui = loadUi("detalhamento_vigas_alt.ui", self)
+
+ # scriptDir = os.path.dirname(os.path.realpath(__file__))
+ # self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
+ self.setWindowIcon(QtGui.QIcon("images/logo.ico"))
+
+ self.setWindowTitle("Navier - Vigas - Detalhamento")
+ self.setFixedSize(845, 600)
+
+ def load_signals(self):
+ print("inicializado")
+ self.pushButton.clicked.connect(self.calcular_area)
+ # self.pushButton.clicked.connect(self.calcular_estribos)
+ self.pushButton_2.clicked.connect(self.limpar_detalhamento)
+ self.pushButton_3.clicked.connect(self.recuperarValores)
+
+ # pg.plot(x=[0,1,2,3,4], y=[0,1,2,3,4]**2 )
+ header = self.tableWidget.horizontalHeader()
+ # FIXME Verificar a propriedade atualizada caso necessário
+ # header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
+ # header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
+ # header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
+ # header.setSectionResizeMode(3, QtWidgets.QHeaderView.Stretch)
+ # header.setSectionResizeMode(4, QtWidgets.QHeaderView.Stretch)
+ # header.setSectionResizeMode(5, QtWidgets.QHeaderView.Stretch)
+
+ self.widget.setTitle("nº barras/Bitola")
+ self.widget.showGrid(x=True, y=True, alpha=1)
+
+ # if '0' not in info_viga:
+ # self.recuperarValores()
+
+ def calcular_estribos(self):
+ vsw = self.lineEdit_14.text()
+ fyk_estribo = self.comboBox_2.currentText()
+ tramos = self.lineEdit_15.text()
+
+ if vsw != "0" and tramos != "0":
+ vsw = float(self.lineEdit_14.text())
+ bitola_estribo = float(self.comboBox.currentText())
+ fyk_estribo = float(self.comboBox_2.currentText())
+ tramos = float(self.lineEdit_15.text())
+ d = float(self.lineEdit_13.text())
+
+ espass_horizontal = info_viga_cortante[1]
+
+ area_bitola = 3.14 * ((bitola_estribo / 1000) ** 2) / 4
+
+ print(vsw)
+ print(bitola_estribo)
+ print(tramos)
+ print(fyk_estribo)
+ print(area_bitola)
+
+ s_estribo = (
+ (tramos * area_bitola * 0.9 * (d / 100) * (fyk_estribo * 100000 / 1.15))
+ / vsw
+ * 1000
+ ) / 100
+ s_estribo = round(s_estribo, ndigits=3)
+
+ if s_estribo < espass_horizontal:
+ self.lineEdit.setText(str(espass_horizontal))
+ else:
+ self.lineEdit.setText(str(s_estribo))
+
+ else:
+ QMessageBox.about(
+ self,
+ "Falta de Dados",
+ "Por favor insira dados consistentes para o cálculo dos Estribos!",
+ )
+
+ def recuperarValores(self):
+ area_aco = info_viga[0]
+ base = info_viga[1]
+ altura = info_viga[2]
+ d = info_viga[3]
+ d_agreg = info_viga[4]
+
+ vsw = info_viga_cortante[0]
+
+ self.lineEdit_11.setText(area_aco)
+ self.lineEdit_10.setText(base)
+ self.lineEdit_9.setText(altura)
+ self.lineEdit_12.setText(d_agreg)
+ self.lineEdit_13.setText(d)
+ self.lineEdit_14.setText(vsw)
+
+ def calcular_area(self):
+ area_aco = self.lineEdit_11.text()
+ base = self.lineEdit_10.text()
+ altura = self.lineEdit_9.text()
+ d_agreg = self.lineEdit_12.text()
+ d = self.lineEdit_13.text()
+
+ if (
+ area_aco != "0"
+ and base != "0"
+ and altura != "0"
+ and d_agreg != "0"
+ and d != "0"
+ ):
+
+ self.widget.clear()
+ area_aco = float(self.lineEdit_11.text())
+ base = float(self.lineEdit_10.text())
+ altura = float(self.lineEdit_9.text())
+ cobrimento = float(self.comboBox_3.currentText())
+ bitola_estribo = float(self.comboBox.currentText())
+ x = []
+ y = []
+ z = []
+ cont = 0
+ for i in tabela_bitolas_ferro:
+ n_barras = float(area_aco / i[1])
+ print("bitola: ", i[0], " - nº barras: ", n_barras)
+
+ self.tableWidget.setItem(
+ cont, 2, QTableWidgetItem(str(round(n_barras, ndigits=2)))
+ )
+ self.tableWidget.setItem(
+ cont, 3, QTableWidgetItem(str(round(n_barras + 0.5) + 1))
+ )
+
+ x.append(i[0])
+ y.append(round(n_barras + 0.5) + 1)
+
+ bitola = x[cont]
+ n_barras = round(n_barras + 0.5) + 1
+
+ espass_horizontal = (
+ round(
+ base
+ - 2 * (cobrimento + bitola_estribo / 10)
+ - n_barras * (bitola / 10),
+ ndigits=2,
+ )
+ ) / (n_barras - 1)
+
+ z.append(round(espass_horizontal, ndigits=2))
+ self.tableWidget.setItem(
+ cont, 4, QTableWidgetItem(str(espass_horizontal))
+ )
+
+ print("base:", base)
+ print("cobrimento:", cobrimento)
+ print("bitola_estribo:", bitola_estribo)
+ print("n_barras:", n_barras)
+
+ cont += 1
+
+ # print(x)
+ # print(y)
+ # print(z)
+
+ self.widget.plot(x=x, y=y, pen=(3))
+
+ self.calcular_espacamentos()
+ self.calcular_estribos()
+
+ else:
+ QMessageBox.about(
+ self, "Falta de Dados", "Por favor insira dados consistentes!"
+ )
+
+ def calcular_espacamentos(self):
+ bitola = float(self.comboBox_4.currentText())
+ d_agreg = float(self.lineEdit_12.text())
+
+ s_horizontal = max(2, (bitola / 10), 1.2 * d_agreg)
+ s_vertical = max(2, (bitola / 10), 0.5 * d_agreg)
+
+ # ------------------------------- saida de dados ----------------------------------
+ self.lineEdit_7.setText(str(s_horizontal))
+ self.lineEdit_8.setText(str(s_vertical))
+
+ def limpar_detalhamento(self):
+ self.widget.clear()
+ self.lineEdit_11.setText(str("0"))
+ self.lineEdit_9.setText(str("0"))
+ self.lineEdit_10.setText(str("0"))
+ self.lineEdit_7.setText(str("0"))
+ self.lineEdit_8.setText(str("0"))
+
+
+class Tabela_Bitolas(QtWidgets.QMainWindow):
+ def __init__(self):
+ super().__init__()
+ self.ui = loadUi("bitolas_ferros.ui", self)
+
+ # scriptDir = os.path.dirname(os.path.realpath(__file__))
+ # self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
+ self.setWindowIcon(QtGui.QIcon("images/logo.ico"))
+
+ header = self.tableWidget.horizontalHeader()
+ # FIXME Verificar a propriedade atualizada caso necessário
+ # header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
+ # header.setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
+ # header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
+
+ self.setWindowTitle("Navier - Tabela de Bitolas")
+ self.setFixedSize(456, 372)
+
+
+global pilares_info
+pilares_info = [0, 0, 0, 0]
+
+global pilares_info_aco
+pilares_info_aco = [0, 0, 0, 0, 0, 0, 0]
+
+
+class Pilares(QtWidgets.QMainWindow):
+ def __init__(self):
+ super().__init__()
+ self.ui = loadUi("pilares_alt.ui", self)
+ self.load_signals()
+
+ # scriptDir = os.path.dirname(os.path.realpath(__file__))
+ # self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
+ self.setWindowIcon(QtGui.QIcon("images/logo.ico"))
+
+ self.setWindowTitle("Navier - Pilares")
+ self.setFixedSize(997, 670)
+
+ def load_signals(self):
+ print("pilares carregado")
+ self.cont_x = 0
+ self.cont_y = 0
+
+ self.pushButton_6.clicked.connect(self.calcular_pilares)
+ self.pushButton_7.clicked.connect(self.limpar_pilares)
+
+ self.pushButton.clicked.connect(self.gerar_envoltoria)
+ self.pushButton_3.clicked.connect(lambda: pilares_areas_aco.show())
+
+ def calcular_pilares(self):
+ x_pilar = self.lineEdit.text()
+ y_pilar = self.lineEdit_2.text()
+ altura_pilar = self.lineEdit_3.text()
+ altura_lance = self.lineEdit_4.text()
+
+ nk_pilar = self.lineEdit_5.text()
+ momento_x_topo = self.lineEdit_6.text()
+ momento_x_base = self.lineEdit_7.text()
+ momento_y_topo = self.lineEdit_8.text()
+ momento_y_base = self.lineEdit_9.text()
+
+ if (
+ x_pilar != "0"
+ and y_pilar != "0"
+ and altura_pilar != "0"
+ and altura_lance != "0"
+ and nk_pilar != "0"
+ ):
+ fck_pilar = float(self.comboBox_3.currentText())
+ fcd_pilar = fck_pilar / 1.4
+ fyk_pilar = float(self.comboBox_4.currentText())
+ fyd_pilar = fyk_pilar / 1.15
+ cobrimento_pilar = float(self.comboBox_5.currentText())
+
+ x_pilar = float(self.lineEdit.text())
+ y_pilar = float(self.lineEdit_2.text())
+ altura_pilar = float(self.lineEdit_3.text())
+ altura_lance = float(self.lineEdit_4.text())
+
+ nk_pilar = float(self.lineEdit_5.text())
+ momento_x_topo = float(self.lineEdit_6.text())
+ momento_x_base = float(self.lineEdit_7.text())
+ momento_y_topo = float(self.lineEdit_8.text())
+ momento_y_base = float(self.lineEdit_9.text())
+
+ area_secao_pilar = (x_pilar / 100) * (y_pilar / 100)
+
+ # nd_pilar = (nk_pilar + ((x_pilar/100)*(y_pilar/100)*altura_pilar*25)) * 1.4
+ nd_pilar = (nk_pilar) * 1.4
+ md_x_topo = 1.4 * momento_x_topo
+ md_x_base = 1.4 * momento_x_base
+ md_y_topo = 1.4 * momento_y_topo
+ md_y_base = 1.4 * momento_y_base
+
+ tipo_apoio_x = "AA"
+
+ if (
+ momento_x_topo == 0
+ and momento_x_base == 0
+ and momento_y_topo == 0
+ and momento_y_base == 0
+ ):
+ self.tipo_pilar = "intermediario"
+ elif momento_x_topo == 0 and momento_x_base == 0:
+ self.tipo_pilar = "extremidade-x"
+ elif momento_y_topo == 0 and momento_y_base == 0:
+ self.tipo_pilar = "extremidade-y"
+ else:
+ self.tipo_pilar = "canto"
+
+ self.lineEdit_13.setText(str(round(md_x_topo, ndigits=5)))
+ self.lineEdit_14.setText(str(round(md_x_base, ndigits=5)))
+ self.lineEdit_22.setText(str(round(md_y_topo, ndigits=5)))
+ self.lineEdit_28.setText(str(round(md_y_base, ndigits=5)))
+
+ # -Eixo-X----------------------------------------------------------------------
+ b = y_pilar
+ h = x_pilar
+
+ m_a = max(md_x_topo, md_x_base)
+ m_b = min(md_x_topo, md_x_base)
+
+ if self.tipo_pilar == "intermediario" or self.tipo_pilar == "extremidade-x":
+ alfa_b_x = 1.0
+ else:
+ alfa_b_x = 0.6 + 0.4 * (m_b / m_a)
+
+ if alfa_b_x < 0.4:
+ alfa_b_x = 0.4
+
+ # excen_min_x = (1.5+0.03*h)
+ momento_min_x = (nd_pilar * (1.5 + 0.03 * h)) / 100
+ excen_min_x = momento_min_x / nd_pilar
+
+ if md_x_topo < momento_min_x:
+ md_x_topo = momento_min_x
+ print("momento topo - mínimo")
+ alfa_b_x = 1.0
+ if md_x_base < momento_min_x:
+ md_x_base = momento_min_x
+ print("momento base - mínimo")
+ alfa_b_x = 1.0
+
+ compr_efetivo_x = (altura_pilar * 100) + h
+ if altura_lance * 100 < compr_efetivo_x:
+ compr_efetivo_x = altura_lance * 100
+
+ excen_x_acidental = compr_efetivo_x / 400
+ v_0 = (nd_pilar * 1000) / (area_secao_pilar * fcd_pilar * 1000000)
+
+ excentricidade_relativa = (
+ max(md_x_topo, md_x_base, momento_min_x) / nd_pilar
+ ) / h
+
+ lambda_pilar_x = 3.46 * (compr_efetivo_x / h)
+ lambda_pilar_x_limite = (25 + 12.5 * (excentricidade_relativa)) / alfa_b_x
+ if lambda_pilar_x_limite < 35:
+ lambda_pilar_x_limite = 35
+
+ excen_2_x = (compr_efetivo_x**2) / 10 * (0.005 / ((v_0 + 0.5) * h))
+
+ md2_x = nd_pilar * (excen_2_x / 100)
+
+ if lambda_pilar_x > lambda_pilar_x_limite:
+ print("efeitos de 2 ordem considerados")
+ excen_2 = (compr_efetivo_x**2) / 10 * (0.005 / ((v_0 + 0.5) * h))
+ md2_x_relativo = nd_pilar * (excen_2 / 100)
+ else:
+ md2_x_relativo = 0
+ print("efeitos de 2 ordem desconsiderados")
+
+ msd_x_intermediario = (
+ alfa_b_x * max(abs(md_x_topo), abs(md_x_base), abs(momento_min_x))
+ + md2_x_relativo
+ )
+ # msd_x_intermediario = alfa_b_x * abs(momento_min_x) + md2_x_relativo
+
+ mi_x = msd_x_intermediario / (h * area_secao_pilar * fcd_pilar) / 10
+ delta_x = cobrimento_pilar / h
+
+ # -Eixo-Y----------------------------------------------------------------------
+ h = y_pilar
+ b = x_pilar
+
+ m_a = max(md_y_topo, md_y_base)
+ m_b = min(md_y_topo, md_y_base)
+
+ if self.tipo_pilar == "intermediario" or self.tipo_pilar == "extremidade-y":
+ alfa_b_y = 1.0
+ else:
+ alfa_b_y = 0.6 + 0.4 * (m_b / m_a)
+
+ if alfa_b_y < 0.4:
+ alfa_b_y = 0.4
+
+ momento_min_y = (nd_pilar * (1.5 + 0.03 * h)) / 100
+ excen_min_y = momento_min_y / nd_pilar
+
+ if md_y_topo < momento_min_y:
+ md_y_topo = momento_min_y
+ print("momento topo - mínimo")
+ alfa_b_y = 1.0
+ if md_y_base < momento_min_y:
+ md_y_base = momento_min_y
+ print("momento base - mínimo")
+ alfa_b_y = 1.0
+
+ compr_efetivo_y = (altura_pilar * 100) + h
+ if altura_lance * 100 < compr_efetivo_y:
+ compr_efetivo_y = altura_lance * 100
+
+ excen_y_acidental = compr_efetivo_y / 400
+ v_0 = (nd_pilar * 1000) / (area_secao_pilar * fcd_pilar * 1000000)
+
+ excentricidade_relativa = (
+ max(md_y_topo, md_y_base, momento_min_y) / nd_pilar
+ ) / h
+
+ lambda_pilar_y = 3.46 * (compr_efetivo_y / h)
+ lambda_pilar_y_limite = (25 + 12.5 * (excentricidade_relativa)) / alfa_b_y
+ if lambda_pilar_y_limite < 35:
+ lambda_pilar_y_limite = 35
+
+ excen_2_y = (compr_efetivo_y**2) / 10 * (0.005 / ((v_0 + 0.5) * h))
+
+ md2_y = nd_pilar * (excen_2_y / 100)
+
+ if lambda_pilar_y > lambda_pilar_y_limite:
+ print("efeitos de 2 ordem considerados")
+ excen_2 = (compr_efetivo_y**2) / 10 * (0.005 / ((v_0 + 0.5) * h))
+ md2_y_relativo = nd_pilar * (excen_2 / 100)
+ else:
+ md2_y_relativo = 0
+ print("efeitos de 2 ordem desconsiderados")
+
+ msd_y_intermediario = (
+ alfa_b_y * max(abs(md_y_topo), abs(md_y_base), abs(momento_min_y))
+ + md2_y_relativo
+ )
+ # msd_y_intermediario = alfa_b_y * abs(momento_min_y) + md2_y_relativo
+
+ mi_y = msd_y_intermediario / (h * area_secao_pilar * fcd_pilar) / 10
+ delta_y = cobrimento_pilar / h
+
+ # --------------------------------------------- saida de dados ---------------------------------------------
+ self.lineEdit_10.setText(str(round(nd_pilar, ndigits=4)))
+ self.lineEdit_11.setText(str(round(area_secao_pilar, ndigits=4)))
+ self.lineEdit_12.setText(str(round(v_0, ndigits=4)))
+
+ self.lineEdit_15.setText(str(round(momento_min_x, ndigits=5)))
+ self.lineEdit_16.setText(str(round(excen_min_x * 100, ndigits=5)))
+ self.lineEdit_17.setText(str(round(lambda_pilar_x, ndigits=5)))
+ self.lineEdit_18.setText(str(round(lambda_pilar_x_limite, ndigits=5)))
+ self.lineEdit_19.setText(str(round(excen_2_x, ndigits=5)))
+ self.lineEdit_20.setText(str(round(md2_x, ndigits=5)))
+ self.lineEdit_21.setText(str(round(msd_x_intermediario, ndigits=5)))
+
+ self.lineEdit_24.setText(str(round(momento_min_y, ndigits=5)))
+ self.lineEdit_25.setText(str(round(excen_min_y * 100, ndigits=5)))
+ self.lineEdit_26.setText(str(round(lambda_pilar_y, ndigits=5)))
+ self.lineEdit_23.setText(str(round(lambda_pilar_y_limite, ndigits=5)))
+ self.lineEdit_30.setText(str(round(excen_2_y, ndigits=5)))
+ self.lineEdit_29.setText(str(round(md2_y, ndigits=5)))
+ self.lineEdit_27.setText(str(round(msd_y_intermediario, ndigits=5)))
+
+ self.lineEdit_31.setText(str(round(mi_x, ndigits=2)))
+ self.lineEdit_32.setText(str(round(mi_y, ndigits=2)))
+ self.lineEdit_33.setText(str(round(delta_x, ndigits=2)))
+ self.lineEdit_34.setText(str(round(delta_y, ndigits=2)))
+
+ global pilares_info
+ pilares_info = [
+ msd_x_intermediario,
+ msd_y_intermediario,
+ momento_min_x,
+ momento_min_y,
+ ]
+
+ if md2_x_relativo == 0:
+ self.label_39.setText("não considera 2º ordem")
+ else:
+ self.label_39.setText("considera 2º ordem")
+
+ if md2_y_relativo == 0:
+ self.label_44.setText("não considera 2º ordem")
+ else:
+ self.label_44.setText("considera 2º ordem")
+
+ if self.tipo_pilar == "intermediario":
+ self.label.setText("PILAR INTERMEDIÁRIO")
+ elif (self.tipo_pilar == "extremidade-x") or (
+ self.tipo_pilar == "extremidade-y"
+ ):
+ self.label.setText("PILAR DE EXTREMIDADE")
+ else:
+ self.label.setText("PILAR DE CANTO")
+
+ global pilares_info_aco
+ pilares_info_aco = [
+ mi_x,
+ delta_x,
+ mi_y,
+ delta_y,
+ fck_pilar,
+ area_secao_pilar,
+ nk_pilar,
+ ]
+
+ else:
+ QMessageBox.about(
+ self, "Falta de Dados", "Por favor insira dados consistentes!"
+ )
+
+ def gerar_envoltoria(self):
+ msd_x_intermediario = pilares_info[0]
+ msd_y_intermediario = pilares_info[1]
+ momento_min_x = pilares_info[2]
+ momento_min_y = pilares_info[3]
+
+ x = []
+ y = []
+ for i in range(360):
+ theta = i
+ theta_conv = (theta * math.pi) / 180
+
+ seno = math.sin(theta_conv)
+ seno = momento_min_y * seno
+
+ cosseno = math.cos(theta_conv)
+ cosseno = momento_min_x * cosseno
+
+ x.append(seno)
+ y.append(cosseno)
+
+ z = []
+ w = []
+ for j in range(360):
+ theta = j
+ theta_conv = (theta * math.pi) / 180
+
+ seno = math.sin(theta_conv)
+ seno = msd_y_intermediario * seno
+
+ cosseno = math.cos(theta_conv)
+ cosseno = msd_x_intermediario * cosseno
+
+ z.append(seno)
+ w.append(cosseno)
+
+ # create plot
+ """plt = pg.plot(x, y, title='theTitle', pen='r')
+ plt.showGrid(x=True,y=True)
+ """
+ # create plot
+ plt = pg.plot()
+ plt.clear()
+ plt.showGrid(x=True, y=True)
+ plt.addLegend()
+ plt.setTitle("Envoltória de Momentos")
+
+ # set properties
+ plt.setLabel("left", "Momentos Y", units="KN.m")
+ plt.setLabel("bottom", "Momentos X", units="KN.m")
+ plt.setXRange(0, 10)
+ plt.setYRange(0, 20)
+
+ plt.enableAutoRange()
+ plt.setWindowTitle("pyqtgraph plot")
+ # plot
+ c1 = plt.plot(x, y, pen="r", name="Envoltória Momentos min")
+ c2 = plt.plot(z, w, pen="b", name="Envoltória Momentos máx")
+
+ def limpar_pilares(self):
+ print("limpar")
+ self.comboBox_3.setCurrentIndex(0)
+ self.comboBox_4.setCurrentIndex(0)
+ self.comboBox_5.setCurrentIndex(0)
+
+ self.lineEdit.setText("0")
+ self.lineEdit_2.setText("0")
+ self.lineEdit_3.setText("0")
+ self.lineEdit_4.setText("0")
+ self.lineEdit_5.setText("0")
+ self.lineEdit_6.setText("0")
+ self.lineEdit_7.setText("0")
+ self.lineEdit_8.setText("0")
+ self.lineEdit_9.setText("0")
+
+ self.lineEdit_10.setText("")
+ self.lineEdit_11.setText("")
+ self.lineEdit_12.setText("")
+ self.lineEdit_13.setText("")
+ self.lineEdit_14.setText("")
+ self.lineEdit_15.setText("")
+ self.lineEdit_16.setText("")
+ self.lineEdit_17.setText("")
+ self.lineEdit_18.setText("")
+ self.lineEdit_19.setText("")
+ self.lineEdit_20.setText("")
+ self.lineEdit_21.setText("")
+ self.lineEdit_22.setText("")
+ self.lineEdit_23.setText("")
+ self.lineEdit_24.setText("")
+ self.lineEdit_25.setText("")
+ self.lineEdit_26.setText("")
+ self.lineEdit_27.setText("")
+ self.lineEdit_28.setText("")
+ self.lineEdit_29.setText("")
+ self.lineEdit_30.setText("")
+
+ self.lineEdit_31.setText("")
+ self.lineEdit_32.setText("")
+ self.lineEdit_33.setText("")
+ self.lineEdit_34.setText("")
+
+
+class Pilar_area_aco(QtWidgets.QMainWindow):
+ def __init__(self):
+ super().__init__()
+ self.load_ui()
+ self.load_signals()
+
+ def load_ui(self):
+ self.ui = loadUi("pilares_areas_aco.ui", self)
+
+ # scriptDir = os.path.dirname(os.path.realpath(__file__))
+ # self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
+ self.setWindowIcon(QtGui.QIcon("images/logo.ico"))
+
+ self.setWindowTitle("Navier - Pilares - Áreas de Aço")
+ self.setFixedSize(484, 300)
+
+ self.pushButton_4.setIcon(QtGui.QIcon("images/btn_flexaosimples.png"))
+ self.pushButton_4.setIconSize(QtCore.QSize(50, 60))
+ self.pushButton_5.setIcon(QtGui.QIcon("images/btn_flexaocomposta.png"))
+ self.pushButton_5.setIconSize(QtCore.QSize(50, 60))
+
+ def load_signals(self):
+ print("inicializado")
+ self.pushButton_2.clicked.connect(self.calcular_area_aco)
+ self.pushButton.clicked.connect(self.recuperar_dados)
+ self.pushButton_3.clicked.connect(self.limpar)
+ self.pushButton_4.clicked.connect(
+ lambda: self.abrirTabelaAuxiliar(abaco_normal)
+ )
+ self.pushButton_5.clicked.connect(
+ lambda: self.abrirTabelaAuxiliar(abaco_obliqua)
+ )
+
+ def recuperar_dados(self):
+ self.lineEdit_2.setText(str(round(pilares_info_aco[0], ndigits=2)))
+ self.lineEdit_3.setText(str(round(pilares_info_aco[1], ndigits=2)))
+ self.lineEdit_5.setText(str(round(pilares_info_aco[2], ndigits=2)))
+ self.lineEdit_6.setText(str(round(pilares_info_aco[3], ndigits=2)))
+ self.lineEdit_12.setText(str(round(pilares_info_aco[4], ndigits=2)))
+ self.lineEdit_13.setText(str(round(pilares_info_aco[5], ndigits=2)))
+ self.lineEdit_14.setText(str(round(pilares_info_aco[6], ndigits=2)))
+
+ def calcular_area_aco(self):
+ fck = float(self.lineEdit_12.text())
+ fcd = fck / 1.4
+ fyd = 500 / 1.15
+ area_concreto = float(self.lineEdit_13.text())
+ nk = float(self.lineEdit_14.text())
+ nd = 1.4 * nk
+
+ mi_x = float(self.lineEdit_2.text())
+ delta_x = float(self.lineEdit_3.text())
+
+ mi_y = float(self.lineEdit_5.text())
+ delta_y = float(self.lineEdit_6.text())
+
+ omega_x = float(self.lineEdit_4.text())
+ omega_y = float(self.lineEdit_7.text())
+
+ as_x = (omega_x * (area_concreto * 1000000) * fcd) / fyd
+ as_y = (omega_y * (area_concreto * 1000000) * fcd) / fyd
+
+ as_x = round(as_x, ndigits=3)
+ as_y = round(as_y, ndigits=3)
+
+ as_pilar_min = 0.15 * (nd / fyd)
+ if as_pilar_min < (0.004 * area_concreto * 100000):
+ as_pilar_min = round((0.004 * area_concreto * 100000), ndigits=3)
+
+ as_pilar_max = round((0.08 * area_concreto * 1000000), ndigits=3)
+
+ # -------------------------------------- saída de dados ----------------------------------------------------
+ self.lineEdit_8.setText(str(as_x))
+ self.lineEdit_9.setText(str(as_y))
+ self.lineEdit_10.setText(str(as_pilar_max))
+ self.lineEdit_11.setText(str(as_pilar_min))
+
+ def teste(self):
+ print("teste")
+
+ def limpar(self):
+ self.lineEdit_2.setText("0")
+ self.lineEdit_3.setText("0")
+ self.lineEdit_4.setText("1")
+ self.lineEdit_5.setText("0")
+ self.lineEdit_6.setText("0")
+ self.lineEdit_7.setText("1")
+ self.lineEdit_8.setText("0")
+ self.lineEdit_9.setText("0")
+ self.lineEdit_10.setText("0")
+ self.lineEdit_11.setText("0")
+ self.lineEdit_12.setText("0")
+ self.lineEdit_13.setText("0")
+ self.lineEdit_14.setText("0")
+
+ def abrirTabelaAuxiliar(self, file):
+ if sys.platform == "linux2":
+ subprocess.call(["xdg-open", file])
+ else:
+ os.startfile(file)
+
+
+class Lajes(QtWidgets.QMainWindow):
+ def __init__(self):
+ super().__init__()
+ self.ui = loadUi("lajes_alt.ui", self)
+
+ self.lado1 = "livre"
+ self.lado2 = "livre"
+ self.lado3 = "livre"
+ self.lado4 = "livre"
+ self.label_37.hide()
+ self.label_38.hide()
+ self.label_40.hide()
+ self.label_41.hide()
+ global caso
+ caso = "1"
+ global lx_lage
+ lx_lage = "l_menor"
+ self.lineEdit.setReadOnly(True)
+
+ self.load_signals()
+
+ # scriptDir = os.path.dirname(os.path.realpath(__file__))
+ # self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
+ self.setWindowIcon(QtGui.QIcon("images/logo.ico"))
+
+ self.setWindowTitle("Navier - Lajes")
+ self.setFixedSize(1245, 587)
+
+ def load_signals(self):
+ print("lajes iniciado")
+ self.pushButton.clicked.connect(self.estado_l1)
+ self.pushButton_2.clicked.connect(self.estado_l2)
+ self.pushButton_3.clicked.connect(self.estado_l3)
+ self.pushButton_4.clicked.connect(self.estado_l4)
+ self.pushButton.clicked.connect(self.situacao_laje)
+ self.pushButton_2.clicked.connect(self.situacao_laje)
+ self.pushButton_3.clicked.connect(self.situacao_laje)
+ self.pushButton_4.clicked.connect(self.situacao_laje)
+
+ self.pushButton_5.clicked.connect(
+ lambda: self.abrirTabelaAuxiliar(tabela_marcus)
+ )
+ self.pushButton_6.clicked.connect(self.calcular_laje)
+ self.pushButton_7.clicked.connect(self.limpar_lajes)
+
+ self.toolButton.clicked.connect(self.revelar_carg_acidental)
+
+ def abrirTabelaAuxiliar(self, file):
+ if sys.platform == "linux2":
+ subprocess.call(["xdg-open", file])
+ else:
+ os.startfile(file)
+
+ def teste(self):
+ lado1 = float(self.lineEdit_3.text())
+ lado2 = float(self.lineEdit_4.text())
+ espes = float(self.lineEdit_5.text())
+
+ pp = (espes * 25) / 100
+ self.lineEdit.setText(str(pp))
+
+ def revelar_carg_acidental(self):
+ print("oi--")
+ carga_adicional.show()
+
+ def estado_l1(self):
+ if self.lado1 == "livre":
+ self.lado1 = "engastado"
+ pixmap = QPixmap("images/engv.png")
+ self.pushButton.setIcon(QIcon(pixmap))
+ else:
+ self.lado1 = "livre"
+ pixmap = QPixmap("images/livv.png")
+ self.pushButton.setIcon(QIcon(pixmap))
+
+ def estado_l2(self):
+ if self.lado2 == "livre":
+ self.lado2 = "engastado"
+ pixmap = QPixmap("images/engh.png")
+ self.pushButton_2.setIcon(QIcon(pixmap))
+ else:
+ self.lado2 = "livre"
+ pixmap = QPixmap("images/livh.png")
+ self.pushButton_2.setIcon(QIcon(pixmap))
+
+ def estado_l3(self):
+ if self.lado3 == "livre":
+ self.lado3 = "engastado"
+ pixmap = QPixmap("images/engh.png")
+ self.pushButton_3.setIcon(QIcon(pixmap))
+ else:
+ self.lado3 = "livre"
+ pixmap = QPixmap("images/livh.png")
+ self.pushButton_3.setIcon(QIcon(pixmap))
+
+ def estado_l4(self):
+ if self.lado4 == "livre":
+ self.lado4 = "engastado"
+ pixmap = QPixmap("images/engv.png")
+ self.pushButton_4.setIcon(QIcon(pixmap))
+ else:
+ self.lado4 = "livre"
+ pixmap = QPixmap("images/livv.png")
+ self.pushButton_4.setIcon(QIcon(pixmap))
+
+ def situacao_laje(self):
+ l1 = self.lado1
+ l2 = self.lado2
+ l3 = self.lado3
+ l4 = self.lado4
+
+ cota_v1 = self.label_37
+ cota_v2 = self.label_40
+ cota_h1 = self.label_38
+ cota_h2 = self.label_41
+
+ if l1 == "livre" and l2 == "livre" and l3 == "livre" and l4 == "livre":
+ global caso
+ caso = "1"
+
+ cota_v1.show()
+ cota_v2.show()
+ cota_h1.hide()
+ cota_h2.hide()
+
+ global lx_lage
+ lx_lage = "l_menor"
+ elif (
+ l1 == "engastado" and l2 == "livre" and l3 == "livre" and l4 == "livre"
+ ) or (l1 == "livre" and l2 == "livre" and l3 == "livre" and l4 == "engastado"):
+ caso = "2"
+
+ cota_v1.hide()
+ cota_v2.hide()
+ cota_h1.show()
+ cota_h2.show()
+
+ lx_lage = "l_maior"
+ elif (
+ l1 == "livre" and l2 == "engastado" and l3 == "livre" and l4 == "livre"
+ ) or (l1 == "livre" and l2 == "livre" and l3 == "engastado" and l4 == "livre"):
+ caso = "2"
+
+ cota_v1.show()
+ cota_v2.show()
+ cota_h1.hide()
+ cota_h2.hide()
+
+ lx_lage = "l_menor"
+ elif (
+ (
+ l1 == "engastado"
+ and l2 == "engastado"
+ and l3 == "livre"
+ and l4 == "livre"
+ )
+ or (
+ l1 == "engastado"
+ and l2 == "livre"
+ and l3 == "engastado"
+ and l4 == "livre"
+ )
+ or (
+ l1 == "livre"
+ and l2 == "engastado"
+ and l3 == "livre"
+ and l4 == "engastado"
+ )
+ or (
+ l1 == "livre"
+ and l2 == "livre"
+ and l3 == "engastado"
+ and l4 == "engastado"
+ )
+ ):
+ caso = "3"
+
+ cota_v1.show()
+ cota_v2.show()
+ cota_h1.hide()
+ cota_h2.hide()
+
+ lx_lage = "l_menor"
+ elif (
+ l1 == "engastado" and l2 == "livre" and l3 == "livre" and l4 == "engastado"
+ ):
+ caso = "4"
+
+ cota_v1.hide()
+ cota_v2.hide()
+ cota_h1.show()
+ cota_h2.show()
+
+ lx_lage = "l_maior"
+ elif (
+ l1 == "livre" and l2 == "engastado" and l3 == "engastado" and l4 == "livre"
+ ):
+ caso = "4"
+
+ cota_v1.show()
+ cota_v2.show()
+ cota_h1.hide()
+ cota_h2.hide()
+
+ lx_lage = "l_menor"
+ elif (
+ l1 == "engastado"
+ and l2 == "livre"
+ and l3 == "engastado"
+ and l4 == "engastado"
+ ) or (
+ l1 == "engastado"
+ and l2 == "engastado"
+ and l3 == "livre"
+ and l4 == "engastado"
+ ):
+ caso = "5"
+
+ cota_v1.hide()
+ cota_v2.hide()
+ cota_h1.show()
+ cota_h2.show()
+
+ lx_lage = "l_maior"
+ elif (
+ l1 == "livre"
+ and l2 == "engastado"
+ and l3 == "engastado"
+ and l4 == "engastado"
+ ) or (
+ l1 == "engastado"
+ and l2 == "engastado"
+ and l3 == "engastado"
+ and l4 == "livre"
+ ):
+ caso = "5"
+
+ cota_v1.show()
+ cota_v2.show()
+ cota_h1.hide()
+ cota_h2.hide()
+
+ lx_lage = "l_menor"
+ elif (
+ l1 == "engastado"
+ and l2 == "engastado"
+ and l3 == "engastado"
+ and l4 == "engastado"
+ ):
+ caso = "6"
+
+ cota_v1.show()
+ cota_v2.show()
+ cota_h1.hide()
+ cota_h2.hide()
+
+ lx_lage = "l_menor"
+ else:
+ caso = "ainda não existe, não sei como você chegou até aqui srsrrsrsrsrsrs"
+
+ print(caso)
+ self.lineEdit_6.setText(str(caso))
+
+ def calcular_laje(self):
+ lado_maior = float(self.lineEdit_3.text())
+ lado_menor = float(self.lineEdit_4.text())
+ espes = float(self.lineEdit_5.text())
+ d = float(self.lineEdit_27.text())
+
+ self.lineEdit_7.setText("")
+ self.lineEdit_9.setText("")
+ self.lineEdit_8.setText("")
+ self.lineEdit_10.setText("")
+ self.lineEdit_16.setText("")
+ self.lineEdit_14.setText("")
+ self.lineEdit_15.setText("")
+ self.lineEdit_16.setText("")
+
+ if lado_maior != 0 and lado_menor != 0 and espes != 0 and d != 0:
+ lado1 = float(self.lineEdit_3.text())
+ lado2 = float(self.lineEdit_4.text())
+ espes = float(self.lineEdit_5.text())
+ d = float(self.lineEdit_27.text())
+ carreg_adicional = float(self.lineEdit_2.text())
+ # fck_laje = float(self.comboBox.currentText())
+ # fcd_laje = fck_laje/1.4
+ # fyk_laje = float(self.comboBox_2.currentText())
+ # fyd_laje = fyk_laje/1.15
+
+ pp = (espes * 25) / 100
+ self.lineEdit.setText(str(pp))
+
+ carreg_total = pp + carreg_adicional
+ # print(caso)
+ # print(lx_lage)
+ # ---------------------------------- cálculo do Lx baseado no caso do tipo de situação da laje -----------------
+ global lx
+ global lambda_laje
+ if lx_lage == "l_menor":
+ lx = lado2
+ lambda_laje = round((lado1 / lado2), ndigits=2)
+ elif lx_lage == "l_maior":
+ lx = lado1
+ lambda_laje = round((lado2 / lado1), ndigits=2)
+ print(lx_lage)
+
+ # ---------------------------------- definição se a laje é unidirecional ou bidirecional baseado no lambda -----------------
+ global tipo_laje
+ if float(lambda_laje) > 2.001:
+ tipo_laje = "UNIDIRECIONAL"
+ self.laje_unidirecional(carreg_total)
+ else:
+ tipo_laje = "BIDIRECIONAL"
+ # self.label_43.setStyleSheet("Background: url('laje_unidirecional_modelo.png') no-repeat")
+
+ mx = my = nx = ny = ""
+
+ if caso == "1":
+ caso1 = marcus.caso1
+ linhas = len(caso1)
+ colunas = len(caso1[0])
+
+ for i in range(linhas):
+ aux = caso1[i][0]
+ if lambda_laje == aux:
+ print(caso1[i])
+ mx = caso1[i][2]
+ my = caso1[i][3]
+
+ print("mx: ", mx)
+ print("my: ", my)
+
+ if caso == "2":
+ caso2 = marcus.caso2
+ linhas = len(caso2)
+ colunas = len(caso2[0])
+
+ for i in range(linhas):
+ aux = caso2[i][0]
+ if lambda_laje == aux:
+ print(caso2[i])
+ mx = caso2[i][2]
+ nx = caso2[i][3]
+ my = caso2[i][4]
+
+ print("mx: ", mx)
+ print("nx: ", nx)
+ print("my: ", my)
+
+ if caso == "3":
+ caso3 = marcus.caso3
+ linhas = len(caso3)
+ colunas = len(caso3[0])
+
+ for i in range(linhas):
+ aux = caso3[i][0]
+ if lambda_laje == aux:
+ print(caso3[i])
+ mx = caso3[i][2]
+ nx = caso3[i][3]
+ my = caso3[i][4]
+ ny = caso3[i][5]
+
+ print("mx: ", mx)
+ print("nx: ", nx)
+ print("my: ", my)
+ print("ny: ", ny)
+
+ if caso == "4":
+ caso4 = marcus.caso4
+ linhas = len(caso4)
+ colunas = len(caso4[0])
+
+ for i in range(linhas):
+ aux = caso4[i][0]
+ if lambda_laje == aux:
+ print(caso4[i])
+ mx = caso4[i][2]
+ nx = caso4[i][3]
+ my = caso4[i][4]
+
+ print("mx: ", mx)
+ print("nx: ", nx)
+ print("my: ", my)
+
+ if caso == "5":
+ caso5 = marcus.caso5
+ linhas = len(caso5)
+ colunas = len(caso5[0])
+
+ for i in range(linhas):
+ aux = caso5[i][0]
+ if lambda_laje == aux:
+ print(caso5[i])
+ mx = caso5[i][2]
+ nx = caso5[i][3]
+ my = caso5[i][4]
+ ny = caso5[i][5]
+
+ print("mx: ", mx)
+ print("nx: ", nx)
+ print("my: ", my)
+ print("ny: ", ny)
+
+ if caso == "6":
+ caso6 = marcus.caso6
+ linhas = len(caso6)
+ colunas = len(caso6[0])
+
+ for i in range(linhas):
+ aux = caso6[i][0]
+ if lambda_laje == aux:
+ print(caso6[i])
+ mx = caso6[i][2]
+ nx = caso6[i][3]
+ my = caso6[i][4]
+ ny = caso6[i][5]
+
+ print("mx: ", mx)
+ print("nx: ", nx)
+ print("my: ", my)
+ print("ny: ", ny)
+
+ print(lx)
+ if mx != "":
+ self.lineEdit_7.setText(str(mx))
+ momento_pos_x = (carreg_total * (lx**2)) / mx
+ momento_pos_x = round(momento_pos_x, ndigits=4)
+
+ self.lineEdit_13.setText(str(momento_pos_x))
+ # else:
+ # self.lineEdit_13.setText('0')
+ if nx != "":
+ self.lineEdit_9.setText(str(nx))
+ momento_neg_x = round(((carreg_total * (lx**2)) / nx), ndigits=4)
+ self.lineEdit_14.setText(str(momento_neg_x))
+ # momento_neg_x = round(momento_neg_x,ndigits=2)
+ # else:
+ # self.lineEdit_14.setText('0')
+ if my != "":
+ self.lineEdit_8.setText(str(my))
+ momento_pos_y = (carreg_total * (lx**2)) / my
+ momento_pos_y = round(momento_pos_y, ndigits=4)
+ self.lineEdit_15.setText(str(momento_pos_y))
+ # else:
+ # self.lineEdit_15.setText('0')
+ if ny != "":
+ self.lineEdit_10.setText(str(ny))
+ momento_neg_y = round(((carreg_total * (lx**2)) / ny), ndigits=4)
+ self.lineEdit_16.setText(str(momento_neg_y))
+ # momento_neg_y = round(momento_neg_y,ndigits=2)
+
+ # ----------------------------------- enviar resultados de saida ao programa ---------------------------------------
+ self.lineEdit_11.setText(str(lambda_laje))
+ self.label_16.setText(str(tipo_laje))
+ self.lineEdit_12.setText(str(carreg_total))
+
+ self.resultados_laje()
+ else:
+ QMessageBox.about(
+ self, "Falta de Dados", "Por favor insira dados consistentes"
+ )
+
+ def laje_unidirecional(self, carreg_total):
+
+ self.lado1 = "livre"
+ pixmap = QPixmap("images/livv.png")
+ self.pushButton.setIcon(QIcon(pixmap))
+
+ self.lado4 = "livre"
+ pixmap = QPixmap("images/livv.png")
+ self.pushButton_4.setIcon(QIcon(pixmap))
+
+ print("unidirecional")
+ # l1 = self.lado1
+ l2 = self.lado2
+ l3 = self.lado3
+ # l4 = self.lado4
+ l1 = l4 = "livre"
+ print(carreg_total)
+ if l2 == "livre" and l3 == "livre":
+ self.label_43.setStyleSheet(
+ "Background: url('images/laje_unidirecional_ll2.png') no-repeat"
+ )
+ momento_pos_y = (carreg_total * (lx**2)) / 8
+ momento_neg_y = 0
+ elif l2 == "engastado" and l3 == "engastado":
+ self.label_43.setStyleSheet(
+ "Background: url('images/laje_unidirecional_ee2.png') no-repeat"
+ )
+ momento_pos_y = (carreg_total * (lx**2)) / 24
+ momento_neg_y = (carreg_total * (lx**2)) / 12
+ elif (l2 == "engastado" and l3 == "livre") or (
+ l2 == "livre" and l3 == "engastado"
+ ):
+ self.label_43.setStyleSheet(
+ "Background: url('images/laje_unidirecional_le2.png') no-repeat"
+ )
+ momento_pos_y = (carreg_total * (lx**2)) / 14.2
+ momento_neg_y = (carreg_total * (lx**2)) / 8
+
+ print("momento_pos_y: ", momento_pos_y)
+ print("momento_neg_y: ", momento_neg_y)
+
+ # ----------------------------------- enviar resultados de saida ao programa ---------------------------------------
+ momento_pos_y = round(momento_pos_y, ndigits=4)
+ self.lineEdit_15.setText(str(momento_pos_y))
+ momento_neg_y = round(momento_neg_y, ndigits=4)
+ self.lineEdit_16.setText(str(momento_neg_y))
+
+ self.lineEdit_13.setText("0")
+ self.lineEdit_14.setText("0")
+
+ self.lineEdit_11.setText(str(lambda_laje))
+ self.label_16.setText(str(tipo_laje))
+ self.lineEdit_12.setText(str(carreg_total))
+
+ self.resultados_laje()
+
+ def truncar(self, x):
+ aux = "{:.9f}".format(x)
+ return aux
+
+ def resultados_laje(self):
+ fck_laje = float(self.comboBox.currentText())
+ fcd_laje = fck_laje / 1.4
+ fyk_laje = float(self.comboBox_2.currentText())
+ fyd_laje = fyk_laje / 1.15
+ espes = float(self.lineEdit_5.text())
+
+ area_concreto_laje = round(((espes / 100) * 1000000), ndigits=4)
+
+ ro_armad_minima = 0
+ if fck_laje == 20:
+ ro_armad_minima = 0.15 / 100
+ elif fck_laje == 25:
+ ro_armad_minima = 0.15 / 100
+ elif fck_laje == 30:
+ ro_armad_minima = 0.15 / 100
+ elif fck_laje == 35:
+ ro_armad_minima = 0.164 / 100
+ elif fck_laje == 40:
+ ro_armad_minima = 0.179 / 100
+
+ armad_max_laje = (0.4 / 100) * area_concreto_laje
+ armad_neg_min = ro_armad_minima * area_concreto_laje
+ armad_pos_cruz = round(0.67 * (ro_armad_minima * area_concreto_laje), ndigits=2)
+ armad_princ_unid = ro_armad_minima * area_concreto_laje
+ armad_secnd_unid = max(
+ (0.2 * armad_princ_unid),
+ (90),
+ (0.5 * (ro_armad_minima * area_concreto_laje)),
+ )
+
+ mx = self.lineEdit_13.text()
+ if mx == "":
+ self.lineEdit_13.setText("0")
+
+ my = self.lineEdit_15.text()
+ if my == "":
+ self.lineEdit_15.setText("0")
+
+ nx = self.lineEdit_14.text()
+ if nx == "":
+ self.lineEdit_14.setText("0")
+
+ ny = self.lineEdit_16.text()
+ if ny == "":
+ self.lineEdit_16.setText("0")
+
+ fck_laje = float(self.comboBox.currentText())
+ fyk_laje = float(self.comboBox_2.currentText())
+ fcd_laje = fck_laje * 1000000 / 1.4
+ fyd_laje = fyk_laje * 1000000 / 1.15
+ d_laje = float(self.lineEdit_27.text())
+ espes = float(self.lineEdit_5.text())
+
+ # ------------------------------------------enxerto-----------------------
+
+ mx = float(self.lineEdit_13.text())
+ my = float(self.lineEdit_15.text())
+ nx = float(self.lineEdit_14.text())
+ ny = float(self.lineEdit_16.text())
+ # print('mx: ',mx)
+ # print('nx: ',nx)
+ # print('my: ',my)
+ # print('ny: ',ny)
+ mk_x = mx
+ mk_y = my
+
+ nk_x = nx
+ nk_y = ny
+
+ md_x = round(1.4 * mk_x, ndigits=4)
+ kmd_x_laje = (md_x * 1000) / (1 * ((d_laje / 100) ** 2) * 0.85 * (fcd_laje))
+ kx_x_laje = (1 - math.sqrt(1 - 2 * kmd_x_laje)) / 0.8
+ kz_x_laje = 1 - 0.4 * kx_x_laje
+
+ as_x_laje = (md_x * 1000 / (kz_x_laje * (d_laje / 100) * fyd_laje)) * 1000000
+
+ print("md_x: ", md_x)
+ print("kmd_x_laje: ", kmd_x_laje)
+ print("kx_x_laje: ", kx_x_laje)
+ print("kz_x_laje: ", kz_x_laje)
+ print("as_x_laje: ", as_x_laje)
+
+ md_y = round(1.4 * mk_y, ndigits=4)
+ kmd_y_laje = (md_y * 1000) / (1 * ((d_laje / 100) ** 2) * 0.85 * (fcd_laje))
+ kx_y_laje = (1 - math.sqrt(1 - 2 * kmd_y_laje)) / 0.8
+ kz_y_laje = 1 - 0.4 * kx_y_laje
+
+ as_y_laje = (md_y * 1000 / (kz_y_laje * (d_laje / 100) * fyd_laje)) * 1000000
+
+ print("md_y: ", md_y)
+ print("kmd_y_laje: ", kmd_y_laje)
+ print("kx_y_laje: ", kx_y_laje)
+ print("kz_y_laje: ", kz_y_laje)
+ print("as_y_laje: ", as_y_laje)
+
+ nd_x = round(1.4 * nk_x, ndigits=4)
+ kmd_x_laje_n = (nd_x * 1000) / (1 * ((d_laje / 100) ** 2) * 0.85 * (fcd_laje))
+ kx_x_laje_n = (1 - math.sqrt(1 - 2 * kmd_x_laje_n)) / 0.8
+ kz_x_laje_n = 1 - 0.4 * kx_x_laje_n
+
+ as_x_laje_n = (
+ nd_x * 1000 / (kz_x_laje_n * (d_laje / 100) * fyd_laje)
+ ) * 1000000
+
+ nd_y = round(1.4 * nk_y, ndigits=4)
+ kmd_y_laje_n = (nd_y * 1000) / (1 * ((d_laje / 100) ** 2) * 0.85 * (fcd_laje))
+ kx_y_laje_n = (1 - math.sqrt(1 - 2 * kmd_y_laje_n)) / 0.8
+ kz_y_laje_n = 1 - 0.4 * kx_y_laje_n
+
+ as_y_laje_n = (
+ nd_x * 1000 / (kz_y_laje_n * (d_laje / 100) * fyd_laje)
+ ) * 1000000
+
+ # ------------------------------------------ saida de dados ------------------------------------
+ kmd_x_laje = self.truncar(kmd_x_laje)
+ kx_x_laje = self.truncar(kx_x_laje)
+ kz_x_laje = self.truncar(kz_x_laje)
+ as_x_laje = self.truncar(as_x_laje)
+
+ kmd_y_laje = self.truncar(kmd_y_laje)
+ kx_y_laje = self.truncar(kx_y_laje)
+ kz_y_laje = self.truncar(kz_y_laje)
+ as_y_laje = self.truncar(as_y_laje)
+
+ self.lineEdit_17.setText(str(md_x))
+ self.lineEdit_18.setText(str(kmd_x_laje))
+ self.lineEdit_19.setText(str(kx_x_laje))
+ self.lineEdit_20.setText(str(kz_x_laje))
+ self.lineEdit_21.setText(str(as_x_laje))
+
+ self.lineEdit_22.setText(str(md_y))
+ self.lineEdit_24.setText(str(kmd_y_laje))
+ self.lineEdit_25.setText(str(kx_y_laje))
+ self.lineEdit_26.setText(str(kz_y_laje))
+ self.lineEdit_23.setText(str(as_y_laje))
+
+ self.lineEdit_38.setText(str(area_concreto_laje))
+ self.lineEdit_39.setText(str(ro_armad_minima * 100))
+ self.lineEdit_42.setText(str(armad_max_laje))
+ self.lineEdit_40.setText(str(armad_neg_min))
+ self.lineEdit_41.setText(str(armad_pos_cruz))
+ self.lineEdit_43.setText(str(armad_princ_unid))
+ self.lineEdit_44.setText(str(armad_secnd_unid))
+
+ if tipo_laje == "UNIDIRECIONAL":
+ self.label_44.setText("Distribuição")
+ if float(as_y_laje) < armad_princ_unid:
+ self.label_45.setText("Mínima")
+ else:
+ self.label_45.setText("")
+
+ if tipo_laje == "BIDIRECIONAL":
+ if float(as_x_laje) < armad_pos_cruz:
+ self.label_44.setText("Mínima")
+ else:
+ self.label_44.setText("")
+
+ if float(as_y_laje) < armad_pos_cruz:
+ self.label_45.setText("Mínima")
+ else:
+ self.label_45.setText("")
+
+ def limpar_lajes(self):
+ self.comboBox.setCurrentIndex(0)
+ self.comboBox_2.setCurrentIndex(0)
+
+ self.lineEdit.setText("0")
+ self.lineEdit_2.setText("0")
+ self.lineEdit_3.setText("0")
+ self.lineEdit_4.setText("0")
+ self.lineEdit_5.setText("0")
+ self.lineEdit_27.setText("0")
+
+ self.lineEdit_7.setText("")
+ self.lineEdit_8.setText("")
+ self.lineEdit_9.setText("")
+ self.lineEdit_10.setText("")
+
+ self.lineEdit_11.setText("")
+ self.lineEdit_12.setText("")
+ self.lineEdit_38.setText("")
+ self.lineEdit_39.setText("")
+ self.lineEdit_42.setText("")
+ self.lineEdit_40.setText("")
+ self.lineEdit_41.setText("")
+ self.lineEdit_43.setText("")
+ self.lineEdit_44.setText("")
+
+ self.lineEdit_13.setText("")
+ self.lineEdit_14.setText("")
+ self.lineEdit_15.setText("")
+ self.lineEdit_16.setText("")
+
+ self.lineEdit_16.setText("")
+ self.lineEdit_17.setText("")
+ self.lineEdit_18.setText("")
+ self.lineEdit_19.setText("")
+ self.lineEdit_20.setText("")
+ self.lineEdit_21.setText("")
+ self.lineEdit_22.setText("")
+ self.lineEdit_23.setText("")
+ self.lineEdit_24.setText("")
+ self.lineEdit_25.setText("")
+ self.lineEdit_26.setText("")
+
+
+class Carga_Adicional(QtWidgets.QMainWindow):
+ def __init__(self):
+ super().__init__()
+
+ self.ui = loadUi("lajes_carg_adicional_atualizada.ui", self)
+
+ header = self.tableWidget.horizontalHeader()
+ # FIXME Verificar a propriedade atualizada caso necessário
+ # header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
+ # header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
+ # header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
+ self.tableWidget.resizeRowsToContents()
+
+ # scriptDir = os.path.dirname(os.path.realpath(__file__))
+ # self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
+ self.setWindowIcon(QtGui.QIcon("images/logo.ico"))
+
+ self.setWindowTitle("Navier - Cargas Adicionais")
+ self.setFixedSize(649, 504)
+
+
+class Sapatas(QtWidgets.QMainWindow):
+ def __init__(self):
+ super().__init__()
+ self.ui = loadUi("sapatas_alt.ui", self)
+ self.load_signals()
+
+ # scriptDir = os.path.dirname(os.path.realpath(__file__))
+ # self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
+ self.setWindowIcon(QtGui.QIcon("images/logo.ico"))
+
+ self.setWindowTitle("Navier - Sapatas")
+ self.setFixedSize(946, 574)
+
+ def load_signals(self):
+ print("sapatas carregado")
+ self.pushButton_6.clicked.connect(self.calcular_sapata)
+ self.pushButton_7.clicked.connect(self.limpar_sapatas)
+ self.pushButton.clicked.connect(self.gerar_dim_sapata)
+
+ def arredondar_cinco(self, numero):
+ numero = round(numero, ndigits=2)
+ numero = 100 * numero
+ resto = numero % 5
+ while resto != 0:
+ numero += 1
+ resto = numero % 5
+ print("numero:", numero, " - resto: ", resto)
+
+ numero = numero / 100
+ return numero
+
+ def calcular_sapata(self):
+
+ nk = float(self.lineEdit_3.text())
+ momento_x_sapata = float(self.lineEdit_4.text())
+ momento_y_sapata = float(self.lineEdit_5.text())
+ x_pilar = float(self.lineEdit.text())
+ y_pilar = float(self.lineEdit_2.text())
+ tensao_adm_solo = float(self.lineEdit_35.text())
+ fator_solo = float(self.lineEdit_13.text())
+
+ base_y_sapata = float(self.lineEdit_10.text())
+ base_x_sapata = float(self.lineEdit_9.text())
+ h_total = float(self.lineEdit_11.text())
+ h_0 = float(self.lineEdit_12.text())
+
+ y_sapata = float(self.lineEdit_9.text())
+ x_sapata = float(self.lineEdit_10.text())
+ h_total = float(self.lineEdit_11.text())
+ h_0 = float(self.lineEdit_12.text())
+
+ if (
+ nk != 0
+ and x_pilar != 0
+ and y_pilar != 0
+ and tensao_adm_solo != 0
+ and fator_solo != 0
+ and base_y_sapata != 0
+ and base_x_sapata != 0
+ and h_total != 0
+ and h_0 != 0
+ ):
+ if x_sapata < 0.6 or y_sapata < 0.6:
+ QMessageBox.about(
+ self,
+ "Erro de Entrada",
+ "As sapatas não podem apresentar lados menores de 60 cm, conforme a NBR 6122",
+ )
+ else:
+ fck_sapata = float(self.comboBox.currentText())
+ fcd_sapata = fck_sapata / 1.4
+ fyk_sapata = float(self.comboBox_2.currentText())
+ fyd_sapata = fyk_sapata / 1.15
+ nk = float(self.lineEdit_3.text())
+ momento_x_sapata = float(self.lineEdit_4.text())
+ momento_y_sapata = float(self.lineEdit_5.text())
+ tensao_adm_solo = float(self.lineEdit_35.text())
+ fator_solo = float(self.lineEdit_13.text())
+ angulo_dissp_sapata = float(self.spinBox.value())
+
+ angulo_dissp_sapata = (angulo_dissp_sapata / 180) * 3.14
+
+ x_pilar = float(self.lineEdit.text()) / 100
+ y_pilar = float(self.lineEdit_2.text()) / 100
+
+ y_sapata = float(self.lineEdit_9.text())
+ x_sapata = float(self.lineEdit_10.text())
+ h_total = float(self.lineEdit_11.text())
+ h_0 = float(self.lineEdit_12.text())
+
+ if (momento_x_sapata != 0 and momento_y_sapata == 0) or (
+ momento_x_sapata == 0 and momento_y_sapata != 0
+ ):
+ fator_acrescimo_dimensoes = 1.05
+ elif momento_x_sapata != 0 and momento_y_sapata != 0:
+ fator_acrescimo_dimensoes = 1.103
+ else:
+ fator_acrescimo_dimensoes = 1.0
+
+ x_sapata = round(x_sapata * fator_acrescimo_dimensoes, ndigits=4)
+ y_sapata = round(y_sapata * fator_acrescimo_dimensoes, ndigits=4)
+
+ wx = x_sapata * (y_sapata**2) / 6
+ wy = y_sapata * (x_sapata**2) / 6
+
+ mw_x = (momento_x_sapata / wx) * 1000
+ mw_y = (momento_y_sapata / wy) * 1000
+
+ tensao_sapata = (fator_solo * nk * 1000) / (x_sapata * y_sapata)
+ tensao_max_sapata = tensao_sapata + mw_x + mw_y
+ tensao_min_sapata = tensao_sapata - mw_x - mw_y
+
+ nk_equiv = (x_sapata * y_sapata * tensao_max_sapata) / fator_solo
+ area_sapata = round(
+ fator_solo * ((nk * 1000) / (tensao_adm_solo * 1000000)), ndigits=6
+ )
+
+ ca_sapata = (x_sapata - x_pilar) / 2
+ cb_sapata = (y_sapata - y_pilar) / 2
+ h_rig_x = 2 / 3 * ca_sapata
+ h_rig_y = 2 / 3 * cb_sapata
+
+ h_mincis = (1.4 * nk_equiv) / (
+ 2
+ * (x_pilar + y_pilar)
+ * 0.27
+ * (1 - (fck_sapata / 250))
+ * (fcd_sapata * 1000000)
+ )
+ if h_mincis < 0.40:
+ h_mincis = 0.40
+ if h_total < h_mincis:
+ h_total = h_mincis
+
+ braco_alavanca_sapata = h_total - 0.05
+
+ h0a = h_total - ca_sapata * math.tan(angulo_dissp_sapata)
+ h0b = h_total - cb_sapata * math.tan(angulo_dissp_sapata)
+
+ # h0 = round(h0a, ndigits=2)
+ # if h0a < h0b:
+ # h0 = round(h0b, ndigits=2)
+
+ volume_concreto_sapata = (h_total - h_0) / (
+ 3
+ * (
+ x_sapata * y_sapata
+ + x_pilar * y_pilar
+ + math.sqrt(x_sapata * y_sapata * x_pilar * y_pilar)
+ )
+ + x_sapata * y_sapata * h_0
+ )
+
+ tracao_x_sapata = (
+ 1.1 * nk_equiv * (x_sapata - x_pilar) / (8 * braco_alavanca_sapata)
+ )
+ tracao_y_sapata = (
+ 1.1 * nk_equiv * (y_sapata - y_pilar) / (8 * braco_alavanca_sapata)
+ )
+ as_x_sapata = (1.4 * tracao_x_sapata) / (fyd_sapata)
+ as_y_sapata = (1.4 * tracao_y_sapata) / fyd_sapata
+
+ taxa_aco_sapata = (0.078 * (fck_sapata) ** (2 / 3)) / fyd_sapata
+
+ if taxa_aco_sapata <= 0.0015:
+ taxa_aco_sapata = 0.0015
+
+ as_x_min_laje = 0.67 * taxa_aco_sapata * h_mincis * x_sapata
+ as_y_min_laje = 0.67 * taxa_aco_sapata * h_mincis * y_sapata
+
+ print("x_sapata: ", x_sapata)
+ print("y_sapata: ", y_sapata)
+
+ print("wx: ", wx)
+ print("wy: ", wy)
+ print("mw_x: ", mw_x)
+ print("mw_y: ", mw_y)
+ print("tensao_max_sapata: ", tensao_max_sapata)
+ print("tensao_min_sapata: ", tensao_min_sapata)
+ print("nk_equiv: ", nk_equiv)
+ print("ca_sapata: ", ca_sapata)
+ print("cb_sapata: ", cb_sapata)
+ print("h0a: ", h0a)
+ print("h0b: ", h0b)
+ print("h_mincis: ", h_mincis)
+ # print('h0: ',h0)
+ print("h_total", h_total)
+ print("-------------------------------------\n")
+
+ # -------------------------------------- saida dos dados --------------------------------------------------
+ self.lineEdit_11.setText(str(h_total))
+ # self.lineEdit_12.setText(str(h0))
+
+ self.lineEdit_15.setText(str(area_sapata))
+ self.lineEdit_16.setText(str(round(wx, ndigits=6)))
+ self.lineEdit_17.setText(str(round(wy, ndigits=6)))
+ self.lineEdit_18.setText(str(round(nk_equiv, ndigits=4)))
+ self.lineEdit_19.setText(
+ str(round(tensao_max_sapata / 1000000, ndigits=4))
+ )
+ self.lineEdit_20.setText(
+ str(round(tensao_min_sapata / 1000000, ndigits=4))
+ )
+ self.lineEdit_21.setText(str(round(ca_sapata * 100, ndigits=4)))
+ self.lineEdit_22.setText(str(round(cb_sapata * 100, ndigits=4)))
+
+ self.lineEdit_23.setText(str(round(h_rig_x * 100, ndigits=4)))
+ self.lineEdit_24.setText(str(round(h_rig_y * 100, ndigits=4)))
+ self.lineEdit_25.setText(str(round(h_mincis * 100, ndigits=4)))
+ self.lineEdit_26.setText(str(round(h0a * 100, ndigits=4)))
+ self.lineEdit_28.setText(str(round(h0b * 100, ndigits=4)))
+ self.lineEdit_27.setText(str(round(volume_concreto_sapata, ndigits=4)))
+
+ self.lineEdit_14.setText(str(round(tracao_x_sapata / 1000, ndigits=4)))
+ self.lineEdit_29.setText(str(round(tracao_y_sapata / 1000, ndigits=4)))
+ self.lineEdit_30.setText(str(round(as_x_sapata, ndigits=4)))
+ self.lineEdit_31.setText(str(round(as_y_sapata, ndigits=4)))
+
+ self.lineEdit_32.setText(str(round(taxa_aco_sapata, ndigits=7)))
+ self.lineEdit_33.setText(str(round(as_x_min_laje * 1000000, ndigits=4)))
+ self.lineEdit_34.setText(str(round(as_y_min_laje * 1000000, ndigits=4)))
+
+ else:
+ QMessageBox.about(
+ self, "Falta de Dados", "Por favor insira dados consistentes"
+ )
+
+ def gerar_dim_sapata(self):
+
+ nk = float(self.lineEdit_3.text())
+ momento_x_sapata = float(self.lineEdit_4.text())
+ momento_y_sapata = float(self.lineEdit_5.text())
+ x_pilar = float(self.lineEdit.text())
+ y_pilar = float(self.lineEdit_2.text())
+ tensao_adm_solo = float(self.lineEdit_35.text())
+ fator_solo = float(self.lineEdit_13.text())
+
+ if (
+ nk != 0
+ and x_pilar != 0
+ and y_pilar != 0
+ and tensao_adm_solo != 0
+ and fator_solo != 0
+ ):
+
+ fck_sapata = float(self.comboBox.currentText())
+ fcd_sapata = fck_sapata / 1.4
+ fyk_sapata = float(self.comboBox_2.currentText())
+ fyd_sapata = fyk_sapata / 1.15
+ nk = float(self.lineEdit_3.text())
+ momento_x_sapata = float(self.lineEdit_4.text())
+ momento_y_sapata = float(self.lineEdit_5.text())
+ tensao_adm_solo = float(self.lineEdit_35.text())
+ fator_solo = float(self.lineEdit_13.text())
+ angulo_dissp_sapata = float(self.spinBox.value())
+
+ angulo_dissp_sapata = (angulo_dissp_sapata / 180) * 3.14
+
+ x_pilar = float(self.lineEdit.text()) / 100
+ y_pilar = float(self.lineEdit_2.text()) / 100
+
+ area_sapata = round(
+ fator_solo * ((nk * 1000) / (tensao_adm_solo * 1000000)), ndigits=6
+ )
+
+ y_sapata = 0.5 * (y_pilar - x_pilar) + math.sqrt(
+ 0.25 * ((y_pilar - x_pilar) ** 2) + area_sapata
+ )
+
+ x_sapata = area_sapata / y_sapata
+
+ if (momento_x_sapata != 0 and momento_y_sapata == 0) or (
+ momento_x_sapata == 0 and momento_y_sapata != 0
+ ):
+ fator_acrescimo_dimensoes = 1.05
+ elif momento_x_sapata != 0 and momento_y_sapata != 0:
+ fator_acrescimo_dimensoes = 1.103
+ else:
+ fator_acrescimo_dimensoes = 1.0
+
+ x_sapata = round(x_sapata * fator_acrescimo_dimensoes, ndigits=4)
+ y_sapata = round(y_sapata * fator_acrescimo_dimensoes, ndigits=4)
+
+ if x_sapata < 0.6:
+ x_sapata = 0.6
+ if y_sapata < 0.6:
+ y_sapata = 0.6
+ print(x_sapata, "<--------------------------------------------------")
+ wx = x_sapata * (y_sapata**2) / 6
+ wy = y_sapata * (x_sapata**2) / 6
+
+ mw_x = (momento_x_sapata / wx) * 1000
+ mw_y = (momento_y_sapata / wy) * 1000
+
+ tensao_sapata = (fator_solo * nk * 1000) / (x_sapata * y_sapata)
+ tensao_max_sapata = tensao_sapata + mw_x + mw_y
+ tensao_min_sapata = tensao_sapata - mw_x - mw_y
+
+ x_sapata = self.arredondar_cinco(x_sapata)
+ y_sapata = self.arredondar_cinco(y_sapata)
+ if x_sapata < 0.6:
+ x_sapata = 0.6
+ if y_sapata < 0.6:
+ y_sapata = 0.6
+
+ nk_equiv = (x_sapata * y_sapata * tensao_max_sapata) / fator_solo
+
+ ca_sapata = (x_sapata - x_pilar) / 2
+ cb_sapata = (y_sapata - y_pilar) / 2
+ h_rig_x = 2 / 3 * ca_sapata
+ h_rig_y = 2 / 3 * cb_sapata
+
+ h_total = h_rig_x
+ if h_total < h_rig_y:
+ h_total = h_rig_y
+
+ h_mincis = (1.4 * nk_equiv) / (
+ 2
+ * (x_pilar + y_pilar)
+ * 0.27
+ * (1 - (fck_sapata / 250))
+ * (fcd_sapata * 1000000)
+ )
+ if h_mincis < 0.40:
+ h_mincis = 0.40
+ h_mincis = round(h_mincis, ndigits=4)
+
+ if h_total < h_mincis:
+ h_total = h_mincis
+
+ h_total = self.arredondar_cinco(h_total)
+
+ h0a = h_total - ca_sapata * math.tan(angulo_dissp_sapata)
+ h0b = h_total - cb_sapata * math.tan(angulo_dissp_sapata)
+ h0_prerrogativo = h_total / 3
+ tangente_angulo = math.tan(angulo_dissp_sapata)
+ h0 = round(h0a, ndigits=2)
+ if h0a < h0b:
+ h0 = round(h0b, ndigits=2)
+ elif h0b < h0_prerrogativo:
+ h0 = h0_prerrogativo
+ if h0 < 0.25:
+ h0 = 0.25
+ h0 = self.arredondar_cinco(h0)
+
+ volume_concreto_sapata = (
+ (h_total - h0)
+ / 3
+ * (
+ x_sapata * y_sapata
+ + x_pilar * y_pilar
+ + math.sqrt(x_sapata * y_sapata * x_pilar * y_pilar)
+ )
+ ) + (x_sapata * y_sapata * h0)
+
+ braco_alavanca_sapata = h_total - 0.05
+
+ tracao_x_sapata = (
+ 1.1 * nk_equiv * (x_sapata - x_pilar) / (8 * braco_alavanca_sapata)
+ )
+ tracao_y_sapata = (
+ 1.1 * nk_equiv * (y_sapata - y_pilar) / (8 * braco_alavanca_sapata)
+ )
+ as_x_sapata = (1.4 * tracao_x_sapata) / (fyd_sapata)
+ as_y_sapata = (1.4 * tracao_y_sapata) / fyd_sapata
+
+ taxa_aco_sapata = (0.078 * (fck_sapata) ** (2 / 3)) / fyd_sapata
+
+ if taxa_aco_sapata <= 0.0015:
+ taxa_aco_sapata = 0.0015
+
+ as_x_min_laje = 0.67 * taxa_aco_sapata * h_total * x_sapata
+ as_y_min_laje = 0.67 * taxa_aco_sapata * h_total * y_sapata
+
+ print("x_sapata: ", x_sapata)
+ print("y_sapata: ", y_sapata)
+
+ print("wx: ", wx)
+ print("wy: ", wy)
+ print("mw_x: ", mw_x)
+ print("mw_y: ", mw_y)
+ print("tensao_max_sapata: ", tensao_max_sapata)
+ print("tensao_min_sapata: ", tensao_min_sapata)
+ print("nk_equiv: ", nk_equiv)
+ print("ca_sapata: ", ca_sapata)
+ print("cb_sapata: ", cb_sapata)
+ print("h0a: ", h0a)
+ print("h0b: ", h0b)
+ print("h_mincis: ", h_mincis)
+ print("h0: ", h0)
+ print("tangente_angulo: ", tangente_angulo)
+ print("----------")
+ print("h_total: ", h_total)
+ print("tracao_x_sapata: ", tracao_x_sapata)
+ print("tracao_y_sapata: ", tracao_y_sapata)
+ print("as_x_sapata: ", as_x_sapata)
+ print("as_y_sapata: ", as_y_sapata)
+ print("taxa_aco_sapata: ", taxa_aco_sapata)
+ print("as_x_min_laje: ", as_x_min_laje)
+ print("as_y_min_laje: ", as_y_min_laje)
+ print("-------------------------------------\n")
+ # ------------------------------ saida de dados ---------------------------------------------
+ self.lineEdit_9.setText(str(y_sapata))
+ self.lineEdit_10.setText(str(x_sapata))
+ self.lineEdit_15.setText(str(area_sapata))
+
+ self.lineEdit_11.setText(str(round(h_total, ndigits=4)))
+ self.lineEdit_12.setText(str(round(h0, ndigits=4)))
+
+ self.lineEdit_15.setText(str(area_sapata))
+ self.lineEdit_16.setText(str(round(wx, ndigits=6)))
+ self.lineEdit_17.setText(str(round(wy, ndigits=6)))
+ self.lineEdit_18.setText(str(round(nk_equiv, ndigits=4)))
+ self.lineEdit_19.setText(str(round(tensao_max_sapata / 1000000, ndigits=4)))
+ self.lineEdit_20.setText(str(round(tensao_min_sapata / 1000000, ndigits=4)))
+ self.lineEdit_21.setText(str(round(ca_sapata * 100, ndigits=4)))
+ self.lineEdit_22.setText(str(round(cb_sapata * 100, ndigits=4)))
+
+ self.lineEdit_23.setText(str(round(h_rig_x * 100, ndigits=4)))
+ self.lineEdit_24.setText(str(round(h_rig_y * 100, ndigits=4)))
+ self.lineEdit_25.setText(str(round(h_mincis * 100, ndigits=4)))
+ self.lineEdit_26.setText(str(round(h0a * 100, ndigits=4)))
+ self.lineEdit_28.setText(str(round(h0b * 100, ndigits=4)))
+ self.lineEdit_27.setText(str(round(volume_concreto_sapata, ndigits=4)))
+
+ self.lineEdit_14.setText(str(round(tracao_x_sapata / 1000, ndigits=4)))
+ self.lineEdit_29.setText(str(round(tracao_y_sapata / 1000, ndigits=4)))
+ self.lineEdit_30.setText(str(round(as_x_sapata, ndigits=4)))
+ self.lineEdit_31.setText(str(round(as_y_sapata, ndigits=4)))
+
+ self.lineEdit_32.setText(str(round(taxa_aco_sapata, ndigits=7)))
+ self.lineEdit_33.setText(str(round(as_x_min_laje * 1000000, ndigits=4)))
+ self.lineEdit_34.setText(str(round(as_y_min_laje * 1000000, ndigits=4)))
+
+ else:
+ QMessageBox.about(
+ self, "Falta de Dados", "Por favor insira dados consistentes"
+ )
+
+ def limpar_sapatas(self):
+ self.comboBox.setCurrentIndex(0)
+ self.comboBox_2.setCurrentIndex(0)
+
+ self.lineEdit.setText("0")
+ self.lineEdit_2.setText("0")
+ self.lineEdit_3.setText("0")
+ self.lineEdit_4.setText("0")
+ self.lineEdit_5.setText("0")
+
+ self.lineEdit_35.setText("0")
+ self.lineEdit_13.setText("1.1")
+ self.spinBox.setValue(30)
+
+ self.lineEdit_9.setText("0")
+ self.lineEdit_10.setText("0")
+ self.lineEdit_11.setText("0")
+ self.lineEdit_12.setText("0")
+
+ self.lineEdit_15.setText("")
+ self.lineEdit_16.setText("")
+ self.lineEdit_17.setText("")
+ self.lineEdit_18.setText("")
+ self.lineEdit_19.setText("")
+ self.lineEdit_20.setText("")
+ self.lineEdit_21.setText("")
+ self.lineEdit_22.setText("")
+ self.lineEdit_23.setText("")
+ self.lineEdit_24.setText("")
+ self.lineEdit_25.setText("")
+ self.lineEdit_26.setText("")
+ self.lineEdit_27.setText("")
+ self.lineEdit_28.setText("")
+
+ self.lineEdit_14.setText("")
+ self.lineEdit_29.setText("")
+ self.lineEdit_30.setText("")
+ self.lineEdit_31.setText("")
+ self.lineEdit_32.setText("")
+ self.lineEdit_33.setText("")
+ self.lineEdit_34.setText("")
+
+
+# ---------------------------------------------- Janelas Adicionais ----------------------------------------------------
+
+
+class Tabela_Classe_Agressividade(QtWidgets.QMainWindow):
+ def __init__(self):
+ super().__init__()
+ self.load_ui()
+ self.load_signals()
+
+ def load_ui(self):
+ self.ui = loadUi("class_agres.ui", self)
+
+ # scriptDir = os.path.dirname(os.path.realpath(__file__))
+ # self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
+ self.setWindowIcon(QtGui.QIcon("images/logo.ico"))
+
+ self.setWindowTitle("Navier - Classes de Agressividade e Cobrimentos Mínimos")
+ self.setFixedSize(579, 520)
+
+ def load_signals(self):
+ print("inicializado")
+ header = self.tableWidget.horizontalHeader()
+ # FIXME Verificar a propriedade atualizada caso necessário
+ # header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
+ # header.setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
+ # header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
+ # header.setSectionResizeMode(3, QtWidgets.QHeaderView.Stretch)
+
+ self.tableWidget.setSpan(0, 0, 1, 4)
+
+ header_2 = self.tableWidget_2.horizontalHeader()
+ # FIXME Verificar a propriedade atualizada caso necessário
+ # header_2.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
+ # header_2.setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
+ # header_2.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
+ # header_2.setSectionResizeMode(3, QtWidgets.QHeaderView.ResizeToContents)
+
+ self.tableWidget_2.setSpan(0, 0, 2, 1)
+ self.tableWidget_2.setSpan(0, 1, 2, 1)
+ self.tableWidget_2.setSpan(0, 3, 2, 1)
+
+ self.tableWidget_2.setSpan(3, 0, 2, 1)
+ self.tableWidget_2.setSpan(3, 1, 2, 1)
+ self.tableWidget_2.setSpan(3, 3, 2, 1)
+
+ self.tableWidget_2.setSpan(5, 0, 2, 1)
+ self.tableWidget_2.setSpan(5, 1, 2, 1)
+ self.tableWidget_2.setSpan(5, 3, 2, 1)
+
+
+if __name__ == "__main__":
+ app = QtWidgets.QApplication(sys.argv)
+ inicio = Inicio()
+ vigas = Vigas()
+ detalhar_vigas = Detalhar_viga()
+ pilares = Pilares()
+ pilares_areas_aco = Pilar_area_aco()
+ lajes = Lajes()
+ sapatas = Sapatas()
+ carga_adicional = Carga_Adicional()
+ tabela_classe_agressividade = Tabela_Classe_Agressividade()
+ tabela_bitolas = Tabela_Bitolas()
+
+ inicio.show()
+ sys.exit(app.exec())
+
+ # app.exec_()
diff --git a/marcus.py b/app/marcus.py
similarity index 100%
rename from marcus.py
rename to app/marcus.py
diff --git a/pilares_alt.ui b/app/pilares_alt.ui
similarity index 100%
rename from pilares_alt.ui
rename to app/pilares_alt.ui
diff --git a/pilares_areas_aco.ui b/app/pilares_areas_aco.ui
similarity index 100%
rename from pilares_areas_aco.ui
rename to app/pilares_areas_aco.ui
diff --git a/sapatas_alt.ui b/app/sapatas_alt.ui
similarity index 100%
rename from sapatas_alt.ui
rename to app/sapatas_alt.ui
diff --git a/tabela_marcus.pdf b/app/tabela_marcus.pdf
similarity index 100%
rename from tabela_marcus.pdf
rename to app/tabela_marcus.pdf
diff --git a/vigas_alt.ui b/app/vigas_alt.ui
similarity index 78%
rename from vigas_alt.ui
rename to app/vigas_alt.ui
index 3704cfe..1c0e423 100644
--- a/vigas_alt.ui
+++ b/app/vigas_alt.ui
@@ -6,8 +6,8 @@
0
0
- 868
- 627
+ 871
+ 634
@@ -26,11 +26,11 @@
0
-
+
Seção Retangular
-
+
-1
@@ -40,10 +40,10 @@
- 1
+ 0
-
-
+
+
20
@@ -55,7 +55,7 @@
Dimensões
-
+
130
@@ -68,7 +68,7 @@
0
-
+
130
@@ -81,7 +81,7 @@
0
-
+
131
@@ -94,20 +94,20 @@
0
-
+
20
30
- 81
+ 101
16
- Base - bw [cm]
+ Largura - bw [cm]
-
+
20
@@ -120,12 +120,12 @@
Altura - h [cm]
-
+
20
90
- 91
+ 101
16
@@ -133,7 +133,7 @@
Altura Útil - d [cm]
-
+
0
@@ -145,7 +145,7 @@
Projeção de Domínio
-
+
140
@@ -158,7 +158,7 @@
Domínio 3
-
+
30
@@ -174,20 +174,20 @@
true
-
+
- 100
+ 30
50
- 47
+ 81
21
- ξ
+ Linha Neutra ξ
-
+
130
@@ -200,10 +200,10 @@
0.450
-
+
- 60
+ 30
80
71
21
@@ -213,7 +213,7 @@
d limite [m]
-
+
130
@@ -223,7 +223,7 @@
-
+
131
@@ -233,10 +233,10 @@
-
+
- 60
+ 30
110
91
21
@@ -247,7 +247,7 @@
-
+
19
@@ -260,7 +260,7 @@
d' [cm]
-
+
130
@@ -277,19 +277,19 @@
-
+
290
0
- 251
+ 261
141
Seção
-
+
71
@@ -309,24 +309,24 @@
-
+
290
150
- 251
+ 261
321
Armadura Longitudinal
-
+
- 20
+ 10
50
- 91
+ 101
21
@@ -334,17 +334,17 @@
Momento2 [KN.m]
-
+
- 130
+ 150
50
100
20
-
+
0
@@ -356,22 +356,22 @@
Áreas de Aço
-
+
- 129
- 18
+ 150
+ 20
91
20
-
+
20
18
- 111
+ 121
21
@@ -379,12 +379,12 @@
As Compressão [mm²]
-
+
20
78
- 101
+ 111
21
@@ -392,27 +392,27 @@
Asobre-apoio [mm²]
-
+
- 129
- 78
+ 150
+ 80
91
20
-
+
- 129
+ 149
108
91
20
-
+
20
@@ -425,7 +425,7 @@
As.pele [mm²]
-
+
21
@@ -438,27 +438,27 @@
As.máx [mm²]
-
+
- 130
+ 150
170
91
20
-
+
- 129
- 48
+ 150
+ 50
91
20
-
+
20
@@ -471,7 +471,7 @@
As Tração [mm²]
-
+
21
@@ -484,17 +484,17 @@
As.mín [mm²]
-
+
- 130
+ 150
200
91
20
-
+
21
@@ -507,10 +507,10 @@
As.total [mm²]
-
+
- 130
+ 150
140
91
20
@@ -518,22 +518,22 @@
-
+
- 130
+ 150
20
100
20
-
+
- 20
+ 10
20
- 111
+ 131
21
@@ -543,8 +543,8 @@
-
-
+
+
20
@@ -556,7 +556,7 @@
Dimensões
-
+
130
@@ -569,7 +569,7 @@
0
-
+
130
@@ -582,7 +582,7 @@
0
-
+
131
@@ -595,7 +595,7 @@
0
-
+
20
@@ -608,7 +608,7 @@
Base - bw [cm]
-
+
20
@@ -621,7 +621,7 @@
Altura - h [cm]
-
+
20
@@ -634,7 +634,7 @@
Altura Útil - d [cm]
-
+
19
@@ -647,7 +647,7 @@
d' [cm]
-
+
130
@@ -664,7 +664,7 @@
-
+
20
@@ -676,7 +676,7 @@
Seção
-
+
70
@@ -696,7 +696,7 @@
-
+
290
@@ -708,10 +708,10 @@
Armadura Longitudinal
-
+
- 19
+ 10
20
91
21
@@ -721,20 +721,20 @@
Md [KN.m]
-
+
130
20
- 100
+ 111
20
-
+
- 60
+ 10
80
91
21
@@ -744,20 +744,20 @@
Kmd
-
+
- 110
+ 130
80
- 100
+ 111
20
-
+
- 60
+ 10
110
91
21
@@ -767,20 +767,20 @@
Kx
-
+
- 110
+ 130
110
- 100
+ 111
20
-
+
- 60
+ 10
140
91
21
@@ -790,17 +790,17 @@
Kz
-
+
- 110
+ 130
140
- 100
+ 111
20
-
+
0
@@ -812,17 +812,17 @@
Áreas de Aço
-
+
- 129
+ 150
30
91
20
-
+
20
@@ -835,12 +835,12 @@
As [mm²]
-
+
20
60
- 101
+ 121
21
@@ -848,27 +848,27 @@
Asobre-apoio [mm²]
-
+
- 129
+ 150
60
91
20
-
+
- 129
+ 150
90
91
20
-
+
20
@@ -881,7 +881,7 @@
As.pele [mm²]
-
+
21
@@ -894,27 +894,27 @@
As.máx [mm²]
-
+
- 130
+ 150
120
91
20
-
+
- 129
+ 150
150
91
20
-
+
20
@@ -928,7 +928,7 @@
-
+
130
@@ -938,10 +938,10 @@
-
+
- 20
+ 10
50
111
21
@@ -954,7 +954,7 @@
-
+
540
@@ -967,7 +967,7 @@
Simplesmente Armada
-
+
690
@@ -980,7 +980,7 @@
Duplamente Armada
-
+
20
@@ -992,7 +992,7 @@
Solicitações
-
+
150
@@ -1005,7 +1005,7 @@
0
-
+
150
@@ -1018,7 +1018,7 @@
0
-
+
20
@@ -1031,7 +1031,7 @@
Momento Fletor [KN.m]
-
+
20
@@ -1045,7 +1045,7 @@
-
+
20
@@ -1057,7 +1057,7 @@
Concreto
-
+
20
@@ -1070,7 +1070,7 @@
Resistência - fck [MPa]
-
+
150
@@ -1115,7 +1115,7 @@
-
+
150
@@ -1140,7 +1140,7 @@
-
+
20
@@ -1154,7 +1154,7 @@
-
+
570
@@ -1166,7 +1166,7 @@
Armadura Transversal
-
+
0
@@ -1178,7 +1178,7 @@
Modelo de Cálculo
-
+
20
@@ -1194,12 +1194,12 @@
true
-
+
20
40
- 211
+ 221
21
@@ -1207,7 +1207,7 @@
Modelo II - α = 90º e 30º < θ < 45º
-
+
170
@@ -1223,7 +1223,7 @@
45
-
+
140
@@ -1256,7 +1256,7 @@
true
-
+
30
@@ -1269,7 +1269,7 @@
Vsd [KN]
-
+
110
@@ -1279,7 +1279,7 @@
-
+
30
@@ -1292,7 +1292,7 @@
Vrd2 [KN]
-
+
110
@@ -1305,7 +1305,7 @@
-
+
110
@@ -1318,7 +1318,7 @@
-
+
30
@@ -1331,7 +1331,7 @@
Vc [KN]
-
+
30
@@ -1344,7 +1344,7 @@
Vsw[KN]
-
+
110
@@ -1357,7 +1357,7 @@
-
+
0
@@ -1369,7 +1369,7 @@
Área de Aço
-
+
122
@@ -1382,12 +1382,12 @@
-
+
- 30
+ 10
20
- 71
+ 81
16
@@ -1395,7 +1395,7 @@
As/s [mm²/m]
-
+
122
@@ -1408,12 +1408,12 @@
-
+
- 30
+ 10
50
- 91
+ 101
16
@@ -1422,7 +1422,7 @@
-
+
127
@@ -1436,7 +1436,7 @@
-
+
660
@@ -1449,7 +1449,7 @@
Calcular
-
+
750
@@ -1469,8 +1469,8 @@
720
0
- 131
- 51
+ 6
+ 16
@@ -1486,8 +1486,8 @@
0
0
- 868
- 21
+ 871
+ 22
diff --git a/app/vigas_alt_ui.py b/app/vigas_alt_ui.py
new file mode 100644
index 0000000..864f089
--- /dev/null
+++ b/app/vigas_alt_ui.py
@@ -0,0 +1,494 @@
+# Form implementation generated from reading ui file 'd:\Python\Navier\app\vigas_alt.ui'
+#
+# Created by: PyQt6 UI code generator 6.9.1
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic6 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt6 import QtCore, QtGui, QtWidgets
+
+
+class Ui_MainWindow(object):
+ def setupUi(self, MainWindow):
+ MainWindow.setObjectName("MainWindow")
+ MainWindow.resize(871, 634)
+ self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
+ self.centralwidget.setObjectName("centralwidget")
+ self.tabWidget = QtWidgets.QTabWidget(parent=self.centralwidget)
+ self.tabWidget.setGeometry(QtCore.QRect(0, 30, 861, 571))
+ self.tabWidget.setObjectName("tabWidget")
+ self.tab_viga_retangular = QtWidgets.QWidget()
+ self.tab_viga_retangular.setObjectName("tab_viga_retangular")
+ self.stacked_viga_modelo_armacao = QtWidgets.QStackedWidget(parent=self.tab_viga_retangular)
+ self.stacked_viga_modelo_armacao.setGeometry(QtCore.QRect(-1, 39, 551, 511))
+ self.stacked_viga_modelo_armacao.setObjectName("stacked_viga_modelo_armacao")
+ self.page_viga_armacao_dupla = QtWidgets.QWidget()
+ self.page_viga_armacao_dupla.setObjectName("page_viga_armacao_dupla")
+ self.group_viga_armacao_dupla_dimensoes = QtWidgets.QGroupBox(parent=self.page_viga_armacao_dupla)
+ self.group_viga_armacao_dupla_dimensoes.setGeometry(QtCore.QRect(20, 180, 251, 291))
+ self.group_viga_armacao_dupla_dimensoes.setObjectName("group_viga_armacao_dupla_dimensoes")
+ self.ledit_viga_armacao_dupla_lagura = QtWidgets.QLineEdit(parent=self.group_viga_armacao_dupla_dimensoes)
+ self.ledit_viga_armacao_dupla_lagura.setGeometry(QtCore.QRect(130, 30, 101, 20))
+ self.ledit_viga_armacao_dupla_lagura.setObjectName("ledit_viga_armacao_dupla_lagura")
+ self.ledit_viga_armacao_dupla_altura = QtWidgets.QLineEdit(parent=self.group_viga_armacao_dupla_dimensoes)
+ self.ledit_viga_armacao_dupla_altura.setGeometry(QtCore.QRect(130, 60, 101, 20))
+ self.ledit_viga_armacao_dupla_altura.setObjectName("ledit_viga_armacao_dupla_altura")
+ self.ledit_viga_armacao_dupla_altura_util = QtWidgets.QLineEdit(parent=self.group_viga_armacao_dupla_dimensoes)
+ self.ledit_viga_armacao_dupla_altura_util.setGeometry(QtCore.QRect(131, 90, 100, 20))
+ self.ledit_viga_armacao_dupla_altura_util.setObjectName("ledit_viga_armacao_dupla_altura_util")
+ self.label_viga_armacao_dupla_largura = QtWidgets.QLabel(parent=self.group_viga_armacao_dupla_dimensoes)
+ self.label_viga_armacao_dupla_largura.setGeometry(QtCore.QRect(20, 30, 101, 16))
+ self.label_viga_armacao_dupla_largura.setObjectName("label_viga_armacao_dupla_largura")
+ self.label_viga_armacao_dupla_altura = QtWidgets.QLabel(parent=self.group_viga_armacao_dupla_dimensoes)
+ self.label_viga_armacao_dupla_altura.setGeometry(QtCore.QRect(20, 60, 81, 16))
+ self.label_viga_armacao_dupla_altura.setObjectName("label_viga_armacao_dupla_altura")
+ self.label_viga_armacao_dupla_altura_util = QtWidgets.QLabel(parent=self.group_viga_armacao_dupla_dimensoes)
+ self.label_viga_armacao_dupla_altura_util.setGeometry(QtCore.QRect(20, 90, 101, 16))
+ self.label_viga_armacao_dupla_altura_util.setObjectName("label_viga_armacao_dupla_altura_util")
+ self.group_viga_armacao_dupla_dominio = QtWidgets.QGroupBox(parent=self.group_viga_armacao_dupla_dimensoes)
+ self.group_viga_armacao_dupla_dominio.setGeometry(QtCore.QRect(0, 150, 260, 141))
+ self.group_viga_armacao_dupla_dominio.setObjectName("group_viga_armacao_dupla_dominio")
+ self.radio_viga_dominio_3 = QtWidgets.QRadioButton(parent=self.group_viga_armacao_dupla_dominio)
+ self.radio_viga_dominio_3.setGeometry(QtCore.QRect(140, 20, 82, 21))
+ self.radio_viga_dominio_3.setObjectName("radio_viga_dominio_3")
+ self.radio_viga_dominio_2 = QtWidgets.QRadioButton(parent=self.group_viga_armacao_dupla_dominio)
+ self.radio_viga_dominio_2.setGeometry(QtCore.QRect(30, 20, 82, 21))
+ self.radio_viga_dominio_2.setChecked(True)
+ self.radio_viga_dominio_2.setObjectName("radio_viga_dominio_2")
+ self.label_viga_linha_neutra = QtWidgets.QLabel(parent=self.group_viga_armacao_dupla_dominio)
+ self.label_viga_linha_neutra.setGeometry(QtCore.QRect(30, 50, 81, 21))
+ self.label_viga_linha_neutra.setObjectName("label_viga_linha_neutra")
+ self.ledit_viga_linha_neutra = QtWidgets.QLineEdit(parent=self.group_viga_armacao_dupla_dominio)
+ self.ledit_viga_linha_neutra.setGeometry(QtCore.QRect(130, 50, 81, 20))
+ self.ledit_viga_linha_neutra.setObjectName("ledit_viga_linha_neutra")
+ self.label_viga_d_limite = QtWidgets.QLabel(parent=self.group_viga_armacao_dupla_dominio)
+ self.label_viga_d_limite.setGeometry(QtCore.QRect(30, 80, 71, 21))
+ self.label_viga_d_limite.setObjectName("label_viga_d_limite")
+ self.ledit_viga_d_limite = QtWidgets.QLineEdit(parent=self.group_viga_armacao_dupla_dominio)
+ self.ledit_viga_d_limite.setGeometry(QtCore.QRect(130, 80, 81, 20))
+ self.ledit_viga_d_limite.setObjectName("ledit_viga_d_limite")
+ self.ledit_viga_x_limite = QtWidgets.QLineEdit(parent=self.group_viga_armacao_dupla_dominio)
+ self.ledit_viga_x_limite.setGeometry(QtCore.QRect(131, 110, 81, 20))
+ self.ledit_viga_x_limite.setObjectName("ledit_viga_x_limite")
+ self.label_viga_armacao_dupla_x_limite = QtWidgets.QLabel(parent=self.group_viga_armacao_dupla_dominio)
+ self.label_viga_armacao_dupla_x_limite.setGeometry(QtCore.QRect(30, 110, 91, 21))
+ self.label_viga_armacao_dupla_x_limite.setObjectName("label_viga_armacao_dupla_x_limite")
+ self.label_viga_armacao_dupla_d_linha = QtWidgets.QLabel(parent=self.group_viga_armacao_dupla_dimensoes)
+ self.label_viga_armacao_dupla_d_linha.setGeometry(QtCore.QRect(19, 120, 91, 16))
+ self.label_viga_armacao_dupla_d_linha.setObjectName("label_viga_armacao_dupla_d_linha")
+ self.ledit_viga_armacao_dupla_d_linha = QtWidgets.QLineEdit(parent=self.group_viga_armacao_dupla_dimensoes)
+ self.ledit_viga_armacao_dupla_d_linha.setGeometry(QtCore.QRect(130, 120, 100, 20))
+ self.ledit_viga_armacao_dupla_d_linha.setReadOnly(True)
+ self.ledit_viga_armacao_dupla_d_linha.setObjectName("ledit_viga_armacao_dupla_d_linha")
+ self.group_viga_armacao_dupla_secao = QtWidgets.QGroupBox(parent=self.page_viga_armacao_dupla)
+ self.group_viga_armacao_dupla_secao.setGeometry(QtCore.QRect(290, 0, 261, 141))
+ self.group_viga_armacao_dupla_secao.setObjectName("group_viga_armacao_dupla_secao")
+ self.label_viga_armacao_dupla_secao = QtWidgets.QLabel(parent=self.group_viga_armacao_dupla_secao)
+ self.label_viga_armacao_dupla_secao.setGeometry(QtCore.QRect(71, 6, 110, 131))
+ self.label_viga_armacao_dupla_secao.setText("")
+ self.label_viga_armacao_dupla_secao.setPixmap(QtGui.QPixmap("d:\\Python\\Navier\\app\\navier_viga_dupla.png"))
+ self.label_viga_armacao_dupla_secao.setScaledContents(True)
+ self.label_viga_armacao_dupla_secao.setObjectName("label_viga_armacao_dupla_secao")
+ self.group_viga_armadura_longitudinal = QtWidgets.QGroupBox(parent=self.page_viga_armacao_dupla)
+ self.group_viga_armadura_longitudinal.setGeometry(QtCore.QRect(290, 150, 261, 321))
+ self.group_viga_armadura_longitudinal.setObjectName("group_viga_armadura_longitudinal")
+ self.label_viga_momento_2 = QtWidgets.QLabel(parent=self.group_viga_armadura_longitudinal)
+ self.label_viga_momento_2.setGeometry(QtCore.QRect(10, 50, 101, 21))
+ self.label_viga_momento_2.setObjectName("label_viga_momento_2")
+ self.ledit_viga_momento_2 = QtWidgets.QLineEdit(parent=self.group_viga_armadura_longitudinal)
+ self.ledit_viga_momento_2.setGeometry(QtCore.QRect(150, 50, 100, 20))
+ self.ledit_viga_momento_2.setObjectName("ledit_viga_momento_2")
+ self.group_viga_areas_aco = QtWidgets.QGroupBox(parent=self.group_viga_armadura_longitudinal)
+ self.group_viga_areas_aco.setGeometry(QtCore.QRect(0, 90, 260, 231))
+ self.group_viga_areas_aco.setObjectName("group_viga_areas_aco")
+ self.ledit_viga_as_compressao = QtWidgets.QLineEdit(parent=self.group_viga_areas_aco)
+ self.ledit_viga_as_compressao.setGeometry(QtCore.QRect(150, 20, 91, 20))
+ self.ledit_viga_as_compressao.setObjectName("ledit_viga_as_compressao")
+ self.label_viga_as_compressao = QtWidgets.QLabel(parent=self.group_viga_areas_aco)
+ self.label_viga_as_compressao.setGeometry(QtCore.QRect(20, 18, 121, 21))
+ self.label_viga_as_compressao.setObjectName("label_viga_as_compressao")
+ self.label_viga_area_sobre_apoio = QtWidgets.QLabel(parent=self.group_viga_areas_aco)
+ self.label_viga_area_sobre_apoio.setGeometry(QtCore.QRect(20, 78, 111, 21))
+ self.label_viga_area_sobre_apoio.setObjectName("label_viga_area_sobre_apoio")
+ self.ledit_viga_area_sobre_apoio = QtWidgets.QLineEdit(parent=self.group_viga_areas_aco)
+ self.ledit_viga_area_sobre_apoio.setGeometry(QtCore.QRect(150, 80, 91, 20))
+ self.ledit_viga_area_sobre_apoio.setObjectName("ledit_viga_area_sobre_apoio")
+ self.ledit_viga_as_pele = QtWidgets.QLineEdit(parent=self.group_viga_areas_aco)
+ self.ledit_viga_as_pele.setGeometry(QtCore.QRect(149, 108, 91, 20))
+ self.ledit_viga_as_pele.setObjectName("ledit_viga_as_pele")
+ self.label_viga_as_pele = QtWidgets.QLabel(parent=self.group_viga_areas_aco)
+ self.label_viga_as_pele.setGeometry(QtCore.QRect(20, 108, 91, 21))
+ self.label_viga_as_pele.setObjectName("label_viga_as_pele")
+ self.label_viga_as_max = QtWidgets.QLabel(parent=self.group_viga_areas_aco)
+ self.label_viga_as_max.setGeometry(QtCore.QRect(21, 170, 91, 21))
+ self.label_viga_as_max.setObjectName("label_viga_as_max")
+ self.ledit_viga_as_max = QtWidgets.QLineEdit(parent=self.group_viga_areas_aco)
+ self.ledit_viga_as_max.setGeometry(QtCore.QRect(150, 170, 91, 20))
+ self.ledit_viga_as_max.setObjectName("ledit_viga_as_max")
+ self.ledit_viga_as_tracao = QtWidgets.QLineEdit(parent=self.group_viga_areas_aco)
+ self.ledit_viga_as_tracao.setGeometry(QtCore.QRect(150, 50, 91, 20))
+ self.ledit_viga_as_tracao.setObjectName("ledit_viga_as_tracao")
+ self.label_viga_as_tracao = QtWidgets.QLabel(parent=self.group_viga_areas_aco)
+ self.label_viga_as_tracao.setGeometry(QtCore.QRect(20, 48, 111, 21))
+ self.label_viga_as_tracao.setObjectName("label_viga_as_tracao")
+ self.label_viga_as_min = QtWidgets.QLabel(parent=self.group_viga_areas_aco)
+ self.label_viga_as_min.setGeometry(QtCore.QRect(21, 200, 91, 21))
+ self.label_viga_as_min.setObjectName("label_viga_as_min")
+ self.ledit_viga_as_min = QtWidgets.QLineEdit(parent=self.group_viga_areas_aco)
+ self.ledit_viga_as_min.setGeometry(QtCore.QRect(150, 200, 91, 20))
+ self.ledit_viga_as_min.setObjectName("ledit_viga_as_min")
+ self.label_viga_as_total = QtWidgets.QLabel(parent=self.group_viga_areas_aco)
+ self.label_viga_as_total.setGeometry(QtCore.QRect(21, 140, 91, 21))
+ self.label_viga_as_total.setObjectName("label_viga_as_total")
+ self.ledit_viga_as_total = QtWidgets.QLineEdit(parent=self.group_viga_areas_aco)
+ self.ledit_viga_as_total.setGeometry(QtCore.QRect(150, 140, 91, 20))
+ self.ledit_viga_as_total.setObjectName("ledit_viga_as_total")
+ self.ledit_viga_momento_limite = QtWidgets.QLineEdit(parent=self.group_viga_armadura_longitudinal)
+ self.ledit_viga_momento_limite.setGeometry(QtCore.QRect(150, 20, 100, 20))
+ self.ledit_viga_momento_limite.setObjectName("ledit_viga_momento_limite")
+ self.label_viga_momento_limite = QtWidgets.QLabel(parent=self.group_viga_armadura_longitudinal)
+ self.label_viga_momento_limite.setGeometry(QtCore.QRect(10, 20, 131, 21))
+ self.label_viga_momento_limite.setObjectName("label_viga_momento_limite")
+ self.stacked_viga_modelo_armacao.addWidget(self.page_viga_armacao_dupla)
+ self.page_viga_armacao_simples = QtWidgets.QWidget()
+ self.page_viga_armacao_simples.setObjectName("page_viga_armacao_simples")
+ self.group_viga_armacao_simples_dimensoes = QtWidgets.QGroupBox(parent=self.page_viga_armacao_simples)
+ self.group_viga_armacao_simples_dimensoes.setGeometry(QtCore.QRect(20, 180, 251, 151))
+ self.group_viga_armacao_simples_dimensoes.setObjectName("group_viga_armacao_simples_dimensoes")
+ self.ledit_viga_armacao_simples_largura = QtWidgets.QLineEdit(parent=self.group_viga_armacao_simples_dimensoes)
+ self.ledit_viga_armacao_simples_largura.setGeometry(QtCore.QRect(130, 30, 101, 20))
+ self.ledit_viga_armacao_simples_largura.setObjectName("ledit_viga_armacao_simples_largura")
+ self.ledit_viga_armacao_simples_altura = QtWidgets.QLineEdit(parent=self.group_viga_armacao_simples_dimensoes)
+ self.ledit_viga_armacao_simples_altura.setGeometry(QtCore.QRect(130, 60, 101, 20))
+ self.ledit_viga_armacao_simples_altura.setObjectName("ledit_viga_armacao_simples_altura")
+ self.ledit_viga_armacao_simples_altura_util = QtWidgets.QLineEdit(parent=self.group_viga_armacao_simples_dimensoes)
+ self.ledit_viga_armacao_simples_altura_util.setGeometry(QtCore.QRect(131, 90, 100, 20))
+ self.ledit_viga_armacao_simples_altura_util.setObjectName("ledit_viga_armacao_simples_altura_util")
+ self.label_viga_armacao_simples_largura = QtWidgets.QLabel(parent=self.group_viga_armacao_simples_dimensoes)
+ self.label_viga_armacao_simples_largura.setGeometry(QtCore.QRect(20, 30, 81, 16))
+ self.label_viga_armacao_simples_largura.setObjectName("label_viga_armacao_simples_largura")
+ self.label_viga_armacao_simples_altura = QtWidgets.QLabel(parent=self.group_viga_armacao_simples_dimensoes)
+ self.label_viga_armacao_simples_altura.setGeometry(QtCore.QRect(20, 60, 81, 16))
+ self.label_viga_armacao_simples_altura.setObjectName("label_viga_armacao_simples_altura")
+ self.label_viga_armacao_simples_altura_util = QtWidgets.QLabel(parent=self.group_viga_armacao_simples_dimensoes)
+ self.label_viga_armacao_simples_altura_util.setGeometry(QtCore.QRect(20, 90, 91, 16))
+ self.label_viga_armacao_simples_altura_util.setObjectName("label_viga_armacao_simples_altura_util")
+ self.label_viga_armacao_simples_d_linha = QtWidgets.QLabel(parent=self.group_viga_armacao_simples_dimensoes)
+ self.label_viga_armacao_simples_d_linha.setGeometry(QtCore.QRect(19, 120, 91, 16))
+ self.label_viga_armacao_simples_d_linha.setObjectName("label_viga_armacao_simples_d_linha")
+ self.ledit_viga_armacao_simples_d_linha = QtWidgets.QLineEdit(parent=self.group_viga_armacao_simples_dimensoes)
+ self.ledit_viga_armacao_simples_d_linha.setGeometry(QtCore.QRect(130, 120, 100, 20))
+ self.ledit_viga_armacao_simples_d_linha.setReadOnly(True)
+ self.ledit_viga_armacao_simples_d_linha.setObjectName("ledit_viga_armacao_simples_d_linha")
+ self.group_viga_armacao_simples_secao = QtWidgets.QGroupBox(parent=self.page_viga_armacao_simples)
+ self.group_viga_armacao_simples_secao.setGeometry(QtCore.QRect(20, 340, 251, 141))
+ self.group_viga_armacao_simples_secao.setObjectName("group_viga_armacao_simples_secao")
+ self.label_viga_armacao_simples_secao = QtWidgets.QLabel(parent=self.group_viga_armacao_simples_secao)
+ self.label_viga_armacao_simples_secao.setGeometry(QtCore.QRect(70, 6, 111, 131))
+ self.label_viga_armacao_simples_secao.setText("")
+ self.label_viga_armacao_simples_secao.setPixmap(QtGui.QPixmap("d:\\Python\\Navier\\app\\secao_viga.png"))
+ self.label_viga_armacao_simples_secao.setScaledContents(True)
+ self.label_viga_armacao_simples_secao.setObjectName("label_viga_armacao_simples_secao")
+ self.group_viga_armacao_simples_armadura_longitudinal = QtWidgets.QGroupBox(parent=self.page_viga_armacao_simples)
+ self.group_viga_armacao_simples_armadura_longitudinal.setGeometry(QtCore.QRect(290, 2, 251, 351))
+ self.group_viga_armacao_simples_armadura_longitudinal.setObjectName("group_viga_armacao_simples_armadura_longitudinal")
+ self.label_viga_armacao_simples_md = QtWidgets.QLabel(parent=self.group_viga_armacao_simples_armadura_longitudinal)
+ self.label_viga_armacao_simples_md.setGeometry(QtCore.QRect(10, 20, 91, 21))
+ self.label_viga_armacao_simples_md.setObjectName("label_viga_armacao_simples_md")
+ self.ledit_viga_armacao_simples_md = QtWidgets.QLineEdit(parent=self.group_viga_armacao_simples_armadura_longitudinal)
+ self.ledit_viga_armacao_simples_md.setGeometry(QtCore.QRect(130, 20, 111, 20))
+ self.ledit_viga_armacao_simples_md.setObjectName("ledit_viga_armacao_simples_md")
+ self.label_viga_armacao_simples_kmd = QtWidgets.QLabel(parent=self.group_viga_armacao_simples_armadura_longitudinal)
+ self.label_viga_armacao_simples_kmd.setGeometry(QtCore.QRect(10, 80, 91, 21))
+ self.label_viga_armacao_simples_kmd.setObjectName("label_viga_armacao_simples_kmd")
+ self.ledit_viga_armacao_simples_kmd = QtWidgets.QLineEdit(parent=self.group_viga_armacao_simples_armadura_longitudinal)
+ self.ledit_viga_armacao_simples_kmd.setGeometry(QtCore.QRect(130, 80, 111, 20))
+ self.ledit_viga_armacao_simples_kmd.setObjectName("ledit_viga_armacao_simples_kmd")
+ self.label_viga_armacao_simples_kx = QtWidgets.QLabel(parent=self.group_viga_armacao_simples_armadura_longitudinal)
+ self.label_viga_armacao_simples_kx.setGeometry(QtCore.QRect(10, 110, 91, 21))
+ self.label_viga_armacao_simples_kx.setObjectName("label_viga_armacao_simples_kx")
+ self.ledit_viga_armacao_simples_kx = QtWidgets.QLineEdit(parent=self.group_viga_armacao_simples_armadura_longitudinal)
+ self.ledit_viga_armacao_simples_kx.setGeometry(QtCore.QRect(130, 110, 111, 20))
+ self.ledit_viga_armacao_simples_kx.setObjectName("ledit_viga_armacao_simples_kx")
+ self.label_viga_armacao_simples_kz = QtWidgets.QLabel(parent=self.group_viga_armacao_simples_armadura_longitudinal)
+ self.label_viga_armacao_simples_kz.setGeometry(QtCore.QRect(10, 140, 91, 21))
+ self.label_viga_armacao_simples_kz.setObjectName("label_viga_armacao_simples_kz")
+ self.ledit_viga_armacao_simples_kz = QtWidgets.QLineEdit(parent=self.group_viga_armacao_simples_armadura_longitudinal)
+ self.ledit_viga_armacao_simples_kz.setGeometry(QtCore.QRect(130, 140, 111, 20))
+ self.ledit_viga_armacao_simples_kz.setObjectName("ledit_viga_armacao_simples_kz")
+ self.group_viga_armacao_simples_areas_aco = QtWidgets.QGroupBox(parent=self.group_viga_armacao_simples_armadura_longitudinal)
+ self.group_viga_armacao_simples_areas_aco.setGeometry(QtCore.QRect(0, 170, 260, 181))
+ self.group_viga_armacao_simples_areas_aco.setObjectName("group_viga_armacao_simples_areas_aco")
+ self.ledit_viga_armacao_simples_as = QtWidgets.QLineEdit(parent=self.group_viga_armacao_simples_areas_aco)
+ self.ledit_viga_armacao_simples_as.setGeometry(QtCore.QRect(150, 30, 91, 20))
+ self.ledit_viga_armacao_simples_as.setObjectName("ledit_viga_armacao_simples_as")
+ self.label_viga_armacao_simples_as = QtWidgets.QLabel(parent=self.group_viga_armacao_simples_areas_aco)
+ self.label_viga_armacao_simples_as.setGeometry(QtCore.QRect(20, 30, 91, 21))
+ self.label_viga_armacao_simples_as.setObjectName("label_viga_armacao_simples_as")
+ self.label_viga_armacao_simples_area_sobre_apoio = QtWidgets.QLabel(parent=self.group_viga_armacao_simples_areas_aco)
+ self.label_viga_armacao_simples_area_sobre_apoio.setGeometry(QtCore.QRect(20, 60, 121, 21))
+ self.label_viga_armacao_simples_area_sobre_apoio.setObjectName("label_viga_armacao_simples_area_sobre_apoio")
+ self.ledit_viga_armacao_simples_area_sobre_apoio = QtWidgets.QLineEdit(parent=self.group_viga_armacao_simples_areas_aco)
+ self.ledit_viga_armacao_simples_area_sobre_apoio.setGeometry(QtCore.QRect(150, 60, 91, 20))
+ self.ledit_viga_armacao_simples_area_sobre_apoio.setObjectName("ledit_viga_armacao_simples_area_sobre_apoio")
+ self.ledit_viga_armacao_simples_as_pele = QtWidgets.QLineEdit(parent=self.group_viga_armacao_simples_areas_aco)
+ self.ledit_viga_armacao_simples_as_pele.setGeometry(QtCore.QRect(150, 90, 91, 20))
+ self.ledit_viga_armacao_simples_as_pele.setObjectName("ledit_viga_armacao_simples_as_pele")
+ self.label_viga_armacao_simples_as_pele = QtWidgets.QLabel(parent=self.group_viga_armacao_simples_areas_aco)
+ self.label_viga_armacao_simples_as_pele.setGeometry(QtCore.QRect(20, 90, 91, 21))
+ self.label_viga_armacao_simples_as_pele.setObjectName("label_viga_armacao_simples_as_pele")
+ self.label_viga_armacao_simples_as_max = QtWidgets.QLabel(parent=self.group_viga_armacao_simples_areas_aco)
+ self.label_viga_armacao_simples_as_max.setGeometry(QtCore.QRect(21, 120, 91, 21))
+ self.label_viga_armacao_simples_as_max.setObjectName("label_viga_armacao_simples_as_max")
+ self.ledit_viga_armacao_simples_as_max = QtWidgets.QLineEdit(parent=self.group_viga_armacao_simples_areas_aco)
+ self.ledit_viga_armacao_simples_as_max.setGeometry(QtCore.QRect(150, 120, 91, 20))
+ self.ledit_viga_armacao_simples_as_max.setObjectName("ledit_viga_armacao_simples_as_max")
+ self.ledit_viga_armacao_simples_as_min = QtWidgets.QLineEdit(parent=self.group_viga_armacao_simples_areas_aco)
+ self.ledit_viga_armacao_simples_as_min.setGeometry(QtCore.QRect(150, 150, 91, 20))
+ self.ledit_viga_armacao_simples_as_min.setObjectName("ledit_viga_armacao_simples_as_min")
+ self.label_viga_armacao_simples_as_min = QtWidgets.QLabel(parent=self.group_viga_armacao_simples_areas_aco)
+ self.label_viga_armacao_simples_as_min.setGeometry(QtCore.QRect(20, 150, 91, 21))
+ self.label_viga_armacao_simples_as_min.setObjectName("label_viga_armacao_simples_as_min")
+ self.ledit_viga_armacao_simples_dominio_ruptura = QtWidgets.QLineEdit(parent=self.group_viga_armacao_simples_armadura_longitudinal)
+ self.ledit_viga_armacao_simples_dominio_ruptura.setGeometry(QtCore.QRect(130, 50, 111, 20))
+ self.ledit_viga_armacao_simples_dominio_ruptura.setObjectName("ledit_viga_armacao_simples_dominio_ruptura")
+ self.label_viga_armacao_simples_dominio_ruptura = QtWidgets.QLabel(parent=self.group_viga_armacao_simples_armadura_longitudinal)
+ self.label_viga_armacao_simples_dominio_ruptura.setGeometry(QtCore.QRect(10, 50, 111, 21))
+ self.label_viga_armacao_simples_dominio_ruptura.setObjectName("label_viga_armacao_simples_dominio_ruptura")
+ self.stacked_viga_modelo_armacao.addWidget(self.page_viga_armacao_simples)
+ self.btn_viga_armacao_simples = QtWidgets.QPushButton(parent=self.tab_viga_retangular)
+ self.btn_viga_armacao_simples.setGeometry(QtCore.QRect(540, 10, 131, 23))
+ self.btn_viga_armacao_simples.setObjectName("btn_viga_armacao_simples")
+ self.btn_viga_armacao_dupla = QtWidgets.QPushButton(parent=self.tab_viga_retangular)
+ self.btn_viga_armacao_dupla.setGeometry(QtCore.QRect(690, 10, 141, 23))
+ self.btn_viga_armacao_dupla.setObjectName("btn_viga_armacao_dupla")
+ self.group_viga_solicitacoes = QtWidgets.QGroupBox(parent=self.tab_viga_retangular)
+ self.group_viga_solicitacoes.setGeometry(QtCore.QRect(20, 130, 251, 81))
+ self.group_viga_solicitacoes.setObjectName("group_viga_solicitacoes")
+ self.ledit_viga_momento_fletor = QtWidgets.QLineEdit(parent=self.group_viga_solicitacoes)
+ self.ledit_viga_momento_fletor.setGeometry(QtCore.QRect(150, 20, 81, 20))
+ self.ledit_viga_momento_fletor.setObjectName("ledit_viga_momento_fletor")
+ self.ledit_viga_cortante = QtWidgets.QLineEdit(parent=self.group_viga_solicitacoes)
+ self.ledit_viga_cortante.setGeometry(QtCore.QRect(150, 50, 81, 20))
+ self.ledit_viga_cortante.setObjectName("ledit_viga_cortante")
+ self.label_viga_momento_fletor = QtWidgets.QLabel(parent=self.group_viga_solicitacoes)
+ self.label_viga_momento_fletor.setGeometry(QtCore.QRect(20, 20, 141, 20))
+ self.label_viga_momento_fletor.setObjectName("label_viga_momento_fletor")
+ self.label_viga_cortante = QtWidgets.QLabel(parent=self.group_viga_solicitacoes)
+ self.label_viga_cortante.setGeometry(QtCore.QRect(20, 49, 111, 21))
+ self.label_viga_cortante.setObjectName("label_viga_cortante")
+ self.group_viga_materiais = QtWidgets.QGroupBox(parent=self.tab_viga_retangular)
+ self.group_viga_materiais.setGeometry(QtCore.QRect(20, 40, 251, 81))
+ self.group_viga_materiais.setObjectName("group_viga_materiais")
+ self.label_viga_concreto_fck = QtWidgets.QLabel(parent=self.group_viga_materiais)
+ self.label_viga_concreto_fck.setGeometry(QtCore.QRect(20, 20, 121, 20))
+ self.label_viga_concreto_fck.setObjectName("label_viga_concreto_fck")
+ self.combo_viga_concreto_fck = QtWidgets.QComboBox(parent=self.group_viga_materiais)
+ self.combo_viga_concreto_fck.setGeometry(QtCore.QRect(150, 20, 81, 22))
+ self.combo_viga_concreto_fck.setObjectName("combo_viga_concreto_fck")
+ self.combo_viga_concreto_fck.addItem("")
+ self.combo_viga_concreto_fck.addItem("")
+ self.combo_viga_concreto_fck.addItem("")
+ self.combo_viga_concreto_fck.addItem("")
+ self.combo_viga_concreto_fck.addItem("")
+ self.combo_viga_concreto_fck.addItem("")
+ self.combo_viga_concreto_fck.addItem("")
+ self.combo_viga_aco_classe = QtWidgets.QComboBox(parent=self.group_viga_materiais)
+ self.combo_viga_aco_classe.setGeometry(QtCore.QRect(150, 50, 81, 22))
+ self.combo_viga_aco_classe.setObjectName("combo_viga_aco_classe")
+ self.combo_viga_aco_classe.addItem("")
+ self.combo_viga_aco_classe.addItem("")
+ self.combo_viga_aco_classe.addItem("")
+ self.label_viga_aco_classe = QtWidgets.QLabel(parent=self.group_viga_materiais)
+ self.label_viga_aco_classe.setGeometry(QtCore.QRect(20, 50, 121, 20))
+ self.label_viga_aco_classe.setObjectName("label_viga_aco_classe")
+ self.group_viga_armacao_transversal = QtWidgets.QGroupBox(parent=self.tab_viga_retangular)
+ self.group_viga_armacao_transversal.setGeometry(QtCore.QRect(570, 40, 261, 471))
+ self.group_viga_armacao_transversal.setObjectName("group_viga_armacao_transversal")
+ self.group_viga_armacao_modelo_calculo = QtWidgets.QGroupBox(parent=self.group_viga_armacao_transversal)
+ self.group_viga_armacao_modelo_calculo.setGeometry(QtCore.QRect(0, 140, 271, 91))
+ self.group_viga_armacao_modelo_calculo.setObjectName("group_viga_armacao_modelo_calculo")
+ self.radio_viga_modelo_calculo_1 = QtWidgets.QRadioButton(parent=self.group_viga_armacao_modelo_calculo)
+ self.radio_viga_modelo_calculo_1.setGeometry(QtCore.QRect(20, 20, 211, 21))
+ self.radio_viga_modelo_calculo_1.setChecked(True)
+ self.radio_viga_modelo_calculo_1.setObjectName("radio_viga_modelo_calculo_1")
+ self.radio_viga_modelo_calculo_2 = QtWidgets.QRadioButton(parent=self.group_viga_armacao_modelo_calculo)
+ self.radio_viga_modelo_calculo_2.setGeometry(QtCore.QRect(20, 40, 221, 21))
+ self.radio_viga_modelo_calculo_2.setObjectName("radio_viga_modelo_calculo_2")
+ self.spin_viga_angulo_theta = QtWidgets.QSpinBox(parent=self.group_viga_armacao_modelo_calculo)
+ self.spin_viga_angulo_theta.setGeometry(QtCore.QRect(170, 60, 42, 22))
+ self.spin_viga_angulo_theta.setMinimum(30)
+ self.spin_viga_angulo_theta.setMaximum(45)
+ self.spin_viga_angulo_theta.setObjectName("spin_viga_angulo_theta")
+ self.label_viga_angulo_theta = QtWidgets.QLabel(parent=self.group_viga_armacao_modelo_calculo)
+ self.label_viga_angulo_theta.setGeometry(QtCore.QRect(140, 60, 47, 21))
+ self.label_viga_angulo_theta.setObjectName("label_viga_angulo_theta")
+ self.label_32 = QtWidgets.QLabel(parent=self.group_viga_armacao_transversal)
+ self.label_32.setGeometry(QtCore.QRect(30, 20, 221, 131))
+ self.label_32.setText("")
+ self.label_32.setPixmap(QtGui.QPixmap("d:\\Python\\Navier\\app\\esquema_bielas.png"))
+ self.label_32.setScaledContents(True)
+ self.label_32.setObjectName("label_32")
+ self.label_viga_vsd = QtWidgets.QLabel(parent=self.group_viga_armacao_transversal)
+ self.label_viga_vsd.setGeometry(QtCore.QRect(30, 240, 47, 16))
+ self.label_viga_vsd.setObjectName("label_viga_vsd")
+ self.ledit_viga_vsd = QtWidgets.QLineEdit(parent=self.group_viga_armacao_transversal)
+ self.ledit_viga_vsd.setGeometry(QtCore.QRect(110, 240, 113, 20))
+ self.ledit_viga_vsd.setObjectName("ledit_viga_vsd")
+ self.label_viga_vrd2 = QtWidgets.QLabel(parent=self.group_viga_armacao_transversal)
+ self.label_viga_vrd2.setGeometry(QtCore.QRect(30, 270, 47, 16))
+ self.label_viga_vrd2.setObjectName("label_viga_vrd2")
+ self.ledit_viga_vrd2 = QtWidgets.QLineEdit(parent=self.group_viga_armacao_transversal)
+ self.ledit_viga_vrd2.setGeometry(QtCore.QRect(110, 270, 113, 20))
+ self.ledit_viga_vrd2.setText("")
+ self.ledit_viga_vrd2.setObjectName("ledit_viga_vrd2")
+ self.ledit_viga_vc = QtWidgets.QLineEdit(parent=self.group_viga_armacao_transversal)
+ self.ledit_viga_vc.setGeometry(QtCore.QRect(110, 300, 113, 20))
+ self.ledit_viga_vc.setText("")
+ self.ledit_viga_vc.setObjectName("ledit_viga_vc")
+ self.label_viga_vc = QtWidgets.QLabel(parent=self.group_viga_armacao_transversal)
+ self.label_viga_vc.setGeometry(QtCore.QRect(30, 300, 47, 16))
+ self.label_viga_vc.setObjectName("label_viga_vc")
+ self.label_viga_vsw = QtWidgets.QLabel(parent=self.group_viga_armacao_transversal)
+ self.label_viga_vsw.setGeometry(QtCore.QRect(30, 330, 47, 16))
+ self.label_viga_vsw.setObjectName("label_viga_vsw")
+ self.ledit_viga_vsw = QtWidgets.QLineEdit(parent=self.group_viga_armacao_transversal)
+ self.ledit_viga_vsw.setGeometry(QtCore.QRect(110, 330, 113, 20))
+ self.ledit_viga_vsw.setText("")
+ self.ledit_viga_vsw.setObjectName("ledit_viga_vsw")
+ self.group_viga_area_aco = QtWidgets.QGroupBox(parent=self.group_viga_armacao_transversal)
+ self.group_viga_area_aco.setGeometry(QtCore.QRect(0, 360, 270, 81))
+ self.group_viga_area_aco.setObjectName("group_viga_area_aco")
+ self.ledit_viga_as_s = QtWidgets.QLineEdit(parent=self.group_viga_area_aco)
+ self.ledit_viga_as_s.setGeometry(QtCore.QRect(122, 20, 101, 20))
+ self.ledit_viga_as_s.setText("")
+ self.ledit_viga_as_s.setObjectName("ledit_viga_as_s")
+ self.label_viga_as_s = QtWidgets.QLabel(parent=self.group_viga_area_aco)
+ self.label_viga_as_s.setGeometry(QtCore.QRect(10, 20, 81, 16))
+ self.label_viga_as_s.setObjectName("label_viga_as_s")
+ self.ledit_viga_as_min_s = QtWidgets.QLineEdit(parent=self.group_viga_area_aco)
+ self.ledit_viga_as_min_s.setGeometry(QtCore.QRect(122, 50, 101, 20))
+ self.ledit_viga_as_min_s.setText("")
+ self.ledit_viga_as_min_s.setObjectName("ledit_viga_as_min_s")
+ self.label_viga_as_min_s = QtWidgets.QLabel(parent=self.group_viga_area_aco)
+ self.label_viga_as_min_s.setGeometry(QtCore.QRect(10, 50, 101, 16))
+ self.label_viga_as_min_s.setObjectName("label_viga_as_min_s")
+ self.btn_viga_gerar_detalhamento = QtWidgets.QPushButton(parent=self.group_viga_armacao_transversal)
+ self.btn_viga_gerar_detalhamento.setGeometry(QtCore.QRect(127, 447, 121, 20))
+ self.btn_viga_gerar_detalhamento.setObjectName("btn_viga_gerar_detalhamento")
+ self.btn_viga_calcular = QtWidgets.QPushButton(parent=self.tab_viga_retangular)
+ self.btn_viga_calcular.setGeometry(QtCore.QRect(660, 520, 75, 23))
+ self.btn_viga_calcular.setObjectName("btn_viga_calcular")
+ self.btn_viga_limpar = QtWidgets.QPushButton(parent=self.tab_viga_retangular)
+ self.btn_viga_limpar.setGeometry(QtCore.QRect(750, 520, 75, 23))
+ self.btn_viga_limpar.setObjectName("btn_viga_limpar")
+ self.tabWidget.addTab(self.tab_viga_retangular, "")
+ self.label_45 = QtWidgets.QLabel(parent=self.centralwidget)
+ self.label_45.setGeometry(QtCore.QRect(720, 0, 6, 16))
+ self.label_45.setText("")
+ self.label_45.setPixmap(QtGui.QPixmap("d:\\Python\\Navier\\app\\navier_logo_mini_alt.png"))
+ self.label_45.setObjectName("label_45")
+ MainWindow.setCentralWidget(self.centralwidget)
+ self.menubar = QtWidgets.QMenuBar(parent=MainWindow)
+ self.menubar.setGeometry(QtCore.QRect(0, 0, 871, 22))
+ self.menubar.setObjectName("menubar")
+ MainWindow.setMenuBar(self.menubar)
+ self.statusbar = QtWidgets.QStatusBar(parent=MainWindow)
+ self.statusbar.setObjectName("statusbar")
+ MainWindow.setStatusBar(self.statusbar)
+
+ self.retranslateUi(MainWindow)
+ self.tabWidget.setCurrentIndex(0)
+ self.stacked_viga_modelo_armacao.setCurrentIndex(0)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
+ self.group_viga_armacao_dupla_dimensoes.setTitle(_translate("MainWindow", "Dimensões"))
+ self.ledit_viga_armacao_dupla_lagura.setText(_translate("MainWindow", "0"))
+ self.ledit_viga_armacao_dupla_altura.setText(_translate("MainWindow", "0"))
+ self.ledit_viga_armacao_dupla_altura_util.setText(_translate("MainWindow", "0"))
+ self.label_viga_armacao_dupla_largura.setText(_translate("MainWindow", "Largura - bw [cm]"))
+ self.label_viga_armacao_dupla_altura.setText(_translate("MainWindow", "Altura - h [cm]"))
+ self.label_viga_armacao_dupla_altura_util.setText(_translate("MainWindow", "Altura Útil - d [cm]"))
+ self.group_viga_armacao_dupla_dominio.setTitle(_translate("MainWindow", "Projeção de Domínio"))
+ self.radio_viga_dominio_3.setText(_translate("MainWindow", "Domínio 3"))
+ self.radio_viga_dominio_2.setText(_translate("MainWindow", "Domínio 2"))
+ self.label_viga_linha_neutra.setText(_translate("MainWindow", "Linha Neutra ξ "))
+ self.ledit_viga_linha_neutra.setText(_translate("MainWindow", "0.450"))
+ self.label_viga_d_limite.setText(_translate("MainWindow", "d limite [m]"))
+ self.label_viga_armacao_dupla_x_limite.setText(_translate("MainWindow", "X-limite [m]"))
+ self.label_viga_armacao_dupla_d_linha.setText(_translate("MainWindow", " d\' [cm]"))
+ self.ledit_viga_armacao_dupla_d_linha.setText(_translate("MainWindow", "0"))
+ self.group_viga_armacao_dupla_secao.setTitle(_translate("MainWindow", "Seção"))
+ self.group_viga_armadura_longitudinal.setTitle(_translate("MainWindow", "Armadura Longitudinal"))
+ self.label_viga_momento_2.setText(_translate("MainWindow", "Momento2 [KN.m]"))
+ self.group_viga_areas_aco.setTitle(_translate("MainWindow", "Áreas de Aço"))
+ self.label_viga_as_compressao.setText(_translate("MainWindow", "As Compressão [mm²]"))
+ self.label_viga_area_sobre_apoio.setText(_translate("MainWindow", "Asobre-apoio [mm²]"))
+ self.label_viga_as_pele.setText(_translate("MainWindow", "As.pele [mm²]"))
+ self.label_viga_as_max.setText(_translate("MainWindow", "As.máx [mm²]"))
+ self.label_viga_as_tracao.setText(_translate("MainWindow", "As Tração [mm²]"))
+ self.label_viga_as_min.setText(_translate("MainWindow", "As.mín [mm²]"))
+ self.label_viga_as_total.setText(_translate("MainWindow", "As.total [mm²]"))
+ self.label_viga_momento_limite.setText(_translate("MainWindow", "Momento-limite [KN.m]"))
+ self.group_viga_armacao_simples_dimensoes.setTitle(_translate("MainWindow", "Dimensões"))
+ self.ledit_viga_armacao_simples_largura.setText(_translate("MainWindow", "0"))
+ self.ledit_viga_armacao_simples_altura.setText(_translate("MainWindow", "0"))
+ self.ledit_viga_armacao_simples_altura_util.setText(_translate("MainWindow", "0"))
+ self.label_viga_armacao_simples_largura.setText(_translate("MainWindow", "Base - bw [cm]"))
+ self.label_viga_armacao_simples_altura.setText(_translate("MainWindow", "Altura - h [cm]"))
+ self.label_viga_armacao_simples_altura_util.setText(_translate("MainWindow", "Altura Útil - d [cm]"))
+ self.label_viga_armacao_simples_d_linha.setText(_translate("MainWindow", " d\' [cm] "))
+ self.ledit_viga_armacao_simples_d_linha.setText(_translate("MainWindow", "0"))
+ self.group_viga_armacao_simples_secao.setTitle(_translate("MainWindow", "Seção"))
+ self.group_viga_armacao_simples_armadura_longitudinal.setTitle(_translate("MainWindow", "Armadura Longitudinal"))
+ self.label_viga_armacao_simples_md.setText(_translate("MainWindow", "Md [KN.m]"))
+ self.label_viga_armacao_simples_kmd.setText(_translate("MainWindow", "Kmd"))
+ self.label_viga_armacao_simples_kx.setText(_translate("MainWindow", "Kx"))
+ self.label_viga_armacao_simples_kz.setText(_translate("MainWindow", "Kz"))
+ self.group_viga_armacao_simples_areas_aco.setTitle(_translate("MainWindow", "Áreas de Aço"))
+ self.label_viga_armacao_simples_as.setText(_translate("MainWindow", "As [mm²]"))
+ self.label_viga_armacao_simples_area_sobre_apoio.setText(_translate("MainWindow", "Asobre-apoio [mm²]"))
+ self.label_viga_armacao_simples_as_pele.setText(_translate("MainWindow", "As.pele [mm²]"))
+ self.label_viga_armacao_simples_as_max.setText(_translate("MainWindow", "As.máx [mm²]"))
+ self.label_viga_armacao_simples_as_min.setText(_translate("MainWindow", "As.mín [mm²]"))
+ self.label_viga_armacao_simples_dominio_ruptura.setText(_translate("MainWindow", "Domínio de Ruptura:"))
+ self.btn_viga_armacao_simples.setText(_translate("MainWindow", "Simplesmente Armada"))
+ self.btn_viga_armacao_dupla.setText(_translate("MainWindow", "Duplamente Armada"))
+ self.group_viga_solicitacoes.setTitle(_translate("MainWindow", "Solicitações"))
+ self.ledit_viga_momento_fletor.setText(_translate("MainWindow", "0"))
+ self.ledit_viga_cortante.setText(_translate("MainWindow", "0"))
+ self.label_viga_momento_fletor.setText(_translate("MainWindow", "Momento Fletor [KN.m]"))
+ self.label_viga_cortante.setText(_translate("MainWindow", "Cortante [KN]"))
+ self.group_viga_materiais.setTitle(_translate("MainWindow", "Concreto"))
+ self.label_viga_concreto_fck.setText(_translate("MainWindow", "Resistência - fck [MPa]"))
+ self.combo_viga_concreto_fck.setItemText(0, _translate("MainWindow", "20"))
+ self.combo_viga_concreto_fck.setItemText(1, _translate("MainWindow", "25"))
+ self.combo_viga_concreto_fck.setItemText(2, _translate("MainWindow", "30"))
+ self.combo_viga_concreto_fck.setItemText(3, _translate("MainWindow", "35"))
+ self.combo_viga_concreto_fck.setItemText(4, _translate("MainWindow", "40"))
+ self.combo_viga_concreto_fck.setItemText(5, _translate("MainWindow", "45"))
+ self.combo_viga_concreto_fck.setItemText(6, _translate("MainWindow", "50"))
+ self.combo_viga_aco_classe.setItemText(0, _translate("MainWindow", "250"))
+ self.combo_viga_aco_classe.setItemText(1, _translate("MainWindow", "500"))
+ self.combo_viga_aco_classe.setItemText(2, _translate("MainWindow", "600"))
+ self.label_viga_aco_classe.setText(_translate("MainWindow", "Tipo de Aço - CA"))
+ self.group_viga_armacao_transversal.setTitle(_translate("MainWindow", "Armadura Transversal"))
+ self.group_viga_armacao_modelo_calculo.setTitle(_translate("MainWindow", "Modelo de Cálculo"))
+ self.radio_viga_modelo_calculo_1.setText(_translate("MainWindow", "Modelo I - α = 90º e θ = 45º"))
+ self.radio_viga_modelo_calculo_2.setText(_translate("MainWindow", "Modelo II - α = 90º e 30º < θ < 45º"))
+ self.label_viga_angulo_theta.setText(_translate("MainWindow", " θ :"))
+ self.label_viga_vsd.setText(_translate("MainWindow", "Vsd [KN]"))
+ self.label_viga_vrd2.setText(_translate("MainWindow", "Vrd2 [KN]"))
+ self.label_viga_vc.setText(_translate("MainWindow", "Vc [KN]"))
+ self.label_viga_vsw.setText(_translate("MainWindow", "Vsw[KN]"))
+ self.group_viga_area_aco.setTitle(_translate("MainWindow", "Área de Aço"))
+ self.label_viga_as_s.setText(_translate("MainWindow", "As/s [mm²/m]"))
+ self.label_viga_as_min_s.setText(_translate("MainWindow", "As.min/s [mm²/m]"))
+ self.btn_viga_gerar_detalhamento.setText(_translate("MainWindow", "Gerar Detalhamento"))
+ self.btn_viga_calcular.setText(_translate("MainWindow", "Calcular"))
+ self.btn_viga_limpar.setText(_translate("MainWindow", "Limpar"))
+ self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_viga_retangular), _translate("MainWindow", "Seção Retangular"))
diff --git a/cargas adicionais.py b/cargas adicionais.py
deleted file mode 100644
index 2fb9575..0000000
--- a/cargas adicionais.py
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-import sys
-
-from PyQt5.uic import loadUi
-from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QMessageBox, QVBoxLayout, QHBoxLayout, QDialog, QMessageBox
-from PyQt5.QtGui import QPixmap, QIcon, QImage
-from PyQt5 import QtWidgets, QtGui, QtCore
-from PyQt5.QtWidgets import QTableWidget,QTableWidgetItem
-
-
-class Carga_Adicional(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
-
- self.ui = loadUi('lajes_carg_adicional_atualizada.ui',self)
- #self.tableWidget.setRowCount(linhas)
- #self.tableWidget.setColumnCount(colunas)
- #table = self.tableWidget()
- #header = self.tableWidget.horizontalHeader()
- #header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)
- #header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
-
- header = self.tableWidget.horizontalHeader()
- header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
- header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
-
- self.tableWidget.resizeRowsToContents()
-
- self.setWindowTitle('Navier - Cargas Adicionais')
- self.show()
-
-
-
-
-if __name__ == '__main__':
- app = QtWidgets.QApplication(sys.argv)
- aplicacao = Carga_Adicional()
- app.exec_()
diff --git a/cargas adicionais_atualizada.py b/cargas adicionais_atualizada.py
deleted file mode 100644
index 6b1780e..0000000
--- a/cargas adicionais_atualizada.py
+++ /dev/null
@@ -1,47 +0,0 @@
-
-
-
-import sys
-
-from PyQt5.uic import loadUi
-from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QMessageBox, QVBoxLayout, QHBoxLayout, QDialog, QMessageBox
-from PyQt5.QtGui import QPixmap, QIcon, QImage
-from PyQt5 import QtWidgets, QtGui, QtCore
-from PyQt5.QtWidgets import QTableWidget,QTableWidgetItem
-from PyQt5 import QtWidgets, QtGui, QtCore
-
-
-class Carga_Adicional(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
-
- self.ui = loadUi('lajes_carg_adicional_atualizada.ui',self)
- #self.tableWidget.setRowCount(linhas)
- #self.tableWidget.setColumnCount(colunas)
- #table = self.tableWidget()
- #header = self.tableWidget.horizontalHeader()
- #header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)
- #header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
-
- header = self.tableWidget.horizontalHeader()
- #header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- #header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
- #header.setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
-
- #item = QTableWidgetItem('Cargas') # create the item
- #item.setTextAlignment(QtCore.Qt.AlignVCenter | QtCore.Qt.AlignHCenter) # change the alignment
-
-
- #self.tableWidget.resizeRowsToContents()
-
- self.setWindowTitle('Navier - Cargas Adicionais')
- self.show()
-
-
-
-
-if __name__ == '__main__':
- app = QtWidgets.QApplication(sys.argv)
- aplicacao = Carga_Adicional()
- app.exec_()
diff --git a/detalhamento_vigas.py b/detalhamento_vigas.py
deleted file mode 100644
index b7a1a5e..0000000
--- a/detalhamento_vigas.py
+++ /dev/null
@@ -1,185 +0,0 @@
-
-
-
-import sys
-
-from PyQt5.uic import loadUi
-from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QMessageBox, QVBoxLayout, QHBoxLayout, QDialog, QMessageBox
-from PyQt5.QtGui import QPixmap, QIcon, QImage
-from PyQt5 import QtWidgets, QtGui, QtCore
-from PyQt5.QtWidgets import QTableWidget,QTableWidgetItem
-import pyqtgraph as pg
-
-tabela_bitolas = [
- [6.3, 31.17],
- [8, 50.26],
- [10, 78.53],
- [12.5, 122.71],
- [16, 201.06],
- [20, 314.15],
- [25, 490.87],
- [32, 804.24],
- [40, 1256.63]
- ]
-info_viga = ['95','12','45','40','1.9']
-
-class Detalhar_viga(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.load_ui()
- self.load_signals()
-
- def load_ui(self):
- self.ui = loadUi('detalhamento_vigas_alt.ui',self)
- self.setWindowTitle('Navier - Vigas - Detalhamento')
- self.show()
- def load_signals(self):
- print('inicializado')
- self.pushButton.clicked.connect(self.calcular_area)
- #self.pushButton.clicked.connect(self.calcular_estribos)
- self.pushButton_2.clicked.connect(self.limpar_detalhamento)
- self.pushButton_3.clicked.connect(self.recuperarValores)
-
-
- #pg.plot(x=[0,1,2,3,4], y=[0,1,2,3,4]**2 )
- header = self.tableWidget.horizontalHeader()
- header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
- header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(3, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(4, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(5, QtWidgets.QHeaderView.Stretch)
-
- self.widget.setTitle('nº barras/Bitola')
- self.widget.showGrid(x=True,y=True,alpha=1)
-
- #if '0' not in info_viga:
- # self.recuperarValores()
-
- def calcular_estribos(self):
- vsw = self.lineEdit_14.text()
- fyk_estribo = self.comboBox_2.currentText()
- tramos = self.lineEdit_15.text()
-
- if (vsw != '0' and tramos != '0'):
- vsw = float(self.lineEdit_14.text())
- bitola_estribo = float(self.comboBox.currentText())
- fyk_estribo = float(self.comboBox_2.currentText())
- tramos = float(self.lineEdit_15.text())
- d = float(self.lineEdit_13.text())
-
- area_bitola = (3.14*((bitola_estribo/1000)**2)/4)
-
- print(vsw)
- print(bitola_estribo)
- print(tramos)
- print(fyk_estribo)
- print(area_bitola)
-
-
- s_estribo = ((tramos * area_bitola * 0.9 * (d/100) * (fyk_estribo*100000/1.15))/vsw*1000)/100
- s_estribo = round(s_estribo, ndigits=3)
-
- self.lineEdit.setText(str(s_estribo))
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes para o cálculo dos Estribos!")
-
-
- def recuperarValores(self):
- area_aco = info_viga[0]
- base = info_viga[1]
- altura = info_viga[2]
- d = info_viga[3]
- d_agreg = info_viga[4]
-
- self.lineEdit_11.setText(area_aco)
- self.lineEdit_10.setText(base)
- self.lineEdit_9.setText(altura)
- self.lineEdit_12.setText(d_agreg)
- self.lineEdit_13.setText(d)
-
- def calcular_area(self):
- area_aco = self.lineEdit_11.text()
- base = self.lineEdit_10.text()
- altura = self.lineEdit_9.text()
- d_agreg = self.lineEdit_12.text()
- d = self.lineEdit_13.text()
-
- if (area_aco != '0' and base != '0' and altura != '0' and d_agreg != '0' and d != '0'):
-
- self.widget.clear()
- area_aco = float(self.lineEdit_11.text())
- base = float(self.lineEdit_10.text())
- altura = float(self.lineEdit_9.text())
- cobrimento = float(self.comboBox_3.currentText())
- bitola_estribo = float(self.comboBox.currentText())
- x = []
- y = []
- z = []
- cont = 0
- for i in tabela_bitolas:
- n_barras = float(area_aco/i[1])
- print('bitola: ',i[0],' - nº barras: ',n_barras)
-
- self.tableWidget.setItem(cont,2, QTableWidgetItem(str(round(n_barras, ndigits=2))))
- self.tableWidget.setItem(cont,3, QTableWidgetItem(str(round(n_barras +0.5)+1)))
-
- x.append(i[0])
- y.append(round(n_barras +0.5)+1)
-
- bitola = x[cont]
- n_barras = (round(n_barras +0.5)+1)
-
- espass_horizontal = (round(base - 2*(cobrimento+bitola_estribo/10) - n_barras*(bitola/10), ndigits=2))/(n_barras-1)
-
- z.append(round(espass_horizontal,ndigits=2))
- self.tableWidget.setItem(cont,4, QTableWidgetItem(str(espass_horizontal)))
-
- print('base:',base)
- print('cobrimento:',cobrimento)
- print('bitola_estribo:',bitola_estribo)
- print('n_barras:',n_barras)
-
- cont +=1
-
- #print(x)
- #print(y)
- #print(z)
-
- self.widget.plot(x=x,y=y,pen=(3))
-
- self.calcular_espacamentos()
- self.calcular_estribos()
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes!")
-
-
- def calcular_espacamentos(self):
- bitola = float(self.comboBox_4.currentText())
- d_agreg = float(self.lineEdit_12.text())
-
- s_horizontal = max(2, (bitola/10), 1.2*d_agreg)
- s_vertical = max(2, (bitola/10), 0.5*d_agreg)
-
- #------------------------------- saida de dados ----------------------------------
- self.lineEdit_7.setText(str(s_horizontal))
- self.lineEdit_8.setText(str(s_vertical))
-
- def limpar_detalhamento(self):
- self.widget.clear()
- self.lineEdit_11.setText(str('0'))
- self.lineEdit_9.setText(str('0'))
- self.lineEdit_10.setText(str('0'))
- self.lineEdit_7.setText(str('0'))
- self.lineEdit_8.setText(str('0'))
-
-
-
-
-
-
-if __name__ == '__main__':
- app = QtWidgets.QApplication(sys.argv)
- inicio = Detalhar_viga()
- app.exec_()
diff --git a/detalhamento_vigas.ui b/detalhamento_vigas.ui
deleted file mode 100644
index 2c16a61..0000000
--- a/detalhamento_vigas.ui
+++ /dev/null
@@ -1,556 +0,0 @@
-
-
- MainWindow
-
-
-
- 0
- 0
- 831
- 531
-
-
-
- MainWindow
-
-
-
-
-
- 30
- 20
- 91
- 16
-
-
-
- Área de Aço [mm²]
-
-
-
-
-
- 130
- 20
- 81
- 20
-
-
-
- 0
-
-
-
-
-
- 30
- 260
- 471
- 231
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Bitola
-
-
-
-
- As unit [mm²]
-
-
-
-
- nº aprox.
-
-
-
-
- nº Barras
-
-
-
-
- s [cm]
-
-
- -
-
- 6.3
-
-
- -
-
- 31.17
-
-
- -
-
- 8
-
-
- -
-
- 50.26
-
-
- -
-
-
-
-
- -
-
- 10
-
-
- -
-
- 78.53
-
-
- -
-
- 12.5
-
-
- -
-
- 122.71
-
-
- -
-
- 16
-
-
- -
-
- 201.06
-
-
- -
-
- 25
-
-
- -
-
- 490.87
-
-
- -
-
- 32
-
-
- -
-
- 804.24
-
-
- -
-
- 40
-
-
- -
-
- 1256.63
-
-
-
-
-
-
- 420
- 190
- 75
- 23
-
-
-
- Cálcular
-
-
-
-
-
- 510
- 320
- 281
- 161
-
-
-
-
-
-
- 520
- 50
- 261
- 181
-
-
-
-
-
-
- secao_viga_detalhamento_infos.png.png
-
-
- true
-
-
-
-
-
- 420
- 220
- 75
- 23
-
-
-
- Limpar
-
-
-
-
-
- 40
- 50
- 191
- 111
-
-
-
- Seção
-
-
-
-
- 10
- 20
- 91
- 16
-
-
-
- Base - bw [cm]
-
-
-
-
-
- 100
- 50
- 81
- 20
-
-
-
- 0
-
-
-
-
-
- 10
- 80
- 91
- 16
-
-
-
- Cobrimento [cm]
-
-
-
-
-
- 100
- 80
- 81
- 22
-
-
- -
-
- 2
-
-
- -
-
- 3
-
-
- -
-
- 4
-
-
- -
-
- 5
-
-
-
-
-
-
- 10
- 50
- 91
- 16
-
-
-
- Altura - h [cm]
-
-
-
-
-
- 100
- 20
- 81
- 20
-
-
-
- 0
-
-
-
-
-
-
- 240
- 50
- 161
- 81
-
-
-
- Material
-
-
-
-
- 10
- 20
- 47
- 21
-
-
-
- Bitola
-
-
-
-
-
- 70
- 20
- 81
- 22
-
-
- -
-
- 6.3
-
-
- -
-
- 8
-
-
- -
-
- 10
-
-
- -
-
- 12.5
-
-
- -
-
- 16
-
-
- -
-
- 25
-
-
- -
-
- 32
-
-
- -
-
- 40
-
-
-
-
-
-
- 12
- 50
- 47
- 21
-
-
-
- φ agrg.
-
-
-
-
-
- 70
- 50
- 81
- 20
-
-
-
- 1.9
-
-
-
-
-
-
- 40
- 170
- 201
- 81
-
-
-
- Espaçamentos Calculados
-
-
-
-
- 20
- 20
- 71
- 21
-
-
-
- Horizontal [cm]
-
-
-
-
-
- 100
- 20
- 91
- 20
-
-
-
- 0
-
-
-
-
-
- 100
- 50
- 91
- 20
-
-
-
- 0
-
-
-
-
-
- 20
- 50
- 71
- 21
-
-
-
- Vertical [cm]
-
-
-
-
-
-
-
-
-
- PlotWidget
- QWidget
-
- 1
-
-
-
-
-
diff --git a/envoltorias_pilares.py b/envoltorias_pilares.py
deleted file mode 100644
index a219c1f..0000000
--- a/envoltorias_pilares.py
+++ /dev/null
@@ -1,84 +0,0 @@
-
-import pyqtgraph as pg
-import pyqtgraph.exporters
-import numpy as np
-import math
-
-momento_x_min = 45
-momento_x = 67
-momento_y_min = 30
-momento_y = 50
-'''
-theta = 30
-z = []
-w = []
-for theta in range(360):
- theta_conv = (theta*math.pi)/180
- seno = math.sin(theta_conv)
- cosseno = math.cos(theta_conv)
- z.append(seno)
- w.append(seno)
-
-print(z)
-print(w)
-'''
-
-x = []
-y = []
-for i in range(360):
- theta = i
- theta_conv = (theta*math.pi)/180
-
- seno = math.sin(theta_conv)
- seno = momento_y_min * seno
-
- cosseno = math.cos(theta_conv)
- cosseno = momento_x_min * cosseno
-
- x.append(seno)
- y.append(cosseno)
-
-z = []
-w = []
-for j in range(360):
- theta = j
- theta_conv = (theta*math.pi)/180
-
- seno = math.sin(theta_conv)
- seno = momento_y * seno
-
- cosseno = math.cos(theta_conv)
- cosseno = momento_x * cosseno
-
- z.append(seno)
- w.append(cosseno)
-
-# create plot
-'''plt = pg.plot(x, y, title='theTitle', pen='r')
-plt.showGrid(x=True,y=True)
-'''
-# create plot
-plt = pg.plot()
-plt.showGrid(x=True,y=True)
-plt.addLegend()
-
-# set properties
-plt.setLabel('left', 'Momentos Y', units='KN.m')
-plt.setLabel('bottom', 'Momentos X', units='KN.m')
-plt.setXRange(0,10)
-plt.setYRange(0,20)
-plt.setWindowTitle('pyqtgraph plot')
-
-plt.enableAutoRange()
-
-# plot
-c1 = plt.plot(x, y, pen='r', name='Envoltória Momentos min')
-c2 = plt.plot(z, w, pen='b', name='Envoltória Momentos máx')
-#c2 = plt.plot(x, y2, pen='r', symbol='o', symbolPen='r', symbolBrush=0.2, name='blue')
-
-
-## Start Qt event loop.
-if __name__ == '__main__':
- import sys
- if sys.flags.interactive != 1 or not hasattr(pg.QtCore, 'PYQT_VERSION'):
- pg.QtGui.QApplication.exec_()
\ No newline at end of file
diff --git a/gerador_abaco.py b/gerador_abaco.py
deleted file mode 100644
index 336a4d1..0000000
--- a/gerador_abaco.py
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
-import sys
-
-from PyQt5.uic import loadUi
-from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QMessageBox, QVBoxLayout, QHBoxLayout, QDialog, QMessageBox
-from PyQt5.QtGui import QPixmap, QIcon, QImage
-from PyQt5 import QtWidgets, QtGui, QtCore
-from PyQt5.QtWidgets import QTableWidget,QTableWidgetItem
-import pyqtgraph as pg
-
-tabela_bitolas = [
- [6.3, 31.17],
- [8, 50.26],
- [10, 78.53],
- [12.5, 122.71],
- [16, 201.06],
- [20, 314.15],
- [25, 490.87],
- [32, 804.24],
- [40, 1256.63]
- ]
-
-class Detalhar_viga(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.load_ui()
- self.load_signals()
-
- def load_ui(self):
- self.ui = loadUi('scrollAreaTeste.ui',self)
- self.show()
- def load_signals(self):
- print('inicializado')
- self.pushButton.clicked.connect(self.calcular_area)
-
- #pg.plot(x=[0,1,2,3,4], y=[0,1,2,3,4]**2 )
- header = self.tableWidget.horizontalHeader()
- header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
-
-
- def calcular_area(self):
- area_aco = float(self.lineEdit.text())
- x = []
- y = []
- cont = 0
- for i in tabela_bitolas:
- n_barras = float(area_aco/i[1])
- print('bitola: ',i[0],' - nº barras: ',n_barras)
-
- self.tableWidget.setItem(cont,2, QTableWidgetItem(str(round(n_barras, ndigits=2))))
- self.tableWidget.setItem(cont,3, QTableWidgetItem(str(round(n_barras +0.5)+1)))
-
- x.append(i[0])
- y.append(round(n_barras +0.5)+1)
- cont +=1
-
- print(x)
- print(y)
-
- self.widget.plot(x=x,y=y,pen=(3))
-
-
-if __name__ == '__main__':
- app = QtWidgets.QApplication(sys.argv)
- inicio = Detalhar_viga()
- app.exec_()
diff --git a/inicial.py b/inicial.py
deleted file mode 100644
index be38bf5..0000000
--- a/inicial.py
+++ /dev/null
@@ -1,2167 +0,0 @@
-
-
-import sys
-import os
-import math
-
-from PyQt5.uic import loadUi
-from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QMessageBox, QVBoxLayout, QHBoxLayout, QDialog, QMessageBox, QTableWidget, QTableWidgetItem
-from PyQt5.QtGui import QPixmap, QIcon, QImage
-from PyQt5 import QtWidgets, QtGui, QtCore
-import pyqtgraph as pg
-
-
-import marcus
-
-file = 'file:///C:/Users/Acer/Desktop/tessssst/sample.pdf'
-
-class Inicio(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = None
- self.load_ui()
- self.load_signals()
-
- def load_ui(self):
- self.ui = loadUi('inicio_alt.ui',self)
- self.label.setStyleSheet("Background-Color: #ddebff;")
-
- self.setWindowTitle('Navier - inicio')
-
- self.pushButton.setIcon(QtGui.QIcon('btn_inicio_vigas.png'))
- self.pushButton.setIconSize(QtCore.QSize(52,52))
- self.pushButton_3.setIcon(QtGui.QIcon('btn_inicio_pilares.png'))
- self.pushButton_3.setIconSize(QtCore.QSize(42,42))
- self.pushButton_9.setIcon(QtGui.QIcon('btn_inicio_lajes.png'))
- self.pushButton_9.setIconSize(QtCore.QSize(42,42))
- self.pushButton_11.setIcon(QtGui.QIcon('btn_inicio_fundacoes.png'))
- self.pushButton_11.setIconSize(QtCore.QSize(45,45))
-
- #self.tab_2.setStyleSheet("background: url('navier_logo.png') no-repeat contain")
- #self.tab_2.setStyleSheet("background-image: url(navier_logo.png); background-repeat: no-repeat; background-position: right bottom")
-
- self.label_5.setStyleSheet("Background-Color: #ddebff;")
- self.label_10.setStyleSheet("Background-Color: #ddebff;")
- self.label_9.setStyleSheet("Background-Color: #ddebff;")
- self.label_11.setStyleSheet("Background-Color: #ddebff;")
-
- self.pushButton_2.setIcon(QtGui.QIcon('btn_caa.png'))
- self.pushButton_2.setIconSize(QtCore.QSize(45,45))
- self.pushButton_5.setIcon(QtGui.QIcon('btn_cadicional.png'))
- self.pushButton_5.setIconSize(QtCore.QSize(45,45))
- self.pushButton_6.setIcon(QtGui.QIcon('btn_tabbitolas.png'))
- self.pushButton_6.setIconSize(QtCore.QSize(45,45))
- self.pushButton_7.setIcon(QtGui.QIcon('btn_tabmarcus.png'))
- self.pushButton_7.setIconSize(QtCore.QSize(45,45))
- self.pushButton_8.setIcon(QtGui.QIcon('btn_flexaosimples.png'))
- self.pushButton_8.setIconSize(QtCore.QSize(45,45))
- self.pushButton_23.setIcon(QtGui.QIcon('btn_flexaocomposta.png'))
- self.pushButton_23.setIconSize(QtCore.QSize(45,45))
-
- #self.textBrowser_14.hide()
- self.label_21.setToolTip('Brunel - programa de cálculo e verificação de perfis metálicos para perfis brasileiros')
- self.label_22.setToolTip('EngTool - aplicação mobile para cálculo de vigas de concreto armado')
-
- #self.scrollArea.setStyleSheet("background-color:transparent;")
- #self.scrollArea.setStyleSheet("QScrollArea {background-color:transparent;}");
- #self.scrollAreaContents.setStyleSheet("background-color:transparent;");
-
- self.setFixedSize(570, 450)
- self.show()
-
-
- def load_signals(self):
- self.pushButton.clicked.connect(self.iniciar_vigas)
- self.pushButton_3.clicked.connect(self.iniciar_pilares)
- self.pushButton_9.clicked.connect(self.iniciar_lajes)
- self.pushButton_11.clicked.connect(self.iniciar_fundacoes)
-
- self.pushButton_2.clicked.connect(self.iniciar_classe_agressividade)
- self.pushButton_5.clicked.connect(self.iniciar_carga_adicional)
- self.pushButton_6.clicked.connect(self.iniciar_tabela_bitolas)
-
- self.pushButton_7.clicked.connect(lambda: self.abrirTabelaAuxiliar(file))
- self.pushButton_8.clicked.connect(lambda: self.abrirTabelaAuxiliar(file))
-
-
- def abrirTabelaAuxiliar(self,file):
- if sys.platform == 'linux2':
- subprocess.call(["xdg-open", file])
- else:
- os.startfile(file)
-
- def iniciar_vigas(self):
- print('vigas')
- vigas.show()
- def iniciar_pilares(self):
- print('pilares')
- pilares.show()
- def iniciar_lajes(self):
- print('lajes')
- lajes.show()
- def iniciar_fundacoes(self):
- print('fundações')
- sapatas.show()
- #--------------------------- forms complementares -----------------------------
- def iniciar_carga_adicional(self):
- print('carga adicional')
- carga_adicional.show()
- def iniciar_tabela_bitolas(self):
- print('carga adicional')
- tabela_bitolas.show()
- def iniciar_classe_agressividade(self):
- print('classe de agressividade')
- tabela_classe_agressividade.show()
-
- '''def abrir_segunda(self):
- print('oi')
- gui2.hide()
- time.sleep(0.5)
- gui2.show()
- '''
-
-
-
-class Vigas(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = loadUi('vigas_alt.ui',self)
- self.load_signals()
-
- self.setWindowTitle('Navier - Vigas')
-
- def load_signals(self):
- print('viga carregado')
- self.pushButton.clicked.connect(lambda: self.stackedWidget.setCurrentIndex(1))
- self.pushButton_2.clicked.connect(lambda: self.stackedWidget.setCurrentIndex(0))
- self.pushButton_3.clicked.connect(lambda: detalhar_vigas.show())
-
- self.pushButton_6.clicked.connect(self.calcular_viga_index)
-
- self.radioButton.clicked.connect(lambda: self.lineEdit_35.setText('0.450'))
- self.radioButton_2.clicked.connect(lambda: self.lineEdit_35.setText('0.628'))
-
-
- def calcular_viga_index(self):
- aux = self.stackedWidget.currentIndex() #retorn o indice do stackedwidget e indica se o cálculo é de simples ou dupla
- #aux == 0 (Simples), aux == 1 (Dupla)
- if aux == 1:
- self.calcular_viga_simples()
- else:
- self.calcular_viga_dupla()
-
- def truncar(self,x):
- aux = '{:.9f}'.format(x)
- return aux
-
- def calcular_viga_cortante(self):
- aux = self.stackedWidget.currentIndex()
- fck_viga = float(self.comboBox.currentText())
- fcd_viga = fck_viga/1.4
- fyk_viga = float(self.comboBox_2.currentText())
- fyd_viga = fyk_viga/1.15
-
- mk_viga = float(self.lineEdit.text())
- vk_viga = float(self.lineEdit_2.text())
-
- if aux == 1:
- bw_viga = float(self.lineEdit_3.text())
- h_viga = float(self.lineEdit_4.text())
- d_viga = float(self.lineEdit_5.text())
-
- else:
- bw_viga = float(self.lineEdit_15.text())
- h_viga = float(self.lineEdit_16.text())
- d_viga = float(self.lineEdit_17.text())
-
-
- theta_transversal = 45
- alfa_transversal = 90
- if self.radioButton_4.isChecked():
- theta_transversal = self.spinBox.value()
-
- theta_transversal = (theta_transversal/180)*math.pi
- alfa_transversal = (alfa_transversal/180)*math.pi
-
- fator_cotangentes_transversal = ((math.cos(alfa_transversal)/math.sin(alfa_transversal))) + ((math.cos(theta_transversal)/math.sin(theta_transversal)))
- fator_cotangentes_transversal = 1
-
- vsd = vk_viga * 1.4
- vrd2 = 0.27 * (1-(fck_viga/250)) * (bw_viga/100) * fcd_viga * (d_viga/100) *(math.sin(2*theta_transversal))*fator_cotangentes_transversal * 1000
- print('VSD: ',vsd)
- print('VRD2: ',vrd2)
-
- if vrd2 < vsd:
- QMessageBox.about(self, "Alerta", "A seção de concreto não permite gerar bielas resistentes à compressão. Reveja as dimensões da viga ou esforços de cálculo para a estrutura.")
- else:
- vc_0 = 0.09*(fck_viga**(2/3))*(bw_viga/100)*(d_viga/100)*1000
- if self.radioButton_4.isChecked():
- vc_0 = vc_0*((vrd2 - vsd)/(vrd2 - vc_0))
-
- vsw = vsd - vc_0
-
- #as_transversal = (vsw/(0.9*(d_viga/100)*fyd_viga*fator_cotangentes_transversal*math.sin(alfa_transversal)))*1000
- as_transversal = (vsw/(0.9*(d_viga/100)*fyd_viga)*math.tan(theta_transversal))*1000
-
- taxa_aco_cortante_retangular = 0.2*(0.3*fck_viga**(2/3))/fyk_viga
-
- as_min_transversal = ((bw_viga*10)*taxa_aco_cortante_retangular)*1000 # para deixar em mm²
-
- print('vk_viga: ',vk_viga)
- print('vsd: ',vsd)
- print('vrd2: ',vrd2)
- print('vc_0: ',vc_0)
- print('vsw: ',vsw)
- print('as_transversal: ',as_transversal)
- print('taxa_aco_cortante_retangular: ',taxa_aco_cortante_retangular)
- print('as_min_transversal',as_min_transversal)
-
- #------------------------------------------- saida de dados --------------------------------------------------
- self.lineEdit_30.setText(str(round(vk_viga*1.4, ndigits=4)))
- self.lineEdit_31.setText(str(round(vrd2, ndigits=4)))
- self.lineEdit_32.setText(str(round(vc_0, ndigits=4)))
- self.lineEdit_33.setText(str(round(vsw, ndigits=4)))
-
- self.lineEdit_34.setText(str(round(as_transversal, ndigits=4)))
- self.lineEdit_37.setText(str(round(as_min_transversal, ndigits=4)))
-
-
- def calcular_viga_simples(self):
- mk_viga = self.lineEdit.text()
- vk_viga = self.lineEdit_2.text()
- bw_viga = self.lineEdit_3.text()
- h_viga = self.lineEdit_4.text()
- d_viga = self.lineEdit_5.text()
-
- if (mk_viga != '0' and vk_viga != '0' and bw_viga != '0' and h_viga != '0' and d_viga != '0'):
- fck_viga = float(self.comboBox.currentText())
- fcd_viga = fck_viga/1.4
- fyk_viga = float(self.comboBox_2.currentText())
- fyd_viga = fyk_viga/1.15
-
- mk_viga = float(self.lineEdit.text())
- vk_viga = float(self.lineEdit_2.text())
- bw_viga = float(self.lineEdit_3.text())
- h_viga = float(self.lineEdit_4.text())
- d_viga = float(self.lineEdit_5.text())
-
- d_linha_viga = h_viga - d_viga
- self.lineEdit_21.setText(str(round(d_linha_viga, ndigits=2)))
- area_secao_viga = bw_viga * h_viga
-
- kmd_viga = (mk_viga * 1.4 * 1000)/((bw_viga/100) * ((d_viga/100)**2) * (0.85*fcd_viga*1000000))
- if kmd_viga >0.5:
- QMessageBox.about(self, "Alerta", "Os esforços especificados não são suportados pela seção de concreto analisada. Por favor altera as dimensões da seção da viga ou reveja os esforços de cálculo para a estrutura.")
- else:
- kx_viga = (1 - math.sqrt(1 - 2*kmd_viga))/0.8
- kz_viga = 1 - 0.4*kx_viga
- as_viga = (mk_viga * 1.4 * 1000)/(kz_viga * (d_viga/100) * fyd_viga)
-
- as_sobre_apoio_viga = as_viga/3
- if h_viga >= 60:
- as_pele = (0.1/100)*area_secao_viga*100
- else:
- as_pele = 0
-
- as_max_viga = (4/100)*area_secao_viga*100
-
- if fck_viga == 20:
- taxa_aco_viga_retangular = 0.15/100
- elif fck_viga == 25:
- taxa_aco_viga_retangular = 0.15/100
- elif fck_viga == 30:
- taxa_aco_viga_retangular = 0.173/100
- elif fck_viga == 35:
- taxa_aco_viga_retangular = 0.201/100
- elif fck_viga == 40:
- taxa_aco_viga_retangular = 0.203/100
- elif fck_viga == 45:
- taxa_aco_viga_retangular = 0.259/100
- elif fck_viga == 50:
- taxa_aco_viga_retangular = 0.288/100
-
- as_min_viga = taxa_aco_viga_retangular * area_secao_viga*100
-
-
- if kx_viga < 0:
- dominio_viga = 'Domínio 1'
- elif kx_viga > 0 and kx_viga <0.259:
- dominio_viga = 'Domínio 2'
- elif kx_viga > 0.259 and kx_viga <0.45:
- dominio_viga = 'Domínio 3 - Dúctil'
- elif kx_viga > 0.45 and kx_viga <0.63:
- dominio_viga = 'Domínio 3 - Não Dúctil'
- elif (kx_viga > 0.628 and kx_viga <1):
- dominio_viga = 'Domínio 4a'
- elif (kx_viga > 0.438 and kx_viga <1) and (fyk_viga == 600):
- dominio_viga = 'Domínio 4a'
- else:
- dominio_viga = 'Domínio 4b'
-
- kmd_viga = self.truncar(kmd_viga)
- kx_viga = self.truncar(kx_viga)
- kz_viga = self.truncar(kz_viga)
-
- print('kmd_viga: ',kmd_viga)
- print('kx_viga: ',kx_viga)
- print('kz_viga: ',kz_viga)
- print('as_viga: ',as_viga)
- print('as_sobre_apoio_viga: ',as_sobre_apoio_viga)
- print('as_max_viga: ',as_max_viga)
- print('as_min_viga',as_min_viga)
-
- #-------------------------------------- saida de dados ------------------------------------------------
- self.lineEdit_6.setText(str(round(mk_viga*1.4,ndigits=4)))
- self.lineEdit_13.setText(dominio_viga)
- self.lineEdit_7.setText(str(kmd_viga))
- self.lineEdit_8.setText(str(kx_viga))
- self.lineEdit_9.setText(str(kz_viga))
-
- self.lineEdit_10.setText(str(round(as_viga,ndigits=4)))
- self.lineEdit_11.setText(str(round(as_sobre_apoio_viga,ndigits=4)))
- self.lineEdit_12.setText(str(round(as_pele,ndigits=4)))
- self.lineEdit_14.setText(str(round(as_max_viga,ndigits=4)))
- self.lineEdit_20.setText(str(round(as_min_viga,ndigits=4)))
-
- #-------------------------------------------------------------------------------------------------
- if (dominio_viga == 'Domínio 4a') or (dominio_viga == 'Domínio 4b'):
- QMessageBox.about(self, "Atenção", "Domínio de cálculo 4, recomenda-se utilizar, em seção retangular, armadura dupla ou seção tê para contenção dos esforços de compressão do concreto.")
-
- if as_viga > as_max_viga:
- QMessageBox.about(self, "Atenção", "Área Total calculada superior a Área Máxima especificada para a seção da viga.")
- if as_viga < as_min_viga:
- QMessageBox.about(self, "Atenção", "Área Total calculada inferior a Área Mínima especificada para a seção da viga.")
-
- self.calcular_viga_cortante()
-
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes!")
-
-
-
- def calcular_viga_dupla(self):
- mk_viga = self.lineEdit.text()
- vk_viga = self.lineEdit_2.text()
- bw_viga = self.lineEdit_15.text()
- h_viga = self.lineEdit_16.text()
- d_viga = self.lineEdit_17.text()
-
- if (mk_viga != '0' and vk_viga != '0' and bw_viga != '0' and h_viga != '0' and d_viga != '0'):
- fck_viga = float(self.comboBox.currentText())
- fcd_viga = fck_viga/1.4
- fyk_viga = float(self.comboBox_2.currentText())
- fyd_viga = fyk_viga/1.15
-
- mk_viga = float(self.lineEdit.text())
- vk_viga = float(self.lineEdit_2.text())
- bw_viga = float(self.lineEdit_15.text())
- h_viga = float(self.lineEdit_16.text())
- d_viga = float(self.lineEdit_17.text())
-
- d_linha_viga = h_viga - d_viga
- self.lineEdit_27.setText(str(round(d_linha_viga, ndigits=4)))
-
- xis_dominio = float(self.lineEdit_35.text())
-
- d_min_viga = math.sqrt((mk_viga*1.4*1000)/((bw_viga/100) * (fcd_viga*1000000) * (0.68*xis_dominio - 0.272*(xis_dominio**2))))
-
- x_lim_viga = xis_dominio * (d_viga/100)
-
- momento_lim_viga = 0.68 * (bw_viga/100) * (fcd_viga*1000) * x_lim_viga*((d_viga/100) - 0.4*x_lim_viga)
-
- print('d_min_viga: ',d_min_viga)
- print('x_lim_viga: ',x_lim_viga)
- print('momento_lim_viga: ',momento_lim_viga)
-
- if d_min_viga < (h_viga/100):
- self.lineEdit_36.setText(str(round(d_min_viga, ndigits=5)))
- self.lineEdit_18.setText(str(round(x_lim_viga, ndigits=5)))
- QMessageBox.about(self, "Observação", "A altura atual da viga é maior que a altura útil mínima, calcule como simplesmente armada")
-
- else:
-
- momento_lim_viga = 0.68 * (bw_viga/100) * (fcd_viga*1000) * x_lim_viga*((d_viga/100) - 0.4*x_lim_viga)
- momento_2_viga = (mk_viga*1.4) - momento_lim_viga
-
- as_compressao_viga = (momento_2_viga * 1000)/(((d_viga/100) - (d_linha_viga/100))*(fyd_viga))
- #as_tracao_viga = ((momento_lim_viga * 1000)/((1 - 0.4*x_lim_viga)*(d_viga/100)*fyd_viga))
- as_tracao_viga = ((momento_lim_viga * 1000)/((1 - 0.4*xis_dominio)*(d_viga/100)*fyd_viga))
-
- as_tracao_viga = as_tracao_viga + as_compressao_viga
-
- as_total_viga = as_tracao_viga + as_compressao_viga
-
- as_sobre_apoio_viga = as_tracao_viga/3
-
- area_secao_viga = bw_viga * h_viga
- if h_viga >= 60:
- as_pele = (0.1/100)*area_secao_viga*100
- else:
- as_pele = 0
-
- if fck_viga == 20:
- taxa_aco_viga_retangular = 0.15/100
- elif fck_viga == 25:
- taxa_aco_viga_retangular = 0.15/100
- elif fck_viga == 30:
- taxa_aco_viga_retangular = 0.173/100
- elif fck_viga == 35:
- taxa_aco_viga_retangular = 0.201/100
- elif fck_viga == 40:
- taxa_aco_viga_retangular = 0.203/100
- elif fck_viga == 45:
- taxa_aco_viga_retangular = 0.259/100
- elif fck_viga == 50:
- taxa_aco_viga_retangular = 0.288/100
-
- as_max_viga = (4/100)*area_secao_viga*100
- as_min_viga = taxa_aco_viga_retangular * area_secao_viga*100
-
-
- print('momento_lim_viga: ',momento_lim_viga)
- print('momento_2_viga: ',momento_2_viga)
- print('as_compressao_viga: ',as_compressao_viga)
- print('as_tracao_viga: ',as_tracao_viga)
-
-
- #------------------------------------------ saida de dados --------------------------------------------------
- self.lineEdit_36.setText(str(round(d_min_viga, ndigits=5)))
- self.lineEdit_18.setText(str(round(x_lim_viga, ndigits=5)))
- self.lineEdit_26.setText(str(round(momento_lim_viga, ndigits=5)))
- self.lineEdit_19.setText(str(round(momento_2_viga, ndigits=5)))
-
- self.lineEdit_22.setText(str(round(as_compressao_viga, ndigits=5)))
- self.lineEdit_28.setText(str(round(as_tracao_viga, ndigits=5)))
- self.lineEdit_23.setText(str(round(as_sobre_apoio_viga, ndigits=5)))
- self.lineEdit_24.setText(str(round(as_pele, ndigits=5)))
- self.lineEdit_38.setText(str(round(as_total_viga, ndigits=2)))
- self.lineEdit_25.setText(str(round(as_max_viga, ndigits=2)))
- self.lineEdit_29.setText(str(round(as_min_viga, ndigits=2)))
- #------------------------------------------ ------------- --------------------------------------------------
-
- if as_total_viga > as_max_viga:
- QMessageBox.about(self, "Atenção", "Área Total calculada superior a Área Máxima especificada para a seção da viga.")
- if as_total_viga < as_min_viga:
- QMessageBox.about(self, "Atenção", "Área Total calculada inferior a Área Mínima especificada para a seção da viga.")
-
- self.calcular_viga_cortante()
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes!")
-
-
-
-
-global pilares_info
-pilares_info = [0,0,0,0]
-
-global pilares_info_aco
-pilares_info_aco = [0, 0, 0, 0, 0, 0, 0]
-
-class Pilares(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = loadUi('pilares_alt.ui',self)
- self.load_signals()
-
- self.setWindowTitle('Navier - Pilares')
-
-
- def load_signals(self):
- print('pilares carregado')
- self.cont_x = 0
- self.cont_y = 0
- #self.pushButton.clicked.connect(self.pilar_alterar_tipo_engaste_x)
- #self.pushButton_2.clicked.connect(self.pilar_alterar_tipo_engaste_y)
- self.pushButton_6.clicked.connect(self.calcular_pilares)
- self.pushButton.clicked.connect(self.gerar_envoltoria)
- self.pushButton_3.clicked.connect(lambda: pilares_areas_aco.show())
-
-
- def calcular_pilares(self):
- x_pilar = self.lineEdit.text()
- y_pilar = self.lineEdit_2.text()
- altura_pilar = self.lineEdit_3.text()
- altura_lance = self.lineEdit_4.text()
-
- nk_pilar = self.lineEdit_5.text()
- momento_x_topo = self.lineEdit_6.text()
- momento_x_base = self.lineEdit_7.text()
- momento_y_topo = self.lineEdit_8.text()
- momento_y_base = self.lineEdit_9.text()
-
-
- if (x_pilar != '0' and y_pilar != '0' and altura_pilar != '0' and altura_lance != '0' and nk_pilar != '0'):
- fck_pilar = float(self.comboBox_3.currentText())
- fcd_pilar = fck_pilar/1.4
- fyk_pilar = float(self.comboBox_4.currentText())
- fyd_pilar = fyk_pilar/1.15
- cobrimento_pilar = float(self.comboBox_5.currentText())
-
- x_pilar = float(self.lineEdit.text())
- y_pilar = float(self.lineEdit_2.text())
- altura_pilar = float(self.lineEdit_3.text())
- altura_lance = float(self.lineEdit_4.text())
-
- nk_pilar = float(self.lineEdit_5.text())
- momento_x_topo = float(self.lineEdit_6.text())
- momento_x_base = float(self.lineEdit_7.text())
- momento_y_topo = float(self.lineEdit_8.text())
- momento_y_base = float(self.lineEdit_9.text())
-
- area_secao_pilar = (x_pilar/100)*(y_pilar/100)
-
- #nd_pilar = (nk_pilar + ((x_pilar/100)*(y_pilar/100)*altura_pilar*25)) * 1.4
- nd_pilar = (nk_pilar) * 1.4
- md_x_topo = 1.4 * momento_x_topo
- md_x_base = 1.4 * momento_x_base
- md_y_topo = 1.4 * momento_y_topo
- md_y_base = 1.4 * momento_y_base
-
- '''apoio_x = self.stackedWidget.currentIndex()
- if apoio_x == 0:
- tipo_apoio_x = 'AA'
- elif apoio_x == 1:
- tipo_apoio_x = 'EA'
- elif apoio_x == 2:
- tipo_apoio_x = 'EE'
- '''
-
- tipo_apoio_x = 'AA'
-
- if momento_x_topo == 0 and momento_x_base == 0 and momento_y_topo == 0 and momento_y_base == 0:
- self.tipo_pilar = 'intermediario'
- elif momento_x_topo == 0 and momento_x_base == 0:
- self.tipo_pilar = 'extremidade-x'
- elif momento_y_topo == 0 and momento_y_base == 0:
- self.tipo_pilar = 'extremidade-y'
- else:
- self.tipo_pilar = 'canto'
-
-
- self.lineEdit_13.setText(str(round(md_x_topo, ndigits=5)))
- self.lineEdit_14.setText(str(round(md_x_base, ndigits=5)))
- self.lineEdit_22.setText(str(round(md_y_topo, ndigits=5)))
- self.lineEdit_28.setText(str(round(md_y_base, ndigits=5)))
-
- #-Eixo-X----------------------------------------------------------------------
- b = y_pilar
- h = x_pilar
-
- m_a = max(md_x_topo, md_x_base)
- m_b = min(md_x_topo, md_x_base)
-
- if self.tipo_pilar == 'intermediario' or self.tipo_pilar == 'extremidade-x':
- alfa_b_x = 1.0
- else:
- alfa_b_x = (0.6 + 0.4*(m_b/m_a))
-
- if alfa_b_x < 0.4:
- alfa_b_x = 0.4
-
- #excen_min_x = (1.5+0.03*h)
- momento_min_x = (nd_pilar *(1.5+0.03*h))/100
- excen_min_x = momento_min_x/nd_pilar
-
- if md_x_topo < momento_min_x:
- md_x_topo = momento_min_x
- print('momento topo - mínimo')
- alfa_b_x = 1.0
- if md_x_base < momento_min_x:
- md_x_base = momento_min_x
- print('momento base - mínimo')
- alfa_b_x = 1.0
-
- compr_efetivo_x = (altura_pilar*100) + h
- if (altura_lance*100 < compr_efetivo_x):
- compr_efetivo_x = altura_lance*100
-
- excen_x_acidental = compr_efetivo_x/400
- v_0 = (nd_pilar*1000)/(area_secao_pilar * fcd_pilar*1000000)
-
- excentricidade_relativa = (max(md_x_topo,md_x_base,momento_min_x)/nd_pilar)/h
-
- lambda_pilar_x = 3.46 * (compr_efetivo_x/h)
- lambda_pilar_x_limite = (25 + 12.5*(excentricidade_relativa))/alfa_b_x
- if lambda_pilar_x_limite < 35:
- lambda_pilar_x_limite = 35
-
- excen_2_x = (compr_efetivo_x**2)/10 *(0.005/((v_0+0.5)*h))
-
- md2_x = nd_pilar * (excen_2_x/100)
-
- if lambda_pilar_x > lambda_pilar_x_limite:
- print('efeitos de 2 ordem considerados')
- excen_2 = (compr_efetivo_x**2)/10 *(0.005/((v_0+0.5)*h))
- md2_x_relativo = nd_pilar * (excen_2/100)
- else:
- md2_x_relativo = 0
- print('efeitos de 2 ordem desconsiderados')
-
- msd_x_intermediario = alfa_b_x * max(abs(md_x_topo), abs(md_x_base), abs(momento_min_x)) + md2_x_relativo
- #msd_x_intermediario = alfa_b_x * abs(momento_min_x) + md2_x_relativo
-
- mi_x = msd_x_intermediario/(h * area_secao_pilar * fcd_pilar)/10
- delta_x = cobrimento_pilar/h
-
-
- #-Eixo-Y----------------------------------------------------------------------
- h = y_pilar
- b = x_pilar
-
- m_a = max(md_y_topo, md_y_base)
- m_b = min(md_y_topo, md_y_base)
-
- if self.tipo_pilar == 'intermediario' or self.tipo_pilar == 'extremidade-y':
- alfa_b_y = 1.0
- else:
- alfa_b_y = (0.6 + 0.4*(m_b/m_a))
-
- if alfa_b_y < 0.4:
- alfa_b_y = 0.4
-
- momento_min_y = (nd_pilar *(1.5+0.03*h))/100
- excen_min_y = momento_min_y/nd_pilar
-
- if md_y_topo < momento_min_y:
- md_y_topo = momento_min_y
- print('momento topo - mínimo')
- alfa_b_y = 1.0
- if md_y_base < momento_min_y:
- md_y_base = momento_min_y
- print('momento base - mínimo')
- alfa_b_y = 1.0
-
- compr_efetivo_y = (altura_pilar*100) + h
- if (altura_lance*100 < compr_efetivo_y):
- compr_efetivo_y = altura_lance*100
-
- excen_y_acidental = compr_efetivo_y/400
- v_0 = (nd_pilar*1000)/(area_secao_pilar * fcd_pilar*1000000)
-
- excentricidade_relativa = (max(md_y_topo,md_y_base,momento_min_y)/nd_pilar)/h
-
- lambda_pilar_y = 3.46 * (compr_efetivo_y/h)
- lambda_pilar_y_limite = (25 + 12.5*(excentricidade_relativa))/alfa_b_y
- if lambda_pilar_y_limite < 35:
- lambda_pilar_y_limite = 35
-
- excen_2_y = (compr_efetivo_y**2)/10 *(0.005/((v_0+0.5)*h))
-
- md2_y = nd_pilar * (excen_2_y/100)
-
- if lambda_pilar_y > lambda_pilar_y_limite:
- print('efeitos de 2 ordem considerados')
- excen_2 = (compr_efetivo_y**2)/10 *(0.005/((v_0+0.5)*h))
- md2_y_relativo = nd_pilar * (excen_2/100)
- else:
- md2_y_relativo = 0
- print('efeitos de 2 ordem desconsiderados')
-
- msd_y_intermediario = alfa_b_y * max(abs(md_y_topo), abs(md_y_base), abs(momento_min_y)) + md2_y_relativo
- #msd_y_intermediario = alfa_b_y * abs(momento_min_y) + md2_y_relativo
-
- mi_y = msd_y_intermediario/(h * area_secao_pilar * fcd_pilar)/10
- delta_y = cobrimento_pilar/h
-
- #print('v_0: ',v_0)
- #print('excen_2_x: ',excen_2_x)
- #print('compr_efetivo_x: ',compr_efetivo_x)
- #print('alfa_b_x: ',alfa_b_x)
- #print('lambda_pilar_x: ',lambda_pilar_x)
- #print('lambda_pilar_x_limite: ',lambda_pilar_x_limite)
- #print('momento_min_x: ',momento_min_x)
- #print('md_x_topo: ',md_x_topo)
- #print('md_x_base: ',md_x_base)
- #print('msd_x_intermediario: ',msd_x_intermediario)
- #print('md2_x: ',md2_x)
- #print('--------------------------------------------------')
- #print('lambda_pilar_y: ',lambda_pilar_y)
- #print('lambda_pilar_y_limite: ',lambda_pilar_y_limite)
- #print('momento_min_y: ',momento_min_y)
- #print('md_y_topo: ',md_y_topo)
- #print('md_y_base: ',md_y_base)
- #print('msd_y_intermediario: ',msd_y_intermediario)
-
- #--------------------------------------------- saida de dados ---------------------------------------------
- self.lineEdit_10.setText(str(round(nd_pilar, ndigits=4)))
- self.lineEdit_11.setText(str(round(area_secao_pilar, ndigits=4)))
- self.lineEdit_12.setText(str(round(v_0, ndigits=4)))
-
- self.lineEdit_15.setText(str(round(momento_min_x, ndigits=5)))
- self.lineEdit_16.setText(str(round(excen_min_x*100, ndigits=5)))
- self.lineEdit_17.setText(str(round(lambda_pilar_x, ndigits=5)))
- self.lineEdit_18.setText(str(round(lambda_pilar_x_limite, ndigits=5)))
- self.lineEdit_19.setText(str(round(excen_2_x, ndigits=5)))
- self.lineEdit_20.setText(str(round(md2_x, ndigits=5)))
- self.lineEdit_21.setText(str(round(msd_x_intermediario, ndigits=5)))
-
- self.lineEdit_24.setText(str(round(momento_min_y, ndigits=5)))
- self.lineEdit_25.setText(str(round(excen_min_y*100, ndigits=5)))
- self.lineEdit_26.setText(str(round(lambda_pilar_y, ndigits=5)))
- self.lineEdit_23.setText(str(round(lambda_pilar_y_limite, ndigits=5)))
- self.lineEdit_30.setText(str(round(excen_2_y, ndigits=5)))
- self.lineEdit_29.setText(str(round(md2_y, ndigits=5)))
- self.lineEdit_27.setText(str(round(msd_y_intermediario, ndigits=5)))
-
- self.lineEdit_31.setText(str(round(mi_x, ndigits=2)))
- self.lineEdit_32.setText(str(round(mi_y, ndigits=2)))
- self.lineEdit_33.setText(str(round(delta_x, ndigits=2)))
- self.lineEdit_34.setText(str(round(delta_y, ndigits=2)))
-
- global pilares_info
- pilares_info = [msd_x_intermediario, msd_y_intermediario, momento_min_x, momento_min_y]
-
- if md2_x_relativo == 0:
- self.label_39.setText('não considera 2º ordem')
- else:
- self.label_39.setText('considera 2º ordem')
-
- if md2_y_relativo == 0:
- self.label_44.setText('não considera 2º ordem')
- else:
- self.label_44.setText('considera 2º ordem')
-
-
- if self.tipo_pilar == 'intermediario':
- self.label.setText('PILAR INTERMEDIÁRIO')
- elif (self.tipo_pilar == 'extremidade-x') or (self.tipo_pilar == 'extremidade-y'):
- self.label.setText('PILAR DE EXTREMIDADE')
- else:
- self.label.setText('PILAR DE CANTO')
-
- global pilares_info_aco
- pilares_info_aco = [mi_x, delta_x, mi_y, delta_y, fck_pilar, area_secao_pilar, nk_pilar]
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes!")
-
-
-
- def gerar_envoltoria(self):
- msd_x_intermediario = pilares_info[0]
- msd_y_intermediario = pilares_info[1]
- momento_min_x = pilares_info[2]
- momento_min_y = pilares_info[3]
-
- x = []
- y = []
- for i in range(360):
- theta = i
- theta_conv = (theta*math.pi)/180
-
- seno = math.sin(theta_conv)
- seno = momento_min_y * seno
-
- cosseno = math.cos(theta_conv)
- cosseno = momento_min_x * cosseno
-
- x.append(seno)
- y.append(cosseno)
-
- z = []
- w = []
- for j in range(360):
- theta = j
- theta_conv = (theta*math.pi)/180
-
- seno = math.sin(theta_conv)
- seno = msd_y_intermediario * seno
-
- cosseno = math.cos(theta_conv)
- cosseno = msd_x_intermediario * cosseno
-
- z.append(seno)
- w.append(cosseno)
-
- # create plot
- '''plt = pg.plot(x, y, title='theTitle', pen='r')
- plt.showGrid(x=True,y=True)
- '''
- # create plot
- plt = pg.plot()
- plt.clear()
- plt.showGrid(x=True,y=True)
- plt.addLegend()
- plt.setTitle('Envoltória de Momentos')
-
-
- # set properties
- plt.setLabel('left', 'Momentos Y', units='KN.m')
- plt.setLabel('bottom', 'Momentos X', units='KN.m')
- plt.setXRange(0,10)
- plt.setYRange(0,20)
-
-
- plt.enableAutoRange()
- plt.setWindowTitle('pyqtgraph plot')
- # plot
- c1 = plt.plot(x, y, pen='r', name='Envoltória Momentos min')
- c2 = plt.plot(z, w, pen='b', name='Envoltória Momentos máx')
-
-
-class Pilar_area_aco(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.load_ui()
- self.load_signals()
-
- def load_ui(self):
- self.ui = loadUi('pilares_areas_aco.ui',self)
- self.setWindowTitle('Navier - Pilares - Áreas de Aço')
-
- self.pushButton_4.setIcon(QtGui.QIcon('btn_flexaosimples.png'))
- self.pushButton_4.setIconSize(QtCore.QSize(50,60))
- self.pushButton_5.setIcon(QtGui.QIcon('btn_flexaocomposta.png'))
- self.pushButton_5.setIconSize(QtCore.QSize(50,60))
-
- def load_signals(self):
- print('inicializado')
- self.pushButton_2.clicked.connect(self.calcular_area_aco)
- self.pushButton.clicked.connect(self.recuperar_dados)
- self.pushButton_3.clicked.connect(self.limpar)
- self.pushButton_4.clicked.connect(lambda: self.abrirTabelaAuxiliar(file))
- self.pushButton_5.clicked.connect(lambda: self.abrirTabelaAuxiliar(file))
-
- def recuperar_dados(self):
- self.lineEdit_2.setText(str(round(pilares_info_aco[0], ndigits=2)))
- self.lineEdit_3.setText(str(round(pilares_info_aco[1], ndigits=2)))
- self.lineEdit_5.setText(str(round(pilares_info_aco[2], ndigits=2)))
- self.lineEdit_6.setText(str(round(pilares_info_aco[3], ndigits=2)))
- self.lineEdit_12.setText(str(round(pilares_info_aco[4], ndigits=2)))
- self.lineEdit_13.setText(str(round(pilares_info_aco[5], ndigits=2)))
- self.lineEdit_14.setText(str(round(pilares_info_aco[6], ndigits=2)))
-
- def calcular_area_aco(self):
- fck = float(self.lineEdit_12.text())
- fcd = fck/1.4
- fyd = 500/1.15
- area_concreto = float(self.lineEdit_13.text())
- nk = float(self.lineEdit_14.text())
- nd = 1.4 * nk
-
- mi_x = float(self.lineEdit_2.text())
- delta_x = float(self.lineEdit_3.text())
-
- mi_y = float(self.lineEdit_5.text())
- delta_y = float(self.lineEdit_6.text())
-
- omega_x = float(self.lineEdit_4.text())
- omega_y = float(self.lineEdit_7.text())
-
- as_x = (omega_x * (area_concreto*1000000) * fcd)/fyd
- as_y = (omega_y * (area_concreto*1000000) * fcd)/fyd
-
- as_x = round(as_x, ndigits=3)
- as_y = round(as_y, ndigits=3)
-
- as_pilar_min = 0.15 * (nd/fyd)
- if as_pilar_min < (0.004*area_concreto*100000):
- as_pilar_min = round((0.004*area_concreto*100000), ndigits=3)
-
- as_pilar_max = round((0.08*area_concreto*1000000), ndigits=3)
-
- #-------------------------------------- saída de dados ----------------------------------------------------
- self.lineEdit_8.setText(str(as_x))
- self.lineEdit_9.setText(str(as_y))
- self.lineEdit_10.setText(str(as_pilar_max))
- self.lineEdit_11.setText(str(as_pilar_min))
-
- def teste(self):
- print('teste')
-
- def limpar(self):
- self.lineEdit_2.setText('0')
- self.lineEdit_3.setText('0')
- self.lineEdit_4.setText('1')
- self.lineEdit_5.setText('0')
- self.lineEdit_6.setText('0')
- self.lineEdit_7.setText('1')
- self.lineEdit_8.setText('0')
- self.lineEdit_9.setText('0')
- self.lineEdit_10.setText('0')
- self.lineEdit_11.setText('0')
- self.lineEdit_12.setText('0')
- self.lineEdit_13.setText('0')
- self.lineEdit_14.setText('0')
-
- def abrirTabelaAuxiliar(self,file):
- if sys.platform == 'linux2':
- subprocess.call(["xdg-open", file])
- else:
- os.startfile(file)
-
-
-
-
-
-
-class Lajes(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = loadUi('lajes.ui',self)
-
- self.lado1 = 'livre'
- self.lado2 = 'livre'
- self.lado3 = 'livre'
- self.lado4 = 'livre'
- self.label_37.hide()
- self.label_38.hide()
- self.label_40.hide()
- self.label_41.hide()
- global caso
- caso = '1'
- global lx_lage
- lx_lage = 'l_menor'
- self.lineEdit.setReadOnly(True)
-
- self.load_signals()
-
- self.setWindowTitle('Navier - Lajes')
-
- def load_signals(self):
- print('lajes iniciado')
- self.pushButton.clicked.connect(self.estado_l1)
- self.pushButton_2.clicked.connect(self.estado_l2)
- self.pushButton_3.clicked.connect(self.estado_l3)
- self.pushButton_4.clicked.connect(self.estado_l4)
- self.pushButton.clicked.connect(self.situacao_laje)
- self.pushButton_2.clicked.connect(self.situacao_laje)
- self.pushButton_3.clicked.connect(self.situacao_laje)
- self.pushButton_4.clicked.connect(self.situacao_laje)
-
- self.pushButton_5.clicked.connect(self.teste)
- self.pushButton_6.clicked.connect(self.calcular_laje)
-
- self.toolButton.clicked.connect(self.revelar_carg_acidental)
-
- def teste(self):
- lado1 = float(self.lineEdit_3.text())
- lado2 = float(self.lineEdit_4.text())
- espes = float(self.lineEdit_5.text())
-
-
- pp = (espes * 25)/100
- self.lineEdit.setText(str(pp))
-
- def revelar_carg_acidental(self):
- print('oi--')
- carga_adicional.show()
-
- def estado_l1(self):
- if self.lado1 == 'livre':
- self.lado1 = 'engastado'
- pixmap = QPixmap('engv.png')
- self.pushButton.setIcon(QIcon(pixmap))
- else:
- self.lado1 = 'livre'
- pixmap = QPixmap('livv.png')
- self.pushButton.setIcon(QIcon(pixmap))
-
- def estado_l2(self):
- if self.lado2 == 'livre':
- self.lado2 = 'engastado'
- pixmap = QPixmap('engh.png')
- self.pushButton_2.setIcon(QIcon(pixmap))
- else:
- self.lado2 = 'livre'
- pixmap = QPixmap('livh.png')
- self.pushButton_2.setIcon(QIcon(pixmap))
-
- def estado_l3(self):
- if self.lado3 == 'livre':
- self.lado3 = 'engastado'
- pixmap = QPixmap('engh.png')
- self.pushButton_3.setIcon(QIcon(pixmap))
- else:
- self.lado3 = 'livre'
- pixmap = QPixmap('livh.png')
- self.pushButton_3.setIcon(QIcon(pixmap))
-
- def estado_l4(self):
- if self.lado4 == 'livre':
- self.lado4 = 'engastado'
- pixmap = QPixmap('engv.png')
- self.pushButton_4.setIcon(QIcon(pixmap))
- else:
- self.lado4 = 'livre'
- pixmap = QPixmap('livv.png')
- self.pushButton_4.setIcon(QIcon(pixmap))
-
- def situacao_laje(self):
- l1 = self.lado1
- l2 = self.lado2
- l3 = self.lado3
- l4 = self.lado4
-
- cota_v1 = self.label_37
- cota_v2 = self.label_40
- cota_h1 = self.label_38
- cota_h2 = self.label_41
-
- if (l1 == 'livre' and l2 == 'livre' and l3 == 'livre' and l4 == 'livre'):
- global caso
- caso = '1'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- global lx_lage
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'livre' and l3 == 'livre' and l4 == 'livre') or (l1 == 'livre' and l2 == 'livre' and l3 == 'livre' and l4 == 'engastado'):
- caso = '2'
-
- cota_v1.hide()
- cota_v2.hide()
- cota_h1.show()
- cota_h2.show()
-
- lx_lage = 'l_maior'
- elif (l1 == 'livre' and l2 == 'engastado' and l3 == 'livre' and l4 == 'livre') or (l1 == 'livre' and l2 == 'livre' and l3 == 'engastado' and l4 == 'livre') :
- caso = '2'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'engastado' and l3 == 'livre' and l4 == 'livre') or (l1 == 'engastado' and l2 == 'livre' and l3 == 'engastado' and l4 == 'livre') or (l1 == 'livre' and l2 == 'engastado' and l3 == 'livre' and l4 == 'engastado') or (l1 == 'livre' and l2 == 'livre' and l3 == 'engastado' and l4 == 'engastado'):
- caso = '3'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'livre' and l3 == 'livre' and l4 == 'engastado'):
- caso = '4'
-
- cota_v1.hide()
- cota_v2.hide()
- cota_h1.show()
- cota_h2.show()
-
- lx_lage = 'l_maior'
- elif (l1 == 'livre' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'livre'):
- caso = '4'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'livre' and l3 == 'engastado' and l4 == 'engastado') or (l1 == 'engastado' and l2 == 'engastado' and l3 == 'livre' and l4 == 'engastado'):
- caso = '5'
-
- cota_v1.hide()
- cota_v2.hide()
- cota_h1.show()
- cota_h2.show()
-
- lx_lage = 'l_maior'
- elif (l1 == 'livre' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'engastado') or (l1 == 'engastado' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'livre'):
- caso = '5'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'engastado'):
- caso = '6'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- else:
- caso='ainda não existe, não sei como você chegou até aqui srsrrsrsrsrsrs'
-
-
- print(caso)
- self.lineEdit_6.setText(str(caso))
-
- def calcular_laje(self):
- lado_maior = float(self.lineEdit_3.text())
- lado_menor = float(self.lineEdit_4.text())
- espes = float(self.lineEdit_5.text())
- d = float(self.lineEdit_27.text())
-
- self.lineEdit_7.setText('')
- self.lineEdit_9.setText('')
- self.lineEdit_8.setText('')
- self.lineEdit_10.setText('')
- self.lineEdit_16.setText('')
- self.lineEdit_14.setText('')
- self.lineEdit_15.setText('')
- self.lineEdit_16.setText('')
-
- if lado_maior != 0 and lado_menor != 0 and espes != 0 and d != 0:
- lado1 = float(self.lineEdit_3.text())
- lado2 = float(self.lineEdit_4.text())
- espes = float(self.lineEdit_5.text())
- d = float(self.lineEdit_27.text())
- carreg_adicional = float(self.lineEdit_2.text())
-
- pp = (espes * 25)/100
- self.lineEdit.setText(str(pp))
-
- carreg_total = pp + carreg_adicional
- #print(caso)
- #print(lx_lage)
- #---------------------------------- cálculo do Lx baseado no caso do tipo de situação da laje -----------------
- global lx
- global lambda_laje
- if lx_lage == 'l_menor':
- lx = lado2
- lambda_laje = round((lado1/lado2),ndigits=2)
- elif lx_lage == 'l_maior':
- lx = lado1
- lambda_laje = round((lado2/lado1),ndigits=2)
- print(lx_lage)
-
- #---------------------------------- definição se a laje é unidirecional ou bidirecional baseado no lambda -----------------
- global tipo_laje
- if float(lambda_laje) > 2.001:
- tipo_laje = 'UNIDIRECIONAL'
- self.laje_unidirecional(carreg_total)
- else:
- tipo_laje = 'BIDIRECIONAL'
- self.label_43.setStyleSheet("Background: url('laje_unidirecional_modelo.png') no-repeat")
-
- mx = my = nx = ny = ''
-
- if caso == '1':
- caso1 = marcus.caso1
- linhas = len(caso1)
- colunas = len(caso1[0])
-
- for i in range(linhas):
- aux = caso1[i][0]
- if lambda_laje == aux:
- print(caso1[i])
- mx = caso1[i][2]
- my = caso1[i][3]
-
- print('mx: ',mx)
- print('my: ',my)
-
- if caso == '2':
- caso2 = marcus.caso2
- linhas = len(caso2)
- colunas = len(caso2[0])
-
- for i in range(linhas):
- aux = caso2[i][0]
- if lambda_laje == aux:
- print(caso2[i])
- mx = caso2[i][2]
- nx = caso2[i][3]
- my = caso2[i][4]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
-
- if caso == '3':
- caso3 = marcus.caso3
- linhas = len(caso3)
- colunas = len(caso3[0])
-
- for i in range(linhas):
- aux = caso3[i][0]
- if lambda_laje == aux:
- print(caso3[i])
- mx = caso3[i][2]
- nx = caso3[i][3]
- my = caso3[i][4]
- ny = caso3[i][5]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
- print('ny: ',ny)
-
- if caso == '4':
- caso4 = marcus.caso4
- linhas = len(caso4)
- colunas = len(caso4[0])
-
- for i in range(linhas):
- aux = caso4[i][0]
- if lambda_laje == aux:
- print(caso4[i])
- mx = caso4[i][2]
- nx = caso4[i][3]
- my = caso4[i][4]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
-
- if caso == '5':
- caso5 = marcus.caso5
- linhas = len(caso5)
- colunas = len(caso5[0])
-
- for i in range(linhas):
- aux = caso5[i][0]
- if lambda_laje == aux:
- print(caso5[i])
- mx = caso5[i][2]
- nx = caso5[i][3]
- my = caso5[i][4]
- ny = caso5[i][5]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
- print('ny: ',ny)
-
- if caso == '6':
- caso6 = marcus.caso6
- linhas = len(caso6)
- colunas = len(caso6[0])
-
- for i in range(linhas):
- aux = caso6[i][0]
- if lambda_laje == aux:
- print(caso6[i])
- mx = caso6[i][2]
- nx = caso6[i][3]
- my = caso6[i][4]
- ny = caso6[i][5]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
- print('ny: ',ny)
-
- print(lx)
- if mx != '':
- self.lineEdit_7.setText(str(mx))
- momento_pos_x = ((carreg_total * (lx**2))/mx)
- momento_pos_x = round(momento_pos_x,ndigits=4)
- self.lineEdit_13.setText(str(momento_pos_x))
- #else:
- # self.lineEdit_13.setText('0')
- if nx != '':
- self.lineEdit_9.setText(str(nx))
- momento_neg_x = round(((carreg_total * (lx**2))/nx),ndigits=4)
- self.lineEdit_14.setText(str(momento_neg_x))
- #momento_neg_x = round(momento_neg_x,ndigits=2)
- #else:
- # self.lineEdit_14.setText('0')
- if my != '':
- self.lineEdit_8.setText(str(my))
- momento_pos_y = ((carreg_total * (lx**2))/my)
- momento_pos_y = round(momento_pos_y,ndigits=4)
- self.lineEdit_15.setText(str(momento_pos_y))
- #else:
- # self.lineEdit_15.setText('0')
- if ny != '':
- self.lineEdit_10.setText(str(ny))
- momento_neg_y = round(((carreg_total * (lx**2))/ny),ndigits=4)
- self.lineEdit_16.setText(str(momento_neg_y))
- #momento_neg_y = round(momento_neg_y,ndigits=2)
- #else:
- # self.lineEdit_16.setText('0')
-
-
- #----------------------------------- enviar resultados de saida ao programa ---------------------------------------
- self.lineEdit_11.setText(str(lambda_laje))
- self.label_16.setText(str(tipo_laje))
- self.lineEdit_12.setText(str(carreg_total))
-
- self.resultados_laje()
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes")
-
-
- def laje_unidirecional(self,carreg_total):
-
- #self.lineEdit_7.setText('')
- #self.lineEdit_9.setText('')
- #self.lineEdit_8.setText('')
- #self.lineEdit_10.setText('')
- #self.lineEdit_16.setText('')
- #self.lineEdit_13.setText('')
- #self.lineEdit_14.setText('')
- #self.lineEdit_15.setText('')
- #self.lineEdit_16.setText('')
-
- print('unidirecional')
- #l1 = self.lado1
- l2 = self.lado2
- l3 = self.lado3
- #l4 = self.lado4
- print(carreg_total)
- if (l2 == 'livre' and l3 == 'livre'):
- self.label_43.setStyleSheet("Background: url('laje_unidirecional_ll2.png') no-repeat")
- momento_pos_y = (carreg_total * (lx**2))/8
- momento_neg_y = 0
- elif (l2 == 'engastado' and l3 == 'engastado'):
- self.label_43.setStyleSheet("Background: url('laje_unidirecional_ee2.png') no-repeat")
- momento_pos_y = (carreg_total * (lx**2))/24
- momento_neg_y = (carreg_total * (lx**2))/12
- elif (l2 == 'engastado' and l3 == 'livre') or (l2 == 'livre' and l3 == 'engastado'):
- self.label_43.setStyleSheet("Background: url('laje_unidirecional_le2.png') no-repeat")
- momento_pos_y = (carreg_total * (lx**2))/14.2
- momento_neg_y = (carreg_total * (lx**2))/8
-
- print('momento_pos_y: ',momento_pos_y)
- print('momento_neg_y: ',momento_neg_y)
-
- #----------------------------------- enviar resultados de saida ao programa ---------------------------------------
- momento_pos_y = round(momento_pos_y,ndigits=4)
- self.lineEdit_15.setText(str(momento_pos_y))
- momento_neg_y = round(momento_neg_y,ndigits=4)
- self.lineEdit_16.setText(str(momento_neg_y))
-
- self.lineEdit_13.setText('0')
- self.lineEdit_14.setText('0')
-
- self.lineEdit_11.setText(str(lambda_laje))
- self.label_16.setText(str(tipo_laje))
- self.lineEdit_12.setText(str(carreg_total))
-
- self.resultados_laje()
-
- def truncar(self,x):
- aux = '{:.9f}'.format(x)
- return aux
-
- def resultados_laje(self):
-
- mx = self.lineEdit_13.text()
- if mx == '':
- self.lineEdit_13.setText('0')
-
- my = self.lineEdit_15.text()
- if my == '':
- self.lineEdit_15.setText('0')
-
- nx = self.lineEdit_14.text()
- if nx == '':
- self.lineEdit_14.setText('0')
-
- ny = self.lineEdit_16.text()
- if ny == '':
- self.lineEdit_16.setText('0')
-
- fck_laje = float(self.comboBox.currentText())
- fyk_laje = float(self.comboBox_2.currentText())
- fcd_laje = fck_laje * 1.4 * 1000000
- fyd_laje = fyk_laje * 1.4 * 1000000
- d_laje = float(self.lineEdit_27.text())
-
- mx = float(self.lineEdit_13.text())
- my = float(self.lineEdit_15.text())
- nx = float(self.lineEdit_14.text())
- ny = float(self.lineEdit_16.text())
- #print('mx: ',mx)
- #print('nx: ',nx)
- #print('my: ',my)
- #print('ny: ',ny)
- if mx > nx:
- mk_x = mx
- else:
- mk_x = nx
- if my > ny:
- mk_y = my
- else:
- mk_y = ny
-
- #print('mkx: ',mk_x)
- #print('mky: ',mk_y)
- md_x = round(1.4 * mk_x, ndigits = 4)
- kmd_x_laje = (md_x * 1000)/(1 * ((d_laje/100)**2) * 0.85 * (fcd_laje))
- kx_x_laje = (1 - math.sqrt(1 - 2*kmd_x_laje))/0.8
- kz_x_laje = 1 - 0.4 * kx_x_laje
-
- as_x_laje = (md_x * 1000/ (kz_x_laje * (d_laje/100) * fyd_laje))*100000
-
- print('md_x: ', md_x)
- print('kmd_x_laje: ', kmd_x_laje)
- print('kx_x_laje: ', kx_x_laje)
- print('kz_x_laje: ', kz_x_laje)
- print('as_x_laje: ', as_x_laje)
-
- md_y = round(1.4 * mk_y, ndigits = 4)
- kmd_y_laje = (md_y * 1000)/(1 * ((d_laje/100)**2) * 0.85 * (fcd_laje))
- kx_y_laje = (1 - math.sqrt(1 - 2*kmd_y_laje))/0.8
- kz_y_laje = 1 - 0.4 * kx_y_laje
-
- as_y_laje = (md_y * 1000/ (kz_y_laje * (d_laje/100) * fyd_laje))*100000
-
- print('md_y: ', md_y)
- print('kmd_y_laje: ', kmd_y_laje)
- print('kx_y_laje: ', kx_y_laje)
- print('kz_y_laje: ', kz_y_laje)
- print('as_y_laje: ', as_y_laje)
-
- #------------------------------------------ saida de dados ------------------------------------
- kmd_x_laje = self.truncar(kmd_x_laje)
- kx_x_laje = self.truncar(kx_x_laje)
- kz_x_laje = self.truncar(kz_x_laje)
- as_x_laje = self.truncar(as_x_laje)
-
- kmd_y_laje = self.truncar(kmd_y_laje)
- kx_y_laje = self.truncar(kx_y_laje)
- kz_y_laje = self.truncar(kz_y_laje)
- as_y_laje = self.truncar(as_y_laje)
-
- self.lineEdit_17.setText(str(md_x))
- self.lineEdit_18.setText(str(kmd_x_laje))
- self.lineEdit_19.setText(str(kx_x_laje))
- self.lineEdit_20.setText(str(kz_x_laje))
- self.lineEdit_21.setText(str(as_x_laje))
-
- self.lineEdit_22.setText(str(md_y))
- self.lineEdit_24.setText(str(kmd_y_laje))
- self.lineEdit_25.setText(str(kx_y_laje))
- self.lineEdit_26.setText(str(kz_y_laje))
- self.lineEdit_23.setText(str(as_y_laje))
-
-
-
-class Carga_Adicional(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
-
- self.ui = loadUi('lajes_carg_adicional.ui',self)
- #self.tableWidget.setRowCount(linhas)
- #self.tableWidget.setColumnCount(colunas)
- #table = self.tableWidget()
- #header = self.tableWidget.horizontalHeader()
- #header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)
- #header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
-
- header = self.tableWidget.horizontalHeader()
- header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
- header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
- self.tableWidget.resizeRowsToContents()
-
- self.setWindowTitle('Navier - Cargas Adicionais')
-
-class Sapatas(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = loadUi('sapatas_alt.ui',self)
- self.load_signals()
- self.setWindowTitle('Navier - Sapatas')
-
- def load_signals(self):
- print('sapatas carregado')
- self.pushButton_6.clicked.connect(self.calcular_sapata)
- self.pushButton.clicked.connect(self.gerar_dim_sapata)
-
- def arredondar_cinco(self, numero):
- numero = round(numero, ndigits=2)
- numero = 100*numero
- resto = numero%5
- while resto != 0:
- numero += 1
- resto = numero%5
- print('numero:',numero,' - resto: ',resto)
-
- numero = numero/100
- return numero
-
- def calcular_sapata(self):
-
- nk = float(self.lineEdit_3.text())
- momento_x_sapata = float(self.lineEdit_4.text())
- momento_y_sapata = float(self.lineEdit_5.text())
- x_pilar = float(self.lineEdit.text())
- y_pilar = float(self.lineEdit_2.text())
- tensao_adm_solo = float(self.lineEdit_35.text())
- fator_solo = float(self.lineEdit_13.text())
-
- base_y_sapata = float(self.lineEdit_10.text())
- base_x_sapata = float(self.lineEdit_9.text())
- h_total = float(self.lineEdit_11.text())
- h_0 = float(self.lineEdit_12.text())
-
- y_sapata = float(self.lineEdit_9.text())
- x_sapata = float(self.lineEdit_10.text())
- h_total = float(self.lineEdit_11.text())
- h_0 = float(self.lineEdit_12.text())
-
- if (nk != 0 and x_pilar != 0 and y_pilar != 0 and tensao_adm_solo != 0 and fator_solo != 0 and base_y_sapata != 0 and base_x_sapata != 0 and h_total != 0 and h_0 != 0):
- if (x_sapata < 0.6 or y_sapata < 0.6):
- QMessageBox.about(self, "Erro de Entrada", "As sapatas não podem apresentar lados menores de 60 cm, conforme a NBR 6122")
- else:
- fck_sapata = float(self.comboBox.currentText())
- fcd_sapata = fck_sapata / 1.4
- fyk_sapata = float(self.comboBox_2.currentText())
- fyd_sapata = fyk_sapata / 1.15
- nk = float(self.lineEdit_3.text())
- momento_x_sapata = float(self.lineEdit_4.text())
- momento_y_sapata = float(self.lineEdit_5.text())
- tensao_adm_solo = float(self.lineEdit_35.text())
- fator_solo = float(self.lineEdit_13.text())
- angulo_dissp_sapata = float(self.spinBox.value())
-
- angulo_dissp_sapata = (angulo_dissp_sapata / 180)* 3.14
-
- x_pilar = float(self.lineEdit.text())/100
- y_pilar = float(self.lineEdit_2.text())/100
-
- y_sapata = float(self.lineEdit_9.text())
- x_sapata = float(self.lineEdit_10.text())
- h_total = float(self.lineEdit_11.text())
- h_0 = float(self.lineEdit_12.text())
-
- if (momento_x_sapata != 0 and momento_y_sapata == 0) or (momento_x_sapata == 0 and momento_y_sapata != 0):
- fator_acrescimo_dimensoes = 1.05
- elif (momento_x_sapata != 0 and momento_y_sapata != 0):
- fator_acrescimo_dimensoes = 1.103
- else:
- fator_acrescimo_dimensoes = 1.0
-
- x_sapata = round(x_sapata * fator_acrescimo_dimensoes, ndigits=4)
- y_sapata = round(y_sapata * fator_acrescimo_dimensoes, ndigits=4)
-
- wx = x_sapata * (y_sapata**2)/6
- wy = y_sapata * (x_sapata**2)/6
-
- mw_x = (momento_x_sapata/wx)*1000
- mw_y = (momento_y_sapata/wy)*1000
-
- tensao_sapata = (fator_solo*nk*1000)/(x_sapata*y_sapata)
- tensao_max_sapata = tensao_sapata + mw_x + mw_y
- tensao_min_sapata = tensao_sapata - mw_x - mw_y
-
- nk_equiv = (x_sapata * y_sapata * tensao_max_sapata)/fator_solo
- area_sapata = round(fator_solo * ((nk*1000)/(tensao_adm_solo*1000000)),ndigits=6)
-
- ca_sapata = (x_sapata - x_pilar)/2
- cb_sapata = (y_sapata - y_pilar)/2
- h_rig_x = 2/3 * ca_sapata
- h_rig_y = 2/3 * cb_sapata
-
- h_mincis = (1.4 * nk_equiv)/(2*(x_pilar+y_pilar)*0.27*(1-(fck_sapata/250))*(fcd_sapata*1000000))
- if h_mincis < 0.40:
- h_mincis = 0.40
- if h_total < h_mincis:
- h_total = h_mincis
-
- braco_alavanca_sapata = h_total - 0.05
-
- h0a = h_total - ca_sapata * math.tan(angulo_dissp_sapata)
- h0b = h_total - cb_sapata * math.tan(angulo_dissp_sapata)
-
- #h0 = round(h0a, ndigits=2)
- #if h0a < h0b:
- # h0 = round(h0b, ndigits=2)
-
- volume_concreto_sapata = (h_total-h_0)/(3*(x_sapata*y_sapata+x_pilar*y_pilar+math.sqrt(x_sapata*y_sapata*x_pilar*y_pilar))+x_sapata*y_sapata*h_0)
-
- tracao_x_sapata = 1.1 * nk_equiv * (x_sapata - x_pilar)/(8 * braco_alavanca_sapata)
- tracao_y_sapata = 1.1 * nk_equiv * (y_sapata - y_pilar)/(8 * braco_alavanca_sapata)
- as_x_sapata = (1.4 * tracao_x_sapata)/(fyd_sapata)
- as_y_sapata = (1.4 * tracao_y_sapata)/fyd_sapata
-
- taxa_aco_sapata = (0.078 * (fck_sapata)**(2/3))/fyd_sapata
-
- if taxa_aco_sapata <= 0.0015:
- taxa_aco_sapata = 0.0015
-
- as_x_min_laje = 0.67 * taxa_aco_sapata * h_mincis * x_sapata
- as_y_min_laje = 0.67 * taxa_aco_sapata * h_mincis * y_sapata
-
- print('x_sapata: ',x_sapata)
- print('y_sapata: ',y_sapata)
-
- print('wx: ',wx)
- print('wy: ',wy)
- print('mw_x: ',mw_x)
- print('mw_y: ',mw_y)
- print('tensao_max_sapata: ',tensao_max_sapata)
- print('tensao_min_sapata: ',tensao_min_sapata)
- print('nk_equiv: ',nk_equiv)
- print('ca_sapata: ',ca_sapata)
- print('cb_sapata: ',cb_sapata)
- print('h0a: ',h0a)
- print('h0b: ',h0b)
- print('h_mincis: ',h_mincis)
- #print('h0: ',h0)
- print('h_total',h_total)
- print('-------------------------------------\n')
-
- #-------------------------------------- saida dos dados --------------------------------------------------
- self.lineEdit_11.setText(str(h_total))
- #self.lineEdit_12.setText(str(h0))
-
- self.lineEdit_15.setText(str(area_sapata))
- self.lineEdit_16.setText(str(round(wx, ndigits=6)))
- self.lineEdit_17.setText(str(round(wy, ndigits=6)))
- self.lineEdit_18.setText(str(round(nk_equiv, ndigits=4)))
- self.lineEdit_19.setText(str(round(tensao_max_sapata/1000000, ndigits=4)))
- self.lineEdit_20.setText(str(round(tensao_min_sapata/1000000, ndigits=4)))
- self.lineEdit_21.setText(str(round(ca_sapata*100, ndigits=4)))
- self.lineEdit_22.setText(str(round(cb_sapata*100, ndigits=4)))
-
- self.lineEdit_23.setText(str(round(h_rig_x*100, ndigits=4)))
- self.lineEdit_24.setText(str(round(h_rig_y*100, ndigits=4)))
- self.lineEdit_25.setText(str(round(h_mincis*100, ndigits=4)))
- self.lineEdit_26.setText(str(round(h0a*100, ndigits=4)))
- self.lineEdit_28.setText(str(round(h0b*100, ndigits=4)))
- self.lineEdit_27.setText(str(round(volume_concreto_sapata, ndigits=4)))
-
- self.lineEdit_14.setText(str(round(tracao_x_sapata/1000, ndigits=4)))
- self.lineEdit_29.setText(str(round(tracao_y_sapata/1000, ndigits=4)))
- self.lineEdit_30.setText(str(round(as_x_sapata, ndigits=4)))
- self.lineEdit_31.setText(str(round(as_y_sapata, ndigits=4)))
-
- self.lineEdit_32.setText(str(round(taxa_aco_sapata, ndigits=7)))
- self.lineEdit_33.setText(str(round(as_x_min_laje*1000000, ndigits=4)))
- self.lineEdit_34.setText(str(round(as_y_min_laje*1000000, ndigits=4)))
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes")
-
-
-
- def gerar_dim_sapata(self):
-
- nk = float(self.lineEdit_3.text())
- momento_x_sapata = float(self.lineEdit_4.text())
- momento_y_sapata = float(self.lineEdit_5.text())
- x_pilar = float(self.lineEdit.text())
- y_pilar = float(self.lineEdit_2.text())
- tensao_adm_solo = float(self.lineEdit_35.text())
- fator_solo = float(self.lineEdit_13.text())
-
-
- if (nk != 0 and x_pilar != 0 and y_pilar != 0 and tensao_adm_solo != 0 and fator_solo != 0):
-
- fck_sapata = float(self.comboBox.currentText())
- fcd_sapata = fck_sapata / 1.4
- fyk_sapata = float(self.comboBox_2.currentText())
- fyd_sapata = fyk_sapata / 1.15
- nk = float(self.lineEdit_3.text())
- momento_x_sapata = float(self.lineEdit_4.text())
- momento_y_sapata = float(self.lineEdit_5.text())
- tensao_adm_solo = float(self.lineEdit_35.text())
- fator_solo = float(self.lineEdit_13.text())
- angulo_dissp_sapata = float(self.spinBox.value())
-
- angulo_dissp_sapata = (angulo_dissp_sapata / 180)* 3.14
-
- x_pilar = float(self.lineEdit.text())/100
- y_pilar = float(self.lineEdit_2.text())/100
-
- area_sapata = round(fator_solo * ((nk*1000)/(tensao_adm_solo*1000000)),ndigits=6)
-
- y_sapata = 0.5*(y_pilar - x_pilar) + math.sqrt(0.25*((y_pilar - x_pilar)**2)+area_sapata)
-
- x_sapata = area_sapata/y_sapata
-
- if (momento_x_sapata != 0 and momento_y_sapata == 0) or (momento_x_sapata == 0 and momento_y_sapata != 0):
- fator_acrescimo_dimensoes = 1.05
- elif (momento_x_sapata != 0 and momento_y_sapata != 0):
- fator_acrescimo_dimensoes = 1.103
- else:
- fator_acrescimo_dimensoes = 1.0
-
- x_sapata = round(x_sapata * fator_acrescimo_dimensoes, ndigits=4)
- y_sapata = round(y_sapata * fator_acrescimo_dimensoes, ndigits=4)
-
- if x_sapata < 0.6:
- x_sapata = 0.6
- if y_sapata < 0.6:
- y_sapata = 0.6
- print(x_sapata,'<--------------------------------------------------')
- wx = x_sapata * (y_sapata**2)/6
- wy = y_sapata * (x_sapata**2)/6
-
- mw_x = (momento_x_sapata/wx)*1000
- mw_y = (momento_y_sapata/wy)*1000
-
- tensao_sapata = (fator_solo*nk*1000)/(x_sapata*y_sapata)
- tensao_max_sapata = tensao_sapata + mw_x + mw_y
- tensao_min_sapata = tensao_sapata - mw_x - mw_y
-
- x_sapata = self.arredondar_cinco(x_sapata)
- y_sapata = self.arredondar_cinco(y_sapata)
- if x_sapata < 0.6:
- x_sapata = 0.6
- if y_sapata < 0.6:
- y_sapata = 0.6
-
- nk_equiv = (x_sapata * y_sapata * tensao_max_sapata)/fator_solo
-
- ca_sapata = (x_sapata - x_pilar)/2
- cb_sapata = (y_sapata - y_pilar)/2
- h_rig_x = 2/3 * ca_sapata
- h_rig_y = 2/3 * cb_sapata
-
- h_total = h_rig_x
- if h_total < h_rig_y:
- h_total = h_rig_y
-
- h_mincis = (1.4 * nk_equiv)/(2*(x_pilar+y_pilar)*0.27*(1-(fck_sapata/250))*(fcd_sapata*1000000))
- if h_mincis < 0.40:
- h_mincis = 0.40
- h_mincis = round(h_mincis, ndigits=4)
-
- if h_total < h_mincis:
- h_total = h_mincis
-
- h_total = self.arredondar_cinco(h_total)
-
- h0a = h_total - ca_sapata * math.tan(angulo_dissp_sapata)
- h0b = h_total - cb_sapata * math.tan(angulo_dissp_sapata)
- h0_prerrogativo = h_total/3
- tangente_angulo = math.tan(angulo_dissp_sapata)
- h0 = round(h0a, ndigits=2)
- if h0a < h0b:
- h0 = round(h0b, ndigits=2)
- elif h0b < h0_prerrogativo:
- h0 = h0_prerrogativo
- if h0 < 0.25:
- h0 = 0.25
- h0 = self.arredondar_cinco(h0)
-
- volume_concreto_sapata = ((h_total-h0)/3*(x_sapata*y_sapata+x_pilar*y_pilar+math.sqrt(x_sapata*y_sapata*x_pilar*y_pilar)))+(x_sapata*y_sapata*h0)
-
- braco_alavanca_sapata = h_total - 0.05
-
- tracao_x_sapata = 1.1 * nk_equiv * (x_sapata - x_pilar)/(8 * braco_alavanca_sapata)
- tracao_y_sapata = 1.1 * nk_equiv * (y_sapata - y_pilar)/(8 * braco_alavanca_sapata)
- as_x_sapata = (1.4 * tracao_x_sapata)/(fyd_sapata)
- as_y_sapata = (1.4 * tracao_y_sapata)/fyd_sapata
-
- taxa_aco_sapata = (0.078 * (fck_sapata)**(2/3))/fyd_sapata
-
- if taxa_aco_sapata <= 0.0015:
- taxa_aco_sapata = 0.0015
-
- as_x_min_laje = 0.67 * taxa_aco_sapata * h_total * x_sapata
- as_y_min_laje = 0.67 * taxa_aco_sapata * h_total * y_sapata
-
- print('x_sapata: ',x_sapata)
- print('y_sapata: ',y_sapata)
-
- print('wx: ',wx)
- print('wy: ',wy)
- print('mw_x: ',mw_x)
- print('mw_y: ',mw_y)
- print('tensao_max_sapata: ',tensao_max_sapata)
- print('tensao_min_sapata: ',tensao_min_sapata)
- print('nk_equiv: ',nk_equiv)
- print('ca_sapata: ',ca_sapata)
- print('cb_sapata: ',cb_sapata)
- print('h0a: ',h0a)
- print('h0b: ',h0b)
- print('h_mincis: ',h_mincis)
- print('h0: ',h0)
- print('tangente_angulo: ',tangente_angulo)
- print('----------')
- print('h_total: ',h_total)
- print('tracao_x_sapata: ',tracao_x_sapata)
- print('tracao_y_sapata: ',tracao_y_sapata)
- print('as_x_sapata: ',as_x_sapata)
- print('as_y_sapata: ',as_y_sapata)
- print('taxa_aco_sapata: ',taxa_aco_sapata)
- print('as_x_min_laje: ',as_x_min_laje)
- print('as_y_min_laje: ',as_y_min_laje)
- print('-------------------------------------\n')
- #------------------------------ saida de dados ---------------------------------------------
- self.lineEdit_9.setText(str(y_sapata))
- self.lineEdit_10.setText(str(x_sapata))
- self.lineEdit_15.setText(str(area_sapata))
-
- self.lineEdit_11.setText(str(round(h_total, ndigits=4)))
- self.lineEdit_12.setText(str(round(h0, ndigits=4)))
-
-
- self.lineEdit_15.setText(str(area_sapata))
- self.lineEdit_16.setText(str(round(wx, ndigits=6)))
- self.lineEdit_17.setText(str(round(wy, ndigits=6)))
- self.lineEdit_18.setText(str(round(nk_equiv, ndigits=4)))
- self.lineEdit_19.setText(str(round(tensao_max_sapata/1000000, ndigits=4)))
- self.lineEdit_20.setText(str(round(tensao_min_sapata/1000000, ndigits=4)))
- self.lineEdit_21.setText(str(round(ca_sapata*100, ndigits=4)))
- self.lineEdit_22.setText(str(round(cb_sapata*100, ndigits=4)))
-
- self.lineEdit_23.setText(str(round(h_rig_x*100, ndigits=4)))
- self.lineEdit_24.setText(str(round(h_rig_y*100, ndigits=4)))
- self.lineEdit_25.setText(str(round(h_mincis*100, ndigits=4)))
- self.lineEdit_26.setText(str(round(h0a*100, ndigits=4)))
- self.lineEdit_28.setText(str(round(h0b*100, ndigits=4)))
- self.lineEdit_27.setText(str(round(volume_concreto_sapata, ndigits=4)))
-
- self.lineEdit_14.setText(str(round(tracao_x_sapata/1000, ndigits=4)))
- self.lineEdit_29.setText(str(round(tracao_y_sapata/1000, ndigits=4)))
- self.lineEdit_30.setText(str(round(as_x_sapata, ndigits=4)))
- self.lineEdit_31.setText(str(round(as_y_sapata, ndigits=4)))
-
- self.lineEdit_32.setText(str(round(taxa_aco_sapata, ndigits=7)))
- self.lineEdit_33.setText(str(round(as_x_min_laje*1000000, ndigits=4)))
- self.lineEdit_34.setText(str(round(as_y_min_laje*1000000, ndigits=4)))
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes")
-
-
-class App2(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.setGeometry(400, 100, 200, 200)
- self.editor = QtWidgets.QTextEdit('Achou', self)
- self.editor.setGeometry(20, 20, 160, 160)
-
-#---------------------------------------------- Janelas de Detalhamento ----------------------------------------------------
-tabela_bitolas_ferro = [
- [6.3, 31.17],
- [8, 50.26],
- [10, 78.53],
- [12.5, 122.71],
- [16, 201.06],
- [20, 314.15],
- [25, 490.87],
- [32, 804.24],
- [40, 1256.63]
- ]
-
-'''class Detalhar_viga(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.load_ui()
- self.load_signals()
-
- def load_ui(self):
- self.ui = loadUi('detalhamento_vigas.ui',self)
- self.setWindowTitle('Navier - Vigas - Detalhamento')
- def load_signals(self):
- print('inicializado')
- self.pushButton.clicked.connect(self.calcular_area)
- self.pushButton_2.clicked.connect(self.limpar_detalhamento)
-
- #pg.plot(x=[0,1,2,3,4], y=[0,1,2,3,4]**2 )
- header = self.tableWidget.horizontalHeader()
- header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
- header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(3, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(4, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(5, QtWidgets.QHeaderView.Stretch)
-
- self.widget.setTitle('Nº barras/Bitola')
- self.widget.showGrid(x=True,y=True,alpha=1)
-
-
- def calcular_area(self):
- area_aco = self.lineEdit.text()
- base = self.lineEdit_2.text()
- altura = self.lineEdit_3.text()
- d_agreg = self.lineEdit_4.text()
-
- if (area_aco != '0' and base != '0' and altura != '0' and d_agreg != '0'):
-
- self.widget.clear()
- area_aco = float(self.lineEdit.text())
- base = float(self.lineEdit_2.text())
- altura = float(self.lineEdit_3.text())
- cobrimento = float(self.comboBox.currentText())
- x = []
- y = []
- z = []
- cont = 0
- for i in tabela_bitolas_ferro:
- n_barras = float(area_aco/i[1])
- print('bitola: ',i[0],' - nº barras: ',n_barras)
-
- self.tableWidget.setItem(cont,2, QTableWidgetItem(str(round(n_barras, ndigits=2))))
- self.tableWidget.setItem(cont,3, QTableWidgetItem(str(round(n_barras +0.5)+1)))
-
- x.append(i[0])
- y.append(round(n_barras +0.5)+1)
-
- bitola = x[cont]
- n_barras = (round(n_barras +0.5)+1)
-
- espass_horizontal = (round(base - 2*(cobrimento+0.5) - n_barras*(bitola/10), ndigits=2))/(n_barras-1)
- z.append(round(espass_horizontal,ndigits=2))
- self.tableWidget.setItem(cont,4, QTableWidgetItem(str(espass_horizontal)))
-
- cont +=1
-
- print(x)
- print(y)
- print(z)
-
- self.widget.plot(x=x,y=y,pen=(3))
-
- self.calcular_espacamentos()
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes!")
-
-
- def calcular_espacamentos(self):
- bitola = float(self.comboBox_2.currentText())
- d_agreg = float(self.lineEdit_4.text())
-
- s_horizontal = max(2, (bitola/10), 1.2*d_agreg)
- s_vertical = max(2, (bitola/10), 0.5*d_agreg)
-
- #------------------------------- saida de dados ----------------------------------
- self.lineEdit_5.setText(str(s_horizontal))
- self.lineEdit_6.setText(str(s_vertical))
-
- def limpar_detalhamento(self):
- self.widget.clear()
- self.lineEdit.setText(str('0'))
- self.lineEdit_2.setText(str('0'))
- self.lineEdit_3.setText(str('0'))
- self.lineEdit_5.setText(str('0'))
- self.lineEdit_4.setText(str('0'))
-'''
-
-tabela_bitolas_ferro = [
- [6.3, 31.17],
- [8, 50.26],
- [10, 78.53],
- [12.5, 122.71],
- [16, 201.06],
- [20, 314.15],
- [25, 490.87],
- [32, 804.24],
- [40, 1256.63]
- ]
-info_viga = ['95','12','45','40','1.9']
-
-class Detalhar_viga(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.load_ui()
- self.load_signals()
-
- def load_ui(self):
- self.ui = loadUi('detalhamento_vigas_alt.ui',self)
- self.setWindowTitle('Navier - Vigas - Detalhamento')
- #self.show()
- def load_signals(self):
- print('inicializado')
- self.pushButton.clicked.connect(self.calcular_area)
- #self.pushButton.clicked.connect(self.calcular_estribos)
- self.pushButton_2.clicked.connect(self.limpar_detalhamento)
- self.pushButton_3.clicked.connect(self.recuperarValores)
-
-
- #pg.plot(x=[0,1,2,3,4], y=[0,1,2,3,4]**2 )
- header = self.tableWidget.horizontalHeader()
- header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
- header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(3, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(4, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(5, QtWidgets.QHeaderView.Stretch)
-
- self.widget.setTitle('nº barras/Bitola')
- self.widget.showGrid(x=True,y=True,alpha=1)
-
- #if '0' not in info_viga:
- # self.recuperarValores()
-
- def calcular_estribos(self):
- vsw = self.lineEdit_14.text()
- fyk_estribo = self.comboBox_2.currentText()
- tramos = self.lineEdit_15.text()
-
- if (vsw != '0' and tramos != '0'):
- vsw = float(self.lineEdit_14.text())
- bitola_estribo = float(self.comboBox.currentText())
- fyk_estribo = float(self.comboBox_2.currentText())
- tramos = float(self.lineEdit_15.text())
- d = float(self.lineEdit_13.text())
-
- area_bitola = (3.14*((bitola_estribo/1000)**2)/4)
-
- print(vsw)
- print(bitola_estribo)
- print(tramos)
- print(fyk_estribo)
- print(area_bitola)
-
-
- s_estribo = ((tramos * area_bitola * 0.9 * (d/100) * (fyk_estribo*100000/1.15))/vsw*1000)/100
- s_estribo = round(s_estribo, ndigits=3)
-
- self.lineEdit.setText(str(s_estribo))
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes para o cálculo dos Estribos!")
-
-
- def recuperarValores(self):
- area_aco = info_viga[0]
- base = info_viga[1]
- altura = info_viga[2]
- d = info_viga[3]
- d_agreg = info_viga[4]
-
- self.lineEdit_11.setText(area_aco)
- self.lineEdit_10.setText(base)
- self.lineEdit_9.setText(altura)
- self.lineEdit_12.setText(d_agreg)
- self.lineEdit_13.setText(d)
-
- def calcular_area(self):
- area_aco = self.lineEdit_11.text()
- base = self.lineEdit_10.text()
- altura = self.lineEdit_9.text()
- d_agreg = self.lineEdit_12.text()
- d = self.lineEdit_13.text()
-
- if (area_aco != '0' and base != '0' and altura != '0' and d_agreg != '0' and d != '0'):
-
- self.widget.clear()
- area_aco = float(self.lineEdit_11.text())
- base = float(self.lineEdit_10.text())
- altura = float(self.lineEdit_9.text())
- cobrimento = float(self.comboBox_3.currentText())
- bitola_estribo = float(self.comboBox.currentText())
- x = []
- y = []
- z = []
- cont = 0
- for i in tabela_bitolas_ferro:
- n_barras = float(area_aco/i[1])
- print('bitola: ',i[0],' - nº barras: ',n_barras)
-
- self.tableWidget.setItem(cont,2, QTableWidgetItem(str(round(n_barras, ndigits=2))))
- self.tableWidget.setItem(cont,3, QTableWidgetItem(str(round(n_barras +0.5)+1)))
-
- x.append(i[0])
- y.append(round(n_barras +0.5)+1)
-
- bitola = x[cont]
- n_barras = (round(n_barras +0.5)+1)
-
- espass_horizontal = (round(base - 2*(cobrimento+bitola_estribo/10) - n_barras*(bitola/10), ndigits=2))/(n_barras-1)
-
- z.append(round(espass_horizontal,ndigits=2))
- self.tableWidget.setItem(cont,4, QTableWidgetItem(str(espass_horizontal)))
-
- print('base:',base)
- print('cobrimento:',cobrimento)
- print('bitola_estribo:',bitola_estribo)
- print('n_barras:',n_barras)
-
- cont +=1
-
- #print(x)
- #print(y)
- #print(z)
-
- self.widget.plot(x=x,y=y,pen=(3))
-
- self.calcular_espacamentos()
- self.calcular_estribos()
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes!")
-
-
- def calcular_espacamentos(self):
- bitola = float(self.comboBox_4.currentText())
- d_agreg = float(self.lineEdit_12.text())
-
- s_horizontal = max(2, (bitola/10), 1.2*d_agreg)
- s_vertical = max(2, (bitola/10), 0.5*d_agreg)
-
- #------------------------------- saida de dados ----------------------------------
- self.lineEdit_7.setText(str(s_horizontal))
- self.lineEdit_8.setText(str(s_vertical))
-
- def limpar_detalhamento(self):
- self.widget.clear()
- self.lineEdit_11.setText(str('0'))
- self.lineEdit_9.setText(str('0'))
- self.lineEdit_10.setText(str('0'))
- self.lineEdit_7.setText(str('0'))
- self.lineEdit_8.setText(str('0'))
-
-
-
-class Tabela_Bitolas(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = loadUi('bitolas_ferros.ui',self)
- header = self.tableWidget.horizontalHeader()
- header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
- self.setWindowTitle('Navier - Tabela de Bitolas')
-
-class Tabela_Classe_Agressividade(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.load_ui()
- self.load_signals()
-
- def load_ui(self):
- self.ui = loadUi('class_agres.ui',self)
- self.setWindowTitle('Navier - Classes de Agressividade e Cobrimentos Mínimos')
- def load_signals(self):
- print('inicializado')
- header = self.tableWidget.horizontalHeader()
- header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(3, QtWidgets.QHeaderView.Stretch)
-
- self.tableWidget.setSpan(0, 0, 1, 4)
-
- header_2 = self.tableWidget_2.horizontalHeader()
- header_2.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header_2.setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
- header_2.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
- header_2.setSectionResizeMode(3, QtWidgets.QHeaderView.ResizeToContents)
-
- self.tableWidget_2.setSpan(0, 0, 2, 1)
- self.tableWidget_2.setSpan(0, 1, 2, 1)
- self.tableWidget_2.setSpan(0, 3, 2, 1)
-
- self.tableWidget_2.setSpan(3, 0, 2, 1)
- self.tableWidget_2.setSpan(3, 1, 2, 1)
- self.tableWidget_2.setSpan(3, 3, 2, 1)
-
- self.tableWidget_2.setSpan(5, 0, 2, 1)
- self.tableWidget_2.setSpan(5, 1, 2, 1)
- self.tableWidget_2.setSpan(5, 3, 2, 1)
-
-
-
-if __name__ == '__main__':
- app = QtWidgets.QApplication(sys.argv)
- inicio = Inicio()
- vigas = Vigas()
- detalhar_vigas = Detalhar_viga()
- pilares = Pilares()
- pilares_areas_aco = Pilar_area_aco()
- #pilares.show()
- #vigas.show()
- lajes = Lajes()
- #lajes.show()
- sapatas = Sapatas()
- #sapatas.show()
- carga_adicional = Carga_Adicional()
- tabela_classe_agressividade = Tabela_Classe_Agressividade()
- tabela_bitolas = Tabela_Bitolas()
-
- app.exec_()
\ No newline at end of file
diff --git a/inicial_new.py b/inicial_new.py
deleted file mode 100644
index 5659a9a..0000000
--- a/inicial_new.py
+++ /dev/null
@@ -1,3040 +0,0 @@
-
-
-import sys
-import os
-import math
-
-from PyQt5.uic import loadUi
-from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QMessageBox, QVBoxLayout, QHBoxLayout, QDialog, QMessageBox, QTableWidget, QTableWidgetItem
-from PyQt5.QtGui import QPixmap, QIcon, QImage
-from PyQt5 import QtWidgets, QtGui, QtCore
-import pyqtgraph as pg
-
-
-#import marcus
-
-tabela_marcus = 'tabela_marcus.pdf'
-abaco_normal = 'abaco_normal.pdf'
-abaco_obliqua = 'abaco_obliqua.pdf'
-
-
-import numpy as np
-
-marcus_caso1 = np.array([
-[0.50, 0.059, 169.18, 42.29 ],
-[0.51, 0.063, 158.42, 41.20 ],
-[0.52, 0.068, 148.64, 40.19 ],
-[0.53, 0.073, 139.70, 39.24 ],
-[0.54, 0.078, 131.55, 38.36 ],
-[0.55, 0.084, 124.10, 37.53 ],
-[0.56, 0.089, 117.25, 36.77 ],
-[0.57, 0.095, 110.96, 36.05 ],
-[0.58, 0.102, 105.19, 35.38 ],
-[0.59, 0.108, 99.86, 34.76 ],
-[0.60, 0.115, 94.94, 34.18 ],
-[0.61, 0.122, 90.40, 33.64 ],
-[0.62, 0.129, 86.20, 33.13 ],
-[0.63, 0.136, 82.30, 32.66 ],
-[0.64, 0.144, 78.68, 32.23 ],
-[0.65, 0.151, 75.32, 31.82 ],
-[0.66, 0.159, 72.19, 31.44 ],
-[0.67, 0.168, 69.27, 31.09 ],
-[0.68, 0.176, 66.54, 30.99 ],
-[0.69, 0.185, 63.99, 30.46 ],
-[0.70, 0.194, 61.60, 30.18 ],
-[0.71, 0.203, 59.37, 29.93 ],
-[0.72, 0.212, 57.27, 29.69 ],
-[0.73, 0.221, 55.29, 29.47 ],
-[0.74, 0.231, 53.44, 29.26 ],
-[0.75, 0.240, 51.69, 29.07 ],
-[0.76, 0.250, 50.04, 28.90 ],
-[0.77, 0.260, 48.48, 28.74 ],
-[0.78, 0.270, 47.01, 28.60 ],
-[0.79, 0.280, 45.61, 28.46 ],
-[0.80, 0.290, 44.29, 28.34 ],
-[0.81, 0.301, 43.03, 28.23 ],
-[0.82, 0.311, 41.84, 28.13 ],
-[0.83, 0.322, 40.70, 28.04 ],
-[0.84, 0.332, 39.62, 27.96 ],
-[0.85, 0.343, 38.59, 27.88 ],
-[0.86, 0.354, 37.61, 27.81 ],
-[0.87, 0.364, 36.67, 27.75 ],
-[0.88, 0.375, 35.77, 27.70 ],
-[0.89, 0.385, 34.91, 27.65 ],
-[0.90, 0.396, 34.09, 27.61 ],
-[0.91, 0.407, 33.30, 27.57 ],
-[0.92, 0.417, 32.54, 27.54 ],
-[0.93, 0.428, 31.81, 27.51 ],
-[0.94, 0.438, 31.11, 27.49 ],
-[0.95, 0.449, 30.44, 27.47 ],
-[0.96, 0.459, 29.79, 27.45 ],
-[0.97, 0.469, 29.17, 27.44 ],
-[0.98, 0.480, 28.57, 27.43 ],
-[0.99, 0.490, 27.99, 27.43 ],
-[1.00, 0.500, 27.43, 27.43 ],
-[1.00, 0.500, 27.43, 27.43],
-[1.01, 0.510, 26.89, 27.43],
-[1.02, 0.520, 26.37, 27.43],
-[1.03, 0.529, 25.87, 27.44],
-[1.04, 0.539, 25.38, 27.45],
-[1.05, 0.549, 24.91, 27.47],
-[1.06, 0.558, 24.46, 27.48],
-[1.07, 0.567, 24.02, 27.50],
-[1.08, 0.576, 23.60, 27.52],
-[1.09, 0.585, 23.19, 27.55],
-[1.10, 0.594, 22.79, 27.57],
-[1.11, 0.603, 22.41, 27.61],
-[1.12, 0.611, 22.03, 27.64],
-[1.13, 0.620, 21.67, 27.67],
-[1.14, 0.628, 21.32, 27.71],
-[1.15, 0.636, 20.99, 27.76],
-[1.16, 0.644, 20.66, 27.80],
-[1.17, 0.652, 20.34, 27.85],
-[1.18, 0.660, 20.04, 27.90],
-[1.19, 0.667, 19.74, 27.95],
-[1.20, 0.675, 19.45, 28.01],
-[1.21, 0.682, 19.17, 28.07],
-[1.22, 0.689, 18.90, 28.13],
-[1.23, 0.696, 18.64, 28.20],
-[1.24, 0.703, 18.39, 28.27],
-[1.25, 0.709, 18.14, 28.34],
-[1.26, 0.716, 17.90, 28.42],
-[1.27, 0.722, 17.67, 28.50],
-[1.28, 0.729, 17.44, 28.58],
-[1.29, 0.735, 17.23, 28.67],
-[1.30, 0.741, 17.01, 28.76],
-[1.31, 0.746, 16.81, 28.85],
-[1.32, 0.752, 16.61, 28.94],
-[1.33, 0.758, 16.42, 29.04],
-[1.34, 0.763, 16.23, 29.14],
-[1.35, 0.769, 16.05, 29.25],
-[1.36, 0.774, 15.87, 29.36],
-[1.37, 0.779, 15.70, 29.47],
-[1.38, 0.784, 15.53, 29.58],
-[1.39, 0.789, 15.37, 29.70],
-[1.40, 0.793, 15.21, 29.82],
-[1.41, 0.798, 15.06, 29.95],
-[1.42, 0.803, 14.91, 30.07],
-[1.43, 0.807, 14.77, 30.20],
-[1.44, 0.811, 14.63, 30.34],
-[1.45, 0.815, 14.49, 30.47],
-[1.46, 0.820, 14.36, 30.61],
-[1.47, 0.824, 14.23, 30.76],
-[1.48, 0.827, 14.11, 30.90],
-[1.49, 0.831, 13.99, 31.05],
-[1.50, 0.835, 13.87, 31.21],
-[1.50, 0.835, 13.87, 31.21],
-[1.51, 0.839, 13.75, 31.36],
-[1.52, 0.842, 13.64, 31.52],
-[1.53, 0.846, 13.53, 31.68],
-[1.54, 0.849, 13.43, 31.85],
-[1.55, 0.852, 13.32, 32.01],
-[1.56, 0.855, 13.22, 32.18],
-[1.57, 0.859, 13.13, 32.36],
-[1.58, 0.862, 13.03, 32.53],
-[1.59, 0.865, 12.94, 32.71],
-[1.60, 0.868, 12.85, 32.80],
-[1.61, 0.870, 12.76, 33.08],
-[1.62, 0.873, 12.68, 33.27],
-[1.63, 0.876, 12.59, 33.46],
-[1.64, 0.878, 12.51, 33.65],
-[1.65, 0.881, 12.43, 33.85],
-[1.66, 0.884, 12.35, 34.04],
-[1.67, 0.886, 12.28, 34.24],
-[1.68, 0.888, 12.21, 34.45],
-[1.69, 0.891, 12.13, 34.65],
-[1.70, 0.893, 12.06, 34.87],
-[1.71, 0.895, 12.00, 35.08],
-[1.72, 0.897, 11.93, 35.29],
-[1.73, 0.899, 11.86, 35.51],
-[1.74, 0.902, 11.80, 35.73],
-[1.75, 0.904, 11.74, 35.95],
-[1.76, 0.906, 11.68, 36.17],
-[1.77, 0.907, 11.62, 36.40],
-[1.78, 0.909, 11.56, 36.63],
-[1.79, 0.911, 11.51, 36.86],
-[1.80, 0.913, 11.45, 37.10],
-[1.81, 0.915, 11.40, 37.33],
-[1.82, 0.916, 11.34, 37.58],
-[1.83, 0.918, 11.29, 37.82],
-[1.84, 0.920, 11.24, 38.06],
-[1.85, 0.921, 11.19, 38.31],
-[1.86, 0.923, 11.15, 38.56],
-[1.87, 0.924, 11.10, 38.81],
-[1.88, 0.926, 11.05, 39.07],
-[1.89, 0.927, 11.01, 39.32],
-[1.90, 0.929, 10.96, 39.58],
-[1.91, 0.930, 10.92, 39.84],
-[1.92, 0.931, 10.88, 40.10],
-[1.93, 0.933, 10.84, 40.37],
-[1.94, 0.934, 10.80, 40.63],
-[1.95, 0.935, 10.76, 40.91],
-[1.96, 0.936, 10.72, 41.18],
-[1.97, 0.938, 10.68, 41.45],
-[1.98, 0.939, 10.64, 41.73],
-[1.99, 0.940, 10.60, 42.01],
-[2.00, 0.941, 10.57, 42.29],])
-
-
-
-marcus_caso2 = np.array([
-[0.50, 0.135, 140.93, 59.20, 45.13],
-[0.51, 0.145, 132.95, 55.31, 44.11],
-[0.52, 0.154, 125.68, 51.77, 43.22],
-[0.53, 0.165, 119.03, 48.56, 42.38],
-[0.54, 0.175, 112.94, 45.64, 41.60],
-[0.55, 0.186, 107.35, 42.97, 40.88],
-[0.56, 0.197, 102.20, 40.54, 40.21],
-[0.57, 0.209, 97.46, 38.32, 39.60],
-[0.58, 0.220, 93.08, 36.28, 39.03],
-[0.59, 0.232, 89.03, 34.41, 38.51],
-[0.60, 0.245, 85.28, 32.69, 38.04],
-[0.61, 0.257, 81.79, 31.11, 37.60],
-[0.62, 0.270, 78.55, 29.66, 37.20],
-[0.63, 0.282, 75.53, 28.31, 36.83],
-[0.64, 0.295, 72.71, 27.07, 36.49],
-[0.65, 0.308, 70.07, 25.93, 36.19],
-[0.66, 0.322, 67.60, 24.86, 35.92],
-[0.67, 0.335, 65.28, 23.88, 35.67],
-[0.68, 0.348, 63.10, 22.97, 35.44],
-[0.69, 0.362, 61.05, 22.12, 35.25],
-[0.70, 0.375, 59.12, 21.33, 35.07],
-[0.71, 0.388, 57.30, 20.59, 34.92],
-[0.72, 0.402, 55.58, 19.91, 34.78],
-[0.73, 0.415, 53.95, 19.27, 34.67],
-[0.74, 0.428, 52.41, 18.67, 34.57],
-[0.75, 0.442, 50.94, 18.11, 34.50],
-[0.76, 0.455, 49.56, 17.59, 34.44],
-[0.77, 0.468, 48.24, 17.10, 34.39],
-[0.78, 0.481, 46.98, 16.64, 34.36],
-[0.79, 0.493, 45.79, 16.21, 34.35],
-[0.80, 0.506, 44.65, 15.81, 34.35],
-[0.81, 0.518, 43.56, 15.43, 34.36],
-[0.82, 0.531, 42.53, 15.08, 34.39],
-[0.83, 0.543, 41.54, 14.74, 34.42],
-[0.84, 0.554, 40.60, 14.43, 34.48],
-[0.85, 0.566, 39.69, 14.13, 34.54],
-[0.86, 0.578, 38.83, 13.85, 34.62],
-[0.87, 0.589, 38.01, 13.59, 34.70],
-[0.88, 0.600, 97.22, 13.34, 34.80],
-[0.89, 0.611, 96.46, 13.10, 34.91],
-[0.90, 0.621, 95.73, 12.88, 35.03],
-[0.91, 0.632, 35.04, 12.67, 35.16],
-[0.92, 0.642, 34.37, 12.47, 35.29],
-[0.93, 0.652, 33.73, 12.28, 35.44],
-[0.94, 0.661, 33.12, 12.10, 35.60],
-[0.95, 0.671, 32.53, 11.93, 35.77],
-[0.96, 0.680, 31.97, 11.77, 35.95],
-[0.97, 0.689, 31.43, 11.61, 36.13],
-[0.98, 0.697, 30.91, 11.47, 36.33],
-[0.99, 0.706, 30.41, 11.33, 36.53],
-[1.00, 0.714, 29.93, 11.20, 36.74],
-[ 1.00, 0.714, 29.93, 11.20, 36],
-[ 1.02, 0.730, 29.02, 10.96, 37],
-[ 1.04, 0.745, 28.18, 10.73, 37],
-[ 1.06, 0.759, 27.41, 10.53, 38],
-[ 1.08, 0.773, 26.69, 10.35, 38],
-[ 1.10, 0.785, 26.02, 10.18, 39],
-[ 1.12, 0.797, 25.40, 10.03, 39],
-[1.14, 0.808, 24.83, 9.89, 40.55],
-[1.16, 0.819, 24.29, 9.77, 41.21],
-[1.18, 0.829, 23.79, 9.65, 41.90],
-[1.20, 0.838, 23.33, 9.45, 42.62],
-[1.22, 0.847, 22.89, 9.44, 43.36],
-[1.24, 0.855, 22.49, 9.35, 44.13],
-[1.26, 0.863, 22.11, 9.27, 44.93],
-[1.28, 0.870, 21.75, 9.19, 45.75],
-[1.30, 0.877, 21.42, 9.12, 46.59],
-[1.32, 0.884, 21.11, 9.05, 47.46],
-[1.34, 0.889, 20.82, 8.99, 48.34],
-[1.36, 0.895, 20.54, 8.93, 49.26],
-[1.38, 0.901, 20.28, 8.88, 50.20],
-[1.40, 0.906, 20.04, 8.83, 51.15],
-[1.42, 0.910, 19.81, 8.79, 52.14],
-[1.44, 0.915, 19.59, 8.74, 53.14],
-[1.46, 0.919, 19.39, 8.70, 54.16],
-[1.48, 0.923, 19.20, 8.67, 55.21],
-[1.50, 0.927, 19.01, 8.63, 56.28],
-[1.52, 0.930, 18.84, 8.60, 57.36],
-[1.54, 0.934, 18.68, 8.57, 58.47],
-[1.56, 0.937, 18.52, 8.54, 59.60],
-[1.58, 0.940, 18.37, 8.51, 60.74],
-[1.60, 0.942, 18.23, 8.49, 61.91],
-[1.62, 0.945, 18.10, 8.46, 63.11],
-[1.64, 0.948, 17.97, 8.44, 64.31],
-[1.66, 0.950, 17.85, 8.42, 65.53],
-[1.68, 0.952, 17.74, 8.40, 66.78],
-[1.70, 0.954, 17.63, 8.38, 68.04],
-[1.72, 0.956, 17.52, 8.36, 69.33],
-[1.74, 0.958, 17.42, 8.35, 70.63],
-[1.76, 0.960, 17.33, 8.33, 71.96],
-[1.78, 0.962, 17.25, 8.32, 73.30],
-[1.80, 0.963, 17.15, 8.30, 74.65],
-[1.82, 0.965, 17.07, 8.29, 76.03],
-[1.84, 0.966, 16.99, 8.28, 77.42],
-[1.86, 0.968, 16.91, 8.27, 78.85],
-[1.88, 0.969, 16.84, 8.26, 80.27],
-[1.90, 0.970, 16.77, 8.24, 81.73],
-[1.92, 0.971, 16.70, 8.23, 83.18],
-[1.94, 0.972, 16.64, 8.23, 84.67],
-[1.96, 0.974, 16.57, 8.22, 86.19],
-[1.98, 0.975, 16.51, 8.21, 87.70],
-[2.00, 0.976, 16.46, 8.20, 89.22],])
-
-
-marcus_caso3 = np.array([
-[1.00, 0.500, 37.14, 16.00, 37.14, 16.00],
-[1.01, 0.510, 36.42, 15.69, 37.15, 16.00],
-[1.02, 0.520, 35.72, 15.39, 37.16, 16.01],
-[1.03, 0.529, 35.05, 15.11, 37.19, 16.03],
-[1.04, 0.539, 34.42, 14.84, 37.22, 16.05],
-[1.05, 0.549, 33.81, 14.58, 37.27, 16.08],
-[1.06, 0.558, 33.21, 14.34, 27.32, 16.11],
-[1.07, 0.567, 32.65, 14.10, 37.38, 16.15],
-[1.08, 0.576, 32.11, 13.88, 37.45, 16.19],
-[1.09, 0.585, 31.59, 13.67, 37.53, 16.24],
-[1.10, 0.594, 31.09, 13.46, 37.61, 16.29],
-[1.11, 0.603, 30.61, 13.27, 37.71, 16.35],
-[1.12, 0.611, 30.14, 13.08, 37.81, 16.41],
-[1.13, 0.620, 29.70, 12.91, 37.92, 16.48],
-[1.14, 0.628, 29.27, 12.74, 38.04, 16.55],
-[1.15, 0.636, 28.85, 12.57, 38.16, 16.63],
-[1.16, 0.644, 28.46, 12.42, 38.29, 16.71],
-[1.17, 0.652, 28.08, 12.27, 38.43, 16.79],
-[1.18, 0.660, 27.71, 12.13, 38.58, 16.88],
-[1.19, 0.667, 27.35, 11.99, 38.73, 16.98],
-[1.20, 0.674, 27.00, 11.85, 38.89, 17.07],
-[1.21, 0.682, 26.68, 11.73, 39.06, 17.18],
-[1.22, 0.690, 26.36, 11.61, 39.23, 17.28],
-[1.23, 0.696, 26.05, 11.49, 39.41, 17.39],
-[1.24, 0.703, 25.75, 11.38, 39.59, 17.50],
-[1.25, 0.709, 25.46, 11.28, 39.78, 17.62],
-[1.26, 0.716, 25.18, 11.17, 39.98, 17.74],
-[1.27, 0.722, 24.92, 11.07, 40.19, 17.86],
-[1.28, 0.729, 24.66, 10.98, 40.40, 17.99],
-[1.29, 0.735, 24.40, 10.89, 40.61, 18.12],
-[1.30, 0.741, 24.16, 10.80, 40.83, 18.25],
-[1.31, 0.746, 23.93, 10.72, 41.06, 18.39],
-[1.32, 0.752, 23.70, 10.63, 41.29, 18.53],
-[1.33, 0.758, 23.48, 10.56, 41.53, 18.67],
-[1.34, 0.763, 23.26, 10.48, 41.77, 18.82],
-[1.35, 0.769, 23.06, 10.41, 42.02, 18.97],
-[1.36, 0.774, 22.86, 10.34, 42.28, 19.12],
-[1.37, 0.779, 22.66, 10.27, 42.54, 19.28],
-[1.38, 0.784, 22.48, 10.21, 42.80, 19.43],
-[1.39, 0.789, 22.29, 10.14, 43.07, 19.60],
-[1.40, 0.793, 22.12, 10.08, 43.35, 19.76],
-[1.41, 0.798, 21.95, 10.02, 43.63, 19.93],
-[1.42, 0.803, 21.78, 9.97, 43.92, 20.10],
-[1.43, 0.807, 21.62, 9.91, 44.21, 20.27],
-[1.44, 0.811, 21.46, 9.86, 44.50, 20.45],
-[1.45, 0.815, 21.31, 9.81, 44.80, 20.62],
-[1.46, 0.820, 21.16, 9.76, 45.11, 20.80],
-[1.47, 0.824, 21.02, 9.71, 45.42, 20.99],
-[1.48, 0.827, 20.88, 9.67, 45.74, 21.17],
-[1.49, 0.831, 20.75, 9.62, 46.06, 21.36],
-[1.50, 0.835, 20.61, 9.38, 46.38, 21.55],
-[1.50, 0.835, 20.61, 9.58, 46.38, 21.55],
-[1.51, 0.839, 20.49, 9.54, 46.71, 21.75],
-[1.52, 0.842, 20.36, 9.50, 47.05, 21.94],
-[1.53, 0.846, 20.24, 9.46, 47.38, 22.14],
-[1.54, 0.849, 20.12, 9.42, 47.73, 22.34],
-[1.55, 0.852, 20.01, 9.39, 48.07, 22.55],
-[1.56, 0.855, 19.90, 9.35, 48.43, 22.76],
-[1.57, 0.859, 19.79, 9.32, 48.78, 22.96],
-[1.58, 0.862, 19.69, 9.28, 49.14, 23.17],
-[1.59, 0.865, 19.58, 9.25, 49.51, 23.09],
-[1.60, 0.868, 19.48, 9.22, 49.88, 23.60],
-[1.61, 0.870, 19.39, 9.19, 50.25, 23.82],
-[1.62, 0.873, 19.29, 9.16, 52.63, 24.04],
-[1.63, 0.876, 19.20, 9.13, 51.01, 24.26],
-[1.64, 0.878, 19.11, 9.11, 51.40, 24.49],
-[1.65, 0.881, 19.02, 9.08, 51.79, 24.72],
-[1.66, 0.884, 18.94, 9.05, 52.19, 24.95],
-[1.67, 0.886, 18.86, 9.03, 52.58, 25.18],
-[1.68, 0.888, 18.77, 9.00, 52.99, 25.41],
-[1.69, 0.891, 18.70, 8.98, 53.39, 25.65],
-[1.70, 0.893, 18.62, 8.96, 53.81, 25.89],
-[1.71, 0.895, 18.54, 8.93, 54.22, 26.13],
-[1.72, 0.897, 18.47, 8.91, 54.64, 26.37],
-[1.73, 0.899, 18.40, 8.89, 55.07, 26.61],
-[1.74, 0.902, 18.33, 8.87, 55.49, 26.86],
-[1.75, 0.904, 18.26, 8.85, 55.92, 27.11],
-[1.76, 0.906, 18.18, 8.83, 56.36, 27.36],
-[1.77, 0.907, 18.13, 8.81, 56.80, 27.61],
-[1.78, 0.909, 18.07, 8.80, 57.24, 27.87],
-[1.79, 0.911, 18.00, 8.78, 57.68, 28.13],
-[1.80, 0.913, 17.94, 8.76, 58.14, 28.39],
-[1.81, 0.915, 17.88, 8.74, 58.59, 28.65],
-[1.82, 0.916, 17.83, 8.73, 59.05, 28.91],
-[1.83, 0.918, 17.77, 8.71, 59.51, 29.18],
-[1.84, 0.920, 17.72, 8.70, 59.97, 29.44],
-[1.85, 0.921, 17.66, 8.68, 60.44, 29.72],
-[1.86, 0.923, 17.61, 8.67, 60.92, 29.99],
-[1.87, 0.924, 17.56, 8.65, 61.39, 30.26],
-[1.88, 0.926, 17.51, 8.64, 61.88, 30.54],
-[1.89, 0.927, 17.46, 8.63, 62.36, 30.81],
-[1.90, 0.929, 17.41, 8.61, 62.85, 31.09],
-[1.91, 0.930, 17.36, 8.60, 63.34, 31.38],
-[1.92, 0.931, 17.32, 8.59, 63.83, 31.66],
-[1.93, 0.933, 17.27, 8.58, 64.33, 31.94],
-[1.94, 0.934, 17.23, 8.56, 64.83, 32.23],
-[1.95, 0.935, 17.18, 8.55, 65.34, 32.52],
-[1.96, 0.936, 17.14, 8.54, 65.84, 32.81],
-[1.97, 0.938, 17.10, 8.53, 66.36, 33.10],
-[1.98, 0.939, 17.06, 8.52, 66.88, 33.40],
-[1.99, 0.940, 17.02, 8.51, 67.39, 33.70],
-[2.00, 0.941, 16.93, 8.50, 67.92, 34.00],])
-
-
-marcus_caso5 = np.array([
-[0.50, 0.111, 246.52, 108.00, 71.43, 36.00],
-[0.51, 0.119, 230.76, 100.70, 69.53, 34.92],
-[0.52, 0.127, 216.51, 95.07, 67.77, 33.91],
-[0.53, 0.136, 203.52, 88.05, 66.13, 32.97],
-[0.54, 0.145, 191.66, 82.56, 64.60, 32.10],
-[0.55, 0.155, 180.83, 77.57, 63.18, 31.29],
-[0.56, 0.164, 170.91, 73.01, 61.86, 30.53],
-[0.57, 0.174, 161.79, 68.84, 60.63, 29.82],
-[0.58, 0.184, 153.42, 65.02, 59.49, 29.16],
-[0.59, 0.195, 145.72, 61.52, 58.42, 28.55],
-[0.60, 0.206, 138.61, 58.30, 57.43, 27.98],
-[0.61, 0.217, 132.05, 55.34, 56.52, 27.45],
-[0.62, 0.228, 125.98, 52.61, 55.67, 26.96],
-[0.63, 0.239, 120.36, 50.09, 54.88, 26.51],
-[0.64, 0.251, 115.15, 47.76, 54.15, 26.08],
-[0.65, 0.263, 110.30, 45.61, 53.48, 25.69],
-[0.66, 0.275, 105.81, 43.62, 52.85, 25.33],
-[0.67, 0.287, 101.61, 41.77, 52.28, 25.00],
-[0.68, 0.299, 97.70, 40.06, 51.76, 24.70],
-[0.69, 0.312, 94.06, 38.47, 51.28, 24.42],
-[0.70, 0.324, 90.65, 36.99, 50.84, 24.17],
-[0.71, 0.337, 87.46, 35.61, 50.45, 23.93],
-[0.72, 0.349, 84.48, 34.33, 50.09, 23.73],
-[0.73, 0.362, 81.68, 33.13, 49.77, 23.54],
-[0.74, 0.375, 82.05, 32.48, 49.05, 23.37],
-[0.75, 0.387, 76.58, 30.96, 49.23, 23.22],
-[0.76, 0.400, 74.26, 29.98, 49.00, 23.09],
-[0.77, 0.413, 72.08, 29.07, 48.81, 22.98],
-[0.78, 0.425, 70.02, 28.21, 48.65, 22.88],
-[0.79, 0.438, 68.08, 27.40, 48.51, 22.80],
-[0.80, 0.450, 66.24, 26.65, 48.40, 22.74],
-[0.81, 0.463, 64.51, 25.94, 48.32, 22.69],
-[0.82, 0.475, 62.88, 25.27, 48.26, 22.65],
-[0.83, 0.487, 61.33, 24.64, 48.22, 22.63],
-[0.84, 0.499, 59.86, 24.05, 48.21, 22.63],
-[0.85, 0.511, 58.47, 23.49, 48.22, 22.63],
-[0.86, 0.522, 57.15, 22.97, 48.25, 22.65],
-[0.87, 0.543, 55.90, 22.47, 48.30, 22.68],
-[0.88, 0.545, 54.71, 22.00, 48.37, 22.72],
-[0.89, 0.558, 53.58, 21.56, 48.46, 22.77],
-[0.90, 0.567, 52.51, 21.14, 48.57, 22.84],
-[0.91, 0.578, 51.49, 20.75, 48.69, 22.91],
-[0.92, 0.589, 50.51, 20.37, 48.83, 22.99],
-[0.93, 0.599, 49.59, 20.02, 48.99, 23.09],
-[0.94, 0.610, 48.70, 19.68, 49.17, 23.19],
-[0.95, 0.620, 47.86, 19.37, 49.06, 13.30],
-[0.96, 0.629, 47.06, 19.06, 49.57, 23.42],
-[0.97, 0.639, 46.29, 18.78, 49.80, 23.56],
-[0.98, 0.648, 45.55, 18.50, 50.04, 23.70],
-[0.99, 0.658, 44.85, 18.25, 50.29, 23.84],
-[1.00, 0.667, 44.18, 18.00, 50.56, 24.00],
-[1.00, 0.667, 44.18, 18.00, 50.56, 24.00],
-[1.02, 0.684, 42.92, 17.54, 51.14, 24.33],
-[1.04, 0.700, 41.77, 17.13, 51.76, 24.70],
-[1.06, 0.716, 40.71, 16.75, 52.44, 25.10],
-[1.08, 0.731, 39.74, 16.41, 53.18, 25.52],
-[1.10, 0.745, 38.84, 16.10, 53.95, 25.97],
-[1.12, 0.759, 38.01, 15.81, 54.78, 26.45],
-[1.14, 0.772, 37.25, 15.55, 55.64, 26.95],
-[1.16, 0.784, 36.54, 15.31, 56.55, 27.47],
-[1.18, 0.795, 35.88, 15.09, 57.50, 28.02],
-[1.20, 0.806, 35.27, 14.89, 58.50, 28.59],
-[1.22, 0.816, 34.70, 14.71, 59.53, 29.19],
-[1.24, 0.825, 34.17, 14.54, 60.60, 29.80],
-[1.26, 0.834, 33.68, 14.38, 61.71, 30.44],
-[1.28, 0.843, 33.22, 14.23, 62.85, 31.10],
-[1.30, 0.851, 32.79, 14.10, 64.03, 31.77],
-[1.32, 0.859, 32.38, 13.98, 65.25, 32.47],
-[1.34, 0.866, 32.01, 13.86, 66.50, 33.18],
-[1.36, 0.872, 31.65, 13.75, 66.78, 33.92],
-[1.38, 0.879, 31.02, 13.65, 69.10, 34.67],
-[1.40, 0.885, 31.01, 13.56, 70.45, 35.44],
-[1.42, 0.890, 30.72, 13.47, 71.83, 36.23],
-[1.44, 0.896, 30.44, 13.39, 73.24, 37.03],
-[1.46, 0.901, 30.18, 13.32, 74.69, 37.86],
-[1.48, 0.906, 29.94, 13.25, 76.17, 38.70],
-[1.50, 0.910, 29.71, 13.18, 77.67, 39.55],
-[1.52, 0.914, 29.49, 13.12, 79.20, 40.43],
-[1.54, 0.918, 29.28, 13.07, 80.77, 41.32],
-[1.56, 0.922, 29.09, 13.01, 82.36, 12.22],
-[1.58, 0.926, 28.90, 12.96, 83.98, 43.14],
-[1.60, 0.929, 28.73, 12.91, 85.64, 44.08],
-[1.62, 0.932, 28.56, 12.87, 87.31, 45.03],
-[1.64, 0.935, 28.40, 12.83, 89.02, 46.00],
-[1.66, 0.938, 28.25, 12.79, 90.77, 46.99],
-[1.68, 0.941, 28.11, 12.75, 92.52, 47.98],
-[1.70, 0.943, 27.97, 12.72, 94.32, 49.00],
-[1.72, 0.946, 27.84, 12.68, 96.13, 50.03],
-[1.74, 0.948, 27.72, 12.65, 97.98, 51.08],
-[1.76, 0.950, 27.60, 12.62, 99.86, 52.14],
-[1.78, 0.952, 27.49, 12.60, 101.75, 53.21],
-[1.80, 0.954, 27.38, 12.57, 103.68, 54.30],
-[1.82, 0.956, 27.28, 12.55, 105.63, 55.41],
-[1.84, 0.958, 27.18, 12.52, 107.62, 56.63],
-[1.86, 0.960, 27.09, 12.50, 109.63, 57.67],
-[1.88, 0.961, 27.00, 12.48, 111.65, 58.81],
-[1.90, 0.963, 26.91, 12.46, 110.71, 59.97],
-[1.92, 0.964, 26.83, 12.44, 115.79, 61.15],
-[1.94, 0.966, 26.75, 12.42, 117.89, 62.33],
-[1.96, 0.967, 26.68, 12.41, 120.04, 63.55],
-[1.98, 0.968, 26.61, 12.39, 122.19, 64.76],
-[2.00, 0.970, 26.54, 12.37, 124.35, 65.98]])
-
-
-marcus_caso6 = np.array([
-[1.00, 0.500, 55.74, 24.00, 55.74, 24.00],
-[1.01, 0.510, 54.65, 32.53, 55.75, 24.00],
-[1.02, 0.520, 53.61, 32.09, 55.78, 24.02],
-[1.03, 0.529, 52.62, 22.66, 55.82, 24.04],
-[1.04, 0.539, 51.76, 22.26, 55.88, 24.07],
-[1.05, 0.549, 50.76, 21.87, 55.96, 24.11],
-[1.06, 0.558, 49.89, 21.50, 56.06, 24.16],
-[1.07, 0.567, 49.06, 21.15, 56.17, 24.22],
-[1.08, 0.576, 48.27, 20.82, 56.30, 24.28],
-[1.09, 0.585, 47.50, 20.50, 56.44, 24.36],
-[1.10, 0.594, 46.77, 20.20, 56.59, 24.44],
-[1.11, 0.603, 46.07, 19.90, 56.76, 24.52],
-[1.12, 0.611, 45.40, 19.63, 56.95, 24.62],
-[1.13, 0.620, 44.75, 19.36, 57.14, 24.72],
-[1.14, 0.628, 44.13, 19.10, 57.36, 24.83],
-[1.15, 0.636, 43.54, 18.86, 57.58, 24.94],
-[1.16, 0.644, 42.97, 18.63, 57.82, 25.06],
-[1.17, 0.652, 42.42, 18.40, 58.07, 25.19],
-[1.18, 0.660, 41.89, 18.19, 58.33, 25.33],
-[1.19, 0.667, 41.38, 17.98, 58.60, 25.47],
-[1.20, 0.675, 40.90, 17.79, 58.89, 25.61],
-[1.21, 0.682, 40.42, 17.60, 59.19, 25.76],
-[1.22, 0.689, 39.97, 17.42, 59.49, 25.92],
-[1.23, 0.696, 39.54, 17.24, 59.81, 26.09],
-[1.24, 0.703, 39.12, 17.07, 60.15, 26.25],
-[1.25, 0.709, 38.71, 16.91, 60.49, 26.43],
-[1.26, 0.716, 38.32, 16.76, 60.84, 26.61],
-[1.27, 0.722, 37.95, 16.61, 61.20, 26.79],
-[1.28, 0.729, 37.58, 16.47, 61.57, 26.98],
-[1.29, 0.735, 37.23, 16.33, 61.96, 27.18],
-[1.30, 0.741, 36.89, 16.20, 62.05, 27.38],
-[1.31, 0.746, 36.57, 16.07, 62.75, 27.58],
-[1.32, 0.752, 36.25, 15.95, 63.16, 27.79],
-[1.33, 0.758, 35.95, 15.83, 63.59, 28.01],
-[1.34, 0.763, 35.65, 15.72, 64.02, 28.23],
-[1.35, 0.769, 35.37, 15.61, 64.46, 28.45],
-[1.36, 0.774, 35.09, 15.51, 64.91, 28.68],
-[1.37, 0.779, 34.83, 15.41, 65.36, 28.91],
-[1.38, 0.784, 34.57, 15.31, 65.83, 29.15],
-[1.39, 0.789, 34.32, 15.21, 66.31, 29.39],
-[1.40, 0.793, 34.08, 15.12, 66.79, 29.64],
-[1.41, 0.798, 33.85, 15.04, 67.29, 29.89],
-[1.42, 0.803, 33.62, 14.95, 67.79, 30.15],
-[1.43, 0.807, 33.40, 14.87, 68.30, 30.40],
-[1.44, 0.811, 33.19, 14.79, 68.82, 30.67],
-[1.45, 0.815, 32.98, 14.71, 69.34, 30.94],
-[1.46, 0.820, 32.78, 14.64, 69.88, 31.21],
-[1.47, 0.824, 32.59, 14.57, 70.42, 31.48],
-[1.48, 0.827, 32.40, 14.50, 70.97, 31.76],
-[1.49, 0.831, 32.22, 14.43, 71.53, 32.04],
-[1.50, 0.835, 32.04, 14.37, 72.10, 32.33],
-[1.50, 0.835, 32.04, 14.37, 72.10, 32.33],
-[1.51, 0.839, 31.87, 14.31, 72.67, 32.62],
-[1.52, 0.842, 31.71, 14.25, 73.25, 32.92],
-[1.53, 0.846, 31.54, 14.19, 73.84, 33.22],
-[1.54, 0.849, 31.39, 14.13, 74.44, 33.52],
-[1.55, 0.852, 31.24, 14.08, 75.04, 33.82],
-[1.56, 0.855, 31.09, 14.03, 75.65, 34.13],
-[1.57, 0.859, 30.94, 13.97, 76.27, 34.45],
-[1.58, 0.862, 30.80, 13.92, 76.90, 34.79],
-[1.59, 0.865, 30.67, 13.88, 77.52, 35.08],
-[1.60, 0.868, 30.54, 13.83, 78.17, 35.41],
-[1.61, 0.870, 30.41, 13.79, 78.81, 35.73],
-[1.62, 0.873, 30.28, 13.74, 79.47, 36.06],
-[1.63, 0.876, 30.16, 13.70, 80.13, 36.40],
-[1.64, 0.878, 30.04, 13.66, 80.80, 36.74],
-[1.65, 0.881, 29.93, 13.62, 81.48, 37.08],
-[1.66, 0.884, 29.82, 13.58, 82.16, 37.42],
-[1.67, 0.886, 29.71, 13.54, 82.84, 37.77],
-[1.68, 0.888, 29.60, 13.51, 83.54, 38.12],
-[1.69, 0.891, 29.50, 13.47, 84.24, 38.47],
-[1.70, 0.893, 29.40, 13.44, 84.95, 38.83],
-[1.71, 0.895, 29.30, 13.40, 85.67, 39.19],
-[1.72, 0.897, 29.20, 13.37, 86.38, 39.55],
-[1.73, 0.899, 29.11, 13.34, 87.12, 39.92],
-[1.74, 0.902, 29.02, 13.31, 87.85, 40.29],
-[1.75, 0.904, 28.93, 13.28, 88.60, 40.67],
-[1.76, 0.906, 28.84, 13.25, 89.34, 41.04],
-[1.77, 0.907, 28.76, 13.22, 90.09, 41.42],
-[1.78, 0.909, 28.68, 13.19, 90.86, 41.81],
-[1.79, 0.911, 28.60, 13.17, 91.61, 42.19],
-[1.80, 0.913, 28.52, 13.14, 92.39, 42.58],
-[1.81, 0.915, 28.44, 13.12, 93.17, 42.97],
-[1.82, 0.916, 28.37, 13.09, 93.96, 43.37],
-[1.83, 0.918, 28.29, 13.07, 94.75, 43.77],
-[1.84, 0.920, 28.22, 13.05, 95.54, 44.17],
-[1.85, 0.921, 28.15, 13.02, 96.35, 44.57],
-[1.86, 0.923, 28.09, 13.00, 97.16, 44.98],
-[1.87, 0.924, 28.02, 12.98, 97.98, 45.09],
-[1.88, 0.926, 27.95, 12.96, 98.80, 45.81],
-[1.89, 0.927, 27.89, 12.94, 99.62, 46.22],
-[1.90, 0.929, 27.83, 12.92, 100.46, 46.64],
-[1.91, 0.930, 27.77, 12.90, 101.30, 47.06],
-[1.92, 0.931, 27.71, 12.88, 102.14, 47.49],
-[1.93, 0.933, 27.65, 12.86, 103.00, 47.92],
-[1.94, 0.934, 27.60, 12.85, 103.85, 48.35],
-[1.95, 0.935, 27.54, 12.83, 104.72, 48.78],
-[1.96, 0.936, 27.49, 12.81, 105.58, 49.21],
-[1.97, 0.938, 27.43, 12.80, 106.45, 49.65],
-[1.98, 0.939, 27.38, 12.78, 107.35, 50.10],
-[1.99, 0.940, 27.33, 12.76, 108.23, 50.55],
-[2.00, 0.941, 27.28, 12.75, 109.12, 50.99],])
-
-
-marcus_caso4 = np.array([
-[1.00, 0.833, 37.47, 14.40, 55.74],
-[1.02, 0.844, 36.71, 14.22, 57.01],
-[1.04, 0.854, 36.00, 14.05, 58.33],
-[1.06, 0.863, 35.34, 13.90, 59.70],
-[1.08, 0.872, 34.74, 13.76, 61.12],
-[1.10, 0.880, 34.18, 13.64, 62.59],
-[1.12, 0.887, 33.66, 13.52, 64.10],
-[1.14, 0.894, 33.18, 13.42, 65.66],
-[1.16, 0.900, 32.74, 13.32, 67.26],
-[1.18, 0.906, 32.32, 13.24, 68.91],
-[1.20, 0.912, 31.93, 13.16, 70.60],
-[1.22, 0.917, 31.57, 13.08, 72.33],
-[1.24, 0.922, 31.23, 13.01, 74.11],
-[1.26, 0.926, 30.92, 12.95, 75.92],
-[1.28, 0.931, 30.62, 12.89, 77.78],
-[1.30, 0.934, 30.34, 12.84, 79.66],
-[1.32, 0.938, 30.08, 12.79, 81.60],
-[1.34, 0.942, 29.83, 12.74, 83.58],
-[1.36, 0.945, 29.60, 12.70, 85.58],
-[1.38, 0.948, 29.39, 12.66, 87.63],
-[1.40, 0.950, 29.18, 12.62, 89.72],
-[1.42, 0.953, 28.99, 12.59, 91.84],
-[1.44, 0.955, 28.80, 12.56, 94.01],
-[1.46, 0.958, 28.63, 12.53, 96.20],
-[1.48, 0.960, 28.47, 12.50, 98.45],
-[1.50, 0.962, 28.31, 12.47, 100.72],
-[1.52, 0.964, 28.16, 12.45, 103.02],
-[1.54, 0.966, 28.02, 12.43, 105.38],
-[1.56, 0.967, 27.89, 12.40, 107.76],
-[1.58, 0.969, 27.76, 12.38, 110.16],
-[1.60, 0.970, 27.64, 12.37, 112.61],
-[1.62, 0.972, 27.53, 12.35, 115.12],
-[1.64, 0.973, 27.42, 12.33, 117.62],
-[1.66, 0.974, 27.31, 12.32, 120.17],
-[1.68, 0.975, 27.21, 12.30, 122.76],
-[1.70, 0.977, 27.12, 12.29, 125.41],
-[1.72, 0.978, 27.03, 12.27, 128.04],
-[1.74, 0.979, 26.94, 12.26, 130.75],
-[1.76, 0.800, 26.86, 12.25, 133.50],
-[1.78, 0.980, 26.78, 12.24, 136.24],
-[1.80, 0.981, 26.70, 12.23, 139.05],
-[1.82, 0.982, 26.63, 12.22, 141.85],
-[1.84, 0.983, 26.56, 12.21, 144.78],
-[1.86, 0.983, 26.49, 12.20, 147.65],
-[1.88, 0.984, 26.43, 12.19, 150.60],
-[1.90, 0.985, 26.37, 12.18, 153.54],
-[1.92, 0.985, 26.31, 12.18, 156.53],
-[1.94, 0.986, 26.25, 12.17, 159.56],
-[1.96, 0.987, 26.19, 12.16, 162.60],
-[1.98, 0.987, 26.14, 12.16, 165.75],
-[2.00, 0.988, 26.09, 12.15, 168.80],
-
-
-
-[0.50, 0.238, 37.06, 50.40, 49.92],
-[0.51, 0.253, 30.06, 47.48, 49.11],
-[0.52, 0.268, 23.66, 44.83, 48.38],
-[0.53, 0.283, 17.79, 42.42, 47.72],
-[0.54, 0.298, 12.39, 40.23, 47.13],
-[0.55, 0.314, 107.42, 38.23, 46.60],
-[0.56, 0.330, 102.83, 36.40, 46.13],
-[0.57, 0.345, 98.59, 34.74, 45.72],
-[0.58, 0.361, 94.67, 33.21, 45.35],
-[0.59, 0.377, 91.02, 31.81, 45.04],
-[0.60, 3.930, 87.62, 30.52, 44.77],
-[0.61, 0.409, 84.46, 29.33, 44.54],
-[0.62, 0.425, 81.51, 28.24, 44.35],
-[0.63, 0.441, 78.76, 27.24, 44.21],
-[0.64, 0.456, 76.18, 26.30, 44.10],
-[0.65, 0.472, 73.76, 25.45, 44.02],
-[0.66, 0.487, 71.49, 24.65, 43.98],
-[0.67, 0.502, 69.36, 23.91, 47.97],
-[0.68, 0.517, 67.36, 23.22, 43.98],
-[0.69, 0.531, 65.47, 22.59, 44.03],
-[0.70, 0.545, 63.69, 22.00, 44.11],
-[0.71, 0.559, 62.01, 21.44, 44.21],
-[0.72, 0.573, 60.42, 20.93, 44.34],
-[0.73, 0.587, 58.92, 20.45, 44.49],
-[0.74, 0.600, 57.51, 20.00, 44.66],
-[0.75, 0.613, 56.16, 19.38, 44.86],
-[0.76, 0.625, 54.89, 19.19, 45.08],
-[0.77, 0.637, 53.69, 18.83, 45.33],
-[0.78, 0.649, 52.54, 18.48, 45.59],
-[0.79, 0.661, 51.46, 18.16, 45.87],
-[0.80, 0.672, 50.42, 17.86, 46.17],
-[0.81, 0.683, 49.44, 17.57, 46.30],
-[0.82, 0.693, 48.51, 17.31, 46.84],
-[0.83, 0.703, 47.62, 17.06, 47.20],
-[0.84, 0.713, 46.78, 16.82, 47.57],
-[0.85, 0.723, 45.97, 16.60, 47.97],
-[0.86, 0.732, 45.21, 16.39, 48.38],
-[0.87, 0.741, 44.48, 16.19, 48.81],
-[0.88, 0.750, 43.78, 16.00, 49.25],
-[0.89, 0.758, 43.12, 15.82, 49.71],
-[0.90, 0.766, 42.48, 15.66, 50.19],
-[0.91, 0.774, 41.87, 15.50, 50.68],
-[0.92, 0.782, 41.30, 15.35, 51.18],
-[0.93, 0.789, 40.74, 15.21, 51.50],
-[0.94, 0.796, 40.21, 15.07, 52.24],
-[0.95, 0.803, 39.70, 14.95, 52.78],
-[0.96, 0.809, 39.22, 14.82, 53.35],
-[0.97, 0.816, 38.75, 14.72, 53.92],
-[0.98, 0.822, 38.31, 14.60, 54.52],
-[0.99, 0.828, 37.88, 14.50, 55.12],
-[1.00, 0.833, 37.47, 14.40, 55.74],
-
-
-])
-
-
-class Inicio(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = None
- self.load_ui()
- self.load_signals()
-
- def load_ui(self):
- self.ui = loadUi('inicio_alt.ui',self)
- self.label.setStyleSheet("Background-Color: #ddebff;")
-
- self.setWindowTitle('Navier - inicio')
-
- self.pushButton.setIcon(QtGui.QIcon('./btn_inicio_vigas.png'))
- self.pushButton.setIconSize(QtCore.QSize(52,52))
- self.pushButton_3.setIcon(QtGui.QIcon('./btn_inicio_pilares.png'))
- self.pushButton_3.setIconSize(QtCore.QSize(42,42))
- self.pushButton_9.setIcon(QtGui.QIcon('./btn_inicio_lajes.png'))
- self.pushButton_9.setIconSize(QtCore.QSize(42,42))
- self.pushButton_11.setIcon(QtGui.QIcon('./btn_inicio_fundacoes.png'))
- self.pushButton_11.setIconSize(QtCore.QSize(45,45))
-
-
- self.label_5.setStyleSheet("Background-Color: #ddebff;")
- self.label_10.setStyleSheet("Background-Color: #ddebff;")
- self.label_9.setStyleSheet("Background-Color: #ddebff;")
- self.label_11.setStyleSheet("Background-Color: #ddebff;")
-
- self.pushButton_2.setIcon(QtGui.QIcon('./btn_caa.png'))
- self.pushButton_2.setIconSize(QtCore.QSize(45,45))
- self.pushButton_5.setIcon(QtGui.QIcon('./btn_cadicional.png'))
- self.pushButton_5.setIconSize(QtCore.QSize(45,45))
- self.pushButton_6.setIcon(QtGui.QIcon('./btn_tabbitolas.png'))
- self.pushButton_6.setIconSize(QtCore.QSize(45,45))
- self.pushButton_7.setIcon(QtGui.QIcon('./btn_tabmarcus.png'))
- self.pushButton_7.setIconSize(QtCore.QSize(45,45))
- self.pushButton_8.setIcon(QtGui.QIcon('./btn_flexaosimples.png'))
- self.pushButton_8.setIconSize(QtCore.QSize(45,45))
- self.pushButton_23.setIcon(QtGui.QIcon('./btn_flexaocomposta.png'))
- self.pushButton_23.setIconSize(QtCore.QSize(45,45))
-
- self.label_21.setToolTip('Brunel - programa de cálculo e verificação de perfis metálicos para perfis brasileiros')
- self.label_22.setToolTip('EngTool - aplicação mobile para cálculo de vigas de concreto armado')
-
- self.setFixedSize(570, 450)
-
- #scriptDir = os.path.dirname(os.path.realpath(__file__))
- #self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- self.show()
-
-
- def load_signals(self):
- self.pushButton.clicked.connect(self.iniciar_vigas)
- self.pushButton_3.clicked.connect(self.iniciar_pilares)
- self.pushButton_9.clicked.connect(self.iniciar_lajes)
- self.pushButton_11.clicked.connect(self.iniciar_fundacoes)
-
- self.pushButton_2.clicked.connect(self.iniciar_classe_agressividade)
- self.pushButton_5.clicked.connect(self.iniciar_carga_adicional)
- self.pushButton_6.clicked.connect(self.iniciar_tabela_bitolas)
-
- self.pushButton_7.clicked.connect(lambda: self.abrirTabelaAuxiliar(tabela_marcus))
- self.pushButton_23.clicked.connect(lambda: self.abrirTabelaAuxiliar(abaco_normal))
- self.pushButton_8.clicked.connect(lambda: self.abrirTabelaAuxiliar(abaco_obliqua))
-
-
- def abrirTabelaAuxiliar(self,file):
- if sys.platform == 'linux2':
- subprocess.call(["xdg-open", file])
- else:
- os.startfile(file)
-
- def iniciar_vigas(self):
- print('vigas')
- vigas.show()
- def iniciar_pilares(self):
- print('pilares')
- pilares.show()
- def iniciar_lajes(self):
- print('lajes')
- lajes.show()
- def iniciar_fundacoes(self):
- print('fundações')
- sapatas.show()
- #--------------------------- forms complementares -----------------------------
- def iniciar_carga_adicional(self):
- print('carga adicional')
- carga_adicional.show()
- def iniciar_tabela_bitolas(self):
- print('carga adicional')
- tabela_bitolas.show()
- def iniciar_classe_agressividade(self):
- print('classe de agressividade')
- tabela_classe_agressividade.show()
-
-
-
-class Vigas(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = loadUi('vigas_alt.ui',self)
- self.load_signals()
-
- #scriptDir = os.path.dirname(os.path.realpath(__file__))
- #self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- self.setWindowTitle('Navier - Vigas')
- self.setFixedSize(860, 620)
-
- def load_signals(self):
- print('viga carregado')
- self.pushButton.clicked.connect(lambda: self.stackedWidget.setCurrentIndex(1))
- self.pushButton_2.clicked.connect(lambda: self.stackedWidget.setCurrentIndex(0))
- self.pushButton_3.clicked.connect(lambda: detalhar_vigas.show())
-
- self.pushButton_6.clicked.connect(self.calcular_viga_index)
- self.pushButton_7.clicked.connect(self.limpar_vigas)
-
- self.radioButton.clicked.connect(lambda: self.lineEdit_35.setText('0.450'))
- self.radioButton_2.clicked.connect(lambda: self.lineEdit_35.setText('0.628'))
-
-
- def calcular_viga_index(self):
- aux = self.stackedWidget.currentIndex() #retorn o indice do stackedwidget e indica se o cálculo é de simples ou dupla
- #aux == 0 (Simples), aux == 1 (Dupla)
- if aux == 1:
- self.calcular_viga_simples()
- else:
- self.calcular_viga_dupla()
-
- def truncar(self,x):
- aux = '{:.9f}'.format(x)
- return aux
-
- def calcular_viga_cortante(self):
- aux = self.stackedWidget.currentIndex()
- fck_viga = float(self.comboBox.currentText())
- fcd_viga = fck_viga/1.4
- fyk_viga = float(self.comboBox_2.currentText())
- fyd_viga = fyk_viga/1.15
-
- mk_viga = float(self.lineEdit.text())
- vk_viga = float(self.lineEdit_2.text())
-
- if aux == 1:
- bw_viga = float(self.lineEdit_3.text())
- h_viga = float(self.lineEdit_4.text())
- d_viga = float(self.lineEdit_5.text())
-
- else:
- bw_viga = float(self.lineEdit_15.text())
- h_viga = float(self.lineEdit_16.text())
- d_viga = float(self.lineEdit_17.text())
-
-
- theta_transversal = 45
- alfa_transversal = 90
- if self.radioButton_4.isChecked():
- theta_transversal = self.spinBox.value()
-
- theta_transversal = (theta_transversal/180)*math.pi
- alfa_transversal = (alfa_transversal/180)*math.pi
-
- fator_cotangentes_transversal = ((math.cos(alfa_transversal)/math.sin(alfa_transversal))) + ((math.cos(theta_transversal)/math.sin(theta_transversal)))
- fator_cotangentes_transversal = 1
-
- vsd = vk_viga * 1.4
- vrd2 = 0.27 * (1-(fck_viga/250)) * (bw_viga/100) * fcd_viga * (d_viga/100) *(math.sin(2*theta_transversal))*fator_cotangentes_transversal * 1000
- print('VSD: ',vsd)
- print('VRD2: ',vrd2)
-
- if vrd2 < vsd:
- QMessageBox.about(self, "Alerta", "A seção de concreto não permite gerar bielas resistentes à compressão. Reveja as dimensões da viga ou esforços de cálculo para a estrutura.")
- else:
- vc_0 = 0.09*(fck_viga**(2/3))*(bw_viga/100)*(d_viga/100)*1000
- if self.radioButton_4.isChecked():
- vc_0 = vc_0*((vrd2 - vsd)/(vrd2 - vc_0))
-
- vsw = vsd - vc_0
-
- #as_transversal = (vsw/(0.9*(d_viga/100)*fyd_viga*fator_cotangentes_transversal*math.sin(alfa_transversal)))*1000
- as_transversal = (vsw/(0.9*(d_viga/100)*fyd_viga)*math.tan(theta_transversal))*1000
-
- taxa_aco_cortante_retangular = 0.2*(0.3*fck_viga**(2/3))/fyk_viga
-
- as_min_transversal = ((bw_viga*10)*taxa_aco_cortante_retangular)*1000 # para deixar em mm²
-
- print('vk_viga: ',vk_viga)
- print('vsd: ',vsd)
- print('vrd2: ',vrd2)
- print('vc_0: ',vc_0)
- print('vsw: ',vsw)
- print('as_transversal: ',as_transversal)
- print('taxa_aco_cortante_retangular: ',taxa_aco_cortante_retangular)
- print('as_min_transversal',as_min_transversal)
-
- #------------------------------------------- saida de dados --------------------------------------------------
- self.lineEdit_30.setText(str(round(vk_viga*1.4, ndigits=4)))
- self.lineEdit_31.setText(str(round(vrd2, ndigits=4)))
- self.lineEdit_32.setText(str(round(vc_0, ndigits=4)))
- self.lineEdit_33.setText(str(round(vsw, ndigits=4)))
-
- self.lineEdit_34.setText(str(round(as_transversal, ndigits=4)))
- self.lineEdit_37.setText(str(round(as_min_transversal, ndigits=4)))
-
-
- if (vsd <= 0.67*vrd2):
- espass_maximo = 30
- else:
- espass_maximo = 20
-
- global info_viga_cortante
- info_viga_cortante = [str(vsw), espass_maximo]
-
-
-
- def calcular_viga_simples(self):
- mk_viga = self.lineEdit.text()
- vk_viga = self.lineEdit_2.text()
- bw_viga = self.lineEdit_3.text()
- h_viga = self.lineEdit_4.text()
- d_viga = self.lineEdit_5.text()
-
- if (mk_viga != '0' and vk_viga != '0' and bw_viga != '0' and h_viga != '0' and d_viga != '0'):
- fck_viga = float(self.comboBox.currentText())
- fcd_viga = fck_viga/1.4
- fyk_viga = float(self.comboBox_2.currentText())
- fyd_viga = fyk_viga/1.15
-
- mk_viga = float(self.lineEdit.text())
- vk_viga = float(self.lineEdit_2.text())
- bw_viga = float(self.lineEdit_3.text())
- h_viga = float(self.lineEdit_4.text())
- d_viga = float(self.lineEdit_5.text())
-
- d_linha_viga = h_viga - d_viga
- self.lineEdit_21.setText(str(round(d_linha_viga, ndigits=2)))
- area_secao_viga = bw_viga * h_viga
-
- kmd_viga = (mk_viga * 1.4 * 1000)/((bw_viga/100) * ((d_viga/100)**2) * (0.85*fcd_viga*1000000))
- if kmd_viga >0.5:
- QMessageBox.about(self, "Alerta", "Os esforços especificados não são suportados pela seção de concreto analisada. Por favor altera as dimensões da seção da viga ou reveja os esforços de cálculo para a estrutura.")
- else:
- kx_viga = (1 - math.sqrt(1 - 2*kmd_viga))/0.8
- kz_viga = 1 - 0.4*kx_viga
- as_viga = (mk_viga * 1.4 * 1000)/(kz_viga * (d_viga/100) * fyd_viga)
-
- as_sobre_apoio_viga = as_viga/3
- if h_viga >= 60:
- as_pele = (0.1/100)*area_secao_viga*100
- else:
- as_pele = 0
-
- as_max_viga = (4/100)*area_secao_viga*100
-
- if fck_viga == 20:
- taxa_aco_viga_retangular = 0.15/100
- elif fck_viga == 25:
- taxa_aco_viga_retangular = 0.15/100
- elif fck_viga == 30:
- taxa_aco_viga_retangular = 0.173/100
- elif fck_viga == 35:
- taxa_aco_viga_retangular = 0.201/100
- elif fck_viga == 40:
- taxa_aco_viga_retangular = 0.203/100
- elif fck_viga == 45:
- taxa_aco_viga_retangular = 0.259/100
- elif fck_viga == 50:
- taxa_aco_viga_retangular = 0.288/100
-
- as_min_viga = taxa_aco_viga_retangular * area_secao_viga*100
-
-
- if kx_viga < 0:
- dominio_viga = 'Domínio 1'
- elif kx_viga > 0 and kx_viga <0.259:
- dominio_viga = 'Domínio 2'
- elif kx_viga > 0.259 and kx_viga <0.45:
- dominio_viga = 'Domínio 3 - Dúctil'
- elif kx_viga > 0.45 and kx_viga <0.63:
- dominio_viga = 'Domínio 3 - Não Dúctil'
- elif (kx_viga > 0.628 and kx_viga <1):
- dominio_viga = 'Domínio 4a'
- elif (kx_viga > 0.438 and kx_viga <1) and (fyk_viga == 600):
- dominio_viga = 'Domínio 4a'
- else:
- dominio_viga = 'Domínio 4b'
-
- kmd_viga = self.truncar(kmd_viga)
- kx_viga = self.truncar(kx_viga)
- kz_viga = self.truncar(kz_viga)
-
- print('kmd_viga: ',kmd_viga)
- print('kx_viga: ',kx_viga)
- print('kz_viga: ',kz_viga)
- print('as_viga: ',as_viga)
- print('as_sobre_apoio_viga: ',as_sobre_apoio_viga)
- print('as_max_viga: ',as_max_viga)
- print('as_min_viga',as_min_viga)
-
- #-------------------------------------- saida de dados ------------------------------------------------
- self.lineEdit_6.setText(str(round(mk_viga*1.4,ndigits=4)))
- self.lineEdit_13.setText(dominio_viga)
- self.lineEdit_7.setText(str(kmd_viga))
- self.lineEdit_8.setText(str(kx_viga))
- self.lineEdit_9.setText(str(kz_viga))
-
- self.lineEdit_10.setText(str(round(as_viga,ndigits=4)))
- self.lineEdit_11.setText(str(round(as_sobre_apoio_viga,ndigits=4)))
- self.lineEdit_12.setText(str(round(as_pele,ndigits=4)))
- self.lineEdit_14.setText(str(round(as_max_viga,ndigits=4)))
- self.lineEdit_20.setText(str(round(as_min_viga,ndigits=4)))
-
- #-------------------------------------------------------------------------------------------------
- if (dominio_viga == 'Domínio 4a') or (dominio_viga == 'Domínio 4b'):
- QMessageBox.about(self, "Atenção", "Domínio de cálculo 4, recomenda-se utilizar, em seção retangular, armadura dupla ou seção tê para contenção dos esforços de compressão do concreto.")
-
- if as_viga > as_max_viga:
- QMessageBox.about(self, "Atenção", "Área Total calculada superior a Área Máxima especificada para a seção da viga.")
- if as_viga < as_min_viga:
- QMessageBox.about(self, "Atenção", "Área Total calculada inferior a Área Mínima especificada para a seção da viga.")
-
- self.calcular_viga_cortante()
-
- global info_viga
- info_viga = [str(as_viga),str(bw_viga),str(h_viga),str(d_viga),str(1.9)]
-
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes!")
-
-
-
- def calcular_viga_dupla(self):
- mk_viga = self.lineEdit.text()
- vk_viga = self.lineEdit_2.text()
- bw_viga = self.lineEdit_15.text()
- h_viga = self.lineEdit_16.text()
- d_viga = self.lineEdit_17.text()
-
- if (mk_viga != '0' and vk_viga != '0' and bw_viga != '0' and h_viga != '0' and d_viga != '0'):
- fck_viga = float(self.comboBox.currentText())
- fcd_viga = fck_viga/1.4
- fyk_viga = float(self.comboBox_2.currentText())
- fyd_viga = fyk_viga/1.15
-
- mk_viga = float(self.lineEdit.text())
- vk_viga = float(self.lineEdit_2.text())
- bw_viga = float(self.lineEdit_15.text())
- h_viga = float(self.lineEdit_16.text())
- d_viga = float(self.lineEdit_17.text())
-
- d_linha_viga = h_viga - d_viga
- self.lineEdit_27.setText(str(round(d_linha_viga, ndigits=4)))
-
- xis_dominio = float(self.lineEdit_35.text())
-
- d_min_viga = math.sqrt((mk_viga*1.4*1000)/((bw_viga/100) * (fcd_viga*1000000) * (0.68*xis_dominio - 0.272*(xis_dominio**2))))
-
- x_lim_viga = xis_dominio * (d_viga/100)
-
- momento_lim_viga = 0.68 * (bw_viga/100) * (fcd_viga*1000) * x_lim_viga*((d_viga/100) - 0.4*x_lim_viga)
-
- print('d_min_viga: ',d_min_viga)
- print('x_lim_viga: ',x_lim_viga)
- print('momento_lim_viga: ',momento_lim_viga)
-
- if d_min_viga < (h_viga/100):
- self.lineEdit_36.setText(str(round(d_min_viga, ndigits=5)))
- self.lineEdit_18.setText(str(round(x_lim_viga, ndigits=5)))
- QMessageBox.about(self, "Observação", "A altura atual da viga é maior que a altura útil mínima, calcule como simplesmente armada")
-
- else:
-
- momento_lim_viga = 0.68 * (bw_viga/100) * (fcd_viga*1000) * x_lim_viga*((d_viga/100) - 0.4*x_lim_viga)
- momento_2_viga = (mk_viga*1.4) - momento_lim_viga
-
- as_compressao_viga = (momento_2_viga * 1000)/(((d_viga/100) - (d_linha_viga/100))*(fyd_viga))
- #as_tracao_viga = ((momento_lim_viga * 1000)/((1 - 0.4*x_lim_viga)*(d_viga/100)*fyd_viga))
- as_tracao_viga = ((momento_lim_viga * 1000)/((1 - 0.4*xis_dominio)*(d_viga/100)*fyd_viga))
-
- as_tracao_viga = as_tracao_viga + as_compressao_viga
-
- as_total_viga = as_tracao_viga + as_compressao_viga
-
- as_sobre_apoio_viga = as_tracao_viga/3
-
- area_secao_viga = bw_viga * h_viga
- if h_viga >= 60:
- as_pele = (0.1/100)*area_secao_viga*100
- else:
- as_pele = 0
-
- if fck_viga == 20:
- taxa_aco_viga_retangular = 0.15/100
- elif fck_viga == 25:
- taxa_aco_viga_retangular = 0.15/100
- elif fck_viga == 30:
- taxa_aco_viga_retangular = 0.173/100
- elif fck_viga == 35:
- taxa_aco_viga_retangular = 0.201/100
- elif fck_viga == 40:
- taxa_aco_viga_retangular = 0.203/100
- elif fck_viga == 45:
- taxa_aco_viga_retangular = 0.259/100
- elif fck_viga == 50:
- taxa_aco_viga_retangular = 0.288/100
-
- as_max_viga = (4/100)*area_secao_viga*100
- as_min_viga = taxa_aco_viga_retangular * area_secao_viga*100
-
-
- print('momento_lim_viga: ',momento_lim_viga)
- print('momento_2_viga: ',momento_2_viga)
- print('as_compressao_viga: ',as_compressao_viga)
- print('as_tracao_viga: ',as_tracao_viga)
-
-
- #------------------------------------------ saida de dados --------------------------------------------------
- self.lineEdit_36.setText(str(round(d_min_viga, ndigits=5)))
- self.lineEdit_18.setText(str(round(x_lim_viga, ndigits=5)))
- self.lineEdit_26.setText(str(round(momento_lim_viga, ndigits=5)))
- self.lineEdit_19.setText(str(round(momento_2_viga, ndigits=5)))
-
- self.lineEdit_22.setText(str(round(as_compressao_viga, ndigits=5)))
- self.lineEdit_28.setText(str(round(as_tracao_viga, ndigits=5)))
- self.lineEdit_23.setText(str(round(as_sobre_apoio_viga, ndigits=5)))
- self.lineEdit_24.setText(str(round(as_pele, ndigits=5)))
- self.lineEdit_38.setText(str(round(as_total_viga, ndigits=2)))
- self.lineEdit_25.setText(str(round(as_max_viga, ndigits=2)))
- self.lineEdit_29.setText(str(round(as_min_viga, ndigits=2)))
- #------------------------------------------ ------------- --------------------------------------------------
-
- if as_total_viga > as_max_viga:
- QMessageBox.about(self, "Atenção", "Área Total calculada superior a Área Máxima especificada para a seção da viga.")
- if as_total_viga < as_min_viga:
- QMessageBox.about(self, "Atenção", "Área Total calculada inferior a Área Mínima especificada para a seção da viga.")
-
- self.calcular_viga_cortante()
-
- global info_viga
- info_viga = [str(as_tracao_viga),str(bw_viga),str(h_viga),str(d_viga),str(1.9)]
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes!")
-
-
- def limpar_vigas(self):
- self.comboBox.setCurrentIndex(0)
- self.comboBox_2.setCurrentIndex(0)
- self.lineEdit.setText('0')
- self.lineEdit_2.setText('0')
- self.lineEdit_3.setText('0')
- self.lineEdit_4.setText('0')
- self.lineEdit_5.setText('0')
- self.lineEdit_21.setText('0')
-
- self.lineEdit_6.setText('')
- self.lineEdit_7.setText('')
- self.lineEdit_8.setText('')
- self.lineEdit_9.setText('')
- self.lineEdit_10.setText('')
- self.lineEdit_11.setText('')
- self.lineEdit_12.setText('')
- self.lineEdit_13.setText('')
- self.lineEdit_14.setText('')
-
- self.lineEdit_15.setText('0')
- self.lineEdit_16.setText('0')
- self.lineEdit_17.setText('0')
- self.lineEdit_27.setText('0')
-
- self.lineEdit_36.setText('')
- self.lineEdit_18.setText('')
- self.lineEdit_26.setText('')
- self.lineEdit_19.setText('')
- self.lineEdit_22.setText('')
- self.lineEdit_28.setText('')
- self.lineEdit_23.setText('')
- self.lineEdit_24.setText('')
- self.lineEdit_38.setText('')
- self.lineEdit_25.setText('')
- self.lineEdit_29.setText('')
-
- self.lineEdit_30.setText('')
- self.lineEdit_31.setText('')
- self.lineEdit_32.setText('')
- self.lineEdit_33.setText('')
- self.lineEdit_34.setText('')
- self.lineEdit_37.setText('')
-
-tabela_bitolas_ferro = [
- [6.3, 31.17],
- [8, 50.26],
- [10, 78.53],
- [12.5, 122.71],
- [16, 201.06],
- [20, 314.15],
- [25, 490.87],
- [32, 804.24],
- [40, 1256.63]
- ]
-
-#info_viga = ['95','12','45','40','1.9']
-#info_viga = [As,bw,h,d,agregado]
-
-class Detalhar_viga(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.load_ui()
- self.load_signals()
-
- def load_ui(self):
- self.ui = loadUi('detalhamento_vigas_alt.ui',self)
-
- #scriptDir = os.path.dirname(os.path.realpath(__file__))
- #self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- self.setWindowTitle('Navier - Vigas - Detalhamento')
- self.setFixedSize(845,600)
-
-
- def load_signals(self):
- print('inicializado')
- self.pushButton.clicked.connect(self.calcular_area)
- #self.pushButton.clicked.connect(self.calcular_estribos)
- self.pushButton_2.clicked.connect(self.limpar_detalhamento)
- self.pushButton_3.clicked.connect(self.recuperarValores)
-
-
- #pg.plot(x=[0,1,2,3,4], y=[0,1,2,3,4]**2 )
- header = self.tableWidget.horizontalHeader()
- header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
- header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(3, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(4, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(5, QtWidgets.QHeaderView.Stretch)
-
- self.widget.setTitle('nº barras/Bitola')
- self.widget.showGrid(x=True,y=True,alpha=1)
-
- #if '0' not in info_viga:
- # self.recuperarValores()
-
- def calcular_estribos(self):
- vsw = self.lineEdit_14.text()
- fyk_estribo = self.comboBox_2.currentText()
- tramos = self.lineEdit_15.text()
-
- if (vsw != '0' and tramos != '0'):
- vsw = float(self.lineEdit_14.text())
- bitola_estribo = float(self.comboBox.currentText())
- fyk_estribo = float(self.comboBox_2.currentText())
- tramos = float(self.lineEdit_15.text())
- d = float(self.lineEdit_13.text())
-
- espass_horizontal = info_viga_cortante[1]
-
- area_bitola = (3.14*((bitola_estribo/1000)**2)/4)
-
- print(vsw)
- print(bitola_estribo)
- print(tramos)
- print(fyk_estribo)
- print(area_bitola)
-
-
- s_estribo = ((tramos * area_bitola * 0.9 * (d/100) * (fyk_estribo*100000/1.15))/vsw*1000)/100
- s_estribo = round(s_estribo, ndigits=3)
-
- if s_estribo < espass_horizontal:
- self.lineEdit.setText(str(espass_horizontal))
- else:
- self.lineEdit.setText(str(s_estribo))
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes para o cálculo dos Estribos!")
-
-
- def recuperarValores(self):
- area_aco = info_viga[0]
- base = info_viga[1]
- altura = info_viga[2]
- d = info_viga[3]
- d_agreg = info_viga[4]
-
- vsw = info_viga_cortante[0]
-
- self.lineEdit_11.setText(area_aco)
- self.lineEdit_10.setText(base)
- self.lineEdit_9.setText(altura)
- self.lineEdit_12.setText(d_agreg)
- self.lineEdit_13.setText(d)
- self.lineEdit_14.setText(vsw)
-
- def calcular_area(self):
- area_aco = self.lineEdit_11.text()
- base = self.lineEdit_10.text()
- altura = self.lineEdit_9.text()
- d_agreg = self.lineEdit_12.text()
- d = self.lineEdit_13.text()
-
- if (area_aco != '0' and base != '0' and altura != '0' and d_agreg != '0' and d != '0'):
-
- self.widget.clear()
- area_aco = float(self.lineEdit_11.text())
- base = float(self.lineEdit_10.text())
- altura = float(self.lineEdit_9.text())
- cobrimento = float(self.comboBox_3.currentText())
- bitola_estribo = float(self.comboBox.currentText())
- x = []
- y = []
- z = []
- cont = 0
- for i in tabela_bitolas_ferro:
- n_barras = float(area_aco/i[1])
- print('bitola: ',i[0],' - nº barras: ',n_barras)
-
- self.tableWidget.setItem(cont,2, QTableWidgetItem(str(round(n_barras, ndigits=2))))
- self.tableWidget.setItem(cont,3, QTableWidgetItem(str(round(n_barras +0.5)+1)))
-
- x.append(i[0])
- y.append(round(n_barras +0.5)+1)
-
- bitola = x[cont]
- n_barras = (round(n_barras +0.5)+1)
-
- espass_horizontal = (round(base - 2*(cobrimento+bitola_estribo/10) - n_barras*(bitola/10), ndigits=2))/(n_barras-1)
-
- z.append(round(espass_horizontal,ndigits=2))
- self.tableWidget.setItem(cont,4, QTableWidgetItem(str(espass_horizontal)))
-
- print('base:',base)
- print('cobrimento:',cobrimento)
- print('bitola_estribo:',bitola_estribo)
- print('n_barras:',n_barras)
-
- cont +=1
-
- #print(x)
- #print(y)
- #print(z)
-
- self.widget.plot(x=x,y=y,pen=(3))
-
- self.calcular_espacamentos()
- self.calcular_estribos()
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes!")
-
-
- def calcular_espacamentos(self):
- bitola = float(self.comboBox_4.currentText())
- d_agreg = float(self.lineEdit_12.text())
-
- s_horizontal = max(2, (bitola/10), 1.2*d_agreg)
- s_vertical = max(2, (bitola/10), 0.5*d_agreg)
-
- #------------------------------- saida de dados ----------------------------------
- self.lineEdit_7.setText(str(s_horizontal))
- self.lineEdit_8.setText(str(s_vertical))
-
- def limpar_detalhamento(self):
- self.widget.clear()
- self.lineEdit_11.setText(str('0'))
- self.lineEdit_9.setText(str('0'))
- self.lineEdit_10.setText(str('0'))
- self.lineEdit_7.setText(str('0'))
- self.lineEdit_8.setText(str('0'))
-
-
-
-class Tabela_Bitolas(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = loadUi('bitolas_ferros.ui',self)
-
- #scriptDir = os.path.dirname(os.path.realpath(__file__))
- #self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- header = self.tableWidget.horizontalHeader()
- header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
-
- self.setWindowTitle('Navier - Tabela de Bitolas')
- self.setFixedSize(456,372)
-
-
-global pilares_info
-pilares_info = [0,0,0,0]
-
-global pilares_info_aco
-pilares_info_aco = [0, 0, 0, 0, 0, 0, 0]
-
-class Pilares(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = loadUi('pilares_alt.ui',self)
- self.load_signals()
-
- #scriptDir = os.path.dirname(os.path.realpath(__file__))
- #self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- self.setWindowTitle('Navier - Pilares')
- self.setFixedSize(997,670)
-
- def load_signals(self):
- print('pilares carregado')
- self.cont_x = 0
- self.cont_y = 0
-
- self.pushButton_6.clicked.connect(self.calcular_pilares)
- self.pushButton_7.clicked.connect(self.limpar_pilares)
-
- self.pushButton.clicked.connect(self.gerar_envoltoria)
- self.pushButton_3.clicked.connect(lambda: pilares_areas_aco.show())
-
-
- def calcular_pilares(self):
- x_pilar = self.lineEdit.text()
- y_pilar = self.lineEdit_2.text()
- altura_pilar = self.lineEdit_3.text()
- altura_lance = self.lineEdit_4.text()
-
- nk_pilar = self.lineEdit_5.text()
- momento_x_topo = self.lineEdit_6.text()
- momento_x_base = self.lineEdit_7.text()
- momento_y_topo = self.lineEdit_8.text()
- momento_y_base = self.lineEdit_9.text()
-
-
- if (x_pilar != '0' and y_pilar != '0' and altura_pilar != '0' and altura_lance != '0' and nk_pilar != '0'):
- fck_pilar = float(self.comboBox_3.currentText())
- fcd_pilar = fck_pilar/1.4
- fyk_pilar = float(self.comboBox_4.currentText())
- fyd_pilar = fyk_pilar/1.15
- cobrimento_pilar = float(self.comboBox_5.currentText())
-
- x_pilar = float(self.lineEdit.text())
- y_pilar = float(self.lineEdit_2.text())
- altura_pilar = float(self.lineEdit_3.text())
- altura_lance = float(self.lineEdit_4.text())
-
- nk_pilar = float(self.lineEdit_5.text())
- momento_x_topo = float(self.lineEdit_6.text())
- momento_x_base = float(self.lineEdit_7.text())
- momento_y_topo = float(self.lineEdit_8.text())
- momento_y_base = float(self.lineEdit_9.text())
-
- area_secao_pilar = (x_pilar/100)*(y_pilar/100)
-
- #nd_pilar = (nk_pilar + ((x_pilar/100)*(y_pilar/100)*altura_pilar*25)) * 1.4
- nd_pilar = (nk_pilar) * 1.4
- md_x_topo = 1.4 * momento_x_topo
- md_x_base = 1.4 * momento_x_base
- md_y_topo = 1.4 * momento_y_topo
- md_y_base = 1.4 * momento_y_base
-
-
- tipo_apoio_x = 'AA'
-
- if momento_x_topo == 0 and momento_x_base == 0 and momento_y_topo == 0 and momento_y_base == 0:
- self.tipo_pilar = 'intermediario'
- elif momento_x_topo == 0 and momento_x_base == 0:
- self.tipo_pilar = 'extremidade-x'
- elif momento_y_topo == 0 and momento_y_base == 0:
- self.tipo_pilar = 'extremidade-y'
- else:
- self.tipo_pilar = 'canto'
-
-
- self.lineEdit_13.setText(str(round(md_x_topo, ndigits=5)))
- self.lineEdit_14.setText(str(round(md_x_base, ndigits=5)))
- self.lineEdit_22.setText(str(round(md_y_topo, ndigits=5)))
- self.lineEdit_28.setText(str(round(md_y_base, ndigits=5)))
-
- #-Eixo-X----------------------------------------------------------------------
- b = y_pilar
- h = x_pilar
-
- m_a = max(md_x_topo, md_x_base)
- m_b = min(md_x_topo, md_x_base)
-
- if self.tipo_pilar == 'intermediario' or self.tipo_pilar == 'extremidade-x':
- alfa_b_x = 1.0
- else:
- alfa_b_x = (0.6 + 0.4*(m_b/m_a))
-
- if alfa_b_x < 0.4:
- alfa_b_x = 0.4
-
- #excen_min_x = (1.5+0.03*h)
- momento_min_x = (nd_pilar *(1.5+0.03*h))/100
- excen_min_x = momento_min_x/nd_pilar
-
- if md_x_topo < momento_min_x:
- md_x_topo = momento_min_x
- print('momento topo - mínimo')
- alfa_b_x = 1.0
- if md_x_base < momento_min_x:
- md_x_base = momento_min_x
- print('momento base - mínimo')
- alfa_b_x = 1.0
-
- compr_efetivo_x = (altura_pilar*100) + h
- if (altura_lance*100 < compr_efetivo_x):
- compr_efetivo_x = altura_lance*100
-
- excen_x_acidental = compr_efetivo_x/400
- v_0 = (nd_pilar*1000)/(area_secao_pilar * fcd_pilar*1000000)
-
- excentricidade_relativa = (max(md_x_topo,md_x_base,momento_min_x)/nd_pilar)/h
-
- lambda_pilar_x = 3.46 * (compr_efetivo_x/h)
- lambda_pilar_x_limite = (25 + 12.5*(excentricidade_relativa))/alfa_b_x
- if lambda_pilar_x_limite < 35:
- lambda_pilar_x_limite = 35
-
- excen_2_x = (compr_efetivo_x**2)/10 *(0.005/((v_0+0.5)*h))
-
- md2_x = nd_pilar * (excen_2_x/100)
-
- if lambda_pilar_x > lambda_pilar_x_limite:
- print('efeitos de 2 ordem considerados')
- excen_2 = (compr_efetivo_x**2)/10 *(0.005/((v_0+0.5)*h))
- md2_x_relativo = nd_pilar * (excen_2/100)
- else:
- md2_x_relativo = 0
- print('efeitos de 2 ordem desconsiderados')
-
- msd_x_intermediario = alfa_b_x * max(abs(md_x_topo), abs(md_x_base), abs(momento_min_x)) + md2_x_relativo
- #msd_x_intermediario = alfa_b_x * abs(momento_min_x) + md2_x_relativo
-
- mi_x = msd_x_intermediario/(h * area_secao_pilar * fcd_pilar)/10
- delta_x = cobrimento_pilar/h
-
-
- #-Eixo-Y----------------------------------------------------------------------
- h = y_pilar
- b = x_pilar
-
- m_a = max(md_y_topo, md_y_base)
- m_b = min(md_y_topo, md_y_base)
-
- if self.tipo_pilar == 'intermediario' or self.tipo_pilar == 'extremidade-y':
- alfa_b_y = 1.0
- else:
- alfa_b_y = (0.6 + 0.4*(m_b/m_a))
-
- if alfa_b_y < 0.4:
- alfa_b_y = 0.4
-
- momento_min_y = (nd_pilar *(1.5+0.03*h))/100
- excen_min_y = momento_min_y/nd_pilar
-
- if md_y_topo < momento_min_y:
- md_y_topo = momento_min_y
- print('momento topo - mínimo')
- alfa_b_y = 1.0
- if md_y_base < momento_min_y:
- md_y_base = momento_min_y
- print('momento base - mínimo')
- alfa_b_y = 1.0
-
- compr_efetivo_y = (altura_pilar*100) + h
- if (altura_lance*100 < compr_efetivo_y):
- compr_efetivo_y = altura_lance*100
-
- excen_y_acidental = compr_efetivo_y/400
- v_0 = (nd_pilar*1000)/(area_secao_pilar * fcd_pilar*1000000)
-
- excentricidade_relativa = (max(md_y_topo,md_y_base,momento_min_y)/nd_pilar)/h
-
- lambda_pilar_y = 3.46 * (compr_efetivo_y/h)
- lambda_pilar_y_limite = (25 + 12.5*(excentricidade_relativa))/alfa_b_y
- if lambda_pilar_y_limite < 35:
- lambda_pilar_y_limite = 35
-
- excen_2_y = (compr_efetivo_y**2)/10 *(0.005/((v_0+0.5)*h))
-
- md2_y = nd_pilar * (excen_2_y/100)
-
- if lambda_pilar_y > lambda_pilar_y_limite:
- print('efeitos de 2 ordem considerados')
- excen_2 = (compr_efetivo_y**2)/10 *(0.005/((v_0+0.5)*h))
- md2_y_relativo = nd_pilar * (excen_2/100)
- else:
- md2_y_relativo = 0
- print('efeitos de 2 ordem desconsiderados')
-
- msd_y_intermediario = alfa_b_y * max(abs(md_y_topo), abs(md_y_base), abs(momento_min_y)) + md2_y_relativo
- #msd_y_intermediario = alfa_b_y * abs(momento_min_y) + md2_y_relativo
-
- mi_y = msd_y_intermediario/(h * area_secao_pilar * fcd_pilar)/10
- delta_y = cobrimento_pilar/h
-
-
- #--------------------------------------------- saida de dados ---------------------------------------------
- self.lineEdit_10.setText(str(round(nd_pilar, ndigits=4)))
- self.lineEdit_11.setText(str(round(area_secao_pilar, ndigits=4)))
- self.lineEdit_12.setText(str(round(v_0, ndigits=4)))
-
- self.lineEdit_15.setText(str(round(momento_min_x, ndigits=5)))
- self.lineEdit_16.setText(str(round(excen_min_x*100, ndigits=5)))
- self.lineEdit_17.setText(str(round(lambda_pilar_x, ndigits=5)))
- self.lineEdit_18.setText(str(round(lambda_pilar_x_limite, ndigits=5)))
- self.lineEdit_19.setText(str(round(excen_2_x, ndigits=5)))
- self.lineEdit_20.setText(str(round(md2_x, ndigits=5)))
- self.lineEdit_21.setText(str(round(msd_x_intermediario, ndigits=5)))
-
- self.lineEdit_24.setText(str(round(momento_min_y, ndigits=5)))
- self.lineEdit_25.setText(str(round(excen_min_y*100, ndigits=5)))
- self.lineEdit_26.setText(str(round(lambda_pilar_y, ndigits=5)))
- self.lineEdit_23.setText(str(round(lambda_pilar_y_limite, ndigits=5)))
- self.lineEdit_30.setText(str(round(excen_2_y, ndigits=5)))
- self.lineEdit_29.setText(str(round(md2_y, ndigits=5)))
- self.lineEdit_27.setText(str(round(msd_y_intermediario, ndigits=5)))
-
- self.lineEdit_31.setText(str(round(mi_x, ndigits=2)))
- self.lineEdit_32.setText(str(round(mi_y, ndigits=2)))
- self.lineEdit_33.setText(str(round(delta_x, ndigits=2)))
- self.lineEdit_34.setText(str(round(delta_y, ndigits=2)))
-
- global pilares_info
- pilares_info = [msd_x_intermediario, msd_y_intermediario, momento_min_x, momento_min_y]
-
- if md2_x_relativo == 0:
- self.label_39.setText('não considera 2º ordem')
- else:
- self.label_39.setText('considera 2º ordem')
-
- if md2_y_relativo == 0:
- self.label_44.setText('não considera 2º ordem')
- else:
- self.label_44.setText('considera 2º ordem')
-
-
- if self.tipo_pilar == 'intermediario':
- self.label.setText('PILAR INTERMEDIÁRIO')
- elif (self.tipo_pilar == 'extremidade-x') or (self.tipo_pilar == 'extremidade-y'):
- self.label.setText('PILAR DE EXTREMIDADE')
- else:
- self.label.setText('PILAR DE CANTO')
-
- global pilares_info_aco
- pilares_info_aco = [mi_x, delta_x, mi_y, delta_y, fck_pilar, area_secao_pilar, nk_pilar]
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes!")
-
-
-
- def gerar_envoltoria(self):
- msd_x_intermediario = pilares_info[0]
- msd_y_intermediario = pilares_info[1]
- momento_min_x = pilares_info[2]
- momento_min_y = pilares_info[3]
-
- x = []
- y = []
- for i in range(360):
- theta = i
- theta_conv = (theta*math.pi)/180
-
- seno = math.sin(theta_conv)
- seno = momento_min_y * seno
-
- cosseno = math.cos(theta_conv)
- cosseno = momento_min_x * cosseno
-
- x.append(seno)
- y.append(cosseno)
-
- z = []
- w = []
- for j in range(360):
- theta = j
- theta_conv = (theta*math.pi)/180
-
- seno = math.sin(theta_conv)
- seno = msd_y_intermediario * seno
-
- cosseno = math.cos(theta_conv)
- cosseno = msd_x_intermediario * cosseno
-
- z.append(seno)
- w.append(cosseno)
-
- # create plot
- '''plt = pg.plot(x, y, title='theTitle', pen='r')
- plt.showGrid(x=True,y=True)
- '''
- # create plot
- plt = pg.plot()
- plt.clear()
- plt.showGrid(x=True,y=True)
- plt.addLegend()
- plt.setTitle('Envoltória de Momentos')
-
-
- # set properties
- plt.setLabel('left', 'Momentos Y', units='KN.m')
- plt.setLabel('bottom', 'Momentos X', units='KN.m')
- plt.setXRange(0,10)
- plt.setYRange(0,20)
-
-
- plt.enableAutoRange()
- plt.setWindowTitle('pyqtgraph plot')
- # plot
- c1 = plt.plot(x, y, pen='r', name='Envoltória Momentos min')
- c2 = plt.plot(z, w, pen='b', name='Envoltória Momentos máx')
-
-
-
- def limpar_pilares(self):
- print('limpar')
- self.comboBox_3.setCurrentIndex(0)
- self.comboBox_4.setCurrentIndex(0)
- self.comboBox_5.setCurrentIndex(0)
-
- self.lineEdit.setText('0')
- self.lineEdit_2.setText('0')
- self.lineEdit_3.setText('0')
- self.lineEdit_4.setText('0')
- self.lineEdit_5.setText('0')
- self.lineEdit_6.setText('0')
- self.lineEdit_7.setText('0')
- self.lineEdit_8.setText('0')
- self.lineEdit_9.setText('0')
-
- self.lineEdit_10.setText('')
- self.lineEdit_11.setText('')
- self.lineEdit_12.setText('')
- self.lineEdit_13.setText('')
- self.lineEdit_14.setText('')
- self.lineEdit_15.setText('')
- self.lineEdit_16.setText('')
- self.lineEdit_17.setText('')
- self.lineEdit_18.setText('')
- self.lineEdit_19.setText('')
- self.lineEdit_20.setText('')
- self.lineEdit_21.setText('')
- self.lineEdit_22.setText('')
- self.lineEdit_23.setText('')
- self.lineEdit_24.setText('')
- self.lineEdit_25.setText('')
- self.lineEdit_26.setText('')
- self.lineEdit_27.setText('')
- self.lineEdit_28.setText('')
- self.lineEdit_29.setText('')
- self.lineEdit_30.setText('')
-
- self.lineEdit_31.setText('')
- self.lineEdit_32.setText('')
- self.lineEdit_33.setText('')
- self.lineEdit_34.setText('')
-
-
-
-
-class Pilar_area_aco(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.load_ui()
- self.load_signals()
-
- def load_ui(self):
- self.ui = loadUi('pilares_areas_aco.ui',self)
-
- #scriptDir = os.path.dirname(os.path.realpath(__file__))
- #self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- self.setWindowTitle('Navier - Pilares - Áreas de Aço')
- self.setFixedSize(484,300)
-
- self.pushButton_4.setIcon(QtGui.QIcon('./btn_flexaosimples.png'))
- self.pushButton_4.setIconSize(QtCore.QSize(50,60))
- self.pushButton_5.setIcon(QtGui.QIcon('./btn_flexaocomposta.png'))
- self.pushButton_5.setIconSize(QtCore.QSize(50,60))
-
- def load_signals(self):
- print('inicializado')
- self.pushButton_2.clicked.connect(self.calcular_area_aco)
- self.pushButton.clicked.connect(self.recuperar_dados)
- self.pushButton_3.clicked.connect(self.limpar)
- self.pushButton_4.clicked.connect(lambda: self.abrirTabelaAuxiliar(abaco_normal))
- self.pushButton_5.clicked.connect(lambda: self.abrirTabelaAuxiliar(abaco_obliqua))
-
- def recuperar_dados(self):
- self.lineEdit_2.setText(str(round(pilares_info_aco[0], ndigits=2)))
- self.lineEdit_3.setText(str(round(pilares_info_aco[1], ndigits=2)))
- self.lineEdit_5.setText(str(round(pilares_info_aco[2], ndigits=2)))
- self.lineEdit_6.setText(str(round(pilares_info_aco[3], ndigits=2)))
- self.lineEdit_12.setText(str(round(pilares_info_aco[4], ndigits=2)))
- self.lineEdit_13.setText(str(round(pilares_info_aco[5], ndigits=2)))
- self.lineEdit_14.setText(str(round(pilares_info_aco[6], ndigits=2)))
-
- def calcular_area_aco(self):
- fck = float(self.lineEdit_12.text())
- fcd = fck/1.4
- fyd = 500/1.15
- area_concreto = float(self.lineEdit_13.text())
- nk = float(self.lineEdit_14.text())
- nd = 1.4 * nk
-
- mi_x = float(self.lineEdit_2.text())
- delta_x = float(self.lineEdit_3.text())
-
- mi_y = float(self.lineEdit_5.text())
- delta_y = float(self.lineEdit_6.text())
-
- omega_x = float(self.lineEdit_4.text())
- omega_y = float(self.lineEdit_7.text())
-
- as_x = (omega_x * (area_concreto*1000000) * fcd)/fyd
- as_y = (omega_y * (area_concreto*1000000) * fcd)/fyd
-
- as_x = round(as_x, ndigits=3)
- as_y = round(as_y, ndigits=3)
-
- as_pilar_min = 0.15 * (nd/fyd)
- if as_pilar_min < (0.004*area_concreto*100000):
- as_pilar_min = round((0.004*area_concreto*100000), ndigits=3)
-
- as_pilar_max = round((0.08*area_concreto*1000000), ndigits=3)
-
- #-------------------------------------- saída de dados ----------------------------------------------------
- self.lineEdit_8.setText(str(as_x))
- self.lineEdit_9.setText(str(as_y))
- self.lineEdit_10.setText(str(as_pilar_max))
- self.lineEdit_11.setText(str(as_pilar_min))
-
- def teste(self):
- print('teste')
-
- def limpar(self):
- self.lineEdit_2.setText('0')
- self.lineEdit_3.setText('0')
- self.lineEdit_4.setText('1')
- self.lineEdit_5.setText('0')
- self.lineEdit_6.setText('0')
- self.lineEdit_7.setText('1')
- self.lineEdit_8.setText('0')
- self.lineEdit_9.setText('0')
- self.lineEdit_10.setText('0')
- self.lineEdit_11.setText('0')
- self.lineEdit_12.setText('0')
- self.lineEdit_13.setText('0')
- self.lineEdit_14.setText('0')
-
- def abrirTabelaAuxiliar(self,file):
- if sys.platform == 'linux2':
- subprocess.call(["xdg-open", file])
- else:
- os.startfile(file)
-
-
-
-
-class Lajes(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = loadUi('lajes_alt.ui',self)
-
- self.lado1 = 'livre'
- self.lado2 = 'livre'
- self.lado3 = 'livre'
- self.lado4 = 'livre'
- self.label_37.hide()
- self.label_38.hide()
- self.label_40.hide()
- self.label_41.hide()
- global caso
- caso = '1'
- global lx_lage
- lx_lage = 'l_menor'
- self.lineEdit.setReadOnly(True)
-
- self.load_signals()
-
- #scriptDir = os.path.dirname(os.path.realpath(__file__))
- #self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- self.setWindowTitle('Navier - Lajes')
- self.setFixedSize(1245,587)
-
-
- def load_signals(self):
- print('lajes iniciado')
- self.pushButton.clicked.connect(self.estado_l1)
- self.pushButton_2.clicked.connect(self.estado_l2)
- self.pushButton_3.clicked.connect(self.estado_l3)
- self.pushButton_4.clicked.connect(self.estado_l4)
- self.pushButton.clicked.connect(self.situacao_laje)
- self.pushButton_2.clicked.connect(self.situacao_laje)
- self.pushButton_3.clicked.connect(self.situacao_laje)
- self.pushButton_4.clicked.connect(self.situacao_laje)
-
- self.pushButton_5.clicked.connect(lambda: self.abrirTabelaAuxiliar(tabela_marcus))
- self.pushButton_6.clicked.connect(self.calcular_laje)
- self.pushButton_7.clicked.connect(self.limpar_lajes)
-
- self.toolButton.clicked.connect(self.revelar_carg_acidental)
-
- def abrirTabelaAuxiliar(self,file):
- if sys.platform == 'linux2':
- subprocess.call(["xdg-open", file])
- else:
- os.startfile(file)
-
- def teste(self):
- lado1 = float(self.lineEdit_3.text())
- lado2 = float(self.lineEdit_4.text())
- espes = float(self.lineEdit_5.text())
-
-
- pp = (espes * 25)/100
- self.lineEdit.setText(str(pp))
-
- def revelar_carg_acidental(self):
- print('oi--')
- carga_adicional.show()
-
- def estado_l1(self):
- if self.lado1 == 'livre':
- self.lado1 = 'engastado'
- pixmap = QPixmap('./engv.png')
- self.pushButton.setIcon(QIcon(pixmap))
- else:
- self.lado1 = 'livre'
- pixmap = QPixmap('./livv.png')
- self.pushButton.setIcon(QIcon(pixmap))
-
- def estado_l2(self):
- if self.lado2 == 'livre':
- self.lado2 = 'engastado'
- pixmap = QPixmap('./engh.png')
- self.pushButton_2.setIcon(QIcon(pixmap))
- else:
- self.lado2 = 'livre'
- pixmap = QPixmap('./livh.png')
- self.pushButton_2.setIcon(QIcon(pixmap))
-
- def estado_l3(self):
- if self.lado3 == 'livre':
- self.lado3 = 'engastado'
- pixmap = QPixmap('./engh.png')
- self.pushButton_3.setIcon(QIcon(pixmap))
- else:
- self.lado3 = 'livre'
- pixmap = QPixmap('./livh.png')
- self.pushButton_3.setIcon(QIcon(pixmap))
-
- def estado_l4(self):
- if self.lado4 == 'livre':
- self.lado4 = 'engastado'
- pixmap = QPixmap('./engv.png')
- self.pushButton_4.setIcon(QIcon(pixmap))
- else:
- self.lado4 = 'livre'
- pixmap = QPixmap('./livv.png')
- self.pushButton_4.setIcon(QIcon(pixmap))
-
- def situacao_laje(self):
- l1 = self.lado1
- l2 = self.lado2
- l3 = self.lado3
- l4 = self.lado4
-
- cota_v1 = self.label_37
- cota_v2 = self.label_40
- cota_h1 = self.label_38
- cota_h2 = self.label_41
-
- if (l1 == 'livre' and l2 == 'livre' and l3 == 'livre' and l4 == 'livre'):
- global caso
- caso = '1'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- global lx_lage
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'livre' and l3 == 'livre' and l4 == 'livre') or (l1 == 'livre' and l2 == 'livre' and l3 == 'livre' and l4 == 'engastado'):
- caso = '2'
-
- cota_v1.hide()
- cota_v2.hide()
- cota_h1.show()
- cota_h2.show()
-
- lx_lage = 'l_maior'
- elif (l1 == 'livre' and l2 == 'engastado' and l3 == 'livre' and l4 == 'livre') or (l1 == 'livre' and l2 == 'livre' and l3 == 'engastado' and l4 == 'livre') :
- caso = '2'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'engastado' and l3 == 'livre' and l4 == 'livre') or (l1 == 'engastado' and l2 == 'livre' and l3 == 'engastado' and l4 == 'livre') or (l1 == 'livre' and l2 == 'engastado' and l3 == 'livre' and l4 == 'engastado') or (l1 == 'livre' and l2 == 'livre' and l3 == 'engastado' and l4 == 'engastado'):
- caso = '3'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'livre' and l3 == 'livre' and l4 == 'engastado'):
- caso = '4'
-
- cota_v1.hide()
- cota_v2.hide()
- cota_h1.show()
- cota_h2.show()
-
- lx_lage = 'l_maior'
- elif (l1 == 'livre' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'livre'):
- caso = '4'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'livre' and l3 == 'engastado' and l4 == 'engastado') or (l1 == 'engastado' and l2 == 'engastado' and l3 == 'livre' and l4 == 'engastado'):
- caso = '5'
-
- cota_v1.hide()
- cota_v2.hide()
- cota_h1.show()
- cota_h2.show()
-
- lx_lage = 'l_maior'
- elif (l1 == 'livre' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'engastado') or (l1 == 'engastado' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'livre'):
- caso = '5'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'engastado'):
- caso = '6'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- else:
- caso='ainda não existe, não sei como você chegou até aqui srsrrsrsrsrsrs'
-
-
- print(caso)
- self.lineEdit_6.setText(str(caso))
-
- def calcular_laje(self):
- lado_maior = float(self.lineEdit_3.text())
- lado_menor = float(self.lineEdit_4.text())
- espes = float(self.lineEdit_5.text())
- d = float(self.lineEdit_27.text())
-
- self.lineEdit_7.setText('')
- self.lineEdit_9.setText('')
- self.lineEdit_8.setText('')
- self.lineEdit_10.setText('')
- self.lineEdit_16.setText('')
- self.lineEdit_14.setText('')
- self.lineEdit_15.setText('')
- self.lineEdit_16.setText('')
-
- if lado_maior != 0 and lado_menor != 0 and espes != 0 and d != 0:
- lado1 = float(self.lineEdit_3.text())
- lado2 = float(self.lineEdit_4.text())
- espes = float(self.lineEdit_5.text())
- d = float(self.lineEdit_27.text())
- carreg_adicional = float(self.lineEdit_2.text())
- #fck_laje = float(self.comboBox.currentText())
- #fcd_laje = fck_laje/1.4
- #fyk_laje = float(self.comboBox_2.currentText())
- #fyd_laje = fyk_laje/1.15
-
- pp = (espes * 25)/100
- self.lineEdit.setText(str(pp))
-
- carreg_total = pp + carreg_adicional
- #print(caso)
- #print(lx_lage)
- #---------------------------------- cálculo do Lx baseado no caso do tipo de situação da laje -----------------
- global lx
- global lambda_laje
- if lx_lage == 'l_menor':
- lx = lado2
- lambda_laje = round((lado1/lado2),ndigits=2)
- elif lx_lage == 'l_maior':
- lx = lado1
- lambda_laje = round((lado2/lado1),ndigits=2)
- print(lx_lage)
-
-
- #---------------------------------- definição se a laje é unidirecional ou bidirecional baseado no lambda -----------------
- global tipo_laje
- if float(lambda_laje) > 2.001:
- tipo_laje = 'UNIDIRECIONAL'
- self.laje_unidirecional(carreg_total)
- else:
- tipo_laje = 'BIDIRECIONAL'
- #self.label_43.setStyleSheet("Background: url('laje_unidirecional_modelo.png') no-repeat")
-
- mx = my = nx = ny = ''
-
- if caso == '1':
- caso1 = marcus_caso1
- linhas = len(caso1)
- colunas = len(caso1[0])
-
- for i in range(linhas):
- aux = caso1[i][0]
- if lambda_laje == aux:
- print(caso1[i])
- mx = caso1[i][2]
- my = caso1[i][3]
-
- print('mx: ',mx)
- print('my: ',my)
-
- if caso == '2':
- caso2 = marcus_caso2
- linhas = len(caso2)
- colunas = len(caso2[0])
-
- for i in range(linhas):
- aux = caso2[i][0]
- if lambda_laje == aux:
- print(caso2[i])
- mx = caso2[i][2]
- nx = caso2[i][3]
- my = caso2[i][4]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
-
- if caso == '3':
- caso3 = marcus_caso3
- linhas = len(caso3)
- colunas = len(caso3[0])
-
- for i in range(linhas):
- aux = caso3[i][0]
- if lambda_laje == aux:
- print(caso3[i])
- mx = caso3[i][2]
- nx = caso3[i][3]
- my = caso3[i][4]
- ny = caso3[i][5]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
- print('ny: ',ny)
-
- if caso == '4':
- caso4 = marcus_caso4
- linhas = len(caso4)
- colunas = len(caso4[0])
-
- for i in range(linhas):
- aux = caso4[i][0]
- if lambda_laje == aux:
- print(caso4[i])
- mx = caso4[i][2]
- nx = caso4[i][3]
- my = caso4[i][4]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
-
- if caso == '5':
- caso5 = marcus_caso5
- linhas = len(caso5)
- colunas = len(caso5[0])
-
- for i in range(linhas):
- aux = caso5[i][0]
- if lambda_laje == aux:
- print(caso5[i])
- mx = caso5[i][2]
- nx = caso5[i][3]
- my = caso5[i][4]
- ny = caso5[i][5]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
- print('ny: ',ny)
-
- if caso == '6':
- caso6 = marcus_caso6
- linhas = len(caso6)
- colunas = len(caso6[0])
-
- for i in range(linhas):
- aux = caso6[i][0]
- if lambda_laje == aux:
- print(caso6[i])
- mx = caso6[i][2]
- nx = caso6[i][3]
- my = caso6[i][4]
- ny = caso6[i][5]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
- print('ny: ',ny)
-
- print(lx)
- if mx != '':
- self.lineEdit_7.setText(str(mx))
- momento_pos_x = ((carreg_total * (lx**2))/mx)
- momento_pos_x = round(momento_pos_x,ndigits=4)
-
-
- self.lineEdit_13.setText(str(momento_pos_x))
- #else:
- # self.lineEdit_13.setText('0')
- if nx != '':
- self.lineEdit_9.setText(str(nx))
- momento_neg_x = round(((carreg_total * (lx**2))/nx),ndigits=4)
- self.lineEdit_14.setText(str(momento_neg_x))
- #momento_neg_x = round(momento_neg_x,ndigits=2)
- #else:
- # self.lineEdit_14.setText('0')
- if my != '':
- self.lineEdit_8.setText(str(my))
- momento_pos_y = ((carreg_total * (lx**2))/my)
- momento_pos_y = round(momento_pos_y,ndigits=4)
- self.lineEdit_15.setText(str(momento_pos_y))
- #else:
- # self.lineEdit_15.setText('0')
- if ny != '':
- self.lineEdit_10.setText(str(ny))
- momento_neg_y = round(((carreg_total * (lx**2))/ny),ndigits=4)
- self.lineEdit_16.setText(str(momento_neg_y))
- #momento_neg_y = round(momento_neg_y,ndigits=2)
-
- #----------------------------------- enviar resultados de saida ao programa ---------------------------------------
- self.lineEdit_11.setText(str(lambda_laje))
- self.label_16.setText(str(tipo_laje))
- self.lineEdit_12.setText(str(carreg_total))
-
- self.resultados_laje()
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes")
-
-
- def laje_unidirecional(self,carreg_total):
-
- self.lado1 = 'livre'
- pixmap = QPixmap('./livv.png')
- self.pushButton.setIcon(QIcon(pixmap))
-
- self.lado4 = 'livre'
- pixmap = QPixmap('./livv.png')
- self.pushButton_4.setIcon(QIcon(pixmap))
-
- print('unidirecional')
- #l1 = self.lado1
- l2 = self.lado2
- l3 = self.lado3
- #l4 = self.lado4
- l1 = l4 = 'livre'
- print(carreg_total)
- if (l2 == 'livre' and l3 == 'livre'):
- self.label_43.setStyleSheet("Background: url('./laje_unidirecional_ll2.png') no-repeat")
- momento_pos_y = (carreg_total * (lx**2))/8
- momento_neg_y = 0
- elif (l2 == 'engastado' and l3 == 'engastado'):
- self.label_43.setStyleSheet("Background: url('./laje_unidirecional_ee2.png') no-repeat")
- momento_pos_y = (carreg_total * (lx**2))/24
- momento_neg_y = (carreg_total * (lx**2))/12
- elif (l2 == 'engastado' and l3 == 'livre') or (l2 == 'livre' and l3 == 'engastado'):
- self.label_43.setStyleSheet("Background: url('./laje_unidirecional_le2.png') no-repeat")
- momento_pos_y = (carreg_total * (lx**2))/14.2
- momento_neg_y = (carreg_total * (lx**2))/8
-
- print('momento_pos_y: ',momento_pos_y)
- print('momento_neg_y: ',momento_neg_y)
-
- #----------------------------------- enviar resultados de saida ao programa ---------------------------------------
- momento_pos_y = round(momento_pos_y,ndigits=4)
- self.lineEdit_15.setText(str(momento_pos_y))
- momento_neg_y = round(momento_neg_y,ndigits=4)
- self.lineEdit_16.setText(str(momento_neg_y))
-
- self.lineEdit_13.setText('0')
- self.lineEdit_14.setText('0')
-
- self.lineEdit_11.setText(str(lambda_laje))
- self.label_16.setText(str(tipo_laje))
- self.lineEdit_12.setText(str(carreg_total))
-
- self.resultados_laje()
-
- def truncar(self,x):
- aux = '{:.9f}'.format(x)
- return aux
-
- def resultados_laje(self):
- fck_laje = float(self.comboBox.currentText())
- fcd_laje = fck_laje/1.4
- fyk_laje = float(self.comboBox_2.currentText())
- fyd_laje = fyk_laje/1.15
- espes = float(self.lineEdit_5.text())
-
- area_concreto_laje = round(((espes/100)*1000000),ndigits=4)
-
- ro_armad_minima = 0
- if fck_laje == 20:
- ro_armad_minima = 0.15/100
- elif fck_laje == 25:
- ro_armad_minima = 0.15/100
- elif fck_laje == 30:
- ro_armad_minima = 0.15/100
- elif fck_laje == 35:
- ro_armad_minima = 0.164/100
- elif fck_laje == 40:
- ro_armad_minima = 0.179/100
-
- armad_max_laje = (0.4/100)*area_concreto_laje
- armad_neg_min = ro_armad_minima*area_concreto_laje
- armad_pos_cruz = round(0.67*(ro_armad_minima*area_concreto_laje), ndigits=2)
- armad_princ_unid = ro_armad_minima*area_concreto_laje
- armad_secnd_unid = max((0.2*armad_princ_unid), (90), (0.5*(ro_armad_minima*area_concreto_laje)))
-
-
- mx = self.lineEdit_13.text()
- if mx == '':
- self.lineEdit_13.setText('0')
-
- my = self.lineEdit_15.text()
- if my == '':
- self.lineEdit_15.setText('0')
-
- nx = self.lineEdit_14.text()
- if nx == '':
- self.lineEdit_14.setText('0')
-
- ny = self.lineEdit_16.text()
- if ny == '':
- self.lineEdit_16.setText('0')
-
- fck_laje = float(self.comboBox.currentText())
- fyk_laje = float(self.comboBox_2.currentText())
- fcd_laje = fck_laje* 1000000/1.4
- fyd_laje = fyk_laje* 1000000/1.15
- d_laje = float(self.lineEdit_27.text())
- espes = float(self.lineEdit_5.text())
-
- #------------------------------------------enxerto-----------------------
-
- mx = float(self.lineEdit_13.text())
- my = float(self.lineEdit_15.text())
- nx = float(self.lineEdit_14.text())
- ny = float(self.lineEdit_16.text())
- #print('mx: ',mx)
- #print('nx: ',nx)
- #print('my: ',my)
- #print('ny: ',ny)
- mk_x = mx
- mk_y = my
-
- nk_x = nx
- nk_y = ny
-
-
- md_x = round(1.4 * mk_x, ndigits = 4)
- kmd_x_laje = (md_x * 1000)/(1 * ((d_laje/100)**2) * 0.85 * (fcd_laje))
- kx_x_laje = (1 - math.sqrt(1 - 2*kmd_x_laje))/0.8
- kz_x_laje = 1 - 0.4 * kx_x_laje
-
- as_x_laje = (md_x * 1000/ (kz_x_laje * (d_laje/100) * fyd_laje))*1000000
-
- print('md_x: ', md_x)
- print('kmd_x_laje: ', kmd_x_laje)
- print('kx_x_laje: ', kx_x_laje)
- print('kz_x_laje: ', kz_x_laje)
- print('as_x_laje: ', as_x_laje)
-
- md_y = round(1.4 * mk_y, ndigits = 4)
- kmd_y_laje = (md_y * 1000)/(1 * ((d_laje/100)**2) * 0.85 * (fcd_laje))
- kx_y_laje = (1 - math.sqrt(1 - 2*kmd_y_laje))/0.8
- kz_y_laje = 1 - 0.4 * kx_y_laje
-
- as_y_laje = (md_y * 1000/ (kz_y_laje * (d_laje/100) * fyd_laje))*1000000
-
- print('md_y: ', md_y)
- print('kmd_y_laje: ', kmd_y_laje)
- print('kx_y_laje: ', kx_y_laje)
- print('kz_y_laje: ', kz_y_laje)
- print('as_y_laje: ', as_y_laje)
-
-
- nd_x = round(1.4 * nk_x, ndigits = 4)
- kmd_x_laje_n = (nd_x * 1000)/(1 * ((d_laje/100)**2) * 0.85 * (fcd_laje))
- kx_x_laje_n = (1 - math.sqrt(1 - 2*kmd_x_laje_n))/0.8
- kz_x_laje_n = 1 - 0.4 * kx_x_laje_n
-
- as_x_laje_n = (nd_x * 1000/ (kz_x_laje_n * (d_laje/100) * fyd_laje))*1000000
-
-
- nd_y = round(1.4 * nk_y, ndigits = 4)
- kmd_y_laje_n = (nd_y * 1000)/(1 * ((d_laje/100)**2) * 0.85 * (fcd_laje))
- kx_y_laje_n = (1 - math.sqrt(1 - 2*kmd_y_laje_n))/0.8
- kz_y_laje_n = 1 - 0.4 * kx_y_laje_n
-
- as_y_laje_n = (nd_x * 1000/ (kz_y_laje_n * (d_laje/100) * fyd_laje))*1000000
-
- #------------------------------------------ saida de dados ------------------------------------
- kmd_x_laje = self.truncar(kmd_x_laje)
- kx_x_laje = self.truncar(kx_x_laje)
- kz_x_laje = self.truncar(kz_x_laje)
- as_x_laje = self.truncar(as_x_laje)
-
- kmd_y_laje = self.truncar(kmd_y_laje)
- kx_y_laje = self.truncar(kx_y_laje)
- kz_y_laje = self.truncar(kz_y_laje)
- as_y_laje = self.truncar(as_y_laje)
-
-
- self.lineEdit_17.setText(str(md_x))
- self.lineEdit_18.setText(str(kmd_x_laje))
- self.lineEdit_19.setText(str(kx_x_laje))
- self.lineEdit_20.setText(str(kz_x_laje))
- self.lineEdit_21.setText(str(as_x_laje))
-
- self.lineEdit_22.setText(str(md_y))
- self.lineEdit_24.setText(str(kmd_y_laje))
- self.lineEdit_25.setText(str(kx_y_laje))
- self.lineEdit_26.setText(str(kz_y_laje))
- self.lineEdit_23.setText(str(as_y_laje))
-
-
- self.lineEdit_38.setText(str(area_concreto_laje))
- self.lineEdit_39.setText(str(ro_armad_minima*100))
- self.lineEdit_42.setText(str(armad_max_laje))
- self.lineEdit_40.setText(str(armad_neg_min))
- self.lineEdit_41.setText(str(armad_pos_cruz))
- self.lineEdit_43.setText(str(armad_princ_unid))
- self.lineEdit_44.setText(str(armad_secnd_unid))
-
- if tipo_laje == 'UNIDIRECIONAL':
- self.label_44.setText('Distribuição')
- if float(as_y_laje) < armad_princ_unid:
- self.label_45.setText('Mínima')
- else:
- self.label_45.setText('')
-
- if tipo_laje == 'BIDIRECIONAL':
- if float(as_x_laje) < armad_pos_cruz:
- self.label_44.setText('Mínima')
- else:
- self.label_44.setText('')
-
- if float(as_y_laje) < armad_pos_cruz:
- self.label_45.setText('Mínima')
- else:
- self.label_45.setText('')
-
- def limpar_lajes(self):
- self.comboBox.setCurrentIndex(0)
- self.comboBox_2.setCurrentIndex(0)
-
- self.lineEdit.setText('0')
- self.lineEdit_2.setText('0')
- self.lineEdit_3.setText('0')
- self.lineEdit_4.setText('0')
- self.lineEdit_5.setText('0')
- self.lineEdit_27.setText('0')
-
- self.lineEdit_7.setText('')
- self.lineEdit_8.setText('')
- self.lineEdit_9.setText('')
- self.lineEdit_10.setText('')
-
- self.lineEdit_11.setText('')
- self.lineEdit_12.setText('')
- self.lineEdit_38.setText('')
- self.lineEdit_39.setText('')
- self.lineEdit_42.setText('')
- self.lineEdit_40.setText('')
- self.lineEdit_41.setText('')
- self.lineEdit_43.setText('')
- self.lineEdit_44.setText('')
-
- self.lineEdit_13.setText('')
- self.lineEdit_14.setText('')
- self.lineEdit_15.setText('')
- self.lineEdit_16.setText('')
-
- self.lineEdit_16.setText('')
- self.lineEdit_17.setText('')
- self.lineEdit_18.setText('')
- self.lineEdit_19.setText('')
- self.lineEdit_20.setText('')
- self.lineEdit_21.setText('')
- self.lineEdit_22.setText('')
- self.lineEdit_23.setText('')
- self.lineEdit_24.setText('')
- self.lineEdit_25.setText('')
- self.lineEdit_26.setText('')
-
-
-
-class Carga_Adicional(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
-
- self.ui = loadUi('lajes_carg_adicional_atualizada.ui',self)
-
- header = self.tableWidget.horizontalHeader()
- header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
-
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- self.setWindowTitle('Navier - Cargas Adicionais')
- self.setFixedSize(649,504)
-
-
-
-class Sapatas(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = loadUi('sapatas_alt.ui',self)
- self.load_signals()
-
- #scriptDir = os.path.dirname(os.path.realpath(__file__))
- #self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- self.setWindowTitle('Navier - Sapatas')
- self.setFixedSize(946,574)
-
- def load_signals(self):
- print('sapatas carregado')
- self.pushButton_6.clicked.connect(self.calcular_sapata)
- self.pushButton_7.clicked.connect(self.limpar_sapatas)
- self.pushButton.clicked.connect(self.gerar_dim_sapata)
-
- def arredondar_cinco(self, numero):
- numero = round(numero, ndigits=2)
- numero = 100*numero
- resto = numero%5
- while resto != 0:
- numero += 1
- resto = numero%5
- print('numero:',numero,' - resto: ',resto)
-
- numero = numero/100
- return numero
-
- def calcular_sapata(self):
-
- nk = float(self.lineEdit_3.text())
- momento_x_sapata = float(self.lineEdit_4.text())
- momento_y_sapata = float(self.lineEdit_5.text())
- x_pilar = float(self.lineEdit.text())
- y_pilar = float(self.lineEdit_2.text())
- tensao_adm_solo = float(self.lineEdit_35.text())
- fator_solo = float(self.lineEdit_13.text())
-
- base_y_sapata = float(self.lineEdit_10.text())
- base_x_sapata = float(self.lineEdit_9.text())
- h_total = float(self.lineEdit_11.text())
- h_0 = float(self.lineEdit_12.text())
-
- y_sapata = float(self.lineEdit_9.text())
- x_sapata = float(self.lineEdit_10.text())
- h_total = float(self.lineEdit_11.text())
- h_0 = float(self.lineEdit_12.text())
-
- if (nk != 0 and x_pilar != 0 and y_pilar != 0 and tensao_adm_solo != 0 and fator_solo != 0 and base_y_sapata != 0 and base_x_sapata != 0 and h_total != 0 and h_0 != 0):
- if (x_sapata < 0.6 or y_sapata < 0.6):
- QMessageBox.about(self, "Erro de Entrada", "As sapatas não podem apresentar lados menores de 60 cm, conforme a NBR 6122")
- else:
- fck_sapata = float(self.comboBox.currentText())
- fcd_sapata = fck_sapata / 1.4
- fyk_sapata = float(self.comboBox_2.currentText())
- fyd_sapata = fyk_sapata / 1.15
- nk = float(self.lineEdit_3.text())
- momento_x_sapata = float(self.lineEdit_4.text())
- momento_y_sapata = float(self.lineEdit_5.text())
- tensao_adm_solo = float(self.lineEdit_35.text())
- fator_solo = float(self.lineEdit_13.text())
- angulo_dissp_sapata = float(self.spinBox.value())
-
- angulo_dissp_sapata = (angulo_dissp_sapata / 180)* 3.14
-
- x_pilar = float(self.lineEdit.text())/100
- y_pilar = float(self.lineEdit_2.text())/100
-
- y_sapata = float(self.lineEdit_9.text())
- x_sapata = float(self.lineEdit_10.text())
- h_total = float(self.lineEdit_11.text())
- h_0 = float(self.lineEdit_12.text())
-
- if (momento_x_sapata != 0 and momento_y_sapata == 0) or (momento_x_sapata == 0 and momento_y_sapata != 0):
- fator_acrescimo_dimensoes = 1.05
- elif (momento_x_sapata != 0 and momento_y_sapata != 0):
- fator_acrescimo_dimensoes = 1.103
- else:
- fator_acrescimo_dimensoes = 1.0
-
- x_sapata = round(x_sapata * fator_acrescimo_dimensoes, ndigits=4)
- y_sapata = round(y_sapata * fator_acrescimo_dimensoes, ndigits=4)
-
- wx = x_sapata * (y_sapata**2)/6
- wy = y_sapata * (x_sapata**2)/6
-
- mw_x = (momento_x_sapata/wx)*1000
- mw_y = (momento_y_sapata/wy)*1000
-
- tensao_sapata = (fator_solo*nk*1000)/(x_sapata*y_sapata)
- tensao_max_sapata = tensao_sapata + mw_x + mw_y
- tensao_min_sapata = tensao_sapata - mw_x - mw_y
-
- nk_equiv = (x_sapata * y_sapata * tensao_max_sapata)/fator_solo
- area_sapata = round(fator_solo * ((nk*1000)/(tensao_adm_solo*1000000)),ndigits=6)
-
- ca_sapata = (x_sapata - x_pilar)/2
- cb_sapata = (y_sapata - y_pilar)/2
- h_rig_x = 2/3 * ca_sapata
- h_rig_y = 2/3 * cb_sapata
-
- h_mincis = (1.4 * nk_equiv)/(2*(x_pilar+y_pilar)*0.27*(1-(fck_sapata/250))*(fcd_sapata*1000000))
- if h_mincis < 0.40:
- h_mincis = 0.40
- if h_total < h_mincis:
- h_total = h_mincis
-
- braco_alavanca_sapata = h_total - 0.05
-
- h0a = h_total - ca_sapata * math.tan(angulo_dissp_sapata)
- h0b = h_total - cb_sapata * math.tan(angulo_dissp_sapata)
-
- #h0 = round(h0a, ndigits=2)
- #if h0a < h0b:
- # h0 = round(h0b, ndigits=2)
-
- volume_concreto_sapata = (h_total-h_0)/(3*(x_sapata*y_sapata+x_pilar*y_pilar+math.sqrt(x_sapata*y_sapata*x_pilar*y_pilar))+x_sapata*y_sapata*h_0)
-
- tracao_x_sapata = 1.1 * nk_equiv * (x_sapata - x_pilar)/(8 * braco_alavanca_sapata)
- tracao_y_sapata = 1.1 * nk_equiv * (y_sapata - y_pilar)/(8 * braco_alavanca_sapata)
- as_x_sapata = (1.4 * tracao_x_sapata)/(fyd_sapata)
- as_y_sapata = (1.4 * tracao_y_sapata)/fyd_sapata
-
- taxa_aco_sapata = (0.078 * (fck_sapata)**(2/3))/fyd_sapata
-
- if taxa_aco_sapata <= 0.0015:
- taxa_aco_sapata = 0.0015
-
- as_x_min_laje = 0.67 * taxa_aco_sapata * h_mincis * x_sapata
- as_y_min_laje = 0.67 * taxa_aco_sapata * h_mincis * y_sapata
-
- print('x_sapata: ',x_sapata)
- print('y_sapata: ',y_sapata)
-
- print('wx: ',wx)
- print('wy: ',wy)
- print('mw_x: ',mw_x)
- print('mw_y: ',mw_y)
- print('tensao_max_sapata: ',tensao_max_sapata)
- print('tensao_min_sapata: ',tensao_min_sapata)
- print('nk_equiv: ',nk_equiv)
- print('ca_sapata: ',ca_sapata)
- print('cb_sapata: ',cb_sapata)
- print('h0a: ',h0a)
- print('h0b: ',h0b)
- print('h_mincis: ',h_mincis)
- #print('h0: ',h0)
- print('h_total',h_total)
- print('-------------------------------------\n')
-
- #-------------------------------------- saida dos dados --------------------------------------------------
- self.lineEdit_11.setText(str(h_total))
- #self.lineEdit_12.setText(str(h0))
-
- self.lineEdit_15.setText(str(area_sapata))
- self.lineEdit_16.setText(str(round(wx, ndigits=6)))
- self.lineEdit_17.setText(str(round(wy, ndigits=6)))
- self.lineEdit_18.setText(str(round(nk_equiv, ndigits=4)))
- self.lineEdit_19.setText(str(round(tensao_max_sapata/1000000, ndigits=4)))
- self.lineEdit_20.setText(str(round(tensao_min_sapata/1000000, ndigits=4)))
- self.lineEdit_21.setText(str(round(ca_sapata*100, ndigits=4)))
- self.lineEdit_22.setText(str(round(cb_sapata*100, ndigits=4)))
-
- self.lineEdit_23.setText(str(round(h_rig_x*100, ndigits=4)))
- self.lineEdit_24.setText(str(round(h_rig_y*100, ndigits=4)))
- self.lineEdit_25.setText(str(round(h_mincis*100, ndigits=4)))
- self.lineEdit_26.setText(str(round(h0a*100, ndigits=4)))
- self.lineEdit_28.setText(str(round(h0b*100, ndigits=4)))
- self.lineEdit_27.setText(str(round(volume_concreto_sapata, ndigits=4)))
-
- self.lineEdit_14.setText(str(round(tracao_x_sapata/1000, ndigits=4)))
- self.lineEdit_29.setText(str(round(tracao_y_sapata/1000, ndigits=4)))
- self.lineEdit_30.setText(str(round(as_x_sapata, ndigits=4)))
- self.lineEdit_31.setText(str(round(as_y_sapata, ndigits=4)))
-
- self.lineEdit_32.setText(str(round(taxa_aco_sapata, ndigits=7)))
- self.lineEdit_33.setText(str(round(as_x_min_laje*1000000, ndigits=4)))
- self.lineEdit_34.setText(str(round(as_y_min_laje*1000000, ndigits=4)))
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes")
-
-
-
- def gerar_dim_sapata(self):
-
- nk = float(self.lineEdit_3.text())
- momento_x_sapata = float(self.lineEdit_4.text())
- momento_y_sapata = float(self.lineEdit_5.text())
- x_pilar = float(self.lineEdit.text())
- y_pilar = float(self.lineEdit_2.text())
- tensao_adm_solo = float(self.lineEdit_35.text())
- fator_solo = float(self.lineEdit_13.text())
-
-
- if (nk != 0 and x_pilar != 0 and y_pilar != 0 and tensao_adm_solo != 0 and fator_solo != 0):
-
- fck_sapata = float(self.comboBox.currentText())
- fcd_sapata = fck_sapata / 1.4
- fyk_sapata = float(self.comboBox_2.currentText())
- fyd_sapata = fyk_sapata / 1.15
- nk = float(self.lineEdit_3.text())
- momento_x_sapata = float(self.lineEdit_4.text())
- momento_y_sapata = float(self.lineEdit_5.text())
- tensao_adm_solo = float(self.lineEdit_35.text())
- fator_solo = float(self.lineEdit_13.text())
- angulo_dissp_sapata = float(self.spinBox.value())
-
- angulo_dissp_sapata = (angulo_dissp_sapata / 180)* 3.14
-
- x_pilar = float(self.lineEdit.text())/100
- y_pilar = float(self.lineEdit_2.text())/100
-
- area_sapata = round(fator_solo * ((nk*1000)/(tensao_adm_solo*1000000)),ndigits=6)
-
- y_sapata = 0.5*(y_pilar - x_pilar) + math.sqrt(0.25*((y_pilar - x_pilar)**2)+area_sapata)
-
- x_sapata = area_sapata/y_sapata
-
- if (momento_x_sapata != 0 and momento_y_sapata == 0) or (momento_x_sapata == 0 and momento_y_sapata != 0):
- fator_acrescimo_dimensoes = 1.05
- elif (momento_x_sapata != 0 and momento_y_sapata != 0):
- fator_acrescimo_dimensoes = 1.103
- else:
- fator_acrescimo_dimensoes = 1.0
-
- x_sapata = round(x_sapata * fator_acrescimo_dimensoes, ndigits=4)
- y_sapata = round(y_sapata * fator_acrescimo_dimensoes, ndigits=4)
-
- if x_sapata < 0.6:
- x_sapata = 0.6
- if y_sapata < 0.6:
- y_sapata = 0.6
- print(x_sapata,'<--------------------------------------------------')
- wx = x_sapata * (y_sapata**2)/6
- wy = y_sapata * (x_sapata**2)/6
-
- mw_x = (momento_x_sapata/wx)*1000
- mw_y = (momento_y_sapata/wy)*1000
-
- tensao_sapata = (fator_solo*nk*1000)/(x_sapata*y_sapata)
- tensao_max_sapata = tensao_sapata + mw_x + mw_y
- tensao_min_sapata = tensao_sapata - mw_x - mw_y
-
- x_sapata = self.arredondar_cinco(x_sapata)
- y_sapata = self.arredondar_cinco(y_sapata)
- if x_sapata < 0.6:
- x_sapata = 0.6
- if y_sapata < 0.6:
- y_sapata = 0.6
-
- nk_equiv = (x_sapata * y_sapata * tensao_max_sapata)/fator_solo
-
- ca_sapata = (x_sapata - x_pilar)/2
- cb_sapata = (y_sapata - y_pilar)/2
- h_rig_x = 2/3 * ca_sapata
- h_rig_y = 2/3 * cb_sapata
-
- h_total = h_rig_x
- if h_total < h_rig_y:
- h_total = h_rig_y
-
- h_mincis = (1.4 * nk_equiv)/(2*(x_pilar+y_pilar)*0.27*(1-(fck_sapata/250))*(fcd_sapata*1000000))
- if h_mincis < 0.40:
- h_mincis = 0.40
- h_mincis = round(h_mincis, ndigits=4)
-
- if h_total < h_mincis:
- h_total = h_mincis
-
- h_total = self.arredondar_cinco(h_total)
-
- h0a = h_total - ca_sapata * math.tan(angulo_dissp_sapata)
- h0b = h_total - cb_sapata * math.tan(angulo_dissp_sapata)
- h0_prerrogativo = h_total/3
- tangente_angulo = math.tan(angulo_dissp_sapata)
- h0 = round(h0a, ndigits=2)
- if h0a < h0b:
- h0 = round(h0b, ndigits=2)
- elif h0b < h0_prerrogativo:
- h0 = h0_prerrogativo
- if h0 < 0.25:
- h0 = 0.25
- h0 = self.arredondar_cinco(h0)
-
- volume_concreto_sapata = ((h_total-h0)/3*(x_sapata*y_sapata+x_pilar*y_pilar+math.sqrt(x_sapata*y_sapata*x_pilar*y_pilar)))+(x_sapata*y_sapata*h0)
-
- braco_alavanca_sapata = h_total - 0.05
-
- tracao_x_sapata = 1.1 * nk_equiv * (x_sapata - x_pilar)/(8 * braco_alavanca_sapata)
- tracao_y_sapata = 1.1 * nk_equiv * (y_sapata - y_pilar)/(8 * braco_alavanca_sapata)
- as_x_sapata = (1.4 * tracao_x_sapata)/(fyd_sapata)
- as_y_sapata = (1.4 * tracao_y_sapata)/fyd_sapata
-
- taxa_aco_sapata = (0.078 * (fck_sapata)**(2/3))/fyd_sapata
-
- if taxa_aco_sapata <= 0.0015:
- taxa_aco_sapata = 0.0015
-
- as_x_min_laje = 0.67 * taxa_aco_sapata * h_total * x_sapata
- as_y_min_laje = 0.67 * taxa_aco_sapata * h_total * y_sapata
-
- print('x_sapata: ',x_sapata)
- print('y_sapata: ',y_sapata)
-
- print('wx: ',wx)
- print('wy: ',wy)
- print('mw_x: ',mw_x)
- print('mw_y: ',mw_y)
- print('tensao_max_sapata: ',tensao_max_sapata)
- print('tensao_min_sapata: ',tensao_min_sapata)
- print('nk_equiv: ',nk_equiv)
- print('ca_sapata: ',ca_sapata)
- print('cb_sapata: ',cb_sapata)
- print('h0a: ',h0a)
- print('h0b: ',h0b)
- print('h_mincis: ',h_mincis)
- print('h0: ',h0)
- print('tangente_angulo: ',tangente_angulo)
- print('----------')
- print('h_total: ',h_total)
- print('tracao_x_sapata: ',tracao_x_sapata)
- print('tracao_y_sapata: ',tracao_y_sapata)
- print('as_x_sapata: ',as_x_sapata)
- print('as_y_sapata: ',as_y_sapata)
- print('taxa_aco_sapata: ',taxa_aco_sapata)
- print('as_x_min_laje: ',as_x_min_laje)
- print('as_y_min_laje: ',as_y_min_laje)
- print('-------------------------------------\n')
- #------------------------------ saida de dados ---------------------------------------------
- self.lineEdit_9.setText(str(y_sapata))
- self.lineEdit_10.setText(str(x_sapata))
- self.lineEdit_15.setText(str(area_sapata))
-
- self.lineEdit_11.setText(str(round(h_total, ndigits=4)))
- self.lineEdit_12.setText(str(round(h0, ndigits=4)))
-
-
- self.lineEdit_15.setText(str(area_sapata))
- self.lineEdit_16.setText(str(round(wx, ndigits=6)))
- self.lineEdit_17.setText(str(round(wy, ndigits=6)))
- self.lineEdit_18.setText(str(round(nk_equiv, ndigits=4)))
- self.lineEdit_19.setText(str(round(tensao_max_sapata/1000000, ndigits=4)))
- self.lineEdit_20.setText(str(round(tensao_min_sapata/1000000, ndigits=4)))
- self.lineEdit_21.setText(str(round(ca_sapata*100, ndigits=4)))
- self.lineEdit_22.setText(str(round(cb_sapata*100, ndigits=4)))
-
- self.lineEdit_23.setText(str(round(h_rig_x*100, ndigits=4)))
- self.lineEdit_24.setText(str(round(h_rig_y*100, ndigits=4)))
- self.lineEdit_25.setText(str(round(h_mincis*100, ndigits=4)))
- self.lineEdit_26.setText(str(round(h0a*100, ndigits=4)))
- self.lineEdit_28.setText(str(round(h0b*100, ndigits=4)))
- self.lineEdit_27.setText(str(round(volume_concreto_sapata, ndigits=4)))
-
- self.lineEdit_14.setText(str(round(tracao_x_sapata/1000, ndigits=4)))
- self.lineEdit_29.setText(str(round(tracao_y_sapata/1000, ndigits=4)))
- self.lineEdit_30.setText(str(round(as_x_sapata, ndigits=4)))
- self.lineEdit_31.setText(str(round(as_y_sapata, ndigits=4)))
-
- self.lineEdit_32.setText(str(round(taxa_aco_sapata, ndigits=7)))
- self.lineEdit_33.setText(str(round(as_x_min_laje*1000000, ndigits=4)))
- self.lineEdit_34.setText(str(round(as_y_min_laje*1000000, ndigits=4)))
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes")
-
-
- def limpar_sapatas(self):
- self.comboBox.setCurrentIndex(0)
- self.comboBox_2.setCurrentIndex(0)
-
- self.lineEdit.setText('0')
- self.lineEdit_2.setText('0')
- self.lineEdit_3.setText('0')
- self.lineEdit_4.setText('0')
- self.lineEdit_5.setText('0')
-
- self.lineEdit_35.setText('0')
- self.lineEdit_13.setText('1.1')
- self.spinBox.setValue(30)
-
- self.lineEdit_9.setText('0')
- self.lineEdit_10.setText('0')
- self.lineEdit_11.setText('0')
- self.lineEdit_12.setText('0')
-
- self.lineEdit_15.setText('')
- self.lineEdit_16.setText('')
- self.lineEdit_17.setText('')
- self.lineEdit_18.setText('')
- self.lineEdit_19.setText('')
- self.lineEdit_20.setText('')
- self.lineEdit_21.setText('')
- self.lineEdit_22.setText('')
- self.lineEdit_23.setText('')
- self.lineEdit_24.setText('')
- self.lineEdit_25.setText('')
- self.lineEdit_26.setText('')
- self.lineEdit_27.setText('')
- self.lineEdit_28.setText('')
-
- self.lineEdit_14.setText('')
- self.lineEdit_29.setText('')
- self.lineEdit_30.setText('')
- self.lineEdit_31.setText('')
- self.lineEdit_32.setText('')
- self.lineEdit_33.setText('')
- self.lineEdit_34.setText('')
-
-#---------------------------------------------- Janelas Adicionais ----------------------------------------------------
-
-
-class Tabela_Classe_Agressividade(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.load_ui()
- self.load_signals()
-
- def load_ui(self):
- self.ui = loadUi('class_agres.ui',self)
-
- #scriptDir = os.path.dirname(os.path.realpath(__file__))
- #self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- self.setWindowTitle('Navier - Classes de Agressividade e Cobrimentos Mínimos')
- self.setFixedSize(579, 520)
-
- def load_signals(self):
- print('inicializado')
- header = self.tableWidget.horizontalHeader()
- header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(3, QtWidgets.QHeaderView.Stretch)
-
- self.tableWidget.setSpan(0, 0, 1, 4)
-
- header_2 = self.tableWidget_2.horizontalHeader()
- header_2.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header_2.setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
- header_2.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
- header_2.setSectionResizeMode(3, QtWidgets.QHeaderView.ResizeToContents)
-
- self.tableWidget_2.setSpan(0, 0, 2, 1)
- self.tableWidget_2.setSpan(0, 1, 2, 1)
- self.tableWidget_2.setSpan(0, 3, 2, 1)
-
- self.tableWidget_2.setSpan(3, 0, 2, 1)
- self.tableWidget_2.setSpan(3, 1, 2, 1)
- self.tableWidget_2.setSpan(3, 3, 2, 1)
-
- self.tableWidget_2.setSpan(5, 0, 2, 1)
- self.tableWidget_2.setSpan(5, 1, 2, 1)
- self.tableWidget_2.setSpan(5, 3, 2, 1)
-
-
-
-if __name__ == '__main__':
- app = QtWidgets.QApplication(sys.argv)
- inicio = Inicio()
- vigas = Vigas()
- detalhar_vigas = Detalhar_viga()
- pilares = Pilares()
- pilares_areas_aco = Pilar_area_aco()
- #pilares.show()
- #vigas.show()
- lajes = Lajes()
- #lajes.show()
- sapatas = Sapatas()
- #sapatas.show()
- carga_adicional = Carga_Adicional()
- tabela_classe_agressividade = Tabela_Classe_Agressividade()
- tabela_bitolas = Tabela_Bitolas()
-
- app.exec_()
\ No newline at end of file
diff --git a/inicial_new_1.py b/inicial_new_1.py
deleted file mode 100644
index 2b1fbbd..0000000
--- a/inicial_new_1.py
+++ /dev/null
@@ -1,2355 +0,0 @@
-
-
-import sys
-import os
-import math
-
-from PyQt5.uic import loadUi
-from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QMessageBox, QVBoxLayout, QHBoxLayout, QDialog, QMessageBox, QTableWidget, QTableWidgetItem
-from PyQt5.QtGui import QPixmap, QIcon, QImage
-from PyQt5 import QtWidgets, QtGui, QtCore
-import pyqtgraph as pg
-
-
-import marcus
-
-tabela_marcus = 'tabela_marcus.pdf'
-abaco_normal = 'abaco_normal.pdf'
-abaco_obliqua = 'abaco_obliqua.pdf'
-
-
-class Inicio(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = None
- self.load_ui()
- self.load_signals()
-
- def load_ui(self):
- self.ui = loadUi('inicio_alt.ui',self)
- self.label.setStyleSheet("Background-Color: #ddebff;")
-
- self.setWindowTitle('Navier - inicio')
-
- self.pushButton.setIcon(QtGui.QIcon('./btn_inicio_vigas.png'))
- self.pushButton.setIconSize(QtCore.QSize(52,52))
- self.pushButton_3.setIcon(QtGui.QIcon('./btn_inicio_pilares.png'))
- self.pushButton_3.setIconSize(QtCore.QSize(42,42))
- self.pushButton_9.setIcon(QtGui.QIcon('./btn_inicio_lajes.png'))
- self.pushButton_9.setIconSize(QtCore.QSize(42,42))
- self.pushButton_11.setIcon(QtGui.QIcon('./btn_inicio_fundacoes.png'))
- self.pushButton_11.setIconSize(QtCore.QSize(45,45))
-
-
- self.label_5.setStyleSheet("Background-Color: #ddebff;")
- self.label_10.setStyleSheet("Background-Color: #ddebff;")
- self.label_9.setStyleSheet("Background-Color: #ddebff;")
- self.label_11.setStyleSheet("Background-Color: #ddebff;")
-
- self.pushButton_2.setIcon(QtGui.QIcon('./btn_caa.png'))
- self.pushButton_2.setIconSize(QtCore.QSize(45,45))
- self.pushButton_5.setIcon(QtGui.QIcon('./btn_cadicional.png'))
- self.pushButton_5.setIconSize(QtCore.QSize(45,45))
- self.pushButton_6.setIcon(QtGui.QIcon('./btn_tabbitolas.png'))
- self.pushButton_6.setIconSize(QtCore.QSize(45,45))
- self.pushButton_7.setIcon(QtGui.QIcon('./btn_tabmarcus.png'))
- self.pushButton_7.setIconSize(QtCore.QSize(45,45))
- self.pushButton_8.setIcon(QtGui.QIcon('./btn_flexaosimples.png'))
- self.pushButton_8.setIconSize(QtCore.QSize(45,45))
- self.pushButton_23.setIcon(QtGui.QIcon('./btn_flexaocomposta.png'))
- self.pushButton_23.setIconSize(QtCore.QSize(45,45))
-
- self.label_21.setToolTip('Brunel - programa de cálculo e verificação de perfis metálicos para perfis brasileiros')
- self.label_22.setToolTip('EngTool - aplicação mobile para cálculo de vigas de concreto armado')
-
- self.setFixedSize(570, 450)
-
- #scriptDir = os.path.dirname(os.path.realpath(__file__))
- #self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- self.show()
-
-
- def load_signals(self):
- self.pushButton.clicked.connect(self.iniciar_vigas)
- self.pushButton_3.clicked.connect(self.iniciar_pilares)
- self.pushButton_9.clicked.connect(self.iniciar_lajes)
- self.pushButton_11.clicked.connect(self.iniciar_fundacoes)
-
- self.pushButton_2.clicked.connect(self.iniciar_classe_agressividade)
- self.pushButton_5.clicked.connect(self.iniciar_carga_adicional)
- self.pushButton_6.clicked.connect(self.iniciar_tabela_bitolas)
-
- self.pushButton_7.clicked.connect(lambda: self.abrirTabelaAuxiliar(tabela_marcus))
- self.pushButton_23.clicked.connect(lambda: self.abrirTabelaAuxiliar(abaco_normal))
- self.pushButton_8.clicked.connect(lambda: self.abrirTabelaAuxiliar(abaco_obliqua))
-
-
- def abrirTabelaAuxiliar(self,file):
- if sys.platform == 'linux2':
- subprocess.call(["xdg-open", file])
- else:
- os.startfile(file)
-
- def iniciar_vigas(self):
- print('vigas')
- vigas.show()
- def iniciar_pilares(self):
- print('pilares')
- pilares.show()
- def iniciar_lajes(self):
- print('lajes')
- lajes.show()
- def iniciar_fundacoes(self):
- print('fundações')
- sapatas.show()
- #--------------------------- forms complementares -----------------------------
- def iniciar_carga_adicional(self):
- print('carga adicional')
- carga_adicional.show()
- def iniciar_tabela_bitolas(self):
- print('carga adicional')
- tabela_bitolas.show()
- def iniciar_classe_agressividade(self):
- print('classe de agressividade')
- tabela_classe_agressividade.show()
-
-
-
-class Vigas(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = loadUi('vigas_alt.ui',self)
- self.load_signals()
-
- #scriptDir = os.path.dirname(os.path.realpath(__file__))
- #self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- self.setWindowTitle('Navier - Vigas')
- self.setFixedSize(860, 620)
-
- def load_signals(self):
- print('viga carregado')
- self.pushButton.clicked.connect(lambda: self.stackedWidget.setCurrentIndex(1))
- self.pushButton_2.clicked.connect(lambda: self.stackedWidget.setCurrentIndex(0))
- self.pushButton_3.clicked.connect(lambda: detalhar_vigas.show())
-
- self.pushButton_6.clicked.connect(self.calcular_viga_index)
- self.pushButton_7.clicked.connect(self.limpar_vigas)
-
- self.radioButton.clicked.connect(lambda: self.lineEdit_35.setText('0.450'))
- self.radioButton_2.clicked.connect(lambda: self.lineEdit_35.setText('0.628'))
-
-
- def calcular_viga_index(self):
- aux = self.stackedWidget.currentIndex() #retorn o indice do stackedwidget e indica se o cálculo é de simples ou dupla
- #aux == 0 (Simples), aux == 1 (Dupla)
- if aux == 1:
- self.calcular_viga_simples()
- else:
- self.calcular_viga_dupla()
-
- def truncar(self,x):
- aux = '{:.9f}'.format(x)
- return aux
-
- def calcular_viga_cortante(self):
- aux = self.stackedWidget.currentIndex()
- fck_viga = float(self.comboBox.currentText())
- fcd_viga = fck_viga/1.4
- fyk_viga = float(self.comboBox_2.currentText())
- fyd_viga = fyk_viga/1.15
-
- mk_viga = float(self.lineEdit.text())
- vk_viga = float(self.lineEdit_2.text())
-
- if aux == 1:
- bw_viga = float(self.lineEdit_3.text())
- h_viga = float(self.lineEdit_4.text())
- d_viga = float(self.lineEdit_5.text())
-
- else:
- bw_viga = float(self.lineEdit_15.text())
- h_viga = float(self.lineEdit_16.text())
- d_viga = float(self.lineEdit_17.text())
-
-
- theta_transversal = 45
- alfa_transversal = 90
- if self.radioButton_4.isChecked():
- theta_transversal = self.spinBox.value()
-
- theta_transversal = (theta_transversal/180)*math.pi
- alfa_transversal = (alfa_transversal/180)*math.pi
-
- fator_cotangentes_transversal = ((math.cos(alfa_transversal)/math.sin(alfa_transversal))) + ((math.cos(theta_transversal)/math.sin(theta_transversal)))
- fator_cotangentes_transversal = 1
-
- vsd = vk_viga * 1.4
- vrd2 = 0.27 * (1-(fck_viga/250)) * (bw_viga/100) * fcd_viga * (d_viga/100) *(math.sin(2*theta_transversal))*fator_cotangentes_transversal * 1000
- print('VSD: ',vsd)
- print('VRD2: ',vrd2)
-
- if vrd2 < vsd:
- QMessageBox.about(self, "Alerta", "A seção de concreto não permite gerar bielas resistentes à compressão. Reveja as dimensões da viga ou esforços de cálculo para a estrutura.")
- else:
- vc_0 = 0.09*(fck_viga**(2/3))*(bw_viga/100)*(d_viga/100)*1000
- if self.radioButton_4.isChecked():
- vc_0 = vc_0*((vrd2 - vsd)/(vrd2 - vc_0))
-
- vsw = vsd - vc_0
-
- #as_transversal = (vsw/(0.9*(d_viga/100)*fyd_viga*fator_cotangentes_transversal*math.sin(alfa_transversal)))*1000
- as_transversal = (vsw/(0.9*(d_viga/100)*fyd_viga)*math.tan(theta_transversal))*1000
-
- taxa_aco_cortante_retangular = 0.2*(0.3*fck_viga**(2/3))/fyk_viga
-
- as_min_transversal = ((bw_viga*10)*taxa_aco_cortante_retangular)*1000 # para deixar em mm²
-
- print('vk_viga: ',vk_viga)
- print('vsd: ',vsd)
- print('vrd2: ',vrd2)
- print('vc_0: ',vc_0)
- print('vsw: ',vsw)
- print('as_transversal: ',as_transversal)
- print('taxa_aco_cortante_retangular: ',taxa_aco_cortante_retangular)
- print('as_min_transversal',as_min_transversal)
-
- #------------------------------------------- saida de dados --------------------------------------------------
- self.lineEdit_30.setText(str(round(vk_viga*1.4, ndigits=4)))
- self.lineEdit_31.setText(str(round(vrd2, ndigits=4)))
- self.lineEdit_32.setText(str(round(vc_0, ndigits=4)))
- self.lineEdit_33.setText(str(round(vsw, ndigits=4)))
-
- self.lineEdit_34.setText(str(round(as_transversal, ndigits=4)))
- self.lineEdit_37.setText(str(round(as_min_transversal, ndigits=4)))
-
-
- if (vsd <= 0.67*vrd2):
- espass_maximo = 30
- else:
- espass_maximo = 20
-
- global info_viga_cortante
- info_viga_cortante = [str(vsw), espass_maximo]
-
-
-
- def calcular_viga_simples(self):
- mk_viga = self.lineEdit.text()
- vk_viga = self.lineEdit_2.text()
- bw_viga = self.lineEdit_3.text()
- h_viga = self.lineEdit_4.text()
- d_viga = self.lineEdit_5.text()
-
- if (mk_viga != '0' and vk_viga != '0' and bw_viga != '0' and h_viga != '0' and d_viga != '0'):
- fck_viga = float(self.comboBox.currentText())
- fcd_viga = fck_viga/1.4
- fyk_viga = float(self.comboBox_2.currentText())
- fyd_viga = fyk_viga/1.15
-
- mk_viga = float(self.lineEdit.text())
- vk_viga = float(self.lineEdit_2.text())
- bw_viga = float(self.lineEdit_3.text())
- h_viga = float(self.lineEdit_4.text())
- d_viga = float(self.lineEdit_5.text())
-
- d_linha_viga = h_viga - d_viga
- self.lineEdit_21.setText(str(round(d_linha_viga, ndigits=2)))
- area_secao_viga = bw_viga * h_viga
-
- kmd_viga = (mk_viga * 1.4 * 1000)/((bw_viga/100) * ((d_viga/100)**2) * (0.85*fcd_viga*1000000))
- if kmd_viga >0.5:
- QMessageBox.about(self, "Alerta", "Os esforços especificados não são suportados pela seção de concreto analisada. Por favor altera as dimensões da seção da viga ou reveja os esforços de cálculo para a estrutura.")
- else:
- kx_viga = (1 - math.sqrt(1 - 2*kmd_viga))/0.8
- kz_viga = 1 - 0.4*kx_viga
- as_viga = (mk_viga * 1.4 * 1000)/(kz_viga * (d_viga/100) * fyd_viga)
-
- as_sobre_apoio_viga = as_viga/3
- if h_viga >= 60:
- as_pele = (0.1/100)*area_secao_viga*100
- else:
- as_pele = 0
-
- as_max_viga = (4/100)*area_secao_viga*100
-
- if fck_viga == 20:
- taxa_aco_viga_retangular = 0.15/100
- elif fck_viga == 25:
- taxa_aco_viga_retangular = 0.15/100
- elif fck_viga == 30:
- taxa_aco_viga_retangular = 0.173/100
- elif fck_viga == 35:
- taxa_aco_viga_retangular = 0.201/100
- elif fck_viga == 40:
- taxa_aco_viga_retangular = 0.203/100
- elif fck_viga == 45:
- taxa_aco_viga_retangular = 0.259/100
- elif fck_viga == 50:
- taxa_aco_viga_retangular = 0.288/100
-
- as_min_viga = taxa_aco_viga_retangular * area_secao_viga*100
-
-
- if kx_viga < 0:
- dominio_viga = 'Domínio 1'
- elif kx_viga > 0 and kx_viga <0.259:
- dominio_viga = 'Domínio 2'
- elif kx_viga > 0.259 and kx_viga <0.45:
- dominio_viga = 'Domínio 3 - Dúctil'
- elif kx_viga > 0.45 and kx_viga <0.63:
- dominio_viga = 'Domínio 3 - Não Dúctil'
- elif (kx_viga > 0.628 and kx_viga <1):
- dominio_viga = 'Domínio 4a'
- elif (kx_viga > 0.438 and kx_viga <1) and (fyk_viga == 600):
- dominio_viga = 'Domínio 4a'
- else:
- dominio_viga = 'Domínio 4b'
-
- kmd_viga = self.truncar(kmd_viga)
- kx_viga = self.truncar(kx_viga)
- kz_viga = self.truncar(kz_viga)
-
- print('kmd_viga: ',kmd_viga)
- print('kx_viga: ',kx_viga)
- print('kz_viga: ',kz_viga)
- print('as_viga: ',as_viga)
- print('as_sobre_apoio_viga: ',as_sobre_apoio_viga)
- print('as_max_viga: ',as_max_viga)
- print('as_min_viga',as_min_viga)
-
- #-------------------------------------- saida de dados ------------------------------------------------
- self.lineEdit_6.setText(str(round(mk_viga*1.4,ndigits=4)))
- self.lineEdit_13.setText(dominio_viga)
- self.lineEdit_7.setText(str(kmd_viga))
- self.lineEdit_8.setText(str(kx_viga))
- self.lineEdit_9.setText(str(kz_viga))
-
- self.lineEdit_10.setText(str(round(as_viga,ndigits=4)))
- self.lineEdit_11.setText(str(round(as_sobre_apoio_viga,ndigits=4)))
- self.lineEdit_12.setText(str(round(as_pele,ndigits=4)))
- self.lineEdit_14.setText(str(round(as_max_viga,ndigits=4)))
- self.lineEdit_20.setText(str(round(as_min_viga,ndigits=4)))
-
- #-------------------------------------------------------------------------------------------------
- if (dominio_viga == 'Domínio 4a') or (dominio_viga == 'Domínio 4b'):
- QMessageBox.about(self, "Atenção", "Domínio de cálculo 4, recomenda-se utilizar, em seção retangular, armadura dupla ou seção tê para contenção dos esforços de compressão do concreto.")
-
- if as_viga > as_max_viga:
- QMessageBox.about(self, "Atenção", "Área Total calculada superior a Área Máxima especificada para a seção da viga.")
- if as_viga < as_min_viga:
- QMessageBox.about(self, "Atenção", "Área Total calculada inferior a Área Mínima especificada para a seção da viga.")
-
- self.calcular_viga_cortante()
-
- global info_viga
- info_viga = [str(as_viga),str(bw_viga),str(h_viga),str(d_viga),str(1.9)]
-
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes!")
-
-
-
- def calcular_viga_dupla(self):
- mk_viga = self.lineEdit.text()
- vk_viga = self.lineEdit_2.text()
- bw_viga = self.lineEdit_15.text()
- h_viga = self.lineEdit_16.text()
- d_viga = self.lineEdit_17.text()
-
- if (mk_viga != '0' and vk_viga != '0' and bw_viga != '0' and h_viga != '0' and d_viga != '0'):
- fck_viga = float(self.comboBox.currentText())
- fcd_viga = fck_viga/1.4
- fyk_viga = float(self.comboBox_2.currentText())
- fyd_viga = fyk_viga/1.15
-
- mk_viga = float(self.lineEdit.text())
- vk_viga = float(self.lineEdit_2.text())
- bw_viga = float(self.lineEdit_15.text())
- h_viga = float(self.lineEdit_16.text())
- d_viga = float(self.lineEdit_17.text())
-
- d_linha_viga = h_viga - d_viga
- self.lineEdit_27.setText(str(round(d_linha_viga, ndigits=4)))
-
- xis_dominio = float(self.lineEdit_35.text())
-
- d_min_viga = math.sqrt((mk_viga*1.4*1000)/((bw_viga/100) * (fcd_viga*1000000) * (0.68*xis_dominio - 0.272*(xis_dominio**2))))
-
- x_lim_viga = xis_dominio * (d_viga/100)
-
- momento_lim_viga = 0.68 * (bw_viga/100) * (fcd_viga*1000) * x_lim_viga*((d_viga/100) - 0.4*x_lim_viga)
-
- print('d_min_viga: ',d_min_viga)
- print('x_lim_viga: ',x_lim_viga)
- print('momento_lim_viga: ',momento_lim_viga)
-
- if d_min_viga < (h_viga/100):
- self.lineEdit_36.setText(str(round(d_min_viga, ndigits=5)))
- self.lineEdit_18.setText(str(round(x_lim_viga, ndigits=5)))
- QMessageBox.about(self, "Observação", "A altura atual da viga é maior que a altura útil mínima, calcule como simplesmente armada")
-
- else:
-
- momento_lim_viga = 0.68 * (bw_viga/100) * (fcd_viga*1000) * x_lim_viga*((d_viga/100) - 0.4*x_lim_viga)
- momento_2_viga = (mk_viga*1.4) - momento_lim_viga
-
- as_compressao_viga = (momento_2_viga * 1000)/(((d_viga/100) - (d_linha_viga/100))*(fyd_viga))
- #as_tracao_viga = ((momento_lim_viga * 1000)/((1 - 0.4*x_lim_viga)*(d_viga/100)*fyd_viga))
- as_tracao_viga = ((momento_lim_viga * 1000)/((1 - 0.4*xis_dominio)*(d_viga/100)*fyd_viga))
-
- as_tracao_viga = as_tracao_viga + as_compressao_viga
-
- as_total_viga = as_tracao_viga + as_compressao_viga
-
- as_sobre_apoio_viga = as_tracao_viga/3
-
- area_secao_viga = bw_viga * h_viga
- if h_viga >= 60:
- as_pele = (0.1/100)*area_secao_viga*100
- else:
- as_pele = 0
-
- if fck_viga == 20:
- taxa_aco_viga_retangular = 0.15/100
- elif fck_viga == 25:
- taxa_aco_viga_retangular = 0.15/100
- elif fck_viga == 30:
- taxa_aco_viga_retangular = 0.173/100
- elif fck_viga == 35:
- taxa_aco_viga_retangular = 0.201/100
- elif fck_viga == 40:
- taxa_aco_viga_retangular = 0.203/100
- elif fck_viga == 45:
- taxa_aco_viga_retangular = 0.259/100
- elif fck_viga == 50:
- taxa_aco_viga_retangular = 0.288/100
-
- as_max_viga = (4/100)*area_secao_viga*100
- as_min_viga = taxa_aco_viga_retangular * area_secao_viga*100
-
-
- print('momento_lim_viga: ',momento_lim_viga)
- print('momento_2_viga: ',momento_2_viga)
- print('as_compressao_viga: ',as_compressao_viga)
- print('as_tracao_viga: ',as_tracao_viga)
-
-
- #------------------------------------------ saida de dados --------------------------------------------------
- self.lineEdit_36.setText(str(round(d_min_viga, ndigits=5)))
- self.lineEdit_18.setText(str(round(x_lim_viga, ndigits=5)))
- self.lineEdit_26.setText(str(round(momento_lim_viga, ndigits=5)))
- self.lineEdit_19.setText(str(round(momento_2_viga, ndigits=5)))
-
- self.lineEdit_22.setText(str(round(as_compressao_viga, ndigits=5)))
- self.lineEdit_28.setText(str(round(as_tracao_viga, ndigits=5)))
- self.lineEdit_23.setText(str(round(as_sobre_apoio_viga, ndigits=5)))
- self.lineEdit_24.setText(str(round(as_pele, ndigits=5)))
- self.lineEdit_38.setText(str(round(as_total_viga, ndigits=2)))
- self.lineEdit_25.setText(str(round(as_max_viga, ndigits=2)))
- self.lineEdit_29.setText(str(round(as_min_viga, ndigits=2)))
- #------------------------------------------ ------------- --------------------------------------------------
-
- if as_total_viga > as_max_viga:
- QMessageBox.about(self, "Atenção", "Área Total calculada superior a Área Máxima especificada para a seção da viga.")
- if as_total_viga < as_min_viga:
- QMessageBox.about(self, "Atenção", "Área Total calculada inferior a Área Mínima especificada para a seção da viga.")
-
- self.calcular_viga_cortante()
-
- global info_viga
- info_viga = [str(as_tracao_viga),str(bw_viga),str(h_viga),str(d_viga),str(1.9)]
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes!")
-
-
- def limpar_vigas(self):
- self.comboBox.setCurrentIndex(0)
- self.comboBox_2.setCurrentIndex(0)
- self.lineEdit.setText('0')
- self.lineEdit_2.setText('0')
- self.lineEdit_3.setText('0')
- self.lineEdit_4.setText('0')
- self.lineEdit_5.setText('0')
- self.lineEdit_21.setText('0')
-
- self.lineEdit_6.setText('')
- self.lineEdit_7.setText('')
- self.lineEdit_8.setText('')
- self.lineEdit_9.setText('')
- self.lineEdit_10.setText('')
- self.lineEdit_11.setText('')
- self.lineEdit_12.setText('')
- self.lineEdit_13.setText('')
- self.lineEdit_14.setText('')
-
- self.lineEdit_15.setText('0')
- self.lineEdit_16.setText('0')
- self.lineEdit_17.setText('0')
- self.lineEdit_27.setText('0')
-
- self.lineEdit_36.setText('')
- self.lineEdit_18.setText('')
- self.lineEdit_26.setText('')
- self.lineEdit_19.setText('')
- self.lineEdit_22.setText('')
- self.lineEdit_28.setText('')
- self.lineEdit_23.setText('')
- self.lineEdit_24.setText('')
- self.lineEdit_38.setText('')
- self.lineEdit_25.setText('')
- self.lineEdit_29.setText('')
-
- self.lineEdit_30.setText('')
- self.lineEdit_31.setText('')
- self.lineEdit_32.setText('')
- self.lineEdit_33.setText('')
- self.lineEdit_34.setText('')
- self.lineEdit_37.setText('')
-
-tabela_bitolas_ferro = [
- [6.3, 31.17],
- [8, 50.26],
- [10, 78.53],
- [12.5, 122.71],
- [16, 201.06],
- [20, 314.15],
- [25, 490.87],
- [32, 804.24],
- [40, 1256.63]
- ]
-
-#info_viga = ['95','12','45','40','1.9']
-#info_viga = [As,bw,h,d,agregado]
-
-class Detalhar_viga(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.load_ui()
- self.load_signals()
-
- def load_ui(self):
- self.ui = loadUi('detalhamento_vigas_alt.ui',self)
-
- #scriptDir = os.path.dirname(os.path.realpath(__file__))
- #self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- self.setWindowTitle('Navier - Vigas - Detalhamento')
- self.setFixedSize(845,600)
-
-
- def load_signals(self):
- print('inicializado')
- self.pushButton.clicked.connect(self.calcular_area)
- #self.pushButton.clicked.connect(self.calcular_estribos)
- self.pushButton_2.clicked.connect(self.limpar_detalhamento)
- self.pushButton_3.clicked.connect(self.recuperarValores)
-
-
- #pg.plot(x=[0,1,2,3,4], y=[0,1,2,3,4]**2 )
- header = self.tableWidget.horizontalHeader()
- header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
- header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(3, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(4, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(5, QtWidgets.QHeaderView.Stretch)
-
- self.widget.setTitle('nº barras/Bitola')
- self.widget.showGrid(x=True,y=True,alpha=1)
-
- #if '0' not in info_viga:
- # self.recuperarValores()
-
- def calcular_estribos(self):
- vsw = self.lineEdit_14.text()
- fyk_estribo = self.comboBox_2.currentText()
- tramos = self.lineEdit_15.text()
-
- if (vsw != '0' and tramos != '0'):
- vsw = float(self.lineEdit_14.text())
- bitola_estribo = float(self.comboBox.currentText())
- fyk_estribo = float(self.comboBox_2.currentText())
- tramos = float(self.lineEdit_15.text())
- d = float(self.lineEdit_13.text())
-
- espass_horizontal = info_viga_cortante[1]
-
- area_bitola = (3.14*((bitola_estribo/1000)**2)/4)
-
- print(vsw)
- print(bitola_estribo)
- print(tramos)
- print(fyk_estribo)
- print(area_bitola)
-
-
- s_estribo = ((tramos * area_bitola * 0.9 * (d/100) * (fyk_estribo*100000/1.15))/vsw*1000)/100
- s_estribo = round(s_estribo, ndigits=3)
-
- if s_estribo < espass_horizontal:
- self.lineEdit.setText(str(espass_horizontal))
- else:
- self.lineEdit.setText(str(s_estribo))
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes para o cálculo dos Estribos!")
-
-
- def recuperarValores(self):
- area_aco = info_viga[0]
- base = info_viga[1]
- altura = info_viga[2]
- d = info_viga[3]
- d_agreg = info_viga[4]
-
- vsw = info_viga_cortante[0]
-
- self.lineEdit_11.setText(area_aco)
- self.lineEdit_10.setText(base)
- self.lineEdit_9.setText(altura)
- self.lineEdit_12.setText(d_agreg)
- self.lineEdit_13.setText(d)
- self.lineEdit_14.setText(vsw)
-
- def calcular_area(self):
- area_aco = self.lineEdit_11.text()
- base = self.lineEdit_10.text()
- altura = self.lineEdit_9.text()
- d_agreg = self.lineEdit_12.text()
- d = self.lineEdit_13.text()
-
- if (area_aco != '0' and base != '0' and altura != '0' and d_agreg != '0' and d != '0'):
-
- self.widget.clear()
- area_aco = float(self.lineEdit_11.text())
- base = float(self.lineEdit_10.text())
- altura = float(self.lineEdit_9.text())
- cobrimento = float(self.comboBox_3.currentText())
- bitola_estribo = float(self.comboBox.currentText())
- x = []
- y = []
- z = []
- cont = 0
- for i in tabela_bitolas_ferro:
- n_barras = float(area_aco/i[1])
- print('bitola: ',i[0],' - nº barras: ',n_barras)
-
- self.tableWidget.setItem(cont,2, QTableWidgetItem(str(round(n_barras, ndigits=2))))
- self.tableWidget.setItem(cont,3, QTableWidgetItem(str(round(n_barras +0.5)+1)))
-
- x.append(i[0])
- y.append(round(n_barras +0.5)+1)
-
- bitola = x[cont]
- n_barras = (round(n_barras +0.5)+1)
-
- espass_horizontal = (round(base - 2*(cobrimento+bitola_estribo/10) - n_barras*(bitola/10), ndigits=2))/(n_barras-1)
-
- z.append(round(espass_horizontal,ndigits=2))
- self.tableWidget.setItem(cont,4, QTableWidgetItem(str(espass_horizontal)))
-
- print('base:',base)
- print('cobrimento:',cobrimento)
- print('bitola_estribo:',bitola_estribo)
- print('n_barras:',n_barras)
-
- cont +=1
-
- #print(x)
- #print(y)
- #print(z)
-
- self.widget.plot(x=x,y=y,pen=(3))
-
- self.calcular_espacamentos()
- self.calcular_estribos()
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes!")
-
-
- def calcular_espacamentos(self):
- bitola = float(self.comboBox_4.currentText())
- d_agreg = float(self.lineEdit_12.text())
-
- s_horizontal = max(2, (bitola/10), 1.2*d_agreg)
- s_vertical = max(2, (bitola/10), 0.5*d_agreg)
-
- #------------------------------- saida de dados ----------------------------------
- self.lineEdit_7.setText(str(s_horizontal))
- self.lineEdit_8.setText(str(s_vertical))
-
- def limpar_detalhamento(self):
- self.widget.clear()
- self.lineEdit_11.setText(str('0'))
- self.lineEdit_9.setText(str('0'))
- self.lineEdit_10.setText(str('0'))
- self.lineEdit_7.setText(str('0'))
- self.lineEdit_8.setText(str('0'))
-
-
-
-class Tabela_Bitolas(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = loadUi('bitolas_ferros.ui',self)
-
- #scriptDir = os.path.dirname(os.path.realpath(__file__))
- #self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- header = self.tableWidget.horizontalHeader()
- header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
-
- self.setWindowTitle('Navier - Tabela de Bitolas')
- self.setFixedSize(456,372)
-
-
-global pilares_info
-pilares_info = [0,0,0,0]
-
-global pilares_info_aco
-pilares_info_aco = [0, 0, 0, 0, 0, 0, 0]
-
-class Pilares(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = loadUi('pilares_alt.ui',self)
- self.load_signals()
-
- #scriptDir = os.path.dirname(os.path.realpath(__file__))
- #self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- self.setWindowTitle('Navier - Pilares')
- self.setFixedSize(997,670)
-
- def load_signals(self):
- print('pilares carregado')
- self.cont_x = 0
- self.cont_y = 0
-
- self.pushButton_6.clicked.connect(self.calcular_pilares)
- self.pushButton_7.clicked.connect(self.limpar_pilares)
-
- self.pushButton.clicked.connect(self.gerar_envoltoria)
- self.pushButton_3.clicked.connect(lambda: pilares_areas_aco.show())
-
-
- def calcular_pilares(self):
- x_pilar = self.lineEdit.text()
- y_pilar = self.lineEdit_2.text()
- altura_pilar = self.lineEdit_3.text()
- altura_lance = self.lineEdit_4.text()
-
- nk_pilar = self.lineEdit_5.text()
- momento_x_topo = self.lineEdit_6.text()
- momento_x_base = self.lineEdit_7.text()
- momento_y_topo = self.lineEdit_8.text()
- momento_y_base = self.lineEdit_9.text()
-
-
- if (x_pilar != '0' and y_pilar != '0' and altura_pilar != '0' and altura_lance != '0' and nk_pilar != '0'):
- fck_pilar = float(self.comboBox_3.currentText())
- fcd_pilar = fck_pilar/1.4
- fyk_pilar = float(self.comboBox_4.currentText())
- fyd_pilar = fyk_pilar/1.15
- cobrimento_pilar = float(self.comboBox_5.currentText())
-
- x_pilar = float(self.lineEdit.text())
- y_pilar = float(self.lineEdit_2.text())
- altura_pilar = float(self.lineEdit_3.text())
- altura_lance = float(self.lineEdit_4.text())
-
- nk_pilar = float(self.lineEdit_5.text())
- momento_x_topo = float(self.lineEdit_6.text())
- momento_x_base = float(self.lineEdit_7.text())
- momento_y_topo = float(self.lineEdit_8.text())
- momento_y_base = float(self.lineEdit_9.text())
-
- area_secao_pilar = (x_pilar/100)*(y_pilar/100)
-
- #nd_pilar = (nk_pilar + ((x_pilar/100)*(y_pilar/100)*altura_pilar*25)) * 1.4
- nd_pilar = (nk_pilar) * 1.4
- md_x_topo = 1.4 * momento_x_topo
- md_x_base = 1.4 * momento_x_base
- md_y_topo = 1.4 * momento_y_topo
- md_y_base = 1.4 * momento_y_base
-
-
- tipo_apoio_x = 'AA'
-
- if momento_x_topo == 0 and momento_x_base == 0 and momento_y_topo == 0 and momento_y_base == 0:
- self.tipo_pilar = 'intermediario'
- elif momento_x_topo == 0 and momento_x_base == 0:
- self.tipo_pilar = 'extremidade-x'
- elif momento_y_topo == 0 and momento_y_base == 0:
- self.tipo_pilar = 'extremidade-y'
- else:
- self.tipo_pilar = 'canto'
-
-
- self.lineEdit_13.setText(str(round(md_x_topo, ndigits=5)))
- self.lineEdit_14.setText(str(round(md_x_base, ndigits=5)))
- self.lineEdit_22.setText(str(round(md_y_topo, ndigits=5)))
- self.lineEdit_28.setText(str(round(md_y_base, ndigits=5)))
-
- #-Eixo-X----------------------------------------------------------------------
- b = y_pilar
- h = x_pilar
-
- m_a = max(md_x_topo, md_x_base)
- m_b = min(md_x_topo, md_x_base)
-
- if self.tipo_pilar == 'intermediario' or self.tipo_pilar == 'extremidade-x':
- alfa_b_x = 1.0
- else:
- alfa_b_x = (0.6 + 0.4*(m_b/m_a))
-
- if alfa_b_x < 0.4:
- alfa_b_x = 0.4
-
- #excen_min_x = (1.5+0.03*h)
- momento_min_x = (nd_pilar *(1.5+0.03*h))/100
- excen_min_x = momento_min_x/nd_pilar
-
- if md_x_topo < momento_min_x:
- md_x_topo = momento_min_x
- print('momento topo - mínimo')
- alfa_b_x = 1.0
- if md_x_base < momento_min_x:
- md_x_base = momento_min_x
- print('momento base - mínimo')
- alfa_b_x = 1.0
-
- compr_efetivo_x = (altura_pilar*100) + h
- if (altura_lance*100 < compr_efetivo_x):
- compr_efetivo_x = altura_lance*100
-
- excen_x_acidental = compr_efetivo_x/400
- v_0 = (nd_pilar*1000)/(area_secao_pilar * fcd_pilar*1000000)
-
- excentricidade_relativa = (max(md_x_topo,md_x_base,momento_min_x)/nd_pilar)/h
-
- lambda_pilar_x = 3.46 * (compr_efetivo_x/h)
- lambda_pilar_x_limite = (25 + 12.5*(excentricidade_relativa))/alfa_b_x
- if lambda_pilar_x_limite < 35:
- lambda_pilar_x_limite = 35
-
- excen_2_x = (compr_efetivo_x**2)/10 *(0.005/((v_0+0.5)*h))
-
- md2_x = nd_pilar * (excen_2_x/100)
-
- if lambda_pilar_x > lambda_pilar_x_limite:
- print('efeitos de 2 ordem considerados')
- excen_2 = (compr_efetivo_x**2)/10 *(0.005/((v_0+0.5)*h))
- md2_x_relativo = nd_pilar * (excen_2/100)
- else:
- md2_x_relativo = 0
- print('efeitos de 2 ordem desconsiderados')
-
- msd_x_intermediario = alfa_b_x * max(abs(md_x_topo), abs(md_x_base), abs(momento_min_x)) + md2_x_relativo
- #msd_x_intermediario = alfa_b_x * abs(momento_min_x) + md2_x_relativo
-
- mi_x = msd_x_intermediario/(h * area_secao_pilar * fcd_pilar)/10
- delta_x = cobrimento_pilar/h
-
-
- #-Eixo-Y----------------------------------------------------------------------
- h = y_pilar
- b = x_pilar
-
- m_a = max(md_y_topo, md_y_base)
- m_b = min(md_y_topo, md_y_base)
-
- if self.tipo_pilar == 'intermediario' or self.tipo_pilar == 'extremidade-y':
- alfa_b_y = 1.0
- else:
- alfa_b_y = (0.6 + 0.4*(m_b/m_a))
-
- if alfa_b_y < 0.4:
- alfa_b_y = 0.4
-
- momento_min_y = (nd_pilar *(1.5+0.03*h))/100
- excen_min_y = momento_min_y/nd_pilar
-
- if md_y_topo < momento_min_y:
- md_y_topo = momento_min_y
- print('momento topo - mínimo')
- alfa_b_y = 1.0
- if md_y_base < momento_min_y:
- md_y_base = momento_min_y
- print('momento base - mínimo')
- alfa_b_y = 1.0
-
- compr_efetivo_y = (altura_pilar*100) + h
- if (altura_lance*100 < compr_efetivo_y):
- compr_efetivo_y = altura_lance*100
-
- excen_y_acidental = compr_efetivo_y/400
- v_0 = (nd_pilar*1000)/(area_secao_pilar * fcd_pilar*1000000)
-
- excentricidade_relativa = (max(md_y_topo,md_y_base,momento_min_y)/nd_pilar)/h
-
- lambda_pilar_y = 3.46 * (compr_efetivo_y/h)
- lambda_pilar_y_limite = (25 + 12.5*(excentricidade_relativa))/alfa_b_y
- if lambda_pilar_y_limite < 35:
- lambda_pilar_y_limite = 35
-
- excen_2_y = (compr_efetivo_y**2)/10 *(0.005/((v_0+0.5)*h))
-
- md2_y = nd_pilar * (excen_2_y/100)
-
- if lambda_pilar_y > lambda_pilar_y_limite:
- print('efeitos de 2 ordem considerados')
- excen_2 = (compr_efetivo_y**2)/10 *(0.005/((v_0+0.5)*h))
- md2_y_relativo = nd_pilar * (excen_2/100)
- else:
- md2_y_relativo = 0
- print('efeitos de 2 ordem desconsiderados')
-
- msd_y_intermediario = alfa_b_y * max(abs(md_y_topo), abs(md_y_base), abs(momento_min_y)) + md2_y_relativo
- #msd_y_intermediario = alfa_b_y * abs(momento_min_y) + md2_y_relativo
-
- mi_y = msd_y_intermediario/(h * area_secao_pilar * fcd_pilar)/10
- delta_y = cobrimento_pilar/h
-
-
- #--------------------------------------------- saida de dados ---------------------------------------------
- self.lineEdit_10.setText(str(round(nd_pilar, ndigits=4)))
- self.lineEdit_11.setText(str(round(area_secao_pilar, ndigits=4)))
- self.lineEdit_12.setText(str(round(v_0, ndigits=4)))
-
- self.lineEdit_15.setText(str(round(momento_min_x, ndigits=5)))
- self.lineEdit_16.setText(str(round(excen_min_x*100, ndigits=5)))
- self.lineEdit_17.setText(str(round(lambda_pilar_x, ndigits=5)))
- self.lineEdit_18.setText(str(round(lambda_pilar_x_limite, ndigits=5)))
- self.lineEdit_19.setText(str(round(excen_2_x, ndigits=5)))
- self.lineEdit_20.setText(str(round(md2_x, ndigits=5)))
- self.lineEdit_21.setText(str(round(msd_x_intermediario, ndigits=5)))
-
- self.lineEdit_24.setText(str(round(momento_min_y, ndigits=5)))
- self.lineEdit_25.setText(str(round(excen_min_y*100, ndigits=5)))
- self.lineEdit_26.setText(str(round(lambda_pilar_y, ndigits=5)))
- self.lineEdit_23.setText(str(round(lambda_pilar_y_limite, ndigits=5)))
- self.lineEdit_30.setText(str(round(excen_2_y, ndigits=5)))
- self.lineEdit_29.setText(str(round(md2_y, ndigits=5)))
- self.lineEdit_27.setText(str(round(msd_y_intermediario, ndigits=5)))
-
- self.lineEdit_31.setText(str(round(mi_x, ndigits=2)))
- self.lineEdit_32.setText(str(round(mi_y, ndigits=2)))
- self.lineEdit_33.setText(str(round(delta_x, ndigits=2)))
- self.lineEdit_34.setText(str(round(delta_y, ndigits=2)))
-
- global pilares_info
- pilares_info = [msd_x_intermediario, msd_y_intermediario, momento_min_x, momento_min_y]
-
- if md2_x_relativo == 0:
- self.label_39.setText('não considera 2º ordem')
- else:
- self.label_39.setText('considera 2º ordem')
-
- if md2_y_relativo == 0:
- self.label_44.setText('não considera 2º ordem')
- else:
- self.label_44.setText('considera 2º ordem')
-
-
- if self.tipo_pilar == 'intermediario':
- self.label.setText('PILAR INTERMEDIÁRIO')
- elif (self.tipo_pilar == 'extremidade-x') or (self.tipo_pilar == 'extremidade-y'):
- self.label.setText('PILAR DE EXTREMIDADE')
- else:
- self.label.setText('PILAR DE CANTO')
-
- global pilares_info_aco
- pilares_info_aco = [mi_x, delta_x, mi_y, delta_y, fck_pilar, area_secao_pilar, nk_pilar]
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes!")
-
-
-
- def gerar_envoltoria(self):
- msd_x_intermediario = pilares_info[0]
- msd_y_intermediario = pilares_info[1]
- momento_min_x = pilares_info[2]
- momento_min_y = pilares_info[3]
-
- x = []
- y = []
- for i in range(360):
- theta = i
- theta_conv = (theta*math.pi)/180
-
- seno = math.sin(theta_conv)
- seno = momento_min_y * seno
-
- cosseno = math.cos(theta_conv)
- cosseno = momento_min_x * cosseno
-
- x.append(seno)
- y.append(cosseno)
-
- z = []
- w = []
- for j in range(360):
- theta = j
- theta_conv = (theta*math.pi)/180
-
- seno = math.sin(theta_conv)
- seno = msd_y_intermediario * seno
-
- cosseno = math.cos(theta_conv)
- cosseno = msd_x_intermediario * cosseno
-
- z.append(seno)
- w.append(cosseno)
-
- # create plot
- '''plt = pg.plot(x, y, title='theTitle', pen='r')
- plt.showGrid(x=True,y=True)
- '''
- # create plot
- plt = pg.plot()
- plt.clear()
- plt.showGrid(x=True,y=True)
- plt.addLegend()
- plt.setTitle('Envoltória de Momentos')
-
-
- # set properties
- plt.setLabel('left', 'Momentos Y', units='KN.m')
- plt.setLabel('bottom', 'Momentos X', units='KN.m')
- plt.setXRange(0,10)
- plt.setYRange(0,20)
-
-
- plt.enableAutoRange()
- plt.setWindowTitle('pyqtgraph plot')
- # plot
- c1 = plt.plot(x, y, pen='r', name='Envoltória Momentos min')
- c2 = plt.plot(z, w, pen='b', name='Envoltória Momentos máx')
-
-
-
- def limpar_pilares(self):
- print('limpar')
- self.comboBox_3.setCurrentIndex(0)
- self.comboBox_4.setCurrentIndex(0)
- self.comboBox_5.setCurrentIndex(0)
-
- self.lineEdit.setText('0')
- self.lineEdit_2.setText('0')
- self.lineEdit_3.setText('0')
- self.lineEdit_4.setText('0')
- self.lineEdit_5.setText('0')
- self.lineEdit_6.setText('0')
- self.lineEdit_7.setText('0')
- self.lineEdit_8.setText('0')
- self.lineEdit_9.setText('0')
-
- self.lineEdit_10.setText('')
- self.lineEdit_11.setText('')
- self.lineEdit_12.setText('')
- self.lineEdit_13.setText('')
- self.lineEdit_14.setText('')
- self.lineEdit_15.setText('')
- self.lineEdit_16.setText('')
- self.lineEdit_17.setText('')
- self.lineEdit_18.setText('')
- self.lineEdit_19.setText('')
- self.lineEdit_20.setText('')
- self.lineEdit_21.setText('')
- self.lineEdit_22.setText('')
- self.lineEdit_23.setText('')
- self.lineEdit_24.setText('')
- self.lineEdit_25.setText('')
- self.lineEdit_26.setText('')
- self.lineEdit_27.setText('')
- self.lineEdit_28.setText('')
- self.lineEdit_29.setText('')
- self.lineEdit_30.setText('')
-
- self.lineEdit_31.setText('')
- self.lineEdit_32.setText('')
- self.lineEdit_33.setText('')
- self.lineEdit_34.setText('')
-
-
-
-
-class Pilar_area_aco(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.load_ui()
- self.load_signals()
-
- def load_ui(self):
- self.ui = loadUi('pilares_areas_aco.ui',self)
-
- #scriptDir = os.path.dirname(os.path.realpath(__file__))
- #self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- self.setWindowTitle('Navier - Pilares - Áreas de Aço')
- self.setFixedSize(484,300)
-
- self.pushButton_4.setIcon(QtGui.QIcon('./btn_flexaosimples.png'))
- self.pushButton_4.setIconSize(QtCore.QSize(50,60))
- self.pushButton_5.setIcon(QtGui.QIcon('./btn_flexaocomposta.png'))
- self.pushButton_5.setIconSize(QtCore.QSize(50,60))
-
- def load_signals(self):
- print('inicializado')
- self.pushButton_2.clicked.connect(self.calcular_area_aco)
- self.pushButton.clicked.connect(self.recuperar_dados)
- self.pushButton_3.clicked.connect(self.limpar)
- self.pushButton_4.clicked.connect(lambda: self.abrirTabelaAuxiliar(abaco_normal))
- self.pushButton_5.clicked.connect(lambda: self.abrirTabelaAuxiliar(abaco_obliqua))
-
- def recuperar_dados(self):
- self.lineEdit_2.setText(str(round(pilares_info_aco[0], ndigits=2)))
- self.lineEdit_3.setText(str(round(pilares_info_aco[1], ndigits=2)))
- self.lineEdit_5.setText(str(round(pilares_info_aco[2], ndigits=2)))
- self.lineEdit_6.setText(str(round(pilares_info_aco[3], ndigits=2)))
- self.lineEdit_12.setText(str(round(pilares_info_aco[4], ndigits=2)))
- self.lineEdit_13.setText(str(round(pilares_info_aco[5], ndigits=2)))
- self.lineEdit_14.setText(str(round(pilares_info_aco[6], ndigits=2)))
-
- def calcular_area_aco(self):
- fck = float(self.lineEdit_12.text())
- fcd = fck/1.4
- fyd = 500/1.15
- area_concreto = float(self.lineEdit_13.text())
- nk = float(self.lineEdit_14.text())
- nd = 1.4 * nk
-
- mi_x = float(self.lineEdit_2.text())
- delta_x = float(self.lineEdit_3.text())
-
- mi_y = float(self.lineEdit_5.text())
- delta_y = float(self.lineEdit_6.text())
-
- omega_x = float(self.lineEdit_4.text())
- omega_y = float(self.lineEdit_7.text())
-
- as_x = (omega_x * (area_concreto*1000000) * fcd)/fyd
- as_y = (omega_y * (area_concreto*1000000) * fcd)/fyd
-
- as_x = round(as_x, ndigits=3)
- as_y = round(as_y, ndigits=3)
-
- as_pilar_min = 0.15 * (nd/fyd)
- if as_pilar_min < (0.004*area_concreto*100000):
- as_pilar_min = round((0.004*area_concreto*100000), ndigits=3)
-
- as_pilar_max = round((0.08*area_concreto*1000000), ndigits=3)
-
- #-------------------------------------- saída de dados ----------------------------------------------------
- self.lineEdit_8.setText(str(as_x))
- self.lineEdit_9.setText(str(as_y))
- self.lineEdit_10.setText(str(as_pilar_max))
- self.lineEdit_11.setText(str(as_pilar_min))
-
- def teste(self):
- print('teste')
-
- def limpar(self):
- self.lineEdit_2.setText('0')
- self.lineEdit_3.setText('0')
- self.lineEdit_4.setText('1')
- self.lineEdit_5.setText('0')
- self.lineEdit_6.setText('0')
- self.lineEdit_7.setText('1')
- self.lineEdit_8.setText('0')
- self.lineEdit_9.setText('0')
- self.lineEdit_10.setText('0')
- self.lineEdit_11.setText('0')
- self.lineEdit_12.setText('0')
- self.lineEdit_13.setText('0')
- self.lineEdit_14.setText('0')
-
- def abrirTabelaAuxiliar(self,file):
- if sys.platform == 'linux2':
- subprocess.call(["xdg-open", file])
- else:
- os.startfile(file)
-
-
-
-
-class Lajes(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = loadUi('lajes_alt.ui',self)
-
- self.lado1 = 'livre'
- self.lado2 = 'livre'
- self.lado3 = 'livre'
- self.lado4 = 'livre'
- self.label_37.hide()
- self.label_38.hide()
- self.label_40.hide()
- self.label_41.hide()
- global caso
- caso = '1'
- global lx_lage
- lx_lage = 'l_menor'
- self.lineEdit.setReadOnly(True)
-
- self.load_signals()
-
- #scriptDir = os.path.dirname(os.path.realpath(__file__))
- #self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- self.setWindowTitle('Navier - Lajes')
- self.setFixedSize(1245,587)
-
-
- def load_signals(self):
- print('lajes iniciado')
- self.pushButton.clicked.connect(self.estado_l1)
- self.pushButton_2.clicked.connect(self.estado_l2)
- self.pushButton_3.clicked.connect(self.estado_l3)
- self.pushButton_4.clicked.connect(self.estado_l4)
- self.pushButton.clicked.connect(self.situacao_laje)
- self.pushButton_2.clicked.connect(self.situacao_laje)
- self.pushButton_3.clicked.connect(self.situacao_laje)
- self.pushButton_4.clicked.connect(self.situacao_laje)
-
- self.pushButton_5.clicked.connect(lambda: self.abrirTabelaAuxiliar(tabela_marcus))
- self.pushButton_6.clicked.connect(self.calcular_laje)
- self.pushButton_7.clicked.connect(self.limpar_lajes)
-
- self.toolButton.clicked.connect(self.revelar_carg_acidental)
-
- def abrirTabelaAuxiliar(self,file):
- if sys.platform == 'linux2':
- subprocess.call(["xdg-open", file])
- else:
- os.startfile(file)
-
- def teste(self):
- lado1 = float(self.lineEdit_3.text())
- lado2 = float(self.lineEdit_4.text())
- espes = float(self.lineEdit_5.text())
-
-
- pp = (espes * 25)/100
- self.lineEdit.setText(str(pp))
-
- def revelar_carg_acidental(self):
- print('oi--')
- carga_adicional.show()
-
- def estado_l1(self):
- if self.lado1 == 'livre':
- self.lado1 = 'engastado'
- pixmap = QPixmap('./engv.png')
- self.pushButton.setIcon(QIcon(pixmap))
- else:
- self.lado1 = 'livre'
- pixmap = QPixmap('./livv.png')
- self.pushButton.setIcon(QIcon(pixmap))
-
- def estado_l2(self):
- if self.lado2 == 'livre':
- self.lado2 = 'engastado'
- pixmap = QPixmap('./engh.png')
- self.pushButton_2.setIcon(QIcon(pixmap))
- else:
- self.lado2 = 'livre'
- pixmap = QPixmap('./livh.png')
- self.pushButton_2.setIcon(QIcon(pixmap))
-
- def estado_l3(self):
- if self.lado3 == 'livre':
- self.lado3 = 'engastado'
- pixmap = QPixmap('./engh.png')
- self.pushButton_3.setIcon(QIcon(pixmap))
- else:
- self.lado3 = 'livre'
- pixmap = QPixmap('./livh.png')
- self.pushButton_3.setIcon(QIcon(pixmap))
-
- def estado_l4(self):
- if self.lado4 == 'livre':
- self.lado4 = 'engastado'
- pixmap = QPixmap('./engv.png')
- self.pushButton_4.setIcon(QIcon(pixmap))
- else:
- self.lado4 = 'livre'
- pixmap = QPixmap('./livv.png')
- self.pushButton_4.setIcon(QIcon(pixmap))
-
- def situacao_laje(self):
- l1 = self.lado1
- l2 = self.lado2
- l3 = self.lado3
- l4 = self.lado4
-
- cota_v1 = self.label_37
- cota_v2 = self.label_40
- cota_h1 = self.label_38
- cota_h2 = self.label_41
-
- if (l1 == 'livre' and l2 == 'livre' and l3 == 'livre' and l4 == 'livre'):
- global caso
- caso = '1'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- global lx_lage
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'livre' and l3 == 'livre' and l4 == 'livre') or (l1 == 'livre' and l2 == 'livre' and l3 == 'livre' and l4 == 'engastado'):
- caso = '2'
-
- cota_v1.hide()
- cota_v2.hide()
- cota_h1.show()
- cota_h2.show()
-
- lx_lage = 'l_maior'
- elif (l1 == 'livre' and l2 == 'engastado' and l3 == 'livre' and l4 == 'livre') or (l1 == 'livre' and l2 == 'livre' and l3 == 'engastado' and l4 == 'livre') :
- caso = '2'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'engastado' and l3 == 'livre' and l4 == 'livre') or (l1 == 'engastado' and l2 == 'livre' and l3 == 'engastado' and l4 == 'livre') or (l1 == 'livre' and l2 == 'engastado' and l3 == 'livre' and l4 == 'engastado') or (l1 == 'livre' and l2 == 'livre' and l3 == 'engastado' and l4 == 'engastado'):
- caso = '3'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'livre' and l3 == 'livre' and l4 == 'engastado'):
- caso = '4'
-
- cota_v1.hide()
- cota_v2.hide()
- cota_h1.show()
- cota_h2.show()
-
- lx_lage = 'l_maior'
- elif (l1 == 'livre' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'livre'):
- caso = '4'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'livre' and l3 == 'engastado' and l4 == 'engastado') or (l1 == 'engastado' and l2 == 'engastado' and l3 == 'livre' and l4 == 'engastado'):
- caso = '5'
-
- cota_v1.hide()
- cota_v2.hide()
- cota_h1.show()
- cota_h2.show()
-
- lx_lage = 'l_maior'
- elif (l1 == 'livre' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'engastado') or (l1 == 'engastado' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'livre'):
- caso = '5'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'engastado'):
- caso = '6'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- else:
- caso='ainda não existe, não sei como você chegou até aqui srsrrsrsrsrsrs'
-
-
- print(caso)
- self.lineEdit_6.setText(str(caso))
-
- def calcular_laje(self):
- lado_maior = float(self.lineEdit_3.text())
- lado_menor = float(self.lineEdit_4.text())
- espes = float(self.lineEdit_5.text())
- d = float(self.lineEdit_27.text())
-
- self.lineEdit_7.setText('')
- self.lineEdit_9.setText('')
- self.lineEdit_8.setText('')
- self.lineEdit_10.setText('')
- self.lineEdit_16.setText('')
- self.lineEdit_14.setText('')
- self.lineEdit_15.setText('')
- self.lineEdit_16.setText('')
-
- if lado_maior != 0 and lado_menor != 0 and espes != 0 and d != 0:
- lado1 = float(self.lineEdit_3.text())
- lado2 = float(self.lineEdit_4.text())
- espes = float(self.lineEdit_5.text())
- d = float(self.lineEdit_27.text())
- carreg_adicional = float(self.lineEdit_2.text())
- #fck_laje = float(self.comboBox.currentText())
- #fcd_laje = fck_laje/1.4
- #fyk_laje = float(self.comboBox_2.currentText())
- #fyd_laje = fyk_laje/1.15
-
- pp = (espes * 25)/100
- self.lineEdit.setText(str(pp))
-
- carreg_total = pp + carreg_adicional
- #print(caso)
- #print(lx_lage)
- #---------------------------------- cálculo do Lx baseado no caso do tipo de situação da laje -----------------
- global lx
- global lambda_laje
- if lx_lage == 'l_menor':
- lx = lado2
- lambda_laje = round((lado1/lado2),ndigits=2)
- elif lx_lage == 'l_maior':
- lx = lado1
- lambda_laje = round((lado2/lado1),ndigits=2)
- print(lx_lage)
-
-
- #---------------------------------- definição se a laje é unidirecional ou bidirecional baseado no lambda -----------------
- global tipo_laje
- if float(lambda_laje) > 2.001:
- tipo_laje = 'UNIDIRECIONAL'
- self.laje_unidirecional(carreg_total)
- else:
- tipo_laje = 'BIDIRECIONAL'
- #self.label_43.setStyleSheet("Background: url('laje_unidirecional_modelo.png') no-repeat")
-
- mx = my = nx = ny = ''
-
- if caso == '1':
- caso1 = marcus.caso1
- linhas = len(caso1)
- colunas = len(caso1[0])
-
- for i in range(linhas):
- aux = caso1[i][0]
- if lambda_laje == aux:
- print(caso1[i])
- mx = caso1[i][2]
- my = caso1[i][3]
-
- print('mx: ',mx)
- print('my: ',my)
-
- if caso == '2':
- caso2 = marcus.caso2
- linhas = len(caso2)
- colunas = len(caso2[0])
-
- for i in range(linhas):
- aux = caso2[i][0]
- if lambda_laje == aux:
- print(caso2[i])
- mx = caso2[i][2]
- nx = caso2[i][3]
- my = caso2[i][4]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
-
- if caso == '3':
- caso3 = marcus.caso3
- linhas = len(caso3)
- colunas = len(caso3[0])
-
- for i in range(linhas):
- aux = caso3[i][0]
- if lambda_laje == aux:
- print(caso3[i])
- mx = caso3[i][2]
- nx = caso3[i][3]
- my = caso3[i][4]
- ny = caso3[i][5]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
- print('ny: ',ny)
-
- if caso == '4':
- caso4 = marcus.caso4
- linhas = len(caso4)
- colunas = len(caso4[0])
-
- for i in range(linhas):
- aux = caso4[i][0]
- if lambda_laje == aux:
- print(caso4[i])
- mx = caso4[i][2]
- nx = caso4[i][3]
- my = caso4[i][4]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
-
- if caso == '5':
- caso5 = marcus.caso5
- linhas = len(caso5)
- colunas = len(caso5[0])
-
- for i in range(linhas):
- aux = caso5[i][0]
- if lambda_laje == aux:
- print(caso5[i])
- mx = caso5[i][2]
- nx = caso5[i][3]
- my = caso5[i][4]
- ny = caso5[i][5]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
- print('ny: ',ny)
-
- if caso == '6':
- caso6 = marcus.caso6
- linhas = len(caso6)
- colunas = len(caso6[0])
-
- for i in range(linhas):
- aux = caso6[i][0]
- if lambda_laje == aux:
- print(caso6[i])
- mx = caso6[i][2]
- nx = caso6[i][3]
- my = caso6[i][4]
- ny = caso6[i][5]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
- print('ny: ',ny)
-
- print(lx)
- if mx != '':
- self.lineEdit_7.setText(str(mx))
- momento_pos_x = ((carreg_total * (lx**2))/mx)
- momento_pos_x = round(momento_pos_x,ndigits=4)
-
-
- self.lineEdit_13.setText(str(momento_pos_x))
- #else:
- # self.lineEdit_13.setText('0')
- if nx != '':
- self.lineEdit_9.setText(str(nx))
- momento_neg_x = round(((carreg_total * (lx**2))/nx),ndigits=4)
- self.lineEdit_14.setText(str(momento_neg_x))
- #momento_neg_x = round(momento_neg_x,ndigits=2)
- #else:
- # self.lineEdit_14.setText('0')
- if my != '':
- self.lineEdit_8.setText(str(my))
- momento_pos_y = ((carreg_total * (lx**2))/my)
- momento_pos_y = round(momento_pos_y,ndigits=4)
- self.lineEdit_15.setText(str(momento_pos_y))
- #else:
- # self.lineEdit_15.setText('0')
- if ny != '':
- self.lineEdit_10.setText(str(ny))
- momento_neg_y = round(((carreg_total * (lx**2))/ny),ndigits=4)
- self.lineEdit_16.setText(str(momento_neg_y))
- #momento_neg_y = round(momento_neg_y,ndigits=2)
-
- #----------------------------------- enviar resultados de saida ao programa ---------------------------------------
- self.lineEdit_11.setText(str(lambda_laje))
- self.label_16.setText(str(tipo_laje))
- self.lineEdit_12.setText(str(carreg_total))
-
- self.resultados_laje()
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes")
-
-
- def laje_unidirecional(self,carreg_total):
-
- self.lado1 = 'livre'
- pixmap = QPixmap('./livv.png')
- self.pushButton.setIcon(QIcon(pixmap))
-
- self.lado4 = 'livre'
- pixmap = QPixmap('./livv.png')
- self.pushButton_4.setIcon(QIcon(pixmap))
-
- print('unidirecional')
- #l1 = self.lado1
- l2 = self.lado2
- l3 = self.lado3
- #l4 = self.lado4
- l1 = l4 = 'livre'
- print(carreg_total)
- if (l2 == 'livre' and l3 == 'livre'):
- self.label_43.setStyleSheet("Background: url('./laje_unidirecional_ll2.png') no-repeat")
- momento_pos_y = (carreg_total * (lx**2))/8
- momento_neg_y = 0
- elif (l2 == 'engastado' and l3 == 'engastado'):
- self.label_43.setStyleSheet("Background: url('./laje_unidirecional_ee2.png') no-repeat")
- momento_pos_y = (carreg_total * (lx**2))/24
- momento_neg_y = (carreg_total * (lx**2))/12
- elif (l2 == 'engastado' and l3 == 'livre') or (l2 == 'livre' and l3 == 'engastado'):
- self.label_43.setStyleSheet("Background: url('./laje_unidirecional_le2.png') no-repeat")
- momento_pos_y = (carreg_total * (lx**2))/14.2
- momento_neg_y = (carreg_total * (lx**2))/8
-
- print('momento_pos_y: ',momento_pos_y)
- print('momento_neg_y: ',momento_neg_y)
-
- #----------------------------------- enviar resultados de saida ao programa ---------------------------------------
- momento_pos_y = round(momento_pos_y,ndigits=4)
- self.lineEdit_15.setText(str(momento_pos_y))
- momento_neg_y = round(momento_neg_y,ndigits=4)
- self.lineEdit_16.setText(str(momento_neg_y))
-
- self.lineEdit_13.setText('0')
- self.lineEdit_14.setText('0')
-
- self.lineEdit_11.setText(str(lambda_laje))
- self.label_16.setText(str(tipo_laje))
- self.lineEdit_12.setText(str(carreg_total))
-
- self.resultados_laje()
-
- def truncar(self,x):
- aux = '{:.9f}'.format(x)
- return aux
-
- def resultados_laje(self):
- fck_laje = float(self.comboBox.currentText())
- fcd_laje = fck_laje/1.4
- fyk_laje = float(self.comboBox_2.currentText())
- fyd_laje = fyk_laje/1.15
- espes = float(self.lineEdit_5.text())
-
- area_concreto_laje = round(((espes/100)*1000000),ndigits=4)
-
- ro_armad_minima = 0
- if fck_laje == 20:
- ro_armad_minima = 0.15/100
- elif fck_laje == 25:
- ro_armad_minima = 0.15/100
- elif fck_laje == 30:
- ro_armad_minima = 0.15/100
- elif fck_laje == 35:
- ro_armad_minima = 0.164/100
- elif fck_laje == 40:
- ro_armad_minima = 0.179/100
-
- armad_max_laje = (0.4/100)*area_concreto_laje
- armad_neg_min = ro_armad_minima*area_concreto_laje
- armad_pos_cruz = round(0.67*(ro_armad_minima*area_concreto_laje), ndigits=2)
- armad_princ_unid = ro_armad_minima*area_concreto_laje
- armad_secnd_unid = max((0.2*armad_princ_unid), (90), (0.5*(ro_armad_minima*area_concreto_laje)))
-
-
- mx = self.lineEdit_13.text()
- if mx == '':
- self.lineEdit_13.setText('0')
-
- my = self.lineEdit_15.text()
- if my == '':
- self.lineEdit_15.setText('0')
-
- nx = self.lineEdit_14.text()
- if nx == '':
- self.lineEdit_14.setText('0')
-
- ny = self.lineEdit_16.text()
- if ny == '':
- self.lineEdit_16.setText('0')
-
- fck_laje = float(self.comboBox.currentText())
- fyk_laje = float(self.comboBox_2.currentText())
- fcd_laje = fck_laje* 1000000/1.4
- fyd_laje = fyk_laje* 1000000/1.15
- d_laje = float(self.lineEdit_27.text())
- espes = float(self.lineEdit_5.text())
-
- #------------------------------------------enxerto-----------------------
-
- mx = float(self.lineEdit_13.text())
- my = float(self.lineEdit_15.text())
- nx = float(self.lineEdit_14.text())
- ny = float(self.lineEdit_16.text())
- #print('mx: ',mx)
- #print('nx: ',nx)
- #print('my: ',my)
- #print('ny: ',ny)
- mk_x = mx
- mk_y = my
-
- nk_x = nx
- nk_y = ny
-
-
- md_x = round(1.4 * mk_x, ndigits = 4)
- kmd_x_laje = (md_x * 1000)/(1 * ((d_laje/100)**2) * 0.85 * (fcd_laje))
- kx_x_laje = (1 - math.sqrt(1 - 2*kmd_x_laje))/0.8
- kz_x_laje = 1 - 0.4 * kx_x_laje
-
- as_x_laje = (md_x * 1000/ (kz_x_laje * (d_laje/100) * fyd_laje))*1000000
-
- print('md_x: ', md_x)
- print('kmd_x_laje: ', kmd_x_laje)
- print('kx_x_laje: ', kx_x_laje)
- print('kz_x_laje: ', kz_x_laje)
- print('as_x_laje: ', as_x_laje)
-
- md_y = round(1.4 * mk_y, ndigits = 4)
- kmd_y_laje = (md_y * 1000)/(1 * ((d_laje/100)**2) * 0.85 * (fcd_laje))
- kx_y_laje = (1 - math.sqrt(1 - 2*kmd_y_laje))/0.8
- kz_y_laje = 1 - 0.4 * kx_y_laje
-
- as_y_laje = (md_y * 1000/ (kz_y_laje * (d_laje/100) * fyd_laje))*1000000
-
- print('md_y: ', md_y)
- print('kmd_y_laje: ', kmd_y_laje)
- print('kx_y_laje: ', kx_y_laje)
- print('kz_y_laje: ', kz_y_laje)
- print('as_y_laje: ', as_y_laje)
-
-
- nd_x = round(1.4 * nk_x, ndigits = 4)
- kmd_x_laje_n = (nd_x * 1000)/(1 * ((d_laje/100)**2) * 0.85 * (fcd_laje))
- kx_x_laje_n = (1 - math.sqrt(1 - 2*kmd_x_laje_n))/0.8
- kz_x_laje_n = 1 - 0.4 * kx_x_laje_n
-
- as_x_laje_n = (nd_x * 1000/ (kz_x_laje_n * (d_laje/100) * fyd_laje))*1000000
-
-
- nd_y = round(1.4 * nk_y, ndigits = 4)
- kmd_y_laje_n = (nd_y * 1000)/(1 * ((d_laje/100)**2) * 0.85 * (fcd_laje))
- kx_y_laje_n = (1 - math.sqrt(1 - 2*kmd_y_laje_n))/0.8
- kz_y_laje_n = 1 - 0.4 * kx_y_laje_n
-
- as_y_laje_n = (nd_x * 1000/ (kz_y_laje_n * (d_laje/100) * fyd_laje))*1000000
-
- #------------------------------------------ saida de dados ------------------------------------
- kmd_x_laje = self.truncar(kmd_x_laje)
- kx_x_laje = self.truncar(kx_x_laje)
- kz_x_laje = self.truncar(kz_x_laje)
- as_x_laje = self.truncar(as_x_laje)
-
- kmd_y_laje = self.truncar(kmd_y_laje)
- kx_y_laje = self.truncar(kx_y_laje)
- kz_y_laje = self.truncar(kz_y_laje)
- as_y_laje = self.truncar(as_y_laje)
-
-
- self.lineEdit_17.setText(str(md_x))
- self.lineEdit_18.setText(str(kmd_x_laje))
- self.lineEdit_19.setText(str(kx_x_laje))
- self.lineEdit_20.setText(str(kz_x_laje))
- self.lineEdit_21.setText(str(as_x_laje))
-
- self.lineEdit_22.setText(str(md_y))
- self.lineEdit_24.setText(str(kmd_y_laje))
- self.lineEdit_25.setText(str(kx_y_laje))
- self.lineEdit_26.setText(str(kz_y_laje))
- self.lineEdit_23.setText(str(as_y_laje))
-
-
- self.lineEdit_38.setText(str(area_concreto_laje))
- self.lineEdit_39.setText(str(ro_armad_minima*100))
- self.lineEdit_42.setText(str(armad_max_laje))
- self.lineEdit_40.setText(str(armad_neg_min))
- self.lineEdit_41.setText(str(armad_pos_cruz))
- self.lineEdit_43.setText(str(armad_princ_unid))
- self.lineEdit_44.setText(str(armad_secnd_unid))
-
- if tipo_laje == 'UNIDIRECIONAL':
- self.label_44.setText('Distribuição')
- if float(as_y_laje) < armad_princ_unid:
- self.label_45.setText('Mínima')
- else:
- self.label_45.setText('')
-
- if tipo_laje == 'BIDIRECIONAL':
- if float(as_x_laje) < armad_pos_cruz:
- self.label_44.setText('Mínima')
- else:
- self.label_44.setText('')
-
- if float(as_y_laje) < armad_pos_cruz:
- self.label_45.setText('Mínima')
- else:
- self.label_45.setText('')
-
- def limpar_lajes(self):
- self.comboBox.setCurrentIndex(0)
- self.comboBox_2.setCurrentIndex(0)
-
- self.lineEdit.setText('0')
- self.lineEdit_2.setText('0')
- self.lineEdit_3.setText('0')
- self.lineEdit_4.setText('0')
- self.lineEdit_5.setText('0')
- self.lineEdit_27.setText('0')
-
- self.lineEdit_7.setText('')
- self.lineEdit_8.setText('')
- self.lineEdit_9.setText('')
- self.lineEdit_10.setText('')
-
- self.lineEdit_11.setText('')
- self.lineEdit_12.setText('')
- self.lineEdit_38.setText('')
- self.lineEdit_39.setText('')
- self.lineEdit_42.setText('')
- self.lineEdit_40.setText('')
- self.lineEdit_41.setText('')
- self.lineEdit_43.setText('')
- self.lineEdit_44.setText('')
-
- self.lineEdit_13.setText('')
- self.lineEdit_14.setText('')
- self.lineEdit_15.setText('')
- self.lineEdit_16.setText('')
-
- self.lineEdit_16.setText('')
- self.lineEdit_17.setText('')
- self.lineEdit_18.setText('')
- self.lineEdit_19.setText('')
- self.lineEdit_20.setText('')
- self.lineEdit_21.setText('')
- self.lineEdit_22.setText('')
- self.lineEdit_23.setText('')
- self.lineEdit_24.setText('')
- self.lineEdit_25.setText('')
- self.lineEdit_26.setText('')
-
-
-
-class Carga_Adicional(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
-
- self.ui = loadUi('lajes_carg_adicional.ui',self)
-
- header = self.tableWidget.horizontalHeader()
- header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
- header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
- self.tableWidget.resizeRowsToContents()
-
- #scriptDir = os.path.dirname(os.path.realpath(__file__))
- #self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- self.setWindowTitle('Navier - Cargas Adicionais')
- self.setFixedSize(649,504)
-
-
-
-class Sapatas(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = loadUi('sapatas_alt.ui',self)
- self.load_signals()
-
- #scriptDir = os.path.dirname(os.path.realpath(__file__))
- #self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- self.setWindowTitle('Navier - Sapatas')
- self.setFixedSize(946,574)
-
- def load_signals(self):
- print('sapatas carregado')
- self.pushButton_6.clicked.connect(self.calcular_sapata)
- self.pushButton_7.clicked.connect(self.limpar_sapatas)
- self.pushButton.clicked.connect(self.gerar_dim_sapata)
-
- def arredondar_cinco(self, numero):
- numero = round(numero, ndigits=2)
- numero = 100*numero
- resto = numero%5
- while resto != 0:
- numero += 1
- resto = numero%5
- print('numero:',numero,' - resto: ',resto)
-
- numero = numero/100
- return numero
-
- def calcular_sapata(self):
-
- nk = float(self.lineEdit_3.text())
- momento_x_sapata = float(self.lineEdit_4.text())
- momento_y_sapata = float(self.lineEdit_5.text())
- x_pilar = float(self.lineEdit.text())
- y_pilar = float(self.lineEdit_2.text())
- tensao_adm_solo = float(self.lineEdit_35.text())
- fator_solo = float(self.lineEdit_13.text())
-
- base_y_sapata = float(self.lineEdit_10.text())
- base_x_sapata = float(self.lineEdit_9.text())
- h_total = float(self.lineEdit_11.text())
- h_0 = float(self.lineEdit_12.text())
-
- y_sapata = float(self.lineEdit_9.text())
- x_sapata = float(self.lineEdit_10.text())
- h_total = float(self.lineEdit_11.text())
- h_0 = float(self.lineEdit_12.text())
-
- if (nk != 0 and x_pilar != 0 and y_pilar != 0 and tensao_adm_solo != 0 and fator_solo != 0 and base_y_sapata != 0 and base_x_sapata != 0 and h_total != 0 and h_0 != 0):
- if (x_sapata < 0.6 or y_sapata < 0.6):
- QMessageBox.about(self, "Erro de Entrada", "As sapatas não podem apresentar lados menores de 60 cm, conforme a NBR 6122")
- else:
- fck_sapata = float(self.comboBox.currentText())
- fcd_sapata = fck_sapata / 1.4
- fyk_sapata = float(self.comboBox_2.currentText())
- fyd_sapata = fyk_sapata / 1.15
- nk = float(self.lineEdit_3.text())
- momento_x_sapata = float(self.lineEdit_4.text())
- momento_y_sapata = float(self.lineEdit_5.text())
- tensao_adm_solo = float(self.lineEdit_35.text())
- fator_solo = float(self.lineEdit_13.text())
- angulo_dissp_sapata = float(self.spinBox.value())
-
- angulo_dissp_sapata = (angulo_dissp_sapata / 180)* 3.14
-
- x_pilar = float(self.lineEdit.text())/100
- y_pilar = float(self.lineEdit_2.text())/100
-
- y_sapata = float(self.lineEdit_9.text())
- x_sapata = float(self.lineEdit_10.text())
- h_total = float(self.lineEdit_11.text())
- h_0 = float(self.lineEdit_12.text())
-
- if (momento_x_sapata != 0 and momento_y_sapata == 0) or (momento_x_sapata == 0 and momento_y_sapata != 0):
- fator_acrescimo_dimensoes = 1.05
- elif (momento_x_sapata != 0 and momento_y_sapata != 0):
- fator_acrescimo_dimensoes = 1.103
- else:
- fator_acrescimo_dimensoes = 1.0
-
- x_sapata = round(x_sapata * fator_acrescimo_dimensoes, ndigits=4)
- y_sapata = round(y_sapata * fator_acrescimo_dimensoes, ndigits=4)
-
- wx = x_sapata * (y_sapata**2)/6
- wy = y_sapata * (x_sapata**2)/6
-
- mw_x = (momento_x_sapata/wx)*1000
- mw_y = (momento_y_sapata/wy)*1000
-
- tensao_sapata = (fator_solo*nk*1000)/(x_sapata*y_sapata)
- tensao_max_sapata = tensao_sapata + mw_x + mw_y
- tensao_min_sapata = tensao_sapata - mw_x - mw_y
-
- nk_equiv = (x_sapata * y_sapata * tensao_max_sapata)/fator_solo
- area_sapata = round(fator_solo * ((nk*1000)/(tensao_adm_solo*1000000)),ndigits=6)
-
- ca_sapata = (x_sapata - x_pilar)/2
- cb_sapata = (y_sapata - y_pilar)/2
- h_rig_x = 2/3 * ca_sapata
- h_rig_y = 2/3 * cb_sapata
-
- h_mincis = (1.4 * nk_equiv)/(2*(x_pilar+y_pilar)*0.27*(1-(fck_sapata/250))*(fcd_sapata*1000000))
- if h_mincis < 0.40:
- h_mincis = 0.40
- if h_total < h_mincis:
- h_total = h_mincis
-
- braco_alavanca_sapata = h_total - 0.05
-
- h0a = h_total - ca_sapata * math.tan(angulo_dissp_sapata)
- h0b = h_total - cb_sapata * math.tan(angulo_dissp_sapata)
-
- #h0 = round(h0a, ndigits=2)
- #if h0a < h0b:
- # h0 = round(h0b, ndigits=2)
-
- volume_concreto_sapata = (h_total-h_0)/(3*(x_sapata*y_sapata+x_pilar*y_pilar+math.sqrt(x_sapata*y_sapata*x_pilar*y_pilar))+x_sapata*y_sapata*h_0)
-
- tracao_x_sapata = 1.1 * nk_equiv * (x_sapata - x_pilar)/(8 * braco_alavanca_sapata)
- tracao_y_sapata = 1.1 * nk_equiv * (y_sapata - y_pilar)/(8 * braco_alavanca_sapata)
- as_x_sapata = (1.4 * tracao_x_sapata)/(fyd_sapata)
- as_y_sapata = (1.4 * tracao_y_sapata)/fyd_sapata
-
- taxa_aco_sapata = (0.078 * (fck_sapata)**(2/3))/fyd_sapata
-
- if taxa_aco_sapata <= 0.0015:
- taxa_aco_sapata = 0.0015
-
- as_x_min_laje = 0.67 * taxa_aco_sapata * h_mincis * x_sapata
- as_y_min_laje = 0.67 * taxa_aco_sapata * h_mincis * y_sapata
-
- print('x_sapata: ',x_sapata)
- print('y_sapata: ',y_sapata)
-
- print('wx: ',wx)
- print('wy: ',wy)
- print('mw_x: ',mw_x)
- print('mw_y: ',mw_y)
- print('tensao_max_sapata: ',tensao_max_sapata)
- print('tensao_min_sapata: ',tensao_min_sapata)
- print('nk_equiv: ',nk_equiv)
- print('ca_sapata: ',ca_sapata)
- print('cb_sapata: ',cb_sapata)
- print('h0a: ',h0a)
- print('h0b: ',h0b)
- print('h_mincis: ',h_mincis)
- #print('h0: ',h0)
- print('h_total',h_total)
- print('-------------------------------------\n')
-
- #-------------------------------------- saida dos dados --------------------------------------------------
- self.lineEdit_11.setText(str(h_total))
- #self.lineEdit_12.setText(str(h0))
-
- self.lineEdit_15.setText(str(area_sapata))
- self.lineEdit_16.setText(str(round(wx, ndigits=6)))
- self.lineEdit_17.setText(str(round(wy, ndigits=6)))
- self.lineEdit_18.setText(str(round(nk_equiv, ndigits=4)))
- self.lineEdit_19.setText(str(round(tensao_max_sapata/1000000, ndigits=4)))
- self.lineEdit_20.setText(str(round(tensao_min_sapata/1000000, ndigits=4)))
- self.lineEdit_21.setText(str(round(ca_sapata*100, ndigits=4)))
- self.lineEdit_22.setText(str(round(cb_sapata*100, ndigits=4)))
-
- self.lineEdit_23.setText(str(round(h_rig_x*100, ndigits=4)))
- self.lineEdit_24.setText(str(round(h_rig_y*100, ndigits=4)))
- self.lineEdit_25.setText(str(round(h_mincis*100, ndigits=4)))
- self.lineEdit_26.setText(str(round(h0a*100, ndigits=4)))
- self.lineEdit_28.setText(str(round(h0b*100, ndigits=4)))
- self.lineEdit_27.setText(str(round(volume_concreto_sapata, ndigits=4)))
-
- self.lineEdit_14.setText(str(round(tracao_x_sapata/1000, ndigits=4)))
- self.lineEdit_29.setText(str(round(tracao_y_sapata/1000, ndigits=4)))
- self.lineEdit_30.setText(str(round(as_x_sapata, ndigits=4)))
- self.lineEdit_31.setText(str(round(as_y_sapata, ndigits=4)))
-
- self.lineEdit_32.setText(str(round(taxa_aco_sapata, ndigits=7)))
- self.lineEdit_33.setText(str(round(as_x_min_laje*1000000, ndigits=4)))
- self.lineEdit_34.setText(str(round(as_y_min_laje*1000000, ndigits=4)))
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes")
-
-
-
- def gerar_dim_sapata(self):
-
- nk = float(self.lineEdit_3.text())
- momento_x_sapata = float(self.lineEdit_4.text())
- momento_y_sapata = float(self.lineEdit_5.text())
- x_pilar = float(self.lineEdit.text())
- y_pilar = float(self.lineEdit_2.text())
- tensao_adm_solo = float(self.lineEdit_35.text())
- fator_solo = float(self.lineEdit_13.text())
-
-
- if (nk != 0 and x_pilar != 0 and y_pilar != 0 and tensao_adm_solo != 0 and fator_solo != 0):
-
- fck_sapata = float(self.comboBox.currentText())
- fcd_sapata = fck_sapata / 1.4
- fyk_sapata = float(self.comboBox_2.currentText())
- fyd_sapata = fyk_sapata / 1.15
- nk = float(self.lineEdit_3.text())
- momento_x_sapata = float(self.lineEdit_4.text())
- momento_y_sapata = float(self.lineEdit_5.text())
- tensao_adm_solo = float(self.lineEdit_35.text())
- fator_solo = float(self.lineEdit_13.text())
- angulo_dissp_sapata = float(self.spinBox.value())
-
- angulo_dissp_sapata = (angulo_dissp_sapata / 180)* 3.14
-
- x_pilar = float(self.lineEdit.text())/100
- y_pilar = float(self.lineEdit_2.text())/100
-
- area_sapata = round(fator_solo * ((nk*1000)/(tensao_adm_solo*1000000)),ndigits=6)
-
- y_sapata = 0.5*(y_pilar - x_pilar) + math.sqrt(0.25*((y_pilar - x_pilar)**2)+area_sapata)
-
- x_sapata = area_sapata/y_sapata
-
- if (momento_x_sapata != 0 and momento_y_sapata == 0) or (momento_x_sapata == 0 and momento_y_sapata != 0):
- fator_acrescimo_dimensoes = 1.05
- elif (momento_x_sapata != 0 and momento_y_sapata != 0):
- fator_acrescimo_dimensoes = 1.103
- else:
- fator_acrescimo_dimensoes = 1.0
-
- x_sapata = round(x_sapata * fator_acrescimo_dimensoes, ndigits=4)
- y_sapata = round(y_sapata * fator_acrescimo_dimensoes, ndigits=4)
-
- if x_sapata < 0.6:
- x_sapata = 0.6
- if y_sapata < 0.6:
- y_sapata = 0.6
- print(x_sapata,'<--------------------------------------------------')
- wx = x_sapata * (y_sapata**2)/6
- wy = y_sapata * (x_sapata**2)/6
-
- mw_x = (momento_x_sapata/wx)*1000
- mw_y = (momento_y_sapata/wy)*1000
-
- tensao_sapata = (fator_solo*nk*1000)/(x_sapata*y_sapata)
- tensao_max_sapata = tensao_sapata + mw_x + mw_y
- tensao_min_sapata = tensao_sapata - mw_x - mw_y
-
- x_sapata = self.arredondar_cinco(x_sapata)
- y_sapata = self.arredondar_cinco(y_sapata)
- if x_sapata < 0.6:
- x_sapata = 0.6
- if y_sapata < 0.6:
- y_sapata = 0.6
-
- nk_equiv = (x_sapata * y_sapata * tensao_max_sapata)/fator_solo
-
- ca_sapata = (x_sapata - x_pilar)/2
- cb_sapata = (y_sapata - y_pilar)/2
- h_rig_x = 2/3 * ca_sapata
- h_rig_y = 2/3 * cb_sapata
-
- h_total = h_rig_x
- if h_total < h_rig_y:
- h_total = h_rig_y
-
- h_mincis = (1.4 * nk_equiv)/(2*(x_pilar+y_pilar)*0.27*(1-(fck_sapata/250))*(fcd_sapata*1000000))
- if h_mincis < 0.40:
- h_mincis = 0.40
- h_mincis = round(h_mincis, ndigits=4)
-
- if h_total < h_mincis:
- h_total = h_mincis
-
- h_total = self.arredondar_cinco(h_total)
-
- h0a = h_total - ca_sapata * math.tan(angulo_dissp_sapata)
- h0b = h_total - cb_sapata * math.tan(angulo_dissp_sapata)
- h0_prerrogativo = h_total/3
- tangente_angulo = math.tan(angulo_dissp_sapata)
- h0 = round(h0a, ndigits=2)
- if h0a < h0b:
- h0 = round(h0b, ndigits=2)
- elif h0b < h0_prerrogativo:
- h0 = h0_prerrogativo
- if h0 < 0.25:
- h0 = 0.25
- h0 = self.arredondar_cinco(h0)
-
- volume_concreto_sapata = ((h_total-h0)/3*(x_sapata*y_sapata+x_pilar*y_pilar+math.sqrt(x_sapata*y_sapata*x_pilar*y_pilar)))+(x_sapata*y_sapata*h0)
-
- braco_alavanca_sapata = h_total - 0.05
-
- tracao_x_sapata = 1.1 * nk_equiv * (x_sapata - x_pilar)/(8 * braco_alavanca_sapata)
- tracao_y_sapata = 1.1 * nk_equiv * (y_sapata - y_pilar)/(8 * braco_alavanca_sapata)
- as_x_sapata = (1.4 * tracao_x_sapata)/(fyd_sapata)
- as_y_sapata = (1.4 * tracao_y_sapata)/fyd_sapata
-
- taxa_aco_sapata = (0.078 * (fck_sapata)**(2/3))/fyd_sapata
-
- if taxa_aco_sapata <= 0.0015:
- taxa_aco_sapata = 0.0015
-
- as_x_min_laje = 0.67 * taxa_aco_sapata * h_total * x_sapata
- as_y_min_laje = 0.67 * taxa_aco_sapata * h_total * y_sapata
-
- print('x_sapata: ',x_sapata)
- print('y_sapata: ',y_sapata)
-
- print('wx: ',wx)
- print('wy: ',wy)
- print('mw_x: ',mw_x)
- print('mw_y: ',mw_y)
- print('tensao_max_sapata: ',tensao_max_sapata)
- print('tensao_min_sapata: ',tensao_min_sapata)
- print('nk_equiv: ',nk_equiv)
- print('ca_sapata: ',ca_sapata)
- print('cb_sapata: ',cb_sapata)
- print('h0a: ',h0a)
- print('h0b: ',h0b)
- print('h_mincis: ',h_mincis)
- print('h0: ',h0)
- print('tangente_angulo: ',tangente_angulo)
- print('----------')
- print('h_total: ',h_total)
- print('tracao_x_sapata: ',tracao_x_sapata)
- print('tracao_y_sapata: ',tracao_y_sapata)
- print('as_x_sapata: ',as_x_sapata)
- print('as_y_sapata: ',as_y_sapata)
- print('taxa_aco_sapata: ',taxa_aco_sapata)
- print('as_x_min_laje: ',as_x_min_laje)
- print('as_y_min_laje: ',as_y_min_laje)
- print('-------------------------------------\n')
- #------------------------------ saida de dados ---------------------------------------------
- self.lineEdit_9.setText(str(y_sapata))
- self.lineEdit_10.setText(str(x_sapata))
- self.lineEdit_15.setText(str(area_sapata))
-
- self.lineEdit_11.setText(str(round(h_total, ndigits=4)))
- self.lineEdit_12.setText(str(round(h0, ndigits=4)))
-
-
- self.lineEdit_15.setText(str(area_sapata))
- self.lineEdit_16.setText(str(round(wx, ndigits=6)))
- self.lineEdit_17.setText(str(round(wy, ndigits=6)))
- self.lineEdit_18.setText(str(round(nk_equiv, ndigits=4)))
- self.lineEdit_19.setText(str(round(tensao_max_sapata/1000000, ndigits=4)))
- self.lineEdit_20.setText(str(round(tensao_min_sapata/1000000, ndigits=4)))
- self.lineEdit_21.setText(str(round(ca_sapata*100, ndigits=4)))
- self.lineEdit_22.setText(str(round(cb_sapata*100, ndigits=4)))
-
- self.lineEdit_23.setText(str(round(h_rig_x*100, ndigits=4)))
- self.lineEdit_24.setText(str(round(h_rig_y*100, ndigits=4)))
- self.lineEdit_25.setText(str(round(h_mincis*100, ndigits=4)))
- self.lineEdit_26.setText(str(round(h0a*100, ndigits=4)))
- self.lineEdit_28.setText(str(round(h0b*100, ndigits=4)))
- self.lineEdit_27.setText(str(round(volume_concreto_sapata, ndigits=4)))
-
- self.lineEdit_14.setText(str(round(tracao_x_sapata/1000, ndigits=4)))
- self.lineEdit_29.setText(str(round(tracao_y_sapata/1000, ndigits=4)))
- self.lineEdit_30.setText(str(round(as_x_sapata, ndigits=4)))
- self.lineEdit_31.setText(str(round(as_y_sapata, ndigits=4)))
-
- self.lineEdit_32.setText(str(round(taxa_aco_sapata, ndigits=7)))
- self.lineEdit_33.setText(str(round(as_x_min_laje*1000000, ndigits=4)))
- self.lineEdit_34.setText(str(round(as_y_min_laje*1000000, ndigits=4)))
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes")
-
-
- def limpar_sapatas(self):
- self.comboBox.setCurrentIndex(0)
- self.comboBox_2.setCurrentIndex(0)
-
- self.lineEdit.setText('0')
- self.lineEdit_2.setText('0')
- self.lineEdit_3.setText('0')
- self.lineEdit_4.setText('0')
- self.lineEdit_5.setText('0')
-
- self.lineEdit_35.setText('0')
- self.lineEdit_13.setText('1.1')
- self.spinBox.setValue(30)
-
- self.lineEdit_9.setText('0')
- self.lineEdit_10.setText('0')
- self.lineEdit_11.setText('0')
- self.lineEdit_12.setText('0')
-
- self.lineEdit_15.setText('')
- self.lineEdit_16.setText('')
- self.lineEdit_17.setText('')
- self.lineEdit_18.setText('')
- self.lineEdit_19.setText('')
- self.lineEdit_20.setText('')
- self.lineEdit_21.setText('')
- self.lineEdit_22.setText('')
- self.lineEdit_23.setText('')
- self.lineEdit_24.setText('')
- self.lineEdit_25.setText('')
- self.lineEdit_26.setText('')
- self.lineEdit_27.setText('')
- self.lineEdit_28.setText('')
-
- self.lineEdit_14.setText('')
- self.lineEdit_29.setText('')
- self.lineEdit_30.setText('')
- self.lineEdit_31.setText('')
- self.lineEdit_32.setText('')
- self.lineEdit_33.setText('')
- self.lineEdit_34.setText('')
-
-#---------------------------------------------- Janelas Adicionais ----------------------------------------------------
-
-
-class Tabela_Classe_Agressividade(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.load_ui()
- self.load_signals()
-
- def load_ui(self):
- self.ui = loadUi('class_agres.ui',self)
-
- #scriptDir = os.path.dirname(os.path.realpath(__file__))
- #self.setWindowIcon(QtGui.QIcon(scriptDir + os.path.sep + 'logo.ico'))
- self.setWindowIcon(QtGui.QIcon('./logo.ico'))
-
- self.setWindowTitle('Navier - Classes de Agressividade e Cobrimentos Mínimos')
- self.setFixedSize(579, 520)
-
- def load_signals(self):
- print('inicializado')
- header = self.tableWidget.horizontalHeader()
- header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(3, QtWidgets.QHeaderView.Stretch)
-
- self.tableWidget.setSpan(0, 0, 1, 4)
-
- header_2 = self.tableWidget_2.horizontalHeader()
- header_2.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header_2.setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
- header_2.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
- header_2.setSectionResizeMode(3, QtWidgets.QHeaderView.ResizeToContents)
-
- self.tableWidget_2.setSpan(0, 0, 2, 1)
- self.tableWidget_2.setSpan(0, 1, 2, 1)
- self.tableWidget_2.setSpan(0, 3, 2, 1)
-
- self.tableWidget_2.setSpan(3, 0, 2, 1)
- self.tableWidget_2.setSpan(3, 1, 2, 1)
- self.tableWidget_2.setSpan(3, 3, 2, 1)
-
- self.tableWidget_2.setSpan(5, 0, 2, 1)
- self.tableWidget_2.setSpan(5, 1, 2, 1)
- self.tableWidget_2.setSpan(5, 3, 2, 1)
-
-
-
-if __name__ == '__main__':
- app = QtWidgets.QApplication(sys.argv)
- inicio = Inicio()
- vigas = Vigas()
- detalhar_vigas = Detalhar_viga()
- pilares = Pilares()
- pilares_areas_aco = Pilar_area_aco()
- #pilares.show()
- #vigas.show()
- lajes = Lajes()
- #lajes.show()
- sapatas = Sapatas()
- #sapatas.show()
- carga_adicional = Carga_Adicional()
- tabela_classe_agressividade = Tabela_Classe_Agressividade()
- tabela_bitolas = Tabela_Bitolas()
-
- app.exec_()
\ No newline at end of file
diff --git a/inicio.ui b/inicio.ui
deleted file mode 100644
index 7ad2e69..0000000
--- a/inicio.ui
+++ /dev/null
@@ -1,1274 +0,0 @@
-
-
- MainWindow
-
-
-
- 0
- 0
- 567
- 500
-
-
-
- MainWindow
-
-
-
- -
-
-
- 0
-
-
-
- Navier - Início
-
-
-
-
- 215
- 60
- 261
- 41
-
-
-
- QFrame::NoFrame
-
-
- QFrame::Sunken
-
-
- QAbstractScrollArea::AdjustToContents
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cálculo de peças em Concreto Armado (Vigas, Lajes, Fundações) segundo a NBR 6118/14.</p></body></html>
-
-
-
-
-
- 260
- 20
- 141
- 51
-
-
-
-
-
-
- navier_logo_mini.png
-
-
-
-
-
- -10
- -8
- 171
- 431
-
-
-
-
-
-
-
-
-
- 410
- 40
- 71
- 31
-
-
-
- <html><head/><body><p><span style=" font-style:italic;">- v.beta 0.1</span></p></body></html>
-
-
- Qt::RichText
-
-
-
-
-
- 180
- 130
- 361
- 271
-
-
-
- Elementos Estruturais
-
-
-
-
- 10
- 20
- 341
- 60
-
-
-
- Vigas
-
-
-
-
- 270
- 10
- 61
- 50
-
-
-
-
-
-
-
-
-
- 20
- 20
- 241
- 21
-
-
-
- Vigas Simples e Duplamente Armada
-
-
-
-
-
-
- 10
- 140
- 341
- 61
-
-
-
- Lajes
-
-
-
-
- 270
- 10
- 61
- 50
-
-
-
-
-
-
-
-
-
- 20
- 20
- 241
- 21
-
-
-
- Lajes Maciças Unidirecionais e Bidirecionais
-
-
-
-
-
- 200
- 60
- 351
- 61
-
-
-
- Vigas
-
-
-
-
- 280
- 10
- 61
- 41
-
-
-
- VIGAS
-
-
-
-
-
- 20
- 20
- 241
- 21
-
-
-
- Simples e Dupla Armação, Tê
-
-
-
-
-
-
-
- 10
- 200
- 341
- 61
-
-
-
- Fundação
-
-
-
-
- 270
- 10
- 61
- 50
-
-
-
-
-
-
-
-
-
- 20
- 20
- 241
- 21
-
-
-
- Sapatas Isoladas Excêntricas
-
-
-
-
-
- 200
- 60
- 351
- 61
-
-
-
- Vigas
-
-
-
-
- 280
- 10
- 61
- 41
-
-
-
- VIGAS
-
-
-
-
-
- 20
- 20
- 241
- 21
-
-
-
- Simples e Dupla Armação, Tê
-
-
-
-
-
-
-
- 10
- 80
- 341
- 61
-
-
-
- Pilares
-
-
-
-
- 270
- 10
- 61
- 50
-
-
-
-
-
-
-
-
-
- 20
- 16
- 251
- 31
-
-
-
- <html><head/><body><p>Pilares Intermediários, de Extremidade e Canto</p></body></html>
-
-
- Qt::RichText
-
-
-
-
-
- 200
- 60
- 351
- 61
-
-
-
- Vigas
-
-
-
-
- 280
- 10
- 61
- 41
-
-
-
- VIGAS
-
-
-
-
-
- 20
- 20
- 241
- 21
-
-
-
- Simples e Dupla Armação, Tê
-
-
-
-
-
-
-
-
- 10
- 80
- 141
- 141
-
-
-
-
-
-
- navier_logo.png
-
-
- false
-
-
-
-
-
- 20
- 330
- 131
- 51
-
-
-
-
-
-
- nassau_logo.png
-
-
- true
-
-
-
-
-
- Descrição
-
-
-
-
- -10
- -1
- 91
- 421
-
-
-
-
-
-
-
-
-
- 100
- 80
- 451
- 291
-
-
-
- QFrame::NoFrame
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">O Software</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">_______________________________________________________________________</p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Este programa permite realizar cálculos de Vigas, Pilares, Lajes e Sapatas de concreto armado em alguns casos espefícicos. Os cálculos envolvidos são estabelecidos para as situações críticas das peças no ELU (estado limite último), obedecendo os critérios indicados na ABNT NBR 6118/2014 (Projetos de estruturas de concreto - Procedimento). Este software foi desenvolvido em ambiente acadêmico. </p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Responsabilidade</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">_______________________________________________________________________</p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">O Navier realiza cálculos baseado em roteiros de cálculo de elementos estruturais isolados, explicitas em literaturas da área. Os resultados obtidos na utilização do programa deve ser analisados com cautela e estudados antes de qualquer aplicação, sendo voltado principalmente para profissionais envolvidos na área da construção civil com conhecimento técnico sobre análise de estruturas e concreto armado, a saber principalmente engenheiros e estudantes. O desenvolvedor não tem nenhuma responsabilidade sobre a aplicação dos resultados, cabendo a uma pessoa legalmente habilitada [engenheiro] a palavra final sobre um projeto<span style=" font-size:8pt;"> (cf. Resolução 1010, 22 de agosto de 2005, Art. 5º)</span></p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Cálculos Realizados</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">____________________________________________________________</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">- Vigas:</span> </p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cálculo de vigas de concreto armado com seções retangular, permite calcular armaduras de aço longitudinal e transversal. Para o armadura longitudinal existe as opções de calcular armadura simples ou armadura dupla, verificando requisitos como seção da viga, esforços e material para geração das áreas de aço (englobando armadura principal, sobre-apoio, pele e limitantes máxima e mínima), coeficientes (kmd, kx, kz) e dados sobre o domínio de ruptura. No cálculo das armaduras transversais o Navier permite o cálculo dos estribos baseados nos dois modelos de cálculo expressos na norma, sendo o modelo I o mais aplicado em projetos, já o modelo II possibilita a inserção de angulação para as bielas comprimidas diminuindo a taxa de área de aço.</p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">- Pilares:</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cálculos de pilares de concreto armado com seção retangular, permite calcular situações de pilares centrais e de extremidade, resolucionando situações de compressão centrada e flexo-compressão normal.</p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">- Lajes:</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cálculo de lajes de concreto armado do tipo maciça, permite calcular lajes unidirecionais e bidirecionais, utiliza-se dos coeficientes de Marcus para obtenção de esforços em elementos bidirecionais (tipo cruz) e utiliza as formulações dos momentos típicos em vigas biapoiadas para casos unidirecionais. Também são gerados coeficientes e informações relativas a laje com armaduras em ambas as direções. O Navier permite a entrada dos tipos de fixação laterais em engastadas ou livres.</p>
-<p align="justify" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">- Fundações:</span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cálculo de fundações de concreto armado do tipo isolada simples, permite calcular sapatas do tipo excêntricas e isoladas, através de informações dos materiais, esforços e dados do solo encontra as área de aço finais de tração em cada um dos sentidos assim como também diversas informações como alturas exigidas, balanços, normal equivalente e também tensões máximas e mínimas atuantes na base da sapata. Para obter resultados podem ser inseridos dimensões esperadas ou também solicitar dimensionamento automático da fundação.</p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">_______________________________________________________________________</p></body></html>
-
-
-
-
-
- 120
- 30
- 371
- 31
-
-
-
- QFrame::NoFrame
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt; font-weight:600;">Navier - software de cálculo de peças de concreto armado</span></p></body></html>
-
-
-
-
-
- Tabelas e Infos
-
-
-
-
- -10
- 0
- 91
- 421
-
-
-
-
-
-
-
-
-
- 110
- 20
- 321
- 30
-
-
-
- QFrame::NoFrame
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Tabelas importantes de normas brasileiras e cálculo</span></p></body></html>
-
-
-
-
-
- 129
- 255
- 391
- 150
-
-
-
- Tabelas de auxílio de cálculo
-
-
-
-
- 30
- 89
- 221
- 51
-
-
-
- QFrame::NoFrame
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">- Ábacos de Flexotração</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><span style=" font-size:7pt;"> </span><span style=" font-size:8pt;">Normal (Venturini & Rodrigues)</span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Oblíqua (Libânio M. Pinheiro)</span></p></body></html>
-
-
-
-
-
- 30
- 27
- 221
- 41
-
-
-
- QFrame::NoFrame
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">- Tabela de Marcus </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><span style=" font-size:8pt;">(Lajes Bidirecionais)</span></p></body></html>
-
-
-
-
-
- 330
- 88
- 51
- 50
-
-
-
-
-
-
-
-
-
- 330
- 26
- 51
- 51
-
-
-
-
-
-
-
-
-
- 10
- 20
- 381
- 60
-
-
-
-
-
-
-
-
-
- 10
- 83
- 381
- 60
-
-
-
-
-
-
-
-
-
- 270
- 88
- 51
- 50
-
-
-
-
-
-
- groupBox_26
- groupBox_17
- textBrowser_13
- textBrowser_12
- pushButton_8
- pushButton_7
- pushButton_23
-
-
-
-
- 130
- 43
- 391
- 211
-
-
-
- Tabelas de Normas
-
-
-
-
- 30
- 159
- 281
- 30
-
-
-
- QFrame::NoFrame
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">- Relação de bitolas de aços comerciais</span></p></body></html>
-
-
-
-
-
- 30
- 36
- 281
- 30
-
-
-
- QFrame::NoFrame
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">- Agressividade Ambiental (NBR 6118/2014)</span></p></body></html>
-
-
-
-
-
- 330
- 26
- 51
- 51
-
-
-
-
-
-
-
-
-
- 330
- 87
- 51
- 51
-
-
-
-
-
-
-
-
-
- 30
- 97
- 281
- 30
-
-
-
- QFrame::NoFrame
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">- Carregamento Adicional (NBR 6120/2017)</span></p></body></html>
-
-
-
-
-
- 330
- 149
- 51
- 51
-
-
-
-
-
-
-
-
-
- 10
- 20
- 381
- 61
-
-
-
-
-
-
-
-
-
- 10
- 82
- 381
- 61
-
-
-
-
-
-
-
-
-
- 10
- 144
- 381
- 60
-
-
-
-
-
-
- groupBox_16
- groupBox_15
- groupBox_14
- textBrowser_11
- textBrowser_9
- pushButton_2
- pushButton_5
- textBrowser_10
- pushButton_6
-
-
-
-
- Normas e Referências
-
-
-
-
- -10
- 0
- 91
- 421
-
-
-
-
-
-
-
-
-
- 140
- 60
- 401
- 51
-
-
-
-
-
-
-
-
- 10
- 5
- 381
- 41
-
-
-
- QFrame::NoFrame
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 6118: Projeto de estruturas de concreto - Procedimento. Rio de Janeiro, 2014. </p></body></html>
-
-
-
-
-
-
- 140
- 110
- 401
- 51
-
-
-
-
-
-
-
-
- 10
- 5
- 381
- 41
-
-
-
- QFrame::NoFrame
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 6120: Cargas para o cálculo de estruturas de edificações. Rio de Janeiro, 2017. </p></body></html>
-
-
-
-
-
-
- 110
- 27
- 91
- 30
-
-
-
- QFrame::NoFrame
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;">Referências </span></p></body></html>
-
-
-
-
-
- 140
- 160
- 401
- 51
-
-
-
-
-
-
-
-
- 10
- 5
- 381
- 41
-
-
-
- QFrame::NoFrame
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 6120: Cargas para o cálculo de estruturas de edificações. Rio de Janeiro, 2017. </p></body></html>
-
-
-
-
-
-
- 140
- 210
- 401
- 51
-
-
-
-
-
-
-
-
- 10
- 5
- 381
- 41
-
-
-
- QFrame::NoFrame
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 6120: Cargas para o cálculo de estruturas de edificações. Rio de Janeiro, 2017. </p></body></html>
-
-
-
-
-
-
- 140
- 260
- 401
- 51
-
-
-
-
-
-
-
-
- 10
- 5
- 381
- 41
-
-
-
- QFrame::NoFrame
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 6120: Cargas para o cálculo de estruturas de edificações. Rio de Janeiro, 2017. </p></body></html>
-
-
-
-
-
-
- 140
- 310
- 401
- 51
-
-
-
-
-
-
-
-
- 10
- 5
- 381
- 41
-
-
-
- QFrame::NoFrame
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 6120: Cargas para o cálculo de estruturas de edificações. Rio de Janeiro, 2017. </p></body></html>
-
-
-
-
-
-
- Sobre
-
-
-
-
- -10
- 0
- 91
- 421
-
-
-
-
-
-
-
-
-
- 420
- 250
- 141
- 151
-
-
-
-
-
-
- navier_logo.png
-
-
-
-
-
- 160
- 351
- 256
- 51
-
-
-
- QFrame::NoFrame
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">"Convém que Ele cresça e eu diminua" </span></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;"> João 3:30.</span></p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>
-
-
-
-
-
- 110
- 60
- 401
- 71
-
-
-
- QFrame::NoFrame
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Navier </span></p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:9pt;"> </span><span style=" font-size:8pt;"> Software para cálculo de peças de Concreto Armado</span> </p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Programado em Python 3.8 </p>
-<p align="justify" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Interface grágica com PyQt5</p></body></html>
-
-
-
-
-
- 210
- 160
- 321
- 41
-
-
-
- QFrame::NoFrame
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Anderson Alves de Aguiar (andersonalvesmath@hotmail.com)</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>
-
-
-
-
-
- 120
- 140
- 91
- 51
-
-
-
-
-
-
- logo_a3_mini.png
-
-
- true
-
-
-
-
-
- 180
- 210
- 40
- 31
-
-
-
-
-
-
- git_logo.png
-
-
- true
-
-
-
-
-
- 230
- 220
- 151
- 16
-
-
-
- https://github.com/Anderson3
-
-
-
-
-
- 310
- 240
- 41
- 41
-
-
-
-
-
-
- logo_brunel.png
-
-
- true
-
-
-
-
-
- 250
- 240
- 41
- 41
-
-
-
-
-
-
- logo_engtool.png
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/lajes.py b/lajes.py
deleted file mode 100644
index c5c3b31..0000000
--- a/lajes.py
+++ /dev/null
@@ -1,561 +0,0 @@
-
-
-
-import sys
-import math
-
-from PyQt5.uic import loadUi
-from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QMessageBox, QVBoxLayout, QHBoxLayout, QDialog, QMessageBox
-from PyQt5.QtGui import QPixmap, QIcon, QImage
-from PyQt5 import QtWidgets, QtGui, QtCore
-from PyQt5.QtWidgets import QTableWidget,QTableWidgetItem
-import pyqtgraph as pg
-
-import marcus
-
-class Lajes(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = loadUi('lajes.ui',self)
-
- self.lado1 = 'livre'
- self.lado2 = 'livre'
- self.lado3 = 'livre'
- self.lado4 = 'livre'
- self.label_37.hide()
- self.label_38.hide()
- self.label_40.hide()
- self.label_41.hide()
- global caso
- caso = '1'
- global lx_lage
- lx_lage = 'l_menor'
- self.lineEdit.setReadOnly(True)
-
- self.load_signals()
-
- self.setWindowTitle('Navier - Lajes')
- self.show()
-
- def load_signals(self):
- print('lajes iniciado')
- self.pushButton.clicked.connect(self.estado_l1)
- self.pushButton_2.clicked.connect(self.estado_l2)
- self.pushButton_3.clicked.connect(self.estado_l3)
- self.pushButton_4.clicked.connect(self.estado_l4)
- self.pushButton.clicked.connect(self.situacao_laje)
- self.pushButton_2.clicked.connect(self.situacao_laje)
- self.pushButton_3.clicked.connect(self.situacao_laje)
- self.pushButton_4.clicked.connect(self.situacao_laje)
-
- self.pushButton_5.clicked.connect(self.teste)
- self.pushButton_6.clicked.connect(self.calcular_laje)
-
- self.toolButton.clicked.connect(self.revelar_carg_acidental)
-
- def teste(self):
- lado1 = float(self.lineEdit_3.text())
- lado2 = float(self.lineEdit_4.text())
- espes = float(self.lineEdit_5.text())
-
-
- pp = (espes * 25)/100
- self.lineEdit.setText(str(pp))
-
- def revelar_carg_acidental(self):
- print('oi--')
- carga_adicional.show()
-
- def estado_l1(self):
- if self.lado1 == 'livre':
- self.lado1 = 'engastado'
- pixmap = QPixmap('engv.png')
- self.pushButton.setIcon(QIcon(pixmap))
- else:
- self.lado1 = 'livre'
- pixmap = QPixmap('livv.png')
- self.pushButton.setIcon(QIcon(pixmap))
-
- def estado_l2(self):
- if self.lado2 == 'livre':
- self.lado2 = 'engastado'
- pixmap = QPixmap('engh.png')
- self.pushButton_2.setIcon(QIcon(pixmap))
- else:
- self.lado2 = 'livre'
- pixmap = QPixmap('livh.png')
- self.pushButton_2.setIcon(QIcon(pixmap))
-
- def estado_l3(self):
- if self.lado3 == 'livre':
- self.lado3 = 'engastado'
- pixmap = QPixmap('engh.png')
- self.pushButton_3.setIcon(QIcon(pixmap))
- else:
- self.lado3 = 'livre'
- pixmap = QPixmap('livh.png')
- self.pushButton_3.setIcon(QIcon(pixmap))
-
- def estado_l4(self):
- if self.lado4 == 'livre':
- self.lado4 = 'engastado'
- pixmap = QPixmap('engv.png')
- self.pushButton_4.setIcon(QIcon(pixmap))
- else:
- self.lado4 = 'livre'
- pixmap = QPixmap('livv.png')
- self.pushButton_4.setIcon(QIcon(pixmap))
-
- def situacao_laje(self):
- l1 = self.lado1
- l2 = self.lado2
- l3 = self.lado3
- l4 = self.lado4
-
- cota_v1 = self.label_37
- cota_v2 = self.label_40
- cota_h1 = self.label_38
- cota_h2 = self.label_41
-
- if (l1 == 'livre' and l2 == 'livre' and l3 == 'livre' and l4 == 'livre'):
- global caso
- caso = '1'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- global lx_lage
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'livre' and l3 == 'livre' and l4 == 'livre') or (l1 == 'livre' and l2 == 'livre' and l3 == 'livre' and l4 == 'engastado'):
- caso = '2'
-
- cota_v1.hide()
- cota_v2.hide()
- cota_h1.show()
- cota_h2.show()
-
- lx_lage = 'l_maior'
- elif (l1 == 'livre' and l2 == 'engastado' and l3 == 'livre' and l4 == 'livre') or (l1 == 'livre' and l2 == 'livre' and l3 == 'engastado' and l4 == 'livre') :
- caso = '2'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'engastado' and l3 == 'livre' and l4 == 'livre') or (l1 == 'engastado' and l2 == 'livre' and l3 == 'engastado' and l4 == 'livre') or (l1 == 'livre' and l2 == 'engastado' and l3 == 'livre' and l4 == 'engastado') or (l1 == 'livre' and l2 == 'livre' and l3 == 'engastado' and l4 == 'engastado'):
- caso = '3'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'livre' and l3 == 'livre' and l4 == 'engastado'):
- caso = '4'
-
- cota_v1.hide()
- cota_v2.hide()
- cota_h1.show()
- cota_h2.show()
-
- lx_lage = 'l_maior'
- elif (l1 == 'livre' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'livre'):
- caso = '4'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'livre' and l3 == 'engastado' and l4 == 'engastado') or (l1 == 'engastado' and l2 == 'engastado' and l3 == 'livre' and l4 == 'engastado'):
- caso = '5'
-
- cota_v1.hide()
- cota_v2.hide()
- cota_h1.show()
- cota_h2.show()
-
- lx_lage = 'l_maior'
- elif (l1 == 'livre' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'engastado') or (l1 == 'engastado' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'livre'):
- caso = '5'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'engastado'):
- caso = '6'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- else:
- caso='ainda não existe, não sei como você chegou até aqui srsrrsrsrsrsrs'
-
-
- print(caso)
- self.lineEdit_6.setText(str(caso))
-
- def calcular_laje(self):
- lado_maior = float(self.lineEdit_3.text())
- lado_menor = float(self.lineEdit_4.text())
- espes = float(self.lineEdit_5.text())
- d = float(self.lineEdit_27.text())
-
- self.lineEdit_7.setText('')
- self.lineEdit_9.setText('')
- self.lineEdit_8.setText('')
- self.lineEdit_10.setText('')
- self.lineEdit_16.setText('')
- self.lineEdit_14.setText('')
- self.lineEdit_15.setText('')
- self.lineEdit_16.setText('')
-
- if lado_maior != 0 and lado_menor != 0 and espes != 0 and d != 0:
- lado1 = float(self.lineEdit_3.text())
- lado2 = float(self.lineEdit_4.text())
- espes = float(self.lineEdit_5.text())
- d = float(self.lineEdit_27.text())
- carreg_adicional = float(self.lineEdit_2.text())
-
- pp = (espes * 25)/100
- self.lineEdit.setText(str(pp))
-
- carreg_total = pp + carreg_adicional
- #print(caso)
- #print(lx_lage)
- #---------------------------------- cálculo do Lx baseado no caso do tipo de situação da laje -----------------
- global lx
- global lambda_laje
- if lx_lage == 'l_menor':
- lx = lado2
- lambda_laje = round((lado1/lado2),ndigits=2)
- elif lx_lage == 'l_maior':
- lx = lado1
- lambda_laje = round((lado2/lado1),ndigits=2)
- print(lx_lage)
-
- #---------------------------------- definição se a laje é unidirecional ou bidirecional baseado no lambda -----------------
- global tipo_laje
- if float(lambda_laje) > 2.001:
- tipo_laje = 'UNIDIRECIONAL'
- self.laje_unidirecional(carreg_total)
- else:
- tipo_laje = 'BIDIRECIONAL'
- self.label_43.setStyleSheet("Background: url('laje_unidirecional_modelo.png') no-repeat")
-
- mx = my = nx = ny = ''
-
- if caso == '1':
- caso1 = marcus.caso1
- linhas = len(caso1)
- colunas = len(caso1[0])
-
- for i in range(linhas):
- aux = caso1[i][0]
- if lambda_laje == aux:
- print(caso1[i])
- mx = caso1[i][2]
- my = caso1[i][3]
-
- print('mx: ',mx)
- print('my: ',my)
-
- if caso == '2':
- caso2 = marcus.caso2
- linhas = len(caso2)
- colunas = len(caso2[0])
-
- for i in range(linhas):
- aux = caso2[i][0]
- if lambda_laje == aux:
- print(caso2[i])
- mx = caso2[i][2]
- nx = caso2[i][3]
- my = caso2[i][4]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
-
- if caso == '3':
- caso3 = marcus.caso3
- linhas = len(caso3)
- colunas = len(caso3[0])
-
- for i in range(linhas):
- aux = caso3[i][0]
- if lambda_laje == aux:
- print(caso3[i])
- mx = caso3[i][2]
- nx = caso3[i][3]
- my = caso3[i][4]
- ny = caso3[i][5]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
- print('ny: ',ny)
-
- if caso == '4':
- caso4 = marcus.caso4
- linhas = len(caso4)
- colunas = len(caso4[0])
-
- for i in range(linhas):
- aux = caso4[i][0]
- if lambda_laje == aux:
- print(caso4[i])
- mx = caso4[i][2]
- nx = caso4[i][3]
- my = caso4[i][4]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
-
- if caso == '5':
- caso5 = marcus.caso5
- linhas = len(caso5)
- colunas = len(caso5[0])
-
- for i in range(linhas):
- aux = caso5[i][0]
- if lambda_laje == aux:
- print(caso5[i])
- mx = caso5[i][2]
- nx = caso5[i][3]
- my = caso5[i][4]
- ny = caso5[i][5]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
- print('ny: ',ny)
-
- if caso == '6':
- caso6 = marcus.caso6
- linhas = len(caso6)
- colunas = len(caso6[0])
-
- for i in range(linhas):
- aux = caso6[i][0]
- if lambda_laje == aux:
- print(caso6[i])
- mx = caso6[i][2]
- nx = caso6[i][3]
- my = caso6[i][4]
- ny = caso6[i][5]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
- print('ny: ',ny)
-
- print(lx)
- if mx != '':
- self.lineEdit_7.setText(str(mx))
- momento_pos_x = ((carreg_total * (lx**2))/mx)
- momento_pos_x = round(momento_pos_x,ndigits=4)
- self.lineEdit_13.setText(str(momento_pos_x))
- #else:
- # self.lineEdit_13.setText('0')
- if nx != '':
- self.lineEdit_9.setText(str(nx))
- momento_neg_x = round(((carreg_total * (lx**2))/nx),ndigits=4)
- self.lineEdit_14.setText(str(momento_neg_x))
- #momento_neg_x = round(momento_neg_x,ndigits=2)
- #else:
- # self.lineEdit_14.setText('0')
- if my != '':
- self.lineEdit_8.setText(str(my))
- momento_pos_y = ((carreg_total * (lx**2))/my)
- momento_pos_y = round(momento_pos_y,ndigits=4)
- self.lineEdit_15.setText(str(momento_pos_y))
- #else:
- # self.lineEdit_15.setText('0')
- if ny != '':
- self.lineEdit_10.setText(str(ny))
- momento_neg_y = round(((carreg_total * (lx**2))/ny),ndigits=4)
- self.lineEdit_16.setText(str(momento_neg_y))
- #momento_neg_y = round(momento_neg_y,ndigits=2)
- #else:
- # self.lineEdit_16.setText('0')
-
-
- #----------------------------------- enviar resultados de saida ao programa ---------------------------------------
- self.lineEdit_11.setText(str(lambda_laje))
- self.label_16.setText(str(tipo_laje))
- self.lineEdit_12.setText(str(carreg_total))
-
- self.resultados_laje()
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes")
-
-
- def laje_unidirecional(self,carreg_total):
-
- #self.lineEdit_7.setText('')
- #self.lineEdit_9.setText('')
- #self.lineEdit_8.setText('')
- #self.lineEdit_10.setText('')
- #self.lineEdit_16.setText('')
- #self.lineEdit_13.setText('')
- #self.lineEdit_14.setText('')
- #self.lineEdit_15.setText('')
- #self.lineEdit_16.setText('')
-
- print('unidirecional')
- #l1 = self.lado1
- l2 = self.lado2
- l3 = self.lado3
- #l4 = self.lado4
- print(carreg_total)
- if (l2 == 'livre' and l3 == 'livre'):
- self.label_43.setStyleSheet("Background: url('laje_unidirecional_ll2.png') no-repeat")
- momento_pos_y = (carreg_total * (lx**2))/8
- momento_neg_y = 0
- elif (l2 == 'engastado' and l3 == 'engastado'):
- self.label_43.setStyleSheet("Background: url('laje_unidirecional_ee2.png') no-repeat")
- momento_pos_y = (carreg_total * (lx**2))/24
- momento_neg_y = (carreg_total * (lx**2))/12
- elif (l2 == 'engastado' and l3 == 'livre') or (l2 == 'livre' and l3 == 'engastado'):
- self.label_43.setStyleSheet("Background: url('laje_unidirecional_le2.png') no-repeat")
- momento_pos_y = (carreg_total * (lx**2))/14.2
- momento_neg_y = (carreg_total * (lx**2))/8
-
- print('momento_pos_y: ',momento_pos_y)
- print('momento_neg_y: ',momento_neg_y)
-
- #----------------------------------- enviar resultados de saida ao programa ---------------------------------------
- momento_pos_y = round(momento_pos_y,ndigits=4)
- self.lineEdit_15.setText(str(momento_pos_y))
- momento_neg_y = round(momento_neg_y,ndigits=4)
- self.lineEdit_16.setText(str(momento_neg_y))
-
- self.lineEdit_13.setText('0')
- self.lineEdit_14.setText('0')
-
- self.lineEdit_11.setText(str(lambda_laje))
- self.label_16.setText(str(tipo_laje))
- self.lineEdit_12.setText(str(carreg_total))
-
- self.resultados_laje()
-
- def truncar(self,x):
- aux = '{:.9f}'.format(x)
- return aux
-
- def resultados_laje(self):
-
- mx = self.lineEdit_13.text()
- if mx == '':
- self.lineEdit_13.setText('0')
-
- my = self.lineEdit_15.text()
- if my == '':
- self.lineEdit_15.setText('0')
-
- nx = self.lineEdit_14.text()
- if nx == '':
- self.lineEdit_14.setText('0')
-
- ny = self.lineEdit_16.text()
- if ny == '':
- self.lineEdit_16.setText('0')
-
- fck_laje = float(self.comboBox.currentText())
- fyk_laje = float(self.comboBox_2.currentText())
- fcd_laje = fck_laje * 1.4 * 1000000
- fyd_laje = fyk_laje * 1.4 * 1000000
- d_laje = float(self.lineEdit_27.text())
-
- mx = float(self.lineEdit_13.text())
- my = float(self.lineEdit_15.text())
- nx = float(self.lineEdit_14.text())
- ny = float(self.lineEdit_16.text())
- #print('mx: ',mx)
- #print('nx: ',nx)
- #print('my: ',my)
- #print('ny: ',ny)
- if mx > nx:
- mk_x = mx
- else:
- mk_x = nx
- if my > ny:
- mk_y = my
- else:
- mk_y = ny
-
- #print('mkx: ',mk_x)
- #print('mky: ',mk_y)
- md_x = round(1.4 * mk_x, ndigits = 4)
- kmd_x_laje = (md_x * 1000)/(1 * ((d_laje/100)**2) * 0.85 * (fcd_laje))
- print('kmd_x_laje-',kmd_x_laje)
- kx_x_laje = (1 - math.sqrt(1 - 2*kmd_x_laje))/0.8
- kz_x_laje = 1 - 0.4 * kx_x_laje
-
- as_x_laje = (md_x * 1000/ (kz_x_laje * (d_laje/100) * fyd_laje))*100000
-
- print('md_x: ', md_x)
- print('kmd_x_laje: ', kmd_x_laje)
- print('kx_x_laje: ', kx_x_laje)
- print('kz_x_laje: ', kz_x_laje)
- print('as_x_laje: ', as_x_laje)
-
- md_y = round(1.4 * mk_y, ndigits = 4)
- kmd_y_laje = (md_y * 1000)/(1 * ((d_laje/100)**2) * 0.85 * (fcd_laje))
- kx_y_laje = (1 - math.sqrt(1 - 2*kmd_y_laje))/0.8
- kz_y_laje = 1 - 0.4 * kx_y_laje
-
- as_y_laje = (md_y * 1000/ (kz_y_laje * (d_laje/100) * fyd_laje))*100000
-
- print('md_y: ', md_y)
- print('kmd_y_laje: ', kmd_y_laje)
- print('kx_y_laje: ', kx_y_laje)
- print('kz_y_laje: ', kz_y_laje)
- print('as_y_laje: ', as_y_laje)
-
- #------------------------------------------ saida de dados ------------------------------------
- kmd_x_laje = self.truncar(kmd_x_laje)
- kx_x_laje = self.truncar(kx_x_laje)
- kz_x_laje = self.truncar(kz_x_laje)
- as_x_laje = self.truncar(as_x_laje)
-
- kmd_y_laje = self.truncar(kmd_y_laje)
- kx_y_laje = self.truncar(kx_y_laje)
- kz_y_laje = self.truncar(kz_y_laje)
- as_y_laje = self.truncar(as_y_laje)
-
- self.lineEdit_17.setText(str(md_x))
- self.lineEdit_18.setText(str(kmd_x_laje))
- self.lineEdit_19.setText(str(kx_x_laje))
- self.lineEdit_20.setText(str(kz_x_laje))
- self.lineEdit_21.setText(str(as_x_laje))
-
- self.lineEdit_22.setText(str(md_y))
- self.lineEdit_24.setText(str(kmd_y_laje))
- self.lineEdit_25.setText(str(kx_y_laje))
- self.lineEdit_26.setText(str(kz_y_laje))
- self.lineEdit_23.setText(str(as_y_laje))
-
-
-
-
-
-if __name__ == '__main__':
- app = QtWidgets.QApplication(sys.argv)
- inicio = Lajes()
-
- app.exec_()
diff --git a/lajes.ui b/lajes.ui
deleted file mode 100644
index 631dd29..0000000
--- a/lajes.ui
+++ /dev/null
@@ -1,1331 +0,0 @@
-
-
- MainWindow
-
-
-
- 0
- 0
- 933
- 643
-
-
-
- MainWindow
-
-
-
-
-
- 20
- 340
- 251
- 81
-
-
-
- Carregamento
-
-
-
-
- 20
- 20
- 121
- 20
-
-
-
- Peso Próprio [KN/m²]
-
-
-
-
-
- 140
- 20
- 81
- 20
-
-
-
- 0
-
-
-
-
-
- 20
- 50
- 121
- 20
-
-
-
- Carg. Adicional [KN/m²]
-
-
-
-
-
- 140
- 50
- 81
- 20
-
-
-
- 0
-
-
-
-
-
- 221
- 50
- 25
- 19
-
-
-
- ...
-
-
-
-
-
-
- 20
- 177
- 251
- 151
-
-
-
- Dimensões
-
-
-
-
- 20
- 30
- 101
- 16
-
-
-
- L1 - lado maior [m]
-
-
-
-
-
- 132
- 30
- 101
- 20
-
-
-
- 0
-
-
-
-
-
- 20
- 60
- 101
- 16
-
-
-
- L2 - lado menor [m]
-
-
-
-
-
- 132
- 60
- 101
- 20
-
-
-
- 0
-
-
-
-
-
- 18
- 90
- 91
- 16
-
-
-
- Espessura [cm]
-
-
-
-
-
- 130
- 90
- 101
- 20
-
-
-
- 0
-
-
-
-
-
- 132
- 120
- 101
- 20
-
-
-
- 0
-
-
-
-
-
- 20
- 120
- 91
- 16
-
-
-
- Altura Útil [cm]
-
-
-
-
-
-
- 20
- 86
- 251
- 81
-
-
-
- Concreto
-
-
-
-
- 20
- 20
- 121
- 20
-
-
-
- Resistência - fck [MPa]
-
-
-
-
-
- 150
- 20
- 81
- 22
-
-
- -
-
- 20
-
-
- -
-
- 25
-
-
- -
-
- 30
-
-
- -
-
- 35
-
-
- -
-
- 40
-
-
- -
-
- 45
-
-
- -
-
- 50
-
-
-
-
-
-
- 150
- 50
- 81
- 22
-
-
- -
-
- 250
-
-
- -
-
- 500
-
-
- -
-
- 600
-
-
-
-
-
-
- 20
- 50
- 121
- 20
-
-
-
- Resistência do Aço [MPa]
-
-
-
-
-
-
- 20
- 430
- 251
- 141
-
-
-
- Representação
-
-
-
-
- 20
- 17
- 221
- 120
-
-
-
-
-
-
- laje-esqm.png
-
-
- true
-
-
-
-
-
-
- 290
- 87
- 281
- 481
-
-
-
- Caso de Cálculo Laje
-
-
-
-
- 40
- 50
- 191
- 121
-
-
-
-
-
-
- laje.png
-
-
- true
-
-
-
-
-
- 20
- 50
- 21
- 121
-
-
-
- false
-
-
-
-
-
-
- livv.pnglivv.png
-
-
-
- 50
- 210
-
-
-
- false
-
-
-
-
-
- 40
- 30
- 190
- 21
-
-
-
-
-
-
-
- livh.pnglivh.png
-
-
-
- 300
- 50
-
-
-
-
-
-
- 40
- 170
- 190
- 21
-
-
-
-
-
-
-
- livh.pnglivh.png
-
-
-
- 300
- 50
-
-
-
-
-
-
- 230
- 50
- 21
- 120
-
-
-
-
-
-
-
- livv.pnglivv.png
-
-
-
- 50
- 210
-
-
-
-
-
-
- 60
- 200
- 111
- 16
-
-
-
- CASO (para cálculo):
-
-
-
-
-
- 170
- 200
- 31
- 20
-
-
-
- false
-
-
- 1
-
-
- Qt::AlignCenter
-
-
-
-
-
- 0
- 360
- 281
- 121
-
-
-
- Laje Bidirecional - Coeficientes de Marcus
-
-
-
-
- 160
- 90
- 101
- 23
-
-
-
- Obter Coeficientes
-
-
-
-
-
- 20
- 30
- 47
- 16
-
-
-
- mx
-
-
-
-
-
- 50
- 30
- 81
- 20
-
-
-
-
-
-
- 50
- 60
- 81
- 20
-
-
-
-
-
-
- 20
- 60
- 47
- 16
-
-
-
- my
-
-
-
-
-
- 140
- 30
- 47
- 16
-
-
-
- nx
-
-
-
-
-
- 170
- 30
- 81
- 20
-
-
-
-
-
-
- 140
- 60
- 47
- 16
-
-
-
- ny
-
-
-
-
-
- 170
- 60
- 81
- 20
-
-
-
-
-
-
-
- 190
- 100
- 21
- 16
-
-
-
- lx
-
-
-
-
-
- 130
- 130
- 21
- 16
-
-
-
- lx
-
-
-
-
-
- 110
- 150
- 91
- 16
-
-
-
-
-
-
-
-
-
- 200
- 50
- 21
- 121
-
-
-
-
-
-
- cota_v_laje.png
-
-
-
-
-
- 50
- 140
- 171
- 20
-
-
-
-
-
-
- cota_h_laje.png
-
-
- true
-
-
-
-
-
- 120
- 100
- 31
- 16
-
-
-
-
-
-
-
-
-
- 0
- 250
- 281
- 231
-
-
-
- Laje Unidirecional - Casos
-
-
-
-
- 20
- 10
- 241
- 101
-
-
-
-
-
-
- laje_unidirecional_modelo.png.png
-
-
- false
-
-
-
- groupBox_11
- label_4
- pushButton
- pushButton_2
- pushButton_3
- pushButton_4
- label_10
- lineEdit_6
- groupBox_6
- label_37
- label_38
- label_39
- label_40
- label_41
- label_42
-
-
-
-
- 590
- 88
- 330
- 481
-
-
-
- Dimensionamento
-
-
-
-
- 134
- 40
- 71
- 21
-
-
-
- Tipo de Laje:
-
-
-
-
-
- 50
- 40
- 61
- 20
-
-
-
-
-
-
- 220
- 40
- 91
- 21
-
-
-
- ______________
-
-
-
-
-
- 20
- 40
- 31
- 21
-
-
-
- λ :
-
-
-
-
-
- 20
- 80
- 111
- 21
-
-
-
- Carreg. Total [KN/m²]
-
-
-
-
-
- 150
- 80
- 101
- 20
-
-
-
-
-
-
- 0
- 120
- 341
- 90
-
-
-
- Momentos Atuantes [KN/m²]
-
-
-
-
- 90
- 30
- 31
- 21
-
-
-
- Mx
-
-
-
-
-
- 110
- 30
- 81
- 20
-
-
-
-
-
-
-
-
-
- 210
- 30
- 31
- 21
-
-
-
- Nx
-
-
-
-
-
- 230
- 30
- 81
- 20
-
-
-
-
-
-
-
-
-
- 90
- 60
- 31
- 21
-
-
-
- My
-
-
-
-
-
- 110
- 60
- 81
- 20
-
-
-
-
-
-
-
-
-
- 230
- 60
- 81
- 20
-
-
-
-
-
-
-
-
-
- 210
- 60
- 31
- 21
-
-
-
- Ny
-
-
-
-
-
- 20
- 30
- 51
- 16
-
-
-
- Sentido X:
-
-
-
-
-
- 20
- 60
- 51
- 16
-
-
-
- Sentido Y:
-
-
-
-
-
-
- 0
- 240
- 170
- 201
-
-
-
- Sentido X
-
-
-
-
- 20
- 40
- 47
- 16
-
-
-
- Md
-
-
-
-
-
- 60
- 40
- 91
- 20
-
-
-
-
-
-
- 20
- 70
- 47
- 16
-
-
-
- Kmd
-
-
-
-
-
- 60
- 70
- 91
- 20
-
-
-
-
-
-
- 60
- 100
- 91
- 20
-
-
-
-
-
-
- 20
- 100
- 47
- 16
-
-
-
- Kx
-
-
-
-
-
- 60
- 130
- 91
- 20
-
-
-
-
-
-
- 20
- 130
- 47
- 16
-
-
-
- Kz
-
-
-
-
-
- 20
- 160
- 47
- 16
-
-
-
- As
-
-
-
-
-
- 60
- 160
- 91
- 20
-
-
-
-
-
-
-
- 169
- 240
- 171
- 201
-
-
-
- Sentido Y
-
-
-
-
- 50
- 160
- 91
- 20
-
-
-
-
-
-
- 50
- 70
- 91
- 20
-
-
-
-
-
-
- 10
- 70
- 47
- 16
-
-
-
- Kmd
-
-
-
-
-
- 10
- 40
- 47
- 16
-
-
-
- Md
-
-
-
-
-
- 10
- 130
- 47
- 16
-
-
-
- Kz
-
-
-
-
-
- 10
- 100
- 47
- 16
-
-
-
- Kx
-
-
-
-
-
- 50
- 130
- 91
- 20
-
-
-
-
-
-
- 50
- 100
- 91
- 20
-
-
-
-
-
-
- 10
- 160
- 47
- 16
-
-
-
- As
-
-
-
-
-
- 50
- 40
- 91
- 20
-
-
-
-
-
-
-
- 130
- 216
- 101
- 21
-
-
-
- Áreas de Aço [mm²]
-
-
-
-
-
- 190
- 450
- 121
- 23
-
-
-
- Gerar Detalhamento
-
-
-
-
-
-
- 670
- 580
- 75
- 23
-
-
-
- Calcular
-
-
-
-
-
- 760
- 580
- 75
- 23
-
-
-
- Limpar
-
-
-
-
-
- 850
- 580
- 75
- 23
-
-
-
- Salvar
-
-
-
-
-
-
-
-
-
diff --git a/lajes_carg_adicional.ui b/lajes_carg_adicional.ui
deleted file mode 100644
index d6d1433..0000000
--- a/lajes_carg_adicional.ui
+++ /dev/null
@@ -1,906 +0,0 @@
-
-
- MainWindow
-
-
-
- 0
- 0
- 649
- 504
-
-
-
- MainWindow
-
-
-
-
-
- 10
- 60
- 631
- 421
-
-
-
-
- 631
- 421
-
-
-
-
- Arquibancada
-
-
-
-
- Balcões
-
-
-
-
- Bancos
-
-
-
-
-
-
-
-
-
- Bibliotecas
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Casas de Máquinas
-
-
-
-
- Cinemas
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Clubes
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Corredores
-
-
-
-
-
-
-
-
-
- Cozinhas e Residências
-
-
-
-
- Depósitos
-
-
-
-
- Edifícios Residenciais
-
-
-
-
-
-
-
-
-
- Escadas
-
-
-
-
-
-
-
-
-
- Escolas
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Escritórios
-
-
-
-
- Forros
-
-
-
-
- Galeria de Artes
-
-
-
-
- Galeria de Lojas
-
-
-
-
- Garagens e Estacionamentos
-
-
-
-
- Ginásio de Esportes
-
-
-
-
- Hospital
-
-
-
-
-
-
-
-
-
- Laboratórios
-
-
-
-
- Lavanderias
-
-
-
-
- Lojas
-
-
-
-
- Restaurantes
-
-
-
-
- Teatros
-
-
-
-
-
-
-
-
-
- Terraços
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Vestíbulo
-
-
-
-
-
-
-
-
-
- Descrição
-
-
-
-
- Cargas [KN/m²]
-
-
- AlignCenter
-
-
- -
-
- 4
-
-
- AlignCenter
-
-
- -
-
- Mesma carga da peça com a qual se comunicam as previstas em 2.2.1.5
-
-
- -
-
- -
-
-
- AlignCenter
-
-
- -
-
- Escritórios e Banheiros
-
-
- -
-
- 2
-
-
- AlignCenter
-
-
- -
-
- Salas de diretoria e de Gerência
-
-
- -
-
- 1.5
-
-
- AlignCenter
-
-
- -
-
- Salas de leitura
-
-
- -
-
- 2.5
-
-
- AlignCenter
-
-
- -
-
- Salas para depósito de livros
-
-
- -
-
- 4
-
-
- AlignCenter
-
-
- -
-
- Salas com estante de livros a ser determinada em cada caso ou 2.5 KN/m² por metro de altura observado, porém valor mínimo de
-
-
- -
-
- 6
-
-
- AlignCenter
-
-
- -
-
- (incluindo o peso das máquinas) a ser determinada em cada caso, porém o valor mínimo de
-
-
- -
-
- 7.5
-
-
- AlignCenter
-
-
- -
-
- Plateia com assentos fixos
-
-
- -
-
- 3
-
-
- AlignCenter
-
-
- -
-
- Estúdio e plateia com assentos móveis
-
-
- -
-
- 4
-
-
- AlignCenter
-
-
- -
-
- Banheiro
-
-
- -
-
- 2
-
-
- AlignCenter
-
-
- -
-
- Sala de refeições e de assembleia com assentos fixos
-
-
- -
-
- 3
-
-
- AlignCenter
-
-
- -
-
- Sala de assembleia com assentos móveis
-
-
- -
-
- 4
-
-
- AlignCenter
-
-
- -
-
- Salão de danças e salão de esportes
-
-
- -
-
- 5
-
-
- AlignCenter
-
-
- -
-
- Sala de bilhar e banheiro
-
-
- -
-
- 2
-
-
- AlignCenter
-
-
- -
-
- com acesso ao público
-
-
- -
-
- 3
-
-
- AlignCenter
-
-
- -
-
- sem acesso ao público
-
-
- -
-
- 2
-
-
- AlignCenter
-
-
- -
-
- a ser determinada em cada caso, porém mínimo de
-
-
- -
-
- 3
-
-
- AlignCenter
-
-
- -
-
- a ser determinada em cada caso e na falta de valores experimentais cf indicado 2.2.1.3
-
-
- -
-
- -
-
-
- AlignCenter
-
-
- -
-
- Dormitórios, sala, copa, cozinha e banheiro
-
-
- -
-
- 1.5
-
-
- AlignCenter
-
-
- -
-
- Despensa, área de serviço e lavanderia
-
-
- -
-
- 2
-
-
- AlignCenter
-
-
- -
-
- com acesso ao público
-
-
- -
-
- 3
-
-
- AlignCenter
-
-
- -
-
- sem acesso ao público
-
-
- -
-
- 2.5
-
-
- AlignCenter
-
-
- -
-
- Anfiteatro com assentos fixos
-
-
- -
-
-
-
-
- AlignCenter
-
-
- -
-
- Corredor e sala de aula
-
-
- -
-
- 3
-
-
- AlignCenter
-
-
- -
-
- outras salas
-
-
- -
-
- 2
-
-
- AlignCenter
-
-
- -
-
- Salas de uso geral e banheiro
-
-
- -
-
- 2
-
-
- AlignCenter
-
-
- -
-
- sem acesso a pessoas
-
-
- -
-
- 0.5
-
-
- AlignCenter
-
-
- -
-
- a ser determinada em cada caso, porém mínimo de
-
-
- -
-
- 3
-
-
- AlignCenter
-
-
- -
-
- a ser determinada em cada caso, porém mínimo de
-
-
- -
-
- 3
-
-
- AlignCenter
-
-
- -
-
- Para veículos de passageiros ou semelhantes com carga máxima de 25 KN por veículo. Valores de o indicados em 2.2.1.6
-
-
- -
-
- 3
-
-
- AlignCenter
-
-
- -
-
- 3
-
-
- AlignCenter
-
-
- -
-
- Dormitórios, enfermarias, sala de recuperação, sala de cirurgia, sala de raio X e banheiro
-
-
- -
-
- 2
-
-
- AlignCenter
-
-
- -
-
- Corredor
-
-
- -
-
- 3
-
-
- AlignCenter
-
-
- -
-
- Incluindo equipamentos a ser determinados em cada caso, porém com no mínimo
-
-
- -
-
- 3
-
-
- AlignCenter
-
-
- -
-
- Incluindo equipamentos
-
-
- -
-
- 3
-
-
- AlignCenter
-
-
- -
-
- 4
-
-
- AlignCenter
-
-
- -
-
- 3
-
-
- AlignCenter
-
-
- -
-
- Palco
-
-
- -
-
- 5
-
-
- AlignCenter
-
-
- -
-
- Demais dependências: cargas iguais às especificadas para cinemas
-
-
- -
-
- -
-
-
- AlignCenter
-
-
- -
-
- sem acesso ao público
-
-
- -
-
- 2
-
-
- AlignCenter
-
-
- -
-
- com acesso ao público
-
-
- -
-
- 3
-
-
- AlignCenter
-
-
- -
-
- inacessível a pessoas
-
-
- -
-
- 0.5
-
-
- AlignCenter
-
-
- -
-
- Destinados a heliportos elevados: as cargas deverão ser fornecidas pelo orgão competente do Ministério da Aeronáutica
-
-
- -
-
- -
-
-
- AlignCenter
-
-
- -
-
- sem acesso ao público
-
-
- -
-
- 1.5
-
-
- AlignCenter
-
-
- -
-
- com acesso ao público
-
-
- -
-
- 3
-
-
- AlignCenter
-
-
-
-
-
-
- 40
- 20
- 241
- 31
-
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt; font-weight:600;">Carrregamentos Adicionais</span></p></body></html>
-
-
- Qt::AutoText
-
-
-
-
-
- 360
- 20
- 251
- 31
-
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Informações extraídas da NBR 6120/19 - Tabela 10.</p></body></html>
-
-
-
-
-
-
-
-
-
diff --git a/lajes_revisao.py b/lajes_revisao.py
deleted file mode 100644
index de48bbb..0000000
--- a/lajes_revisao.py
+++ /dev/null
@@ -1,713 +0,0 @@
-
-
-
-import sys, os
-import math
-
-from PyQt5.uic import loadUi
-from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QMessageBox, QVBoxLayout, QHBoxLayout, QDialog, QMessageBox
-from PyQt5.QtGui import QPixmap, QIcon, QImage
-from PyQt5 import QtWidgets, QtGui, QtCore
-from PyQt5.QtWidgets import QTableWidget,QTableWidgetItem
-
-import marcus
-
-
-
-class Lajes(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = loadUi('lajes_alt.ui',self)
-
- self.lado1 = 'livre'
- self.lado2 = 'livre'
- self.lado3 = 'livre'
- self.lado4 = 'livre'
- self.label_37.hide()
- self.label_38.hide()
- self.label_40.hide()
- self.label_41.hide()
- global caso
- caso = '1'
- global lx_lage
- lx_lage = 'l_menor'
- self.lineEdit.setReadOnly(True)
-
- self.load_signals()
-
- self.setWindowTitle('Navier - Lajes')
- self.show()
-
-
- def load_signals(self):
- print('lajes iniciado')
- self.pushButton.clicked.connect(self.estado_l1)
- self.pushButton_2.clicked.connect(self.estado_l2)
- self.pushButton_3.clicked.connect(self.estado_l3)
- self.pushButton_4.clicked.connect(self.estado_l4)
- self.pushButton.clicked.connect(self.situacao_laje)
- self.pushButton_2.clicked.connect(self.situacao_laje)
- self.pushButton_3.clicked.connect(self.situacao_laje)
- self.pushButton_4.clicked.connect(self.situacao_laje)
-
- self.pushButton_5.clicked.connect(self.teste)
- self.pushButton_6.clicked.connect(self.calcular_laje)
-
- self.toolButton.clicked.connect(self.revelar_carg_acidental)
-
- def teste(self):
- lado1 = float(self.lineEdit_3.text())
- lado2 = float(self.lineEdit_4.text())
- espes = float(self.lineEdit_5.text())
-
-
- pp = (espes * 25)/100
- self.lineEdit.setText(str(pp))
-
- def revelar_carg_acidental(self):
- print('oi--')
- carga_adicional.show()
-
- def estado_l1(self):
- if self.lado1 == 'livre':
- self.lado1 = 'engastado'
- pixmap = QPixmap('engv.png')
- self.pushButton.setIcon(QIcon(pixmap))
- else:
- self.lado1 = 'livre'
- pixmap = QPixmap('livv.png')
- self.pushButton.setIcon(QIcon(pixmap))
-
- def estado_l2(self):
- if self.lado2 == 'livre':
- self.lado2 = 'engastado'
- pixmap = QPixmap('engh.png')
- self.pushButton_2.setIcon(QIcon(pixmap))
- else:
- self.lado2 = 'livre'
- pixmap = QPixmap('livh.png')
- self.pushButton_2.setIcon(QIcon(pixmap))
-
- def estado_l3(self):
- if self.lado3 == 'livre':
- self.lado3 = 'engastado'
- pixmap = QPixmap('engh.png')
- self.pushButton_3.setIcon(QIcon(pixmap))
- else:
- self.lado3 = 'livre'
- pixmap = QPixmap('livh.png')
- self.pushButton_3.setIcon(QIcon(pixmap))
-
- def estado_l4(self):
- if self.lado4 == 'livre':
- self.lado4 = 'engastado'
- pixmap = QPixmap('engv.png')
- self.pushButton_4.setIcon(QIcon(pixmap))
- else:
- self.lado4 = 'livre'
- pixmap = QPixmap('livv.png')
- self.pushButton_4.setIcon(QIcon(pixmap))
-
- def situacao_laje(self):
- l1 = self.lado1
- l2 = self.lado2
- l3 = self.lado3
- l4 = self.lado4
-
- cota_v1 = self.label_37
- cota_v2 = self.label_40
- cota_h1 = self.label_38
- cota_h2 = self.label_41
-
- if (l1 == 'livre' and l2 == 'livre' and l3 == 'livre' and l4 == 'livre'):
- global caso
- caso = '1'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- global lx_lage
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'livre' and l3 == 'livre' and l4 == 'livre') or (l1 == 'livre' and l2 == 'livre' and l3 == 'livre' and l4 == 'engastado'):
- caso = '2'
-
- cota_v1.hide()
- cota_v2.hide()
- cota_h1.show()
- cota_h2.show()
-
- lx_lage = 'l_maior'
- elif (l1 == 'livre' and l2 == 'engastado' and l3 == 'livre' and l4 == 'livre') or (l1 == 'livre' and l2 == 'livre' and l3 == 'engastado' and l4 == 'livre') :
- caso = '2'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'engastado' and l3 == 'livre' and l4 == 'livre') or (l1 == 'engastado' and l2 == 'livre' and l3 == 'engastado' and l4 == 'livre') or (l1 == 'livre' and l2 == 'engastado' and l3 == 'livre' and l4 == 'engastado') or (l1 == 'livre' and l2 == 'livre' and l3 == 'engastado' and l4 == 'engastado'):
- caso = '3'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'livre' and l3 == 'livre' and l4 == 'engastado'):
- caso = '4'
-
- cota_v1.hide()
- cota_v2.hide()
- cota_h1.show()
- cota_h2.show()
-
- lx_lage = 'l_maior'
- elif (l1 == 'livre' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'livre'):
- caso = '4'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'livre' and l3 == 'engastado' and l4 == 'engastado') or (l1 == 'engastado' and l2 == 'engastado' and l3 == 'livre' and l4 == 'engastado'):
- caso = '5'
-
- cota_v1.hide()
- cota_v2.hide()
- cota_h1.show()
- cota_h2.show()
-
- lx_lage = 'l_maior'
- elif (l1 == 'livre' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'engastado') or (l1 == 'engastado' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'livre'):
- caso = '5'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- elif (l1 == 'engastado' and l2 == 'engastado' and l3 == 'engastado' and l4 == 'engastado'):
- caso = '6'
-
- cota_v1.show()
- cota_v2.show()
- cota_h1.hide()
- cota_h2.hide()
-
- lx_lage = 'l_menor'
- else:
- caso='ainda não existe, não sei como você chegou até aqui srsrrsrsrsrsrs'
-
-
- print(caso)
- self.lineEdit_6.setText(str(caso))
-
- def calcular_laje(self):
- lado_maior = float(self.lineEdit_3.text())
- lado_menor = float(self.lineEdit_4.text())
- espes = float(self.lineEdit_5.text())
- d = float(self.lineEdit_27.text())
-
- self.lineEdit_7.setText('')
- self.lineEdit_9.setText('')
- self.lineEdit_8.setText('')
- self.lineEdit_10.setText('')
- self.lineEdit_16.setText('')
- self.lineEdit_14.setText('')
- self.lineEdit_15.setText('')
- self.lineEdit_16.setText('')
-
- if lado_maior != 0 and lado_menor != 0 and espes != 0 and d != 0:
- lado1 = float(self.lineEdit_3.text())
- lado2 = float(self.lineEdit_4.text())
- espes = float(self.lineEdit_5.text())
- d = float(self.lineEdit_27.text())
- carreg_adicional = float(self.lineEdit_2.text())
- #fck_laje = float(self.comboBox.currentText())
- #fcd_laje = fck_laje/1.4
- #fyk_laje = float(self.comboBox_2.currentText())
- #fyd_laje = fyk_laje/1.15
-
- pp = (espes * 25)/100
- self.lineEdit.setText(str(pp))
-
- carreg_total = pp + carreg_adicional
- #print(caso)
- #print(lx_lage)
- #---------------------------------- cálculo do Lx baseado no caso do tipo de situação da laje -----------------
- global lx
- global lambda_laje
- if lx_lage == 'l_menor':
- lx = lado2
- lambda_laje = round((lado1/lado2),ndigits=2)
- elif lx_lage == 'l_maior':
- lx = lado1
- lambda_laje = round((lado2/lado1),ndigits=2)
- print(lx_lage)
-
-
- #---------------------------------- definição se a laje é unidirecional ou bidirecional baseado no lambda -----------------
- global tipo_laje
- if float(lambda_laje) > 2.001:
- tipo_laje = 'UNIDIRECIONAL'
- self.laje_unidirecional(carreg_total)
- else:
- tipo_laje = 'BIDIRECIONAL'
- #self.label_43.setStyleSheet("Background: url('laje_unidirecional_modelo.png') no-repeat")
-
- mx = my = nx = ny = ''
-
- if caso == '1':
- caso1 = marcus.caso1
- linhas = len(caso1)
- colunas = len(caso1[0])
-
- for i in range(linhas):
- aux = caso1[i][0]
- if lambda_laje == aux:
- print(caso1[i])
- mx = caso1[i][2]
- my = caso1[i][3]
-
- print('mx: ',mx)
- print('my: ',my)
-
- if caso == '2':
- caso2 = marcus.caso2
- linhas = len(caso2)
- colunas = len(caso2[0])
-
- for i in range(linhas):
- aux = caso2[i][0]
- if lambda_laje == aux:
- print(caso2[i])
- mx = caso2[i][2]
- nx = caso2[i][3]
- my = caso2[i][4]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
-
- if caso == '3':
- caso3 = marcus.caso3
- linhas = len(caso3)
- colunas = len(caso3[0])
-
- for i in range(linhas):
- aux = caso3[i][0]
- if lambda_laje == aux:
- print(caso3[i])
- mx = caso3[i][2]
- nx = caso3[i][3]
- my = caso3[i][4]
- ny = caso3[i][5]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
- print('ny: ',ny)
-
- if caso == '4':
- caso4 = marcus.caso4
- linhas = len(caso4)
- colunas = len(caso4[0])
-
- for i in range(linhas):
- aux = caso4[i][0]
- if lambda_laje == aux:
- print(caso4[i])
- mx = caso4[i][2]
- nx = caso4[i][3]
- my = caso4[i][4]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
-
- if caso == '5':
- caso5 = marcus.caso5
- linhas = len(caso5)
- colunas = len(caso5[0])
-
- for i in range(linhas):
- aux = caso5[i][0]
- if lambda_laje == aux:
- print(caso5[i])
- mx = caso5[i][2]
- nx = caso5[i][3]
- my = caso5[i][4]
- ny = caso5[i][5]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
- print('ny: ',ny)
-
- if caso == '6':
- caso6 = marcus.caso6
- linhas = len(caso6)
- colunas = len(caso6[0])
-
- for i in range(linhas):
- aux = caso6[i][0]
- if lambda_laje == aux:
- print(caso6[i])
- mx = caso6[i][2]
- nx = caso6[i][3]
- my = caso6[i][4]
- ny = caso6[i][5]
-
- print('mx: ',mx)
- print('nx: ',nx)
- print('my: ',my)
- print('ny: ',ny)
-
- print(lx)
- if mx != '':
- self.lineEdit_7.setText(str(mx))
- momento_pos_x = ((carreg_total * (lx**2))/mx)
- momento_pos_x = round(momento_pos_x,ndigits=4)
-
- if caso == '1':
- print('caso 1----------------------------------------------------------')
- elif caso == '2':
- print('caso 2----------------------------------------------------------')
- elif caso == '3':
- print('caso 3----------------------------------------------------------')
- elif caso == '4':
- print('caso 4----------------------------------------------------------')
- elif caso == '5':
- print('caso 5----------------------------------------------------------')
- elif caso == '6':
- print('caso 6----------------------------------------------------------')
-
-
- self.lineEdit_13.setText(str(momento_pos_x))
- #else:
- # self.lineEdit_13.setText('0')
- if nx != '':
- self.lineEdit_9.setText(str(nx))
- momento_neg_x = round(((carreg_total * (lx**2))/nx),ndigits=4)
- self.lineEdit_14.setText(str(momento_neg_x))
- #momento_neg_x = round(momento_neg_x,ndigits=2)
- #else:
- # self.lineEdit_14.setText('0')
- if my != '':
- self.lineEdit_8.setText(str(my))
- momento_pos_y = ((carreg_total * (lx**2))/my)
- momento_pos_y = round(momento_pos_y,ndigits=4)
- self.lineEdit_15.setText(str(momento_pos_y))
- #else:
- # self.lineEdit_15.setText('0')
- if ny != '':
- self.lineEdit_10.setText(str(ny))
- momento_neg_y = round(((carreg_total * (lx**2))/ny),ndigits=4)
- self.lineEdit_16.setText(str(momento_neg_y))
- #momento_neg_y = round(momento_neg_y,ndigits=2)
- #else:
- # self.lineEdit_16.setText('0')
-
- '''
- if mx != '':
- self.lineEdit_7.setText(str(mx))
- momento_pos_x = ((carreg_total * (lx**2))/mx)
- momento_pos_x = round(momento_pos_x,ndigits=4)
- self.lineEdit_13.setText(str(momento_pos_x))
- #else:
- # self.lineEdit_13.setText('0')
- if nx != '':
- self.lineEdit_9.setText(str(nx))
- momento_neg_x = round(((carreg_total * (lx**2))/nx),ndigits=4)
- self.lineEdit_14.setText(str(momento_neg_x))
- #momento_neg_x = round(momento_neg_x,ndigits=2)
- #else:
- # self.lineEdit_14.setText('0')
- if my != '':
- self.lineEdit_8.setText(str(my))
- momento_pos_y = ((carreg_total * (lx**2))/my)
- momento_pos_y = round(momento_pos_y,ndigits=4)
- self.lineEdit_15.setText(str(momento_pos_y))
- #else:
- # self.lineEdit_15.setText('0')
- if ny != '':
- self.lineEdit_10.setText(str(ny))
- momento_neg_y = round(((carreg_total * (lx**2))/ny),ndigits=4)
- self.lineEdit_16.setText(str(momento_neg_y))
- #momento_neg_y = round(momento_neg_y,ndigits=2)
- #else:
- # self.lineEdit_16.setText('0')
- '''
-
- #----------------------------------- enviar resultados de saida ao programa ---------------------------------------
- self.lineEdit_11.setText(str(lambda_laje))
- self.label_16.setText(str(tipo_laje))
- self.lineEdit_12.setText(str(carreg_total))
-
- self.resultados_laje()
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes")
-
-
- def laje_unidirecional(self,carreg_total):
-
- #self.lineEdit_7.setText('')
- #self.lineEdit_9.setText('')
- #self.lineEdit_8.setText('')
- #self.lineEdit_10.setText('')
- #self.lineEdit_16.setText('')
- #self.lineEdit_13.setText('')
- #self.lineEdit_14.setText('')
- #self.lineEdit_15.setText('')
- #self.lineEdit_16.setText('')
-
- self.lado1 = 'livre'
- pixmap = QPixmap('livv.png')
- self.pushButton.setIcon(QIcon(pixmap))
-
- self.lado4 = 'livre'
- pixmap = QPixmap('livv.png')
- self.pushButton_4.setIcon(QIcon(pixmap))
-
- print('unidirecional')
- #l1 = self.lado1
- l2 = self.lado2
- l3 = self.lado3
- #l4 = self.lado4
- l1 = l4 = 'livre'
- print(carreg_total)
- if (l2 == 'livre' and l3 == 'livre'):
- self.label_43.setStyleSheet("Background: url('laje_unidirecional_ll2.png') no-repeat")
- momento_pos_y = (carreg_total * (lx**2))/8
- momento_neg_y = 0
- elif (l2 == 'engastado' and l3 == 'engastado'):
- self.label_43.setStyleSheet("Background: url('laje_unidirecional_ee2.png') no-repeat")
- momento_pos_y = (carreg_total * (lx**2))/24
- momento_neg_y = (carreg_total * (lx**2))/12
- elif (l2 == 'engastado' and l3 == 'livre') or (l2 == 'livre' and l3 == 'engastado'):
- self.label_43.setStyleSheet("Background: url('laje_unidirecional_le2.png') no-repeat")
- momento_pos_y = (carreg_total * (lx**2))/14.2
- momento_neg_y = (carreg_total * (lx**2))/8
-
- print('momento_pos_y: ',momento_pos_y)
- print('momento_neg_y: ',momento_neg_y)
-
- #----------------------------------- enviar resultados de saida ao programa ---------------------------------------
- momento_pos_y = round(momento_pos_y,ndigits=4)
- self.lineEdit_15.setText(str(momento_pos_y))
- momento_neg_y = round(momento_neg_y,ndigits=4)
- self.lineEdit_16.setText(str(momento_neg_y))
-
- self.lineEdit_13.setText('0')
- self.lineEdit_14.setText('0')
-
- self.lineEdit_11.setText(str(lambda_laje))
- self.label_16.setText(str(tipo_laje))
- self.lineEdit_12.setText(str(carreg_total))
-
- self.resultados_laje()
-
- def truncar(self,x):
- aux = '{:.9f}'.format(x)
- return aux
-
- def resultados_laje(self):
- fck_laje = float(self.comboBox.currentText())
- fcd_laje = fck_laje/1.4
- fyk_laje = float(self.comboBox_2.currentText())
- fyd_laje = fyk_laje/1.15
- espes = float(self.lineEdit_5.text())
-
- area_concreto_laje = round(((espes/100)*1000000),ndigits=4)
-
- ro_armad_minima = 0
- if fck_laje == 20:
- ro_armad_minima = 0.15/100
- elif fck_laje == 25:
- ro_armad_minima = 0.15/100
- elif fck_laje == 30:
- ro_armad_minima = 0.15/100
- elif fck_laje == 35:
- ro_armad_minima = 0.164/100
- elif fck_laje == 40:
- ro_armad_minima = 0.179/100
-
- armad_max_laje = (0.4/100)*area_concreto_laje
- armad_neg_min = ro_armad_minima*area_concreto_laje
- armad_pos_cruz = round(0.67*(ro_armad_minima*area_concreto_laje), ndigits=2)
- armad_princ_unid = ro_armad_minima*area_concreto_laje
- armad_secnd_unid = max((0.2*armad_princ_unid), (90), (0.5*(ro_armad_minima*area_concreto_laje)))
-
-
- mx = self.lineEdit_13.text()
- if mx == '':
- self.lineEdit_13.setText('0')
-
- my = self.lineEdit_15.text()
- if my == '':
- self.lineEdit_15.setText('0')
-
- nx = self.lineEdit_14.text()
- if nx == '':
- self.lineEdit_14.setText('0')
-
- ny = self.lineEdit_16.text()
- if ny == '':
- self.lineEdit_16.setText('0')
-
- fck_laje = float(self.comboBox.currentText())
- fyk_laje = float(self.comboBox_2.currentText())
- fcd_laje = fck_laje* 1000000/1.4
- fyd_laje = fyk_laje* 1000000/1.15
- d_laje = float(self.lineEdit_27.text())
- espes = float(self.lineEdit_5.text())
-
- #------------------------------------------enxerto-----------------------
-
- mx = float(self.lineEdit_13.text())
- my = float(self.lineEdit_15.text())
- nx = float(self.lineEdit_14.text())
- ny = float(self.lineEdit_16.text())
- #print('mx: ',mx)
- #print('nx: ',nx)
- #print('my: ',my)
- #print('ny: ',ny)
- mk_x = mx
- mk_y = my
-
- nk_x = nx
- nk_y = ny
-
-
- md_x = round(1.4 * mk_x, ndigits = 4)
- kmd_x_laje = (md_x * 1000)/(1 * ((d_laje/100)**2) * 0.85 * (fcd_laje))
- kx_x_laje = (1 - math.sqrt(1 - 2*kmd_x_laje))/0.8
- kz_x_laje = 1 - 0.4 * kx_x_laje
-
- as_x_laje = (md_x * 1000/ (kz_x_laje * (d_laje/100) * fyd_laje))*1000000
-
- print('md_x: ', md_x)
- print('kmd_x_laje: ', kmd_x_laje)
- print('kx_x_laje: ', kx_x_laje)
- print('kz_x_laje: ', kz_x_laje)
- print('as_x_laje: ', as_x_laje)
-
- md_y = round(1.4 * mk_y, ndigits = 4)
- kmd_y_laje = (md_y * 1000)/(1 * ((d_laje/100)**2) * 0.85 * (fcd_laje))
- kx_y_laje = (1 - math.sqrt(1 - 2*kmd_y_laje))/0.8
- kz_y_laje = 1 - 0.4 * kx_y_laje
-
- as_y_laje = (md_y * 1000/ (kz_y_laje * (d_laje/100) * fyd_laje))*1000000
-
- print('md_y: ', md_y)
- print('kmd_y_laje: ', kmd_y_laje)
- print('kx_y_laje: ', kx_y_laje)
- print('kz_y_laje: ', kz_y_laje)
- print('as_y_laje: ', as_y_laje)
-
-
- nd_x = round(1.4 * nk_x, ndigits = 4)
- kmd_x_laje_n = (nd_x * 1000)/(1 * ((d_laje/100)**2) * 0.85 * (fcd_laje))
- kx_x_laje_n = (1 - math.sqrt(1 - 2*kmd_x_laje_n))/0.8
- kz_x_laje_n = 1 - 0.4 * kx_x_laje_n
-
- as_x_laje_n = (nd_x * 1000/ (kz_x_laje_n * (d_laje/100) * fyd_laje))*1000000
-
-
- nd_y = round(1.4 * nk_y, ndigits = 4)
- kmd_y_laje_n = (nd_y * 1000)/(1 * ((d_laje/100)**2) * 0.85 * (fcd_laje))
- kx_y_laje_n = (1 - math.sqrt(1 - 2*kmd_y_laje_n))/0.8
- kz_y_laje_n = 1 - 0.4 * kx_y_laje_n
-
- as_y_laje_n = (nd_x * 1000/ (kz_y_laje_n * (d_laje/100) * fyd_laje))*1000000
-
- #------------------------------------------ saida de dados ------------------------------------
- kmd_x_laje = self.truncar(kmd_x_laje)
- kx_x_laje = self.truncar(kx_x_laje)
- kz_x_laje = self.truncar(kz_x_laje)
- as_x_laje = self.truncar(as_x_laje)
-
- kmd_y_laje = self.truncar(kmd_y_laje)
- kx_y_laje = self.truncar(kx_y_laje)
- kz_y_laje = self.truncar(kz_y_laje)
- as_y_laje = self.truncar(as_y_laje)
- '''
- kmd_x_laje_n = self.truncar(kmd_x_laje_n)
- kx_x_laje_n = self.truncar(kx_x_laje_n)
- kz_x_laje_n = self.truncar(kz_x_laje_n)
- as_x_laje_n = self.truncar(as_x_laje_n)
-
- kmd_y_laje_n = self.truncar(kmd_y_laje_n)
- kx_y_laje_n = self.truncar(kx_y_laje_n)
- kz_y_laje_n = self.truncar(kz_y_laje_n)
- as_y_laje_n = self.truncar(as_y_laje_n)
- '''
-
- self.lineEdit_17.setText(str(md_x))
- self.lineEdit_18.setText(str(kmd_x_laje))
- self.lineEdit_19.setText(str(kx_x_laje))
- self.lineEdit_20.setText(str(kz_x_laje))
- self.lineEdit_21.setText(str(as_x_laje))
-
- self.lineEdit_22.setText(str(md_y))
- self.lineEdit_24.setText(str(kmd_y_laje))
- self.lineEdit_25.setText(str(kx_y_laje))
- self.lineEdit_26.setText(str(kz_y_laje))
- self.lineEdit_23.setText(str(as_y_laje))
- '''
- self.lineEdit_28.setText(str(nd_x))
- self.lineEdit_29.setText(str(kmd_x_laje_n))
- self.lineEdit_30.setText(str(kx_x_laje_n))
- self.lineEdit_31.setText(str(kz_x_laje_n))
- self.lineEdit_32.setText(str(as_x_laje_n))
-
- self.lineEdit_37.setText(str(nd_y))
- self.lineEdit_34.setText(str(kmd_y_laje_n))
- self.lineEdit_36.setText(str(kx_y_laje_n))
- self.lineEdit_35.setText(str(kz_y_laje_n))
- self.lineEdit_33.setText(str(as_y_laje_n))
- '''
-
-
-
- self.lineEdit_38.setText(str(area_concreto_laje))
- self.lineEdit_39.setText(str(ro_armad_minima*100))
- self.lineEdit_42.setText(str(armad_max_laje))
- self.lineEdit_40.setText(str(armad_neg_min))
- self.lineEdit_41.setText(str(armad_pos_cruz))
- self.lineEdit_43.setText(str(armad_princ_unid))
- self.lineEdit_44.setText(str(armad_secnd_unid))
-
- if tipo_laje == 'UNIDIRECIONAL':
- self.label_44.setText('Distribuição')
- if float(as_y_laje) < armad_princ_unid:
- self.label_45.setText('Mínima')
- else:
- self.label_45.setText('')
-
- if tipo_laje == 'BIDIRECIONAL':
- if float(as_x_laje) < armad_pos_cruz:
- self.label_44.setText('Mínima')
- else:
- self.label_44.setText('')
-
- if float(as_y_laje) < armad_pos_cruz:
- self.label_45.setText('Mínima')
- else:
- self.label_45.setText('')
-
-
-
-
-if __name__ == '__main__':
- app = QtWidgets.QApplication(sys.argv)
- lajes = Lajes()
-
- app.exec_()
diff --git a/pilar_area_aco.py b/pilar_area_aco.py
deleted file mode 100644
index 5db82c4..0000000
--- a/pilar_area_aco.py
+++ /dev/null
@@ -1,115 +0,0 @@
-
-import sys, os
-
-from PyQt5.uic import loadUi
-from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QMessageBox, QVBoxLayout, QHBoxLayout, QDialog, QMessageBox
-from PyQt5.QtGui import QPixmap, QIcon, QImage
-from PyQt5 import QtWidgets, QtGui, QtCore
-from PyQt5.QtWidgets import QTableWidget,QTableWidgetItem
-import pyqtgraph as pg
-
-file = 'file:///C:/Users/Acer/Desktop/tessssst/sample.pdf'
-
-
-global pilares_info_aco
-pilares_info_aco = [1.4,0.5,1.0,0.1,20,0.4,1000]
-
-class Pilar_area_aco(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.load_ui()
- self.load_signals()
-
- def load_ui(self):
- self.ui = loadUi('pilares_areas_aco.ui',self)
- self.setWindowTitle('Navier - Pilares - Áreas de Aço')
-
- self.pushButton_4.setIcon(QtGui.QIcon('btn_flexaosimples.png'))
- self.pushButton_4.setIconSize(QtCore.QSize(50,60))
- self.pushButton_5.setIcon(QtGui.QIcon('btn_flexaocomposta.png'))
- self.pushButton_5.setIconSize(QtCore.QSize(50,60))
-
- self.show()
-
- def load_signals(self):
- print('inicializado')
- self.pushButton_2.clicked.connect(self.calcular_area_aco)
- self.pushButton.clicked.connect(self.recuperar_dados)
- self.pushButton_3.clicked.connect(self.limpar)
- self.pushButton_4.clicked.connect(lambda: self.abrirTabelaAuxiliar(file))
- self.pushButton_5.clicked.connect(lambda: self.abrirTabelaAuxiliar(file))
-
- def recuperar_dados(self):
- self.lineEdit_2.setText(str(pilares_info_aco[0]))
- self.lineEdit_3.setText(str(pilares_info_aco[1]))
- self.lineEdit_5.setText(str(pilares_info_aco[2]))
- self.lineEdit_6.setText(str(pilares_info_aco[3]))
- self.lineEdit_12.setText(str(pilares_info_aco[4]))
- self.lineEdit_13.setText(str(pilares_info_aco[5]))
- self.lineEdit_14.setText(str(pilares_info_aco[6]))
-
- def calcular_area_aco(self):
- fck = float(self.lineEdit_12.text())
- fcd = fck/1.4
- fyd = 500/1.15
- area_concreto = float(self.lineEdit_13.text())
- nk = float(self.lineEdit_14.text())
- nd = 1.4 * nk
-
- mi_x = float(self.lineEdit_2.text())
- delta_x = float(self.lineEdit_3.text())
-
- mi_y = float(self.lineEdit_5.text())
- delta_y = float(self.lineEdit_6.text())
-
- omega_x = float(self.lineEdit_4.text())
- omega_y = float(self.lineEdit_7.text())
-
- as_x = (omega_x * (area_concreto*1000000) * fcd)/fyd
- as_y = (omega_y * (area_concreto*1000000) * fcd)/fyd
-
- as_x = round(as_x, ndigits=3)
- as_y = round(as_y, ndigits=3)
-
- as_pilar_min = 0.15 * (nd/fyd)
- if as_pilar_min < (0.004*area_concreto*100000):
- as_pilar_min = round((0.004*area_concreto*100000), ndigits=3)
-
- as_pilar_max = round((0.08*area_concreto*1000000), ndigits=3)
-
- #-------------------------------------- saída de dados ----------------------------------------------------
- self.lineEdit_8.setText(str(as_x))
- self.lineEdit_9.setText(str(as_y))
- self.lineEdit_10.setText(str(as_pilar_max))
- self.lineEdit_11.setText(str(as_pilar_min))
-
- def teste(self):
- print('teste')
-
- def limpar(self):
- self.lineEdit_2.setText('0')
- self.lineEdit_3.setText('0')
- self.lineEdit_4.setText('1')
- self.lineEdit_5.setText('0')
- self.lineEdit_6.setText('0')
- self.lineEdit_7.setText('1')
- self.lineEdit_8.setText('0')
- self.lineEdit_9.setText('0')
- self.lineEdit_10.setText('0')
- self.lineEdit_11.setText('0')
- self.lineEdit_12.setText('0')
- self.lineEdit_13.setText('0')
- self.lineEdit_14.setText('0')
-
- def abrirTabelaAuxiliar(self,file):
- if sys.platform == 'linux2':
- subprocess.call(["xdg-open", file])
- else:
- os.startfile(file)
-
-
-
-if __name__ == '__main__':
- app = QtWidgets.QApplication(sys.argv)
- inicio = Pilar_area_aco()
- app.exec_()
diff --git a/pilares.py b/pilares.py
deleted file mode 100644
index c3af02c..0000000
--- a/pilares.py
+++ /dev/null
@@ -1,471 +0,0 @@
-
-
-
-import sys, os
-import math
-
-from PyQt5.uic import loadUi
-from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QMessageBox, QVBoxLayout, QHBoxLayout, QDialog, QMessageBox
-from PyQt5.QtGui import QPixmap, QIcon, QImage
-from PyQt5 import QtWidgets, QtGui, QtCore
-from PyQt5.QtWidgets import QTableWidget,QTableWidgetItem
-import pyqtgraph as pg
-
-global pilares_info
-pilares_info = [0,0,0,0]
-
-global pilares_info_aco
-pilares_info_aco = [0, 0, 0, 0, 0, 0, 0]
-
-class Pilares(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.ui = loadUi('pilares_alt.ui',self)
- self.load_signals()
-
- self.setWindowTitle('Navier - Pilares')
-
-
- def load_signals(self):
- print('pilares carregado')
- self.cont_x = 0
- self.cont_y = 0
- #self.pushButton.clicked.connect(self.pilar_alterar_tipo_engaste_x)
- #self.pushButton_2.clicked.connect(self.pilar_alterar_tipo_engaste_y)
- self.pushButton_6.clicked.connect(self.calcular_pilares)
- self.pushButton.clicked.connect(self.gerar_envoltoria)
- self.pushButton_3.clicked.connect(lambda: pilares_areas_aco.show())
-
- self.show()
-
-
- def calcular_pilares(self):
- x_pilar = self.lineEdit.text()
- y_pilar = self.lineEdit_2.text()
- altura_pilar = self.lineEdit_3.text()
- altura_lance = self.lineEdit_4.text()
-
- nk_pilar = self.lineEdit_5.text()
- momento_x_topo = self.lineEdit_6.text()
- momento_x_base = self.lineEdit_7.text()
- momento_y_topo = self.lineEdit_8.text()
- momento_y_base = self.lineEdit_9.text()
-
-
- if (x_pilar != '0' and y_pilar != '0' and altura_pilar != '0' and altura_lance != '0' and nk_pilar != '0'):
- fck_pilar = float(self.comboBox_3.currentText())
- fcd_pilar = fck_pilar/1.4
- fyk_pilar = float(self.comboBox_4.currentText())
- fyd_pilar = fyk_pilar/1.15
- cobrimento_pilar = float(self.comboBox_5.currentText())
-
- x_pilar = float(self.lineEdit.text())
- y_pilar = float(self.lineEdit_2.text())
- altura_pilar = float(self.lineEdit_3.text())
- altura_lance = float(self.lineEdit_4.text())
-
- nk_pilar = float(self.lineEdit_5.text())
- momento_x_topo = float(self.lineEdit_6.text())
- momento_x_base = float(self.lineEdit_7.text())
- momento_y_topo = float(self.lineEdit_8.text())
- momento_y_base = float(self.lineEdit_9.text())
-
- area_secao_pilar = (x_pilar/100)*(y_pilar/100)
-
- #nd_pilar = (nk_pilar + ((x_pilar/100)*(y_pilar/100)*altura_pilar*25)) * 1.4
- nd_pilar = (nk_pilar) * 1.4
- md_x_topo = 1.4 * momento_x_topo
- md_x_base = 1.4 * momento_x_base
- md_y_topo = 1.4 * momento_y_topo
- md_y_base = 1.4 * momento_y_base
-
- '''apoio_x = self.stackedWidget.currentIndex()
- if apoio_x == 0:
- tipo_apoio_x = 'AA'
- elif apoio_x == 1:
- tipo_apoio_x = 'EA'
- elif apoio_x == 2:
- tipo_apoio_x = 'EE'
- '''
-
- tipo_apoio_x = 'AA'
-
- if momento_x_topo == 0 and momento_x_base == 0 and momento_y_topo == 0 and momento_y_base == 0:
- self.tipo_pilar = 'intermediario'
- elif momento_x_topo == 0 and momento_x_base == 0:
- self.tipo_pilar = 'extremidade-x'
- elif momento_y_topo == 0 and momento_y_base == 0:
- self.tipo_pilar = 'extremidade-y'
- else:
- self.tipo_pilar = 'canto'
-
-
- self.lineEdit_13.setText(str(round(md_x_topo, ndigits=5)))
- self.lineEdit_14.setText(str(round(md_x_base, ndigits=5)))
- self.lineEdit_22.setText(str(round(md_y_topo, ndigits=5)))
- self.lineEdit_28.setText(str(round(md_y_base, ndigits=5)))
-
- #-Eixo-X----------------------------------------------------------------------
- b = y_pilar
- h = x_pilar
-
- m_a = max(md_x_topo, md_x_base)
- m_b = min(md_x_topo, md_x_base)
-
- if self.tipo_pilar == 'intermediario' or self.tipo_pilar == 'extremidade-x':
- alfa_b_x = 1.0
- else:
- alfa_b_x = (0.6 + 0.4*(m_b/m_a))
-
- if alfa_b_x < 0.4:
- alfa_b_x = 0.4
-
- #excen_min_x = (1.5+0.03*h)
- momento_min_x = (nd_pilar *(1.5+0.03*h))/100
- excen_min_x = momento_min_x/nd_pilar
-
- if md_x_topo < momento_min_x:
- md_x_topo = momento_min_x
- print('momento topo - mínimo')
- alfa_b_x = 1.0
- if md_x_base < momento_min_x:
- md_x_base = momento_min_x
- print('momento base - mínimo')
- alfa_b_x = 1.0
-
- compr_efetivo_x = (altura_pilar*100) + h
- if (altura_lance*100 < compr_efetivo_x):
- compr_efetivo_x = altura_lance*100
-
- excen_x_acidental = compr_efetivo_x/400
- v_0 = (nd_pilar*1000)/(area_secao_pilar * fcd_pilar*1000000)
-
- excentricidade_relativa = (max(md_x_topo,md_x_base,momento_min_x)/nd_pilar)/h
-
- lambda_pilar_x = 3.46 * (compr_efetivo_x/h)
- lambda_pilar_x_limite = (25 + 12.5*(excentricidade_relativa))/alfa_b_x
- if lambda_pilar_x_limite < 35:
- lambda_pilar_x_limite = 35
-
- excen_2_x = (compr_efetivo_x**2)/10 *(0.005/((v_0+0.5)*h))
-
- md2_x = nd_pilar * (excen_2_x/100)
-
- if lambda_pilar_x > lambda_pilar_x_limite:
- print('efeitos de 2 ordem considerados')
- excen_2 = (compr_efetivo_x**2)/10 *(0.005/((v_0+0.5)*h))
- md2_x_relativo = nd_pilar * (excen_2/100)
- else:
- md2_x_relativo = 0
- print('efeitos de 2 ordem desconsiderados')
-
- msd_x_intermediario = alfa_b_x * max(abs(md_x_topo), abs(md_x_base), abs(momento_min_x)) + md2_x_relativo
- #msd_x_intermediario = alfa_b_x * abs(momento_min_x) + md2_x_relativo
-
- mi_x = msd_x_intermediario/(h * area_secao_pilar * fcd_pilar)/10
- delta_x = cobrimento_pilar/h
-
-
- #-Eixo-Y----------------------------------------------------------------------
- h = y_pilar
- b = x_pilar
-
- m_a = max(md_y_topo, md_y_base)
- m_b = min(md_y_topo, md_y_base)
-
- if self.tipo_pilar == 'intermediario' or self.tipo_pilar == 'extremidade-y':
- alfa_b_y = 1.0
- else:
- alfa_b_y = (0.6 + 0.4*(m_b/m_a))
-
- if alfa_b_y < 0.4:
- alfa_b_y = 0.4
-
- momento_min_y = (nd_pilar *(1.5+0.03*h))/100
- excen_min_y = momento_min_y/nd_pilar
-
- if md_y_topo < momento_min_y:
- md_y_topo = momento_min_y
- print('momento topo - mínimo')
- alfa_b_y = 1.0
- if md_y_base < momento_min_y:
- md_y_base = momento_min_y
- print('momento base - mínimo')
- alfa_b_y = 1.0
-
- compr_efetivo_y = (altura_pilar*100) + h
- if (altura_lance*100 < compr_efetivo_y):
- compr_efetivo_y = altura_lance*100
-
- excen_y_acidental = compr_efetivo_y/400
- v_0 = (nd_pilar*1000)/(area_secao_pilar * fcd_pilar*1000000)
-
- excentricidade_relativa = (max(md_y_topo,md_y_base,momento_min_y)/nd_pilar)/h
-
- lambda_pilar_y = 3.46 * (compr_efetivo_y/h)
- lambda_pilar_y_limite = (25 + 12.5*(excentricidade_relativa))/alfa_b_y
- if lambda_pilar_y_limite < 35:
- lambda_pilar_y_limite = 35
-
- excen_2_y = (compr_efetivo_y**2)/10 *(0.005/((v_0+0.5)*h))
-
- md2_y = nd_pilar * (excen_2_y/100)
-
- if lambda_pilar_y > lambda_pilar_y_limite:
- print('efeitos de 2 ordem considerados')
- excen_2 = (compr_efetivo_y**2)/10 *(0.005/((v_0+0.5)*h))
- md2_y_relativo = nd_pilar * (excen_2/100)
- else:
- md2_y_relativo = 0
- print('efeitos de 2 ordem desconsiderados')
-
- msd_y_intermediario = alfa_b_y * max(abs(md_y_topo), abs(md_y_base), abs(momento_min_y)) + md2_y_relativo
- #msd_y_intermediario = alfa_b_y * abs(momento_min_y) + md2_y_relativo
-
- mi_y = msd_y_intermediario/(h * area_secao_pilar * fcd_pilar)/10
- delta_y = cobrimento_pilar/h
-
- #print('v_0: ',v_0)
- #print('excen_2_x: ',excen_2_x)
- #print('compr_efetivo_x: ',compr_efetivo_x)
- #print('alfa_b_x: ',alfa_b_x)
- #print('lambda_pilar_x: ',lambda_pilar_x)
- #print('lambda_pilar_x_limite: ',lambda_pilar_x_limite)
- #print('momento_min_x: ',momento_min_x)
- #print('md_x_topo: ',md_x_topo)
- #print('md_x_base: ',md_x_base)
- #print('msd_x_intermediario: ',msd_x_intermediario)
- #print('md2_x: ',md2_x)
- #print('--------------------------------------------------')
- #print('lambda_pilar_y: ',lambda_pilar_y)
- #print('lambda_pilar_y_limite: ',lambda_pilar_y_limite)
- #print('momento_min_y: ',momento_min_y)
- #print('md_y_topo: ',md_y_topo)
- #print('md_y_base: ',md_y_base)
- #print('msd_y_intermediario: ',msd_y_intermediario)
-
- #--------------------------------------------- saida de dados ---------------------------------------------
- self.lineEdit_10.setText(str(round(nd_pilar, ndigits=4)))
- self.lineEdit_11.setText(str(round(area_secao_pilar, ndigits=4)))
- self.lineEdit_12.setText(str(round(v_0, ndigits=4)))
-
- self.lineEdit_15.setText(str(round(momento_min_x, ndigits=5)))
- self.lineEdit_16.setText(str(round(excen_min_x*100, ndigits=5)))
- self.lineEdit_17.setText(str(round(lambda_pilar_x, ndigits=5)))
- self.lineEdit_18.setText(str(round(lambda_pilar_x_limite, ndigits=5)))
- self.lineEdit_19.setText(str(round(excen_2_x, ndigits=5)))
- self.lineEdit_20.setText(str(round(md2_x, ndigits=5)))
- self.lineEdit_21.setText(str(round(msd_x_intermediario, ndigits=5)))
-
- self.lineEdit_24.setText(str(round(momento_min_y, ndigits=5)))
- self.lineEdit_25.setText(str(round(excen_min_y*100, ndigits=5)))
- self.lineEdit_26.setText(str(round(lambda_pilar_y, ndigits=5)))
- self.lineEdit_23.setText(str(round(lambda_pilar_y_limite, ndigits=5)))
- self.lineEdit_30.setText(str(round(excen_2_y, ndigits=5)))
- self.lineEdit_29.setText(str(round(md2_y, ndigits=5)))
- self.lineEdit_27.setText(str(round(msd_y_intermediario, ndigits=5)))
-
- self.lineEdit_31.setText(str(round(mi_x, ndigits=2)))
- self.lineEdit_32.setText(str(round(mi_y, ndigits=2)))
- self.lineEdit_33.setText(str(round(delta_x, ndigits=2)))
- self.lineEdit_34.setText(str(round(delta_y, ndigits=2)))
-
- global pilares_info
- pilares_info = [msd_x_intermediario, msd_y_intermediario, momento_min_x, momento_min_y]
-
- if md2_x_relativo == 0:
- self.label_39.setText('não considera 2º ordem')
- else:
- self.label_39.setText('considera 2º ordem')
-
- if md2_y_relativo == 0:
- self.label_44.setText('não considera 2º ordem')
- else:
- self.label_44.setText('considera 2º ordem')
-
-
- if self.tipo_pilar == 'intermediario':
- self.label.setText('PILAR INTERMEDIÁRIO')
- elif (self.tipo_pilar == 'extremidade-x') or (self.tipo_pilar == 'extremidade-y'):
- self.label.setText('PILAR DE EXTREMIDADE')
- else:
- self.label.setText('PILAR DE CANTO')
-
- global pilares_info_aco
- pilares_info_aco = [mi_x, delta_x, mi_y, delta_y, fck_pilar, area_secao_pilar, nk_pilar]
-
- else:
- QMessageBox.about(self, "Falta de Dados", "Por favor insira dados consistentes!")
-
-
-
- def gerar_envoltoria(self):
- msd_x_intermediario = pilares_info[0]
- msd_y_intermediario = pilares_info[1]
- momento_min_x = pilares_info[2]
- momento_min_y = pilares_info[3]
-
- x = []
- y = []
- for i in range(360):
- theta = i
- theta_conv = (theta*math.pi)/180
-
- seno = math.sin(theta_conv)
- seno = momento_min_y * seno
-
- cosseno = math.cos(theta_conv)
- cosseno = momento_min_x * cosseno
-
- x.append(seno)
- y.append(cosseno)
-
- z = []
- w = []
- for j in range(360):
- theta = j
- theta_conv = (theta*math.pi)/180
-
- seno = math.sin(theta_conv)
- seno = msd_y_intermediario * seno
-
- cosseno = math.cos(theta_conv)
- cosseno = msd_x_intermediario * cosseno
-
- z.append(seno)
- w.append(cosseno)
-
- # create plot
- '''plt = pg.plot(x, y, title='theTitle', pen='r')
- plt.showGrid(x=True,y=True)
- '''
- # create plot
- plt = pg.plot()
- plt.clear()
- plt.showGrid(x=True,y=True)
- plt.addLegend()
- plt.setTitle('Envoltória de Momentos')
-
-
- # set properties
- plt.setLabel('left', 'Momentos Y', units='KN.m')
- plt.setLabel('bottom', 'Momentos X', units='KN.m')
- plt.setXRange(0,10)
- plt.setYRange(0,20)
-
-
- plt.enableAutoRange()
- plt.setWindowTitle('pyqtgraph plot')
- # plot
- c1 = plt.plot(x, y, pen='r', name='Envoltória Momentos min')
- c2 = plt.plot(z, w, pen='b', name='Envoltória Momentos máx')
-
-
-
-
-
-file = 'file:///C:/Users/Acer/Desktop/tessssst/sample.pdf'
-
-#global pilares_info_aco
-#pilares_info_aco = [1.4,0.5,1.0,0.1,20,0.4,1000]
-
-class Pilar_area_aco(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.load_ui()
- self.load_signals()
-
- def load_ui(self):
- self.ui = loadUi('pilares_areas_aco.ui',self)
- self.setWindowTitle('Navier - Pilares - Áreas de Aço')
-
- self.pushButton_4.setIcon(QtGui.QIcon('btn_flexaosimples.png'))
- self.pushButton_4.setIconSize(QtCore.QSize(50,60))
- self.pushButton_5.setIcon(QtGui.QIcon('btn_flexaocomposta.png'))
- self.pushButton_5.setIconSize(QtCore.QSize(50,60))
-
- def load_signals(self):
- print('inicializado')
- self.pushButton_2.clicked.connect(self.calcular_area_aco)
- self.pushButton.clicked.connect(self.recuperar_dados)
- self.pushButton_3.clicked.connect(self.limpar)
- self.pushButton_4.clicked.connect(lambda: self.abrirTabelaAuxiliar(file))
- self.pushButton_5.clicked.connect(lambda: self.abrirTabelaAuxiliar(file))
-
- def recuperar_dados(self):
- self.lineEdit_2.setText(str(round(pilares_info_aco[0], ndigits=2)))
- self.lineEdit_3.setText(str(round(pilares_info_aco[1], ndigits=2)))
- self.lineEdit_5.setText(str(round(pilares_info_aco[2], ndigits=2)))
- self.lineEdit_6.setText(str(round(pilares_info_aco[3], ndigits=2)))
- self.lineEdit_12.setText(str(round(pilares_info_aco[4], ndigits=2)))
- self.lineEdit_13.setText(str(round(pilares_info_aco[5], ndigits=2)))
- self.lineEdit_14.setText(str(round(pilares_info_aco[6], ndigits=2)))
-
- def calcular_area_aco(self):
- fck = float(self.lineEdit_12.text())
- fcd = fck/1.4
- fyd = 500/1.15
- area_concreto = float(self.lineEdit_13.text())
- nk = float(self.lineEdit_14.text())
- nd = 1.4 * nk
-
- mi_x = float(self.lineEdit_2.text())
- delta_x = float(self.lineEdit_3.text())
-
- mi_y = float(self.lineEdit_5.text())
- delta_y = float(self.lineEdit_6.text())
-
- omega_x = float(self.lineEdit_4.text())
- omega_y = float(self.lineEdit_7.text())
-
- as_x = (omega_x * (area_concreto*1000000) * fcd)/fyd
- as_y = (omega_y * (area_concreto*1000000) * fcd)/fyd
-
- as_x = round(as_x, ndigits=3)
- as_y = round(as_y, ndigits=3)
-
- as_pilar_min = 0.15 * (nd/fyd)
- if as_pilar_min < (0.004*area_concreto*100000):
- as_pilar_min = round((0.004*area_concreto*100000), ndigits=3)
-
- as_pilar_max = round((0.08*area_concreto*1000000), ndigits=3)
-
- #-------------------------------------- saída de dados ----------------------------------------------------
- self.lineEdit_8.setText(str(as_x))
- self.lineEdit_9.setText(str(as_y))
- self.lineEdit_10.setText(str(as_pilar_max))
- self.lineEdit_11.setText(str(as_pilar_min))
-
- def teste(self):
- print('teste')
-
- def limpar(self):
- self.lineEdit_2.setText('0')
- self.lineEdit_3.setText('0')
- self.lineEdit_4.setText('1')
- self.lineEdit_5.setText('0')
- self.lineEdit_6.setText('0')
- self.lineEdit_7.setText('1')
- self.lineEdit_8.setText('0')
- self.lineEdit_9.setText('0')
- self.lineEdit_10.setText('0')
- self.lineEdit_11.setText('0')
- self.lineEdit_12.setText('0')
- self.lineEdit_13.setText('0')
- self.lineEdit_14.setText('0')
-
- def abrirTabelaAuxiliar(self,file):
- if sys.platform == 'linux2':
- subprocess.call(["xdg-open", file])
- else:
- os.startfile(file)
-
-
-
-
-if __name__ == '__main__':
- app = QtWidgets.QApplication(sys.argv)
- pilares = Pilares()
- pilares_areas_aco = Pilar_area_aco()
-
- app.exec_()
diff --git a/pilares.ui b/pilares.ui
deleted file mode 100644
index 8a36646..0000000
--- a/pilares.ui
+++ /dev/null
@@ -1,1633 +0,0 @@
-
-
- MainWindow
-
-
-
- 0
- 0
- 1004
- 714
-
-
-
- MainWindow
-
-
-
-
-
- 6
- 50
- 991
- 641
-
-
-
- 0
-
-
-
- Seção Retangular
-
-
-
-
- 10
- 30
- 231
- 81
-
-
-
- Concreto
-
-
-
-
- 10
- 20
- 111
- 21
-
-
-
- Resistência - fck [MPa]
-
-
-
-
-
- 140
- 20
- 81
- 22
-
-
- -
-
- 20
-
-
- -
-
- 25
-
-
- -
-
- 30
-
-
- -
-
- 35
-
-
- -
-
- 40
-
-
- -
-
- 45
-
-
- -
-
- 50
-
-
-
-
-
-
- 140
- 50
- 81
- 22
-
-
- -
-
- 500
-
-
-
-
-
-
- 10
- 50
- 111
- 21
-
-
-
- Tipo de Aço - CA
-
-
-
-
-
-
- 10
- 120
- 231
- 441
-
-
-
- Esquema Pilar
-
-
-
-
- 40
- 10
- 141
- 171
-
-
-
-
-
-
- esquema_pilar.png
-
-
- true
-
-
-
-
-
- 16
- 190
- 191
- 161
-
-
-
-
-
-
-
-
-
-
- 260
- 330
- 251
- 231
-
-
-
- Solicitações
-
-
-
-
- 30
- 20
- 71
- 21
-
-
-
- Nk [KN]
-
-
-
-
-
- 130
- 20
- 91
- 20
-
-
-
- 0
-
-
-
-
-
- 10
- 50
- 241
- 81
-
-
-
- Momentos X
-
-
-
-
- 18
- 20
- 91
- 21
-
-
-
- Mx Topo [KN.m]
-
-
-
-
-
- 120
- 20
- 91
- 20
-
-
-
- 0
-
-
-
-
-
- 18
- 50
- 81
- 21
-
-
-
- Mx Base [KN.m]
-
-
-
-
-
- 120
- 50
- 91
- 20
-
-
-
- 0
-
-
-
-
-
-
- 10
- 140
- 241
- 80
-
-
-
- Momentos Y
-
-
-
-
- 18
- 20
- 91
- 21
-
-
-
- My Topo [KN.m]
-
-
-
-
-
- 120
- 20
- 91
- 20
-
-
-
- 0
-
-
-
-
-
- 18
- 50
- 81
- 21
-
-
-
- My Base [KN.m]
-
-
-
-
-
- 120
- 50
- 91
- 20
-
-
-
- 0
-
-
-
-
-
-
-
- 260
- 30
- 251
- 291
-
-
-
- Dimensões
-
-
-
-
- 20
- 20
- 121
- 21
-
-
-
- Largura - Xpilar [cm]
-
-
-
-
-
- 150
- 20
- 71
- 20
-
-
-
- 0
-
-
-
-
-
- 150
- 50
- 71
- 20
-
-
-
- 0
-
-
-
-
-
- 20
- 50
- 121
- 21
-
-
-
- Comprimento - Ypilar [cm]
-
-
-
-
-
- 20
- 80
- 121
- 21
-
-
-
- Altura do Pilar [m]
-
-
-
-
-
- 150
- 80
- 71
- 20
-
-
-
- 0
-
-
-
-
-
- 20
- 110
- 121
- 21
-
-
-
- Altura do Lance [m]
-
-
-
-
-
- 150
- 110
- 71
- 20
-
-
-
- 0
-
-
-
-
-
- 20
- 140
- 121
- 21
-
-
-
- Cobrimento [cm]
-
-
-
-
-
- 150
- 140
- 69
- 22
-
-
- -
-
- 2.0
-
-
- -
-
- 3.0
-
-
- -
-
- 4.0
-
-
- -
-
- 5.0
-
-
-
-
-
-
- 20
- 170
- 47
- 13
-
-
-
- Eixo X
-
-
-
-
-
- 130
- 170
- 47
- 13
-
-
-
- Eixo Y
-
-
-
-
-
- 30
- 260
- 75
- 20
-
-
-
- Alterar
-
-
-
-
-
- 140
- 260
- 75
- 20
-
-
-
- Alterar
-
-
-
-
-
- 40
- 180
- 41
- 71
-
-
-
- 0
-
-
-
-
-
- -10
- 10
- 51
- 61
-
-
-
-
-
-
- pilar_engaste_a.png
-
-
- true
-
-
-
-
-
-
-
- -10
- 10
- 51
- 61
-
-
-
-
-
-
- pilar_engaste_b.png
-
-
- true
-
-
-
-
-
-
-
- -10
- 10
- 51
- 61
-
-
-
-
-
-
- pilar_engaste_c.png
-
-
- true
-
-
-
-
-
-
-
- -10
- 10
- 51
- 61
-
-
-
-
-
-
- pilar_engaste_d.png
-
-
- true
-
-
-
-
-
-
-
- 160
- 180
- 41
- 71
-
-
-
- 0
-
-
-
-
-
- -10
- 10
- 51
- 61
-
-
-
-
-
-
- pilar_engaste_a.png
-
-
- true
-
-
-
-
-
-
-
- -10
- 10
- 51
- 61
-
-
-
-
-
-
- pilar_engaste_b.png
-
-
- true
-
-
-
-
-
-
-
- -10
- 10
- 51
- 61
-
-
-
-
-
-
- pilar_engaste_c.png
-
-
- true
-
-
-
-
-
-
-
- -10
- 10
- 51
- 61
-
-
-
-
-
-
- pilar_engaste_d.png
-
-
- true
-
-
-
-
-
-
-
-
- 800
- 580
- 75
- 23
-
-
-
- Limpar
-
-
-
-
-
- 890
- 580
- 75
- 23
-
-
-
- Salvar
-
-
-
-
-
- 710
- 580
- 75
- 23
-
-
-
- Calcular
-
-
-
-
-
- 530
- 30
- 441
- 531
-
-
-
- Resultados
-
-
-
-
- 18
- 20
- 47
- 21
-
-
-
- Nd [KN]
-
-
-
-
-
- 100
- 20
- 91
- 20
-
-
-
-
-
-
- 18
- 50
- 61
- 21
-
-
-
- Área [cm²]
-
-
-
-
-
- 100
- 50
- 91
- 20
-
-
-
-
-
-
- 9
- 80
- 211
- 321
-
-
-
- Eixo X
-
-
-
-
- 20
- 20
- 81
- 21
-
-
-
- Md Topo [KN.m]
-
-
-
-
-
- 110
- 20
- 81
- 20
-
-
-
-
-
-
- 20
- 50
- 81
- 21
-
-
-
- Md Base [KN.m]
-
-
-
-
-
- 110
- 50
- 81
- 20
-
-
-
-
-
-
- 30
- 80
- 81
- 21
-
-
-
- Mx mim [KN.m]
-
-
-
-
-
- 110
- 80
- 81
- 20
-
-
-
-
-
-
-
-
-
- 30
- 110
- 81
- 21
-
-
-
- e1 min [cm]
-
-
-
-
-
- 110
- 110
- 81
- 20
-
-
-
-
-
-
-
-
-
- 50
- 140
- 31
- 21
-
-
-
- λx
-
-
-
-
-
- 100
- 140
- 81
- 20
-
-
-
-
-
-
-
-
-
- 100
- 170
- 81
- 20
-
-
-
-
-
-
-
-
-
- 50
- 170
- 41
- 21
-
-
-
- λ1x
-
-
-
-
-
- 110
- 230
- 81
- 20
-
-
-
-
-
-
-
-
-
- 20
- 230
- 41
- 21
-
-
-
- e2 [cm]
-
-
-
-
-
- 20
- 260
- 81
- 21
-
-
-
- Mx2 [KN.m]
-
-
-
-
-
- 110
- 260
- 81
- 20
-
-
-
-
-
-
-
-
-
- 110
- 290
- 81
- 20
-
-
-
-
-
-
-
-
-
- 20
- 290
- 81
- 21
-
-
-
- Md totx [KN.m]
-
-
-
-
-
- 36
- 200
- 141
- 20
-
-
-
-
-
-
-
-
-
-
- 220
- 80
- 211
- 321
-
-
-
- Eixo Y
-
-
-
-
- 110
- 20
- 81
- 20
-
-
-
-
-
-
- 20
- 290
- 81
- 21
-
-
-
- Md toty [KN.m]
-
-
-
-
-
- 100
- 170
- 81
- 20
-
-
-
-
-
-
-
-
-
- 20
- 260
- 81
- 21
-
-
-
- My2 [KN.m]
-
-
-
-
-
- 20
- 230
- 41
- 21
-
-
-
- e2 [cm]
-
-
-
-
-
- 110
- 80
- 81
- 20
-
-
-
-
-
-
-
-
-
- 50
- 170
- 41
- 21
-
-
-
- λ1y
-
-
-
-
-
- 110
- 110
- 81
- 20
-
-
-
-
-
-
-
-
-
- 100
- 140
- 81
- 20
-
-
-
-
-
-
-
-
-
- 110
- 290
- 81
- 20
-
-
-
-
-
-
-
-
-
- 36
- 200
- 141
- 20
-
-
-
-
-
-
-
-
-
- 30
- 80
- 81
- 21
-
-
-
- My mim [KN.m]
-
-
-
-
-
- 50
- 140
- 31
- 21
-
-
-
- λy
-
-
-
-
-
- 110
- 50
- 81
- 20
-
-
-
-
-
-
- 110
- 260
- 81
- 20
-
-
-
-
-
-
-
-
-
- 110
- 230
- 81
- 20
-
-
-
-
-
-
-
-
-
- 20
- 20
- 81
- 21
-
-
-
- Md Topo [KN.m]
-
-
-
-
-
- 20
- 50
- 81
- 21
-
-
-
- Md Base [KN.m]
-
-
-
-
-
- 30
- 110
- 81
- 21
-
-
-
- e1 min [cm]
-
-
-
-
-
-
- 260
- 50
- 91
- 20
-
-
-
-
-
-
- 230
- 50
- 41
- 21
-
-
-
- ν0
-
-
-
-
-
- 274
- 503
- 121
- 20
-
-
-
- Gerar Detalhamento
-
-
-
-
-
- 10
- 410
- 211
- 81
-
-
-
- Adimensionais X
-
-
-
-
- 50
- 20
- 41
- 21
-
-
-
- μx
-
-
-
-
-
- 70
- 18
- 81
- 20
-
-
-
-
-
-
- 70
- 46
- 81
- 20
-
-
-
-
-
-
- 50
- 48
- 41
- 21
-
-
-
- δx
-
-
-
-
-
-
- 220
- 410
- 211
- 81
-
-
-
- Adimensionais Y
-
-
-
-
- 70
- 20
- 81
- 20
-
-
-
-
-
-
- 50
- 22
- 41
- 21
-
-
-
- μy
-
-
-
-
-
- 70
- 48
- 81
- 20
-
-
-
-
-
-
- 50
- 50
- 41
- 21
-
-
-
- δx
-
-
-
-
-
-
-
- Seção Circular
-
-
-
-
- 10
- 30
- 231
- 81
-
-
-
- Concreto
-
-
-
-
- 10
- 20
- 121
- 21
-
-
-
- Resistência - fck [MPa]
-
-
-
-
-
- 140
- 20
- 81
- 22
-
-
- -
-
- 20
-
-
- -
-
- 25
-
-
- -
-
- 30
-
-
- -
-
- 35
-
-
- -
-
- 40
-
-
- -
-
- 45
-
-
- -
-
- 50
-
-
-
-
-
-
- 10
- 50
- 121
- 21
-
-
-
- Tipo de Aço - CA
-
-
-
-
-
- 140
- 50
- 81
- 22
-
-
- -
-
- 500
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..8e91211
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,12 @@
+click==8.3.0
+colorama==0.4.6
+numpy==2.2.6
+PyQt6==6.9.1
+pyqt6-plugins==6.4.2.2.3
+PyQt6-Qt6==6.9.2
+pyqt6-tools==6.4.2.3.3
+PyQt6_sip==13.10.2
+pyqtgraph==0.13.7
+python-dotenv==1.1.1
+qt6-applications==6.4.3.2.3
+qt6-tools==6.4.3.1.3
diff --git a/sapatas.ui b/sapatas.ui
deleted file mode 100644
index 6870d56..0000000
--- a/sapatas.ui
+++ /dev/null
@@ -1,1185 +0,0 @@
-
-
- MainWindow
-
-
-
- 0
- 0
- 946
- 619
-
-
-
- MainWindow
-
-
-
-
-
- 20
- 80
- 251
- 81
-
-
-
- Concreto
-
-
-
-
- 20
- 20
- 121
- 20
-
-
-
- Resistência - fck [MPa]
-
-
-
-
-
- 150
- 20
- 81
- 22
-
-
- -
-
- 20
-
-
- -
-
- 25
-
-
- -
-
- 30
-
-
- -
-
- 35
-
-
- -
-
- 40
-
-
- -
-
- 45
-
-
- -
-
- 50
-
-
-
-
-
-
- 150
- 50
- 81
- 22
-
-
- -
-
- 250
-
-
- -
-
- 500
-
-
- -
-
- 600
-
-
-
-
-
-
- 20
- 50
- 121
- 20
-
-
-
- Resistência do Aço [MPa]
-
-
-
-
-
-
- 20
- 171
- 251
- 121
-
-
-
- Solicitações
-
-
-
-
- 20
- 30
- 101
- 16
-
-
-
- Nk [KN]
-
-
-
-
-
- 132
- 30
- 91
- 20
-
-
-
- 0
-
-
-
-
-
- 20
- 60
- 101
- 16
-
-
-
- Momento Y [KN.m]
-
-
-
-
-
- 132
- 60
- 91
- 20
-
-
-
- 0
-
-
-
-
-
- 20
- 90
- 91
- 16
-
-
-
- Momento X [KN.m]
-
-
-
-
-
- 132
- 90
- 91
- 20
-
-
-
- 0
-
-
-
-
-
-
- 20
- 300
- 251
- 81
-
-
-
- Pilar
-
-
-
-
- 30
- 20
- 71
- 16
-
-
-
- Base - Yp [cm]
-
-
-
-
-
- 122
- 20
- 91
- 20
-
-
-
- 0
-
-
-
-
-
- 30
- 50
- 81
- 16
-
-
-
- Base - Xp [cm]
-
-
-
-
-
- 120
- 50
- 91
- 20
-
-
-
- 0
-
-
-
-
-
-
- 290
- 80
- 251
- 171
-
-
-
- Sapata
-
-
-
-
- 30
- 50
- 101
- 21
-
-
-
- Base X - Xsap [m]
-
-
-
-
-
- 132
- 50
- 91
- 20
-
-
-
- 0
-
-
-
-
-
- 132
- 20
- 91
- 20
-
-
-
- 0
-
-
-
-
-
- 30
- 20
- 101
- 21
-
-
-
- Base Y - Ysap[m]
-
-
-
-
-
- 30
- 80
- 91
- 21
-
-
-
- Alt. Total - Ht [m]
-
-
-
-
-
- 132
- 80
- 91
- 20
-
-
-
- 0
-
-
-
-
-
- 132
- 110
- 91
- 20
-
-
-
- 0
-
-
-
-
-
- 30
- 110
- 101
- 21
-
-
-
- Alt. Prisma - Ho [m]
-
-
-
-
-
- 134
- 140
- 91
- 23
-
-
-
- Gerar Dimensões
-
-
-
-
-
-
- 290
- 260
- 251
- 331
-
-
-
- Esquema da Sapata
-
-
-
-
- 0
- 30
- 251
- 181
-
-
-
-
-
-
- sapata_sup.png
-
-
- true
-
-
-
-
-
- 10
- 230
- 231
- 81
-
-
-
-
-
-
- sapata_perfil.png
-
-
- true
-
-
-
-
-
-
- 20
- 390
- 251
- 201
-
-
-
- Solo
-
-
-
-
- 20
- 60
- 121
- 16
-
-
-
- Coef. Influência do Solo
-
-
-
-
-
- 150
- 60
- 71
- 20
-
-
-
- 1.1
-
-
-
-
-
- 20
- 90
- 111
- 21
-
-
-
- Ângulo Dissipação
-
-
-
-
-
- 150
- 90
- 71
- 22
-
-
-
- 30
-
-
- 50
-
-
-
-
-
- 150
- 30
- 71
- 20
-
-
-
- 0
-
-
-
-
-
- 20
- 30
- 131
- 16
-
-
-
- Tensão Adm. Solo [MPa]
-
-
-
-
-
-
- 560
- 80
- 381
- 511
-
-
-
- Dimensionamento
-
-
-
-
- 30
- 20
- 121
- 21
-
-
-
- Área da Sapata [cm²]
-
-
-
-
-
- 150
- 20
- 91
- 20
-
-
-
-
-
-
- 20
- 50
- 51
- 21
-
-
-
- Wx [cm³]
-
-
-
-
-
- 120
- 50
- 61
- 20
-
-
-
-
-
-
-
-
-
- 290
- 50
- 61
- 20
-
-
-
-
-
-
-
-
-
- 200
- 50
- 51
- 21
-
-
-
- Wy [cm³]
-
-
-
-
-
- 140
- 80
- 101
- 20
-
-
-
-
-
-
-
-
-
- 30
- 80
- 81
- 21
-
-
-
- N equiv. [N]
-
-
-
-
-
- 20
- 110
- 121
- 21
-
-
-
- Tensão Máx [MPa]
-
-
-
-
-
- 119
- 110
- 70
- 20
-
-
-
-
-
-
-
-
-
- 290
- 110
- 71
- 20
-
-
-
-
-
-
-
-
-
- 200
- 110
- 91
- 21
-
-
-
- Tensão Mín [MPa]
-
-
-
-
-
- 20
- 150
- 91
- 21
-
-
-
- Balanço X [cm]
-
-
-
-
-
- 119
- 150
- 71
- 20
-
-
-
-
-
-
-
-
-
- 290
- 150
- 71
- 20
-
-
-
-
-
-
-
-
-
- 200
- 150
- 81
- 21
-
-
-
- Balanço Y [cm]
-
-
-
-
-
- 120
- 180
- 71
- 20
-
-
-
-
-
-
-
-
-
- 20
- 180
- 91
- 21
-
-
-
- H rigidez X [cm]
-
-
-
-
-
- 290
- 180
- 71
- 20
-
-
-
-
-
-
-
-
-
- 200
- 180
- 91
- 21
-
-
-
- H rigidez Y [cm]
-
-
-
-
-
- 30
- 210
- 121
- 21
-
-
-
- H min,cis [cm]
-
-
-
-
-
- 140
- 210
- 101
- 20
-
-
-
-
-
-
-
-
-
- 120
- 240
- 71
- 20
-
-
-
-
-
-
-
-
-
- 20
- 240
- 91
- 21
-
-
-
- H prisma X [cm]
-
-
-
-
-
- 30
- 270
- 121
- 21
-
-
-
- Volume de Concreto [m³]
-
-
-
-
-
- 160
- 270
- 81
- 20
-
-
-
-
-
-
-
-
-
- 200
- 240
- 91
- 21
-
-
-
- H prisma Y [cm]
-
-
-
-
-
- 290
- 240
- 71
- 20
-
-
-
-
-
-
-
-
-
- 0
- 300
- 381
- 81
-
-
-
- Áreas de Aço
-
-
-
-
- 18
- 20
- 71
- 16
-
-
-
- Tração X [KN]
-
-
-
-
-
- 100
- 20
- 81
- 20
-
-
-
-
-
-
- 280
- 20
- 81
- 20
-
-
-
-
-
-
- 200
- 20
- 71
- 16
-
-
-
- Tração Y [KN]
-
-
-
-
-
- 100
- 50
- 81
- 20
-
-
-
-
-
-
- 20
- 50
- 71
- 16
-
-
-
- Asx [mm²]
-
-
-
-
-
- 282
- 50
- 81
- 20
-
-
-
-
-
-
- 200
- 50
- 71
- 16
-
-
-
- Asy [mm²]
-
-
-
-
-
-
- 0
- 389
- 381
- 81
-
-
-
- Áreas de Aço Mínimas
-
-
-
-
- 40
- 20
- 121
- 16
-
-
-
- Taxa Armd. Mínima [%]
-
-
-
-
-
- 172
- 20
- 101
- 20
-
-
-
-
-
-
- 98
- 50
- 81
- 20
-
-
-
-
-
-
- 198
- 50
- 71
- 16
-
-
-
- Asy [mm²]
-
-
-
-
-
- 18
- 50
- 71
- 16
-
-
-
- Asx [mm²]
-
-
-
-
-
- 280
- 50
- 81
- 20
-
-
-
-
-
-
-
- 230
- 480
- 111
- 23
-
-
-
- Gerar Detalhamento
-
-
-
-
-
-
- 770
- 610
- 75
- 23
-
-
-
- Limpar
-
-
-
-
-
- 860
- 610
- 75
- 23
-
-
-
- Salvar
-
-
-
-
-
- 680
- 610
- 75
- 23
-
-
-
- Calcular
-
-
-
-
-
-
-
-
-
diff --git a/tabela_bitolas.py b/tabela_bitolas.py
deleted file mode 100644
index 7179d3a..0000000
--- a/tabela_bitolas.py
+++ /dev/null
@@ -1,38 +0,0 @@
-
-import sys
-
-from PyQt5.uic import loadUi
-from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QMessageBox, QVBoxLayout, QHBoxLayout, QDialog, QMessageBox
-from PyQt5.QtGui import QPixmap, QIcon, QImage
-from PyQt5 import QtWidgets, QtGui, QtCore
-from PyQt5.QtWidgets import QTableWidget,QTableWidgetItem
-
-
-class Tabela_Bitolas(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
-
- self.ui = loadUi('bitolas_ferros.ui',self)
- #self.tableWidget.setRowCount(linhas)
- #self.tableWidget.setColumnCount(colunas)
- #table = self.tableWidget()
- #header = self.tableWidget.horizontalHeader()
- #header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)
- #header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
-
- header = self.tableWidget.horizontalHeader()
- header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
-
-
- self.setWindowTitle('Navier - Tabela de Bitolas')
- self.show()
-
-
-
-
-if __name__ == '__main__':
- app = QtWidgets.QApplication(sys.argv)
- aplicacao = Tabela_Bitolas()
- app.exec_()
\ No newline at end of file
diff --git a/teste_classe_agressividade.py b/teste_classe_agressividade.py
deleted file mode 100644
index fdc09f1..0000000
--- a/teste_classe_agressividade.py
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-import sys
-
-from PyQt5.uic import loadUi
-from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QMessageBox, QVBoxLayout, QHBoxLayout, QDialog, QMessageBox
-from PyQt5.QtGui import QPixmap, QIcon, QImage
-from PyQt5 import QtWidgets, QtGui, QtCore
-from PyQt5.QtWidgets import QTableWidget,QTableWidgetItem
-
-
-class Tabela_Classe_Agressividade(QtWidgets.QMainWindow):
- def __init__(self):
- super().__init__()
- self.load_ui()
- self.load_signals()
-
- def load_ui(self):
- self.ui = loadUi('class_agres.ui',self)
- self.setWindowTitle('Navier - Classes de Agressividade e Cobrimentos Mínimos')
- self.show()
- def load_signals(self):
- print('inicializado')
- header = self.tableWidget.horizontalHeader()
- header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
- header.setSectionResizeMode(3, QtWidgets.QHeaderView.Stretch)
-
-
- self.tableWidget.setSpan(0, 0, 1, 4)
- #self.tableWidget.horizontalHeader().setVisible(False) //QtWidgets.QHeaderView.ResizeToContents
-
- header_2 = self.tableWidget_2.horizontalHeader()
- header_2.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
- header_2.setSectionResizeMode(1, QtWidgets.QHeaderView.Stretch)
- header_2.setSectionResizeMode(2, QtWidgets.QHeaderView.Stretch)
- header_2.setSectionResizeMode(3, QtWidgets.QHeaderView.ResizeToContents)
-
- self.tableWidget_2.setSpan(0, 0, 2, 1)
- self.tableWidget_2.setSpan(0, 1, 2, 1)
- self.tableWidget_2.setSpan(0, 3, 2, 1)
-
- self.tableWidget_2.setSpan(3, 0, 2, 1)
- self.tableWidget_2.setSpan(3, 1, 2, 1)
- self.tableWidget_2.setSpan(3, 3, 2, 1)
-
- self.tableWidget_2.setSpan(5, 0, 2, 1)
- self.tableWidget_2.setSpan(5, 1, 2, 1)
- self.tableWidget_2.setSpan(5, 3, 2, 1)
-
-
-
-if __name__ == '__main__':
- app = QtWidgets.QApplication(sys.argv)
- aplicacao = Tabela_Classe_Agressividade()
- app.exec_()
diff --git a/vigas.ui b/vigas.ui
deleted file mode 100644
index 8e13aa2..0000000
--- a/vigas.ui
+++ /dev/null
@@ -1,1495 +0,0 @@
-
-
- MainWindow
-
-
-
- 0
- 0
- 868
- 666
-
-
-
- MainWindow
-
-
-
-
-
- 0
- 60
- 861
- 571
-
-
-
- 0
-
-
-
- Seção Retangular
-
-
-
-
- -1
- 39
- 551
- 511
-
-
-
- 1
-
-
-
-
-
- 20
- 180
- 251
- 291
-
-
-
- Dimensões
-
-
-
-
- 130
- 30
- 101
- 20
-
-
-
- 0
-
-
-
-
-
- 130
- 60
- 101
- 20
-
-
-
- 0
-
-
-
-
-
- 131
- 90
- 100
- 20
-
-
-
- 0
-
-
-
-
-
- 20
- 30
- 81
- 16
-
-
-
- Base - bw [cm]
-
-
-
-
-
- 20
- 60
- 81
- 16
-
-
-
- Altura - h [cm]
-
-
-
-
-
- 20
- 90
- 91
- 16
-
-
-
- Altura Útil - d [cm]
-
-
-
-
-
- 0
- 150
- 260
- 141
-
-
-
- Projeção de Domínio
-
-
-
-
- 140
- 20
- 82
- 21
-
-
-
- Domínio 3
-
-
-
-
-
- 30
- 20
- 82
- 21
-
-
-
- Domínio 2
-
-
- true
-
-
-
-
-
- 100
- 50
- 47
- 21
-
-
-
- ξ
-
-
-
-
-
- 130
- 50
- 81
- 20
-
-
-
- 0.450
-
-
-
-
-
- 60
- 80
- 71
- 21
-
-
-
- d limite [m]
-
-
-
-
-
- 130
- 80
- 81
- 20
-
-
-
-
-
-
- 131
- 110
- 81
- 20
-
-
-
-
-
-
- 60
- 110
- 91
- 21
-
-
-
- X-limite [m]
-
-
-
-
-
-
- 19
- 120
- 91
- 16
-
-
-
- d' [cm]
-
-
-
-
-
- 130
- 120
- 100
- 20
-
-
-
- 0
-
-
- true
-
-
-
-
-
-
- 290
- 0
- 251
- 141
-
-
-
- Seção
-
-
-
-
- 71
- 6
- 110
- 131
-
-
-
-
-
-
- navier_viga_dupla.png
-
-
- true
-
-
-
-
-
-
- 290
- 150
- 251
- 321
-
-
-
- Armadura Longitudinal
-
-
-
-
- 20
- 50
- 91
- 21
-
-
-
- Momento2 [KN.m]
-
-
-
-
-
- 130
- 50
- 100
- 20
-
-
-
-
-
-
- 0
- 90
- 260
- 231
-
-
-
- Áreas de Aço
-
-
-
-
- 129
- 18
- 91
- 20
-
-
-
-
-
-
- 20
- 18
- 111
- 21
-
-
-
- As Compressão [mm²]
-
-
-
-
-
- 20
- 78
- 101
- 21
-
-
-
- Asobre-apoio [mm²]
-
-
-
-
-
- 129
- 78
- 91
- 20
-
-
-
-
-
-
- 129
- 108
- 91
- 20
-
-
-
-
-
-
- 20
- 108
- 91
- 21
-
-
-
- As.pele [mm²]
-
-
-
-
-
- 21
- 170
- 91
- 21
-
-
-
- As.máx [mm²]
-
-
-
-
-
- 130
- 170
- 91
- 20
-
-
-
-
-
-
- 129
- 48
- 91
- 20
-
-
-
-
-
-
- 20
- 48
- 111
- 21
-
-
-
- As Tração [mm²]
-
-
-
-
-
- 21
- 200
- 91
- 21
-
-
-
- As.mín [mm²]
-
-
-
-
-
- 130
- 200
- 91
- 20
-
-
-
-
-
-
- 21
- 140
- 91
- 21
-
-
-
- As.total [mm²]
-
-
-
-
-
- 130
- 140
- 91
- 20
-
-
-
-
-
-
-
- 130
- 20
- 100
- 20
-
-
-
-
-
-
- 20
- 20
- 111
- 21
-
-
-
- Momento-limite [KN.m]
-
-
-
-
-
-
-
-
- 20
- 180
- 251
- 151
-
-
-
- Dimensões
-
-
-
-
- 130
- 30
- 101
- 20
-
-
-
- 0
-
-
-
-
-
- 130
- 60
- 101
- 20
-
-
-
- 0
-
-
-
-
-
- 131
- 90
- 100
- 20
-
-
-
- 0
-
-
-
-
-
- 20
- 30
- 81
- 16
-
-
-
- Base - bw [cm]
-
-
-
-
-
- 20
- 60
- 81
- 16
-
-
-
- Altura - h [cm]
-
-
-
-
-
- 20
- 90
- 91
- 16
-
-
-
- Altura Útil - d [cm]
-
-
-
-
-
- 19
- 120
- 91
- 16
-
-
-
- d' [cm]
-
-
-
-
-
- 130
- 120
- 100
- 20
-
-
-
- 0
-
-
- true
-
-
-
-
-
-
- 20
- 340
- 251
- 141
-
-
-
- Seção
-
-
-
-
- 70
- 6
- 111
- 131
-
-
-
-
-
-
- secao_viga.png
-
-
- true
-
-
-
-
-
-
- 290
- 2
- 251
- 351
-
-
-
- Armadura Longitudinal
-
-
-
-
- 19
- 20
- 91
- 21
-
-
-
- Md [KN]
-
-
-
-
-
- 130
- 20
- 100
- 20
-
-
-
-
-
-
- 60
- 80
- 91
- 21
-
-
-
- Kmd
-
-
-
-
-
- 110
- 80
- 100
- 20
-
-
-
-
-
-
- 60
- 110
- 91
- 21
-
-
-
- Kx
-
-
-
-
-
- 110
- 110
- 100
- 20
-
-
-
-
-
-
- 60
- 140
- 91
- 21
-
-
-
- Kz
-
-
-
-
-
- 110
- 140
- 100
- 20
-
-
-
-
-
-
- 0
- 170
- 260
- 181
-
-
-
- Áreas de Aço
-
-
-
-
- 129
- 30
- 91
- 20
-
-
-
-
-
-
- 20
- 30
- 91
- 21
-
-
-
- As [mm²]
-
-
-
-
-
- 20
- 60
- 101
- 21
-
-
-
- Asobre-apoio [mm²]
-
-
-
-
-
- 129
- 60
- 91
- 20
-
-
-
-
-
-
- 129
- 90
- 91
- 20
-
-
-
-
-
-
- 20
- 90
- 91
- 21
-
-
-
- As.pele [mm²]
-
-
-
-
-
- 21
- 120
- 91
- 21
-
-
-
- As.máx [mm²]
-
-
-
-
-
- 130
- 120
- 91
- 20
-
-
-
-
-
-
- 129
- 150
- 91
- 20
-
-
-
-
-
-
- 20
- 150
- 91
- 21
-
-
-
- As.mín [mm²]
-
-
-
-
-
-
- 130
- 50
- 111
- 20
-
-
-
-
-
-
- 20
- 50
- 111
- 21
-
-
-
- Domínio de Ruptura:
-
-
-
-
-
-
-
-
- 540
- 10
- 131
- 23
-
-
-
- Simplesmente Armada
-
-
-
-
-
- 690
- 10
- 141
- 23
-
-
-
- Duplamente Armada
-
-
-
-
-
- 20
- 130
- 251
- 81
-
-
-
- Solicitações
-
-
-
-
- 150
- 20
- 81
- 20
-
-
-
- 0
-
-
-
-
-
- 150
- 50
- 81
- 20
-
-
-
- 0
-
-
-
-
-
- 20
- 20
- 141
- 20
-
-
-
- Momento Fletor [KN.m]
-
-
-
-
-
- 20
- 49
- 111
- 21
-
-
-
- Cortante [KN]
-
-
-
-
-
-
- 20
- 40
- 251
- 81
-
-
-
- Concreto
-
-
-
-
- 20
- 20
- 121
- 20
-
-
-
- Resistência - fck [MPa]
-
-
-
-
-
- 150
- 20
- 81
- 22
-
-
- -
-
- 20
-
-
- -
-
- 25
-
-
- -
-
- 30
-
-
- -
-
- 35
-
-
- -
-
- 40
-
-
- -
-
- 45
-
-
- -
-
- 50
-
-
-
-
-
-
- 150
- 50
- 81
- 22
-
-
- -
-
- 250
-
-
- -
-
- 500
-
-
- -
-
- 600
-
-
-
-
-
-
- 20
- 50
- 121
- 20
-
-
-
- Tipo de Aço - CA
-
-
-
-
-
-
- 570
- 40
- 261
- 471
-
-
-
- Armadura Transversal
-
-
-
-
- 0
- 140
- 271
- 91
-
-
-
- Modelo de Cálculo
-
-
-
-
- 20
- 20
- 211
- 21
-
-
-
- Modelo I - α = 90º e θ = 45º
-
-
- true
-
-
-
-
-
- 20
- 40
- 211
- 21
-
-
-
- Modelo II - α = 90º e 30º < θ < 45º
-
-
-
-
-
- 170
- 60
- 42
- 22
-
-
-
- 30
-
-
- 45
-
-
-
-
-
- 140
- 60
- 47
- 21
-
-
-
- θ :
-
-
-
-
-
-
- 30
- 20
- 221
- 131
-
-
-
-
-
-
- esquema_bielas.png
-
-
- true
-
-
-
-
-
- 30
- 240
- 47
- 16
-
-
-
- Vsd [KN]
-
-
-
-
-
- 110
- 240
- 113
- 20
-
-
-
-
-
-
- 30
- 270
- 47
- 16
-
-
-
- Vrd2 [KN]
-
-
-
-
-
- 110
- 270
- 113
- 20
-
-
-
-
-
-
-
-
-
- 110
- 300
- 113
- 20
-
-
-
-
-
-
-
-
-
- 30
- 300
- 47
- 16
-
-
-
- Vc [KN]
-
-
-
-
-
- 30
- 330
- 47
- 16
-
-
-
- Vsw[KN]
-
-
-
-
-
- 110
- 330
- 113
- 20
-
-
-
-
-
-
-
-
-
- 0
- 360
- 270
- 81
-
-
-
- Área de Aço
-
-
-
-
- 122
- 20
- 101
- 20
-
-
-
-
-
-
-
-
-
- 30
- 20
- 71
- 16
-
-
-
- As/s [mm²/m]
-
-
-
-
-
- 122
- 50
- 101
- 20
-
-
-
-
-
-
-
-
-
- 30
- 50
- 91
- 16
-
-
-
- As.min/s [mm²/m]
-
-
-
-
-
-
- 127
- 447
- 121
- 20
-
-
-
- Gerar Detalhamento
-
-
-
-
-
-
- 580
- 520
- 75
- 23
-
-
-
- Calcular
-
-
-
-
-
- 760
- 520
- 75
- 23
-
-
-
- Salvar
-
-
-
-
-
- 670
- 520
- 75
- 23
-
-
-
- Limpar
-
-
-
-
-
-
-
-
-
-
-