Escolar Documentos
Profissional Documentos
Cultura Documentos
2002-2 UFSC
TCC - Elaboração de programa para dimensionamento e detalhamento de pilares retangulares
submetidos a flexo-compressão normal com armadura distribuída ao longo das faces.
ÍNDICE
1. Introdução.............................................................................................................................6
1.1 Justificativa ..................................................................................................................................... 6
2. Visual Basic ..........................................................................................................................7
2.1 Por quê Visual Basic ? .................................................................................................................... 7
2.2 Sobre o Visual Basic ....................................................................................................................... 7
3. Teoria....................................................................................................................................8
3.1 Convenção de sinais........................................................................................................................ 8
3.2 Geometria da seção e arranjo da armadura ..................................................................................... 9
3.3 Diagrama tensão-deformação do aço............................................................................................ 10
3.4 Domínio de deformações e curvatura ........................................................................................... 12
3.4.1 Domínios e Regiões ............................................................................................................... 12
3.4.2 Equações de compatibilidade................................................................................................. 13
3.4.3 Limites entre domínios........................................................................................................... 16
3.4.4 Curvaturas .............................................................................................................................. 17
3.5 Esforços resistentes do concreto ................................................................................................... 19
3.5.1 Introdução .............................................................................................................................. 19
3.5.2 Hipótese de Cálculo ............................................................................................................... 19
3.5.3 Diagrama tensão-deformação do concreto............................................................................. 20
3.5.4 Equações gerais...................................................................................................................... 21
3.5.4.1 Equação de compatibilidade – deformação εc’ na fibra genérica ................................... 21
3.5.4.2 Encurtamento mínimo..................................................................................................... 21
3.5.4.3 Resultante Rcc e sua posição............................................................................................ 22
3.5.4.4 Outras relações ................................................................................................................ 23
3.5.5 Divisão do estudo em 2 casos ................................................................................................ 24
3.5.6 E.L.U. (Estado limite último)................................................................................................. 25
3.5.7 Caso particular: Compressão uniforme.................................................................................. 26
3.5.8 Cálculo de η e η’ para seção retangular ................................................................................ 27
3.5.8.1 Cálculo de η no caso 1 (εc ≤ 2) ....................................................................................... 27
3.5.8.2 Cálculo de η’ no caso 1 (εc ≤ 2)...................................................................................... 27
3.5.8.3 Cálculo de η no caso 2 (εc > 2)....................................................................................... 28
3.5.8.4 Cálculo de η’ no caso 2 (εc > 2)...................................................................................... 28
3.6 Flexão Normal Composta ............................................................................................................. 29
3.6.1 Equações de equilíbrio ........................................................................................................... 29
3.6.2 Cálculo da armadura .............................................................................................................. 31
3.6.3 Solução alternativa................................................................................................................. 34
3.6.4 Coeficiente K ......................................................................................................................... 34
3.6.5 Zonas de Solicitação .............................................................................................................. 34
3.6.6 Limites entre as zonas ............................................................................................................ 36
3.6.6.1 Limite AC ....................................................................................................................... 36
3.6.6.2 Limite EC........................................................................................................................ 36
3.6.6.3 Limite da zona O............................................................................................................. 37
3.6.7 Complemento sobre a zona E................................................................................................. 38
4. Itens do Projeto de Revisão da NB1 /2001 e considerações sobre o programa.................39
4.1 Automáticos .................................................................................................................................. 39
4.1.1 Sub Ler01 – (2390-2424)....................................................................................................... 39
4.1.2 Sub Programa0 – (500) .......................................................................................................... 39
4.1.3 Categorias de aço ................................................................................................................... 39
1. Introdução
Este trabalho tem como objetivo a elaboração de um programa para cálculo e detalhamento de
pilares de seção retangular com armadura simétrica em todo o perímetro, submetidos a flexo-
compressão normal . Válido para concreto com Fck inferior a 50 Mpa.
O procedimento de cálculo utilizado é de acordo com o Método das Zonas de Solicitação de
Lauro Modesto dos Santos. O procedimento utilizado no programa consiste em calcular a bitola
necessária para resistir aos esforços aplicados, sendo que as dimensões da seção e o arranjo da
armadura devem ser previamente definidos.
O Programa também tem uma opção de busca pela melhor solução. Serão testadas todas as
combinações de arranjo de armadura possíveis para a seção dada. Depois de excluídas aquelas que não
respeitam as indicações da norma, serão classificadas até 40 opções em ordem crescente de consumo de
aço (Kg), para a escolha do usuário.
Todos os resultados deverão respeitar as indicações do Projeto de Revisão da NB1 /2001.
O programa foi desenvolvido em Visual Basic 6.0
1.1 Justificativa
Alguns anos atrás os engenheiros tinham menos disponibilidade de computadores para facilitar
o processo de cálculo de estruturas. Isso nunca foi um motivo que impedisse a Construção de grandes
obras de todos os tipos, inclusive as de concreto armado.
As teorias e os procedimentos adotados naquele tempo, e até mesmo hoje em dia, possuem
simplificações e tabelas que possibilitam o cálculo manual num tempo admissível, com a obtenção de
resultados que vêm sendo provados na prática, serem satisfatórios do ponto de vista da engenharia em
termos de segurança e economia.
Com o uso correto e consciente dos computadores e de alguns softwares podemos reduzir muito
o tempo de cálculo e eliminar erros decorrentes do cálculo braçal. Além disso, e também mais
importante, é o fato de podermos utilizar outras bases teóricas para elaborar procedimentos de cálculo
que antes eram inviáveis por serem extremamente demorados se feitos a mão.
Com a possibilidade do uso de métodos menos simplificados, baseados em modelos que em
alguns casos podem representar melhor a realidade do comportamento da estrutura, podemos chegar a
resultados com menor margem de erro, proporcionando economia junto à segurança.
Outro recurso importante, é possibilidade testar várias situações de projeto num tempo
reduzido, para escolhermos aquela que nos é mais adequada. No caso do software desenvolvido, estas
diferentes situações são em função das dimensões do pilar, resistência do concreto,tipo de aço, escolha
do diâmetro e disposição das armaduras. Sabido os esforços aplicados no pilar, é possível testar pilares
com diferentes dimensões e detalhamento de armadura em pouco tempo, a fim de buscar a solução
mais conveniente para o engenheiro.
Durante toda a elaboração do trabalho, foram empregados conhecimentos principalmente à
respeito de linguagem de programação em Visual Basic, prescrições normativas (Projeto de Revisão da
NB1 /2001) e sobre a teoria das Zonas de Solicitações para dimensionamento de pilares. Durante todo
o processo, foram absorvidos conhecimentos nas áreas de programação, cálculo estrutural em concreto
armado e de prescrições normativas, que são assuntos que considero muito importantes para minha
vida profissional futura.
Além do conhecimento adquirido, o próprio software em si, poderá ser utilizado na vida
profissional.
2. Visual Basic
3. Teoria
Os pilares são elementos estruturais responsáveis pela transmissão das cargas provenientes das vigas
para a fundação. Estão submetidos a vários tipos de solicitação decorrentes das várias combinações de
carregamentos, como esforço do vento, peso próprio, cargas acidentais, retração do concreto, variação
de temperatura, efeitos de segunda ordem entre outros.
Para dimensionamento, os pilares são divididos em três grupos básicos. Cada um desses grupos
apresenta uma rotina de cálculo que possui uma metodologia e parâmetros específicos a considerar.
Obviamente não estão inclusos, nestes grupos os pilares parede, que fazem parte de um assunto
somente abordado na pós graduação.
Os três grupos são:
1º) Força normal centrada
Nesses pilares os efeitos do momento fletor não são considerados e somente o esforço normal de
compressão é levado em conta para efeito de cálculo. Porém esse esforço normal é majorado de
maneira a considerar os efeitos da excentricidade acidental e da excentricidade de segunda ordem.
2º) Flexo-compressão normal
Fazem parte deste grupo os pilares externos da edificação, com exceção dos pilares de canto. Existem
dois esforços a considerar que são o momento fletor que tem mesma direção que um dos eixos de
simetria da seção retangular e esforço normal de compressão.
3º) Flexo-compressão oblíqua.
Esses são os pilares de canto, que estão submetidos a um momento fletor resultante que não coincide
com nenhum dos eixos de simetria da seção. Podemos decompor o momento resultante nas duas
direções de simetria do pilar (no caso de seção retangular), e considerar dois momentos fletores, um na
direção y e outro na direção x, considerando como eixo z o próprio eixo do pilar. Além disso ainda
existe o esforço de compressão axial na direção.
Embora a convenção internacional de sinais seja o contrário, admitimos que a convenção acima é a
mais adequada ao cálculo de concreto armado, já que o concreto trabalha à compressão e na maioria
dos casos, Nd é uma força normal de compressão.
As dimensões da seção retangular e o arranjo da armadura deverão ser previamente definidos para o
programa calcular a armadura (bitola) necessária para resistir aos esforços aplicados.
Para definição da seção de concreto, são necessários apenas dois valores: base e altura, já que a seção é
retangular. Já para o arranjo das armaduras, é preciso que o programa calcule alguns valores para serem
usados nos cálculos posteriores. Serão explicados abaixo, quais as incógnitas necessárias para o
desenvolvimento do programa.
O arranjo será sempre com duplo eixo de simetria, barras de mesma bitola e camadas de barras
uniformemente espaçadas. O cobrimento será igual em todas as faces. Sabendo isso, serão fornecidos
ao programa, os seguintes dados para definição do arranjo:
OBS: As barras dos cantos são contadas 2 vezes (1 vez em nX e outra em nY).
01 - b = Base do pilar (cm)
02 - h = Altura do pilar (cm)
03 - d´ = distância do centro de gravidade da 1a camada de barras até a borda inferior
04 - nx = Número de barras na primeira e última camada
05 - ny = Número de camadas de barras
b = 30 cm Fig. 2.1
h = 80 cm exemplo de arranjo
d´= 3 cm
nx = 4 barras
ny = 6 camadas
ny = número de camadas
di = distância da camada genérica i à borda superior
ni = número de barras na camada i
Asi = soma das áreas das barras da camada i
As = área total de aço na seção
As,unit = área de uma só barra
n = número total de barras de aço
h = altura total da seção
d´1 = distância do centro de gravidade da 1a camada 1 de barras até a borda inferior
d´2 = distância do centro de gravidade da 1a camada ny de barras até a borda inferior
Variáveis adimensionais:
βi = di / h
δ1 = d´1 / h
δ2 = d´2 / h
δ = d´/ h
Equações Constitutivas:
Equações Constitutivas:
no trecho curvo:
σ 1 σ
ε sd = sd + ( sd − 0,7) 2
E s 45 f yd
válido para 0,7 . fyd / Es ≤ εsd ≤ εyd Fig. 3.2 Diagramaσs - εs para aços
encruados a frio
nos interessa a equação inversa, que resulta:
B + B 2 − 4 AC
σ sd =
2A
1 1,4 1 0,49
com A= 2
; B= − ; C= − ε sd
45 f yd 45 f yd Es 45
onde:
fyd = fyk / γs
σsd = valor de cálculo da tensão do aço
Es = módulo de elasticidade do aço
εsd = deformação específica do aço (em o/oo)
εyd = deformação no aço correspondente ao início do escoamento (em o/oo)
fyd = resistência de cálculo do aço
fyk = resistência característica do aço
γs = coeficiente de minoração da resistência do aço
Observações:
Nas peças de concreto armado, poderemos encontrar os esforços solicitantes Nd e Md, atuando
isoladamente ou em conjunto: tração centrada, compressão centrada, flexão simples e flexão composta,
normal ou oblíqua. Em qualquer um dos casos, devemos definir os limites de deformação das fibras,
que corresponderiam ao estado limite último da seção transversal. O diagrama de distribuição das
deformações ao longo da altura da seção será dado por uma reta que passará necessariamente por um
dos pontos A, B ou C que chamaremos de pólos de ruína. Ao atingir os pólos de ruína, dizemos que a
peça está submetida ao E.L.U. (estado limite último de “ruptura”).
Para determinar a distribuição de deformações em todos os pontos da seção transversal, isto é, para
estabelecer as equações de compatibilidade, não é necessário considerar os 5 domínios mostrados
acima. Eles podem ser agrupados em domínios maiores, que chamaremos de regiões. Há 3 regiões,
correspondentes aos 3 pólos de ruína:
Na região I, todas as retas que definem as deformações giram em torno do pólo B, onde a deformação é
sempre igual a 2.
βx = x h (4.1)
βi = d i h (4.2)
εc 2 14 14.β x
= = ⇒ εc =
x x−
3h 7 x − 3h 7β x − 3
7
(4.3)
ε c1 2 14 14.( β x − 1)
= = ⇒ εc1 = (4.4)
x − h x − 3h 7 x − 3h 7β x − 3
7
3ε c
βx = (4.5)
7ε c − 14
3ε c1 − 14
βx = (4.6)
7ε c1 − 14
Deformação εsdi :
ε sdi εc β x − βi
= ⇒ ε sdi = ε c . (4.7)
x − di x βx
14.( β x − β i )
levando em conta (4.3): ε sdi = (4.8)
7βx − 3
No programa, será usada uma dessas equações de compatibilidade ( a que For mais conveniente). É
necessário tomar cuidado: quando εc1 = 2, βx tende para o infinito, como mostra a eq. (4.6).
3,5 ε β x − βi
= sdi ⇒ ε sdi = 3,5 (4.9)
x x − di βx
Observe que (4.9) é a mesma (4.7) com εc Constante e igual a 3,5. Se a fibra considerada estiver abaixo
da L.N., a fibra tracionada, εsdi resultará automaticamente negativo pela (4.9), pois neste caso; di > x
ou βi > βx
εc 10 10.β x
= ⇒ εc = (4.11)
x − di h − d '− x 1−δ − βx
ε c .(1 − δ )
Reciprocamente: β x = (4.12)
ε c + 10
εc 10
A (4.11) mostra que: = ; levando essa relação na eq. (4.10), temos:
βx 1 − δ − β x
β x − βi
ε sdi = ε c . (4.13)
βx
Vemos que a (4.13) é a mesma (4.7), repetida em (4.9). A eq. (4.7) é geral: vale em todas as regiões.
Em todas as fórmulas apresentadas, o sinal εsdi resulta automaticamente.
Na região III é preciso tomar cuidado: a eq. (4.12) mostra que, quando εc = -10 (tração centrada), βx
tende para o infinito.
3.4.3 Limites entre domínios
No programa desenvolvido, será importante conhecer os limites entre alguns domínios ou regiões.
Assim, dado βx, já sabemos em que domínio ou região nos encontramos. Isto também é necessário,
para não haver risco de cairmos em fórmulas que nos levariam a “loopins” contínuos ou divisão por
zero. Outra vantagem, é que podemos conseguir atingir resultados, com menor número de interações.
Considerando o diagrama genérico de deformações da figura abaixo, onde εc pode variar de -10
até 3,5 e εs de –10 até 3,5δ, para as regiões III e II.
ε c .(1 − δ )
βx = (4.14)
εc −εs
onde εc e εs entram com seus sinais.
0.(1 − δ )
βx = =0⇒ βxLim 1-2 = 0 (4.15)
0 + 10
x h
βx = = =1⇒ βxLim II-I = 1 (4.17)
h h
3.4.4 Curvaturas
Demonstra-se que a curvatura do eixo da peça numa seção considerada é dada por:
1 ε c 2 − ε c3
= (4.18)
r c
com as deformações expressas em números puros, onde:
1 εc εc
θ = 1000h. = 1000h. = 1000 (com εc em número puro), ou ainda:
r x βx
εc
θ= (4.20)
βx
com εc em o/oo
temos:
c = h - d'
εc2 = 0
εc3 = -10
substituindo em
(4.18):
1 ε c 2 − ε c 3 0 − (−10) 10
= = =
r c h − d' h − d'
1
já está multiplicado por 1000; então:
r
10 10
θ = h. = (4.21)
h − d' 1−δ
A escolha de pontos nos mesmos locais também pode ser feita quando βx For negativo (L.N. acima da
borda superior). Estaremos então no domínio 1 da região III, sendo εc negativo (só há trações).
1 ε c 2 − ε c 3 ε c − (−10) ε c + 10
= = =
r c h − d' h − d'
ε c + 10
θ= (4.22)
1−δ
Observe que a (4.21) é um caso particular de (4.22), em que εc = 0. Quando εc = -10 (tração uniforme),
a (4.22) mostra que θ = 0 (a curvatura é nula na tração uniforme, assim como na compressão uniforme).
3.5.1 Introdução
Os esforços resistentes do concreto (força normal e momento fletor) tornam-se conhecidos quando se
determina a resultante Rcc de tensões de compressão no concreto e a sua posição.
Introduzamos dois coeficientes adimensionais. Por definição:
Rcc
η= (5.1)
σ cd . Ac
Rcc .a
η' = (5.2)
σ cd . Ac .h
onde:
a) As seções transversais permanecem planas após a deformação. Daí resulta ser linear a distribuição
das deformações ao longo da altura da seção.fig 5.2
b) Como o estudo é feito para deformações quaisquer até a ruptura, as retas que definem as
deformações são quaisquer, respeitando os domínios de deformação quando o E.L.U. de “ruptura”
é atingido.
c) O diagrama tensão deformação do concreto é composto por uma parábola de 2o grau e um patamar
de 2 o/oo a 3,5 o/oo, de acordo com a fig 5.1
No E.L.U. (estado limite último de ruptura), adota-se para o concreto um diagrama tensão-deformação
retangular-parabólico, conforme a Fig 5.1.
50
εcu = 3,5. para 50 N/mm2 ≤ fck ≤ 80 N/mm2. Fig 5.1 Diagramaσc - εc
fck
f ck
- Ordenada máxima: σ cd = 0,85 f cd = 0,85 (5.5)
γc
Onde:
σc = tensão no concreto
σcd = resistência do concreto usada no cálculo em E.L.U
fck = resistência característica do concreto
fcd = resistência de cálculo do concreto
γc = coeficiente de minoração da resistência do concreto
Observações:
( x − y)
εc '= εc. (5.6)
x
Para deduzir as fórmulas que virão nos próximos itens, é interessante considerar o encurtamento
mínimo εco conforme a Fig. 5.3
Observamos que:
A resultante de compressão Rcc no concreto e sua posição (definida pela distância a da Fig 5.4) podem
ser calculadas através das integrais abaixo:
x h
Rcc = ∫ σ 'c .b.dy se x ≤ h ou ∫ σ ' .b.dy
c se x > h (5.9)
0 0
x h
Rcc .a = ∫ σ 'c .b. y.dy se x ≤ h ou ∫ σ ' .b. y.dy
c se x > h (5.10)
0 0
onde:
εc
βx = (5.11)
θ
x
onde β x = (5.12)
h
é a profundidade da linha neutra, e
1
θ = 1000.h. (5.13)
r
é a curvatura na seção (majorada adimensional)
Com o emprego das relações (5.11) e (5.12), as fórmulas (5.7) e (5.8), que definem εco , podem ser
escritas de outra forma:
h
y= .(ε c − ε c ' ) (5.16)
θ
dy h h
= − ; donde: dy = − .dε c ' (5.17)
dε c ' θ θ
Voltemos as integrais (5.9) e (5.10): σc` é função de εc`: y e dy também o são, de acordo com (5.16) e
(5.17). Quanto a b, é função de y - Fig. 5.4 - e, portanto, de εc`. Podemos então trabalhar com a variável
εc` e não com a variável y, isto é, integrar de εc a εco - Fig. 5.5 -, em vez de integrar de 0 a x ou de 0 a
h. Os quatro casos da - Fig. 5.5 - ficam reduzidos a dois:
1o caso: εc ≤ 2
2o caso: εc > 2
Naturalmente, as fórmulas de η e η’ conterão : εco, que valerá 0 ou (εc - θ) segundo (5.14) e (5.15) -
conforme se tenha εc ≤ θ ou εc > θ (βx ≤ 1 ou βx > 1, isto é L.N. dentro ou fora da seção).
εc ≤ 3,5 se εc ≤ θ (5.18)
3θ
εc ≤ 2 + se εc > θ (5.19)
7
14 β x 14
εc = e θ= para βx > 1 (5.20)
7β x − 3 7β x − 3
3,5 3,5
ε c = 3,5 e θ= para (1 − δ ) ≤ βx ≤ 1 (5.21)
βx 13,5
10.β x 10 3,5
εc = e θ= para βx < (1 − δ ) (5.22)
1−δ − βx 1−δ − βx 13,5
As fórmulas acima, de (5.20) a (5.22) Constam na sub-rotina SBxTeta07, que calcula θ em função de
βx.
Nos itens a seguir, em todas as fórmulas deduzidas para o cálculo dos coeficientes η e η’, supõe-se que
a curvatura θ não seja nula.
No caso particular da compressão uniforme, onde θ = 0, tais fórmulas não são aplicáveis. Vamos
deduzir as que são adequadas a esse caso.
Para maior generalidade, imaginemos compressão uniforme com εc < 2, atingindo-se o E.L.U. com εc =
2. Pela definição (5.1): Rcc = η.σcd.Ac. Mas Rcc = σc’.Ac, onde a tensão σc’, Constante na seção, é dada
por (5.3). Então:
εc '
σ c ' = σ cd . .(4 − ε c ' ) (5.3)
4
εc '
Rcc = σ cd . .(4 − ε c ' ). Ac
4
εc
Rcc = .(4 − ε c ).σ cd . Ac
4
εc
donde: η = .(4 − ε c ) (5.23)
4
No E.L.U, εc = 2 e daí: η = 1 (5.24)
h h
Rcc .a = σ c '.∫ .b. y.dy = η.σ cd .∫ b. y.dy = η.σ cd .S 2
0 0
onde S2 é o momento estático da área Ac em relação à borda superior:
S2 = Ac.c2, onde c2 é a distância do C.G. de Ac à borda superior.
c2
η ' = η. = β c 2 .η (5.25)
h
Sendo εc ≤ 2, σc’ é dado por (5.3). Na seção retangular, b é Constante e Ac = b.h ; dy é dado por
(5.17). Supõe-se θ ≠ 0.
ε co
ε 'c 2 h
Rcc = ∫ σ cd (ε 'c − )b(− )dε ' c
εc
4 θ
ε co
1
η=− ∫ (4ε ' −ε ' c ).dε ' c
2
4θ
c
ε c
ε c 2 (6 − ε c ) − ε co 2 (6 − ε co )
η= (5.27)
12θ
ε co
4ε ' −ε '
2
h h
Rcc .a = ∫ σ cd ( c c )b .(ε c − ε ' c ).(− )dε 'c
εc
4 θ θ
ε co
1
η' = ∫ε (4ε ' −ε ' c ).(ε c − ε ' c )dε 'c
2
4θ 2 c
c
ε c 3 (8 − ε c ) − ε co 2 (24ε c − 16ε co − 4ε c ε co + 3ε co 2 )
η' = (5.28)
48θ 2
Verificadas as condições (5.18) e (5.19), o cálculo pode prosseguir. Como εc > 2, a integral (5.9) será
dividida em duas partes: de εc a 2 e de 2 a εco, com o emprego da (5.4) e (5.3), respectivamente.
ε co
(4ε ´c −ε 'c )
2 2
h h
Rcc = ∫ σ cd b(− )dε 'c + ∫ σ cd . b ( − ) d ε 'c
εc
θ 2
4 θ
a primeira parcela é imediata e a segunda pode aproveitar a integração já feita no item 3.5.8.1, fazendo
εc = 2 no resultado (5.27). Somando as parcelas
12ε c − 8 − ε co (6 − ε co )
2
η= (5.29)
12θ
ε co
(4ε ´c −ε 'c ) h
2 2
h h h
Rcc .a = ∫ σ cd b (ε c − ε c ' )(− )dε 'c + ∫ σ cd . b (ε c − ε c ' )(− )dε 'c
εc
θ θ 2
4 θ θ
η' =
2
[
16 − 32ε c + 24ε c − ε co 24ε c − 4ε co (ε c + 4) + 3ε co
2 2
] (5.30)
48θ 2
Em todas as fórmulas deduzidas aparece εco, cujo valor é dado por (5.14) ou (5.15). Supões-se que θ
≠ 0.
Considerando que a seção esteja submetida à flexão normal composta, teremos os esforços solicitantes
e resistentes conforme a fig. 4.1:
Temos duas equações de equilíbrio para os esforços na seção de concreto. São elas:
Sendo:
ny
As ,tot
N d .c 2 − M d − Rcc .a −
ntot
∑ n .σ
1
i sdi .d i = 0 (6.4)
Sendo:
Para calcular As,tot pela (6.3) é necessário conhecer Rcc , a e σsdi , que dependem da profundidade da
linha neutra (βx). A profundidade da linha neutra, deverá então, ser calculada anteriormente. Isolando
As,tot em (6.3) e (6.4), temos:
ntot
( N d − Rcc ). ny
= As ,tot (6.5)
∑ n .σ
1
i sdi
ntot
( N d .c 2 − M d − Rcc .a). ny
= As ,tot (6.6)
∑ n .σ
1
i sdi .d i
ntot ntot
( N d − Rcc ). ny
= ( N d .c 2 − M d − Rcc .a ). ny
∑ n .σ
1
i sdi ∑ n .σ
1
i sdi .d i
ny
∑ n .σ i sdi .d i
( N d − Rcc ). 1
ny
= ( N d .c 2 − M d − Rcc .a )
∑ n .σ
1
i sdi
ny ny
∑ n .σ i sdi .d i ∑ n .σ i sdi .d i
Nd . 1
ny
− Rcc . 1
ny
− N d .c 2 + M d + Rcc .a = 0
∑ n .σ
1
i sdi ∑ n .σ
1
i sdi
ny ny
∑ ni .σ sdi .d i ∑ ni .σ sdi .d i
1
N d . ny − c 2 + M d + Rcc .a − Rcc . 1 ny
= 0 , dividindo tudo por σ .A .h:
cd c
∑ ni .σ sdi ∑ ni .σ sdi
1 1
ny ny
∑ ni .σ sdi .d i ∑ ni .σ sdi .d i
Nd 1
. ny
− c2 +
Md
+
Rcc .a
−
Rcc
. 1 ny =0
σ cd . Ac .h σ cd . Ac .h σ cd . Ac .h σ cd . Ac .h
∑ ni .σ sdi ∑ ni .σ sdi
1 1
ny d ny d
∑ ni .σ sdi . i ∑ ni .σ sdi . i
Nd 1 h c2
. 1 ny =0
Md Rcc .a Rcc h
. ny − + + − (6.7)
σ cd . Ac h σ cd . Ac .h σ cd . Ac .h σ cd . Ac
∑ ni .σ sdi ∑ ni .σ sdi
1 1
Uma vez satisfeita a eq (7.7) (por tentativas), tem-se o valor βx (profundidade da linha neutra).
Podemos agora calcular As,tot pela (6.3) e o problema fica então resolvido.
Serão introduzidos à partir daqui, alguns coeficientes adimensionais. Serão usados nas eqs. (6.3), (6.4) ,
(6.7), gerando as equações que serão utilizadas no programa. Os coeficientes adimensionais são:
Nd
ν= = esforço normal de cálculo reduzido adimensional (6.8)
Ac .σ cd
Md
µ= = momento fletor de cálculo reduzido adimensional (6.9)
Ac .σ cd .h
ny
∑ n .σ i sdi .β i
A= 1
(6.10)
ntot
ny
∑ n .σ i sdi
B= 1
(6.11)
ntot
ny
A
∑ n .σ i sdi .β i
K= = 1
ny
(6.12)
B
∑ n .σ
1
i sdi
c2
βc 2 = (6.13)
h
di
βi = (6.14)
h
Ω = η '− K η (6.15)
As ,tot
ρ= = taxa de armadura (6.16)
Ac
η e η’ = ver item 3.5.1
As ,tot ∑
ni .σ sdi
Nd Rcc
− − . 1
=0 introduzindo os coeficientes adimensionais:
Acσ cd Acσ cd Acσ cd n.tot
ρ
ν −η − B=0 (6.17)
σ cd
N d .c 2 Md R .a As ,tot ∑ n .σ i sdi .d i
− − cc − 1
= 0 introduzindo os coeficientes adim.:
Acσ cd .h Acσ cd .h Acσ cd .h Acσ cd h.ntot
ρ
ν .βc 2 − µ − η '− A=0 (6.18)
σ cd
ν .( K − βc 2 ) + µ + η '−η.K = 0 (6.19a)
ν .( K − βc 2 ) + µ + Ω = 0 (6.19b)
A seqüência no programa será então descobrir o valor de βx em que a eq. (6.19b) seja satisfeita e
posteriormente calcular a taxa de armadura pela eq. (6.20) resultante da (6.17) com ρ isolado:
(ν − η )σ cd
ρ= (6.20)
B
3.6.4 Coeficiente K
O exame de (6.12) permite conhecer o significado físico do coeficiente K. É a distância, à borda mais
encurtada ou menos alongada, do centro das forças nas barras de aço, distância essa dividida pela altura
h da seção. É, portanto uma função de βx.
A função K = f(βx) é descontínua num ponto ou num intervalo, passando de +∞ para -∞ .
A Fig. 6.2 mostra esquematicamente (sem escala) a variação de K com βx para os seguintes dados:
- seção retangular
- armadura simétrica em 2 bordas
- aço CA-50 A
- δ = d’/h = 0,05
O coeficiente B , neste exemplo anula-se (K tende para o infinito) no intervalo βx = 0,21 à 0,59 ,
aproximadamente. É claro que interações com funções desse tipo exigem bastante cuidado! É por isso
que muitos textos oferecem dimensionamento a partir de diagramas oriundos de uma coleção de
verificações. Verificar é mais fácil. O dimensionamento direto é, quase sempre, um problema difícil.
Pensar em dimensionar somente com a solução alternativa, eq.(6.22), não é possível porque o
denominador A também se anula para um determinado valor de βx.
O programa ora usa a primeira solução, ora a solução alternativa, aquela que der maior precisão de
cálculo.
3.6.5 Zonas de Solicitação
Uma vez dimensionada a armadura distribuída ao longo do perímetro da seção, pode ocorrer um dos
seguintes casos:
3.6.6.1 Limite AC
Na zona A, βx varia desde o infinito (compressão uniforme, representada pelo semi-eixo ν positivo) até
um valor limite com a zona C, a partir do qual começa a existir tração. É fácil ver que tal limite
correspondente a βx = 1 - δ. Com efeito, se a L.N. subir a partir desse ponto, pelo menos a camada 1 de
barras ficará tracionada, conforme a Fig 6.4:
βx,AC = 1 - δ (6.25)
xAC = (1 - δ) h = h – d’
Dando a βx o valor (1 - δ), η, η’ e K ficarão
determinados, e serão chamados de ηAC, η’AC e
KAC:
Ω AC = η ' AC − K ACη AC (6.26)
µ AC = ( βc 2 − K AC )ν − Ω AC (6.27)
3.6.6.2 Limite EC
Analogamente, na zona E, βx varia desde -∞ (tração uniforme representada pelo semi-eixo ν negativo)
até um valor limite com a zona C, a partir do qual a camada superior ficaria comprimida, conforme Fig.
6.5:
xEC = d’
βx,EC = δ (6.28)
Resulta a reta limite entre E e C:
µ EC = ( βc 2 − K EC )ν − Ω EC (6.29)
Sendo, na zona O, ρ = 0, temos apenas o concreto resistindo aos esforços de compressão. Então: Nd =
Rcc , sendo assim, resulta: ν = η chamando ν de νo para a zona O temos:
νo = η (6.31)
Com ν = η , a eq (6.19a) fica:
η.( K − βc 2 ) + µ + η '−η.K = 0
η.K − η.βc 2 + µ + η '−η.K = 0
− η.βc 2 + µ + η ' = 0
µ = η.βc 2 − η '
µ o = η.βc 2 − η ' (6.32)
Vemos que µo é função de βx , uma vez que η e η’ o são. A curva limite da zona O é dada pelas
equações paramétricas (6.31) e (6.32): pontos (νo e µo). Será determinado ponto por ponto. Os passos
de cálculo são os seguintes:
- dado ν , temos ν = η
- escolhemos βx , daí εc e θ
- calculamos η
- se ν ≠ η , tomamos outro βx
- conseguindo ν - η = 0 a menos de uma tolerância, temos o valor certo de βx
- com o valor correto de βx calculamos η’
- µ o = βc 2ν − η '
4.1 Automáticos
Serão apresentados aqui, os itens da norma e considerações avaliadas automaticamente pelo programa
que podem nem ser percebidas pelo usuário. Algumas desses itens aparecem como mensagem de erro
para o usuário, que poderá, algumas vezes, tomar decisões dando continuidade ao programa.
Nesse caso, o controle da resistência à compressão do concreto deve ser feita aos 28 dias, de forma a
confirmar o valor de fck adotado no projeto;
(8600-8630)
O diâmetro dos estribos em pilares não deve ser inferior a 5 mm nem a 1/4 do diâmetro da barra isolada ou
do diâmetro equivalente do feixe que Constitui a armadura longitudinal.
(8690-8895)
O espaçamento longitudinal entre estribos, medido na direção do eixo do pilar, para garantir o
posicionamento, impedir a flambagem das barras longitudinais e garantir a costura das emendas de barras
longitudinais nos pilares usuais, deve ser igual ou inferior ao menor dos seguintes valores:
− 200 mm;
− menor dimensão da seção;
− 24φ para CA-25, 12φ para CA-50.
Pode ser adotado o valor φt < φ /4 desde que as armaduras sejam Constituídas do mesmo tipo de aço e o
espaçamento respeite também a limitação:
7.4.7 Cobrimento
7.4.7.1 Para atender aos requisitos estabelecidos nesta Norma, o cobrimento mínimo da armadura é o
menor valor que deve ser respeitado ao longo de todo o elemento considerado e que se Constitui num
critério de aceitação.
7.4.7.2 Para garantir o cobrimento mínimo (cmin) o projeto e a execução devem considerar o cobrimento
nominal (cnom), que é o cobrimento mínimo acrescido da tolerância de execução (∆c). Assim as dimensões
das armaduras e os espaçadores devem respeitar os cobrimentos nominais, estabelecidos na tabela 4 para
∆c=10 mm.
7.4.7.3 Nas obras correntes o valor de ∆c deve ser maior ou igual a 10 mm.
7.4.7.4 Quando houver um adequado controle de qualidade e rígidos limites de tolerância da variabilidade
das medidas durante a execução pode ser adotado o valor ∆c = 5 mm, mas a exigência de controle rigoroso
deve ser explicitada nos desenhos de projeto.
7.4.7.5 Os cobrimentos nominais e mínimos estão sempre referidos à superfície da armadura externa, em
geral à face externa do estribo. O cobrimento nominal de uma determinada barra deve sempre ser:
cnom ≥ φ barra
cnom ≥ φ feixe = φn = φ √n
cnom ≥ 0,5 φ bainha
7.4.7.6 A dimensão máxima característica do agregado graúdo, utilizado no concreto não pode superar em
20% a espessura nominal do cobrimento, ou seja:
dmax ≤ 1,2 cnom
(8555-8675)
9.4.6.1 Ganchos dos estribos
Os ganchos dos estribos podem ser :
a) semi circulares ou em ângulo de 45º (interno), com ponta reta de comprimento igual a 5φt, porém não
inferior a 5 cm;
b) em ângulo reto, com ponta reta de comprimento maior ou igual a 10φt, porém não inferior a 7 cm (este
tipo de gancho não deve ser utilizado para barras e fios lisos).
(7801-7815)
17.3.4.3.1 Valores mínimos
A taxa de armadura deve ter o valor mínimo expresso a seguir:
sendo:
ν = Nd/(Acfcd)
(7820)
17.3.4.3.2 Valores máximos
As, máx = 8,0% Ac
A maior armadura possível em pilares deve ser 8% da seção real, considerando-se inclusive a sobreposição
de armadura existente em regiões de emenda, respeitado o disposto em 18.4.2.2.
O diâmetro interno da curvatura dos estribos deve ser, no mínimo, igual ao índice dado na tabela 9.
4.2.2 Valores de γs e γc
Para a execução de elementos estruturais nos quais estejam previstas condições desfavoráveis (por
exemplo, más condições de transporte, ou adensamento manual, ou concretagem deficiente por
concentração de armadura), o coeficiente γc deve ser multiplicado por 1,1.
Admite-se, nas obras de pequena importância, o emprego de aço CA-25 sem a realização do controle de
qualidade estabelecido na NBR 7480, desde que o coeficiente de segurança para o aço seja multiplicado
por 1,1.
4.2.3 Detalhamento das armaduras
7.5 Detalhamento das armaduras
7.5.1 As barras devem ser dispostas dentro do componente ou elemento estrutural de modo a permitir e
facilitar a boa qualidade das operações de lançamento e adensamento do concreto.
7.5.2 Para garantir um bom adensamento é vital prever no detalhamento da disposição das armaduras
espaço suficiente para entrada da agulha do vibrador.
5. Manual do Programa
O método de cálculo utilizado no programa requer que as dimensões e o arranjo da armadura sejam
previamente definidos. O dimensionamento, consiste em determinar as bitolas das barras de aço.
O arranjo será sempre com duplo eixo de simetria, barras de mesma bitola e camadas de barras
uniformemente espaçadas.
Algumas fórmulas escritas no código do programa só são aplicáveis para concreto com Fck inferior a
50 MPa. O valor mínimo de Fck permitido pelo Projeto de Revisão da NB1 /2001 é de 20 MPa para
pilares. Deste modo o programa só é válido para valores de Fck entre 20 e 50 MPa..
Os valores do esforço normal de cálculo e do momento fletor de cálculo devem ser calculados fora do
software. As considerações de excentricidade (inicial, acidental e de 2a ordem) também devem ser
calculadas antes da entrada dos dados, pois estas excentricidades influenciarão diretamente o valor de
Md. Em muitos casos o pilar deve ser testado para vários pares de valores Md e Nd.
5.1 Modos de uso
O programa possui basicamente 2 modos de utilização:
5.2.1 Dimensões:
1- Comprimento do pilar (cm): serve para calcular o número total de estribos, comprimento das barras
longitudinais e o peso total de aço. Deve-se salientar que a influência da esbeltez do pilar deve ser
levada em conta fora de programa para a determinação de Md.
2- Base do pilar (cm): positivo e inteiro
3- Altura do pilar (cm): positivo e inteiro
Quando os botões + ou – são clicados, um novo valor é atribuído à base ou à altura e o programa roda
(como se o botão “Calcula” fosse clicado. O mesmo acontece com os botões + e – do “no de barras”
explicado abaixo.
5.2.2 Arranjo
Estes dados só serão utilizados no cálculo direto ( quando o botão “Calcula” é usado).
4- Número de barras nas face base: é o número de barras na primeira e última camada. Positivo e
inteiro.
5- Número de barras nas face altura: é o número de camadas de barra. Positivo e inteiro.
6- d´ (cm): é a distância do centro de gravidade da 1a camada de barras até a borda inferior. Positivo
seja, quando o diâmetro das barras longitudinais e dos estribos não aumentarem devido a uma pequena
variação de d´.
O problema geralmente se resolve na segunda tentativa. Só funcionaria na 1ª tentativa se φestribo =
5mm e φlong = 10mm. Na segunda tentativa temos geralmente um pequeno aumento de d´ e
conseqüentemente uma pequena redução da inércia, o que resulta na área teórica da barra um pouco
maior do que a anteriormente calculada. Só será necessário uma 3ª tentativa, se este pequeno aumento
da área teórica obrigar o uso da bitola comercial imediatamente superior àquela que havia sido
calculada.
44 = 8 + 32/2 + 20
5.2.4 Estribos
14- Pré-definido: O usuário escolhe a bitola dos estribos antes do início do processo de cálculo. Se o
diâmetro do estribo For inferior ao mínimo permitido, o programa utilizará o valor mínimo após
emitir um aviso.
15- Mais econômico: Será usado a solução mais econômica. O cálculo é feito pela relação: Área do
estribo / espaçamento.
16- Definir manualmente: Se o estribo calculado tiver bitola diferente de 5mm, será aberta a seguinte
janela:
17- Mesmo tipo de aço: Se a armadura dos estribos e a armadura das barras longitudinais forem do
mesmo tipo de aço, o diâmetro mínimo do estribo pode ser desprezado, desde que o espaçamento
entre eles seja menor ou igual a um valor gerado pela última fórmula do item 18.4.3 do Projeto de
Revisão da NB1 /2001 . Se assim o usuário desejar, esta opção deve ser selecionada.
As opções 14, 15 e 16 só serão úteis para o cálculo direto, isto é, quando o botão “Calcula” é clicado.
Já a opção 17 será utilizada também na busca da melhor solução ( botão “Calcula melhor solução”).
18- Ganchos: A escolha do tipo de gancho servirá para o cálculo do comprimento total dos estribos, que
por sua vez, servirá para o cálculo do peso da armadura do pilar.
5.2.5 Cobrimento
19- Classe de agressividade ambiental: Deverá ser escolhido a classe de agressividade ambiental
segundo o item 6.4.2 do Projeto de Revisão da NB1 /2001.
20- dc = 5 ou 10 mm: Tolerância de execução do cobrimento. Definido pela norma como ∆c.
5.2.6 Outros
21- Diâmetro max. do agreg.: O diâmetro máximo do agregado graúdo será utilizado para o cálculo dos
espaçamentos mínimos entre as barras longitudinais e também para o cobrimento mínimo.
22- Precisão: Não recomendo a mudança deste valor do padrão (0,0001), visto que esta precisão é
extremamente satisfatória e foi observado que valores mais próximos a zero podem causar
problemas de convergência ( o computador “trava”).
23- Diâmetro máximo das barras longitudinais: Podemos estipular qual o diâmetro máximo das barras
longitudinais que o programa buscará na solução do problema.
24- Diâmetro máximo dos estribos: Podemos estipular qual o diâmetro máximo dos estribos que o
programa buscará na solução do problema. Esta opção, tanto quanto a de cima mostram-se mais
úteis na busca da solução mais econômica.. Definindo um diâmetro máximo, tanto para os estribos,
quanto para as barras longitudinais, os resultados apresentados só mostrarão soluções que convêm
ao usuário.
No menu “Arquivo” temos ainda as opções de gravar os dados de entrada em um arquivo “Salvar
como...” ou ler os dados de um arquivo “Abrir arquivo...”.
Também temos as opções “Salvar valores como padrão” e “Carregar valores padrão”. Toda a vez que
o programa é aberto, os campos são preenchidos com os valores que estão guardados no arquivo
“padrão.txt”. Se o usuário prefere por exemplo trabalhar com as unidades KN e cm, ele seleciona-as
nos campos desejados e clica no menu “Salvar valores como padrão”, á partir daí, quando o programa
For aberto novamente, as unidades já estarão em KN e cm, conforme o gosto do usuário.
O Botão “Valores padrão” tem a mesma função que o menu “Carregar valores padrão”.
O valor da escala do desenho não é de acordo com o tamanho real do pilar, isto é: se o valor da escala
For 6,523 não quer dizer que a escala seja de 1:6,523. Recomendo deixar sempre a escala automática.
O detalhamento será sempre desenhado, mesmo que não respeite as condições da norma. O pilar só não
será detalhado, quando a bitola calculada possuir diâmetro muito grande (maior que a bitola máxima
definida pelo usuário) ou se Fck ficar fora do intervalo de 20 a 50 MPa. Na busca da melhor solução,
não haverá detalhamento se não existir arranjo possível para resistir aos esforços. Caso insto ocorra, as
dimensões do pilar devem ser aumentadas ou a resistência do aço ou do concreto deve ser aumentada.
6. Exemplos
1. Pilar com comprimento = 3,10 m, com a seção de 40x60 cm, submetido a um esforço normal de
cálculo = 500 Tf e um momento fletor de cálculo de 100 Tf.cm (direção X)
-Concreto com Fck = 20Mpa
-Aço CA-60A para armadura longitudinal e estribos (mesmo tipo de aço)
-Ganchos dos estribos a 90o
-Classe de agressividade ambiental: II , com ∆c=10mm
- γs = 1.15 , γc = 1.5
Será calculado todas as soluções possíveis para este problema, considerando que a maior bitola
comercial seja de 40mm (este valor será mudado no próximo exemplo).
Depois de entrar com os dados e clicar no botão “Calcula melhor solução”, obtemos o seguinte
resultado:
Essa é a solução que utiliza a menor quantidade de aço, dentre todas as soluções possíveis para o
problema. Características da solução segundo os dados de saída do programa:
Ainda podemos optar por outras soluções possíveis para o problema clicando no botão “Outras
soluções”:
Aí estão todas as soluções em ordem de gasto de aço. Observe que tanto para a solução com nX=3 e
nY=5 como para nX=2 e nY=4, temos a opção com estribo de 6,3mm sendo mais econômica que a
solução de 5mm. Vamos ver porque isso acontece selecionando a opção 2:
Observando a tabela “Soluções”, notamos que estão presentes apenas 10 soluções para o problema. Isto
indica que não existe, nenhuma outra solução possível de arranjo que respeite as condições da norma.
Isso quer dizer que quaisquer soluções possíveis que um calculista pode chegar será uma das 10 opções
da tabela “Soluções”, e isto foi calculado em menos de 10 segundos, ficando todas as soluções
disponíveis ao usuário.
Vamos tentar, por exemplo, retirar uma camada de barras, mudando diretamente o campo “no de barras
nas faces: Altura” de 5 para 4 e clicando o botão “Calcula”:
A seguinte mensagem de erro será mostrada
Agora a mensagem de erro fica em vermelho, indicando que a solução não respeitou um ou mais itens
do Projeto de Revisão da NB1 /2001.
Observe que todas opções que seriam mostradas com erro, foram excluídas na busca da melhor
solução, por isso ficam apenas 10 soluções disponíveis ao usuário.
2. Pilar com comprimento = 3,20 m, com a seção de 60x50 cm, submetido a um esforço normal de
cálculo = 650 Tf e um momento fletor de cálculo de 230 Tf.cm. (direção X)
-Concreto com Fck = 25Mpa
-Aço CA-50A para armadura longitudinal
- Tipo de aço indefinido para estribos (mesmo tipo de aço não pode ser selecionado)
-Ganchos dos estribos a 90o
-Classe de agressividade ambiental: II , com ∆c=10mm
- γs = 1.15 , γc = 1.4
Neste exemplo vamos considerar que a maior bitola disponível no comércio é a de 32mm, e também
vamos optar por excluir todas as soluções que apresentem estribos maiores que 8mm.
O arranjo mais econômico é com 5 camada de barras, com 6 barras na 1a e última camada. Podemos
optar por outra solução utilizando o botão “Outras soluções”:
Veja que agora nenhuma solução apresenta estribos de 10mm ou barras longitudinais de 40mm. As
opções 2, 3, 4 e 5 estão detalhas abaixo:
A opção “salvar valores como padrão”, grava todos os dados de entrada (inclusive os valores dos
campos do menu “Outros valores”) no arquivo “padrão.txt”. As preferências do usuário, como por
exemplo as unidades de Nd, Md, Fck, e Es ficam então gravadas.Os valores guardados neste arquivo
serão lidos toda a vez que o programa é aberto ou quando carregamos o arquivo ( usando o menu
“Carregar valores como padrão”ou o botão “Valores padrão”).
1a Situação de cálculo
eax = 2cm
2a Situação de cálculo
eay = 2cm
A segunda situação de cálculo é um caso de flexo-compressão oblíqua, que o programa não calcula.
Porém, a pior situação de cálculo é mesmo a primeira ( segundo os cálculos do exemplo). Deste modo
podemos comparar os resultados obtidos:
Cálculo com o ábaco II-12 (apostila “Estrutura de concreto armado 2001/1” - UFSC):
Resultados:
a) 8φ nx = ny = 3
b) 12φ nx = ny = 4
7. Conclusões
Para realização deste trabalho, foi necessário o aprendizado de um método de cálculo que não foi
ensinado na graduação (método das Zonas de Solicitação), análise minuciosa de Itens do Projeto de
Revisão da NB1 /2001 referentes a pilares e aplicação de conhecimentos da linguagem de
programação. Quanto a isso, posso considerar que tirei grande proveito, por ter absorvido bastante
conteúdo técnico referente à área de estruturas.
Quanto ao programa, considero ser um software de fácil utilização, sendo que os resultados obtidos são
confiáveis e respeitam as condições normativas. Além disso podemos encontrar uma solução mais
econômica ( se considerarmos somente o peso de aço como variável) apenas entrando com as
características dos matérias, dimensões do pilar e mais 1 clique do mouse. Este recurso é extremamente
útil para a busca da solução teoricamente mais econômica num tempo reduzido. Pode-se dizer que o
programa permite a escolha da melhor entre todas as soluções possíveis.
O programa permite o cálculo de As já determinado o tipo de arranjo. Desse modo, cada barra de aço
terá sua deformação perfeitamente definida, mesmo as barras que não pertencem à primeira ou última
camada de barras. Este método possibilita o cálculo de uma solução exata, ao contrário das
formulações do método de cálculo apresentado na graduação, onde se calcula As e As’ (1a e última
camada), e daí dobramos o maior dos dois valores.
Os procedimentos utilizados proporcionam resultados mais precisos. Podemos citar alguns motivos: o
fato de utilizarmos d’ real, ao contrário do que acontece ao utilizarmos tabelas. O diagrama de tensões
do concreto é o diagrama retangular-parabólico sem simplificação.
A fácil possibilidade de testar várias alternativas, oferece uma importante ferramenta ao calculista, que
pode optar pela solução que mais lhe convém. Vale lembrar que o cálculo e o detalhamento de cada
solução é praticamente instantâneo.
8. Referências Bibliográficas
1) Cálculo de Concreto Armado Vol. 1 - Lauro Modesto dos Santos
2) Cálculo de Concreto Armado Vol. 2 - Lauro Modesto dos Santos
3) Sub-rotinas básicas do dimensionamento de concreto armado - Lauro Modesto dos Santos
4) Projeto de Revisão da NB1 /2001.
5) Apostila de cálculo de concreto armado I e II - Roberto Carlos A. D. Pinto
9. Anexos
O Programa possui 8 formulários (Form1 até Form8) e 1 Módulo (Module1.bas) onde todas as
variáveis globais são declaradas.
O Programa completo está dividido em sub-rotinas, cada uma com sua função. A Sub-rotina principal,
que funciona como o ¨tronco¨ do programa, é a Sub Programa0, na qual são chamadas todas as outras
sub-rotinas necessárias.
Todas as sub-rotinas utilizadas no Form1 estão escritas nele mesmo, com exceção de algumas
pertencente ao Form4, Form9, Form10 e Form11. Existem ainda algumas outras sub-rotinas que
não estão no Form1, e que serão utilizadas apenas nos formulários onde estão escritas.
As sub-rotinas do Form10, são todas parecidas com algumas já escritas no Form1. A diferença é que
aquelas pertencentes ao Form9, não imprimem mensagens de erro e nem chamam outro formulário.
Estas sub-rotinas serão utilizadas no cálculo da melhor solução, que não deve ficar dando mensagens
de erro a cada tentativa.
O Form9 possui apenas 2 sub-rotinas para cálculo dos estribos suplementares. Ficaram separadas,
apenas por motivo de conforto (são muito grandes).
A seqüência de procedimentos do calculo direto pode ser seguida pela Sub Programa0 sendo
resumida da seguinte forma:
1º) Leitura dos dados de entrada - Sub Ler01.
2º) Calculo de algumas Constantes do concreto e da geometria da seção .
3º) Calculo das Constates relativas ao aço - Sub Aço04.
4º) Calculo da posição das barras de aço - Sub SArran1R03.
5º) Calculo do coeficiente adicional para majorar os esforços se a menor dimensão < 19cm – Sub
CeoficienteAdic25.
6º) Calculo de momento e esforço normal de cálculo.
7º) Calculo de NI crítico, NICRITInf e NICRITSup. - Sub SNiCrit06.
8º) Calculo das Constantes das delimitações das zonas AC, CE - Sub SConstZ10.
9º) Determinação das retas limites entre zonas AC, CE, e Zona crítica - SMiACEC13.
10º) Determinação da curva limite entre a Zona O e as demais - SMiZero14.
11º) Determinação da Zona - Sub Szona15.
12º) Cálculo de βx por processo iterativo - Sub SRO16.
13º) Cálculo da taxa de armadura teórica - Sub SRO16.
14º) Cálculo da armadura teórica unitária e total.
15º) Cálculo da armadura efetiva total e bitola da armadura. - Sub AsReal23
16º) Verificação se a bitola é maior que o máximo permitido. - Sub AsReal23
17º) Cálculo do diâmetro e espaçamento dos estribos. - Sub Estribo28
18º) Calcula e verifica se cob. Efetivo ≤ Nominal e calcula comprimento de estribos. - Sub
Cobrimento27
Sub Programa0()
10 Recalcular = "n"
20 Image1.Visible = False
25 If Check3.Value = 1 Then GoTo 50
30 Call Ler02
40 If ErroFck = "s" Then
41 Cls
43 Call Zera31
45 GoTo 1996
46 End If
50 Cls
100 Call Zera31
150 mErro = ""
200 If Recalcular = "s" Then GoTo 350
250 eRRo = "n"
350 '------------------------------ Lendo dados -----------------------------
400 Call dLinha01
490 '---------------------------- Cálculo de sigcd ------------------------
500 Fcd = Fck / GamaC
510 SigCd = 0.85 * Fcd
520 '---------------------------- Geometria --------------------------------
530 Ac = B * H
540 c2 = H / 2
550 BetaC2 = 0.5
560 '---------------------------- Aço ------------------------------------
570 Call Aço04
580 Delta = dLinha / H
583 Delta1 = dLinha / H
586 Delta2 = dLinha / H
590 Call SArran1R03
600 '---------------------------- Esforços adimensionais "NI" e "MI" ------
605 Call CeoficienteAdic25
607 If eRRo = "sPparede" Then GoTo 1996
610 NI = (CoefAdic * Nd) / (SigCd * Ac)
620 MI = (CoefAdic * Md) / (SigCd * Ac * H)
630 '---------------------------- Cálculo de Nicrítico ---------------------
640 Call SNiCrit06
650 '---------------------------- Limites entre Zonas A,C,E ----------------
660 Call SConstZ10
670 Call SMiACEC13
680 Call SMiZero14
690 '---------------------------- Determinação da Zona ---------------------
700 Call Szona15
710 '---------------------------- Cálculo de RO ----------------------------
720 If NI = 0 And MI = 0 Then GoTo 750
Sub dLinha01()
2000
2016 '------------------------------dLinha------
2017 If Check1.Value = 1 Then
2018 If Recalcular = "n" Then
2019 dLinha = 3
2020 End If
2021 GoTo 2240
2022 End If
2023 dLinha = Val(Text3.Text)
2025 If Val(Text3.Text) < dlMin Then
2030 Text3.Text = dlMin
2035 End If
2240 End Sub
Sub Ler02()
2010 Dim hMin, bMin, eMin, eYmin As Single
2015 Const dlMin = 0
2020 'dlinha minimo será 3 cm
2040 '------------------------------valores mínimos da base e altura-----
2043 eMin = 4 + 1 '4cm + 2 x fimínimo/2 = 10mm
2045 bMin = Int((eMin + 2 * 3)) 'arredonda pra cima
2050 If bMin < 12 Then
2055 bMin = 12
2060 End If
2065 hMin = Int((eMin + 2 * 3)) 'arredonda pra cima
2070 If hMin < 12 Then
2075 hMin = 12
2080 End If
2085 If Val(Text1.Text) < bMin Then
2090 Text1.Text = bMin
2095 End If
2100 If Val(Text2.Text) < hMin Then
2105 Text2.Text = hMin
2110 End If
2115 '------------------Determina o número máximo possível de barras em cada face-----
2120 nxMax = ((Val(Text1.Text) - 2 * Val(Text3.Text)) / eMin) + 1
2125 nxMax = Int(nxMax)
2130 If nxMax < 2 Then
2135 nxMax = 2
2140 End If
2145 nyMax = ((Val(Text2.Text) - 2 * Val(Text3.Text)) / eMin) + 1
2150 nyMax = Int(nyMax)
2155 If nyMax < 2 Then
2160 nyMax = 2
2165 End If
2170
2175 If Val(Text4.Text) > nxMax Then
2180 Text4.Text = nxMax
2185 End If
2190 If Val(Text4.Text) > 500 Then
2195 Text4.Text = 500
2200 End If
2205
2210 If Val(Text5.Text) > nyMax Then
2215 Text5.Text = nyMax
2220 End If
2225 If Val(Text5.Text) > 500 Then
2230 Text5.Text = 500
2235 End If
2315 nX = Val(Text4.Text)
2320 nY = Val(Text5.Text)
2255 L = Val(Text23.Text)
2260 B = Val(Text1.Text)
2265 H = Val(Text2.Text)
2310 '------------------------------------------
2325 Z = Val(Text6.Text)
2330 Borda = 20
2335 oX = Val(Shape4.Left) + Borda
2340 oY = Val(Shape4.Top) + Borda
2345 Dagregado = Val(Form8.Text2.Text)
2350 '---------------------------------Nd--------
2355 Unidade = Combo4.Text
2360 Call Unidades30
2365 Nd = Val(Text16.Text) * W
2370 '---------------------------------Md--------
2375 Unidade = Combo5.Text
2380 Call Unidades30
2385 Md = Val(Text17.Text) * W
2390 '---------------------------------Fck--------
2395 Unidade = Combo6.Text
2400 Call Unidades30
2405 Fck = Val(Text18.Text) * W
If Fck = 0 Then
mErro = "Fck deve ser diferente de zero"
mItem = ""
Form2.Label1.Caption = mErro
Form2.Label2.Caption = mItem
Form2.Show vbModal
End
End If
2406 If Fck < 200 Then
2407 If Recalcular = "s" Then GoTo 2414
2408 ErroFck = "s"
2409 mErro = "Fck = " & Fck / 10 & " , inferior a 20 Mpa (valor mínimo para pilares)."
2410 mItem = "Item 8.2.1 do Projeto de revisão da NB1 / 2001"
2411 Form2.Label1.Caption = mErro
2412 Form2.Label2.Caption = mItem
2413 Form2.Show vbModal
2414 End If
2415 If Fck > 500 Then
2416 If Recalcular = "s" Then GoTo 2424
2417 ErroFck = "s"
2418 mErro = "Fck = " & Fck / 10 & " , maior que 50 Mpa (valor máximo abrangido pela
norma)."
2419 mItem = "Item 8.2.1 do Projeto de revisão da NB1 / 2001"
2420 Form2.Label1.Caption = mErro
2421 Form2.Label2.Caption = mItem
2422 Form2.Show vbModal
2423 End If
2424 '---------------------------------Es--------
2425 Unidade = Combo7.Text
2426 Call Unidades30
2427 Es = Val(Text20.Text) * W
2428
2430 '-------------------------------------------
2435 GamaC = Val(Text21.Text)
2440 GamaS = Val(Text22.Text)
2445 Precisao = Val(Form8.Text1.Text)
2450 Call Form8.UltimoDiametroLongitudunal
2455 Call Form8.UltimoDiametroEstribo
End Sub
Serão calculados:
Ntot = número total de barras. (3012)
Nbar(i) = número de barras em cada camada. (3020 - 3030)
di(i) = distância do eixo de cada camada de barras até a borda superior. (3034 - 3038)
Beta(i) = di(i) / h. (3034 - 3038)
Sub SArran1R03()
3000
3012 Ntot = 2 * (nx + ny) - 4
3020 For i = 1 To ny
3022 If i = 1 Or i = ny Then GoTo 3028
3024 Nbar(i) = 2
3026 GoTo 3030
3028 Nbar(i) = nx
3030 Next i
3034 For i = 1 To ny
3036 di(i) = h - dLinha - (i - 1) * ((h - 2 * dLinha) / (ny - 1))
3037 Beta(i) = di(i) / h
3038 Next i
Serão calculados:
Sub Aço04()
4000
4001 'Cálculo de fyk
4002 If Combo1.Text = "Aço CA-25A" Or Combo1.Text = "Aço CA-25B" Then
4003 Fyk = 2500
4005 End If
4010 If Combo1.Text = "Aço CA-50A" Or Combo1.Text = "Aço CA-50B" Then
4011 Fyk = 5000
4013 End If
4014 If Combo1.Text = "Aço CA-60A" Or Combo1.Text = "Aço CA-60B" Then
4015 Fyk = 6000
4016 End If
4018 'Cálculo de fyd
4020 Fyd = Fyk / GamaS
4025 'Cálculo de eyd
4035 If Combo1.Text = "Aço CA-25B" Then GoTo 4050
4037 If Combo1.Text = "Aço CA-50B" Then GoTo 4050
4038 If Combo1.Text = "Aço CA-60B" Then GoTo 4050
4040 eYd = Fyd * 1000 / Es
4045 GoTo 4055
4050 eYd = Fyd * 1000 / Es + 2
4055 'Cálculo de Sig2,
4060 'Cálculo da tensão correspondente a um encurtamento de 2 o/oo
4065 eSd(i) = 2
4070 Call SigSd05
4075 Sig2 = SigSd(i)
4080 End Sub
Sub SigSd05
5000
5020 Dim AA, BB, CC As Single
5030 If Combo1.Text = "Aço CA-25B" Or Combo1.Text = "Aço CA-50B" Or Combo1.Text =
"Aço CA-60B" Then GoTo 5090
5040 If Abs(eSd(i)) >= eYd Then GoTo 5070
5050 SigSd(i) = Es * Abs(eSd(i)) / 1000
5060 GoTo 5190
5070 SigSd(i) = Fyd
5080 GoTo 5190
5090 If Abs(eSd(i)) > 0.7 * Fyd * 1000 / Es Then GoTo 5120
5100 SigSd(i) = Es * Abs(eSd(i)) / 1000
5110 GoTo 5190
5120 If Abs(eSd(i)) >= eYd Then GoTo 5180
5130 AA = 1 / (45 * Fyd ^ 2)
5140 BB = 1.4 / (45 * Fyd) - 1 / Es
5150 CC = 0.49 / 45 - Abs(eSd(i)) / 1000
5160 SigSd(i) = (BB + Sqr(BB ^ 2 - 4 * AA * CC)) / (2 * AA)
5170 GoTo 5190
5180 SigSd(i) = Fyd
5190 SigSd(i) = Sgn(eSd(i)) * SigSd(i)
5200 End Sub
Sub SNiCrit06()
4500
4505 Bx = 0.5
4510 Call SBxTeta07
4515 NICRIT = ETA
4521 Bx = (0.5 - Precisao)
4522 Call SBxTeta07
4523 NICRITInf = ETA
4524 Bx = (0.5 + Precisao)
4525 Call SBxTeta07
4526 NICRITSup = ETA
4530 End Sub
Segue a sub-rotina SBxTeta07.
4320 If Bx >= 3.5 * (1 - Delta) / 13.5 Then GoTo 4375 βxLim III-II. eq. (4.16)
4325 epcmil = 10 * Bx / (1 - Delta - Bx) eq. (4.11) válida para toda região III
4330 If Bx > 0 Then GoTo 4355 βxLim 1-2. eq. (4.15)
4335 Teta = (epcmil + 10) / (1 - Delta)
4340 ETA = 0 região III - domínio 1
4345 ETALIN = 0
4350 GoTo 4425
4355 Teta = epcmil / Bx
4360 Call SEta08 região III - domínio 2
4365 Call SEtalin09
4370 GoTo 4425
4375 If Bx > 1 Then GoTo 4405 βxLim II-I. eq. (4.17)
4380 epcmil = 3.5
4385 Teta = epcmil / Bx
4390 Call SEta08 região II
4395 Call SEtalin09
4400 GoTo 4425
4405 epcmil = 14 * Bx / (7 * Bx - 3)
4410 Teta = epcmil / Bx região I
4415 Call SEta08
4420 Call SEtalin09
4425 End Sub
6000
6020 If epcmil > (3.5 + Precisao) Then GoTo 6145 verifica o Pólo A de ruína. Se For
verdadeiro, a peça já está rompida
6025 If Teta <> 0 Then GoTo 6040 verifica se θ = 0 (compressão unif.)
6028 If epcmil > (2 + Precisao) Then GoTo 6145 compressão uniforme: se
6030 ETA = epcmil * (4 - epcmil) / 4 εc > 2 a peça está
6035 GoTo 6150 rompida, caso contrário,
η é calculado por (5.23)
6040 Bx = epcmil / Teta calcula βx por (5.11)
6045 If Bx > 0 Then GoTo 6055 βxLim 1-2. eq. (4.15)
6050 GoTo 6145 se βx < 0 em (6045) estamos no domínio 1
(concreto tracionado).
6055 If Bx > 1 Then GoTo 6075 βxLim II-I. eq. (4.17)
6060 If Bx >= 3.5 * (1 - Delta) / 13.5 Then GoTo 6080 βxLim III-II. eq. (4.16)
6065 If epcmil * (Bx - 1 + Delta) / Bx < (-1 * (10 + Precisao)) Then GoTo 6145
verifica se o Polo C é respeitado para região III. (4.13)
6070 GoTo 6080
6075 If epcmil * (Bx - 3 / 7) / Bx > (2 + Precisao) Then GoTo 6145 verifica se o Polo B é
respeitado para região II. (5.6)
com y=3h/7
6080 If epcmil > 2 Then GoTo 6095
6085 Caso = 1 Descobre se estamos no Caso 1 ou 2
6090 GoTo 6100
6095 Caso = 2
Sub SEtalin09()
6500
6520 If ETA <> 0 Then GoTo 6530
6525 GoTo 6570
6530 If Not (Abs(ETA - 1) <= Precisao Or Bx > 50) Then GoTo 6545
6535 ETALIN = ETA / 2
6540 GoTo 6580
6545 If Caso = 1 Then GoTo 6550
6546 If Caso = 2 Then GoTo 6560
6550 ETALIN = (epcmil ^ 3 * (8 - epcmil) - epc0 ^ 2 * (24 * epcmil - 16 * epc0 - 4 * epcmil *
epc0 + 3 * epc0 ^ 2)) / (48 * Teta ^ 2) (5.28)
6555 GoTo 6580
6560 ETALIN = (16 - 32 * epcmil + 24 * epcmil ^ 2 - epc0 ^ 2 * (24 * epcmil - 4 * epc0 *
(epcmil + 4) + 3 * epc0 ^ 2)) / (48 * Teta ^ 2) (5.30)
6565 GoTo 6580
6570 ETALIN = 0
6580 End Sub
Sub SConstZ10()
3101 ' Limite NiCritInf
3102 BxInf = (0.5 - Precisao)
3103 Bx = BxInf
3104 Call SEpSig11
3105 Call SBxTeta07
3106 Call SKapa12
3107 ETAInf = ETA
3108 ETALINInf = ETALIN
3109 KapInf = Kapa
3110 OmegInf = Omega
3111 ' Limite NiCritSup
3112 BxSup = (0.5 + Precisao)
3113 Bx = BxSup
3114 Call SEpSig11
3115 Call SBxTeta07
3116 Call SKapa12
3117 ETASup = ETA
3118 ETALINSup = ETALIN
3119 KapSup = Kapa
3120 OmegSup = Omega
3121 ' Limite AC
3122 BxAC = 1 - Delta
3123 Bx = BxAC
3124 Call SEpSig11
3125 Call SBxTeta07
3126 Call SKapa12
3127 ETAC = ETA
3128 ETALINAC = ETALIN
3129 KapAC = Kapa
3130 OmegAC = Omega
3131 ' Limite EC
3132 BxEC = Delta
3134 Bx = BxEC
3135 Call SEpSig11
3136 Call SBxTeta07
3138 Call SKapa12
3140 ETEC = ETA
3142 ETALINEC = ETALIN
3144 KapEC = Kapa
3145 OmegEC = Omega
3149 End Sub
Sub SEpSig11()
4100
4115
4120 If Bx > 3.5 * (1 - Delta) / 13.5 Then GoTo 4150 βxLim III-II. eq. (4.16)
4125 For i = 1 To ny
4130 eSd(i) = 10 * (Bx - Beta(i)) / (1 - Delta - Bx) calcula εsd(i) eq. (4.10)
4135 Call SigSd05 calcula σsd(i), f(εsd(i))
4140 Next i
4145 GoTo 4199
4147
4150 If Bx > 1 Then GoTo 4180 βxLim II-I. eq. (4.17)
4155 For i = 1 To ny
4160 eSd(i) = 3.5 * (Bx - Beta(i)) / Bx calcula εsd(i) eq. (4.9)
4165 Call SigSd05 calcula σsd(i), f(εsd(i))
4170 Next i
4175 GoTo 4199
4180 For i = 1 To ny
4185 eSd(i) = 14 * (Bx - Beta(i)) / (7 * Bx - 3) calcula εsd(i) eq. (4.8)
4190 Call SigSd05 calcula σsd(i), f(εsd(i))
4195 Next i
4199 End Sub
Sub SKapa12()
4900
4915 AK = 0 zera AK
4920 BK = 0 zera BK
4925 Call SEpSig11 calcula a tensão (σsd(i)) p/ cada camada de barras
4930 For i = 1 To ny
4935 AK = AK + Nbar(i) * Beta(i) * SigSd(i) / Ntot (6.10)
4940 BK = BK + Nbar(i) * SigSd(i) / Ntot (6.11)
4945 Next i
4950 If Abs(BK - 0) <= Precisao Then GoTo 4970 se BK ≅ 0 , vai para (4970)
4955 Kapa = AK / BK (6.12)
4960 Omega = ETALIN - Kapa * ETA (6.15)
4965 GoTo 4980
4970 BK = 0 BK → 0
4975 Kapa = 9.999999E+37 KAPA → ∞
4980 End Sub
Sub SMiACEC13()
3150
3160 'Momento limite MiInf
3165 MiInf = Abs((BetaC2 - KapInf) * NI - OmegInf)
3170 'Momento limite MiSup
3175 MiSup = Abs((BetaC2 - KapSup) * NI - OmegSup)
3180 'Momento limite MiAC
3185 MiAC = (BetaC2 - KapAC) * NI - OmegAC
3190 'Momento limite MiEC
3195 MiEC = (BetaC2 - KapEC) * NI - OmegEC
3199 End Sub
Sub SMiZero14()
3200
3225 If NI <= 0 Or NI >= 1 Then GoTo 3440
3230 Bx = 0
3235 ETA = 0
3240 ETALIN = 0
3245 PA = 0.1
3250 F = NI
3255 YY = F
3260 If Abs(F) <= Precisao Then GoTo 3450
3265 Bx = Bx + PA
3270 If Bx > (1 + Precisao) Then GoTo 3330
3275 Call SBxTeta07
3280 F = NI - ETA
3285 Y0 = F * YY
3290 YY = F
3295 If Y0 > 0 Then GoTo 3260
3300 Bx = Bx - PA
3305 Call SBxTeta07
3310 F = NI - ETA
3315 YY = F
3320 PA = PA / 10
3325 GoTo 3260
3330 ec1 = 0
3335 Bx = 1
3340 PA = 0.5
3345 Call SBxTeta07
3350 F = NI - ETA
3355 YY = F
3360 If Abs(F) <= Precisao Then GoTo 3450
3365 ec1 = ec1 + PA
3370 If ec1 >= 2 Then GoTo 3405
3375 Bx = (3 * ec1 - 14) / (7 * ec1 - 14)
3380 Call SBxTeta07
3385 F = NI - ETA
3390 Y0 = F * YY
3395 YY = F
3400 If Y0 > 0 Then GoTo 3360
3405 ec1 = ec1 - PA
A linha (3225) faz MiZero = 0 para qualquer valor de NI fora do intervalo 0 a 1, incluindo os dois
extremos.
(3230 - 3255): início da iteração. Zero é o valor inicial para as variáveis βx (Bx), η (ETA) e η’
(ETALIN). O passo PA de variação é 0,1 inicialmente. A função F = NI - ETA vale NI por enquanto,
pois ETA = 0. Cria-se uma função auxiliar YY = F para não perder o valor anterior de F , quando
houver mudança de valor.
(3260): no instante em que F = 0 ( a menos de uma tolerância), então MiZero pode ser calculado na
linha (3450), conforme (6.32).
(3265): dá-se a primeira variação a Bx
(3270): se Bx ≤ 1, a sub-rotina continua na linha seguinte.
(3260-3325): corpo principal da iteração. Dado Bx vai-se para a Sub SBxTeta07, que calcula ETA e
ETALIN para qualquer valor de Bx. Faz-se F = NI - ETA e multiplica-se esse valor atual de F pelo
valor anterior YY . O produto é guardado comoY0. Guarda-se de novo o valor o valor atual de F como
YY. Quando a função F é zerada, passa-se de um valor positivo para um negativo, ou vice-versa (o
produto Y0 será negativo). Enquanto Y0 se mantém positivo, aumenta-se o valor de Bx. Quando For
negativo, volta-se ao valor anterior Bx (3300), recalcula-se F m guarda-se o valor como YY (3315),
diminui-se o passo PA (3320), e volta-se a (3265), variando Bx e testando, mas antes com passagem na
(3260), para verificar se o valor F já é suficientemente pequeno.
(3270): Se Bx > 1, vai-se para (3330).
(3330 - 3355): prepara-se a iteração para trabalhar com ec1. O passo inicial é 0,5. Os valores iniciais
são ec1 = 0 e o correspondente Bx = 1. Calcula-se F e guarda-se como YY
(3360 - 3435): corpo principal da iteração, análogo ao trecho anterior (3260 - 3325). A única diferença
é trabalhar com ec1, calculando Bx em função de ec1. MiZero é calculado na linha 3450.
Zona A:
região 1 - 1 < NI e MI < MiAC
região 2 - ETAC < NI < 1 → MiZero < MI < MiAC
Zona E:
região 3 - NI < 0 → MI < MiEC
região 4 - 0 < NI < ETEC → MiZero < MI < MiEC
Zona O:
região 5 - 0 < NI < 1 → MI < MiZero
Zona C:
região 6 - 1 < NI → MiAC < MI
região 7 - ETAC < NI < 1 → MiAC < MI
região 8 - NI < 0 → MiEC < MI
região 9 - 0 < NI < ETEC → MiEC < MI
região 10 - ETEC < NI < ETAC → MiZero < MI
Sabido as 10 possibilidades que podem ocorrer, fica mais fácil de entender a cadeia de IF da Sub
Szona15.
Sub Szona15()
3500
3520 If NI > 1 Then GoTo 3615
3525 If NI < 0 Then GoTo 3580
3530 If MI <= MiZero Then GoTo 3565
3535 If NI <= ETAC And NI > ETEC Then GoTo 3550
3540 If NI > ETAC Then GoTo 3615
3545 If NI <= ETEC Then GoTo 3580
3550 Zona = "C"
3555 CaZon = 2
3560 GoTo 3645
3565 Zona = "O"
3570 CaZon = 4
3575 GoTo 3645
3580 If MI > MiEC Then GoTo 3600
3585 Zona = "E"
3590 CaZon = 1
3595 GoTo 3645
3600 Zona = "C"
3605 CaZon = 2
3610 GoTo 3645
3615 If MI > MiAC Then GoTo 3635
3620 Zona = "A"
3625 CaZon = 3
3630 GoTo 3645
3635 Zona = "C"
3640 CaZon = 2
3645 End Sub
Se NI > 1 (3520), será zona A ou C, conforme a comparação de MI com MiAC (3615-3640); regiões 1
ou 6.
Se 0 < NI (3525), será zona E ou C , conforme a comparação de MI com MiEC (3580-3610); regiões 3
ou 8.
Estando 0 < NI < 1 (3530), se Mi ≤ MiZero, teremos zona O. É a região 5
No mesmo intervalo (0 < NI < 1), já sabemos que Mi > MiZero, restam 5 faixas de pesquisa da figura
acima. Se o ETEC < NI < ETAC, só pode ser zona C (3550-3560); é a região 10. Se NI > ETAC
(3540),zona A ou C, aproveita-se o trecho(3615-3640); trechos 2 ou 7. Se NI ≤ ETEC (3545), zona E
ou C, aproveita-se o trecho(3580-3610); trechos 4 ou 9.
Sub SRO16 ()
5700
5715 If NI > 1 And MI = 0 Then GoTo 5975 compressão centrada
5720 If NI < 0 And MI = 0 Then GoTo 5959 tração centrada
5721 If CaZon = 1 Then GoTo 5730 'zona E
5722 If CaZon = 2 Then GoTo 5780 'zona C
5723 If CaZon = 3 Then GoTo 5864 'zona A pesquisa da zona
5724 If CaZon = 4 Then GoTo 5890 'zona O
5725 '--------------------------------------------------------------------- -------------
5730 BxInic = (10 * Delta - eYd * (1 - Delta)) / (10 - eYd) (6.33)
5735 Bx = BxInic
5740 BxFin = Delta (6.28) zona E
5750 PA = 0.1
5760 GoTo 5930
5775 '--------------------------------------------------------------------- -------------
5780 Call Critico21
5785 If NI > NICRIT Then GoTo 5815
5790 BxInic = Delta
5795 Bx = BxInic
5800 BxFin = (0.5 - Precisao)
5805 PA = 0.1
5810 GoTo 5900
5815 BxInic = (0.5 + Precisao + Precisao / 1000)
5820 Bx = BxInic zona C
5825 BxFin = 1 - Delta
5830 PA = 0.1
5835 GoTo 5900
5840 Bx = 0.5
5845 Call SBxTeta07
5850 Call SKapa12
5855 GoTo 5940
5856 '---------------------------------------------------------------------
5864 If Abs(MI) < 0.005 Then GoTo 5975
5866 ec1Inic = -3.5 * Delta / (1 - Delta)
5868 ec1 = ec1Inic
5870 ec1Fin = 2 zona A
5875 PA = 0.2
5880 Call SProc_BC17
5885 GoTo 5910
5890 '---------------------------------------------------------------------
5891 RO = 0
5895 GoTo 5990 zona O
5899 '---------------------------------------------------------------------
Se NI > MI (5715), isto é, no caso de compressão centrada com ρ ≠ 0, o problema é resolvido no trecho
(5975 – 5988). RO é calculado pela (6.17), com ETA = 1 e BK = Sig2 porque, na somatória de (6.11),
SigSd(i) é Constante e igual a Sig2.
No caso de tração centrada (5720), vale o trecho (5950 – 5970). RO é calculado pela (6.17) com ETA
= 0 e BK = -Fyd, valor Constante de SigSd(i).
O trecho (5721 – 5724) mostra que o problema será resolvido de acordo com a zona de solicitação.
Zona E (5730 – 5760): A pesquisa de Bx é realizada neste trecho. Bx varia de -∞até Delta. Entretanto
o valor inicial de Bx, BxInic, pode ser aquele da linha 5730, de acordo com (6.33). A execução do
programa vai para (5930), que utiliza a sub-rotina SProc_AK20 (explicada mais adiante), determina
Bx e daí ETA e ETALIN, calculando RO na linha (5942) pela (6.22).
Zona C (5780 – 5855): Primeiramente será chamada a Sub Critico21 para verificarmos se βx está
muito próximo a 0,5 (mais próximo do que a precisão). Se βx estiver entre (0,5 – precisão) e (0,5
+precisão), BX já é conhecido: vale 0,5 trecho (5840 – 5855). Determinam-se os valores de ETA,
ETALIN, AK, e calcula-se RO na linha (5942) pela (6.22). Se NI dado For maior ou menor que
NICRIT, mudam os valores inicial e final de Bx. Qualquer que seja o caso, Bx é procurado por
tentativas na sub-rotina SProc_BK19 , linha (5900), e RO é calculado conforme (6.17). Entretanto, se
na sub-rotina SProc_BK19 durante as iterações acontecer BK = 0, volta-se o valor anterior de BK e
continua-se a pesquisa com a sub-rotina SProc_AK20. Se a sub-rotina SProc_BK19, que corresponde
a solução (6.17) para RO, encontrar resposta com BK ≠ 0, mas o valor absoluto de AK For maior que o
de BK, opta-se também pela solução alternativa (6.22), por oferecer maior precisão.
Zona A ( 5864 – 5885): Se MI dado For muito próximo de zero, linha (5864), o valor do momento será
desprezado e o cálculo será feito pelo trecho (5975 – 5988), referente ao caso de compressão centrada.
A posição da L.N., na zona A será pesquisada no trecho (5866 – 5885). Como Bx varia de (1 - δ) até o
infinito, trabalha-se com ec1. Começa-se com um valor negativo para ec1, linha (5866), pois a zona A
engloba os domínios 4a e 5. O cálculo iterativo de ec1 é feito na na sub-rotina SProc_BC17, que será
explicada mais adiante. Determinado ec1, e daí Bx, ETA, ETALIN, BK, a taxa RO é calculada na
linha (5910) pela (6.17).
Zona O (5891 – 5895): Resultando RO = 0
Sub SProc_AK20
7200
7225 Call SBxTeta07 em função de βx calcula: εc, θ, η e η’
7230 Call SKapa12 em função de βx calcula: εsd, σsd, A, B, K e Ω
7235 CK = BetaC2 * NI - MI - ETALIN
7240 F = NI - ETA - CK / Kapa
7245 YY = F
7250 If Abs(F) <= Precisao Then GoTo 7350
7255 Bx = Bx + PA
7260 If Bx > BxFin Then GoTo 7300
7265 Call SBxTeta07
7270 Call SKapa12
7272 If Abs(BK) > Abs(AK) Then GoTo 7345
7275 CK = BetaC2 * NI - MI - ETALIN
7280 F = NI - ETA - CK / Kapa
7285 Y0 = F * YY
7290 YY = F
7295 If Y0 > 0 Then GoTo 7250
7300 Bx = Bx - PA
7305 Call SBxTeta07
7310 Call SKapa12
7315 CK = BetaC2 * NI - MI - ETALIN
7320 F = NI - ETA - CK / Kapa
7330 YY = F
7335 PA = PA / 10
7340 GoTo 7250
7345 Bx = Bx - PA
7346 Call SProc_BK19
7350 End Sub
Sub SProc_BK19
7400
7410 Call SBxTeta07
7415 Call SKapa12
7418 If BK = 0 Then GoTo 7499
7420 F = (BetaC2 - Kapa) * NI - MI - Omega
7425 YY = F
7430 If Abs(F) <= Precisao Then GoTo 7499
7435 Bx = Bx + PA
7438 If Bx > BxFin Then GoTo 7465
7440 Call SBxTeta07
7445 Call SKapa12
7448 If BK = 0 Then GoTo 7499
7450 F = (BetaC2 - Kapa) * NI - MI - Omega
7455 Y0 = YY * F
7456 YY = F
1457 If Abs(F) <= Precisao Then GoTo 7499 '
7460 If Y0 > 0 Then GoTo 7430
7465 Bx = Bx - PA
7470 Call SBxTeta07
7475 Call SKapa12
7480 F = (BetaC2 - Kapa) * NI - MI - Omega
7485 YY = F
7490 PA = PA / 10
7495 GoTo 7430
7499 End Sub
Sub SProc_BC17
7500
7505 Call SEc1Bx18
7510 Call SKapa12
7515 F = (BetaC2 - Kapa) * NI - MI - Omega
7520 YY = F
7525 If Abs(F) <= Precisao Then GoTo 7595
7530 ec1 = ec1 + PA
7532 If ec1 >= (2 + Precisao) Then GoTo 7560
7535 Call SEc1Bx18
7540 Call SKapa12
7545 F = (BetaC2 - Kapa) * NI - MI - Omega
7550 Y0 = YY * F
7552 YY = F
7555 If Y0 > 0 Then GoTo 7525
7560 ec1 = ec1 - PA
7565 Call SEc1Bx18
É interessante observar que a eq. (6.23) é a mesma (6.19b): basta desenvolver a (6.22), introduzindo a
expressão de C segundo (6.21). A razão de iterar ora com uma forma, ora com outra, reside no fato de a
(6.19b), no caso de BK = 0, operar com a diferença de dois valores que tendem para o infinito, o que
não acontece com (6.23).
A iteração com o objetivo de “zerar” a função F segue o mesmo procedimento já visto na sub-rotina
SMiZero14. Recordando, segue o seguinte roteiro:
- dado o valor inicial BxInic pela sub-rotina SRO16, calculam-se os valores ETA, ETALIN, AK,
BK, KAPA, OMEGA, através de sub-rotinas já conhecidas;
- calcula-se F e guardase o valor como YY;
- verifica-se se |F| ≤ Precisao;
- se |F| > Precisao, dá-se a Bx o acréscimo PA e recalcula-se F;
- efetua-se o produto Y0 de F com seu valor anterior YY, e , em seguida, guarda-se o último valor de
F como YY;
- Se o produto Y0 For positivo, após a verificação de ser |F| > Precisao, dá-se novo acréscimo PA à
variável Bx;
- Quando resultar Y0 ≤ 0, volta-se ao Bx anterior, recalcula-se F, guardando como YY, reduz-se o
passo PA de variação de Bx e repete-se a marcha de cálculo;
- A instrução End Sub é alcançada quando |F| ≤ Precisao;
As sub-rotinas comportam alguns desvios:
a) quando Bx superar o valor BxFin, ou quando ec1 ≥ (2 + Precisao) , linha (7260) ou (7438) ou
(7532), volta-se ao valor anterior do parâmetro e reduz-se o passo PA;
b) quando está na Sub SProc_BK19, e, em qualquer ponto da iteração, resulta BK = 0, linha (7418)
ou (7448), volta-se a SRO16, que remete à sub-rotina SProc_AK20, tendo antes o cuidado de
voltar ao Bx anterior;
c) se |BK| > |AK| na sub-rotina SProc_AK20, linha (7272), desvia-se o cálculo para a sub-rotina
SProc_BK19;
d) inversamente, se resultar |AK| > |BK| na sub-rotina SProc_BK19, a sub-rotina SRO16, na linha
(5905), mandará recalcular pela sub-rotina SProc_AK20;
Os desvios c) e d) têm por objetivo aumentar a precisão da resposta RO.
Sub Sec1Bx18
4200
4210 If ec1 <= 0 Then GoTo 4230
4215 Bx = (3 * ec1 - 14) / (7 * ec1 - 14) (4.6)
4220 epcmil = 14 * Bx / (7 * Bx - 3) (4.3)
4225 GoTo 4240
4230 Bx = 3.5 / (3.5 + Abs(ec1))
4235 epcmil = 3.5
4240 Teta = epcmil / Bx (4.20)
4245 Call SEta08
4250 Call SEtalin09
4249 End Sub
A incógnita Bx de um determinado problema pode corresponder ao domínio 4a, vizinho do domínio 5.
Em tal caso, ec1 será negativo e Bx será calculado na linha (4230), com a fórmula que é a recíproca de
(4.9), fazendo εsdi = εc1 e βi = 1.
Observe a fiura:
Nas iterações na zona C, é importante verificarmos se não estamos na região pintada de vermelho no
gráfico acima. Por esse motivo, a Sub SRO16 chama essa sub-rotina Sub Critico21 antes de
começar as iterações.
Se 0.5 – precisão < βx < 0.5 + precisão, corremos o risco de nunca conseguirmos chegar ao final da
iteração ( o que gera travamento do computador). Por exemplo:
precisão = 0,0001
0,5 – precisão = 0,4999
0,5 + precisão = 0,5001
A iteração pode ocorrer em duas regiões: δ < βx < 0,4999
0,5001 < βx < 1- δ
Se βx = 4,999945 ou 5,0000654 a iteração nunca acabaria, e o passo iria se reduzindo cada vez mais,
gerando um looping contínuo. Por isso tornamos βx = 0,5 se Constatarmos que ele se encontra na região
“crítica”.
Sub Bitolas22
7700
7701 Dfi(1) = 0.5
7702 Dfi(2) = 0.63 '(1/4")'
7703 Dfi(3) = 0.8 '(5/16")'
7704 Dfi(4) = 1 '(3/8")'
7705 Dfi(5) = 1.25 '(1/2")'
7706 Dfi(6) = 1.6 '(5/8")'
7707 Dfi(7) = 2 '(3/4")'
7708 Dfi(8) = 2.25 '(7/8")'
7709 Dfi(9) = 2.5 '(1")'
7710 Dfi(10) = 3.2 '(1 1/4")'
7711 Dfi(11) = 4
7712 Afi(1) = 0.2
7713 Afi(2) = 0.315
7714 Afi(3) = 0.5
7715 Afi(4) = 0.8
7716 Afi(5) = 1.25
7717 Afi(6) = 2
7718 Afi(7) = 3.15
7719 Afi(8) = 4
7720 Afi(9) = 5
7721 Afi(10) = 8
7722 Afi(11) = 12.5
7723 Pfi(1) = 0.16
7724 Pfi(2) = 0.25
7725 Pfi(3) = 0.4
7726 Pfi(4) = 0.63
7727 Pfi(5) = 1
7728 Pfi(6) = 1.6
7729 Pfi(7) = 2.5
7730 Pfi(8) = 3.15
7731 Pfi(9) = 4
7732 Pfi(10) = 6.3
7733 Pfi(11) = 10
7735 End Sub
Descobre a barra longitudinal que será utilizada. Será a bitola com área imediatamente superior à área
teórica, calculada anteriormente pelo programa.
Verifica se a bitola deveria ser superior a 40mm (valor da bitola máxima existente comercialmente), e
caso For, será mostrada uma mensagem de erro e o programa será finalizado. Também verifica se a
bitola respeita o diâmetro máximo e mínimo (item18.4.2.1. do Projeto de revisão da NB1 / 2001)
Sub AsReal23
7731 If AsUnit > Afi(11) Then GoTo 7763
7735 For i = 4 To 11
7740 If Afi(i) - AsUnit >= 0 Then GoTo 7750
7745 Next i
7750 AsUnitR = Afi(i)
7755 AsTotR = Afi(i) * Ntot
7757 fI = Dfi(i)
7758 PesFi = Pfi(i)
7760 GoTo 7785
7763 eRRo = "s"
7764 mErro = "Bitola deveria ser maior do que 40mm (maior dimensão existente no
comércio)."
7765 mItem = ""
7766 AsUnitR = 0
7770 AsTotR = 0
7773 Form2.Label1.Caption = mErro
7774 Form2.Label2.Caption = mItem
7775 Form2.Show vbModal
7780 GoTo 7800
7785 If fI > MenorDim / 8 Then
7790 eRRo = "s"
7791 mErro = "Diâmetro da barra longitudinal excede o máximo permitido = 1/8 da menor
dimensão." & " No caso " & fI & "cm > " & MenorDim / 8 & "cm"
7792 mItem = "Item 18.4.2.1 do Projeto de revisão da NB1 / 2001"
7795 Form2.Label1.Caption = mErro
7796 Form2.Label2.Caption = mItem
7797 Form2.Show vbModal
7798 End If
7800 End Sub
Verifica se as taxas máximas e mínimas de armadura estão sendo respeitadas (Itens 17.3.4.3.1 e
17.3.4.3.2 do Projeto de revisão da NB1 / 2001).
Sub AsMinMax24 ()
7801 AsMin = (0.15 * Nd) / Fyd
7805 If AsMin <= (0.004 * Ac) Then
7810 AsMin = 0.004 * Ac
7815 End If
7817 AsunitMin = AsMin / Ntot
7820 AsMax = (0.08 * Ac) / 2 'fora da região de emendas
7830 If AsTotR < AsMin Then
7840 Call Taxaminima45
7880 End If
7881 If AsTotR > AsMax Then
7882 eRRo = "s"
7883 mErro = "A taxa de armadura excede o máximo permitido = 8,0%Ac em reigião de
emendas. No caso temos " & Format(AsTotR, "##0.00") & "cm2 que é maior que " &
Format(AsMax, "##0.00") & "cm2 correspondente a 4%Ac fora da região de emendas"
7884 mItem = "Item 17.3.4.3.2 do Projeto de revisão da NB1 / 2001"
7885 Form2.Label1.Caption = mErro
7886 Form2.Label2.Caption = mItem
7887 Form2.Show vbModal
7888 End If
7890 End Sub
Sub CeoeficienteAdic25 ()
If B < H Then
MenorDim = B
If 5 * B < H Then
eRRo = "sPparede"
mErro = "Maior dimensão da seção transversal = " & H & "cm, excedeu 5 vezes a menor
dimensão = " & 5 * B & ". O pilar deve ser tratado como pilar parede."
mItem = "Item 18.4.1 do Projeto de revisão da NB1 / 2001"
Form2.Label1.Caption = mErro
Form2.Label2.Caption = mItem
Form2.Show vbModal
End If
Else
MenorDim = H
If 5 * H < B Then
eRRo = "sPparede"
mErro = "Maior dimensão da seção transversal = " & B & "cm, excedeu 5 vezes a menor
dimensão = " & 5 * H & ". O pilar deve ser tratado como pilar parede."
mItem = "Item 18.4.1 do Projeto de revisão da NB1 / 2001"
Form2.Label1.Caption = mErro
Form2.Label2.Caption = mItem
Form2.Show vbModal
End If
End If
CoefAdic = 1
If MenorDim < 19 Then
CoefAdic = 1.05
End If
If MenorDim < 18 Then
CoefAdic = 1.1
End If
If MenorDim < 17 Then
CoefAdic = 1.15
End If
If MenorDim < 16 Then
CoefAdic = 1.2
End If
If MenorDim < 15 Then
CoefAdic = 1.25
End If
If MenorDim < 14 Then
CoefAdic = 1.3
End If
If MenorDim < 13 Then
CoefAdic = 1.35
End If
End Sub
Sub Espaçamento26 ()
7900
7905 eXFace = ((B - 2 * dLinha) / (nX - 1)) - fI
7910 eYFace = ((H - 2 * dLinha) / (nY - 1)) - fI
7915 eXEixo = ((B - 2 * dLinha) / (nX - 1))
7920 eYEixo = ((H - 2 * dLinha) / (nY - 1))
7925 Eixo = ""
7930 mErro = ""
7935 '---------------------------------------------------------------------
7940 If (4 * fI) < (1.2 * Dagregado) * 2 Then
7950 SMin = (1.2 * Dagregado) * 2
7955 mErro2 = " 2,4 vezes o diâmetro máximo do agragado, fora das emendas"
7960 Else
7970 SMin = (4 * fI)
7975 mErro2 = " 4 vezes o diâmetro da barra longitudinal"
7980 End If
7985 '--------------------------------------------
7990 If eXFace < SMin Then
7995 eRRo = "s"
8000 mErro = "Espaçamento livre entre barras horizontais = " & Int(eXFace * 10 + 0.5) / 10 &
"cm menor que " & mErro2 & " = " & Int(SMin * 100 + 0.5) / 100 & "cm"
8010 mItem = "Item 18.4.2.2 do Projeto de revisão da NB1 / 2001"
8020 Form2.Label1.Caption = mErro
8030 Form2.Label2.Caption = mItem
8040 Form2.Show vbModal
8050 End If
8055 '--------------
8060 If eYFace < SMin Then
8070 eRRo = "s"
8080 mErro = "Espaçamento livre entre barras verticais = " & Int(eYFace * 10 + 0.5) / 10 &
"cm menor que " & mErro2 & " = " & Int(SMin * 100 + 0.5) / 100 & "cm"
8090 mItem = "Item 18.4.2.2 do Projeto de revisão da NB1 / 2001"
8100 Form2.Label1.Caption = mErro
8110 Form2.Label2.Caption = mItem
8120 Form2.Show vbModal
8130 End If
8140 '---------------------------------------------------------------------
8150 If (2 * MenorDim) >= 40 Then
8160 SMax = 40
Sub Cobrimento27
8450 If Recalcular = "s" Then GoTo 8525
8460 Call CobNominal40
'-------------------------------------------------------------------------
8525 Recalcular = "n"
'------------------------calcula CobEf. >= Cnom---------------------------
8526 Cobrimento = dLinha - fIestribo - fI / 2
8527 If Int(cN * 10000 + 0.5) / 10000 > Int(Cobrimento * 10000 + 0.5) / 10000 Then
8528 If Check1.Value = 1 Then
8529 Call Form4.CalcdLinha
8530 Else
8531 Form4.Command2.Caption = "&1 - Utilizar cobrimento mínimo"
8532 Form4.Label1.Caption = "Cobrimento efetivo = " & Cobrimento & " cm menor que o
combrimento nominal = " & cN & " cm."
8533 Form4.Label3.Caption = "Item 7.4.7 "
8534 Form4.Show vbModal
8535 End If
8536 End If
'------------------------calcula Cob. das barras longitudinais-----------
8537 If Int((Cobrimento + fIestribo) * 10000 + 0.5) / 10000 < Int(fI * 10000 + 0.5) / 10000 Then
8538 If Check1.Value = 1 Then
8539 Call Form4.CalcdLinhaFi
8540 Else
8541 Form4.Command2.Caption = "&1 - Utilizar cobrimento mínimo"
8542 Form4.Label1.Caption = "Cobrimento mínimo das barras longitudinais = " &
Cobrimento + fIestribo & " cm menor que o mínimo = " & fI & " cm (diâmetro da barra
logitudinal)"
8543 Form4.Label3.Caption = "Item 7.4.7.5"
8544 Form4.Show vbModal
8545 End If
8546 End If
'-------------------------------------------------------------------------
8547 EstribX = B - 2 * Cobrimento
8550 EstribY = H - 2 * Cobrimento
8600 Call Ganchos41
8675 CompEst = 2 * (EstribX + EstribY) + EstribAnc
8680 Qest = Int(1 + (L / SEst))
End Sub
Sub Estribo28 ()
8531 '-------------------------------------Estribo Pré definido--------
8535 If Option3.Value = True Then
8537 If Combo3.Text = "5 mm" Then
8539 FiPreEstrib = 0.5
8540 PesoPreEstrib = 0.16
K=1
8541 End If
8543 If Combo3.Text = "6.3 mm (1/4'')" Then
8545 FiPreEstrib = 0.63
8546 PesoPreEstrib = 0.25
K=2
8547 End If
8549 If Combo3.Text = "8 mm (5/16'')" Then
8551 FiPreEstrib = 0.8
8552 PesoPreEstrib = 0.4
K=3
8553 End If
8554 If Combo3.Text = "10 mm (3/8'')" Then
8556 FiPreEstrib = 1
8557 PesoPreEstrib = 0.63
K=4
8558 End If
8560 End If
8600 '----------------------------------Fi Estribo teórico mínimo------------
8605 If fI / 4 > 0.5 Then GoTo 8630
8610 fIeMin = 0.5
8620 GoTo 8640
8630 fIeMin = fI / 4
8635 '----------------------------------Fi Estribo real mínimo -------
8640 For i = 1 To UltimoFiEstribo
8650 If Dfi(i) >= fIeMin Then GoTo 8670
8660 Next i
8670 fIestribo = Dfi(i)
8675 PesoEstribo = Pfi(i)
8680 j = i
8690 '----------------------------------Espaçamento mínmo------------
8740 If MenorDim < 20 Then
8750 SEst = Int(MenorDim)
8760 Else
8770 SEst = 20
8775 End If
8777 '----------Espaçamento mínmo pra CA-25------------
8780 If Combo1.Text = "Aço CA-25A" Or Combo1.Text = "Aço CA-25B" Then
8790 If SEst > Int(24 * fI) Then
'------armadura longitudinal
Pes = Ntot * PesFi * L / 100
'------estribos
CompSuplementarH = 0
For i = 1 To nX
If EstribSup(i) = "s" Then
CompSuplementarH = CompSuplementarH + EstribY + EstribAncSupl
End If
Next i
CompSuplementarV = 0
For i = 1 To nY
If EstribSupV(i) = "s" Then
CompSuplementarV = CompSuplementarV + EstribX + EstribAncSupl
End If
Next i
CompEstTotal = CompEst + CompSuplementarH + CompSuplementarV
Pes = Pes + (Qest * CompEstTotal / 100 * PesoEstribo)
End Sub
Sub Ganchos41()
If Option7(0).Value = True Then
If 2 * 5 * fIestribo > 10 Then
EstribAnc = 2 * 5 * fIestribo
Else
EstribAnc = 10
End If
Else
If 2 * 10 * fIestribo > 14 Then
EstribAnc = 2 * 10 * fIestribo
Else
EstribAnc = 14
End If
End If
If 2 * 5 * fIestribo > 10 Then
EstribAncSupl = 2 * 5 * fIestribo
Else
EstribAncSupl = 10
End If
End Sub
Sub CobNominal40()
8451 If Option1.Value = True Then
8452 dC = 1
8453 Else
8454 dC = 0.5
8455 End If
8456 If Combo2.Text = "I" Then
8460 cN = 1.5 + dC
8465 End If
8470 If Combo2.Text = "II" Then
8475 cN = 2 + dC
8480 End If
8485 If Combo2.Text = "III" Then
8490 cN = 3 + dC
8495 End If
8500 If Combo2.Text = "IV" Then
8505 cN = 4 + dC
8510 End If
' -----------------------------------calcula dmax <= 1.2 Cnom-------------
8511 If Dagregado > 1.2 * cN Then
8512 If Check1.Value = 1 Then
Sub GuardaValores42()
Combinaçao = Combinaçao + 1
PesoOpçao(Combinaçao) = Pes
BarrasX(Combinaçao) = nX
BarrasY(Combinaçao) = nY
EeStribos(Combinaçao) = eEe
FiEscolhido(Combinaçao) = fI
End Sub
9.32 - Sub EscolheValores43
Ordena os valores armazenados na sub-rotina “GuardaValores42” em função do peso de aço
calculado.
Sub EscolheValores43()
MelhorPeso(1) = PesoOpçao(1)
MelhorX(1) = BarrasX(1)
MelhorY(1) = BarrasY(1)
MelhorEstribo(1) = EeStribos(1)
MelhorFi(1) = FiEscolhido(1)
If Combinaçao = 1 Then GoTo 20
K=2
Do
For j = 1 To K - 1
If PesoOpçao(K) < MelhorPeso(j) Then
For i = 1 To K - j
MelhorPeso(K + 1 - i) = MelhorPeso(K - i)
MelhorX(K + 1 - i) = MelhorX(K - i)
MelhorY(K + 1 - i) = MelhorY(K - i)
MelhorEstribo(K + 1 - i) = MelhorEstribo(K - i)
MelhorFi(K + 1 - i) = MelhorFi(K - i)
Next i
MelhorPeso(j) = PesoOpçao(K)
MelhorX(j) = BarrasX(K)
MelhorY(j) = BarrasY(K)
MelhorEstribo(j) = EeStribos(K)
MelhorFi(j) = FiEscolhido(K)
GoTo 10
End If
Next j
MelhorPeso(K) = PesoOpçao(K)
MelhorX(K) = BarrasX(K)
MelhorY(K) = BarrasY(K)
MelhorEstribo(K) = EeStribos(K)
MelhorFi(K) = FiEscolhido(K)
10 K = K + 1
If K > Combinaçao Then GoTo 20
Loop
20
End Sub
Sub ValoresnoForm1144()
If Combinaçao > 40 Then
Combinaçao = 40
End If
For i = 1 To Combinaçao
If MelhorPeso(i) < 9E+30 Then
Form11.Text4(i - 1) = Format(MelhorPeso(i), "##0.00")
Form11.Text1(i - 1) = MelhorX(i)
Form11.Text2(i - 1) = MelhorY(i)
Form11.Text5(i - 1) = 10 * MelhorFi(i)
If MelhorEstribo(i) = 1 Then
Form11.Text3(i - 1) = "5"
End If
If MelhorEstribo(i) = 2 Then
Form11.Text3(i - 1) = "6.3"
End If
If MelhorEstribo(i) = 3 Then
Form11.Text3(i - 1) = "8"
End If
If MelhorEstribo(i) = 4 Then
Form11.Text3(i - 1) = "10"
End If
Form11.Option1(i - 1).Visible = True
End If
Next i
End Sub
Sub Taxaminima45()
10 AsTot = AsMin
20 AsUnit = AsTot / Ntot
30 If AsUnit > Afi(11) Then GoTo 130
40 For i = 4 To 11
50 If Afi(i) - AsUnit >= 0 Then GoTo 70
60 Next i
70 AsUnitR = Afi(i)
80 AsTotR = Afi(i) * Ntot
90 fI = Dfi(i)
95 PesFi = Pfi(i)
100 mErro = "voltar"
105 eRRo = "n"
110 Form3.Hide
120 GoTo 200
130 eRRo = "s"
140 mErro = "Taxa de armadura mínima exige barras aço com bitola maior do que o
existente"
150 Form2.Label1.Caption = mErro
160 Form2.Show vbModal
200 End sub
Detalhamento dos estribos a direita do pilar Detalhamento dos estribos a baixo do pilar
O programa define automaticamente qual opção utilizar. Será utilizado a opção que proporcione maior
escala sem que parte do desenho ou dos textos fiquem fora da área do desenho.
Sub Desenha35 ()
2500 Cls
Redesenha = "n"
'-------------------------------------dá valores aos labels---------------------------
Label9(0).Caption = B '& "cm"
Label9(1).Caption = H '& "cm"
Label9(3).Caption = EstribX '& "cm"
Label9(4).Caption = EstribY '& "cm"
Label9(6).Caption = Format(Ntot, "##0")
Label9(8).Caption = Format(10 * fI, "##0.0")
Label9(10).Caption = Format((L / 100), "##0.00") & "m"
Label9(12).Caption = Format(10 * fIestribo, "##0.0")
Label9(14).Caption = Format(SEst, "##0") & "cm"
Label9(16).Caption = Format(CompEst, "##0") & "cm"
Label9(18).Caption = Qest
2501 '--------------------------------descobre o valor para zoom automático-------------
2502 Esp1 = 5
2503 Esp2 = 20
2504 Esp3 = 25
2505 Esp4 = 20
2506 Zx = (Val(Shape4.Width) - (2 * Borda + 2 * Esp1 + Val(Label9(1).Width) + Esp2 +
Val(Label9(4).Width))) / (B + EstribX)
End If
If Detalhamento = "horizontal" Then
Label9(3).Left = oX + Z * B + Esp1 + Val(Label9(1).Width) + Esp2 + Z * EstribX / 2 -
Val(Label9(3).Width) / 2
Label9(3).Top = oY + Z * (H - (dLinha - fI / 2 - fIestribo)) + Esp1
Label9(4).Left = oX + Z * B + Esp1 + Val(Label9(1).Width) + Esp2 + Z * EstribX + Esp1
Label9(4).Top = Val(Label9(1).Top)
Label9(5).Left = oX + Z * B + Esp1 + Val(Label9(1).Width) + Esp2
Label9(5).Top = Val(Label9(3).Top) + Esp3
Else
Label9(3).Left = Val(Label9(0).Left)
Label9(3).Top = oY + Z * H + Esp1 + Val(Label9(0).Height) + Esp3 + Val(Label9(2).Height) +
Esp4 + Z * EstribY + Esp1
Label9(4).Left = Val(Label9(1).Left) - Z * (fI + fIestribo) + Esp1
Label9(4).Top = oY + Z * H + Esp1 + Val(Label9(0).Height) + Esp3 + Val(Label9(2).Height) +
Esp4 + Z * EstribY / 2 - Val(Label9(4).Height) / 2
Label9(5).Left = oX + Z * (dLinha - fI / 2 - fIestribo)
Label9(5).Top = Val(Label9(3).Top) + Esp3
End If
For i = 11 To 14
Label9(i).Top = Val(Label9(5).Top)
Next i
For i = 15 To 18
Label9(i).Top = Val(Label9(5).Top) + 1.2 * Val(Label9(5).Height)
Next i
Label9(11).Left = Val(Label9(5).Left) + Val(Label9(5).Width) + 5
Label9(12).Left = Val(Label9(11).Left) + Val(Label9(11).Width)
Label9(13).Left = Val(Label9(12).Left) + Val(Label9(12).Width) + 4
Label9(14).Left = Val(Label9(13).Left) + Val(Label9(13).Width)
Label9(15).Left = Val(Label9(5).Left)
Label9(16).Left = Val(Label9(15).Left) + Val(Label9(15).Width)
Label9(17).Left = Val(Label9(16).Left) + Val(Label9(16).Width) + 10
Label9(18).Left = Val(Label9(17).Left) + Val(Label9(17).Width)
'-------------------------------------desenha seção-------------------------------------
Line (oX, oY)-(Z * B + oX, oY)
Line (Z * B + oX, oY)-(Z * B + oX, Z * H + oY)
Line (Z * B + oX, Z * H + oY)-(oX, Z * H + oY)
Line (oX, Z * H + oY)-(oX, oY)
'-------------------------------------Descobre coordenadas das barras'------------------
For j = 1 To nY
For i = 1 To nX
X(i, j) = dLinha + (i - 1) * ((B - 2 * dLinha) / (nX - 1))
Y(i, j) = dLinha + (j - 1) * ((H - 2 * dLinha) / (nY - 1))
Next i
Next j
'-------------------------------------Desenha barras------------------------------------
j=1
For i = 1 To nX
Circle (oX + Z * X(i, j), oY + Z * Y(i, j)), Z * fI / 2
Next i
For j = 2 To (nY - 1)
i=1
Circle (oX + Z * X(i, j), oY + Z * Y(i, j)), Z * fI / 2
i = nX
Circle (oX + Z * X(i, j), oY + Z * Y(i, j)), Z * fI / 2
Next j
j = nY
For i = 1 To nX
Circle (oX + Z * X(i, j), oY + Z * Y(i, j)), Z * fI / 2
Next i
'-------------------------------------desenha estribos----------------------------------
Line (oX + Z * (dLinha - fI / 2), oY + Z * (dLinha - fI / 2))-(oX + Z * (B - (dLinha - fI / 2)), oY + Z
* (dLinha - fI / 2)), QBColor(8)
Line (oX + Z * (B - (dLinha - fI / 2)), oY + Z * (dLinha - fI / 2))-(oX + Z * (B - (dLinha - fI / 2)), oY
+ Z * (H - (dLinha - fI / 2))), QBColor(8)
Line (oX + Z * (B - (dLinha - fI / 2)), oY + Z * (H - (dLinha - fI / 2)))-(oX + Z * (dLinha - fI / 2),
oY + Z * (H - (dLinha - fI / 2))), QBColor(8)
Line (oX + Z * (dLinha - fI / 2), oY + Z * (H - (dLinha - fI / 2)))-(oX + Z * (dLinha - fI / 2), oY + Z
* (dLinha - fI / 2)), QBColor(8)
End Sub
Sub DesenhaSup36()
If Zy >= Zx Then
' estribos vertivais
For i = 1 To nX
If EstribSup(i) = "s" Then
Line (oX + Z * X(i, 1) + Z * fI / 2, oY + Z * Y(i, 1))-(oX + Z * X(i, nY) - Z * fI / 2, oY + Z * Y(i,
nY)), QBColor(8)
Line (oX + Z * X(i, 1) + Z * fI / 2, oY + Z * H + Esp1 + Val(Label9(0).Height) + Esp3 +
Val(Label9(2).Height) + Esp4)-(oX + Z * X(i, nY) - Z * fI / 2, oY + Z * H + Esp1 +
Val(Label9(0).Height) + Esp3 + Val(Label9(2).Height) + Esp4 + Z * EstribY)
Line (oX + Z * X(i, 1) - Z * (fI / 2 + fIestribo), oY + Z * H + Esp1 + Val(Label9(0).Height) +
Esp3 + Val(Label9(2).Height) + Esp4)-(oX + Z * X(i, 1) - Z * (fI / 2 + fIestribo), oY + Z * H +
Esp1 + Val(Label9(0).Height) + Esp3 + Val(Label9(2).Height) + Esp4 + Z * EstribAncSupl / 2)
'gancho
Line (oX + Z * X(i, nY) + Z * (fI / 2 + fIestribo), oY + Z * H + Esp1 + Val(Label9(0).Height)
+ Esp3 + Val(Label9(2).Height) + Esp4 + Z * EstribY)-(oX + Z * X(i, nY) + Z * (fI / 2 +
End If
Next j
End If
'-------------------------------------------------
If N3 = 0 And N4 <> 0 Then
Label9(19).Caption = "N3= " & N4 & " x "
Label9(20).Caption = CompSuplementarV / N4 & "cm"
If Zx > Zy Then
Label9(19).Top = Label9(15).Top + Label9(15).Height + Esp1
Label9(20).Top = Label9(19).Top
Label9(19).Left = Label9(15).Left
Label9(20).Left = Label9(19).Left + Label9(19).Width
Else
Label9(19).Top = Label9(5).Top
Label9(20).Top = Label9(19).Top
Label9(19).Left = Label9(18).Left + Label9(18).Width + Esp3
Label9(20).Left = Label9(19).Left + Label9(19).Width
End If
Label9(19).Visible = True
Label9(20).Visible = True
End If
'-------------------------------------------------
If N3 <> 0 And N4 = o Then
'---força---
If Unidade = "Kgf" Then
W=1
End If
If Unidade = "Tf" Then
W = 1000
End If
If Unidade = "N" Then
W = 0.1
End If
If Unidade = "KN" Then
W = 100
End If
'---Momento---
If Unidade = "Kgf.mm" Then
W = 0.1
End If
If Unidade = "Kgf.cm" Then
W=1
End If
If Unidade = "Kgf.m" Then
W = 100
End If
If Unidade = "Tf.mm" Then
W = 100
End If
If Unidade = "Tf.cm" Then
W = 1000
End If
If Unidade = "Tf.m" Then
W = 100000
End If
If Unidade = "N.mm" Then
W = 0.01
End If
If Unidade = "N.cm" Then
W = 0.1
End If
If Unidade = "N.m" Then
W = 10
End If
If Unidade = "KN.mm" Then
W = 10
End If
If Unidade = "KN.cm" Then
W = 100
End If
If Unidade = "KN.m" Then
W = 10000
End If
'---Tensão---
If Unidade = "Kgf/mm2" Then
W = 100
End If
If Unidade = "Kgf/cm2" Then
W=1
End If
If Unidade = "Kgf/m2" Then
W = 0.0001
End If
If Unidade = "Tf/mm2" Then
W = 100000
End If
If Unidade = "Tf/cm2" Then
W = 1000
End If
If Unidade = "Tf/m2" Then
W = 0.1
End If
If Unidade = "N/mm2" Then
W = 10
End If
If Unidade = "N/cm2" Then
W = 0.1
End If
If Unidade = "N/m2" Then
W = 0.00001
End If
If Unidade = "KN/mm2" Then
W = 10000
End If
If Unidade = "KN/cm2" Then
W = 100
End If
If Unidade = "KN/m2" Then
W = 0.01
End If
If Unidade = "MPa" Then
W = 10
Sub Zera31()
Text9.Text = ""
Text10.Text = ""
Text11.Text = ""
Text12.Text = ""
Text13.Text = ""
Text14.Text = ""
Text19.Text = ""
Text25.Text = ""
Text26.Text = ""
Text27.Text = ""
Text28.Text = ""
Text29.Text = ""
Text30.Text = ""
Text30.BackColor = vbWhite
For i = 0 To 7
1992 Text7(i).BackColor = vbWhite
1993 Text7(i).ForeColor = &H80000013
Next i
For i = 0 To 22
Label9(i).Visible = False
Next i
ErroFck = "n"
If nãoZerar = "" Then
For i = 1 To 40
Form11.Text1(i - 1).Text = ""
Form11.Text2(i - 1).Text = ""
Form11.Text3(i - 1).Text = ""
Form11.Text4(i - 1).Text = ""
Form11.Text5(i - 1).Text = ""
Form11.Option1(i - 1).Visible = False
Next i
Command9.Visible = False
Command10.Visible = False
Command11.Visible = False
Text8.Visible = False
End If
Pes = 0
End Sub
Sub Grava32()
Open Arquivo For Output As #1
Print #1, Text23.Text 'Dimensões 1
Print #1, Text1.Text 'Dimensões 2
Print #1, Text2.Text 'Dimensões 3
Print #1, Text31.Text 'Dimensões 4
Print #1, Text32.Text 'Dimensões 5
Print #1, Text4.Text 'Arranjo 6
Print #1, Text5.Text 'Arranjo 7
Print #1, Text3.Text 'Arranjo 8
Print #1, Text3.Enabled 'Arranjo 9
Print #1, Command17.Enabled 'Arranjo 10
Print #1, Check1.Value 'Arranjo 11
Print #1, Text16.Text 'Esforços 12
Print #1, Text17.Text 'Esforços 13
Print #1, Text18.Text 'Esforços 14
Print #1, Text20.Text 'Esforços 15
Print #1, Text21.Text 'Esforços 16
Print #1, Text22.Text 'Esforços 17
Print #1, Combo4.Text 'Esforços 18
Print #1, Combo5.Text 'Esforços 19
Print #1, Combo6.Text 'Esforços 20
Print #1, Combo1.Text 'Esforços 21
Print #1, Combo7.Text 'Esforços 22
Print #1, Option3.Value 'Estribos 23
Print #1, Check5.Value 'Outros 24
Print #1, Option5.Value 'Estribos 25
Print #1, Option6.Value 'Estribos 26
Print #1, Combo3.Text 'Estribos 27
Print #1, Option7(0).Value 'Estribos 28
Print #1, Option7(1).Value 'Estribos 29
Print #1, Combo2.Text 'Cobrimento 30
Print #1, Option1.Value 'Cobrimento 31
Print #1, Option2.Value 'Cobrimento 32
Print #1, Form8.Text2.Text 'Outros 33
Print #1, Form8.Text1.Text 'Outros 34
Print #1, Text6.Text 'Escala 35
Print #1, Text6.Enabled 'Escala 36
Print #1, Check2.Value 'Escala 37
Print #1, Form8.Combo1 'Outros38
Print #1, Form8.Combo3 'Outros39
Close #1
End Sub
Sub Carrega33()
Dim Valor(1 To 100) As String
Call Zera31
Open Arquivo For Input As #1
For i = 1 To 39
Input #1, Valor(i)
Next i
Close #1
End If
Option3.Value = True
Check3.Value = 0
nãoZerar = "s"
Call Programa0
nãoZerar = ""
Command9.Visible = True
Command10.Visible = True
Command11.Visible = True
Text8.Visible = True
GoTo 2100
1996 Cls
1997 Call Zera31
1998 Text30.BackColor = vbRed
1999 Text30.Text = "erro"
2100
End Sub
Private Sub Command11_Click()
Command9.Visible = False
Command10.Visible = False
Command11.Visible = False
Text8.Visible = False
1969 Form11.Option1(0).Value = True
1970 Form11.Show vbModal
Check3.Value = 0
nãoZerar = "s"
Call Programa0
nãoZerar = ""
End Sub
Private Sub Command9_Click()
Call Form11.BotaoMais
Call Form11.Escolhe
Check3.Value = 0
nãoZerar = "s"
Call Programa0
nãoZerar = ""
End Sub
Private Sub Command10_Click()
Call Form11.BotaoMenos
Call Form11.Escolhe
Check3.Value = 0
nãoZerar = "s"
Call Programa0
nãoZerar = ""
End Sub
Private Sub Command2_Click() '''''''''''''''''++++
Text4.Text = Text4.Text + 1
Call Programa0
End Sub
Call Carrega33
End Sub
Private Sub Label29_Click()
If Check1.Value = 0 Then
Check1.Value = 1
Else
Check1.Value = 0
End If
End Sub
Private Sub mnuItemAbout_Click()
Form6.Show vbModal
End Sub
Private Sub mnuItemCarregpadr_Click()
Arquivo = "C:\Documents And Settings\Beto fodão\Meus documentos\TCC
2\Programa\Padrão.txt"
Call Carrega33
End Sub
Private Sub mnuItemExit_Click()
End
End Sub
Private Sub mnuItemload_Click()
CommonDialog1.Filter = "Text files (*.TXT)|*.TXT"
CommonDialog1.ShowSave
Arquivo = CommonDialog1.FileName
If Arquivo <> "" Then
Call Carrega33
Close #1
End If
Call Programa0
End Sub
Private Sub mnuItemPrecisao_Click()
Form8.Show vbModal
End Sub
Private Sub mnuItemSave_Click()
CommonDialog1.Filter = "Text files (*.TXT)|*.TXT"
CommonDialog1.ShowSave
Arquivo = CommonDialog1.FileName
If Arquivo <> "" Then
Call Grava32
Close #1
End If
End Sub
Private Sub mnuItemSaveDefault_Click()
Arquivo = "C:\Documents And Settings\Beto fodão\Meus documentos\TCC
2\Programa\Padrão.txt"
Call Grava32
End Sub
Private Sub Option1_Click()
Option2.Value = False
End Sub
End Sub
Private Sub Option3_Click()
Check5.Enabled = True
End Sub
Private Sub Option5_Click()
Check5.Enabled = True
End Sub
Private Sub Option6_Click()
Check5.Value = 0
Check5.Enabled = False
End Sub
Beep
End If
End Sub
Private Sub text3_KeyPress(KeyAscii As Integer)
Const vbKeyDecPt = 46
'Permite apenas digitar: números, ponto(.), backspace
If (KeyAscii >= vbKey0 And KeyAscii <= vbKey9) Or KeyAscii = vbKeyDecPt Or KeyAscii =
vbKeyBack Then
Exit Sub
Else
KeyAscii = 0
Beep
End If
End Sub
Private Sub text4_KeyPress(KeyAscii As Integer)
'Permite apenas digitar: números, backspace
If (KeyAscii >= vbKey0 And KeyAscii <= vbKey9) Or KeyAscii = vbKeyBack Then
Exit Sub
Else
KeyAscii = 0
Beep
End If
End Sub
Private Sub text5_KeyPress(KeyAscii As Integer)
'Permite apenas digitar: números, backspace
If (KeyAscii >= vbKey0 And KeyAscii <= vbKey9) Or KeyAscii = vbKeyBack Then
Exit Sub
Else
KeyAscii = 0
Beep
End If
End Sub
Private Sub text6_KeyPress(KeyAscii As Integer)
Const vbKeyDecPt = 46
'Permite apenas digitar: números, ponto(.), backspace
If (KeyAscii >= vbKey0 And KeyAscii <= vbKey9) Or KeyAscii = vbKeyDecPt Or KeyAscii =
vbKeyBack Then
Exit Sub
Else
KeyAscii = 0
Beep
End If
End Sub
Private Sub text8_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub text9_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub text10_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub text11_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub text12_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub text13_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub text14_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub text19_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub text25_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub text26_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub text27_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub text28_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub text29_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub text30_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub combo1_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub combo2_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub combo3_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub combo4_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub combo5_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub combo6_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub combo7_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Beep
End Sub
Private Sub text15_KeyPress(KeyAscii As Integer)
Const vbKeyDecPt = 46
'Permite apenas digitar: números, ponto(.), backspace
If (KeyAscii >= vbKey0 And KeyAscii <= vbKey9) Or KeyAscii = vbKeyDecPt Or KeyAscii =
vbKeyBack Then
Exit Sub
Else
KeyAscii = 0
Beep
End If
End Sub
Private Sub text17_KeyPress(KeyAscii As Integer)
Const vbKeyDecPt = 46
'Permite apenas digitar: números, ponto(.), backspace
If (KeyAscii >= vbKey0 And KeyAscii <= vbKey9) Or KeyAscii = vbKeyDecPt Or KeyAscii =
vbKeyBack Then
Exit Sub
Else
KeyAscii = 0
Beep
End If
End Sub
Private Sub text18_KeyPress(KeyAscii As Integer)
Const vbKeyDecPt = 46
'Permite apenas digitar: números, ponto(.), backspace
If (KeyAscii >= vbKey0 And KeyAscii <= vbKey9) Or KeyAscii = vbKeyDecPt Or KeyAscii =
vbKeyBack Then
Exit Sub
Else
KeyAscii = 0
Beep
End If
End Sub
Private Sub text20_KeyPress(KeyAscii As Integer)
Const vbKeyDecPt = 46
'Permite apenas digitar: números, ponto(.), backspace
If (KeyAscii >= vbKey0 And KeyAscii <= vbKey9) Or KeyAscii = vbKeyDecPt Or KeyAscii =
vbKeyBack Then
Exit Sub
Else
KeyAscii = 0
Beep
End If
End Sub
Private Sub text16_KeyPress(KeyAscii As Integer)
Const vbKeyDecPt = 46
Const vbKeymenos = 45
'Permite apenas digitar: números, ponto(.), backspace, menos(-)
If (KeyAscii >= vbKey0 And KeyAscii <= vbKey9) Or KeyAscii = vbKeyDecPt Or KeyAscii =
vbKeyBack Or KeyAscii = vbKeymenos Then
Exit Sub
Else
KeyAscii = 0
Beep
End If
End Sub
Private Sub text21_KeyPress(KeyAscii As Integer)
Const vbKeyDecPt = 46
'Permite apenas digitar: números, ponto(.), backspace
If (KeyAscii >= vbKey0 And KeyAscii <= vbKey9) Or KeyAscii = vbKeyDecPt Or KeyAscii =
vbKeyBack Then
Exit Sub
Else
KeyAscii = 0
Beep
End If
End Sub
Private Sub text22_KeyPress(KeyAscii As Integer)
Const vbKeyDecPt = 46
'Permite apenas digitar: números, ponto(.), backspace
If (KeyAscii >= vbKey0 And KeyAscii <= vbKey9) Or KeyAscii = vbKeyDecPt Or KeyAscii =
vbKeyBack Then
Exit Sub
Else
KeyAscii = 0
Beep
End If
End Sub
Private Sub text23_KeyPress(KeyAscii As Integer)
Const vbKeyDecPt = 46
'Permite apenas digitar: números, ponto(.), backspace
If (KeyAscii >= vbKey0 And KeyAscii <= vbKey9) Or KeyAscii = vbKeyDecPt Or KeyAscii =
vbKeyBack Then
Exit Sub
Else
KeyAscii = 0
Beep
End If
End Sub
Private Sub text31_KeyPress(KeyAscii As Integer)
'Permite apenas digitar: números, backspace
If (KeyAscii >= vbKey0 And KeyAscii <= vbKey9) Or KeyAscii = vbKeyBack Then
Exit Sub
Else
KeyAscii = 0
Beep
End If
End Sub
Private Sub text32_KeyPress(KeyAscii As Integer)
'Permite apenas digitar: números, backspace
If (KeyAscii >= vbKey0 And KeyAscii <= vbKey9) Or KeyAscii = vbKeyBack Then
Exit Sub
Else
KeyAscii = 0
Beep
End If
End Sub
eRRo = "s"
Form4.Hide
End Sub
cN = Int(cN) + 0.5
Else
cN = Int(cN) + 1
End If
10 End Sub
9.45 - Código do Form5
Formulário para estimar d’ f( cobrimento nominal, bitola do estribo e barras longitudinais).
É aberto quando apertamos no botão “estimar d´” do Form1
Sub Calcula()
Dim E, B, C As Double
B = 16
End If
If Combo2.Text = "20 mm (3/4'')" Then
B = 20
End If
If Combo2.Text = "22,5 mm (7/8'')" Then
B = 22.5
End If
If Combo2.Text = "25 mm (1'')" Then
B = 25
End If
If Combo2.Text = "32 mm (1 1/4'')" Then
B = 32
End If
If Combo2.Text = "40 mm" Then
B = 40
End If
C = Val(Text1.Text)
DEst = C + E + B / 2
Text2.Text = DEst
End Sub
Sub Aceita()
DEst = DEst / 10
Form1.Text3.Text = Int(DEst) & "." & Int((((DEst - Int(DEst)) * 1000000) * 10000 + 0.5) /
10000)
Form5.Hide
End Sub
Public K As Double
Private Sub Command1_Click()
10 For i = 1 To j
20 If Option1(-1 + i).Value = True Then
25 i = (j + 1) - i
30 GoTo 70 'fim
40 End If
50 Next i
60 Call MelhorSolução
70 K = i
80 Call zera
90 i = K
100 Form7.Hide
End Sub
Sub MelhorSolução()
60 For i = 1 To j - 1
70 Quant(i) = Afi(i) / SEst2(i)
80 Next i
82 Quant(j) = Afi(j) / SEst
85 QuantMenor = Quant(j)
90 For i = 1 To j - 1
100 If Quant(i) < QuantMenor Then
110 QuantMenor = Quant(i)
120 End If
130 Next i
140 For i = 1 To j
150 If QuantMenor = Quant(i) Then GoTo 200
160 Next i
200 End Sub
Sub zera()
For i = 0 To 3
Option1(i).Caption = ""
Option1(i).Enabled = False
Next i
End Sub
9.48 - Código do Form8
Formulário para atribuirmos o valor da precisão, diâmetro máximo do agregado graúdoe diâmetro
máximo dos estribos e barras longitudinais. É aberto quando abrimos o menu “precisão>valor da
precisão”.
End If
If Form8.Combo3.Text = "20 mm (3/4'')" Then
UltimoFi = 7
End If
If Form8.Combo3.Text = "22.5 mm (7/8'')" Then
UltimoFi = 8
End If
If Form8.Combo3.Text = "25 mm (1'')" Then
UltimoFi = 9
End If
If Form8.Combo3.Text = "32 mm (1 1/4'')" Then
UltimoFi = 10
End If
If Form8.Combo3.Text = "40 mm" Then
UltimoFi = 11
End If
End Sub
Sub UltimoDiametroEstribo()
If Form8.Combo1.Text = "5 mm" Then
UltimoFiEstribo = 1
End If
If Form8.Combo1.Text = "6.3 mm (1/4'')" Then
UltimoFiEstribo = 2
End If
If Form8.Combo1.Text = "8 mm (5/16'')" Then
UltimoFiEstribo = 3
End If
If Form8.Combo1.Text = "10 mm (3/8'')" Then
UltimoFiEstribo = 4
End If
End Sub
11750 Do
11760 If j >= nX Then GoTo 11800
11770 EstribSup(j) = "s"
11780 j=j+5
11790 Loop
11800 End If
11810 '------------------------------------------------
11950 If nX - 10 * (Int(nX / 10)) = 6 Then
11960 EstribSup(Barmeio) = "n"
11980 j = Barmeio - 2
11990 Do
12000 If j <= 1 Then GoTo 12040
12010 EstribSup(j) = "s"
12020 j=j-5
12030 Loop
12040 j = Barmeio + 3
12050 Do
12060 If j >= nX Then GoTo 12100
12070 EstribSup(j) = "s"
12080 j=j+5
12090 Loop
12100 End If
12110 '------------------------------------------------
12150 If nX - 10 * (Int(nX / 10)) = 7 Then
12160 EstribSup(Barmeio) = "s"
12180 j = Barmeio - 3
12190 Do
12200 If j <= 1 Then GoTo 12240
12210 EstribSup(j) = "s"
12220 j=j-5
12230 Loop
12240 j = Barmeio + 3
12250 Do
12260 If j >= nX Then GoTo 12300
12270 EstribSup(j) = "s"
12280 j=j+5
12290 Loop
12300 End If
12310 '------------------------------------------------
12350 If nX - 10 * (Int(nX / 10)) = 8 Then
12360 EstribSup(Barmeio) = "s"
12380 j = Barmeio - 3
12390 Do
12400 If j <= 1 Then GoTo 12440
12410 EstribSup(j) = "s"
12420 j=j-5
12430 Loop
12440 j = Barmeio + 4
12450 Do
12460 If j >= nX Then GoTo 12500
End Sub
Sub EstriboSuplementarV30()
eYEixo = ((H - 2 * dLinha) / (nY - 1))
9300 For i = 1 To nY
9301 EstribSupV(i) = ""
9302 Next i
9310 BarmeioV = Int(nY / 2 + 0.5)
9410 DistSuplV = eYEixo
9420 If DistSuplV > 20 * fIestribo Then
9430 For i = 2 To nY - 1
9440 EstribSupV(i) = "s"
9450 Next i
9455 GoTo 13000
9460 End If
'-----------------------------------------
9470 If 2 * DistSuplV > 20 * fIestribo And nY >= 5 Then
9480 If nY - 6 * (Int(nY / 6)) = 0 Then
9490 EstribSupV(BarmeioV) = "s"
9500 j = BarmeioV - 2
9510 Do
9520 If j <= 1 Then GoTo 9560
10060 j = BarmeioV + 1
10070 Do
10080 If j >= nY Then GoTo 10120
10090 EstribSupV(j) = "s"
10100 j=j+3
10110 Loop
10120 End If
10130 '------------------------------------------------
10140 If nY - 6 * (Int(nY / 6)) = 4 Then
10150 j = BarmeioV - 1
10160 Do
10170 If j <= 1 Then GoTo 10210
10180 EstribSupV(j) = "s"
10190 j=j-3
10200 Loop
10210 j = BarmeioV + 2
10220 Do
10230 If j >= nY Then GoTo 10270
10240 EstribSupV(j) = "s"
10250 j=j+3
10260 Loop
10270 End If
10280 '------------------------------------------------
10290 If nY - 6 * (Int(nY / 6)) = 5 Then
10300 EstribSupV(BarmeioV) = "s"
10310 j = BarmeioV - 2
10320 Do
10330 If j <= 1 Then GoTo 10370
10340 EstribSupV(j) = "s"
10350 j=j-3
10360 Loop
10370 j = BarmeioV + 2
10380 Do
10390 If j >= nY Then GoTo 10430
10400 EstribSupV(j) = "s"
10410 j=j+3
10420 Loop
10430 End If
10435 GoTo 13000
10440 End If
'------------------------------------------------------------
10500 If nY >= 7 Then
10510 If nY - 10 * (Int(nY / 10)) = 0 Then
10520 EstribSupV(BarmeioV) = "s"
10530 j = BarmeioV - 4
10540 Do
10550 If j <= 1 Then GoTo 10590
10560 EstribSupV(j) = "s"
10570 j=j-5
10580 Loop
10590 j = BarmeioV + 5
10600 Do
10610 If j >= nY Then GoTo 10650
10620 EstribSupV(j) = "s"
10630 j=j+5
10640 Loop
10650 End If
10660 '------------------------------------------------
10670 If nY - 10 * (Int(nY / 10)) = 1 Then
10680 EstribSupV(BarmeioV) = "s"
10690 j = BarmeioV - 5
10700 Do
10710 If j <= 1 Then GoTo 10750
10720 EstribSupV(j) = "s"
10730 j=j-5
10740 Loop
10750 j = BarmeioV + 5
10760 Do
10770 If j >= nY Then GoTo 10810
10780 EstribSupV(j) = "s"
10790 j=j+5
10800 Loop
10810 End If
10820 '------------------------------------------------
10870 If nY - 10 * (Int(nY / 10)) = 2 Then
10880 EstribSupV(BarmeioV) = "n"
10890 j = BarmeioV - 2
10895 If j <= 1 Then GoTo 10950
10896 EstribSupV(j) = "s"
10897 j = BarmeioV - 5
10900 Do
10910 If j <= 1 Then GoTo 10950
10920 EstribSupV(j) = "s"
10930 j=j-5
10940 Loop
10950 j = BarmeioV + 2
10955 If j >= nY Then GoTo 11110
10956 EstribSupV(j) = "s"
10957 j = BarmeioV + 6
10960 Do
10970 If j >= nY Then GoTo 11110
10980 EstribSupV(j) = "s"
10990 j=j+5
11100 Loop
11110 End If
11120 '------------------------------------------------
11130 If nY - 10 * (Int(nY / 10)) = 3 Then
11140 EstribSupV(BarmeioV) = "n"
11150 j = BarmeioV - 2
11160 If j <= 1 Then GoTo 11240
11790 Loop
11800 End If
11810 '------------------------------------------------
11950 If nY - 10 * (Int(nY / 10)) = 6 Then
11960 EstribSupV(BarmeioV) = "n"
11980 j = BarmeioV - 2
11990 Do
12000 If j <= 1 Then GoTo 12040
12010 EstribSupV(j) = "s"
12020 j=j-5
12030 Loop
12040 j = BarmeioV + 3
12050 Do
12060 If j >= nY Then GoTo 12100
12070 EstribSupV(j) = "s"
12080 j=j+5
12090 Loop
12100 End If
12110 '------------------------------------------------
12150 If nY - 10 * (Int(nY / 10)) = 7 Then
12160 EstribSupV(BarmeioV) = "s"
12180 j = BarmeioV - 3
12190 Do
12200 If j <= 1 Then GoTo 12240
12210 EstribSupV(j) = "s"
12220 j=j-5
12230 Loop
12240 j = BarmeioV + 3
12250 Do
12260 If j >= nY Then GoTo 12300
12270 EstribSupV(j) = "s"
12280 j=j+5
12290 Loop
12300 End If
12310 '------------------------------------------------
12350 If nY - 10 * (Int(nY / 10)) = 8 Then
12360 EstribSupV(BarmeioV) = "s"
12380 j = BarmeioV - 3
12390 Do
12400 If j <= 1 Then GoTo 12440
12410 EstribSupV(j) = "s"
12420 j=j-5
12430 Loop
12440 j = BarmeioV + 4
12450 Do
12460 If j >= nY Then GoTo 12500
12470 EstribSupV(j) = "s"
12480 j=j+5
12490 Loop
12500 End If
12510 '------------------------------------------------
12650 If nY - 10 * (Int(nY / 10)) = 9 Then
12660 EstribSupV(BarmeioV) = "s"
12680 j = BarmeioV - 4
12690 Do
12700 If j <= 1 Then GoTo 12740
12710 EstribSupV(j) = "s"
12720 j=j-5
12730 Loop
12740 j = BarmeioV + 4
12750 Do
12760 If j >= nY Then GoTo 12800
12770 EstribSupV(j) = "s"
12780 j=j+5
12790 Loop
12800 End If
12810 '------------------------------------------------
12820 End If
13000 N4 = 0
For i = 1 To nY
If EstribSupV(i) = "s" Then
N4 = N4 + 1
End If
Next i
End Sub
7900
7905 eXFace = ((B - 2 * dLinha) / (nX - 1)) - fI
7910 eYFace = ((H - 2 * dLinha) / (nY - 1)) - fI
7915 eXEixo = ((B - 2 * dLinha) / (nX - 1))
7920 eYEixo = ((H - 2 * dLinha) / (nY - 1))
7925 Eixo = ""
7930 mErro = ""
7935 '---------------------------------------------------------------------
7940 If (4 * fI) < (1.2 * Dagregado) * 2 Then
7950 SMin = (1.2 * Dagregado) * 2
7955 mErro2 = " 2,4 vezes o diâmetro máximo do agragado, fora das emendas"
7960 Else
7970 SMin = (4 * fI)
7975 mErro2 = " 4 vezes o diâmetro da barra longitudinal"
7980 End If
7985 '--------------------------------------------
7990 If eXFace < SMin Then
7995 eRRo = "s"
8050 End If
8055 '--------------
End Sub
Sub Estribo28() '--- Fiestribo,espaçamento mínimo entre estribos
If Form1.Check5.Value = 1 Then
8877 '----------Espaçamento mínmo pra estribos com menor dimenção que o limite---
8880 For i = 1 To 3
8890 SEst2(i) = Int(9000 * ((10 * Dfi(i)) ^ 2 / (10 * fI)) / (Fyk / 10))
8895 Next i
9010 '--------------------escolha 4 solução com mesmo tipo de aço----------
For i = 1 To 3
If i = eEe Then
If SEst2(i) > SEst Then
SEst2(i) = SEst
End If
SEst = SEst2(i)
End If
Next i
GoTo 9050
End If
For i = 1 To 40
If Option1(i - 1).Value = True Then
CombEscolhida = i
Form1.Text4.Text = Val(Text1(i - 1).Text)
Form1.Text5.Text = Val(Text2(i - 1).Text)
Form1.Option3.Value = True
If Text3(i - 1).Text = "5" Then
Form1.Combo3.Text = "5 mm"
End If
If Text3(i - 1).Text = "6.3" Then
Form1.Combo3.Text = "6.3 mm (1/4'')"
End If
If Text3(i - 1).Text = "8" Then
Form1.Combo3.Text = "8 mm (5/16'')"
End If
If Text3(i - 1).Text = "10" Then
Form1.Combo3.Text = "10 mm (3/8'')"
End If
End If
Next i
Form1.Command9.Visible = True
Form1.Command10.Visible = True
Form1.Command11.Visible = True
Form1.Text8.Visible = True
Form11.Hide
End Sub
Sub BotaoMais()
If Option1(Combinaçao - 1).Value = True Then GoTo 100
For i = 1 To 40
If Form11.Option1(i - 1).Value = True Then
Form11.Option1(i - 1).Value = False
Form11.Option1(i - 1 + 1).Value = True
GoTo 100
End If
Next i
100 End Sub
Sub BotaoMenos()
If Option1(0).Value = True Then GoTo 100
For i = 1 To 40
If Form11.Option1(i - 1).Value = True Then
Form11.Option1(i - 1).Value = False
Form11.Option1(i - 1 - 1).Value = True
GoTo 100
End If
Next i
100 End Sub
9.52 - Module1.bas
Global B, H, L, dLinha As Double
Global Md, Nd, Fck, Fyk, Es, Fcd, Fyd As Double
Global c2, SigCd, SigYd, Ac, eYd, Sig2 As Double
Global GamaC, GamaS, FykMpa As Double
Global Precisao As Double
Global i, j, K, q As Integer
Global Asi(1 To 500) As Double
Global nX, nY As Integer
Global Ntot As Integer
Global AsTot, AsUnit, AsTotTeor, AsUnitTeor As Double
Global X(1 To 500, 1 To 500), Y(1 To 500, 1 To 500) As Double
Global di(1 To 500), Nbar(1 To 500) As Double
Global eSd(0 To 501), SigSd(0 To 501) As Double
Global Z, oX, oY As Double
Global BetaC2, Delta, Delta1, Delta2 As Double
Global Beta(1 To 500) As Double
Global NI, MI, Bx, Teta, epcmil, epc0, ETA, ETALIN, NICRIT, NICRITInf, NICRITSup As
Double
Global Caso As Integer
Global BxAC, ETAC, ETALINAC, KapAC, OmegAC, BxEC, ETEC, ETALINEC, KapEC,
OmegEC As Double
Global BxInf, ETAInf, ETALINInf, KapInf, OmegInf, BxSup, ETASup, ETALINSup, KapSup,
OmegSup As Double
Global AK, BK, CK, Kapa, Omega As Double
Global MiAC, MiEC, MiInf, MiSup As Double
Global PA, F, YY, Y0, ec1, MiZero As Double
Global Zona As String
Global CaZon As Integer
Global RO As Double
Global BxInic, BxFin, ec1Inic, ec1Fin As Double
Global Afi(1 To 11), Dfi(1 To 11), Pfi(1 To 11) As Double
Global eRRo, mErro, mItem As String
Global AsTotR, AsUnitR, fI, MenorDim As Double
Global AsMin, AsMax, AsunitMin As Double
Global Dagregado As Double
Global CoefAdic As Double
Global eXFace, eYFace, eXEixo, eYEixo, SMin, SMax As Double
Global mErro2 As String
Global dC, cN, Cobrimento, EstribX, EstribY, CompEst, EstribAnc As Double
Global Recalcular As String
Global fIeMin, fIestribo, SEst, DEst, QuantMenor, FiPreEstrib, Qest As Double
Global SEst2(1 To 3), Quant(1 To 4) As Double
Global Unidade As String
Global W As Double
Global Sobra
Global Esp1, Esp2, Esp3, Esp4, Borda, Zx, Zxy, Zy, Zyx As Double
Global Detalhamento, Redesenha As String
Global Arquivo As String
Global ErroFck As String
Global EstribSup(1 To 500) As String
Global Barmeio As Integer
Global DistSupl, CompSuplementarH As Double
Global EstribSupV(1 To 500) As String
Global BarmeioV As Integer
Global DistSuplV, CompSuplementarV As Double
Global nyMax, nxMax As Integer
Global PesFi, Pes As Double
Global PesoEstribo, PesoPreEstrib, EstribAncSupl, eEe, CompEstTotal As Double
Global Combinaçao, CombEscolhida As Integer
Global PesoOpçao(1 To 1000000), BarrasX(1 To 1000000), BarrasY(1 To 1000000),
EeStribos(1 To 1000000) As Double
Global MelhorPeso(1 To 1000000), MelhorX(1 To 1000000), MelhorY(1 To 1000000),
MelhorEstribo(1 To 10000000) As Double
Global nãoZerar As String
Global UltimoFi, UltimoFiEstribo As Single
Global N3, N4 As Single
Global FiEscolhido(1 To 1000000), MelhorFi(1 To 1000000) As Double
Global fiEstriboRec, PesoEstriboRec, SEstRec As Double
estribos)
FiPreEstrib Diâmetro do estribo pré definido
Qest Quantidade total de estribos
SEst2(1 To 3) Espaçamento entre estribos
Unidade Unidade de força, momento ou tensão
W Variável que multiplica esforços em função da unidade
Sobra % de sobra de aço (100.(AsTotR - AsTotTeor) / AsTotR)
Variáveis relativas ao detalhamento
Esp1 Espaçamento entre detalhamento do pilar e texto à direita
Esp2 Espaçamento entre texto e detalhamento dos estribos à direita
Esp3 Espaçamento entre detalhamento do pilar e texto à baixo
Esp4 Espaçamento entre texto e detalhamento dos estribos à baixo
Borda Borda do detalhamento
Zx Zoom calculado para detalhamento lado a lado
Zxy Zoom calculado para detalhamento lado a lado
Zy Zoom calculado para detalhamento em cima e abaixo
Zyx Zoom calculado para detalhamento em cima e abaixo
Variável que define se o detalhamento será lado a lado ou cima
Detalhamento e baixo
N3 relativas ao detalhamento
N4 relativas ao detalhamento
Redesenha Variável auxiliar
Variável para gerar arquivo
Arquivo Caminho do arquivo ao qual se queira gravar dados
Variáveis para cálculo do estribo suplementar
EstribSup(1 to 500) variável auxiliar
Barmeio barra do meio na direção X
DistSupl variável auxiliar
CompSuplementarH comprimento total dos estribos suplementares na direção X
EstribSupV(1 To
500) variável auxiliar
BarmeioV barra do meio na direção Y
DistSuplV variável auxiliar
CompSuplementarV comprimento total dos estribos suplementares na direção Y
Variáveis para cálculo da melhor solução
nyMax número máximo possível de barras na direção Y
nxMax número máximo possível de barras na direção X
eEe variável auxiliar para looping das 4 opções de uso de estribos
Combinaçao número de combinações possíveis que respeitam a norma
CombEscolhida opção que será detalhada
armazena valores do peso total de aço para uma determinada
PesoOpçao(1 To 1000000) opção
BarrasX(1 To 1000000) armazena valores das barras horizontais para uma determinada
opção
armazena valores das barras verticais para uma determinada
BarrasY(1 To 1000000) opção
EeStribos(1 To 1000000) armazena qual o estribo de uma determinada opção
MelhorPeso(1 To 1000000) valores ordenados do peso total de cada opção
valores ordenados do número de barras horizontais de cada
MelhorX(1 To 1000000) opção
MelhorY(1 To 1000000) valores ordenados do número de barras vertical de cada opção
MelhorEstribo(1 To 10000000) valores ordenados dos estribos
FiEscolhido(1 To
1000000) armazena valores do diâmetro das barras longitudinais
MelhorFi(1 To
1000000) valores ordenados do diâmetro das barras longitudinais
vriável auxiliar para não apagar tabela de opções após nova
nãoZerar iteração
Variáveis para cálculo do peso de aço
PesFi Peso / m da bitola das barras longitudinais
Pes Peso total de aço
PesoEstribo Peso / m da bitola dos estribos
PesoPreEstrib Peso / m da bitolapré-determinada para os estribos
EstribAncSupl 2 x comprimento dos ganchos dos estribos sup
CompEstTotal comprimento total dos estribos suplementares
9.54 - Formulários
Form1
Form2
Form3
Form4
Form5
Form6
Form7
Form8
Form11