REDEMAT
REDE TEMÁTICA EM ENGENHARIA DE MATERIAIS
UFOP – CETEC – UEMG
UFOP - CETEC - UEMG
Dissertação de Mestrado
"Desenvolvimento de um software para levantamento de
características de reação ao fogo dos materiais de uso
comum: carga de incêndio"
Autora: Sandra Arlinda Santiago Maciel
Orientador: Prof. Antônio Maria Claret de Gouveia, DSc
Co-Orientador: Prof. Ronaldo Silva Trindade, MSc
Setembro de 2008
Sumário
1 INTRODUÇÃO
13
2 OBJETIVOS
14
2.1
OBJETIVO GERAL . . . . . . . . . . . . . . . . . . . . . . . 14
2.2
OBJETIVOS ESPECÍFICOS . . . . . . . . . . . . . . . . . . 15
3 JUSTIFICATIVA
15
4 REVISÃO DA LITERATURA
17
4.1
4.2
FOGO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1.1
Definição de fogo . . . . . . . . . . . . . . . . . . . . . 18
4.1.2
Representação gráfica do fogo . . . . . . . . . . . . . . 19
INCÊNDIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2.1
Causas de Incêndio . . . . . . . . . . . . . . . . . . . . 20
4.2.2
Fatores que influenciam o incêndio . . . . . . . . . . . 21
4.2.3
Classificação dos Incêndios . . . . . . . . . . . . . . . . 22
4.2.4
Fases de um incêndio . . . . . . . . . . . . . . . . . . . 23
5 REAÇÃO AO FOGO
5.1
25
ASPECTOS LEGAIS E NORMALIZADORES . . . . . . . . 26
5.1.1
Legislação Federal Brasileira sobre Incêndio . . . . . . 29
5.1.2
Legislação do Estado de Minas Gerais sobre Carga de
Incêndio . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.1.3
Instruções Técnicas do Corpo de Bombeiros Militar de
minas Gerais – CBMMG sobre Carga de Incêndio . . . 31
5.2
CARGA DE INCÊNDIO . . . . . . . . . . . . . . . . . . . . . 32
5.2.1
Carga de incêndio especı́fica . . . . . . . . . . . . . . . 32
5.2.2
Procedimentos para determinação da carga de Incêndio 33
5.2.3
Potencial Calorı́fico dos materiais . . . . . . . . . . . . 34
5.2.4
Medição Direta da Carga de Incêndio . . . . . . . . . . 35
5.2.5
Incêndio controlado pela Carga de Incêndio . . . . . . 41
5.2.6
Classificação dos Incêndios pela Carga de Incêndio . . . 42
5.2.7
Classificação do Risco quanto a Carga de Incêndio . . . 43
6 CARACTERÍSTICAS DA CIDADE COLONIAL DE OURO
PRETO
44
7 INCÊNDIOS EM OURO PRETO
48
8 ANÁLISE DE RISCO DE INCÊNDIO EM SÍTIOS HISTÓRICOS
55
9 O LEVANTAMENTO NO BAIRRO ANTÔNIO DIAS
63
10 PROGRAMAÇÃO
65
2
10.1 TIPOS DE PROGRAMAÇÃO . . . . . . . . . . . . . . . . . . 66
10.1.1 Programação estruturada (PE) . . . . . . . . . . . . . 66
10.1.2 Programação modular ou procedural . . . . . . . . . . 67
10.1.3 Programação Orientada a Objetos (POO) . . . . . . . 67
11 PROGRAMAÇÃO ORIENTADA A OBJETOS(OO)
67
11.1 ANÁLISE OO . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
11.2 CONCEITOS . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
11.2.1 Tipos Básicos de Objetos . . . . . . . . . . . . . . . . . 71
12 LINGUAGEM DE PROGRAMAÇÃO
73
12.1 DELPHI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
13 METODOLOGIA
74
13.1 ETAPA 1 – LEVANTAMENTO DE DADOS . . . . . . . . . . 75
13.2 ETAPA 2 – ANÁLISE OO . . . . . . . . . . . . . . . . . . . . 75
13.3 ETAPA 3 – MODELAGEM OO . . . . . . . . . . . . . . . . . 76
13.4 ETAPA 4 – PROGRAMAÇÃO OO . . . . . . . . . . . . . . . 76
13.5 ETAPA 5 – APLICAÇÃO . . . . . . . . . . . . . . . . . . . . 84
14 RESULTADOS E DISCUSSÕES
84
14.1 MODELAGEM . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3
14.1.1 Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
14.1.2 Edificação . . . . . . . . . . . . . . . . . . . . . . . . . 86
14.1.3 Pavimento . . . . . . . . . . . . . . . . . . . . . . . . . 87
14.1.4 Cômodo . . . . . . . . . . . . . . . . . . . . . . . . . . 88
14.1.5 Objeto (real) . . . . . . . . . . . . . . . . . . . . . . . 89
14.1.6 Regras de negócio . . . . . . . . . . . . . . . . . . . . . 89
14.1.7 Relatórios . . . . . . . . . . . . . . . . . . . . . . . . . 89
14.2 PROGRAMAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . 90
14.3 APLICAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
15 CONCLUSÃO
100
16 CONSIDERAÇÕES FINAIS
101
17 ANEXOS
106
17.1 ANEXO A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
17.2 Anexo B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
17.3 ANEXO C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
17.4 ANEXO D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
17.5 ANEXO E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
17.6 ANEXO F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
4
17.7 ANEXO G . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
17.8 ANEXO H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
17.9 ANEXO I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
17.10ANEXO J . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
17.11ANEXO K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
17.12ANEXO L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
17.13ANEXO M . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
17.14ANEXO N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
17.15ANEXO O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
17.16ANEXO P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
17.17ANEXO Q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
17.18ANEXO R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
17.19ANEXO S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
5
LISTA DE FIGURAS
LISTA DE FIGURAS
Lista de Figuras
1
Triângulo do Fogo . . . . . . . . . . . . . . . . . . . . . . . . . 20
2
Fases de um incêndio . . . . . . . . . . . . . . . . . . . . . . . 24
3
Incêndio no edifı́cio Andraus . . . . . . . . . . . . . . . . . . . 28
4
Incêndio no edifı́cio Joelma . . . . . . . . . . . . . . . . . . . . 28
5
Ouro Preto/MG . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6
Flagrante do incêndio do Fórum em 1950 . . . . . . . . . . . . 51
7
Prédio restaurado após o incêndio de 1967 . . . . . . . . . . . 51
8
Prédio restaurado após o incêndio de 1977 . . . . . . . . . . . 52
9
Incêndio no prédio do Pilão . . . . . . . . . . . . . . . . . . . 53
10
Incêndio no República Estudantil Baviera . . . . . . . . . . . 54
11
Levantamento de dados . . . . . . . . . . . . . . . . . . . . . . 59
12
Densidades de carga de incêndio e fatores de risco . . . . . . . 61
13
Mapa do bairro Antônio Dias, com indicação das edificações
que compuseram o levantamento da carga de incêndio . . . . . 64
14
Diagrama de classe Pavimento . . . . . . . . . . . . . . . . . . 76
15
Diagrama de classe Geral . . . . . . . . . . . . . . . . . . . . . 85
16
Diagrama de classe Edificação . . . . . . . . . . . . . . . . . . 86
17
Diagrama de classe Pavimento . . . . . . . . . . . . . . . . . . 87
6
LISTA DE FIGURAS
LISTA DE FIGURAS
18
Diagrama de classe Cômodo . . . . . . . . . . . . . . . . . . . 88
19
Diagrama de classe Objeto . . . . . . . . . . . . . . . . . . . . 89
20
Tela de abertura - apresentação do software CCI . . . . . . . . 91
21
Tela que permite escolher uma edificação já cadastrada . . . . 92
22
Tela para entrada de dados gerais da edificação, nova ou anteriormente cadastrada - suas dimensões, distâncias com relação
às edificações vizinhas e cadastro de pavimentos . . . . . . . . 93
23
Tela para entrada das dimensões por pavimento(s) o que permite cadastro de pisos com diferentes dimensões de pé-direito . 94
24
Tela para entrada de(s) cômodo(s) - cadastro de nome e sua
especialidade de acordo com tabela de carga de incêncio especı́fica por ocupação (anexo A) . . . . . . . . . . . . . . . . . . 94
25
Tela para entrada de dados do(s) comodo(s) - dimenões e posição em relação a um ponto da edificação escolhido para ser
o inicial para que possa ser elaborada um croqui da edificação
95
26
Tela para cadastro de objeto(s) real(is) . . . . . . . . . . . . . 95
27
Tela para entrada de dados do(s) objeto(s) real(is) - dimensões,
material, massa especı́fica para determinação de seu volume e
de sua carga de incêndio . . . . . . . . . . . . . . . . . . . . . 96
28
Tela para cadastro de dados no banco de dados de materiais nome e potencial calorı́fico . . . . . . . . . . . . . . . . . . . . 96
29
Tela para entrada de dados no banco de tipos de ocupação . . 97
7
LISTA DE FIGURAS
30
LISTA DE FIGURAS
Tela para solicitar que seja gerado relatório da aplicação no
formato HTML . . . . . . . . . . . . . . . . . . . . . . . . . . 97
31
Tela de ajuda ao usuário contendo tópicos: de descrição do
software;a respeito da entrada de dados; orientando como gerar relatórios e com os principais conceitos sobre carga de incêndio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
32
Relatório HTML . . . . . . . . . . . . . . . . . . . . . . . . . 99
33
Exemplo de cargas de incêndio especı́fica por ocupação . . . . 106
34
Metodologia para medição direta de carga de incêndio . . . . . 107
35
Exemplo de cálculo de carga de incêndio - edificação único
compartimento . . . . . . . . . . . . . . . . . . . . . . . . . . 108
36
Exemplo de cálculo de carga de incêndio - edificação vários
compartimentos parte 1 . . . . . . . . . . . . . . . . . . . . . 109
37
Exemplo de cálculo de carga de incêndio - edificação vários
compartimentos parte 2 . . . . . . . . . . . . . . . . . . . . . 110
38
Exemplo de cálculo de carga de incêndio - edificação vários
compartimentos parte 3 . . . . . . . . . . . . . . . . . . . . . 111
39
Exemplo de cálculo de carga de incêndio - edificação vários
compartimentos parte 4 . . . . . . . . . . . . . . . . . . . . . 112
40
Exemplo de cálculo de carga de incêndio - edificação vários
compartimentos parte 5 . . . . . . . . . . . . . . . . . . . . . 113
8
LISTA DE FIGURAS
41
LISTA DE FIGURAS
Exemplo de cálculo de carga de incêndio - edificação vários
compartimentos parte 6 . . . . . . . . . . . . . . . . . . . . . 114
42
Exemplo de cálculo de carga de incêndio - edificação vários
compartimentos partes 7 e 8 . . . . . . . . . . . . . . . . . . . 115
43
Exemplo de cálculo de carga de incêndio - edificação vários
compartimentos parte 9 . . . . . . . . . . . . . . . . . . . . . 116
44
Exemplo de cálculo de carga de incêndio - edificação vários
compartimentos parte 10 . . . . . . . . . . . . . . . . . . . . . 117
45
Exemplo de cálculo de carga de incêndio - edificação vários
compartimentos parte 11 . . . . . . . . . . . . . . . . . . . . . 118
9
LISTA DE TABELAS
LISTA DE TABELAS
Lista de Tabelas
1
Componentes do fogo . . . . . . . . . . . . . . . . . . . . . . . 19
2
Classificação das edificações e áreas de risco quanto à carga
incêndio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3
Comparativo entre vários levantamentos para carga de incêndio especı́fica . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4
Valores de densidade de carga de incêndio para escritórios . . 38
5
Cargas de incêndio especı́ficas publicadas - ocupações residenciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6
Comparação com valores apresentados pela Norma Brasileira . 41
7
Classificação do Risco quanto a Carga de Incêndio . . . . . . . 43
8
Comparativo com valores apresentados por Araújo(2004) . . . 100
10
LISTA DE TABELAS
LISTA DE TABELAS
Resumo
A densidade de carga de incêndio é um dos parâmetros essenciais
ao modelamento de incêndio em uma edificação. No Brasil, as cargas de incêndio por ocupação são definidas nos regulamentos públicos
tendo como base medições realizadas em paı́ses estrangeiros de costumes e climas diferentes. Medições locais de carga de incêndio foram
feitas pioneiramente em Belo Horizonte e em Ouro Preto a partir de
iniciativas do Laboratório de Análise de Riscos em Incêndio (LARin),
UFOP. O processo de medição direta da carga de incêndio é muito
trabalhoso, uma vez que compreende a pesagem de todos os materiais combustı́veis existentes em um ambiente e a sua caracterização
quanto ao poder calorı́fico. Nesse trabalho, a construção de um software para otimizar o processo de determinação da carga de incêndio
em edificações brasileiras é descrito. O software C.C.I. (Cálculo da
Carga de Incêndio), baseado em programação orientada a objetos, é
desenvolvido com o emprego do editor de modelos Delphi 7.0 que é o
ambiente visual para a linguagem Object Pascal e utiliza a metodologia
de criação de classes. O banco de dados é alimentado com resultados
dos levantamentos diretos já realizados em Ouro Preto. Exemplos de
aplicação do software são fornecidos.
11
LISTA DE TABELAS
LISTA DE TABELAS
ABSTRACT
The density of fire load is one of the essential parameters for modeling
of fire in a building. In Brazil, the loads of fire by occupation are defined
in the regulations public based on measurements made in foreign countries,
customs and different climates. Measurements of local load of fire were made
pioneer in Belo Horizonte and in Ouro Preto from initiatives of the laboratory
analysis of risks in Fire (LARin), UFOP. The process of direct measurement
of the load of fire is too much work, once you understand the weighing of all
combustible materials in an existing environment and its characterization as
the calorific value. In this work, the construction of a software to optimize
the process of determining load of fire in Brazilian buildings is described.
The software C.C.I. (Calculation of load Fire), based on the object-oriented
programming, is developed with the job of editor of models that Delphi 7.0 is
the visual environment for the language Object Pascal and uses the methodology of creating classes. The database is fed with direct results of surveys
made in Ouro Preto. Examples of application software are provided.
12
1 INTRODUÇÃO
1
INTRODUÇÃO
O incêndio pode ser descrito por meio de sua severidade, que é a medida
dos efeitos do incêndio sobre as edificações, os usuários e o meio ambiente.
A severidade pode ser associada à máxima temperatura desenvolvida em um
incêndio.
A temperatura máxima de um incêndio se eleva com o aumento da carga
de incêndio especı́fica, também chamada de densidade de carga de incêndio,
e com o aumento do grau de ventilação. A duração do incêndio cresce com
o aumento da carga de incêndio especı́fica e diminui com o aumento do grau
de ventilação (ASSIS,2001 apud ARAÚJO, 2004).
A duração do incêndio e sua severidade dependem da densidade da carga
de incêndio, portanto, a pesquisa de tal densidade para os diversos usos
e ocupações das edificações é uma atividade importante na Engenharia de
Incêndio.
De acordo com Claret(2004) a medição da carga de incêndio (Q) em MJ
é feita mediante pesagem dos diferentes materiais combustı́veis, cujo poder
calorı́fico (Hc) deve ser conhecido. A densidade da carga de incêndio, dada
em MJ/m2 , é o resultado da divisão da carga de incêndio total pela área de
piso do compartimento.
A carga de incêndio pode ser fixa, isto é, incorporada à própria edificação
ou do tipo móvel que é uma função direta e imediata de sua ocupação. O
somatório das cargas de incêndio fixa e móvel, denominado carga de incêndio total, depende da arquitetura e da ocupação especı́fica das edificações.
13
2 OBJETIVOS
Normalmente a carga de incêndio móvel é responsável pela maior parcela da
carga de incêndio total das edificações (ASSIS,2001 apud ARAÚJO, 2004).
A técnica de Programação Orientada a Objetos permite criar programas componentizados, separando as partes do sistema por responsabilidade
e fazendo com que essas partes se comuniquem entre si por meio de mensagens. Nas técnicas de programação tradicionais, geralmente não há separação
entre propriedades e ações, causando dependências enormes no sistema e dificultando futuras manutenções no código do programa (CARMO, acesso em
17/09/2006 às 22h).
O software baseado em programação orientada a objeto desenvolvido com
o emprego do editor de modelos Delphi 7.0 que, é o ambiente visual para a
linguagem Object Pascal e utiliza a Teoria da Classificação. O banco de dados
é alimentado com os resultados dos levantamentos diretos já realizados em
Ouro Preto.
2
OBJETIVOS
2.1
OBJETIVO GERAL
Desenvolver e aplicar um software (C.C.I. - Cálculo da Carga de Incêndio), para determinar a carga de incêndio, embasado na programação
orientada a objetos e avaliar sua eficiência.
14
2.2 OBJETIVOS ESPECÍFICOS
2.2
3 JUSTIFICATIVA
OBJETIVOS ESPECÍFICOS
• Consolidar e avaliar os dados disponı́veis de levantamentos manuais
de carga de incêndio, realizados no Bairro Antônio Dias, na cidade
histórica de Ouro Preto, Minas Gerais.
• Classificar e definir os objetos a serem aplicados na programação orientada a objetos.
• Definir a modelagem orientada a objetos das classes envolvidas no problema em questão.
• Desenvolver o software C.C.I. (Cálculo da Carga de Incêndio) com a
programação orientada a objetos para as classes modeladas.
• Aplicar o software C.C.I.
3
JUSTIFICATIVA
Conhecer as caracterı́sticas de reação ao fogo dos materiais de uso comum
é de suma importância para atuar na prevenção e combate ao incêndio, de
modo especial das edificações situadas em sı́tios históricos brasileiros devido
às suas condições desfavoráveis no combate ao incêndio.
Nessas cidades, as edificações de maior interesse de preservação geralmente são geminadas, construı́das com materiais vulneráveis ao fogo e aglomeradas em ruas estreitas. Igrejas e edifı́cios públicos de maior porte possuem
elementos decorativos insubstituı́veis tais como altares, forros e esculturas, os
15
3 JUSTIFICATIVA
quais não se pode admitir que o fogo sequer comece, pois um combate eficaz
do incêndio contribuiria na destruição das obras de arte (ALVES, 2003).
Embasado no Método Gretener de Avaliação de Risco de Incêndio, adaptado pela Universidade Federal de Ouro Preto (UFOP/MG), sob a coordenação do Prof. Antônio Maria Claret de Gouveia, aplicado à cidade de Ouro
Preto, foi criada a Instrução Técnica –35 sobre Segurança contra Incêndio
em Edificações Históricas, que contemplou a necessidade da determinação por
medição direta da densidade da carga de incêndio em uma edificação, uma
vez que os valores estabelecidos na Instrução Técnica no. 09, em seu Anexo A,
não condizem com a realidade das caracterı́sticas construtivas e de ocupação
de tais edificações.
Por meio de uma metodologia aplicada à cidade de Ouro Preto para
avaliação do risco global de incêndio em cidades tombadas e suas formas
de prevenção, proteção e combate, durante o desenvolvimento dos cálculos, de modo especial os de cargas de incêndio, verificou-se a necessidade de
desenvolvimento de uma ferramenta computacional capaz de conter um extenso banco de dados que auxiliasse nos cálculo dos volumes do mobiliário
(ARAÚJO, 2004).
Mediante a necessidade de se determinar o fator de risco quanto à densidade de carga de incêndio por medição direta foi desenvolvido um software
para levantamento de caracterı́sticas de reação ao fogo dos materiais de uso
comum: carga de incêndio.
Devido à extensão do banco de dados do software foi viabilizada a determinação da carga de incêndio para uma maior diversidade de materiais,
16
4 REVISÃO DA LITERATURA
comparação com valores normatizados pela norma prescritiva e emissão de
relatório para complementação de laudos técnicos. Além disso, poderá contribuir com a otimização do trabalho de profissionais ligados à área de atuação
da Engenharia de Incêndio e estudos futuros sobre caracterı́sticas de reação
ao fogo dos materiais de uso comum.
4
REVISÃO DA LITERATURA
4.1
FOGO
O fogo sempre se constituiu num elemento de grande significado para o
homem. Antes do modo de produzi-lo e controlá-lo ter sido descoberto, por
seu surgimento ocorrer apenas naturalmente, por exemplo, em conseqüência da erupção de vulcões, o fogo provocava verdadeiro terror no homem.
Durante muitos séculos, sua ocorrência era atribuı́da aos deuses.
Mais adiante, o homem encontrou a utilidade para o fogo através da luz
que era produzida ao seu redor e calor que transmitia ao corpo, na cocção
dos alimentos e para afugentar animais ferozes. Então, o controle do fogo
passou a ser tarefa muito importante, sendo motivo de disputa entre grupos
de selvagens.
A disputa pela posse do fogo só terminou quando o homem aprendeu a
produzi-lo. Segundo Gomes(1998), como isso aconteceu não se sabe ao certo.
A verdade é que chegaram ao mesmo fim por dois caminhos diferentes: pelo
centelhamento, causado pelo choque, ou forte atrito entre pedras ou pela
fricção entre um pedaço de madeira, no formato de um bastão cilı́ndrico,
17
4.1 FOGO
4 REVISÃO DA LITERATURA
introduzido num buraco de igual diâmetro estando este rodeado de folhas
secas e gravetos secos.
Enquanto o homem viveu nas cavernas, o risco de incêndio não existiu.
No entanto, com a vivência em comunidade, nas cabanas construı́das com
galhos, troncos e folhas de árvores secas, a falha no controle do fogo fez
surgir o incêndio. O primeiro agente extintor empregado foi a água. Foram
utilizadas também a areia, a terra e mantas de animais e, com a evolução no
combate ao fogo, tubos feitos com couro de animais.
A partir da comprovação de Antoine Lavoisier de que uma substância,
um corpo submetido à ação do fogo, sofre uma reação quı́mica que dá origem
à formação de novos corpos, sem que tenha sido criado ou perdido outro
material, os pesquisadores voltaram suas atenções para os aspectos fı́sicoquı́micos do fenômeno da queima ou combustão. (GOMES, 1998).
De acordo com Seito et al (2008), o estudo do fogo como ciência tem
pouco mais de vinte anos, com a criação de uma associação internacional que
reuniu cientistas dos maiores institutos e universidades do mundo.
4.1.1
Definição de fogo
De acordo com a Instrução Técnica no. 02 do CBMSP o fogo é um fenômeno fı́sico-quı́mico onde se tem lugar uma reação de oxidação com emissão
de calor e luz. No entanto, para realização desse fenômeno devem coexistir
quatro componentes, apresentados na tabela 1.
18
4.1 FOGO
4 REVISÃO DA LITERATURA
Tabela 1: Componentes do fogo
Componente do fogo
Conceito
Combustı́vel
Qualquer substância capaz de produzir calor por
meio da reação quı́mica
Comburente
(oxigê- Substância que alimenta a reação quı́mica
nio)
Calor
Forma de energia que se transfere de um sistema
para o outro em virtude de uma diferença de temperatura
Esses componentes do fogo constituem o que se denomina representação
gráfica do fogo.
4.1.2
Representação gráfica do fogo
A representação gráfica do fogo, figura 1, explica os meios de extinção do
fogo pela retirada do combustı́vel, do comburente ou do calor por meio do
Triângulo do Fogo como apresentado na figura geométrica plana.
De acordo com a interpretação desta figura geométrica plana, os três
elementos que compõem cada lado do triângulo - combustı́vel, comburente e
calor - devem coexistir ligados para que o fogo se mantenha.
19
4.2 INCÊNDIO
4 REVISÃO DA LITERATURA
Figura 1: Triângulo do Fogo
Fonte CLARET, 2006, p.11
4.2
INCÊNDIO
O incêndio pode ser definido como o fogo indesejado ou ainda como o
fogo sem controle. (CBMMG, 1990a) (IT no. 02 do CBMMG).
Além disso, define-se incêndio segundo a NBR 13.860(1997) como o fogo
fora de control.
4.2.1
Causas de Incêndio
De acordo com Gomes(1998), o incêndio pode surgir por diversas razões,
dentre as quais as mais comuns são:
20
4.2 INCÊNDIO
4 REVISÃO DA LITERATURA
• causas fortuitas – ponta de cigarro ou fósforo incandescente, largada no
cesto ou lata de lixo; tomada elétrica sobrecarregada; pano impregnado
com álcool, éter, gasolina, cera, querosene e outros inflamáveis, guardados sem o menor cuidado; fio elétrico energizado, sem isolamento
ou desprotegido, em contato com papel, tecido ou qualquer material
combustı́vel; equipamento elétrico funcionando irregularmente, apresentando alta temperatura e/ou centelhamento.
• causas acidentais – vazamento de lı́quido inflamável em área de risco;
concentração de gás inflamável em área confinada; curto circuito em
aparelho elétrico energizado ou em fiação não isolada adequadamente;
combustão espontânea; eletricidade estática.
Ainda, de acordo com Araújo(2004), as Instruções Técnicas apresentadas
pela Defesa Civil do Estado do Rio de Janeiro, o incêndio pode ter causas
naturais ou artificiais. As causas naturais são decorrentes de fenômenos da
natureza e se dividem em natureza fı́sico-quı́mica, por exemplo vulcões, terremotos, raios, etc e de natureza biológica tais como os incêndios decorrentes
do aumento da temperatura devido à fermentação e à ação degradativa das
bactérias.
4.2.2
Fatores que influenciam o incêndio
Segundo Seito et al (2008), dentre os vários fatores que concorrem para
inı́cio e desenvolvimento de um incêndio, pode-se citar:
• forma geométrica e dimensões da sala ou local,
21
4.2 INCÊNDIO
4 REVISÃO DA LITERATURA
• superfı́cie especı́fica dos materiais combustı́veis envolvidos,
• distribuição dos materiais combustı́veis no local,
• quantidade de material combustı́vel incorporado ou temporário,
• caracterı́sticas de queima dos materiais envolvidos,
• local do inı́cio do incêndio no ambiente.
• condições climáticas (temperatura e umidade relativa),
• aberturas de ventilação do ambiente,
• aberturas entre ambientes para a propagação do incêndio,
• projeto arquitetônico do ambiente e/ou edifı́cio,
• medidas de prevenção de incêndio existentes,
• medidas de proteção contra incêndio instaladas.
Dentre esses fatores, determinarão o crescimento do incêndio: o primeiro
item ignizado, as caracterı́sticas do comportamento ao fogo dos materiais na
proximidade do item ignizado e sua distribuição no ambiente.
4.2.3
Classificação dos Incêndios
Para a Prevenção Contra Incêndio, basicamente, pode-se classificar os
incêndios pela natureza e pela quantidade dos materiais combustı́veis 1 existentes nas áreas a serem protegidas. (GOMES, 1998).
1
Produtos ou substâncias (não resistentes ao fogo) que sofrem ignição ou combustão
quando sujeitos a calor (IT 02/01, CBMMG)
22
4.2 INCÊNDIO
4 REVISÃO DA LITERATURA
Para Gomes (2001) apud Araújo(2004) , quanto à natureza dos materiais
combustı́veis, os incêndios se classificam em:
• incêndios da Classe A – fogo em sólidos combustı́veis mais comuns e de
fácil combustão, tais como papel, algodão, madeira, tecidos e similares. São aqueles cujo combustı́vel queima em superfı́cie e profundidade,
deixando resı́duos sólidos (cinza) após a queima.
• incêndios da Classe B – queimam apenas em superfı́cie, como, por
exemplo, os lı́quidos e gases inflamáveis. Pode-se citar a gasolina, o
álcool, querosene, acetileno, gás liquefeito de petróleo – GLP.
• incêndios da Classe C – ocorrem em aparelhos elétricos energizados
como motores, circuladores de ar, televisores, rádios e outros similares. Estes incêndios, após ser retirado o agente energizador, podem ser
combatidos como outra classe de incêndio, geralmente a classe “A”.
• incêndios da Classe D – ocorrem em metais pirofólicos
Quanto à quantidade de materiais combustı́veis , pode-se classificar o
incêndio calculando-se a quantidade de calor encontrada por unidade de área
ocupada. A quantidade de calor que poderá ser gerado por unidade de área é
a carga de incêndio da edificação e será apresentada de forma mais detalhada
adiante.(CBMMG, 1990a)
4.2.4
Fases de um incêndio
A evolução do incêndio é caracterizada por quatro fases, como pode ser
observado na figura 2, que ilustra a evolução do incêndio celulósico na edifi23
4.2 INCÊNDIO
4 REVISÃO DA LITERATURA
cação.
Figura 2: Fases de um incêndio
Fonte - ISO/TR3814:1989(E) Tests to measuring reaction to fire of
buildings materials – Their development and application apud Seito(2008)
A primeira fase da curva de evolução do incêndio celulósico é caracterizada pelo incêndio incipiente que tem um crescimento lento, em geral de
duração entre cinco a vinte minutos até a ignição. O sistema de detecção
deverá operar nessa fase e o combate a incêndio e conseqüente extinção terá
grande probabilidade de sucesso.
Na segunda fase tem-se o crescimento das chamas e conseqüente aqueci24
5 REAÇÃO AO FOGO
mento do ambiente. Todo o ambiente é tomado por gases e vapores combustı́veis desenvolvidos na pirólise dos combustı́veis sólidos quando a temperatura
do ambiente atinge em torno de 600o C. Havendo lı́quidos combustı́veis, eles
irão contribuir com seus vapores, ocorrerá a inflamação generalizada (flashover ) e o ambiente será tomado por grandes labaredas. Caso o incêndio seja
combatido antes dessa fase (por exemplo, por chuveiros automáticos) haverá
grande probabilidade de sucesso na sua extinção.
Na terceira fase ocorre a diminuição gradual da temperatura do ambiente
e das chamas, por exaurir o material combustı́vel. E, na quarta fase, ocorre
a extinção do fogo. Nessa fase, o incêndio irá diminuir de intensidade e de
severidade na proporção que vai se exaurindo os materiais combustı́veis.
5
REAÇÃO AO FOGO
Os sistemas construtivos sofreram profundas modificações trazidas pelo
desenvolvimento tecnológico, como a incorporação acentuada de materiais
combustı́veis aos elementos construtivos, introduzindo riscos que anteriormente não existiam nas edificações.
Segundo Seito(2008), a reação
2
ao fogo dos materiais utilizados no re-
vestimento/acabamento de paredes e tetos e dos incorporados aos sistemas
construtivos deve ser considerada por meio da verificação do maior ou menor
potencial que eles possuem para contribuir para o desenvolvimento do fogo,
quando submetidos a uma situação de combustão.
2
Todas as transformações fı́sicas e/ou quı́micas sofridas por um material exposto a um
fogo incontrolado. (SEITO et al., 2008).
25
5.1 ASPECTOS LEGAIS E NORMALIZADORES
5 REAÇÃO AO FOGO
Ainda, de acordo com o mesmo autor, a reação ao fogo dos materiais
contidos na edificação, quer seja como mobiliários (estofamentos, cortinas,
objetos de decoração, etc.), ou então como agregados aos elementos construtivos (revestimentos de paredes, tetos, pisos e fachadas), destaca-se como um
dos principais fatores responsáveis pelo crescimento do fogo, pela propagação
das chamas e pelo desenvolvimento de fumaça e gases tóxicos, contribuindo
para que o incêndio atinja fases crı́ticas e gere pânico e mortes. Portanto, o
desenvolvimento e a duração de um incêndio são diretamente influenciados
pela quantidade de combustı́vel a queimar.
A vulnerabilidade de um ambiente perante o fogo é diretamente influenciada pela carga de incêndio, a soma das energias calorı́ficas possı́veis de
serem liberadas pela combustão completa de todos os materiais combustı́veis
em um espaço, inclusive os revestimentos das paredes, divisórias, pisos e tetos
(CBMMG, 1990a).
5.1
ASPECTOS LEGAIS E NORMALIZADORES
As conseqüências que os incêndios causam à sociedade são notórias. Ocorrem perdas sociais, econômicas e humanas. (SEITO et al., 2008)
Até o inı́cio dos anos 70, pela ausência de grandes incêndios e com grande
número de vı́timas, as questões relativas a incêndios eram vistas como algo
que dizia mais respeito ao corpo de bombeiros. Os Códigos de Obras dos
municı́pios continham, de forma esparsa, alguma regulamentação sobre o
tema. A pouca regulamentação que o corpo de bombeiros possuı́a era advinda
da área seguradora, indicando geralmente a obrigatoriedade de medidas de
26
5.1 ASPECTOS LEGAIS E NORMALIZADORES
5 REAÇÃO AO FOGO
combate a incêndio, como provisão de extintores e hidrantes, bem como a
sinalização desses equipamentos. (SEITO et al., 2008).
A Associação Brasileira de Normas Técnicas (ABNT) tratava do tema
regulamentando mais os assuntos referentes à produção de extintores de incêndio.
Até que, de acordo com Seito et al (2008), se deu inicio uma seqüência de
tragédias:
• Gran Circo Norte-Americano, Niterói, Rio de Janeiro - o maior incêndio
em perda de vidas, em nosso Paı́s, e de maior perda de vidas ocorridas
em um circo até nossos dias. Aconteceu em 17 de dezembro de 1961,
tendo como resultado 250 mortos e 400 feridos;
• Incêndio na Indústria Volkswagen do Brasil - na Ala 13 da montadora
de automóveis Volkswagen, em São Bernardo do Campo, ocorrido em
18 de dezembro de 1970, consumindo um dos prédios da produção (Ala
13), com uma vı́tima fatal e com perda total dessa edificação;
• Incêndio no edifı́cio Andraus, (figura3)- O primeiro grande incêndio em
prédios elevados ocorreu em 24 de fevereiro de 1972, no edifı́cio Andraus, na cidade de São Paulo. Tratava-se de um edifı́cio comercial e
de serviços, com 31 andares, estrutura em concreto armado e acabamento em pele de vidro. Do incêndio resultaram 352 vı́timas, sendo 16
mortos e 336 feridos;
• Incêndio no edifı́cio Joelma (figura 4) - Esse edifı́cio situa-se na Avenida Nove de Julho, 22 (Praça da Bandeira - São Paulo), possuindo 23
27
5.1 ASPECTOS LEGAIS E NORMALIZADORES
5 REAÇÃO AO FOGO
Figura 3: Incêndio no edifı́cio Andraus
Fonte: SEITO et al,2008, pag.23
andares de estacionamentos e escritórios. Ocorrido em 1o de fevereiro
de 1974, gerou cento e setenta e nove mortos e trezentos e vinte feridos.
Figura 4: Incêndio no edifı́cio Joelma
Fonte: SEITO et al,2008, pag.24
28
5.1 ASPECTOS LEGAIS E NORMALIZADORES
5 REAÇÃO AO FOGO
O que ocorreu a seguir parece um despertar, uma percepção de que os
grandes incêndios com vı́timas, até então distantes, passam a ser entendidos
como fatos reais e que exigem mudanças. (SEITO et al., 2008).
Logo após o incêndio do edifı́cio Andraus, o então Ministério do Exército
produziu as Normas de Orientação para a Organização das Polı́cias Militares
e dos Corpos de Bombeiros Militares, determinando que o corpo de bombeiros, inseridos nas Polı́cias Militares (PPMM), fossem organizados em comandos e quadros de pessoal próprios. Os comandos próprios foram criados em
todo o Brasil e, a partir da Constituição Federal de 1988, essas organizações
iniciaram o movimento de desvinculação das PPMM, afastando-se de uma
estrutura ligada ao Sistema de Persecução Penal, do qual não fazem parte.
(SEITO et al., 2008).
As movimentações imediatas como manifestações, mudanças nas regulamentações, capacitação técnica contribuı́ram com o inı́cio das regulamentações que hoje norteiam os princı́pios da segurança contra incêndio.
No entanto, apesar dos trabalhos já realizados na área, muito ainda deve
ser estudado, pesquisado, planejado e introduzido em nossas regulamentações
para que possamos alcançar um nı́vel aceitável de segurança contra incêndio
para toda a população brasileira. (SEITO et al., 2008).
5.1.1
Legislação Federal Brasileira sobre Incêndio
A Norma Brasileira NBR 14.432 (2001) ”Exigências de resistência ao fogo
de elementos construtivos de edificações”, válida para edificações de qualquer
material, tem por objetivo estabelecer as condições a serem atendidas pe29
5.1 ASPECTOS LEGAIS E NORMALIZADORES
5 REAÇÃO AO FOGO
los elementos construtivos, sejam eles estruturais ou de compartimentação 3 ,
para que, em situação de incêndio, seja evitado o colapso estrutural e sejam
atendidos requisitos de estanqueidade e isolamento por um tempo suficiente
para possibilitar: a fuga dos ocupantes da edificação em condições de segurança; a segurança das operações de combate ao incêndio e a minimização de
danos a edificações adjacentes e à infra-estrutura pública.
A Norma Regulamentadora 23 – NR 23, editada em 1978, obrigatória nos
locais em que haja relação trabalhista regida pela Consolidação das Leis do
Trabalho, obriga que esses locais possuam: proteção contra incêndio, saı́das,
equipamentos para resposta a incêndios e pessoas treinadas para uso desses
equipamentos.Em seu detalhamento, determina largura de saı́das, portas,
escadas, etc., bem como sistemas de hidrantes, extintores e alarme, mais a
realização de exercı́cios de alerta (SEITO et al., 2008).
5.1.2
Legislação do Estado de Minas Gerais sobre Carga de Incêndio
A legislação do estado de Minas Gerais que contém o regulamento de
segurança contra incêndio e pânico nas edificações e áreas de risco vigente
é o Decreto no. 44270 de 31 de março de 2006. Este decreto regulamenta a
Lei no. . 14.230, de 19 de dezembro de 2001, que dispõe sobre a prevenção
contra incêndio e pânico no Estado e dá outras providências. De acordo com
Capı́tulo X, artigo 23, as edificações e áreas de risco são classificadas quanto
3
Capacidade de um elemento construtivo de impedir a ocorrência de rachaduras ou de
aberturas através das quais podem passar as chamas e gases quentes capazes de ignizar
um chumaço de algodão (ABNT, 2001).
30
5.1 ASPECTOS LEGAIS E NORMALIZADORES
5 REAÇÃO AO FOGO
ao risco:
• quanto ao nı́vel de segurança,
• quanto à segurança contra incêndio,
• quanto ao pânico.
Para determinação de tais riscos, deve-se classificar as edificações quanto
à carga de incêndio,de acordo com a tabela 2, a seguir.
Tabela 2: Classificação das edificações e áreas de risco quanto à carga incêndio
Risco
Carga Incêndio MJ/m2
Baixo
Até 300 MJ/m2
Médio Acima de 300 até 1.200 MJ/m2
Alto
Acima de 1.200 MJ/m2
Fonte: (MINASGERAIS, 2006), pag.30
5.1.3
Instruções Técnicas do Corpo de Bombeiros Militar de minas Gerais – CBMMG sobre Carga de Incêndio
O procedimento para a determinação da carga de incêndio das edificações
e áreas de risco está estabelecido na IT no. 09 do CBMMG. Para a determinação da carga de incêndio especı́fica das edificações deve-se utilizar uma tabela
que lista tais cargas por ocupação , com exceção das edificações destinadas a
depósitos, explosivos e ocupações especiais que para as quais deve-se aplicar
a metodologia descrita para levantamento da carga de incêndio especı́fica.
31
5.2 CARGA DE INCÊNDIO
5 REAÇÃO AO FOGO
No caso de edificações históricas, a IT no. 35 do CBMMG, Segurança contra incêndio em Edificações Históricas, CBMMG (2005) determina no subitem 6.3.1.1 que a densidade de carga de incêndio deve ser determinada por
medição direta de acordo com metodologia descrita na IT no. 09 do CBMMG.
5.2
CARGA DE INCÊNDIO
A carga de incêndio em uma edificação pode ser fixa ou móvel. (CBMMG,
1990a)
Carga de incêndio fixa - é a proveniente da quantidade de energia existente e que pode ser liberada durante um incêndio pelos materiais inerentes
à construção.
Carga de Incêndio móvel - é a proveniente da quantidade de energia existente e que pode ser liberada durante um incêndio pelos materiais constituintes dos bens alojados em uma edificação.
Carga de incêndio total - é a obtida pelo somatório das cargas de incêndio
fixa e móvel.
5.2.1
Carga de incêndio especı́fica
- é o valor da carga de incêndio dividido pela área de piso do espaço
considerado, expresso em megajoule (MJ) por metro quadrado (m2 ).
32
5.2 CARGA DE INCÊNDIO
5.2.2
5 REAÇÃO AO FOGO
Procedimentos para determinação da carga de Incêndio
O procedimento para a determinação da carga de incêndio das edificações
e áreas de risco está estabelecido na IT no. 09 do CBMMG .
Para a determinação da carga de incêndio especı́fica das edificações devese aplicar a tabela que correlaciona cargas de incêndio especı́ficas por ocupação da referidas Instrução Técnica. (FIG. 33) Em edificações destinadas
a depósitos, explosivos e ocupações especiais aplica-se a metodologia para
levantamento da carga de incêndio especı́fica de acordo com a metodologia
apresentada na Instrução Técnica no. 09, do CBMMG. (FIG. 34)
O valor da carga de incêndio especı́fica deve ser determinado pela expressão 1:
qf i =
P
Mi Hi
Ai
(1)
Onde:
qf i - valor da carga de incêndio especı́fica, em MJ/m2 ,
Mi - massa total de cada componente i do material combustı́vel, em kg.
Quando houver alteração de ocupação, Mi deverá ser reavaliado,
Hi - potencial calorı́fico especı́fico de cada componente i do material combustı́vel, em MJ/kg,
Ai - área do piso do compartimento, em m2 .
O levantamento da carga de incêndio especı́fica deve ser realizado em
módulos de no máximo 500m2 de área de piso. Módulos maiores podem
33
5.2 CARGA DE INCÊNDIO
5 REAÇÃO AO FOGO
ser utilizados quando o espaço analisado possuir materiais combustı́veis com
potenciais calorı́ficos semelhantes e uniformemente distribuı́dos. A carga de
incêndio especı́fica do piso analisado deve ser tomada como sendo o maior
entre a média das cargas de incêndio dos dois módulos de maior valor ou 85%
da carga de incêndio do módulo de maior valor.
De acordo com a IT no. 35 do CBMMG em edificações históricas a densidade de carga de incêndio deve ser determinada por medição direta de acordo
com metodologia descrita na IT no. 09 do CBMMG.
5.2.3
Potencial Calorı́fico dos materiais
O potencial calorı́fico é também chamado de poder calorı́fico. Segundo
Martin e Peris(1982)apud Seito et al (2008) o poder calorı́fico é a quantidade
de calor que o material libera por unidade de peso quando submetido a uma
combustão completa.
Rosso(1975) apud Seito et al (2008) também assume esta definição de
poder calorı́fico, porém alertando para a existência do poder calorı́fico superior e inferior. O poder calorı́fico superior é aquele que é considerada a
quantidade de calor gerado pela água que compõe o material, por meio da
condensação do vapor d’água desprendido durante o processo de combustão.
Quando esse calor de condensação não for admitido, temos o poder calorı́fico
inferior.
Seito et al (2008) ressaltam ainda, que parte do calor liberado na combustão de um material é absorvida novamente pelo fogo e pelos materiais
adjacentes inflamados, sendo portanto o desenvolvimento do fogo dado em
34
5.2 CARGA DE INCÊNDIO
5 REAÇÃO AO FOGO
função do poder calorı́fico dos materiais combustı́veis existentes no local.
5.2.4
Medição Direta da Carga de Incêndio
Os primeiros estudos de que se tem conhecimento para a determinação estatı́stica da carga de incêndio em edifı́cios de escritórios foram realizados por
Baldwin(1970), no Reino Unido, e Culver(1976), nos Estados Unidos. Mediante coleta de dados realizadas em campo e medições de massa e volume esses
trabalhos servem de exemplo aos pesquisadores que buscam averiguar valores
de carga de incêndio a serem adotadas em projetos, segundo as ocupações de
edifı́cios. (ASSIS, 2001).
No perı́odo de julho de 1992 a julho de 1993,
Kumar e RAO(1995)
realizaram na cidade de Kanpur, Índia, outro levantamento das cargas de incêndio em oito edifı́cios de escritórios públicos com até quatro pavimentos. A
análise teve como suporte um levantamento da massa dos objetos, servindose de relações geométricas e de densidades dos materiais. Dos resultados,
conclusões e comparações houve redução dos valores de carga de incêndio
obtidos por Culver(1976) nos Estados Unidos, porém houve proximidade dos
resultados obtidos por Baldwin(1970), no Reino Unido, o que denota influência de evoluções industriais, de fatores culturais, do uso de informática na
armazenagem de dados entre outros.
Em 1995, os mesmos autores, levantaram as cargas de incêndio de trinta e
cinco residências na cidade de Kanpur, Índia. Foi realizado um levantamento
das massas e densidades dos objetos para obtenção das cargas de incêndios,
análise e comparações das cargas de incêndio com relação ao número de
35
5.2 CARGA DE INCÊNDIO
5 REAÇÃO AO FOGO
cômodos das residências, ao uso e ocupação dos cômodos e à altura das
residências.
A primeira pesquisa cientı́fica realizada no Brasil para determinação da
densidade da carga de incêndio ou, simplesmente carga de incêndio, para os
edifı́cios de escritórios foi realizada por Assis(2001). Foi realizado o levantamento sistemático dos 47.382m2 de área de escritórios na cidade de Belo
Horizonte/MG, totalizando oito edifı́cios, sendo dois de domı́nio público e os
demais privados. As quantidades dos materiais combustı́veis fixos e móveis
foram levantadas considerando-se a geometria e distribuição no espaço. Com
base no poder calorı́fico dos materiais pesquisados na literatura técnica, foram
calculadas as cargas de incêndio correspondente. Para o cálculo da carga de
incêndio foram utilizadas planilhas feitas no Excel, cujos resultados obtidos
estão relacionados na Tabela 3.
Tabela 3: Comparativo entre vários levantamentos para carga de incêndio
especı́fica
Autor(es) BALDWIN CULVER KUMAR
(1970)
Média
372
(1979)
960
e
NBR
RAO 14.432
ASSIS
e
CLARET
(1993)
(2000)
(2001)
348
700
901
(MJ/m2 )
Fonte: adaptado de ASSIS,2003
Assis(2001) comentou ainda, que o valor normativo parece ser resultado
de uma estimativa que vem sendo adotada em normas estrangeiras há vários
36
5.2 CARGA DE INCÊNDIO
5 REAÇÃO AO FOGO
anos.
No ano de 2003, Alves apresentou uma Análise de Riscos de Incêndios em
Edificações em Sı́tios Históricos e realizou dois estudos de caso. O primeiro
estudo foi realizado na Casa da Câmara e o segundo, na Casa da Baronesa,
ambas localizadas em Ouro Preto/MG. Para tanto, o fator de risco devido à
carga de incêndio, fator q, foi calculado. O fator q relativo à carga móvel foi
determinado a partir da pesagem dos diferentes materiais de caracterı́stica
móvel multiplicados ao poder calorı́fico (Hc) correspondente.
A carga de incêndio especı́fica foi obtida pela razão entre a carga de incêndio pela área do piso. A carga de incêndio fixa foi considerada com base
no valor estimado tabelado para cada tipo de edificação (FIG. 33). O valor
do fator de risco devido à carga móvel e fixa foi determinado utilizandose tabelas de fator de risco, propostas pelo Método de Análise Global de
Risco. O Método aplicado foi resultado das modificações do método original de Gretener, feitas pela equipe técnica do Laboratório de Análise de
Risco em Incêndio (LarIn) da Escola de Minas da UFOP, em projeto para
a UNESCO (Organização das Nações Unidas para a Educação e a Cultura).
Alves(2003) concluiu que os estudos de caso mostraram a viabilidade prática
de aplicação do método já que, os resultados indicaram um risco de incêndio
fisicamente coerente com as visı́veis deficiências de proteção existentes nos
imóveis examinados.
Bwalya et al , fez uma revisão literária com o objetivo de identificar o estado da arte na área de projetos de incêndio e identificar as que necessitassem
de futuras pesquisas. As cargas de incêndio relatadas na literatura variavam
de 100 a 10.000MJ/m2 . Alguns estudos foram citados e suas respectivas den37
5.2 CARGA DE INCÊNDIO
5 REAÇÃO AO FOGO
sidades de cargas determinadas de incêndio foram tabeladas, deixando clara
a diferença entre os valores de densidades encontradas para edifı́cios contendo
o mesmo tipo de ocupação, o que remete à necessidade de se fazer a medição
direta para determinação da carga de incêndio.
Tal incongruência pode ser observada na tabela 4, que apresenta valores de densidade de carga de incêndio determinados por alguns autores em
escritórios.
Tabela 4: Valores de densidade de carga de incêndio para escritórios
Autor(es) KARISSON YII
e
YII
QUIN- (2000)
TIERE
Nova
(2000)
Zelân-
USA apud dia
IT
No. 09 IT
No. 14
CBMMG
CBMSP
700
700
apud
(BWALYA; (BWALYA;
Média
SULTAN;
SULTAN;
BÉNI-
BÉNI-
CHOU,
CHOU,
2003)
2003)
709
950
(MJ/m2 )
Embasados nos dados provenientes da citada revisão literária, Bwalya
et al (2003) concluı́ram que era visı́vel a grande variação entre os valores
de cargas de incêndio e que essa variação acontecia principalmente devido às
38
5.2 CARGA DE INCÊNDIO
5 REAÇÃO AO FOGO
diferenças nas localizações geográficas e na maneira subjetiva de quantificação
da carga de incêndio.
Bwalya et al (2004) realizaram um levantamento piloto de cargas de incêndio em casas no Canadá. Questionários contendo informações pertinentes
ao levantamento foram enviados, via internet, e 74 deles foram preenchidos.
De acordo com resultados desses levantamentos constatou-se que as cargas
de incêndio especı́ficas apresentam grandes variações em residências, mesmo
em se tratando de mesma localização geográfica, como pode ser observado
na Tabela 5.
39
5.2 CARGA DE INCÊNDIO
5 REAÇÃO AO FOGO
Tabela 5: Cargas de incêndio especı́ficas publicadas - ocupações residenciais
Carga
de Paı́s
Referências Observações
incêndio
especı́fica
(MJ/m2 )
450
Estados Unidos
8
Levantamentos
em
200 residências
500
Estados Unidos
8
Levantamentos em 70
residências
400,
800, Nova Zelândia
9
Recomendações
do
Código de Constru-
1200
ções da Nova Zelândia
600
Suı́ça
11
-
724
Nova Zelândia
12
-
670
Japão
13
Levantamentos
em
214 residências
600,500
Canadá
-
74 residência ora levantadas
Fonte: BWALYA et al (2004)
Em 2004, Araújo realizou um levantamento de carga de incêndio na cidade histórica de Ouro Preto/MG, em 43 edificações, localizadas na Rua
São José. Um importante resultado desse levantamento foi a comparação
dos valores das cargas de incêndio medidas nas diversas ocupações com os
apresentados pela Norma Brasileira (tabela 6) Essa comparação evidencia
40
5.2 CARGA DE INCÊNDIO
5 REAÇÃO AO FOGO
a necessidade da determinação da carga de incêndio pelo procedimento da
medição direta.
Tabela 6: Comparação com valores apresentados pela Norma Brasileira
Carga de Incêndio (MJ/m2 )
Ocupação
NBR (1)
ARAÚJO(2004) (2)
Razão (2)/(1)
Museu
300
2599
9
Lojas de Vestuário
400
3930
10
Repúblicas Estudantis 300
1347
4
Lavanderia
300
1515
5
Livraria
2000
2129
1
Farmácia
1000
6734
7
Fonte: ARAÚJO, 2004
5.2.5
Incêndio controlado pela Carga de Incêndio
De acordo com Seito et al (2008) , na terceira fase do incêndio (FIG.2)
chamada incêndio desenvolvido, as temperaturas do ambiente atingirão valores acima de 1.100o C. Todos os materiais combustı́veis do ambiente entrarão
em combustão e o incêndio irá se propagar por meio das aberturas internas,
fachadas e coberturas da edificação. A duração desse estágio está ligada à
carga de incêndio que passa dos 80% para 30% do valor inicial. As aberturas
de ventilação são suficientes para a queima livre dos materiais combustı́veis,
portanto o crescimento e a duração do incêndio dependem somente das caracterı́sticas do combustı́vel e seu arranjo no ambiente.
41
5.2 CARGA DE INCÊNDIO
5.2.6
5 REAÇÃO AO FOGO
Classificação dos Incêndios pela Carga de Incêndio
A dinâmica das cidades brasileiras que se modernizam para serem competitivas, dentro dos mercados globais, aumenta a complexidade da produção
e dos serviços que, paralelamente às exigências da população urbana, tem
provocado o aumento dos riscos de incêndios nas edificações. Para atender
a população são implantados grandes depósitos de materiais combustı́veis e
materiais perigosos, criando locais com enorme potencial de incêndio.
O risco de incêndio pode ser definido como a probabilidade de ocorrência
de incêndio em um determinado local. A segurança contra incêndio pode ser
definida como a probabilidade da não ocorrência (ARAÚJO, 2004).
Segundo Seito et al (2008) , o risco de ocorrência de um incêndio é determinado por fatores inerentes a cada edifı́cio e a segurança desejável para um
edifı́cio está diretamente relacionada às categorias de risco e aos objetivos
da segurança contra incêndio, bem como aos requisitos funcionais atendidos
pelo edifı́cio em estudo.
Os fatores que contribuem para a definição do risco de incêndio são basicamente quatro: caracterı́sticas da população do edifı́cio, tipo de ocupação,
caracterı́sticas construtivas do edifı́cio e localização do edifı́cio.
Para Gomes (2001) apud (ARAÚJO, 2004), a classificação dos incêndios
pela carga de incêndio é:
• Risco leve ou Risco 1 – fogo em pequena carga de incêndio, cujo desenvolvimento se faz com fraca liberação de calor. A carga de incêndio é
de até 270.000 Kcal/m2 ou aproximadamente 1.130MJ/m2 ;
42
5.2 CARGA DE INCÊNDIO
5 REAÇÃO AO FOGO
• Risco médio ou Risco 2 – fogo em média carga de incêndio, cujo desenvolvimento se faz com moderada liberação de calor. A carga de incêndio
é de até 270.000 a 540.000 Kcal/m2 ou aproximadamente 1.130 a 2.260
MJ/m2 ;
• Risco Pesado ou Risco 3 - fogo em elevada carga de incêndio, cujo
desenvolvimento se faz com elevada liberação de calor. A carga de
incêndio é de até 540.000 a 1.080.000 Kcal/m2 ou aproximadamente
2.260 a 4.500 MJ/m2 .
5.2.7
Classificação do Risco quanto a Carga de Incêndio
De acordo com o Decreto no.44.270 de 31 de março de 2006 , que regulamenta a segurança contra incêndio e pânico nas edificações e áreas de risco
no Estado de Minas Gerais, o Risco se classifica quanto à carga de incêndio,
como apresentado na Tabela 7.
Tabela 7: Classificação do Risco quanto a Carga de Incêndio
Ocupação Carga de Incêndio (MJ/m2 )
Baixo
Até 300
Médio
Acima de 300 até 1200
Alto
cima de 1200
Fonte: MINAS GERAIS, 2006
A avaliação dos materiais com relação ao seu comportamento diante do
fogo, ou seja, a reação ao fogo dos mesmos, mostra-se necessária e de grande
43
6 CARACTERÍSTICAS DA CIDADE COLONIAL DE OURO PRETO
valia, pois envolve variáveis que estão diretamente associadas aos fatores que
definem o risco de incêndio. Por meio dessa avaliação, torna-se possı́vel atuar
de maneira preventiva durante o processo produtivo do edifı́cio, reduzindo-se
os riscos causados pelo incêndio (SEITO et al., 2008).
Ainda de acordo com os mesmos autores, estamos assumindo riscos acima
do aceitável em nossas edificações, sendo importante que utilizemos métodos
de avaliação de desempenho e análise de risco de maneira a maximizar os
resultados de Segurança contra Incêndio (SCI) com os recursos investidos.
A análise de risco envolve:
• Modelagem matemática pelo uso de possibilidade de ocorrência de fatores em série ou paralelo para a ocorrência de incêndio.
• Análise de locais de riscos especı́ficos.
• Cálculos de carga de incêndio, velocidade de propagação.
• Cálculo de perdas:humanas, materiais, operacionais, institucionais, etc.
• Probabilidade de deflagração generalizada, ou seja, o incêndio passar
de um edifı́cio para outro alcançando uma escala urbana.
6
CARACTERÍSTICAS DA CIDADE COLONIAL DE OURO PRETO
As cidades mineiras, em sua maioria encravadas nas montanhas, cresce-
ram da junção de arraiais localizados ao longo das encostas, adaptando-se a
44
6 CARACTERÍSTICAS DA CIDADE COLONIAL DE OURO PRETO
uma topografia desfavorável à criação de um sı́tio urbano, apresentando uma
configuração linear, paralela às curvas de nı́vel. “Estas cidades, de acordo
com a hierarquia da organização administrativa colonial, se transformavam
de pequenos arraiais em vilas, com o aglomerado usual da Igreja Matriz, com
o Pelourinho nas proximidades. Desse modo apresentavam um conjunto urbano especı́fico, com edifı́cios oficiais – que constituı́am o centro dominante da
dinâmica cultural – balizando a imagem urbana.” (BARBOSA; TRAMONTANO, acesso em 24/03/08 às 18h).
Os arraiais e vilas que deram origem às cidades do ciclo do ouro mineiro,
foram criados em curto espaço de tempo, refletindo uma lógica própria na
apropriação do espaço urbano. Eles resultaram de uma cultura regional própria, diferentemente das povoações litorâneas, que obedeceram inicialmente a
um traçado militar defensivo, evidenciando não só o desenho mas um estilo de
vida que se aproximava dos da metrópole. Na colônia, em que durante os primeiros dois séculos de colonização predominavam os interesses senhoriais do
mundo rural, a constituição dos núcleos urbanos, apoiados pela coroa, fez-se
num passo decisivo na criação de uma rede urbana dinâmica com um papel apreciável no processo de modernização (BARBOSA; TRAMONTANO,
acesso em 24/03/08 às 18h).
Ouro Preto foi fundada em 1698 como resultado da aglomeração dos
arraiais de mineração nas encostas dos montes Ouro Preto e Itacurumim.
O traçado urbano é irregular, as casas foram sendo construı́das seguindo a
sinuosidade do terreno (Figura 5).
A cidade está localizada na Serra do Espinhaço, na Zona Metalúrgica
de Minas Gerais (Quadrilátero Ferrı́fero). Encontra-se na região central da
45
6 CARACTERÍSTICAS DA CIDADE COLONIAL DE OURO PRETO
Figura 5: Ouro Preto/MG
Fonte: BARBOSA; TRAMONTANO, acesso em 24/03/08 às 18h
macroregião metalúrgica e Campo das Vertendes de Minas Gerais. O municı́pio faz limites ao sul com Catas Altas da Noruega, Itaverava, Ouro Branco
e Congonhas; a oeste com Belo Vale e Moeda; a leste com Mariana; e ao
norte com Itabirito e Santa Bárbara. Seu território corresponde a uma área
de 1245 Km2 , tendo 11 distritos, além da sede.
A distribuição topográfica do municı́pio pode ser assim resumida:
• terreno plano: 5%
• ondulado: 40%
• montanhoso: 55%
De acordo com (ARAÚJO, 2004) a temperatura varia entre 6 e 28o C,
46
6 CARACTERÍSTICAS DA CIDADE COLONIAL DE OURO PRETO
sendo que em junho e julho pode chegar a 2o C. Possui altitude média de
1.116m, tendo como ponto mais alto, com 1.722,o Pico do Itacolomi. O
clima é tropical de altitude, com pluviosidade média de 2.018 mm/ano, com
chuvas concentradas no verão. Dentre os rios, tem-se as nascentes do rio
das Velhas, rio Piracibaca, rio Gualaxo do Norte, rio Gualaxo do Sul, rio
Mainart e ribeirão Funil. Os minerais encontrados em Ouro Preto são o
ouro, a hematita, a dolomita, a turmalina, a pirita, a granada, a moscovita,
o topázio e o topázio imperial. O topázio imperial é uma pedra só encontrada
em Ouro Preto, especialmente no distrito Rodrigo Silva.
Segundo resultado da contagem populacional , em 2007, a população
total do municı́pio de Ouro Preto corresponde a 67.048 habitantes (IBGE,
2007).
Por manter com tamanha integridade e coerência a sua inteira imagem
setecentista, Ouro Preto, tendo se beneficiado em sua formação e desenvolvimento no perı́odo colonial do fato de ter sido um dos primeiros e mais
intensos núcleos de mineração do ouro e de ter sido o centro das decisões
administrativas do território mineiro, e, além disso, por fatores de ordem
econômica, com a decadência da mineração, constitui hoje, na opinião dos
técnicos da UNESCO, no exemplo de maior autenticidade ainda existente,
pelo conjunto e unidade e da civilização urbana aqui implantada pelos colonizadores portugueses. A UNESCO então em 1980, elevou a cidade de Ouro
Preto à condição de Patrimônio Cultural da Humanidade, para que se estabelecesse uma maior importância às questões da preservação. O conjunto
arquitetônico, de predominância barroca, é constituı́do de 45 monumentos
tombados isoladamente e cerca de mil edificações tombadas em conjunto. Os
47
7 INCÊNDIOS EM OURO PRETO
principais problemas desse núcleo são de adensamento, alterações dos espaços internos, substituição de materiais e dos sistemas de construção originais,
além de um grande número de obras irregulares (OLIVEIRA, 2003.).
Ouro Preto, que é uma das cidades mais emblemáticas para a história e a
cultura brasileiras, foi o principal centro de mineração no século 18, palco da
Conjuração Mineira de 1789 e fonte de inspiração dos artistas modernistas
da Semana de 22, que a identificaram como um dos berços da identidade
nacional (OLIVEIRA, 2003.).
Na cidade encontram-se grandes criações artı́sticas dos mestres Aleijadinho e Ataı́de, além de uma rica e antiga cultura imaterial, cujas manifestações
artı́stico-religiosas e musicais vêm sendo transmitidas geração a geração ao
longo dos últimos séculos.
7
INCÊNDIOS EM OURO PRETO
Em que pese sempre parecer uma fatalidade, o incêndio é um fenômeno
fı́sico cujo risco muitas vezes salta ao mais superficial olhar informado. No
caso de Ouro Preto, que pode ser considerado tı́pico no Barroco Mineiro,
dois entre muitos parâmetros de risco são visı́veis: a densidade de carga de
incêndio e o risco de ativação (ALVES, 2003).
Ao longo do tempo, as mudanças na edificação e em seu uso aumentaram
certamente a carga combustı́vel. Apesar de jamais ter sido medida, o processo de mudança do mobiliário e a adaptação de imóveis residenciais para
comerciais faz crer no aumento da densidade da carga de incêndio. Mas não
48
7 INCÊNDIOS EM OURO PRETO
só a quantidade de carga de incêndio tem mudado: a velocidade com que
uma antiga mesa de madeira das casas comerciais da antiga Vila Rica liberaria calor é muito menor que as das mesas de plástico ou dos estofamentos
dos sofás das salas de hoje. Esse fato traz um sério agravamento do risco
(ALVES, 2003).
O primeiro de que se tem notı́cia aconteceu em 1949, de acordo com testemunhas oculares, ou em 1950, segundo o boletim ”Isto é Inconfidência”edição
no 11, do Museu da Inconfidência. O prédio incendiado é o mesmo que,
hoje, abriga o CAEM (Centro Acadêmico da Escola de Minas). Conta-se
que naquele ano havia falta de açúcar no mercado, o que forçava grandes
altas no preço do produto. E uma grande surpresa se revelou com o fogo
no prédio (Figura 6): seu porão estaria abarrotado com sacos de açúcar de
um comerciante local. O açúcar estocado para especulação acabou servindo
como combustı́vel para o incêndio. No entanto, a repercussão do incêndio foi
pouco além das divisas municipais. Ouro Preto vivia o perı́odo do ostracismo
e a mı́dia não tinha o poder que tem hoje. Mesmo tendo a cidade corrido o
perigo que agora se repetiu, parece que nenhuma providência foi tomada para
dotar a cidade de mais segurança contra incêndios. Foi preciso acontecer o
segundo, dezessete anos mais tarde, junho de 1967, quando se incendiou o sobrado onde está instalada agência da Caixa Econômica Federal, na Rua São
José (Figura 7). O térreo do sobrado era ocupado por uma padaria, e, nos
pavimentos superiores funcionava o Clube Social Aluminas, constituı́do por
funcionários da ALUMINAS (Alumı́nio Minas Gerais), hoje Novelis Adytia
Birla. Tudo foi reduzido a cinzas. Depois desse, quando Ouro Preto voltava
a chamar a atenção na mı́dia, iniciaram-se as gestões que culminaram na
49
7 INCÊNDIOS EM OURO PRETO
instalação da guarnição do Corpo Bombeiros. Dez anos depois, 1977, outro grande incêndio comoveu Ouro Preto, também na Rua São José. Desta
vez foi uma tradicional loja de tecidos. Como no incêndio anterior, tudo foi
perdido. Felizmente, nesses sinistros não houveram vı́timas. (Disponı́vel em
www/ouropreto.com.br acessado em 24/02/2008 ás 21h12minutos)
50
7 INCÊNDIOS EM OURO PRETO
Figura 6: Flagrante do incêndio do Fórum em 1950
Fonte:www/ouropreto.com.br acessado em 24/02/2008 ás 21h12minutos
Figura 7: Prédio restaurado após o incêndio de 1967
Fonte:www/ouropreto.com.br acessado em 24/02/2008 ás 21h12minutos
No dia 14 de abril de 2003 a esquina da Praça Tiradentes com a Rua do
51
7 INCÊNDIOS EM OURO PRETO
Figura 8: Prédio restaurado após o incêndio de 1977
Fonte:www/ouropreto.com.br acessado em 24/02/2008 ás 21h12minutos
Ouvidor, entrada para o bairro Antônio Dias, perdeu o contorno imponente
feito pelo casarão setecentista, onde funcionaram por longos anos o hotel e
o restaurante Pilão. De acordo com informações de pessoas que trabalham
ou circulavam nas proximidades, eram cerca de 17 horas 30 minutos, quando
foram detectados os primeiros indı́cios do incêndio. O fogo teria se iniciado
num cômodo dos fundos, talvez na cozinha, da joalheira ( Amsterdan Sauer).
A guarnição local do Corpo de Bombeiros foi acionada e o combate ao sinistro se iniciou, mas a equipagem era toda obsoleta e, para agravar a situação,
quando foi necessário um hidrante nas proximidades, este não funcionou. O
fogo se alastrou com facilidade devido às condições da construção: paredes
de pau-a-pique, mandeirame antigo e ressequido, além do material de fácil
combustão nas várias lojas (Figura 9). A parte alta do prédio estava desativada, mas o térreo era ocupado por loja de eletrodomésticos, joalheria,
52
7 INCÊNDIOS EM OURO PRETO
farmácia e um café. Espalhada a notı́cia, as vizinhas cidades de Mariana e
Itabirito enviaram socorro por meio dos Bombeiros Voluntários da mesma
forma reagiram empresas e empresários, que enviaram carros pipa. A essa
altura já se configurava perda total do prédio, mas havia que se impedir a
propagação do fogo para os prédios vizinhos, o que levaria à destruição uma
grande parte do centro histórico, uma vez que os casarões são geminados.
Somente depois das 21 horas o fogo foi controlado.
Figura 9: Incêndio no prédio do Pilão
Fonte:www/ouropreto.com.br acessado em 24/02/2008 ás 21h12minutos
53
7 INCÊNDIOS EM OURO PRETO
Em março de 2007, o incêndio da República Baviera, Figura 10, infelizmente, é tragicamente tı́pico. O Corpo de Bombeiros não chega a tempo, não
está bem equipado, não existem hidrantes próximos e o que se tentou usar
não tinha água. Não havia proteção domiciliar. E se armazenava material
inflamável de maneira inadequada. Além do problema com a rede de hidrantes, o Corpo de Bombeiros teve dificuldade em acessar o local do incêndio,
pois as ruas estreitas da cidade dificultaram as manobras do caminhão.
Figura 10: Incêndio no República Estudantil Baviera
Fonte:www/ouropreto.com.br acessado em 24/02/2008 ás 21h12minutos
54
8 ANÁLISE DE RISCO DE INCÊNDIO EM SÍTIOS HISTÓRICOS
8
ANÁLISE DE RISCO DE INCÊNDIO EM
SÍTIOS HISTÓRICOS
Após a ocorrência do incêndio na edificação que abrigava o Hotel Pi-
lão, em abril de 2003, houve grande mobilização por parte de governantes
e da sociedade em geral para que fosse implantado um estudo do risco de
incêndio na cidade de Ouro Preto, bem como para aplicação de medidas capazes de diminuı́-lo. Por isso, foi desenvolvido um programa de segurança
contra incêndio, que contou com a participação da Universidade Federal de
Ouro Preto, sob coordenação do Profo Antônio Maria Claret de Gouvêia.
De acordo com Araújo(2004) , para se avaliar o risco de incêndio a que está
exposta uma edificação ou um conjunto de edificações, foi realizada a análise
global de risco, adaptando-se o Método de Gretener (norma técnica SIA-81Societé Suisse des Ingenieurs et Architectes – Method for fire safety evaluation) para edificações caracterı́sticas do barroco brasileiro.
Como bem enfatiza Claret (2006) , a idéia central desse método é o
balanceamento de parâmetros de risco e medidas de segurança presentes na
edificação. Os primeiros facilitam e os segundos dificultam o desenvolvimento
e a propagação dos incêndios. Essa filosofia de projeto de segurança contra
incêndio foi desenvolvida para companhias de seguro pelo engenheiro suı́ço
Max Gretener, entre 1960 e 1965, tendo se universalizado em face da sua
simplicidade. Para viabilizar o balanceamento, foi necessário quantificar o
perigo de incêndio e a segurança contra incêndio na edificação por meio da
atribuição de pesos que foram denominados, respectivamente, fatores de risco
e fatores de segurança. Em conseqüência, a medida do perigo de incêndio na
55
8 ANÁLISE DE RISCO DE INCÊNDIO EM SÍTIOS HISTÓRICOS
edificação foi denominada exposição ao risco de incêndio (E ). Analogamente,
a medida da segurança foi denominada segurança contra incêndio (S ). Há,
portanto, dois conceitos opostos que expressam a facilidade e a dificuldade de
desenvolvimento e propagação de incêndio em uma edificação: a exposição
ao risco de incêndio, E, e a segurança contra incêndio, S. Para quantificá-los,
utiliza-se um sistema de pesos ou fatores de risco e de segurança, respectivamente, cujo produto será a sua medida. Então, sendo fi, i = 1, p os fatores
de risco (isto é, os pesos que atribuı́mos a cada um dos parâmetros de risco
existentes na edificação) e sj, j = 1, n os fatores de segurança (isto é, os
pesos que atribuı́mos a cada um dos fatores de segurança), as grandezas E
(equação 2) e S (equação 3) são assim definidas:
E=
p
Y
fi
(2)
si
(3)
1
S=
n
Y
1
Como vimos anteriormente, o conceito de risco de incêndio envolve a
noção de probabilidade: maior risco de incêndio significa maior probabilidade
de ocorrência de um incêndio severo na edificação. Ora, a exposição ao risco
de incêndio é uma grandeza que não expressa a noção de probabilidade,
mas indica, a qualquer tempo, a idéia de que um incêndio é possı́vel em
um dado compartimento, ou seja, existe possibilidade de ocorrência de um
incêndio. Nesse ponto, salta aos olhos a idéia de que a exposição ao risco de
incêndio é uma medida do potencial de incêndio que pode ser ativado por
circunstâncias especiais, decorrendo dessa probabilidade de ativação o risco
56
8 ANÁLISE DE RISCO DE INCÊNDIO EM SÍTIOS HISTÓRICOS
de incêndio. Assim, o risco de incêndio, representado por R, é definido pelo
produto da grandeza determinı́stica E, que denota a exposição ao risco de
incêndio, pela grandeza probabilı́stica A, que denota o risco de ativação de
incêndio. Isto é:
R = E.A
(4)
Conhecendo o risco de incêndio, R, e a segurança contra incêndio, S,
ambas grandezas probabilı́sticas, como vimos na seção anterior, a razão da
segunda pela primeira fornece um coeficiente de segurança contra incêndio,
denotado por γ , que mede o balanceamento entre medidas que dificultam o
incêndio e medidas que o favorecem, ambas afetadas pelos respectivos fatores
de ativação:
γ=
S
R
(5)
Então, γ mede o eventual desequilı́brio entre risco de incêndio e segurança contra incêndio. γ ≥ 1 indica uma situação favorável à segurança;
ao contrário, γ < 1 indica uma situação desfavorável quanto à segurança
contra incêndio. Não se pode falar quantitativamente em probabilidade de
ocorrência de um incêndio severo, mas é possı́vel falar-se em maior ou menor
risco de ocorrência de um incêndio severo, conforme o caso. Sabemos que, ao
elaborar um projeto de segurança contra incêndio, desejamos obter o maior
coeficiente de segurança contra incêndio com o menor investimento possı́vel.
Essa relação de forças no projeto deve ser disciplinada pela exigência legal,
via normas técnicas, de um coeficiente de segurança mı́nimo aceitável, γmin .
57
8 ANÁLISE DE RISCO DE INCÊNDIO EM SÍTIOS HISTÓRICOS
Logo, no projeto de segurança a ser implementado na edificação deve-se ter:
γ ≥ γmin
(6)
Deve-se observar que a equação 6, a despeito de sua simplicidade, encerra
toda a complexidade do sistema [edificação + incêndio + usuário] no termo
γ, e todos os aspectos polı́tico-econômico-sociais envolvidos no problema da
segurança contra incêndio no termo γmin . É por essa razão que se diz que
o método ora proposto é uma análise global do risco de incêndio.
O método se particulariza quando se determinam os parâmetros de risco
predominantes nos sı́tios históricos considerados e os fatores de risco a eles
atribuı́dos. De modo análogo, o método deve propor um conjunto de medidas
de segurança viáveis de se implantar nos sı́tios históricos e a eles atribuir
fatores de segurança, como apresentado a seguir propostos pelo método.
A aplicação do método deverá compreender as seguintes fases:
a) levantamento de dados da edificação ou conjunto de edificações
Na tabela 11, vê-se uma lista dos dados contendo parte dos dados necessários para a elaboração de uma análise de risco.
58
8 ANÁLISE DE RISCO DE INCÊNDIO EM SÍTIOS HISTÓRICOS
Figura 11: Levantamento de dados
Fonte: CLARET, 2006
59
8 ANÁLISE DE RISCO DE INCÊNDIO EM SÍTIOS HISTÓRICOS
b) determinação da exposição ao risco de incêndio da edificação ou do
conjunto
A exposição ao risco de incêndio ou perigo de incêndio, em uma edificação
ou conjunto de edificações, é a grandeza determinı́stica que mede o peso
total dos parâmetros impulsionadores do incêndio aı́ presentes. O método
ora proposto elegeu um conjunto de seis parâmetros que predominam na
definição do incêndio. Então, a partir dos dados levantados na fase anterior,
a exposição ao risco de incêndio pode ser determinada pela expressão:
E = f1 .f2 .f3 .f4 .f5 .f6
(7)
sendo que f1 é o parâmetro referente à carga de incêndio e como bem
enfatiza (CLARET, 2006), em geral, a grandeza da densidade de carga de
incêndio é determinada com o emprego de dados de normas técnicas nacionais
e estrangeiras. No caso dos sı́tios históricos, a medição direta da densidade de
carga de incêndio é uma necessidade. Os levantamentos realizados em Ouro
Preto, por exemplo, e descritos na literatura técnica, indicam que os valores
caracterı́sticos das edificações coloniais podem superar em muito os valores
prescritos em normas técnicas. Os fatores de risco associados à grandeza da
carga de incêndio estão apresentados na Fig. 12.
c) determinação da segurança
O levantamento de dados permitiu identificar também as medidas de
segurança existentes na edificação. Desse modo, é possı́vel medir a segurança
contra incêndio, S, por meio da atribuição dos pesos definidos para esse fim,
isto é:
60
8 ANÁLISE DE RISCO DE INCÊNDIO EM SÍTIOS HISTÓRICOS
Figura 12: Densidades de carga de incêndio e fatores de risco
Fonte: CLARET, 2006
S = s1 .s2 ...sn
(8)
A grandeza de S depende do número e do tipo de medidas de segurança
existentes na edificação. S é uma grandeza determinı́stica, análoga a E, e no
seu cálculo deve-se levar em conta o princı́pio da não-exclusão.
Como o método é aplicável compartimento a compartimento, as medidas de segurança disponı́veis na edificação, em geral, são consideradas como
operacionais em todo o compartimento em questão. Cabe ao profissional
incumbido da análise de risco identificar as situações em que isso não é verdadeiro.
d) determinação dos riscos de ativação
Os riscos de ativação são determináveis a partir do levantamento de dados. Denominando de A o risco de ativação aplicável a cada um dos compartimentos de uma edificação, ou de um conjunto de edificações, tem-se:
A = A1 .Ak
61
(9)
8 ANÁLISE DE RISCO DE INCÊNDIO EM SÍTIOS HISTÓRICOS
onde k = 2, 3, 4 , em face do princı́pio da exclusão. Isto é, o risco de
ativação devido à ocupação é inerente ao compartimento, enquanto a mesma
perdurar. Os demais riscos são acidentais, tornando-se o maior deles aplicável
ao caso. Os compartimentos podem ter riscos de ativação distintos em uma
mesma edificação, mas, quando um compartimento tem vários cômodos, é
necessário considerar o maior dos riscos de ativação de cada cômodo como
aplicável ao compartimento.
e) cálculo do risco global de incêndio
O risco global de incêndio é calculado pelo produto da exposição ao risco
de incêndio, E, pelo risco de ativação, A. Isto é:
R = E.A
(10)
O risco global de incêndio é associado a um compartimento. Para uma
edificação, toma-se o maior risco associado a um de seus compartimentos, e,
para um conjunto de edificações, o maior risco associado a uma das edificações
que o compõem.
f) análise da segurança
Conhecido o risco global de incêndio, o coeficiente de segurança da edificação pode ser determinado pela razão entre o risco e a segurança, isto
é:
γ=
S
≥ γmin
R
62
(11)
9 O LEVANTAMENTO NO BAIRRO ANTÔNIO DIAS
9
O LEVANTAMENTO NO BAIRRO ANTÔNIO DIAS
O levantamento no bairro Antônio Dias foi realizado por (ARAÚJO,
2004) durante aproximadamente um mês e em cada edificação a sua duração
variou entre três e seis horas. Os dados colhidos preencheram uma planilha
elaborada especificamente para este fim, seguindo as diretrizes aplicadas no
primeiro estudo, realizado em novembro de 2003, na rua São José, Ouro
Preto, MG. O levantamento foi realizado com o apoio do laboratório de
Análise de Risco de Incêndio – LARIn, grupo interdisciplinar informal de
pesquisadores em Engenharia de Incêndio, atuantes em ensino e pesquisa
na Universidade Federal de Ouro Preto. O entorno da Igreja Matriz de
Nossa Senhora da Conceição possui cerca de 86 edificações. A seleção para
o levantamento dos dados foi feita através do inventário de bens tombados
do IPHAN – Instituto do Patrimônio Histórico e Artı́stico Nacional. Foram
então selecionadas trinta edificações, limitando-se a este número pelo tempo
disponı́vel para o estudo.
63
9 O LEVANTAMENTO NO BAIRRO ANTÔNIO DIAS
Figura 13: Mapa do bairro Antônio Dias, com indicação das edificações que
compuseram o levantamento da carga de incêndio
Fonte: Escola de Arquitetura da UFMG, 2001/2002 apud (ARAÚJO, 2004)
64
10 PROGRAMAÇÃO
A região de estudo, que inclui a Praça Antônio Dias, a rua Bernardo
Vasconcelos, a rua do Aleijadinho, a rua da Conceição e a rua Felippe dos
Santos, no bairro Antônio Dias, é constituı́da essencialmente por edificações
residenciais.
Ao concluir o referido levantamento,(ARAÚJO, 2004)verificou que no
caso do bairro Antônio Dias, em Ouro Preto, apesar das edificações analisadas, quase em sua totalidade, não terem passado por intervenções para transformação de uso, mantendo-se assim muitas caracterı́sticas originais, como as
disposições dos cômodos e as aberturas, a preservação dessas caracterı́sticas
não é acompanhada pela manutenção dessas edificações. As condições de
muitas delas são extremamente precárias.
10
PROGRAMAÇÃO
Dentro do campo de atuação da programação, a tecnologia tem o objetivo
de eliminar as tarefas repetitivas, facilitando o trabalho e fazendo-o mais
eficiente.
Na década de 50 surgiu a primeira linguagem de grande aceitação, o
Fortran.
Um programa de computador é a formalização de um algoritmo em qualquer linguagem capaz de ser transformada em instruções que serão executadas
por um computador gerando os resultados esperados.
Um programa de computador também é conhecido como software, software aplicativo, software de sistema ou simplesmente programa. O termo
65
10.1 TIPOS DE PROGRAMAÇÃO
10 PROGRAMAÇÃO
software pode ser utilizado quando se quer designar um conjunto de programas ou, mais freqüentemente, quando é feita uma referência à parte não fı́sica
do sistema computacional, em contraposição ao termo hardware, que designa
o conjunto de componentes eletrônicos que constituem um computador.
O ato de programar um computador é um processo iterativo que consiste
na criação ou alteração de código fonte, seguido de testes, análise e posterior
refinamento do resultado. Uma pessoa que realiza este trabalho é conhecida
como programador de computador ou desenvolvedor de software. A criação
de programas de computador, quando baseada em metodologias ou processos
formalizados, é conhecida como engenharia de software. Cada linguagem de
programação segue uma metodologia diferente.
10.1
TIPOS DE PROGRAMAÇÃO
Existem várias classes de programação, dependendo dos métodos utilizados e as técnicas empregadas.
Os tipos ou técnicas de programação são bastante variados, no entanto
as principais técnicas centram-se em programação estruturada, programação
modular e programação orientada a objetos.
10.1.1
Programação estruturada (PE)
Um programa está estruturado se possui um único ponto de entrada e
só um de saı́da, existem de ”1 a n”caminhos desde o princı́pio até o fim
do programa e por último, que todas as instruções são executáveis sem que
66
11 PROGRAMAÇÃO ORIENTADA A OBJETOS(OO)
apareçam loops infinitos. A programação estruturada utiliza um número
limitado de estruturas de controle, reduzindo assim consideravelmente os
erros.
10.1.2
Programação modular ou procedural
A programação modular consta de várias seções dividas, que integram
o programa em sua totalidade, e que interagem através de chamadas a procedimentos. Na programação modular, o programa principal coordena as
chamadas aos módulos secundários e passa os dados necessários em forma
de parâmetros. Por sua vez cada módulo pode conter seus próprios dados e
chamar a outros módulos ou funções.
10.1.3
Programação Orientada a Objetos (POO)
Trata-se de uma técnica que aumenta consideravelmente a velocidade de
desenvolvimento dos programas graças à reutilização dos objetos. A seguir
serão apresentados os fundamentos da POO.
11
PROGRAMAÇÃO ORIENTADA A OBJETOS(OO)
A maioria das linguagens de programação modernas oferece suporte à
Programação Orientada a Objetos (POO). A Programação Orientada a Objetos, também chamada Orientada por Objetos, revela uma forma distinta
67
11 PROGRAMAÇÃO ORIENTADA A OBJETOS(OO)
de se estruturar os programas. Todas as informações são colocadas e organizadas na forma de objetos e o uso ou a manutenção destas informações deve
seguir as regras descritas pela classe do objeto em questão. Uma de suas
vantagens é a reutilização de código através de herança permitindo, desse
modo, que uma equipe com várias pessoas possa dividir um grande projeto,
e cada parte deste ser unida com as outras sem que haja problemas com
incompatibilidade (MORAIS, Acesso em 17/09/07 às 18h).
Segundo Retamal (2005b) para se obter um bom design(modelo de objetos) é necessário a utilização de um método de análise adequado, ou seja,
orientado a objetos. Sem uma visão de mundo Orientada a Objetos - OO,
derivar um projeto para uma boa implementação OO torna-se um enorme
desafio, senão inútil. A visão de mundo orientada a objetos oferece um excelente paradigma para o entendimento de um determinado contexto ou situação, denominado domı́nio do problema. Anteriormente, eram muito comum
o enfoque funcional e o enfoque de dados. Historicamente, dados e funções
sempre foram considerados separadamente, desde a arquitetura do hardware
até muitas linguagens de programação não-OO. O húngaro Johann Louis
von Neumann, por volta de 1945, foi quem sugeriu que, no hardware, tanto
os dados quanto os programas fossem armazenados na mesma memória. No
mundo do software, os conceitos OO começaram a aparecer por volta de 1959.
Alguns anos depois, a linguagem Simula-67 foi desenvolvida para facilitar simulações, oferecendo várias caracterı́sticas de orientação por objetos. Em
1989 a Borland lançou o Turbo Pascal 5.5 com Object Pascal, com extensões para Programação Orientada a Objetos. Cinco anos e várias melhorias
depois, a Borland lançou o Delphi 1.0.
68
11.1 ANÁLISE OO
11 PROGRAMAÇÃO ORIENTADA A OBJETOS(OO)
11.1
ANÁLISE OO
O paradigma de Programação Orientada por Objetos pode significar uma
melhor organização, planejamento, desenvolvimento e manutenção de uma
aplicação. No entanto, programar OO sem um projeto (design) OO pode ser
uma tarefa difı́cil, levando a uma implementação deficiente, sendo portanto,
necessário um método de análise adequado, também orientado por objetos,
para se obter um bom modelo de objetos. Os requisitos devem ser analisados
a partir da perspectiva das classes e objetos encontrados no vocabulário do
domı́nio do problema, enfatizando a construção de modelos do mundo real
usando uma visão de mundo orientada por objetos (RETAMAL, 2005c).
Ainda, de acordo com Retamal (2005c) , para o processo de classificação,
buscando a compreensão do mundo real, costuma-se empregar três métodos:
• Diferenciação, baseada na experiência de cada um (as pessoas e os
outros objetos);
• Distinção entre o todo e suas partes (a pessoa e seus órgãos e tecidos);
• Formação de, e distinção entre, as diferentes classes de objetos (classes
de pessoas, classes de veı́culos,etc).
Por meio desse processo, se consegue distinguir determinados grupos,
através de suas similaridades e diferenças.
69
11.2 CONCEITOS
11 PROGRAMAÇÃO ORIENTADA A OBJETOS(OO)
11.2
CONCEITOS
Os conceitos fundamentais da orientação por objetos, estendem-se também à análise e ao projeto orientado por objetos.
A seguir apresentam-se os principais conceitos da orientação por objetos
conforme Boratti(2002), Morais (2007) e Retamal (2005a) e .
Objeto
Termo que se refere a qualquer entidade que represente algum significado,
mesmo que não se constitua de algo concreto ou palpável. É a informação
em memória e segue as regras definidas pela classe que o criou.
Classe
Conjunto de informações que modelam o objeto. A classe não ocupa
espaço em memória e não tem dados especı́ficos do programa e possui apenas
as regras que irão definir o comportamento de um objeto.
Abstração
Princı́pio de ignorar os aspectos de um assunto não relevantes para o propósito em questão, o que torna possı́vel uma concentração maior nos assuntos
principais.
Encapsulamento
Cada componente do programa deve conter uma única decisão de projeto,
isto é, um agrupamento de aspectos relacionados a uma idéia ou entidade.
Além disso, a interface para cada módulo é definida de forma a revelar o menos possı́vel sobre o seu funcionamento interno, implementando a ocultação
70
11.2 CONCEITOS
11 PROGRAMAÇÃO ORIENTADA A OBJETOS(OO)
de informação. Se for necessário fazer alguma alteração dentro da “cápsula” o
mundo exterior não precisa ser alterado como conseqüência de tal alteração.
Identidade
Um objeto distingue-se de outro pelo simples fato de existir e sua identidade independe dos valores de seus atributos. Ao serem alocados na memória
do computador, dois objetos, embora possam ter todos os atributos iguais,
seus endereços de memória são diferentes.
Herança
Expressa a similaridade entre classes, simplificando a definição de classes
iguais e outras que já foram definidas (reutilização de código).
Polimorfismo
A capacidade de uma mensagem ser entendida e executada de forma
diferente por objetos distintos. É também a possibilidade de se manipular
objetos mais especializados como se fossem objetos mais genéricos.
Associação
União ou conexão de idéias. Agrupar certas coisas que acontecem em
algum ponto no tempo ou sob circunstâncias similares. Além das associações
simples, também podemos ter composições e agregações.
11.2.1
Tipos Básicos de Objetos
Normalmente, independente do domı́nio do problema, encontraremos
quatro tipos básicos de objetos em todos eles. Esses quatro tipos básicos
71
11.2 CONCEITOS
11 PROGRAMAÇÃO ORIENTADA A OBJETOS(OO)
são chamados de arquétipos e são definidos pela Unified Modeling Language
- UML.
Momento-Intervalo
Representa algo que necessita ser registrado, por razões de negócio ou
até mesmo legais, que ocorrem em algum momento no tempo ou durante um
intervalo de tempo. São atividades, eventos e serviços. É identificado pela
cor rosa.
Pessoas, lugares ou coisas
Representa uma pessoa (fı́sica ou jurı́dica), um certo local (endereço,
casa, privado, público) ou algum objeto, geralmente concreto. É identificado
pela cor verde.
Papel
É a representação de um papel que é desempenhado por alguma pessoa,
lugar ou coisa em um determinado evento do negócio (momento-intervalo).
É mais comumente aplicado a pessoas, mas é possı́vel utiliza-lo com lugares
e até mesmo com coisas. Sua cor é o amarelo.
Descrição
Define as caracterı́sticas de uma determinada coisa, lugar ou até mesmo
pessoas, apesar de menos comum, como um item em um catálogo. Usado
para concentrar dados comuns a diversos objetos, aparece na cor azul.
72
12 LINGUAGEM DE PROGRAMAÇÃO
12
LINGUAGEM DE PROGRAMAÇÃO
Uma linguagem de programação é um método padronizado para expres-
sar instruções para um computador. Uma linguagem permite que um programador especifique precisamente sobre quais dados um computador vai atuar,
como estes dados serão armazenados ou transmitidos e quais ações devem ser
tomadas sob várias circunstâncias. Pode-se citar, pela sua ampla utilização,
as linguagens de programação:
• C++ ( lê-se ”cê mais mais”), amplamente utilizada em desenvolvimento
de sistemas opercaionais (tais como Windows e Linux), em aplicativos
desktop e também em sistemas microprocessados na área de automação
industrial.
• Java - é uma linguagem de programação completamente orientada a objetos e tornou-se popular pelo seu uso na internet. Por esse motivo, sua
aplicação vem crescendo a cada dia nas mais diversas plataformas. Por
ser uma linguagem completamente orientada a objetos , praticamente
não se consegue programar apenas de forma estruturada em Java como
se faz em outras linguagens,
• Object Pascal - O lançamento do DELPHI em 1995 deu um novo estı́mulo do uso do Pascal, pois ele é um ambiente de programação baseado nessa linguagem e não uma nova linguagem de programação. Além
disso, o Delphi implementa novos recursos, notadamente na parte de
classes e objetos, e, devido a eles e aos novos tipos de dados agregados
ao sistema, o Pascal do Delphi é conhecido como Object Pascal.
73
12.1 DELPHI
12.1
13 METODOLOGIA
DELPHI
O Delphi é uma das melhores combinações de programação orientada a
objetos e programação visual para Windows. Em uma ferramenta de programação visual como o Delphi, o papel do ambiente às vezes é ainda mais
importante do que a linguagem de programação em si, pela facilidade e rapidez de desenvolvimento.
O nome Delphi é inspirado na cidade de Delfos, o único local na Grécia
antiga em que era possı́vel consultar o Oráculo de Delfos. O nome deve-se
ao fato de que os desenvolvedores do compilador buscavam uma ferramenta
capaz de acessar o banco de dados Oracle - daı́ um trocadilho comum entre
programadores em Delphi: ”a única maneira de acessar o oráculo é usando
Delphi”.
A linguagem utilizada pelo Delphi, o Object Pascal (Pascal com extensões orientadas a objetos) a partir da versão 7 passou a se chamar Delphi
Language.
13
METODOLOGIA
O desenvolvimento do software para calcular a carga de incêndio se deu
por meio das etapas descritas a seguir.
74
13.1 ETAPA 1 – LEVANTAMENTO DE DADOS 13 METODOLOGIA
13.1
ETAPA 1 – LEVANTAMENTO DE DADOS
Por meio de pesquisas na literatura correlata sobre carga de incêndio
de materiais de uso comum e de metodologia para realização de um estudo
de caso sobre o risco global de incêndio aplicada à cidade de Ouro Preto,
realizada por Araújo (2004) , selecionou-se valores de pontenciais calorı́ficos e
de cargas de incêndios os quais foram o banco de dados do software, conforme
apresentado nos anexos ?? a ??.
13.2
ETAPA 2 – ANÁLISE OO
Embasado nos dados obtidos na etapa anterior, aplicou-se o processo de
classificação que permitiu a definição de objetos virtuais utilizados no software. Mediante observação das similaridades, isto é, caracterı́sticas comuns
dos objetos, tais como largura, altura, profundidade, pé-direito, potencial calorı́fico entre outros, foram definidos grupos denominados classes, tais como:
• Geral
• Edificação
• Pavimento
• Cômodo
• Objeto(real)
• Regras de negócio
• Relatórios
75
13.3 ETAPA 3 – MODELAGEM OO
13.3
13 METODOLOGIA
ETAPA 3 – MODELAGEM OO
As classes definidas na etapa 2 foram submetidas à modelagem orientada a objetos utilizando-se o editor de modelos do Delphi 7.0. Conforme
apresentado no exemplo a seguir, Figura 14, podemos observar que o diagrama apresenta informações sobre as propriedades que os objetos descritos
pela referida classe contém, chamados atributos (attributes), e os métodos
(operations) que tais objetos podem executar. Em resumo: as propriedades
são as caracterı́sticas dos objetos e os métodos são as ações que esses objetos
eventualmente executam.
Figura 14: Diagrama de classe Pavimento
13.4
ETAPA 4 – PROGRAMAÇÃO OO
Um exemplo de código em object Pascal é apresentado na listagem 1.
76
13.4 ETAPA 4 – PROGRAMAÇÃO OO
13 METODOLOGIA
Listagem 1: ”Código para a classe TObjeto”
1
u n i t U Objeto ;
2
interface
3
uses
4
S y s U t i l s , Windows , Messages , C l a s s e s , Graphics , C o n t r o l s ,
5
Forms , D i a l o g s , U Material , U Vizinho , G r id s ;
6
type
7
TObjeto = c l a s s ( TObject )
8
private
9
FNome : s t r i n g ;
10
FAltura : Real ;
11
FLargura : Real ;
12
FProfundidade : Real ;
13
FMaterial : String ;
14
FPosX : Real ;
15
FPosY : Real ;
16
FPosZ : Real ;
17
FVolume : Real ;
18
FCargaEspecifica : real ;
19
FMassaEspecifica : real ;
20
FEnergia : r e a l ;
21
procedure S e t A l t u r a ( const Value : Real ) ;
22
procedure S e t L a r g u r a ( const Value : Real ) ;
23
procedure S e t P r o f u n d i d a d e ( const Value : Real ) ;
24
procedure S e t M a t e r i a l ( const Value : S t r i n g ) ;
25
procedure SetNome ( const Value : s t r i n g ) ;
26
procedure SetPosX ( const Value : Real ) ;
27
procedure SetPosY ( const Value : Real ) ;
28
procedure SetPosZ ( const Value : Real ) ;
29
procedure S e t M a s s a E s p e c i f i c a ( const Value : r e a l ) ;
30
function C a l c C a r g a I n c e n d i o ( ) : r e a l ;
77
13.4 ETAPA 4 – PROGRAMAÇÃO OO
13 METODOLOGIA
procedure S e t C a r g a E s p e c i f i c a ( const Value : r e a l ) ;
31
public
32
33
c o n s t r u c t o r Create ;
34
d e s t r u c t o r Destroy ;
35
p r o p e r t y Nome : s t r i n g read FNome write SetNome ;
36
p r o p e r t y M a t e r i a l : S t r i n g read F M a t e r i a l write S e t M a t e r i a l ;
37
p r o p e r t y A l t u r a : Real read FAltura write S e t A l t u r a ;
38
p r o p e r t y Largura : Real read FLargura write S e t L a r g u r a ;
39
p r o p e r t y P r o f u n d i d a d e : Real read FProfundidade write
SetProfundidade ;
40
p r o p e r t y Volume : Real read FVolume ;
41
p r o p e r t y M a s s a E s p e c i f i c a : r e a l read F M a s s a E s p e c i f i c a write
SetMassaEspecifica ;
p r o p e r t y C a r g a E s p e c i f i c a : r e a l read F C a r g a E s p e c i f i c a write
42
SetCargaEspecifica ;
43
p r o p e r t y PosX : Real read FPosX write SetPosX ;
44
p r o p e r t y PosY : Real read FPosY write SetPosY ;
45
p r o p e r t y PosZ : Real read FPosZ write SetPosZ ;
46
procedure GetStream ( var ValStream : TMemoryStream ) ;
47
procedure SetStream ( ValStream : TMemoryStream ) ;
48
procedure CalcVolume ;
49
p r o p e r t y E n e r g i a : r e a l read FEnergia ;
50
procedure C a l c u l o s ( ) ;
end ;
51
52
implementation
53
{ TObjeto }
54
{
55
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ TObjeto
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
56
}
57
c o n s t r u c t o r TObjeto . C r e a t e ;
78
13.4 ETAPA 4 – PROGRAMAÇÃO OO
58
13 METODOLOGIA
begin
59
FNome := ’’ ;
60
F M a t e r i a l := ’’ ;
61
FAltura := 0 ;
62
FLargura := 0 ;
63
FProfundidade := 0 ;
64
FVolume := 0 ;
65
F C a r g a E s p e c i f i c a := 0 ;
66
F M a s s a E s p e c i f i c a := 0 ;
67
FPosX := 0 ;
68
FPosY := 0 ;
69
FPosZ := 0 ;
70
end ;
71
d e s t r u c t o r TObjeto . Destroy ;
72
begin
73
end ;
74
procedure TObjeto . GetStream ( var ValStream : TMemoryStream ) ;
75
var S t r 1 : TMemoryStream ;
76
L : Int64 ;
77
St : S t r i n g ;
78
ch : char ;
79
k : integer ;
80
begin
81
S t r 1 := TMemoryStream . C r e a t e ;
82
ValStream . P o s i t i o n := 0 ;
83
St := FNome ;
84
L := Length ( St ) ;
85
ValStream . Write (L , S i z e O f (L) ) ; // grava o comprimento da s t r i n g
86
f or k := 1 to L do
87
ValStream . Write ( St [ k ] , S i z e O f (Ch) ) ; // grava a s t r i n g , ch por
ch
79
13.4 ETAPA 4 – PROGRAMAÇÃO OO
13 METODOLOGIA
88
St := F M a t e r i a l ;
89
L := Length ( St ) ;
90
ValStream . Write (L , S i z e O f (L) ) ; // grava o comprimento da s t r i n g
91
f or k := 1 to L do
ValStream . Write ( St [ k ] , S i z e O f (Ch) ) ; // grava a s t r i n g , ch por
92
ch
93
ValStream . Write ( FAltura , S i z e O f ( FAltura ) ) ;
94
ValStream . Write ( FLargura , S i z e O f ( FLargura ) ) ;
95
ValStream . Write ( FProfundidade , S i z e O f ( FProfundidade ) ) ;
96
ValStream . Write ( FVolume , S i z e O f ( FVolume ) ) ;
97
ValStream . Write ( F C a r g a E s p e c i f i c a , S i z e O f ( F C a r g a E s p e c i f i c a ) ) ;
98
ValStream . Write ( F C a r g a E s p e c i f i c a , S i z e O f ( F C a r g a E s p e c i f i c a ) ) ;
99
ValStream . Write ( F M a s s a E s p e c i f i c a , S i z e O f ( F M a s s a E s p e c i f i c a ) ) ;
100
101
S t r 1 . Destroy ;
end ;
102
103
procedure TObjeto . SetStream ( ValStream : TMemoryStream ) ;
104
var
105
Xr : r e a l ;
106
Ch : char ;
107
k : integer ;
108
L : Int64 ;
109
St : S t r i n g ;
110
begin
111
ValStream . P o s i t i o n := 0 ;
112
ValStream . Read(L , S i z e O f (L) ) ;
113
St := ’’ ;
114
f or k := 1 to L do
115
begin
116
ValStream . Read(Ch , S i z e O f (Ch) ) ;
117
St := St+ch ;
80
13.4 ETAPA 4 – PROGRAMAÇÃO OO
end ;
118
119
FNome := St ;
120
ValStream . Read(L , S i z e O f (L) ) ;
121
St := ’’ ;
122
f or k := 1 to L do
begin
123
124
ValStream . Read(Ch , S i z e O f (Ch) ) ;
125
St := St+ch ;
end ;
126
127
F M a t e r i a l := St ;
128
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
129
FAltura := Xr ;
130
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
131
FLargura := Xr ;
132
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
133
FProfundidade := Xr ;
134
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
135
FVolume := Xr ;
136
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
137
F C a r g a E s p e c i f i c a := Xr ;
138
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
139
F C a r g a E s p e c i f i c a := Xr ;
140
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
141
F M a s s a E s p e c i f i c a := Xr ;
142
Calculos ;
143
13 METODOLOGIA
end ;
144
145
procedure TObjeto . S e t L a r g u r a ( const Value : Real ) ;
146
begin
147
FLargura := Value ;
148
CalcVolume ;
81
13.4 ETAPA 4 – PROGRAMAÇÃO OO
149
13 METODOLOGIA
end ;
150
151
procedure TObjeto . S e t P r o f u n d i d a d e ( const Value : Real ) ;
152
begin
153
FProfundidade := Value ;
154
CalcVolume ;
155
end ;
156
157
procedure TObjeto . S e t A l t u r a ( const Value : Real ) ;
158
begin
159
FAltura := Value ;
160
CalcVolume ;
161
end ;
162
163
procedure TObjeto . CalcVolume ;
164
begin
165
166
FVolume := FLargura ∗ FProfundidade ∗ FAltura ;
end ;
167
168
procedure TObjeto . S e t M a s s a E s p e c i f i c a ( const Value : r e a l ) ;
169
begin
170
F M a s s a E s p e c i f i c a := Value ;
171
Calculos () ;
172
end ;
173
174
procedure TObjeto . S e t M a t e r i a l ( const Value : S t r i n g ) ;
175
begin
176
F M a t e r i a l := Value ;
177
Calculos () ;
178
end ;
179
82
13.4 ETAPA 4 – PROGRAMAÇÃO OO
180
function TObjeto . C a l c C a r g a I n c e n d i o : r e a l ;
181
begin
182
183
13 METODOLOGIA
r e s u l t := FVolume∗ F M a s s a E s p e c i f i c a ∗ F C a r g a E s p e c i f i c a ;
end ;
184
185
procedure TObjeto . SetNome ( const Value : s t r i n g ) ;
186
begin
187
188
FNome := Value ;
end ;
189
190
procedure TObjeto . SetPosX ( const Value : Real ) ;
191
begin
192
193
FPosX := Value ;
end ;
194
195
procedure TObjeto . SetPosY ( const Value : Real ) ;
196
begin
197
198
FPosY := Value ;
end ;
199
200
procedure TObjeto . SetPosZ ( const Value : Real ) ;
201
begin
202
203
FPosZ := Value ;
end ;
204
205
206
207
procedure TObjeto . C a l c u l o s ;
var i : integer ;
begin
208
CalcVolume ( ) ;
209
FEnergia := FVolume∗ F C a r g a E s p e c i f i c a ∗ F M a s s a E s p e c i f i c a ;
210
end ;
83
13.5 ETAPA 5 – APLICAÇÃO
14 RESULTADOS E DISCUSSÕES
211
212
procedure TObjeto . S e t C a r g a E s p e c i f i c a ( const Value : r e a l ) ;
213
begin
214
F C a r g a E s p e c i f i c a := Value ;
215
end ;
216
end .
13.5
ETAPA 5 – APLICAÇÃO
Para validar o software foram aplicados dados referentes a três exemplos
de cálculo de carga de incêndio especı́fica, ou densidade de carga de incêndio,
realizados de forma manual por Araújo (2004) :
• uma edificaçao considerada de compartimentação única,
• duas edificações que possuı́am vários compartimentos.
Os dados gerados pelo software foram comparados com os apresentados
no cálculo manual, sendo assim avaliada a sua eficiência.
14
RESULTADOS E DISCUSSÕES
14.1
MODELAGEM
De acordo com Retamal (2005d) , a correta identificação das classes é
muito importante para o sucesso de um projeto de programação orientado a
objetos. Como resultado da modelagem realizada no editor de modelos do
84
14.1 MODELAGEM
14 RESULTADOS E DISCUSSÕES
Delphi 7.0, obtivemos para cada classe definida o respectivo diagrama, como
apresentado a seguir.
14.1.1
Geral
Figura 15: Diagrama de classe Geral
85
14.1 MODELAGEM
14.1.2
14 RESULTADOS E DISCUSSÕES
Edificação
Figura 16: Diagrama de classe Edificação
86
14.1 MODELAGEM
14.1.3
14 RESULTADOS E DISCUSSÕES
Pavimento
Figura 17: Diagrama de classe Pavimento
87
14.1 MODELAGEM
14.1.4
14 RESULTADOS E DISCUSSÕES
Cômodo
Figura 18: Diagrama de classe Cômodo
88
14.1 MODELAGEM
14.1.5
14 RESULTADOS E DISCUSSÕES
Objeto (real)
Figura 19: Diagrama de classe Objeto
14.1.6
Regras de negócio
A classe TRegras, vide listagem 3, é responsável pelas regras de negócio.
No jargão técnico, significa uma camada intermediária entre a interface gráfica com o usuário e os demais objetos que compõem o software. Essa classe
nos permite separar o código da interface gráfica e, assim, separar o sistema
em camadas.
14.1.7
Relatórios
À classe TRelatorios, apresentada na listagem 4, cabe a responsabilidade
de gerar relatórios no formato HTML, acessando o browser do computador
89
14.2 PROGRAMAÇÃO
14 RESULTADOS E DISCUSSÕES
para a apresentação dos resultados. Esse procedimento também está em
conformidade com a separação do sistema em camadas.
A utilização do editor de modelos do Delphi 7.0 facilitou a análise e
entendimento do software mediante sua vizualização gráfica.
14.2
PROGRAMAÇÃO
Após a criação das classes onde se evidenciou as propriedades e os métodos necessários à implementação de cada uma delas e, em conseqüência, à
implementação do software como um todo, passamos à codificação do conjunto em object pascal, conforme observa-se nas listagens:
• listagem 2 - Código para a classe FormPrincipal (anexo N)
• listagem 3 - Código para a classe TRegras (anexo O)
• listagem 4 - Código para a classe TRelatorios (anexo P)
• listagem 5 - Código para a classe TEdificacao (anexo Q)
• listagem 6 - Código para a classe TPavimento (anexo R)
• listagem 7 - Código para a classe TComodo (anexo S)
14.3
APLICAÇÃO
Para ilustrar, apresentamos a seguir as telas de uma aplicação do software
de acordo com a seqüência de entrada de dados até a obtenção dos resultados.
90
14.3 APLICAÇÃO
14 RESULTADOS E DISCUSSÕES
Figura 20: Tela de abertura - apresentação do software CCI
91
14.3 APLICAÇÃO
14 RESULTADOS E DISCUSSÕES
Figura 21: Tela que permite escolher uma edificação já cadastrada
92
14.3 APLICAÇÃO
14 RESULTADOS E DISCUSSÕES
Figura 22: Tela para entrada de dados gerais da edificação, nova ou anteriormente cadastrada - suas dimensões, distâncias com relação às edificações
vizinhas e cadastro de pavimentos
93
14.3 APLICAÇÃO
14 RESULTADOS E DISCUSSÕES
Figura 23: Tela para entrada das dimensões por pavimento(s) o que permite
cadastro de pisos com diferentes dimensões de pé-direito
Figura 24: Tela para entrada de(s) cômodo(s) - cadastro de nome e sua especialidade de acordo com tabela de carga de incêncio especı́fica por ocupação
(anexo A)
94
14.3 APLICAÇÃO
14 RESULTADOS E DISCUSSÕES
Figura 25: Tela para entrada de dados do(s) comodo(s) - dimenões e posição
em relação a um ponto da edificação escolhido para ser o inicial para que
possa ser elaborada um croqui da edificação
Figura 26: Tela para cadastro de objeto(s) real(is)
95
14.3 APLICAÇÃO
14 RESULTADOS E DISCUSSÕES
Figura 27: Tela para entrada de dados do(s) objeto(s) real(is) - dimensões,
material, massa especı́fica para determinação de seu volume e de sua carga
de incêndio
Figura 28: Tela para cadastro de dados no banco de dados de materiais nome e potencial calorı́fico
96
14.3 APLICAÇÃO
14 RESULTADOS E DISCUSSÕES
Figura 29: Tela para entrada de dados no banco de tipos de ocupação
Figura 30: Tela para solicitar que seja gerado relatório da aplicação no formato HTML
97
14.3 APLICAÇÃO
14 RESULTADOS E DISCUSSÕES
Figura 31: Tela de ajuda ao usuário contendo tópicos: de descrição do software;a respeito da entrada de dados; orientando como gerar relatórios e com
os principais conceitos sobre carga de incêndio
98
14.3 APLICAÇÃO
14 RESULTADOS E DISCUSSÕES
Figura 32: Relatório HTML
99
15 CONCLUSÃO
A tabela 8 apresenta os resultados alcançados com a otimização proporcionada pelo software, em comparação com os resultados obtidos por
Araújo(2004) .
Tabela 8: Comparativo com valores apresentados por Araújo(2004)
Carga de Incêndio (MJ/m2 )
Ocupação re- Norma
(ARAÚJO, software
Razão
Razão
sidencial
2004) (2)
CCI (3)
(2)/(1)
(3)/(1)
2.745,68
2.763,26
9,15
9,21
922,02
921,68
3,07
3,07
2386,97
2388,81
7,96
7,96
Brasileira
(1)
Único
com- 300
partimento
Vários
com- 300
partimentos
Anexo-térreo
15
300
CONCLUSÃO
A aplicação do software se mostrou eficiente conforme resultados apresen-
tados na tabela 8 comparando-se as colunas Razão (2)/(1) e Razão (3)/(1).
Um importante resultado alcançado foi uma maior agilidade na obtenção
da densidade de carga de incêndio em edificações.
Devido à extensão do banco de dados do software foi viabilizada a determinação da carga de incêndio para uma maior diversidade de materiais,
100
16 CONSIDERAÇÕES FINAIS
comparação com valores apresentados pela norma prescritiva e emissão de
relatório para complementação de laudos técnicos. Além disso, o software
para Cálculo da Carga de Incêndio (C.C.I) poderá contribuir com a otimização do trabalho de profissionais ligados à área de atuação da Engenharia de
Incêndio e para estudos futuros sobre caracterı́sticas de reação ao fogo dos
materiais de uso comum.
16
CONSIDERAÇÕES FINAIS
Ainda que o resultado desse trabalho tenha atendido plenamente nos-
sas espectativas, durante o desenvolvimento do mesmo vislumbramos novas
possibilidades de melhoria do software C.C.I. tais como:
1. implementar o cálculo dos fatores de risco para a aplicação da metodologia de análise de risco global proposta por Claret (2006) ,
2. implementar simulação para a determinação de locais crı́ticos para inı́cio de incêndio em uma edificação,
3. a partir da determinação de locais crı́ticos para inı́cio de incêndio em
uma edificação, determinar as rotas de fuga em caso de incêndio,
4. implementar uma nova versão do softwre C.C.I. em plataforma web
para que o Corpo de Bombeiros e demais órgãos de segurança pública,
possam acessar o banco de dados de edificações através de dispositivos
móveis, agilizando o atendimento em caso de de incêndio.
101
REFERÊNCIAS
REFERÊNCIAS
Referências
ABNT. NBR14432-Exigências de resistência ao fogo de elementos
construtivos de edificações. [S.l.], 2001.
ALVES, R. M. Análise de risco de incêndios em edificações em sı́tios
históricos.Dissertação (Mestrado em Construção Metálica). Dissertação
(Mestrado) — Universidade Federal de Ouro Preto, Ouro Preto, 2003.
ARAÚJO, S. M. S. Incêndio em Edificações Históricas: um estudo de caso
sobre o risco global de incêndio em cidades tombadas e suas formas de
prevençao, proteção e combate. A metodologia aplicada à cidade de Ouro
Preto. Dissertação (Mestrado) — Universidade Federal Fluminense, Niterói,
2004.
ASSIS, V. Carga de incêndio em edifı́cios de escritórios - estudo de caso:
Belo Horizonte/MG. Dissertação (Mestrado em Estruturas Metálicas).
Dissertação (Mestrado) — Universidade Federal de Ouro Preto, Ouro Preto,
2001.
BARBOSA, A. A.; TRAMONTANO, M. Cidade e habitação em minas nos
séculos xviii-xix. Disponı́vel em www.nomads.usp.br, acesso em 24/03/08 às
18h.
BORATTI, I. C. Programação Orientada a Objetos. [S.l.]: Visual Book
LTDA, Março de 2002.
BWALYA, A. C.; SULTAN, M. A.; BÉNICHOU, N. Literature review on
design fires. [S.l.], 2003.
102
REFERÊNCIAS
REFERÊNCIAS
CARMO, D. D. Orientação a objetos. Disponı́vel em
www.danieldestro.com.br, acesso em 17/09/2006 às 22h.
CBMMG. CORPO DE BOMBEIROS MILITAR DE MINAS GERAIS.
Instrução Técnica no.02 - Terminologia de proteção contra incêndio. [S.l.],
1990.
CBMMG. CORPO DE BOMBEIROS MILITAR DE MINAS GERAIS.
Instrução Técnica No.09 -Carga de incêndio nas edificações e área de risco.
[S.l.], 1990.
CBMMG. CORPO DE BOMBEIROS MILITAR DE MINAS GERAIS.
Instrução Técnica No.35 - Segurança contra incêndio em edificações
históricas. [S.l.], 2005.
CLARET, A. M. Análise de Risco de Incêndio em Sı́tios Históricos. [S.l.]:
IPHAN/Monumenta, 2006.
CLARET, A. M.; ANDRADE, A. T. Levantamento de Risco de Incêndio
em Ouro PReto - Etapa I: Rua São José. Relatório Técnico do Projeto
UNESCO/Movimento Chama. Tese (Doutorado) — Laboratório de Análise
de Risco de Incêndio. Universidade Federal de Ouro Preto, 2004.
GOMES, A. G. Sistemas de prevenção contra incêndios: sistemas
hidráulicos, sistemas sob comando, redes de hidrante e sistema automático.
[S.l.]: Editora Interciência, Rio de JAneiro, 1998.
IBGE (Ed.). INSTITUTO BRASILEIRO DE GEOGRAFIA E
ESTATÍSTICA - Estatı́sticas populacionais, sociais, polı́ticas e culturais.
[S.l.: s.n.], 2007.
103
REFERÊNCIAS
REFERÊNCIAS
KUMAR, S.; RAO, C. K. Fire load in residential buildings. Building and
Environment, volume 30, No.2, p. p. 299–305, 1995.
MINASGERAIS (Ed.). Decreto no.44270, 31 de março de 2006. Regulamenta
a Lei no. 14.130, de 19 de dezembro de 2001, que dispõe sobre a prevenção
contra incêndio e pânico no Estado e dá outras providências. [S.l.: s.n.],
2006.
MORAIS, J. Programação orientada a objetos com object pascal. Disponı́vel
em www.joaomorais.com.br/pascal, v. 1, p. 2, Acesso em 17/09/07 às 18h.
OLIVEIRA, B. T. Salvemos ouro preto. Jornal da Ciência., Disponı́vel em
www.jornaldaciencia.org.br Data de acesso: 24 mar 2008 às 19h, 2003.
RETAMAL, A. M. Análise orientada por objetos. ClubeDelphi, ed.58, p.
4–7, Disponı́vel em www.clubedelphi.net. Data de acesso: 20 jul 2006 às
19h, 2005.
RETAMAL, A. M. Análise orientada por objetos: Parte ii - arquétipos e uml
em cores. ClubeDelphi, ed.59, p. 4–7, Disponı́vel em www.clubedelphi.net.
Data de acesso: 20 jul 2006 às 19h, 2005.
RETAMAL, A. M. Projeto orientado por objetos: Parte iii - componente
genérico de modelo e aplicação no delphi 2005. ClubeDelphi, ed.60, p.
p.6–10, Disponı́vel em www.clubedelphi.net. Data de acesso: 20 jul 2006 às
20h, 2005.
RETAMAL, A. M. Projeto orientado por objetos: Parte iv - a
aplicação completa. ClubeDelphi, ed. 61, p. p. 6–12, Disponı́vel em
www.clubedelphi.net. Data de acesso: 20 jul 2006 às 21h, 2005.
104
REFERÊNCIAS
REFERÊNCIAS
SEITO, A. I. et al. A segurança contra incêndio no Brasil. [S.l.]: São Paulo:
Projeto Editora, 2008.
105
17 ANEXOS
17
ANEXOS
17.1
ANEXO A
Figura 33: Exemplo de cargas de incêndio especı́fica por ocupação
106
17.2 Anexo B
17.2
17 ANEXOS
Anexo B
Figura 34: Metodologia para medição direta de carga de incêndio
107
17.3 ANEXO C
17.3
17 ANEXOS
ANEXO C
Figura 35: Exemplo de cálculo de carga de incêndio - edificação único compartimento
108
17.4 ANEXO D
17.4
17 ANEXOS
ANEXO D
Figura 36: Exemplo de cálculo de carga de incêndio - edificação vários compartimentos parte 1
109
17.5 ANEXO E
17.5
17 ANEXOS
ANEXO E
Figura 37: Exemplo de cálculo de carga de incêndio - edificação vários compartimentos parte 2
110
17.6 ANEXO F
17.6
17 ANEXOS
ANEXO F
Figura 38: Exemplo de cálculo de carga de incêndio - edificação vários compartimentos parte 3
111
17.7 ANEXO G
17.7
17 ANEXOS
ANEXO G
Figura 39: Exemplo de cálculo de carga de incêndio - edificação vários compartimentos parte 4
112
17.8 ANEXO H
17.8
17 ANEXOS
ANEXO H
Figura 40: Exemplo de cálculo de carga de incêndio - edificação vários compartimentos parte 5
113
17.9 ANEXO I
17.9
17 ANEXOS
ANEXO I
Figura 41: Exemplo de cálculo de carga de incêndio - edificação vários compartimentos parte 6
114
17.10 ANEXO J
17.10
17 ANEXOS
ANEXO J
Figura 42: Exemplo de cálculo de carga de incêndio - edificação vários compartimentos partes 7 e 8
115
17.11 ANEXO K
17.11
17 ANEXOS
ANEXO K
Figura 43: Exemplo de cálculo de carga de incêndio - edificação vários compartimentos parte 9
116
17.12 ANEXO L
17.12
17 ANEXOS
ANEXO L
Figura 44: Exemplo de cálculo de carga de incêndio - edificação vários compartimentos parte 10
117
17.13 ANEXO M
17.13
17 ANEXOS
ANEXO M
Figura 45: Exemplo de cálculo de carga de incêndio - edificação vários compartimentos parte 11
118
17.14 ANEXO N
17.14
17 ANEXOS
ANEXO N
Listagem 2: Código para a classe FormPrincipal”
1
u n i t UFormPrincipal ;
2
3
interface
4
5
6
uses
Windows , Messages , S y s U t i l s , V a r i a n t s , C l a s s e s , Graphics ,
C o n t r o l s , Forms ,
7
D i a l o g s , E x t C t r l s , ComCtrls , S t d C t r l s , Buttons , U Regras ,
U Limite , U E d i f i c a c a o , U PAvimento , U Comodo ,
8
Mask , DBCtrls , Grids , DBGrids , UrlMon , DB;
9
10
11
type
TFormPrincipal = c l a s s (TForm)
12
BtnAbrir : TBitBtn ;
13
BtnAjuda : TBitBtn ;
14
BtnNovo : TBitBtn ;
15
B t n S a i r : TBitBtn ;
16
BtnSobre : TBitBtn ;
17
Panel1 : TPanel ;
18
StBar : TStatusBar ;
19
GroupBox3 : TGroupBox ;
20
RBtnCorte : TRadioButton ;
21
RBtnPlanta : TRadioButton ;
22
Plan ta : TImage ;
23
lbCoord : TLabel ;
24
PgC1 : TPageControl ;
25
T a b E d i f i c a c a o : TTabSheet ;
26
PgC2 : TPageControl ;
119
17.14 ANEXO N
27
TabSheet5 : TTabSheet ;
28
G B e d i f i c a c a o : TGroupBox ;
29
L ab e l1 : TLabel ;
30
L ab e l4 : TLabel ;
31
L ab e l5 : TLabel ;
32
L ab e l6 : TLabel ;
33
L ab e l7 : TLabel ;
34
L ab e l8 : TLabel ;
35
L ab e l9 : TLabel ;
36
B e v e l1 : TBevel ;
37
L ab e l11 : TLabel ;
38
L ab e l2 : TLabel ;
39
Panel2 : TPanel ;
40
BtnRemover : TBitBtn ;
41
EdtCompFrente : TEdit ;
42
EdtCompDireita : TEdit ;
43
EdtCompFundo : TEdit ;
44
EdtCompEsquerda : TEdit ;
45
E d t D i s t F r e n t e : TEdit ;
46
E d t D i s t D i r e i t a : TEdit ;
47
EdtDistFundo : TEdit ;
48
EdtDistEsquerda : TEdit ;
49
GridPavs : TS tr in gG r id ;
50
STNome : T S t a t i c T e x t ;
51
STPavs : T S t a t i c T e x t ;
52
TabComodos : TTabSheet ;
53
L ab e l3 : TLabel ;
54
CBoxPavs : TComboBox ;
55
GBoxPavimentos : TGroupBox ;
56
GridComodos : TS tr in gG r id ;
57
TabObjetos : TTabSheet ;
17 ANEXOS
120
17.14 ANEXO N
17 ANEXOS
58
L ab e l12 : TLabel ;
59
CBoxPavs2 : TComboBox ;
60
TabSheet4 : TTabSheet ;
61
TabSheet10 : TTabSheet ;
62
PgC3 : TPageControl ;
63
TabSheet11 : TTabSheet ;
64
DBGrid1 : TDBGrid ;
65
TabSheet12 : TTabSheet ;
66
DBGrid3 : TDBGrid ;
67
BtnAdd : TBitBtn ;
68
BtnEdt : TBitBtn ;
69
BtnDel : TBitBtn ;
70
B t n I n s O b j L i s t a : TBitBtn ;
71
GBoxComodos : TGroupBox ;
72
GBoxObjetos : TGroupBox ;
73
G r i d O b j e t o s : TS tr in gG r id ;
74
L ab e l14 : TLabel ;
75
CBoxComodos : TComboBox ;
76
BitBtn1 : TBitBtn ;
77
L ab e l10 : TLabel ;
78
L b P r o j e t o : TLabel ;
79
procedure A t u a l i z a O b j E d i ;
80
procedure A t u a l i z a T e l a E d i f i c a c a o ;
81
procedure AtualizaTelaComodos ;
82
procedure B t n A b r i r C l i c k ( Sender : TObject ) ;
83
procedure BtnNovoClick ( Sender : TObject ) ;
84
procedure BtnRemoverClick ( Sender : TObject ) ;
85
procedure B t n S a i r C l i c k ( Sender : TObject ) ;
86
procedure CBoxPavsChange ( Sender : TObject ) ;
87
procedure FormClose ( Sender : TObject ; var Action :
TCloseAction ) ;
121
17.14 ANEXO N
17 ANEXOS
88
procedure FormCreate ( Sender : TObject ) ;
89
procedure FormDestroy ( Sender : TObject ) ;
90
procedure PgC1Change ( Sender : TObject ) ;
91
procedure PgC2Change ( Sender : TObject ) ;
92
procedure B t n E d i t a O b j e t o C l i c k ( Sender : TObject ) ;
93
procedure FormShow ( Sender : TObject ) ;
94
procedure BtnAddClick ( Sender : TObject ) ;
95
procedure B t n D e l C l i c k ( Sender : TObject ) ;
96
procedure CBoxPavs2Change ( Sender : TObject ) ;
97
procedure CBoxComodosChange ( Sender : TObject ) ;
98
procedure B t n I n s O b j L i s t a C l i c k ( Sender : TObject ) ;
99
procedure B t n S a l v a L i s t a C l i c k ( Sender : TObject ) ;
100
procedure BtnEdtClick ( Sender : TObject ) ;
101
procedure DBGrid3MouseDown ( Sender : TObject ; Button :
TMouseButton ;
S h i f t : T S h i f t S t a t e ; X, Y: Integer ) ;
102
procedure DBGrid1MouseDown ( Sender : TObject ; Button :
103
TMouseButton ;
S h i f t : T S h i f t S t a t e ; X, Y: Integer ) ;
104
105
procedure B i t B t n 1 C l i c k ( Sender : TObject ) ;
106
procedure B t n S o b r e C l i c k ( Sender : TObject ) ;
107
procedure BtnAjudaClick ( Sender : TObject ) ;
private
108
109
Aberto : Boolean ;
110
procedure A t u a l i z a T e l a O b j e t o ;
111
function S t r F l o a t ( s t : s t r i n g ) : r e a l ;
112
procedure DesenhaPlanta ( modo , pavimento , comodo : s t r i n g ) ;
113
114
115
116
//
procedure A t u a l i z a P l a n t a ;
public
Regras : TRegras ;
end ;
122
17.14 ANEXO N
17 ANEXOS
117
118
var
119
F o r m P r i n c i p a l : TFormPrincipal ;
120
ListaOcup , L i s t a O b j : T S t r i n g L i s t ;
121
Frente , D i r e i t a , Fundo , Esquerda : TLimite ;
122
123
124
implementation
125
126
u s e s U DataModule , U FormSplash ;
127
128
{$R ∗ . dfm}
129
130
{
131
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ TFormPrincipal
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
132
}
133
procedure TFormPrincipal . A t u a l i z a O b j E d i ;
134
begin
135
F r e n t e . Comprimento := S t r T o F l o a t ( EdtCompFrente . Text ) ;
136
F r e n t e . D i s t a n c i a P r o x i m o := S t r T o F l o a t ( E d t D i s t F r e n t e . Text ) ;
137
D i r e i t a . Comprimento := S t r T o F l o a t ( EdtCompDireita . Text ) ;
138
D i r e i t a . D i s t a n c i a P r o x i m o := S t r T o F l o a t ( E d t D i s t D i r e i t a . Text ) ;
139
Fundo . Comprimento := S t r T o F l o a t ( EdtCompFundo . Text ) ;
140
Fundo . D i s t a n c i a P r o x i m o := S t r T o F l o a t ( EdtDistFundo . Text ) ;
141
Esquerda . Comprimento := S t r T o F l o a t ( EdtCompEsquerda . Text ) ;
142
Esquerda . D i s t a n c i a P r o x i m o := S t r T o F l o a t ( EdtDistEsquerda . Text ) ;
143
Regras . S e t L i m i t e s ( Frente , D i r e i t a , Fundo , Esquerda ) ;
144
end ;
145
146
procedure TFormPrincipal . A t u a l i z a T e l a E d i f i c a c a o ;
123
17.14 ANEXO N
147
var
Nome , Pavs : s t r i n g ;
148
149
17 ANEXOS
begin
Regras . G e t L i m i t e s (Nome , Pavs , Frente , D i r e i t a , Fundo , Esquerda
150
);
151
STNome . Caption := Nome ;
152
STPavs . Caption := Pavs ;
153
EdtCompDireita . Text := F l o a t T o S t r ( D i r e i t a . Comprimento ) ;
154
E d t D i s t D i r e i t a . Text := F l o a t T o S t r ( D i r e i t a . D i s t a n c i a P r o x i m o ) ;
155
EdtCompEsquerda . Text := F l o a t T o S t r ( Esquerda . Comprimento ) ;
156
EdtDistEsquerda . Text := F l o a t T o S t r ( Esquerda . D i s t a n c i a P r o x i m o ) ;
157
EdtCompFrente . Text := F l o a t T o S t r ( F r e n t e . Comprimento ) ;
158
E d t D i s t F r e n t e . Text := F l o a t T o S t r ( F r e n t e . D i s t a n c i a P r o x i m o ) ;
159
EdtCompFundo . Text := F l o a t T o S t r ( Fundo . Comprimento ) ;
160
EdtDistFundo . Text := F l o a t T o S t r ( Fundo . D i s t a n c i a P r o x i m o ) ;
161
162
//
A t u a l i z a P l a n t a ( Regras . E d i f i c a c a o ) ;
163
164
165
Regras . ExportaGridPavs ( GridPavs ) ;
end ;
166
167
procedure TFormPrincipal . AtualizaTelaComodos ;
168
begin
169
170
Regras . ExportaGridComodos ( CBoxPavs . Text , GridComodos ) ;
end ;
171
172
procedure TFormPrincipal . B t n A b r i r C l i c k ( Sender : TObject ) ;
173
var
174
175
176
i : Word ;
begin
i f Aberto then
124
17.14 ANEXO N
17 ANEXOS
begin
177
178
AtualizaObjEdi ;
179
Regras . S a l v a r ;
end ;
180
i f Regras . A b r i r then
181
begin
182
183
AtualizaTelaEdificacao ;
184
PgC1 . V i s i b l e := true ;
185
G B e d i f i c a c a o . V i s i b l e := true ;
186
//
AtualizaObjEdi ;
187
Aberto := true ;
188
DesenhaPlanta ( ’’ , ’’ , ’’ ) ;
189
L b P r o j e t o . Caption := Regras . GetNomeProjeto ;
end ;
190
191
end ;
192
193
procedure TFormPrincipal . BtnNovoClick ( Sender : TObject ) ;
194
var
195
Nome : s t r i n g ;
196
cod : integer ;
197
198
199
begin
i f Aberto then
begin
200
AtualizaObjEdi ;
201
Regras . S a l v a r ;
202
Aberto := f a l s e ;
203
end ;
204
G B e d i f i c a c a o . V i s i b l e := f a l s e ;
205
Nome := InputBox ( ’Novo Projeto ’ , ’Nome do Projeto:’ , ’’ ) ;
206
207
i f Nome <> ’’ then
begin
125
17.14 ANEXO N
17 ANEXOS
208
cod := Regras . Nomevalido (Nome) ;
209
i f ( cod = 0 ) then
begin
210
211
Regras . NovoProjeto (Nome) ;
212
Regras . S a l v a r ;
213
AtualizaTelaObjeto ;
214
ShowMessage ( ’Novo projeto criado com sucesso!’ )
end
215
e l s e i f ( cod = 1 ) then ShowMessage ( ’Ja existe um projeto
216
com esse nome! Escolha outro nome.’ )
e l s e i f ( cod = 2 ) then ShowMessage ( ’O nome do projeto nao
217
pode ter mais que 30 ( trinta) caracteres !’+#13+’Escolha
outro nome.’ )
end ;
218
219
end ;
220
221
procedure TFormPrincipal . BtnRemoverClick ( Sender : TObject ) ;
222
begin
223
Regras . RemoveProjeto ( G B e d i f i c a c a o ) ;
224
Aberto := f a l s e ;
225
end ;
226
227
procedure TFormPrincipal . B t n S a i r C l i c k ( Sender : TObject ) ;
228
begin
229
230
Close ;
end ;
231
232
procedure TFormPrincipal . CBoxPavsChange ( Sender : TObject ) ;
233
begin
234
Regras . ExportaGridComodos ( CBoxPavs . Text , GridComodos ) ;
LbComodos . Caption := ’Pavimento: ’+CBoxPavs . Text+’
126
//
Possui
17.14 ANEXO N
17 ANEXOS
’+I n t T o s t r ( Regras . E d i f i c a c a o . GetNumComodos ( S t r T o I n t (
CBoxPavs . Text ) ) )+’ comodos ’ ;
235
GBoxPavimentos . V i s i b l e := true ;
236
DesenhaPlanta ( ’’ , CBoxPavs . Text , ’’ ) ;
237
end ;
238
239
procedure TFormPrincipal . FormClose ( Sender : TObject ; var Action :
TCloseAction ) ;
240
begin
i f Aberto then
241
begin
242
243
AtualizaObjEdi ;
244
Regras . S a i r ;
end ;
245
246
end ;
247
248
procedure TFormPrincipal . FormCreate ( Sender : TObject ) ;
249
begin
250
Regras := TRegras . C r e a t e ;
251
PgC2 . A c tiv e Page I n d e x := 0 ;
252
Aberto := f a l s e ;
253
ListaOcup := T S t r i n g L i s t . C r e a t e ;
254
L i s t a O b j := T S t r i n g L i s t . C r e a t e ;
255
F r e n t e := TLimite . C r e a t e ;
256
D i r e i t a := TLimite . C r e a t e ;
257
Fundo := TLimite . C r e a t e ;
258
Esquerda := TLimite . C r e a t e ;
259
//
Sleep (2000) ;
260
//
FormSplash . C l o s e ;
261
end ;
262
127
17.14 ANEXO N
17 ANEXOS
263
procedure TFormPrincipal . FormDestroy ( Sender : TObject ) ;
264
begin
265
266
Regras . Free ;
end ;
267
268
procedure TFormPrincipal . PgC1Change ( Sender : TObject ) ;
269
begin
270
271
i f Aberto then A t u a l i z a O b j E d i ;
end ;
272
273
274
procedure TFormPrincipal . PgC2Change ( Sender : TObject ) ;
var i : integer ;
Items : T S t r i n g L i s t ;
275
276
begin
277
i f Aberto then A t u a l i z a O b j E d i ;
278
CBoxPavs . C l e a r ;
279
CBoxPavs2 . C l e a r ;
280
Items := T S t r i n g L i s t . C r e a t e ;
281
Regras . E x p o r t a L i s t a P a v s ( Items ) ;
282
CBoxPavs . Items := Items ;
283
CBoxPavs2 . Items := Items ;
284
GBoxPavimentos . V i s i b l e := f a l s e ;
285
GBoxComodos . V i s i b l e := f a l s e ;
286
GBoxObjetos . V i s i b l e := f a l s e ;
287
end ;
288
289
290
291
292
293
procedure TFormPrincipal . B t n E d i t a O b j e t o C l i c k ( Sender : TObject ) ;
var l i n : integer ;
begin
i f CBoxComodos . Text <> ’’ then
begin
128
17.14 ANEXO N
l i n := G r i d O b j e t o s . Row ;
294
295
17 ANEXOS
//
i f ( l i n > 0 ) then Regras . E d i t a O b j e t o ( CBoxPavs2 . Text ,
CBoxComodos . Text , G r i d O b j e t o s . C e l l s [ 1 , l i n ] , ) ;
AtualizaTelaObjeto ;
296
end ;
297
298
end ;
299
300
procedure TFormPrincipal . A t u a l i z a T e l a O b j e t o ;
301
begin
302
Regras . ExportaGridObjetos ( CBoxpavs2 . Text , CBoxComodos . Text ,
GridObjetos ) ;
303
end ;
304
305
function TFormPrincipal . S t r F l o a t ( s t : s t r i n g ) : r e a l ;
306
begin
307
i f s t <> ’’ then r e s u l t := S t r T o F l o a t ( s t )
308
e l s e r e s u l t := 0 ;
309
end ;
310
311
procedure TFormPrincipal . FormShow ( Sender : TObject ) ;
312
begin
313
Caption :=
314
StBar . P a n e l s [ 0 ] . Text := ’v’+Regras . GetVersaoArq ;
315
PgC1 . A c tiv e Page I n d e x := 0 ;
316
PgC2 . A c tiv e Page I n d e x := 0 ;
317
BtnAbrir . C l i c k ;
318
’Calculo de Carga de Incendio em Edificacoes ’ ;
end ;
319
320
procedure TFormPrincipal . BtnAddClick ( Sender : TObject ) ;
321
begin
322
Case PgC2 . ActivePage . TabIndex of
129
17.14 ANEXO N
17 ANEXOS
0 : begin
323
324
Regras . EditaPavimento ( ’’ , 2 ) ;
325
AtualizaTelaEdificacao ;
end ;
326
1 : begin
327
328
Regras . EditaComodo ( CBoxPavs . Text , ’’ , 2 ) ;
329
AtualizaTelaComodos ;
end ;
330
2:
331
begin
Regras . E d i t a O b j e t o ( CBoxPavs2 . Text , CBoxComodos . Text , ’’
332
, 2 ) ; // 2 i n s e r e o b j e t o
AtualizaTelaObjeto ;
333
end ;
334
end ;
335
336
end ;
337
338
339
340
341
342
procedure TFormPrincipal . BtnEdtClick ( Sender : TObject ) ;
var l i n : integer ;
begin
Case PgC2 . ActivePage . TabIndex of
0 : begin
343
l i n := GridPavs . Row ;
344
i f ( l i n > 0 ) then Regras . EditaPavimento ( GridPavs . C e l l s
[1 , lin ] ,1) ;
345
346
347
AtualizaTelaEdificacao ;
end ;
1 : begin
348
l i n := GridComodos . Row ;
349
i f ( l i n > 0 ) then Regras . EditaComodo ( CBoxPavs . Text ,
GridComodos . C e l l s [ 1 , l i n ] , 1 ) ;
350
AtualizaTelaComodos ;
130
17.14 ANEXO N
17 ANEXOS
end ;
351
2:
352
begin
353
l i n := G r i d O b j e t o s . Row ;
354
i f ( l i n > 0 ) then Regras . E d i t a O b j e t o ( CBoxPavs2 . Text ,
CBoxComodos . Text , G r i d O b j e t o s . C e l l s [ 1 , l i n ] , 1 ) ;
AtualizaTelaObjeto ;
355
end ;
356
end ;
357
358
end ;
359
360
361
362
363
364
procedure TFormPrincipal . B t n D e l C l i c k ( Sender : TObject ) ;
var l i n : integer ;
begin
Case PgC2 . ActivePage . TabIndex of
0 : begin
365
l i n := GridPavs . Row ;
366
Regras . EditaPavimento ( GridPavs . C e l l s [ 1 , l i n ] , 0 ) ;
367
AtualizaTelaEdificacao ;
end ;
368
369
1 : begin
370
l i n := GridComodos . Row ;
371
Regras . EditaComodo ( CBoxPavs . Text , GridComodos . C e l l s [ 1 ,
lin ] ,0) ;
AtualizaTelaComodos ;
372
end ;
373
374
2:
begin
375
l i n := G r i d O b j e t o s . Row ;
376
Regras . E d i t a O b j e t o ( CBoxPavs2 . Text , CBoxComodos . Text ,
GridObjetos . C e l l s [ 1 , l i n ] , 0 ) ;
377
378
AtualizaTelaObjeto ;
end ;
131
17.14 ANEXO N
end ;
379
380
17 ANEXOS
end ;
381
382
procedure TFormPrincipal . CBoxPavs2Change ( Sender : TObject ) ;
var indP , indC , i : integer ;
383
Items : T S t r i n g L i s t ;
384
385
begin
386
Items := T S t r i n g L i s t . C r e a t e ;
387
Regras . ExportaListaComodos ( CBoxPavs2 . Text , Items ) ;
388
CBoxComodos . Text := ’’ ;
389
CBoxComodos . Items := Items ;
390
GBoxComodos . V i s i b l e := true ;
391
GBoxObjetos . V i s i b l e := f a l s e ;
392
DesenhaPlanta ( ’’ , CBoxPavs2 . Text , ’’ ) ;
393
end ;
394
395
procedure TFormPrincipal . CBoxComodosChange ( Sender : TObject ) ;
396
begin
Regras . ExportaGridObjetos ( CBoxPavs2 . Text , CBoxComodos . Text ,
397
GridObjetos ) ;
398
GBoxObjetos . V i s i b l e := true ;
399
AtualizaTelaObjeto ;
400
DesenhaPlanta ( ’’ , CBoxPavs2 . Text , CBoxComodos . Text ) ;
401
end ;
402
403
procedure TFormPrincipal . B t n I n s O b j L i s t a C l i c k ( Sender : TObject ) ;
404
begin
405
//
i f ( CBoxPavs2 . Text <> ’’ ) and ( CBoxComodos . Text <> ’’ ) then
406
//
Regras . I n s e r e O b j e t o L i s t a ( CBoxPavs2 . Text , CBoxComodos . Text ) ;
407
//
408
end ;
AtualizaTelaObjeto ;
132
17.14 ANEXO N
17 ANEXOS
409
410
procedure TFormPrincipal . B t n S a l v a L i s t a C l i c k ( Sender : TObject ) ;
var path : s t r i n g ;
411
412
begin
413
end ;
414
415
(∗
416
p r o c e d u r e TFormPrincipal . A t u a l i z a P l a n t a ( E d i f i c a c a o : T E d i f i c a c a o )
;
417
v a r x , y , x0 , y0 , Xmax , Ymax : i n t e g e r ;
k : real ;
418
419
begin
420
x0 := 5 ;
421
y0 := 5 ;
422
Xmax := P l a n t a . Width−x0 ;
423
Ymax := P l a n t a . Height −y0 ;
424
x := x0 ;
425
i f E d i f i c a c a o . F r e n t e . Comprimento > 0 t h e n
426
begin
427
k := (Xmax − x0−x0 ) / E d i f i c a c a o . F r e n t e . Comprimento ;
428
y := Ymax−y0 ;
429
P l a n t a . Canvas . MoveTo( x , y ) ;
430
431
x :=
round ( k ∗ E d i f i c a c a o . F r e n t e . Comprimento ) ;
432
P l a n t a . Canvas . LineTo ( x , y ) ;
433
y := Ymax − round ( k ∗ E d i f i c a c a o . D i r e i t a . Comprimento ) ;
434
P l a n t a . Canvas . LineTo ( x , y ) ;
435
x :=
436
P l a n t a . Canvas . LineTo ( x , y ) ;
437
y := Ymax − round ( k ∗ E d i f i c a c a o . Esquerda . Comprimento ) ;
438
P l a n t a . Canvas . LineTo ( x , y ) ;
round ( k ∗ E d i f i c a c a o . Fundo . Comprimento ) ;
133
17.14 ANEXO N
end ;
439
440
17 ANEXOS
//
l b C o o r d . Caption := fo r m a t ( ’ k=%4.1 f xM=%4d yM=%4d
x=%4d
=%4d ’ , [ k , Xmax , Ymax , x , y ] ) ;
441
end ;
442
∗)
443
// ordena p e l a c o l u n a c l i c k a d a
444
445
procedure MouseCell ( Grid : TDBGrid ; var Coluna , Linha : integer ) ;
446
var
447
448
Pt : TPoint ;
begin
449
GetCursorPos ( Pt ) ;
450
Pt := Grid . S c r e e n T o C l i e n t ( Pt ) ;
451
i f PtInRect ( Grid . C l i e n t R e c t , Pt ) then
begin
452
453
Linha := Grid . MouseCoord ( Pt . X, Pt .Y) .Y;
454
Coluna := Grid . MouseCoord ( Pt . X, Pt .Y) .X;
end
455
456
else
begin
457
458
Coluna := −1;
459
Linha := −1;
end ;
460
461
end ;
462
463
procedure TFormPrincipal . DBGrid3MouseDown ( Sender : TObject ;
464
Button : TMouseButton ; S h i f t : T S h i f t S t a t e ; X, Y: Integer ) ;
465
var l i n h a , c o l u n a : word ;
466
begin
467
// showMessage ( I n t T o S t r ( DBGrid3 . MouseCoord (X,Y) .X)+’ ’+I n t T o S t r (
DBGrid3 . MouseCoord (X,Y) .Y) ) ;
134
y
17.14 ANEXO N
468
//
17 ANEXOS
i f ( Column . FieldName = ’tipo ’ ) then DM. CDSOcupacoes .
IndexFieldNames := Column . FieldName+’; especialidade ’
469
//
e l s e DM. CDSOcupacoes . IndexFieldNames := Column . FieldName ;
470
l i n h a := DBGrid3 . MouseCoord (X,Y) .Y;
471
c o l u n a := DBGrid3 . MouseCoord (X,Y) .X;
472
// showMessage ( ’L=’+I n t T o S t r ( Linha )+’ C=’+I n t T o S t r ( Coluna ) ) ;
i f ( Linha = 0 ) and ( c o l u n a = 1 ) then DM. CDSOcupacoes .
473
IndexFieldNames := ’tipo ’
e l s e i f ( Linha = 0 ) and ( c o l u n a = 2 ) then DM. CDSOcupacoes .
474
IndexFieldNames := ’especialidade ’
e l s e i f ( Linha = 0 ) and ( c o l u n a = 3 ) then DM. CDSOcupacoes .
475
IndexFieldNames := ’q’ ;
476
end ;
477
478
479
procedure TFormPrincipal . DBGrid1MouseDown ( Sender : TObject ;
480
Button : TMouseButton ; S h i f t : T S h i f t S t a t e ; X, Y: Integer ) ;
481
var l i n h a , c o l u n a : word ;
482
begin
483
l i n h a := DBGrid1 . MouseCoord (X,Y) .Y;
484
c o l u n a := DBGrid1 . MouseCoord (X,Y) .X;
485
// showMessage ( ’L=’+I n t T o S t r ( Linha )+’ C=’+I n t T o S t r ( Coluna ) ) ;
i f ( Linha = 0 ) and ( c o l u n a = 1 ) then DM. CDSMateriais .
486
IndexFieldNames := ’material ’
e l s e i f ( Linha = 0 ) and ( c o l u n a = 2 ) then DM. CDSMateriais .
487
IndexFieldNames := ’H’ ;
488
489
//
DM. CDSMateriais . IndexFieldNames := Column . FieldName ;
490
491
end ;
492
135
17.14 ANEXO N
17 ANEXOS
493
procedure TFormPrincipal . B i t B t n 1 C l i c k ( Sender : TObject ) ;
494
begin
495
496
Regras . R e l a t o r i o ;
end ;
497
498
procedure TFormPrincipal . DesenhaPlanta ( modo , pavimento , comodo :
string ) ;
499
var x , y , xi , yi , x0 , y0 , Xmax, Ymax, Dx , Dy ,
500
indP , i : integer ;
501
k , kx , ky : r e a l ;
502
s t , nome : s t r i n g ;
503
Edi : T E d i f i c a c a o ;
504
PavimentoAtual : TPavimento ;
505
ComodoAtual : TComodo ;
506
begin
507
x0 := 2 ;
508
y0 := 2 ;
509
Xmax := Plan ta . Width−2∗x0 ;
510
Ymax := Plan ta . Height −2∗y0 ;
511
Dx := Xmax−x0 ;
512
Dy := Ymax−y0 ;
513
514
Plan ta . Canvas . Brush . C o l o r := clWhite ;
515
Plan ta . Canvas . F i l l R e c t ( Rect ( 0 , 0 , Width , Height ) ) ;
516
Regras . G e t L i m i t e s ( nome , s t , Frente , D i r e i t a , Fundo , Esquerda ) ;
517
i f ( F r e n t e . Comprimento > 0 ) and ( Esquerda . Comprimento > 0 )
then
518
begin
519
kx := Dx/ F r e n t e . Comprimento ;
520
ky := Dy/ Esquerda . Comprimento ;
521
k := kx ;
136
17.14 ANEXO N
17 ANEXOS
i f ( ky < k ) then k := ky ;
522
523
524
525
(∗
x := X0 ;
526
y := Y0 ;
527
P l a n t a . Canvas . MoveTo( x , y ) ;
528
529
x := Round ( k ∗ F r e n t e . Comprimento )−x0 ;
530
P l a n t a . Canvas . LineTo ( x , y ) ;
531
532
y := Round ( k ∗ Esquerda . Comprimento )−y0 ;
533
P l a n t a . Canvas . LineTo ( x , y ) ;
534
535
x := X0 ;
536
P l a n t a . Canvas . LineTo ( x , y ) ;
537
538
y := Y0 ;
539
P l a n t a . Canvas . LineTo ( x , y ) ;
540
∗)
541
//
s t := ’Dx=’+I n t T o S t r (Dx)+’
Dy=’+I n t T o S t r (Dy) ;
542
//
Plan ta . Canvas . TextOut ( x+10 ,y+10 , s t ) ;
543
544
Edi := T E d i f i c a c a o . C r e a t e ;
545
PavimentoAtual := TPavimento . C r e a t e ;
546
ComodoAtual := TComodo . C r e a t e ;
547
Edi := Regras . ExportaEdi ( ) ;
548
Edi . C a l c u l o s ;
549
indP := Edi . GetIndPav ( pavimento ) ;
550
i f ( indP >= 0 ) then
551
begin
137
17.14 ANEXO N
552
17 ANEXOS
PavimentoAtual := TPavimento ( Edi . Pavimentos . Items [ indP
−1]) ;
553
554
555
f or i := 1 to PavimentoAtual . Comodos . Count do
begin
ComodoAtual := TComodo( PavimentoAtual . Comodos [ i
−1]) ;
556
x i := X0+Round ( k∗ComodoAtual . PosX ) ;
557
y i := Y0+Round ( k∗ComodoAtual . PosY ) ;
558
x := x i ;
559
y := y i ;
560
Plan ta . Canvas . MoveTo ( x , y ) ;
561
x := x i+Round ( k∗ComodoAtual . Largura ) ;
562
Plan ta . Canvas . LineTo ( x , y ) ;
563
y := y i+Round ( k∗ComodoAtual . P r o f u n d i d a d e ) ;
564
Plan ta . Canvas . LineTo ( x , y ) ;
565
x := x i ;
566
Plan ta . Canvas . LineTo ( x , y ) ;
567
y := y i ;
568
Plan ta . Canvas . LineTo ( x , y ) ;
569
i f ( ComodoAtual . Nome = comodo ) then
570
begin
571
Plan ta . Canvas . MoveTo ( xi , y i ) ;
572
Plan ta . Canvas . Brush . C o l o r := clRed ;
573
Plan ta . Canvas . Brush . S t y l e := bsBDiagonal ;
574
Plan ta . Canvas . F l o o d F i l l ( x i +5, y i +5, c l B l a c k ,
fsBorder ) ;
575
Plan ta . Canvas . Brush . S t y l e := b s C l e a r ;
576
Plan ta . Canvas . Brush . C o l o r := clWhite ;
577
578
end ;
Plan ta . Canvas . TextOut ( x i +3, y i +3,ComodoAtual . Nome) ;
138
17.14 ANEXO N
17 ANEXOS
St := ’Energia: ’+format ( ’%10.2 fMJ ’ , [ ComodoAtual .
579
Energia ] ) ;
580
Plan ta . Canvas . TextOut ( x i +3, y i +16 , St ) ;
581
St := ’Area: ’+format ( ’%10.2 fm2 ’ , [ ComodoAtual . Area
]) ;
582
Plan ta . Canvas . TextOut ( x i +3, y i +29 , St ) ;
583
St := ’q: ’+format ( ’%10.2 fMJ/m2’ , [ ComodoAtual .
CargaIncendio ] ) ;
Plan ta . Canvas . TextOut ( x i +3, y i +42 , St ) ;
584
585
end ;
586
end ;
587
588
//
ComodoAtual . Free ;
589
//
PavimentoAtual . Free ;
590
//
Edi . Free ;
end ;
591
592
end ;
593
594
procedure TFormPrincipal . B t n S o b r e C l i c k ( Sender : TObject ) ;
595
begin
596
597
FormSplash . ShowModal ;
end ;
598
599
600
601
procedure TFormPrincipal . BtnAjudaClick ( Sender : TObject ) ;
var Arq , Path : s t r i n g ;
begin
602
Path := E x t r a c t F i l e P a t h ( A p p l i c a t i o n . ExeName ) ;
603
Arq := ’Ajuda.html ’ ;
604
Arq := Path+Arq ;
605
H l i n k N a v i g a t e S t r i n g ( n i l , PWideChar ( WideString ( Arq ) ) ) ;
606
end ;
139
17.14 ANEXO N
17 ANEXOS
607
608
end .
140
17.15 ANEXO O
17.15
17 ANEXOS
ANEXO O
Listagem 3: Código para a classe TRegras
1
// r e g r a s de n e g o c i o
2
u n i t U Regras ;
3
4
interface
5
6
u s e s U DataModule , U E d i f i c a c a o , U Pavimento , U Comodo , U Objeto
, U Limite , DB, U FormEscolhaEdi ,
U FormComodo , U FormObjeto , U FormListaObjetos ,
7
U FormPavimento , U R e l a t o r i o s , D i a l o g s , S y s U t i l s ,
ComCtrls ,
S t d C t r l s , Types , Windows , Forms , Grids , C l a s s e s ;
8
9
type
10
TRegras = c l a s s ( TObject )
11
private
12
Edificacao : TEdificacao ;
13
Rel : T R e l a t o r i o ;
14
function RandCod ( n : integer ) : s t r i n g ;
15
function Cod ( nome : s t r i n g ) : s t r i n g ;
16
public
17
cargaOcup , cargaObj : r e a l ;
18
c o n s t r u c t o r Create ;
19
d e s t r u c t o r Destroy ;
20
function A b r i r : Boolean ;
21
function GetVersaoArq : s t r i n g ;
22
function NomeValido (Nome : s t r i n g ) : integer ;
23
procedure NovoProjeto (Nome : s t r i n g ) ;
24
procedure I n s e r e P a v i m e n t o L i s t a ;
25
procedure I n s e r e C o m o d o L i s t a ( Pav : S t r i n g ) ;
141
17.15 ANEXO O
17 ANEXOS
26
procedure I n s e r e O b j e t o L i s t a ( Pav , Cmd : S t r i n g ) ;
27
procedure EditaPavimento ( Pav : S t r i n g ; modo : word ) ;
28
procedure EditaComodo ( Pav , Cmd: S t r i n g ; modo : word ) ;
29
procedure E d i t a O b j e t o ( Pav , Cmd, Obj : s t r i n g ; modo : word ) ;
30
procedure RemoveProjeto ( var GB : TGroupBox ) ;
31
procedure S a i r ;
32
procedure S a l v a r ;
33
procedure S e t L i m i t e s ( Frente , D i r e i t a , Fundo , Esquerda :
TLimite ) ;
34
procedure G e t L i m i t e s ( var Nome , Pavs : s t r i n g ; var Frente ,
D i r e i t a , Fundo , Esquerda : TLimite ) ;
35
function GetIndPav ( Pav : s t r i n g ) : integer ;
36
function GetNomeProjeto ( ) : s t r i n g ;
37
procedure ExportaGridPavs ( var Grid : TS tr in gG r id ) ;
38
procedure ExportaGridComodos ( Pav : S t r i n g ; var Grid :
TS tr in gG r id ) ;
39
procedure ExportaGridObjetos ( Pav , Cmd : s t r i n g ; var Grid :
TS tr in gG r id ) ;
40
procedure E x p o r t a L i s t a P a v s ( var Items : T S t r i n g L i s t ) ;
41
procedure ExportaListaComodos ( Pav : s t r i n g ; var Items :
TStringList ) ;
42
function ExportaEdi ( ) : T E d i f i c a c a o ;
43
procedure CalcCarga ( var ListaOcup , L i s t a O b j : T S t r i n g L i s t ) ;
44
procedure R e l a t o r i o ;
45
end ;
46
47
implementation
48
49
{ TRegras }
50
51
142
17.15 ANEXO O
17 ANEXOS
52
{
53
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ TRegras
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
54
}
55
c o n s t r u c t o r TRegras . C r e a t e ;
56
begin
57
E d i f i c a c a o := T E d i f i c a c a o . C r e a t e ;
58
Rel := T R e l a t o r i o . C r e a t e ;
59
end ;
60
61
d e s t r u c t o r TRegras . Destroy ;
62
begin
63
E d i f i c a c a o . Free ;
64
Rel . Free ;
65
end ;
66
67
function TRegras . A b r i r : Boolean ;
68
begin
69
r e s u l t := f a l s e ;
70
try
71
72
73
DM. C D S E d i f i c a c o e s . Open ;
i f FormEscolhaEdi . MyShowModal (DM. D S E d i f i c a c o e s ) then
begin
74
E d i f i c a c a o . Free ;
75
E d i f i c a c a o := T E d i f i c a c a o . C r e a t e ;
76
E d i f i c a c a o . Nome := DM. CDSEdificacoesNome . A s S t r i n g ;
77
E d i f i c a c a o . Arq := DM. CDSEdificacoesArq . A s S t r i n g ;
78
Ed ific ac ao . Carregar ;
79
r e s u l t := true ;
80
81
end ;
except
143
17.15 ANEXO O
17 ANEXOS
r a i s e e x c e p t i o n . C r e a t e ( ’Nao foi possivel abrir o projeto
82
selecionado!’ ) ;
83
84
end ;
end ;
85
86
procedure TRegras . NovoProjeto (Nome : s t r i n g ) ;
87
begin
88
E d i f i c a c a o . Free ;
89
E d i f i c a c a o := T E d i f i c a c a o . C r e a t e ;
90
E d i f i c a c a o . Nome := Trim (Nome) ;
91
E d i f i c a c a o . Arq := Cod (Nome) ;
92
Edificacao . Salvar ;
93
DM. C D S E d i f i c a c o e s . I n s e r t ;
94
DM. C D S E d i f i c a c o e s . FieldByName ( ’Nome ’ ) . Value := E d i f i c a c a o . Nome
;
95
DM. C D S E d i f i c a c o e s . FieldByName ( ’Arq ’ ) . Value := E d i f i c a c a o . Arq ;
96
DM. C D S E d i f i c a c o e s . Post ;
97
end ;
98
99
100
101
102
procedure TRegras . RemoveProjeto ( var GB : TGroupBox ) ;
var arq : s t r i n g ;
begin
i f MessageDlg ( ’Confirma Eliminacao da edificacao : ’+E d i f i c a c a o
. Nome+’?’ , mtWarning , [ mbYes , mbNo ] , 0 ) = 6 then
103
104
begin
arq := E x t r a c t F i l e P A t h ( A p p l i c a t i o n . ExeName )+’dados\’+
E d i f i c a c a o . Arq+’.str ’ ;
105
D e l e t e F i l e ( PChar ( arq ) ) ;
106
DM. C D S E d i f i c a c o e s . D e l e t e ;
107
GB. V i s i b l e := f a l s e ;
108
end ;
144
17.15 ANEXO O
109
17 ANEXOS
end ;
110
111
procedure TRegras . EditaPavimento ( Pav : S t r i n g ; modo : word ) ;
112
begin
113
case modo of
114
0 : E d i f i c a c a o . RemovePavimento ( Pav ) ; / / remove
115
1 : E d i f i c a c a o . EditaPavimento ( Pav ) ; / / e d i t a
116
2 : E d i f i c a c a o . I n s e r e P a v i m e n t o ; / / i n s e r e novo
end ;
117
118
end ;
119
120
procedure TRegras . EditaComodo ( Pav , Cmd: S t r i n g ; modo : word ) ;
121
begin
122
case modo of
123
0 : E d i f i c a c a o . RemoveComodo ( Pav ,Cmd) ; / / remove
124
1 : E d i f i c a c a o . EditaComodo ( Pav ,Cmd) ; / / e d i t a
125
2 : E d i f i c a c a o . InsereComodo ( Pav ) ; / / i n s e r e novo
end ;
126
127
end ;
128
129
procedure TRegras . E d i t a O b j e t o ( Pav , Cmd, Obj : S t r i n g ; modo : word )
;
130
131
begin
case modo of
132
0 : E d i f i c a c a o . RemoveObjeto ( Pav ,Cmd, Obj ) ; / / remove
133
1 : E d i f i c a c a o . E d i t a O b j e t o ( Pav ,Cmd, Obj ) ; / / e d i t a
134
2 : E d i f i c a c a o . I n s e r e O b j e t o ( Pav ,Cmd) ; / / i n s e r e novo
end ;
135
136
end ;
137
138
procedure TRegras . I n s e r e O b j e t o L i s t a ( Pav , Cmd: S t r i n g ) ;
145
17.15 ANEXO O
139
var indP , indC : integer ;
140
Objeto : TObjeto ;
141
Pavimento : TPavimento ;
142
Comodo : TComodo ;
143
17 ANEXOS
begin
144
indP := E d i f i c a c a o . GetIndPav ( Pav ) ;
145
Objeto := TObjeto . C r e a t e ;
146
i f FormListaObjetos . MyShowModal ( Objeto , E d i f i c a c a o ) then
begin
147
148
Pavimento := TPavimento . c r e a t e ;
149
Pavimento := TPavimento ( E d i f i c a c a o . Pavimentos . Items [ indP ] )
;
150
indC := Pavimento . GetIndComodo (Cmd) ;
151
Comodo := TComodo . C r e a t e ;
152
Comodo := TComodo( Pavimento . Comodos . Items [ indC ] ) ;
153
Comodo . O b j e t o s . Add( Objeto ) ;
154
Pavimento . Comodos . Items [ indC ] := Comodo ;
155
E d i f i c a c a o . Pavimentos . Items [ indP ] := Pavimento ;
end ;
156
157
end ;
158
159
procedure TRegras . S a i r ;
160
begin
161
162
Salvar ;
end ;
163
164
procedure TRegras . S a l v a r ;
165
begin
166
Edificacao . Salvar ;
167
i f DM. CDSMateriais . S t a t e in [ dsEDit , d s I n s e r t ] then DM.
CDSMateriais . Post ;
146
17.15 ANEXO O
168
17 ANEXOS
i f DM. CDSOcupacoes . S t a t e in [ dsEDit , d s I n s e r t ] then DM.
CDSOcupacoes . Post ;
169
end ;
170
171
function TRegras . GetVersaoArq : s t r i n g ;
172
var
173
174
l i s t a : TStringList ;
begin
175
l i s t a := T S t r i n g L i s t . C r e a t e ;
176
l i s t a . LoadFromFile ( ’versao.txt ’ ) ;
177
r e s u l t := l i s t a [ 0 ] ;
178
end ;
179
180
// r e t o r n a s t r i n g randomica de ’n’ p o s i c o e s
181
function TRegras . RandCod ( n : integer ) : s t r i n g ;
182
var i : integer ;
183
st : string ;
184
a : array [ 1 . . 3 ] of integer ;
185
begin
186
s t := ’’ ;
187
Randomize ;
188
f or i := 1 to n do
begin
189
190
a [ 1 ] := 48+Random ( 9 ) ;
191
a [ 2 ] := 65+Random ( 2 5 ) ;
192
a [ 3 ] := 97+Random ( 2 5 ) ;
193
s t := s t+c h r ( a [1+random ( 3 ) ] ) ;
end ;
194
195
196
r e s u l t := s t ;
end ;
197
147
17.15 ANEXO O
198
199
200
17 ANEXOS
function TRegras . NomeValido (Nome : s t r i n g ) : integer ;
var ok : integer ;
begin
201
ok := 0 ;
202
i f ( l e n g t h (Nome) > 3 0 ) then ok := 2
203
else
begin
204
DM. C D S E d i f i c a c o e s . F i r s t ;
205
while not (DM. C D S E d i f i c a c o e s . Eof ) do
206
begin
207
i f (DM. C D S E d i f i c a c o e s . FieldByName ( ’Nome ’ ) . A s S t r i n g =
208
Trim (Nome) ) then ok := 1 ; // nao m o d i f i c a r p o i s
s e n a o s o pega o u l t i m o
DM. C D S E d i f i c a c o e s . Next ;
209
end ;
210
end ;
211
212
213
r e s u l t := ok ;
end ;
214
215
216
function TRegras . Cod ( nome : s t r i n g ) : s t r i n g ;
var s t , s t x : s t r i n g ;
ch : char ;
217
218
begin
219
s t := ’’ ;
220
s t x := nome ;
221
while s t x <> ’’ do
222
begin
223
ch := s t x [ 1 ] ;
224
i f ch in [ ’0’ . . ’9’ , ’A’ . . ’Z’ , ’a’ . . ’z’ ] then s t := s t+ch
e l s e s t := s t+’_’ ;
225
d e l e t e ( stx , 1 , 1 ) ;
148
17.15 ANEXO O
end ;
226
227
228
17 ANEXOS
r e s u l t := s t ;
end ;
229
230
procedure TRegras . CalcCarga ( var ListaOcup , L i s t a O b j : T S t r i n g L i s t
);
231
var Pavimento : TPavimento ;
232
Comodo : TComodo ;
233
Objeto : TObjeto ;
234
indP , indC , indO : integer ;
235
somapav , somacomodo : r e a l ;
236
begin
237
end ;
238
239
procedure TRegras . I n s e r e C o m o d o L i s t a ( Pav : S t r i n g ) ;
240
begin
241
242
end ;
243
244
procedure TRegras . I n s e r e P a v i m e n t o L i s t a ;
245
begin
246
247
end ;
248
249
procedure TRegras . G e t L i m i t e s ( var Nome , Pavs : s t r i n g ; var Frente
, D i r e i t a , Fundo ,
250
251
Esquerda : TLimite ) ;
begin
252
Nome := E d i f i c a c a o . Nome ;
253
Pavs := I n t T o S t r ( E d i f i c a c a o . Pavimentos . Count ) ;
254
F r e n t e := E d i f i c a c a o . F r e n t e ;
149
17.15 ANEXO O
17 ANEXOS
255
D i r e i t a := E d i f i c a c a o . D i r e i t a ;
256
Fundo := E d i f i c a c a o . Fundo ;
257
Esquerda := E d i f i c a c a o . Esquerda ;
258
end ;
259
260
procedure TRegras . S e t L i m i t e s ( Frente , D i r e i t a , Fundo , Esquerda :
TLimite ) ;
261
begin
262
E d i f i c a c a o . SetFrente ( Frente ) ;
263
Edificacao . SetDireita ( Direita ) ;
264
E d i f i c a c a o . SetFundo ( Fundo ) ;
265
E d i f i c a c a o . SetEsquerda ( Esquerda ) ;
266
end ;
267
268
function TRegras . GetIndPav ( Pav : s t r i n g ) : integer ;
269
begin
270
271
r e s u l t :=
E d i f i c a c a o . GetIndPav ( Pav ) ;
end ;
272
273
procedure TRegras . ExportaGridComodos ( Pav : S t r i n g ; var Grid :
TS tr in gG r id ) ;
274
275
276
begin
E d i f i c a c a o . ExportaGridComodos ( Pav , Grid ) ;
end ;
277
278
procedure TRegras . E x p o r t a L i s t a P a v s ( var Items : T S t r i n g L i s t ) ;
279
begin
280
281
E d i f i c a c a o . E x p o r t a L i s t a P a v s ( Items ) ;
end ;
282
283
procedure TRegras . ExportaGridPavs ( var Grid : TS tr in gG r id ) ;
150
17.15 ANEXO O
284
285
286
17 ANEXOS
begin
E d i f i c a c a o . ExportaGridPavs ( Grid ) ;
end ;
287
288
procedure TRegras . ExportaListaComodos ( Pav : s t r i n g ; var Items :
TStringList ) ;
289
290
291
begin
E d i f i c a c a o . ExportaListaComodos ( Pav , Items ) ;
end ;
292
293
procedure TRegras . ExportaGridObjetos ( Pav , Cmd: s t r i n g ; var Grid :
TS tr in gG r id ) ;
294
295
296
begin
E d i f i c a c a o . ExportaGridObjetos ( Pav , Cmd, Grid ) ;
end ;
297
298
299
300
procedure TRegras . R e l a t o r i o ;
var ListaOcup , L i s t a O b j : T S t r i n g L i s t ;
begin
301
Rel . Tipo := ’completo ’ ;
302
Rel . GeraHtml ( E d i f i c a c a o ) ;
303
end ;
304
305
function TRegras . GetNomeProjeto : s t r i n g ;
306
begin
307
308
r e s u l t := E d i f i c a c a o . Nome ;
end ;
309
310
function TRegras . ExportaEdi ( ) : T E d i f i c a c a o ;
311
begin
312
r e s u l t := E d i f i c a c a o ;
151
17.15 ANEXO O
313
17 ANEXOS
end ;
314
315
end .
152
17.16 ANEXO P
17.16
17 ANEXOS
ANEXO P
Listagem 4: Código para a classe TRelatorios
1
unit U Relatorios ;
2
3
interface
4
5
u s e s UrlMon , C l a s s e s , S y s U t i l s , Forms , D i a l o g s , U E d i f i c a c a o ,
U Pavimento , U Comodo , U Objeto ;
6
7
Type
TRelatorio = c l a s s
8
9
private
10
FTipo : s t r i n g ;
11
Arq , Path , nome tab : s t r i n g ;
12
Lista : TStringList ;
13
FEdi : T E d i f i c a c a o ;
14
procedure S e tEd i ( const Value : T E d i f i c a c a o ) ;
15
procedure SetTipo ( const Value : s t r i n g ) ;
16
17
public
18
p r o p e r t y Tipo : s t r i n g read FTipo write SetTipo ;
19
p r o p e r t y Edi : T E d i f i c a c a o read FEdi write S e tEd i ;
20
c o n s t r u c t o r Create ;
21
d e s t r u c t o r Destroy ;
22
procedure GeraHtml ( xEdi : T E d i f i c a c a o ) ;
23
procedure GeraGrid ( modo : s t r i n g ) ;
24
procedure Cabecalho ;
25
procedure Rodape ;
26
end ;
27
153
17.16 ANEXO P
28
17 ANEXOS
implementation
29
30
{ TRelatorio }
31
32
c o n s t r u c t o r TRelatorio . Create ;
33
begin
34
Path := E x t r a c t F i l e P a t h ( A p p l i c a t i o n . ExeName ) ;
35
L i s t a := T S t r i n g L i s t . C r e a t e ;
36
Edi := T E d i f i c a c a o . C r e a t e ;
37
end ;
38
39
d e s t r u c t o r T R e l a t o r i o . Destroy ;
40
begin
41
L i s t a . Free ;
42
Edi . Free ;
43
end ;
44
45
46
procedure T R e l a t o r i o . Cabecalho ;
var s t , s t 1 : s t r i n g ;
c o l : integer ;
47
48
begin
49
L i s t a . Add( ’ <head > </head > ’ ) ;
50
L i s t a . Add( ’<body style =" width: 210 mm; height: 297 mm" > ’ ) ;
51
L i s t a . Add( ’<h3 > Calculo da carga de Incendio </h3 >’ ) ;
52
L i s t a . Add( ’<h4 > Relatorio ’+Tipo+’ </h4 >’ ) ;
53
L i s t a . Add( ’<h5 > Projeto: ’+Edi . Nome+’ </h5 >’ ) ;
54
Edi . C a l c u l o s ;
55
s t := ’<h6 >’+format ( ’Area :%7.2 fm2 ’ , [ Edi . Area ] ) ;
56
s t := s t+’- Energia Total Liberada:’ ;
57
s t 1 := format ( ’%15.2 mMJ ’ , [ Edi . E n e r g i a ] ) ;
58
s t 1 := t r i m ( s t 1 ) ;
154
17.16 ANEXO P
17 ANEXOS
59
s t := s t+ copy ( s t 1 , 3 , l e n g t h ( s t 1 ) −2) ;
60
s t := s t+ format ( ’- Carga de incendio %7.2 fMJ/m2 ’ , [ Edi .
C a r g a I n c e n d i o ] )+’ </h6 >’ ;
61
L i s t a . Add( s t ) ;
62
L i s t a . Add( ’<hr >’ ) ;
63
end ;
64
65
66
procedure T R e l a t o r i o . GeraGrid ( modo : s t r i n g ) ;
var l i n , c o l , pavs , cmds , o b j s : integer ;
67
st , st1 : s t r i n g ;
68
area , e n e r g i a , c a r g a : r e a l ;
69
70
71
begin
f or pavs := 1 to Edi . Pavimentos . Count do
begin
72
s t 1 := TPavimento ( Edi . Pavimentos [ pavs −1]) . Nome ;
73
TPavimento ( Edi . Pavimentos [ pavs −1]) . C a l c u l o s ;
74
a r e a := TPavimento ( Edi . Pavimentos [ pavs −1]) . Area ;
75
e n e r g i a := TPavimento ( Edi . Pavimentos [ pavs −1]) . E n e r g i a ;
76
c a r g a := TPavimento ( Edi . Pavimentos [ pavs −1]) . C a r g a I n c e n d i o ;
77
s t := ’<h6 > Pavimento: ’+s t 1 ;
78
s t := s t+format ( ’ - Area :%7.2 fm2 ’ , [ a r e a ] ) ;
79
s t := s t+’- Energia Total Liberada:’ ;
80
s t 1 := format ( ’%15.2 mMJ ’ , [ e n e r g i a ] ) ;
81
s t 1 := t r i m ( s t 1 ) ;
82
s t := s t+ copy ( s t 1 , 3 , l e n g t h ( s t 1 ) −2) ;
83
s t := s t+ format ( ’- Carga de incendio %7.2 fMJ/m2’ , [ c a r g a ] )+
’ </h6 >’ ;
84
L i s t a . Add( s t ) ;
85
86
f or cmds := 1 to TPavimento ( Edi . Pavimentos [ pavs −1]) .
comodos . count do
155
17.16 ANEXO P
87
88
17 ANEXOS
begin
s t 1 := TComodo( TPavimento ( Edi . Pavimentos [ pavs −1]) .
comodos [ cmds −1]) . Nome ;
89
TComodo( TPavimento ( Edi . Pavimentos [ pavs −1]) . comodos [
cmds −1]) . C a l c u l o s ;
90
a r e a := TComodo( TPavimento ( Edi . Pavimentos [ pavs −1]) .
comodos [ cmds −1]) . Area ;
91
e n e r g i a := TComodo( TPavimento ( Edi . Pavimentos [ pavs −1]) .
comodos [ cmds −1]) . E n e r g i a ;
92
c a r g a := TComodo( TPavimento ( Edi . Pavimentos [ pavs −1]) .
comodos [ cmds −1]) . C a r g a I n c e n d i o ;
93
s t := ’<h6 > Comodo: ’+s t 1 ;
94
s t := s t+format ( ’- Area :%7.2 fm2 ’ , [ a r e a ] ) ;
95
s t := s t+’- Energia Total Liberada:’ ;
96
s t 1 := format ( ’%15.2 mMJ ’ , [ e n e r g i a ] ) ;
97
s t 1 := t r i m ( s t 1 ) ;
98
s t := s t+ copy ( s t 1 , 3 , l e n g t h ( s t 1 ) −2) ;
99
s t := s t+ format ( ’- Carga de incendio %7.2 fMJ/m2’ , [
c a r g a ] )+’ </h6 >’ ;
100
L i s t a . Add( s t ) ;
101
L i s t a . Add( ’<br >’ ) ;
102
103
L i s t a . Add( ’<table id=" tabela ’+format ( ’%2.2d’ , [ cmds ] )+’
" border ="1" style ="font -size : 8pt ;" >’ ) ;
104
L i s t a . Add( ’<tr bgcolor = "# ffff99"> ’ ) ;
105
L i s t a . Add( ’<td width ="200" > <div align =" left" > Objeto
</div > </td >’ ) ;
106
L i s t a . Add( ’<td width ="100" > <div align =" left" >
Energia (MJ) </div > </td >’ ) ;
107
L i s t a . Add( ’ </tr >’ ) ;
108
156
17.16 ANEXO P
17 ANEXOS
f or o b j s := 1 to TComodo( TPavimento ( Edi . Pavimentos [
109
pavs −1]) . comodos [ cmds −1]) . o b j e t o s . count do
begin
110
s t 1 := TObjeto (TComodo( TPavimento ( Edi . Pavimentos [
111
pavs −1]) . comodos [ cmds −1]) . o b j e t o s [ o b j s −1]) . Nome
;
TObjeto (TComodo( TPavimento ( Edi . Pavimentos [ pavs −1])
112
. comodos [ cmds −1]) . o b j e t o s [ o b j s −1]) . C a l c u l o s ;
e n e r g i a := TObjeto (TComodo( TPavimento ( Edi .
113
Pavimentos [ pavs −1]) . comodos [ cmds −1]) . o b j e t o s [
o b j s −1]) . E n e r g i a ;
114
i f ( ( ( o b j s +1) mod 2 ) = 0 ) then L i s t a . Add( ’<tr
115
bgcolor = "# ffffff">’ )
116
e l s e L i s t a . Add( ’<tr bgcolor = "# dae5e3">’ ) ;
117
L i s t a . Add( ’<td > <div align =" left" > ’+s t 1+’ </div >
</td >’ ) ;
118
s t 1 := format ( ’%7.2m’ , [ e n e r g i a ] ) ;
119
s t 1 := t r i m ( s t 1 ) ;
120
s t 1 := copy ( s t 1 , 3 , l e n g t h ( s t 1 ) −2) ;
121
L i s t a . Add( ’<td > <div align =" left" > ’+s t 1+’ </div >
</td >’ ) ;
L i s t a . Add( ’ </tr >’ ) ;
122
end ;
123
L i s t a . Add( ’ </table > ’ ) ;
124
end ;
125
126
L i s t a . Add( ’<hr >’ ) ;
127
end ;
128
129
end ;
130
157
17.16 ANEXO P
131
procedure T R e l a t o r i o . Rodape ;
132
begin
17 ANEXOS
133
L i s t a . Add( ’<br style ="page -break - before: always ;">’ ) ;
134
L i s t a . Add( ’ </body >’ ) ;
135
end ;
136
137
procedure T R e l a t o r i o . GeraHtml ( xEdi : T E d i f i c a c a o ) ;
var l i n , c o l , pos : integer ;
138
139
ok : boolean ;
140
st : string ;
141
begin
142
Edi := xEdi ;
143
Arq := ’Relatorio.html ’ ;
144
Arq := Path+Arq ;
145
Lista . Clear ;
146
Cabecalho ;
147
GeraGrid ( Tipo ) ;
148
Rodape ;
149
L i s t a . S av e ToF ile ( Arq ) ;
150
//
showmessage ( ’Relatorio gerado em: ’+Arq ) ;
H l i n k N a v i g a t e S t r i n g ( n i l , PWideChar ( WideString ( Arq ) ) ) ;
151
152
end ;
153
154
procedure T R e l a t o r i o . S e tEd i ( const Value : T E d i f i c a c a o ) ;
155
begin
156
157
FEdi := Value ;
end ;
158
159
procedure T R e l a t o r i o . SetTipo ( const Value : s t r i n g ) ;
160
begin
161
i f ( Value = ’completo ’ ) or ( Value = ’resumo ’ ) then
158
17.16 ANEXO P
FTipo := Value ;
162
163
17 ANEXOS
end ;
164
165
end .
159
17.17 ANEXO Q
17.17
17 ANEXOS
ANEXO Q
Listagem 5: Código para a classe TEdificacao
1
// c l a s s e que d e f i n e uma e d i f i c a o
2
unit U Edificacao ;
3
4
interface
5
6
uses
7
S y s U t i l s , Windows , Messages , C l a s s e s , Graphics , C o n t r o l s ,
8
Forms , D i a l o g s , Contnrs , U Pavimento , U Comodo , U Objeto ,
U Limite , G r id s ;
9
10
type
11
T E d i f i c a c a o = c l a s s ( TObject )
12
private
13
FArq : s t r i n g ;
14
FPavimentos : T O b j e c t L i s t ;
15
PavimentoAtual : TPavimento ;
16
F D i r e i t a : TLimite ;
17
FEsquerda : TLimite ;
18
FFrente : TLimite ;
19
FFundo : TLimite ;
20
FNome : s t r i n g ;
21
Lista : TStringList ;
22
FCargaIncendio : r e a l ;
23
FArea : r e a l ;
24
FEnergia : r e a l ;
25
procedure SetArq ( const Value : s t r i n g ) ;
26
procedure SetPavimentos ( const Value : T O b j e c t L i s t ) ;
27
procedure GetStream ( var ValStream : TMemoryStream ) ;
160
17.17 ANEXO Q
28
29
17 ANEXOS
procedure SetStream ( ValStream : TMemoryStream ) ;
public
30
c o n s t r u c t o r Create ;
31
d e s t r u c t o r Destroy ;
32
procedure S e t D i r e i t a ( const Value : TLimite ) ;
33
procedure SetEsquerda ( const Value : TLimite ) ;
34
procedure S e t F r e n t e ( const Value : TLimite ) ;
35
procedure SetFundo ( const Value : TLimite ) ;
36
procedure SetNome ( const Value : s t r i n g ) ;
37
procedure I n s e r e P a v i m e n t o ;
38
procedure RemovePavimento ( Pav : S t r i n g ) ;
39
procedure EditaPavimento ( Pav : s t r i n g ) ;
40
procedure InsereComodo ( Pav : S t r i n g ) ;
41
procedure RemoveComodo ( Pav ,Cmd : S t r i n g ) ;
42
procedure EditaComodo ( Pav ,Cmd : S t r i n g ) ;
43
procedure I n s e r e O b j e t o ( Pav ,Cmd : S t r i n g ) ;
44
procedure RemoveObjeto ( Pav ,Cmd, Obj : S t r i n g ) ;
45
procedure E d i t a O b j e t o ( Pav ,Cmd, Obj : S t r i n g ) ;
46
function GetIndPav (Nome : S t r i n g ) : integer ;
47
function NomeValido (Nome : s t r i n g ) : boolean ;
48
procedure S a l v a r ;
49
procedure C a r r e g a r ;
50
procedure ExportaGridPavs ( var Grid : TS tr in gG r id ) ;
51
procedure ExportaGridComodos ( Pav : s t r i n g ; var Grid :
TS tr in gG r id ) ;
52
procedure ExportaGridObjetos ( Pav , Cmd : s t r i n g ; Grid :
TS tr in gG r id ) ;
53
procedure E x p o r t a L i s t a P a v s ( var x L i s t a : T S t r i n g L i s t ) ;
54
procedure ExportaListaComodos ( Pav : S t r i n g ; var Items :
TStringList ) ;
55
procedure ExportaEdi ( var Edi : T E d i f i c a c a o ) ;
161
17.17 ANEXO Q
17 ANEXOS
p r o p e r t y Pavimentos : T O b j e c t L i s t read FPavimentos write
56
SetPavimentos ;
57
p r o p e r t y D i r e i t a : TLimite read F D i r e i t a write S e t D i r e i t a ;
58
p r o p e r t y Esquerda : TLimite read FEsquerda write SetEsquerda ;
59
p r o p e r t y F r e n t e : TLimite read FFrente write S e t F r e n t e ;
60
p r o p e r t y Fundo : TLimite read FFundo write SetFundo ;
61
p r o p e r t y Nome : s t r i n g read FNome write SetNome ;
62
p r o p e r t y Arq : s t r i n g read FArq write SetArq ;
63
p r o p e r t y Area : r e a l read FArea ;
64
p r o p e r t y E n e r g i a : r e a l read FEnergia ;
65
p r o p e r t y C a r g a I n c e n d i o : r e a l read FCargaIncendio ;
66
procedure C a l c u l o s ( ) ;
end ;
67
68
69
70
implementation
71
72
u s e s U FormPavimento , U FormObjeto ;
73
74
{ TEdificacao }
75
76
{
77
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ T E d i f i c a c a o
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
78
}
79
c o n s t r u c t o r TEdificacao . Create ;
80
begin
81
Pavimentos := T O b j e c t L i s t . C r e a t e ;
82
F D i r e i t a := TLimite . C r e a t e ;
83
FEsquerda := TLimite . C r e a t e ;
84
FFrente := TLimite . C r e a t e ;
162
17.17 ANEXO Q
17 ANEXOS
85
FFundo := TLimite . C r e a t e ;
86
PavimentoAtual := TPavimento . C r e a t e ;
87
L i s t a := T S t r i n g L i s t . C r e a t e ;
88
end ;
89
90
d e s t r u c t o r T E d i f i c a c a o . Destroy ;
var i ,N : integer ;
91
92
begin
93
//
N := Pavimentos . Count ;
94
//
f or i := 1 to N do
95
//
Pavimentos . Items [ i ] . Destroy ;
96
Pavimentos . C l e a r ;
97
Pavimentos . Free ;
98
end ;
99
100
101
102
procedure T E d i f i c a c a o . C a l c u l o s ( ) ;
var i : integer ;
begin
103
FArea := 0 ;
104
FEnergia := 0 ;
105
f or i := 1 to Pavimentos . Count do
begin
106
107
TPavimento ( FPavimentos . Items [ i −1]) . C a l c u l o s ( ) ;
108
FArea := FArea+TPavimento ( FPavimentos . Items [ i −1]) . Area ;
109
FEnergia := FEnergia+TPavimento ( FPavimentos . Items [ i −1]) .
Energia ;
end ;
110
111
i f FArea > 0 then FCargaIncendio := FEnergia /FArea
112
e l s e FCargaIncendio := −1;
113
end ;
114
163
17.17 ANEXO Q
17 ANEXOS
115
procedure T E d i f i c a c a o . S e t D i r e i t a ( const Value : TLimite ) ;
116
begin
117
118
F D i r e i t a := Value ;
end ;
119
120
procedure T E d i f i c a c a o . SetEsquerda ( const Value : TLimite ) ;
121
begin
122
123
FEsquerda := Value ;
end ;
124
125
procedure T E d i f i c a c a o . S e t F r e n t e ( const Value : TLimite ) ;
126
begin
127
128
FFrente := Value ;
end ;
129
130
procedure T E d i f i c a c a o . SetFundo ( const Value : TLimite ) ;
131
begin
132
133
FFundo := Value ;
end ;
134
135
procedure T E d i f i c a c a o . SetNome ( const Value : s t r i n g ) ;
136
begin
137
138
FNome := Value ;
end ;
139
140
141
142
143
144
145
procedure T E d i f i c a c a o . ExportaGridPavs ( var Grid : TS tr in gG r id ) ;
var l i n : integer ;
begin
i f FPavimentos . Count > 0 then
begin
Grid . RowCount := FPavimentos . Count +1;
164
17.17 ANEXO Q
17 ANEXOS
146
Grid . ColCount := 2 ;
147
Grid . C e l l s [ 0 , 0 ] := ’Pavimento ’ ;
148
Grid . C e l l s [ 1 , 0 ] := ’Nome ’ ;
149
f or l i n := 1 to Grid . RowCount−1 do
begin
150
151
Grid . C e l l s [ 0 , l i n ] := I n t T o S t r ( l i n ) ;
152
Grid . C e l l s [ 1 , l i n ] := TPavimento ( FPavimentos . Items [ l i n
−1]) . Nome ;
end ;
153
end ;
154
155
end ;
156
157
procedure T E d i f i c a c a o . ExportaGridComodos ( Pav : s t r i n g ; var Grid :
TS tr in gG r id ) ;
158
159
var indPav : integer ;
begin
160
indPav := GetIndPav ( Pav ) ;
161
i f indPav > 0 then
begin
162
163
PavimentoAtual := TPavimento ( FPavimentos . Items [ indPav −1]) ;
164
PavimentoAtual . ExportaGridComodos ( Grid ) ;
end ;
165
166
end ;
167
168
procedure T E d i f i c a c a o . ExportaGridObjetos ( Pav , Cmd: s t r i n g ; Grid :
TS tr in gG r id ) ;
169
170
var indPav : integer ;
begin
171
indPav := GetIndPav ( Pav ) ;
172
i f indPav > 0 then
173
begin
165
17.17 ANEXO Q
17 ANEXOS
174
PavimentoAtual := TPavimento ( FPavimentos . Items [ indPav −1]) ;
175
PavimentoAtual . ExportaGridObjetos (Cmd, Grid ) ;
end ;
176
177
end ;
178
179
180
procedure T E d i f i c a c a o . C a r r e g a r ;
var arq : s t r i n g ;
MStr : TMemoryStream ;
181
182
begin
183
MStr := TMemoryStream . C r e a t e ;
184
MStr . LoadFromFile ( ’dados\’+FArq+’.str ’ ) ;
185
SetStream ( MStr ) ;
186
MStr . Free ;
187
end ;
188
189
190
procedure T E d i f i c a c a o . S a l v a r ;
var arq : s t r i n g ;
MStr : TMemoryStream ;
191
192
begin
193
MStr := TMemoryStream . C r e a t e ;
194
GetStream ( MStr ) ;
195
MStr . P o s i t i o n := 0 ;
196
MStr . S av e ToF ile ( ’dados\’+FArq+’.str ’ ) ;
197
MStr . Free ;
198
end ;
199
200
// r e t o r n a uma stream com dados do o b j e t o
201
procedure T E d i f i c a c a o . GetStream ( var ValStream : TMemoryStream ) ;
202
var S t r 1 : TMemoryStream ;
203
L : Int64 ;
204
St : S t r i n g ;
166
17.17 ANEXO Q
205
ch : char ;
206
k ,N : integer ;
17 ANEXOS
207
208
begin
209
S t r 1 := TMemoryStream . C r e a t e ;
210
ValStream . P o s i t i o n := 0 ;
211
212
St := FNome ;
213
L := Length ( St ) ;
214
ValStream . Write (L , S i z e O f (L) ) ; // grava o comprimento da s t r i n g
215
f or k := 1 to L do
216
ValStream . Write ( St [ k ] , S i z e O f (Ch) ) ; // grava a s t r i n g , ch por
ch
217
218
St := FArq ;
219
L := Length ( St ) ;
220
ValStream . Write (L , S i z e O f (L) ) ; // grava o comprimento da s t r i n g
221
f or k := 1 to L do
222
ValStream . Write ( St [ k ] , S i z e O f (Ch) ) ; // grava a s t r i n g , ch por
ch
223
224
ValStream . Write ( F D i r e i t a . Comprimento , S i z e O f ( F D i r e i t a .
Comprimento ) ) ;
225
ValStream . Write ( F D i r e i t a . DistanciaProximo , S i z e O f ( F D i r e i t a .
DistanciaProximo ) ) ;
226
227
ValStream . Write ( FEsquerda . Comprimento , S i z e O f ( FEsquerda .
Comprimento ) ) ;
228
ValStream . Write ( FEsquerda . DistanciaProximo , S i z e O f ( FEsquerda .
DistanciaProximo ) ) ;
229
167
17.17 ANEXO Q
230
17 ANEXOS
ValStream . Write ( FFrente . Comprimento , S i z e O f ( FFrente . Comprimento
));
231
ValStream . Write ( FFrente . DistanciaProximo , S i z e O f ( FFrente .
DistanciaProximo ) ) ;
232
233
ValStream . Write ( FFundo . Comprimento , S i z e O f ( FFundo . Comprimento ) )
;
234
ValStream . Write ( FFundo . DistanciaProximo , S i z e O f ( FFundo .
DistanciaProximo ) ) ;
235
236
// L i s t a de Pavimentos ;
237
N := FPavimentos . Count ;
238
ValStream . Write (N, S i z e O f (N) ) ;
239
f or k := 1 to N do
begin
240
241
TPavimento ( FPavimentos . Items [ k −1]) . GetStream ( S t r 1 ) ;
242
S t r 1 . P o s i t i o n := 0 ;
243
L := S t r 1 . S i z e ;
244
ValStream . Write (L , S i z e O f (L) ) ;
245
ValStream . CopyFrom ( Str1 , L) ;
end ;
246
247
248
S t r 1 . Destroy ;
249
250
end ;
251
252
// p r e e n c h e a s p r o p r i e d a d e s do o b j e t o com o s dados r e c e b i d o s de
ValStream
253
procedure T E d i f i c a c a o . SetStream ( ValStream : TMemoryStream ) ;
254
var
255
Xr : r e a l ;
168
17.17 ANEXO Q
256
Xc , Ch : char ;
257
N, k : Integer ;
258
Xl : boolean ;
259
L : Int64 ;
260
S t r 1 : TMemoryStream ;
261
St : S t r i n g ;
262
Pav : TPavimento ;
17 ANEXOS
263
264
begin
265
S t r 1 := TMemoryStream . C r e a t e ;
266
ValStream . P o s i t i o n := 0 ;
267
268
ValStream . Read(L , S i z e O f (L) ) ; // l e o comprimento da s t r i n g
269
St := ’’ ;
270
f or k := 1 to L do
271
begin
272
ValStream . Read(Ch , S i z e O f (Ch) ) ; // l e a s t r i n g
273
St := St+ch ;
274
275
end ;
FNome := St ;
276
277
ValStream . Read(L , S i z e O f (L) ) ; // l e o comprimento da s t r i n g
278
St := ’’ ;
279
f or k := 1 to L do
280
begin
281
ValStream . Read(Ch , S i z e O f (Ch) ) ; // l e a s t r i n g
282
St := St+ch ;
283
284
end ;
FArq := St ;
285
286
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
169
17.17 ANEXO Q
17 ANEXOS
287
F D i r e i t a . Comprimento := Xr ;
288
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
289
F D i r e i t a . D i s t a n c i a P r o x i m o := Xr ;
290
291
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
292
FEsquerda . Comprimento := Xr ;
293
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
294
FEsquerda . D i s t a n c i a P r o x i m o := Xr ;
295
296
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
297
FFrente . Comprimento := Xr ;
298
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
299
FFrente . D i s t a n c i a P r o x i m o := Xr ;
300
301
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
302
FFundo . Comprimento := Xr ;
303
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
304
FFundo . D i s t a n c i a P r o x i m o := Xr ;
305
306
// L i s t a de Pavimentos ;
307
ValStream . Read(N, S i z e O f (N) ) ;
308
f or k := 1 to N do
309
begin
310
ValStream . Read(L , S i z e O f (L) ) ;
311
Str1 . Position :=0;
312
S t r 1 . CopyFrom ( ValStream , L) ;
313
Pav := TPavimento . c r e a t e ;
314
Pav . SetStream ( S t r 1 ) ;
315
FPavimentos . Add( Pav ) ;
316
L i s t a . Add( Pav . Nome) ;
317
end ;
170
17.17 ANEXO Q
318
319
17 ANEXOS
S t r 1 . Destroy ;
end ;
320
321
procedure T E d i f i c a c a o . SetArq ( const Value : s t r i n g ) ;
322
begin
323
324
FArq := Value ;
end ;
325
326
procedure T E d i f i c a c a o . SetPavimentos ( const Value : T O b j e c t L i s t ) ;
327
begin
328
329
FPavimentos := Value ;
end ;
330
331
332
function T E d i f i c a c a o . GetIndPav (Nome : S t r i n g ) : integer ;
var i n d : integer ;
ok : boolean ;
333
334
begin
335
ok := f a l s e ;
336
i f ( FPavimentos . Count > 0 ) then
begin
337
338
i n d := −1;
339
repeat
340
inc ( ind ) ;
341
ok := ( i n d < FPavimentos . Count ) ;
u n t i l not ( ok ) or ( L i s t a [ i n d ] = Nome) ;
342
end ;
343
344
i f ok then r e s u l t := i n d+1
345
e l s e r e s u l t := −1;
346
end ;
347
348
function T E d i f i c a c a o . NomeValido (Nome : s t r i n g ) : boolean ;
171
17.17 ANEXO Q
349
var ok : boolean ;
i : integer ;
350
351
17 ANEXOS
begin
352
ok := true ;
353
f or i := 1 to FPavimentos . Count do
i f ( L i s t a [ i −1] = Nome) then ok := f a l s e ;
354
355
356
r e s u l t := ok ;
end ;
357
358
procedure T E d i f i c a c a o . E x p o r t a L i s t a P a v s ( var x L i s t a : T S t r i n g L i s t ) ;
359
begin
360
361
x L i s t a := L i s t a ;
end ;
362
363
procedure T E d i f i c a c a o . ExportaListaComodos ( Pav : S t r i n g ; var Items
: TStringList ) ;
364
365
var indPav : integer ;
begin
366
indPav := GetIndPav ( Pav ) ;
367
i f indPav > 0 then
begin
368
369
PavimentoAtual := TPavimento ( FPavimentos . Items [ indPav −1]) ;
370
PavimentoAtual . ExportaListaComodos ( Items ) ;
end ;
371
372
end ;
373
374
375
procedure T E d i f i c a c a o . I n s e r e P a v i m e n t o ;
376
var
377
Nome : s t r i n g ;
378
Pavx : TPavimento ;
172
17.17 ANEXO Q
379
17 ANEXOS
begin
380
Pavx := TPavimento . c r e a t e ;
381
Pavx . Nome := ’’ ;
382
Pavx . P e D i r e i t o := 0 ;
383
Pavx . Largura := F r e n t e . Comprimento ;
384
Pavx . P r o f u n d i d a d e := Esquerda . Comprimento ;
385
i f FormPavimento . MyShowModal ( Pavx , L i s t a , −1) then
begin
386
387
Pavimentos . Add( Pavx ) ;
388
L i s t a . Add( Pavx . Nome) ;
end ;
389
390
end ;
391
392
procedure T E d i f i c a c a o . InsereComodo ( Pav : S t r i n g ) ;
393
var
394
395
indP : integer ;
begin
396
indP := GetIndPav ( Pav ) ;
397
i f indP >= 0 then
begin
398
399
PavimentoAtual := TPavimento ( Pavimentos [ indP −1]) ;
400
PavimentoAtual . InsereComodo ;
401
Pavimentos [ indP −1] := PavimentoAtual ;
end ;
402
403
end ;
404
405
procedure T E d i f i c a c a o . I n s e r e O b j e t o ( Pav , Cmd: S t r i n g ) ;
406
var
407
408
409
indP : integer ;
begin
indP := GetIndPav ( Pav ) ;
173
17.17 ANEXO Q
410
17 ANEXOS
i f indP >= 0 then
begin
411
412
PavimentoAtual := TPavimento ( Pavimentos [ indP −1]) ;
413
PavimentoAtual . I n s e r e O b j e t o (Cmd) ;
414
Pavimentos [ indP −1] := PavimentoAtual ;
end ;
415
416
end ;
417
418
procedure T E d i f i c a c a o . EditaPavimento ( Pav : s t r i n g ) ;
419
var
420
421
indP : integer ;
begin
422
indP := GetIndPav ( Pav ) ;
423
i f indP >= 0 then
begin
424
425
PavimentoAtual := TPavimento ( Pavimentos . Items [ indP −1]) ;
426
i f FormPavimento . MyShowModal ( PavimentoAtual , L i s t a , indP )
then
begin
427
428
Pavimentos . Items [ indP −1] := PavimentoAtual ;
429
L i s t a [ indP −1] := PavimentoAtual . Nome ;
end ;
430
end ;
431
432
end ;
433
434
procedure T E d i f i c a c a o . EditaComodo ( Pav , Cmd: S t r i n g ) ;
435
var
436
437
indP : integer ;
begin
438
indP := GetIndPav ( Pav ) ;
439
i f indP >= 0 then
174
17.17 ANEXO Q
17 ANEXOS
begin
440
441
PavimentoAtual := TPavimento ( Pavimentos . Items [ indP −1]) ;
442
PavimentoAtual . EditaComodo (Cmd) ;
443
Pavimentos . Items [ indP −1] := PavimentoAtual ;
end ;
444
445
end ;
446
447
procedure T E d i f i c a c a o . E d i t a O b j e t o ( Pav , Cmd, Obj : S t r i n g ) ;
448
var
449
450
indP : integer ;
begin
451
indP := GetIndPav ( Pav ) ;
452
i f indP >= 0 then
begin
453
454
PavimentoAtual := TPavimento ( Pavimentos . Items [ indP −1]) ;
455
PavimentoAtual . E d i t a O b j e t o (Cmd, Obj ) ;
456
Pavimentos . Items [ indP −1] := PavimentoAtual ;
end ;
457
458
end ;
459
460
461
462
procedure T E d i f i c a c a o . RemovePavimento ( Pav : S t r i n g ) ;
var i n d : integer ;
begin
463
i n d := GetindPav ( Pav ) ;
464
i f MessageDlg ( ’Confirma Eliminacao do Pavimento: ’+Pav+’?’ ,
mtWarning , [ mbYes , mbNo ] , 0 ) = 6 then
465
466
i f ( i n d >= 0 ) then
begin
467
FPavimentos . Remove ( TPavimento ( FPavimentos . Items [ ind −1]) ) ;
468
L i s t a . D e l e t e ( ind −1) ;
469
end ;
175
17.17 ANEXO Q
470
17 ANEXOS
end ;
471
472
procedure T E d i f i c a c a o . RemoveComodo ( Pav , Cmd: S t r i n g ) ;
473
var
474
475
indP : integer ;
begin
476
indP := GetIndPav ( Pav ) ;
477
i f indP >= 0 then
begin
478
479
PavimentoAtual := TPavimento ( Pavimentos . Items [ indP −1]) ;
480
PavimentoAtual . RemoveComodo (Cmd) ;
481
Pavimentos . Items [ indP −1] := PavimentoAtual ;
end ;
482
483
end ;
484
485
procedure T E d i f i c a c a o . RemoveObjeto ( Pav , Cmd, Obj : S t r i n g ) ;
486
var
487
488
indP : integer ;
begin
489
indP := GetIndPav ( Pav ) ;
490
i f indP >= 0 then
begin
491
492
PavimentoAtual := TPavimento ( Pavimentos . Items [ indP −1]) ;
493
PavimentoAtual . RemoveObjeto (Cmd, Obj ) ;
494
Pavimentos . Items [ indP −1] := PavimentoAtual ;
end ;
495
496
end ;
497
498
procedure T E d i f i c a c a o . ExportaEdi ( var Edi : T E d i f i c a c a o ) ;
499
begin
500
Edi := T E d i f i c a c a o . C r e a t e ;
176
17.17 ANEXO Q
501
17 ANEXOS
end ;
502
503
end .
177
17.18 ANEXO R
17.18
17 ANEXOS
ANEXO R
Listagem 6: Código para a classe TPavimento
1
u n i t U Pavimento ;
2
3
interface
4
5
uses
6
S y s U t i l s , Windows , Messages , C l a s s e s , Graphics , C o n t r o l s ,
7
Forms , D i a l o g s , Contnrs , U Comodo , G r id s ;
8
9
type
10
TPavimento = c l a s s ( TObject )
11
private
12
FNome : s t r i n g ;
13
FComodos : T O b j e c t L i s t ;
14
FPeDireito : real ;
15
FProximoY : r e a l ;
16
FProximaLargura : r e a l ;
17
FProximaProfundidade : r e a l ;
18
FProximoX : r e a l ;
19
FLargura : r e a l ;
20
FProfundidade : r e a l ;
21
Lista : TStringList ;
22
ComodoAtual : TComodo ;
23
FCargaIncendio : r e a l ;
24
FArea : r e a l ;
25
FEnergia : r e a l ;
26
procedure SetComodos ( const Value : T O b j e c t L i s t ) ;
27
procedure S e t P e D i r e i t o ( const Value : r e a l ) ;
28
procedure S e t L a r g u r a ( const Value : r e a l ) ;
178
17.18 ANEXO R
29
30
17 ANEXOS
procedure S e t P r o f u n d i d a d e ( const Value : r e a l ) ;
public
31
c o n s t r u c t o r Create ;
32
d e s t r u c t o r Destroy ;
33
function NomeValido (Nome : s t r i n g ) : boolean ;
34
function GetIndComodo (Nome : S t r i n g ) : integer ;
35
function ProximoComodo ( ) : boolean ; // busca c o o r d e n a d a s do
proximo comodo p o s s i v e l ( v a z i o na p l a n t a )
36
procedure InsereComodo ;
37
procedure EditaComodo (Cmd : S t r i n g ) ;
38
procedure RemoveComodo (Cmd : S t r i n g ) ;
39
procedure I n s e r e O b j e t o (Cmd : S t r i n g ) ;
40
procedure E d i t a O b j e t o (Cmd, Obj : S t r i n g ) ;
41
procedure RemoveObjeto (Cmd, Obj : S t r i n g ) ;
42
procedure ExportaGridComodos ( var Grid : TS tr in gG r id ) ;
43
procedure ExportaGridObjetos (Cmd: s t r i n g ; var Grid :
TS tr in gG r id ) ;
44
procedure ExportaListaComodos ( var Items : T S t r i n g L i s t ) ;
45
procedure GetStream ( var ValStream : TMemoryStream ) ;
46
procedure SetStream ( ValStream : TMemoryStream ) ;
47
p r o p e r t y Nome : s t r i n g read FNome write FNome ;
48
p r o p e r t y P e D i r e i t o : r e a l read F P e D i r e i t o write S e t P e D i r e i t o
;
49
p r o p e r t y Largura : r e a l read FLargura write S e t L a r g u r a ;
50
p r o p e r t y P r o f u n d i d a d e : r e a l read FProfundidade write
SetProfundidade ;
51
p r o p e r t y Comodos : T O b j e c t L i s t read FComodos write
SetComodos ;
52
p r o p e r t y ProximoX : r e a l read FProximoX ; // proxima coordenada
v a z i a para um comodo
53
p r o p e r t y ProximoY : r e a l read FProximoY ;
179
17.18 ANEXO R
17 ANEXOS
54
p r o p e r t y ProximaLargura : r e a l read FProximaLargura ;
55
p r o p e r t y ProximaProfundidade : r e a l read FProximaProfundidade ;
56
p r o p e r t y Area : r e a l read FArea ;
57
p r o p e r t y E n e r g i a : r e a l read FEnergia ;
58
p r o p e r t y C a r g a I n c e n d i o : r e a l read FCargaIncendio ;
59
procedure C a l c u l o s ( ) ;
60
end ;
61
62
63
64
65
implementation
66
67
u s e s U FormComodo ;
68
69
{
70
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ TPavimento
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
71
}
72
c o n s t r u c t o r TPavimento . C r e a t e ;
73
begin
74
FComodos := T o b j e c t L i s t . C r e a t e ;
75
L i s t a := T S t r i n g L i s t . C r e a t e ;
76
ComodoAtual := TComodo . C r e a t e ;
77
end ;
78
79
d e s t r u c t o r TPavimento . Destroy ;
80
begin
81
82
FComodos . Free ;
end ;
83
180
17.18 ANEXO R
84
85
86
17 ANEXOS
procedure TPavimento . ExportaGridComodos ( var Grid : TS tr in gG r id ) ;
var l i n : integer ;
begin
87
Grid . ColCount := 3 ;
88
Grid . C e l l s [ 0 , 0 ] := ’Comodo ’ ;
89
Grid . C e l l s [ 1 , 0 ] := ’Nome ’ ;
90
Grid . C e l l s [ 2 , 0 ] := ’Especialidade ’ ;
91
i f FComodos . Count > 0 then
begin
92
93
Grid . RowCount := FComodos . Count +1;
94
f or l i n := 1 to Grid . RowCount−1 do
begin
95
96
Grid . C e l l s [ 0 , l i n ] := I n t T o S t r ( l i n ) ;
97
Grid . C e l l s [ 1 , l i n ] := TComodo( FComodos . Items [ l i n −1]) .
Nome ;
Grid . C e l l s [ 2 , l i n ] := TComodo( FComodos . Items [ l i n −1]) .
98
Ocupacao . e s p e c i a l i d a d e ;
end ;
99
end
100
101
else
begin
102
103
Grid . RowCount := 2 ;
104
Grid . C e l l s [ 0 , 1 ] := ’’ ;
105
Grid . C e l l s [ 1 , 1 ] := ’’ ;
106
Grid . C e l l s [ 2 , 1 ] := ’’ ;
end ;
107
108
end ;
109
110
procedure TPavimento . ExportaGridObjetos (Cmd: s t r i n g ; var Grid :
TS tr in gG r id ) ;
111
var indC : integer ;
181
17.18 ANEXO R
112
17 ANEXOS
begin
113
indC := GetindComodo (Cmd) ;
114
i f ( indC >= 0 ) then
begin
115
116
ComodoAtual := TComodo( Comodos [ indC −1]) ;
117
ComodoAtual . ExportaGridObjetos ( Grid ) ;
end ;
118
119
end ;
120
121
procedure TPavimento . InsereComodo ;
122
var
123
Nome : s t r i n g ;
124
Comx : TComodo ;
125
begin
126
Comx := TComodo . c r e a t e ;
127
Comx . Nome := ’’ ;
128
Comx . A l t u r a := F P e D i r e i t o ;
129
Comx . Largura := FLargura ;
130
Comx . P r o f u n d i d a d e := FProfundidade ;
131
i f FormComodo . MyShowModal (Comx , L i s t a , −1) then
begin
132
133
Comodos . Add(Comx) ;
134
L i s t a . Add(Comx . Nome) ;
end ;
135
136
end ;
137
138
139
140
procedure TPavimento . EditaComodo (Cmd: S t r i n g ) ;
var indC : integer ;
begin
141
indC := GetindComodo (Cmd) ;
142
i f ( indC >= 0 ) then
182
17.18 ANEXO R
17 ANEXOS
begin
143
144
ComodoAtual := TComodo( Comodos [ indC −1]) ;
145
i f FormComodo . MyShowModal ( ComodoAtual , L i s t a , indC ) then
begin
146
147
Comodos [ indC −1] := ComodoAtual ;
148
L i s t a [ indC −1] := ComodoAtual . Nome ;
end ;
149
end ;
150
151
end ;
152
153
154
155
procedure TPavimento . RemoveComodo (Cmd: S t r i n g ) ;
var indC : integer ;
begin
156
indC := GetindComodo (Cmd) ;
157
i f MessageDlg ( ’Confirma Eliminacao do Comodo: ’+Cmd+’?’ ,
mtWarning , [ mbYes , mbNo ] , 0 ) = 6 then
158
i f ( indC >= 0 ) then
begin
159
160
Comodos . Remove ( FComodos . Items [ indC −1]) ;
161
L i s t a . D e l e t e ( indC −1) ;
end ;
162
163
end ;
164
165
166
167
procedure TPavimento . I n s e r e O b j e t o (Cmd: S t r i n g ) ;
var indC : integer ;
begin
168
indC := GetindComodo (Cmd) ;
169
i f ( indC >= 0 ) then
170
begin
171
ComodoAtual := TComodo( Comodos [ indC −1]) ;
172
ComodoAtual . I n s e r e O b j e t o ;
183
17.18 ANEXO R
Comodos [ indC −1] := ComodoAtual ;
173
end ;
174
175
17 ANEXOS
end ;
176
177
178
179
procedure TPavimento . E d i t a O b j e t o (Cmd, Obj : S t r i n g ) ;
var indC : integer ;
begin
180
indC := GetindComodo (Cmd) ;
181
i f ( indC >= 0 ) then
begin
182
183
ComodoAtual := TComodo( Comodos [ indC −1]) ;
184
ComodoAtual . E d i t a O b j e t o ( Obj ) ;
185
Comodos [ indC −1] := ComodoAtual ;
end ;
186
187
end ;
188
189
190
191
procedure TPavimento . RemoveObjeto (Cmd, Obj : S t r i n g ) ;
var indC : integer ;
begin
192
indC := GetindComodo (Cmd) ;
193
i f ( indC >= 0 ) then
begin
194
195
ComodoAtual := TComodo( Comodos [ indC −1]) ;
196
ComodoAtual . RemoveObjeto ( Obj ) ;
197
Comodos [ indC −1] := ComodoAtual ;
end ;
198
199
end ;
200
201
// r e t o r n a uma stream com dados do o b j e t o
202
procedure TPavimento . GetStream ( var ValStream : TMemoryStream ) ;
203
var S t r 1 : TMemoryStream ;
184
17.18 ANEXO R
204
L : Int64 ;
205
St : S t r i n g ;
206
ch : char ;
207
k ,N : integer ;
17 ANEXOS
208
209
begin
210
S t r 1 := TMemoryStream . C r e a t e ;
211
ValStream . P o s i t i o n := 0 ;
212
213
St := FNome ;
214
L := Length ( St ) ;
215
ValStream . Write (L , S i z e O f (L) ) ; // grava o comprimento da s t r i n g
216
f or k := 1 to L do
217
ValStream . Write ( St [ k ] , S i z e O f (Ch) ) ; // grava a s t r i n g , ch por
ch
218
219
ValStream . Write ( FPeDireito , S i z e O f ( F P e D i r e i t o ) ) ;
220
ValStream . Write ( FLargura , S i z e O f ( FLargura ) ) ;
221
ValStream . Write ( FProfundidade , S i z e O f ( FProfundidade ) ) ;
222
223
// L i s t a de Comodos ;
224
N := FComodos . Count ;
225
ValStream . Write (N, S i z e O f (N) ) ;
226
f or k := 1 to N do
227
begin
228
TComodo( FComodos . Items [ k −1]) . GetStream ( S t r 1 ) ;
229
S t r 1 . P o s i t i o n := 0 ;
230
L := S t r 1 . S i z e ;
231
ValStream . Write (L , S i z e O f (L) ) ;
232
ValStream . CopyFrom ( Str1 , L) ;
233
end ;
185
17.18 ANEXO R
17 ANEXOS
234
235
236
S t r 1 . Destroy ;
end ;
237
238
// p r e e n c h e a s p r o p r i e d a d e s do o b j e t o com o s dados r e c e b i d o s de
ValStream
239
procedure TPavimento . SetStream ( ValStream : TMemoryStream ) ;
240
var
241
Xr : r e a l ;
242
Xc , Ch : char ;
243
N, k : Integer ;
244
Xl : boolean ;
245
L : Int64 ;
246
S t r 1 : TMemoryStream ;
247
St : S t r i n g ;
248
Comodo : TComodo ;
249
250
begin
251
S t r 1 := TMemoryStream . C r e a t e ;
252
ValStream . P o s i t i o n := 0 ;
253
254
ValStream . Read(L , S i z e O f (L) ) ; // l e o comprimento da s t r i n g
255
St := ’’ ;
256
f or k := 1 to L do
257
begin
258
ValStream . Read(Ch , S i z e O f (Ch) ) ; // l e a s t r i n g
259
St := St+ch ;
260
261
end ;
FNome := St ;
262
263
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
186
17.18 ANEXO R
17 ANEXOS
264
F P e D i r e i t o := Xr ;
265
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
266
FLargura := Xr ;
267
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
268
FProfundidade := Xr ;
269
270
// L i s t a de Comodos ;
271
ValStream . Read(N, S i z e O f (N) ) ;
272
f or k := 1 to N do
begin
273
274
ValStream . Read(L , S i z e O f (L) ) ;
275
Str1 . Position :=0;
276
S t r 1 . CopyFrom ( ValStream , L) ;
277
Comodo := TComodo . c r e a t e ;
278
Comodo . SetStream ( S t r 1 ) ;
279
FComodos . Add( Comodo ) ;
280
L i s t a . Add( Comodo . Nome) ;
end ;
281
282
283
284
S t r 1 . Destroy ;
end ;
285
286
procedure TPavimento . SetComodos ( const Value : T O b j e c t L i s t ) ;
287
begin
288
289
FComodos := Value ;
end ;
290
291
292
function TPavimento . GetIndComodo (Nome : S t r i n g ) : integer ;
var i n d : integer ;
ok : boolean ;
293
294
begin
187
17.18 ANEXO R
295
ok := f a l s e ;
296
i f ( FComodos . Count > 0 ) then
17 ANEXOS
begin
297
298
i n d := −1;
299
repeat
300
inc ( ind ) ;
301
ok := ( i n d < FComodos . Count ) ;
u n t i l not ( ok ) or ( L i s t a [ i n d ] = Nome) ;
302
end ;
303
304
i f ok then r e s u l t := i n d+1
305
e l s e r e s u l t := −1;
306
end ;
307
308
309
function TPavimento . NomeValido (Nome : s t r i n g ) : boolean ;
var ok : boolean ;
i : integer ;
310
311
begin
312
ok := true ;
313
f or i := 1 to L i s t a . Count do
begin
314
i f ( L i s t a [ i −1] = Nome) then ok := f a l s e ;
315
end ;
316
317
318
r e s u l t := ok ;
end ;
319
320
procedure TPavimento . S e t P e D i r e i t o ( const Value : r e a l ) ;
321
begin
322
323
F P e D i r e i t o := Value ;
end ;
324
325
function TPavimento . ProximoComodo : boolean ;
188
17.18 ANEXO R
326
17 ANEXOS
var i : integer ;
327
xComodo , yComodo : TComodo ;
328
auxX , auxY : r e a l ;
329
begin
330
i := 0 ;
331
FProximoX := −1;
332
FProximoY := −1;
333
FProximaLargura := −1;
334
FProximaProfundidade := −1;
335
i f FComodos . Count > 0 then
336
337
begin
repeat
338
xComodo := TComodo . C r e a t e ;
339
xComodo := TComodo( FComodos . Items [ i ] ) ;
340
auxX := xComodo . PosX+xComodo . Largura ; // x maximo do
comodo
341
auxY := xComodo . PosY+xComodo . P r o f u n d i d a d e ; // y maximo
do comodo
342
343
i f auxX < Largura then // cabe na l a r g u r a do pavimento
begin
344
// v e r i f i c a s e nao e s t a d e n t r o do proximo comodo
345
yComodo := TComodo . C r e a t e ;
346
i f ( i +1) < FComodos . Count then // s e a i n d a e x i s t e m
comodos
347
begin
348
yComodo := TComodo( FComodos . Items [ i +1]) ;
349
i f not ( yComodo . Dentro ( auxX , auxY ) ) then FProximoX
:= auxX ;
350
351
352
yComodo . Free ;
end
e l s e FProximoX := auxX ;
189
17.18 ANEXO R
17 ANEXOS
end ;
353
i f auxY < P r o f u n d i d a d e then // cabe na p r o f u n d i d a d e do
354
pavimento
begin
355
356
// v e r i f i c a s e nao e s t a d e n t r o do proximo comodo
357
yComodo := TComodo . C r e a t e ;
358
i f ( i +1) < FComodos . Count then // s e a i n d a e x i s t e m
comodos
begin
359
360
yComodo := TComodo( FComodos . Items [ i +1]) ;
361
i f not ( yComodo . Dentro ( auxX , auxY ) ) then FProximoY
:= auxY ;
yComodo . Free ;
362
end
363
e l s e FProximoY := auxY ;
364
end ;
365
366
xComodo . Free ;
367
inc ( i ) ;
u n t i l ( i >= FComodos . Count ) ;
368
end ;
369
370
i f FProximoX > 0 then FProximaLargura := Largura−FProximoX ;
371
i f FProximoY > 0 then FProximaProfundidade := Profundidade−
FProximoY ;
372
end ;
373
374
procedure TPavimento . S e t L a r g u r a ( const Value : r e a l ) ;
375
begin
376
377
FLargura := Value ;
end ;
378
379
procedure TPavimento . S e t P r o f u n d i d a d e ( const Value : r e a l ) ;
190
17.18 ANEXO R
380
381
382
17 ANEXOS
begin
FProfundidade := Value ;
end ;
383
384
procedure TPavimento . ExportaListaComodos ( var Items : T S t r i n g L i s t )
;
385
386
387
begin
Items := L i s t a ;
end ;
388
389
390
391
procedure TPavimento . C a l c u l o s ;
var i : integer ;
begin
392
FArea := 0 ;
393
FEnergia := 0 ;
394
f or i := 1 to Comodos . Count do
begin
395
396
TComodo( Comodos . Items [ i −1]) . C a l c u l o s ( ) ;
397
FArea := FArea+TComodo( Comodos . Items [ i −1]) . Area ;
398
FEnergia := FEnergia+TComodo( Comodos . Items [ i −1]) . E n e r g i a ;
end ;
399
400
i f FArea > 0 then FCargaIncendio := FEnergia /FArea
401
e l s e FCargaIncendio := −1;
402
end ;
403
404
end .
191
17.19 ANEXO S
17.19
17 ANEXOS
ANEXO S
Listagem 7: Código para a classe TComodo
1
u n i t U Comodo ;
2
3
interface
4
5
uses
6
S y s U t i l s , Windows , Messages , C l a s s e s , Graphics , C o n t r o l s ,
7
Forms , D i a l o g s , Contnrs , U Objeto , G r id s ;
8
9
10
type
TOcupacao = record
11
Tipo : S t r i n g [ 5 0 ] ;
12
Especialidade : String [ 5 0 ] ;
13
q f i : Real ;
14
end ;
15
16
TComodo = c l a s s ( TObject )
17
private
18
FNome : s t r i n g ;
19
FPosX : Real ;
20
FPosY : Real ;
21
FAltura : Real ;
22
FLargura : Real ;
23
FProfundidade : Real ;
24
FObjetos : T O b j e c t L i s t ;
25
FOcupacao : TOcupacao ;
26
Lista : TStringList ;
27
ObjetoAtual : TObjeto ;
28
FCargaIncendio : r e a l ;
192
17.19 ANEXO S
17 ANEXOS
29
FArea : r e a l ;
30
FEnergia : r e a l ;
31
procedure S e t A l t u r a ( const Value : Real ) ;
32
procedure S e t L a r g u r a ( const Value : Real ) ;
33
procedure SetPosX ( const Value : Real ) ;
34
procedure SetPosY ( const Value : Real ) ;
35
procedure S e t P r o f u n d i d a d e ( const Value : Real ) ;
36
procedure S e t O b j e t o s ( const Value : T O b j e c t L i s t ) ;
37
function C a l c C a r g a I n c e n d i o O b j : r e a l ;
38
function CalcCargaIncendioOcup : r e a l ;
39
procedure SetArea ( const Value : r e a l ) ;
40
procedure S e t C a r g a I n c e n d i o ( const Value : r e a l ) ;
41
procedure S e t E n e r g i a ( const Value : r e a l ) ;
42
public
43
c o n s t r u c t o r Create ;
44
d e s t r u c t o r Destroy ;
45
p r o p e r t y Nome : s t r i n g read FNome write FNome ;
46
function NomeValido (Nome : s t r i n g ) : boolean ;
47
p r o p e r t y A l t u r a : Real read FAltura write S e t A l t u r a ;
48
p r o p e r t y Largura : Real read FLargura write S e t L a r g u r a ;
49
p r o p e r t y P r o f u n d i d a d e : Real read FProfundidade write
SetProfundidade ;
50
p r o p e r t y PosX : Real read FPosX write SetPosX ;
51
p r o p e r t y PosY : Real read FPosY write SetPosY ;
52
procedure SetOcupacao ( const Value : TOcupacao ) ;
53
p r o p e r t y Ocupacao : TOcupacao read FOcupacao write
SetOcupacao ;
54
p r o p e r t y O b j e t o s : T O b j e c t L i s t read FObjetos write
SetObjetos ;
55
procedure I n s e r e O b j e t o ;
56
procedure E d i t a O b j e t o ( Obj : S t r i n g ) ;
193
17.19 ANEXO S
17 ANEXOS
57
procedure Removeobjeto ( Obj : S t r i n g ) ;
58
function GetIndObjeto (Nome : S t r i n g ) : integer ;
59
procedure ExportaGridObjetos ( var Grid : TS tr in gG r id ) ;
60
procedure GetStream ( var ValStream : TMemoryStream ) ;
61
procedure SetStream ( ValStream : TMemoryStream ) ;
62
function Dentro ( x , y : r e a l ) : boolean ;
63
p r o p e r t y Area : r e a l read FArea write SetArea ;
64
p r o p e r t y E n e r g i a : r e a l read FEnergia write S e t E n e r g i a ;
65
p r o p e r t y C a r g a I n c e n d i o : r e a l read FCargaIncendio write
SetCargaIncendio ;
procedure C a l c u l o s ( ) ;
66
67
end ;
68
69
70
implementation
71
72
u s e s U FormObjeto ;
73
74
{ TComodo }
75
76
{
77
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ TComodo
∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗
78
}
79
c o n s t r u c t o r TComodo . C r e a t e ;
80
begin
81
FNome := ’’ ;
82
FAltura := 0 ;
83
FLargura := 0 ;
84
FProfundidade := 0 ;
85
FPosX := 0 ;
194
17.19 ANEXO S
17 ANEXOS
86
FPosY := 0 ;
87
FOcupacao . Tipo := ’’ ;
88
FOcupacao . E s p e c i a l i d a d e := ’’ ;
89
FOcupacao . q f i := 0 ;
90
O b j e t o s := T o b j e c t L i s t . C r e a t e ;
91
L i s t a := T S t r i n g L i s t . C r e a t e ;
92
ObjetoAtual := TObjeto . C r e a t e ;
93
end ;
94
95
d e s t r u c t o r TComodo . Destroy ;
96
begin
97
Objetos . Clear ;
98
O b j e t o s . Free ;
99
end ;
100
101
102
procedure TComodo . GetStream ( var ValStream : TMemoryStream ) ;
var S t r 1 : TMemoryStream ;
103
L : Int64 ;
104
St : S t r i n g ;
105
ch : char ;
106
k ,N : integer ;
107
108
begin
109
S t r 1 := TMemoryStream . C r e a t e ;
110
ValStream . P o s i t i o n := 0 ;
111
112
St := FNome ;
113
L := Length ( St ) ;
114
ValStream . Write (L , S i z e O f (L) ) ; // grava o comprimento da s t r i n g
115
f or k := 1 to L do
195
17.19 ANEXO S
116
17 ANEXOS
ValStream . Write ( St [ k ] , S i z e O f (Ch) ) ; // grava a s t r i n g , ch por
ch
117
118
ValStream . Write ( FAltura , S i z e O f ( FAltura ) ) ;
119
ValStream . Write ( FLargura , S i z e O f ( FLargura ) ) ;
120
ValStream . Write ( FProfundidade , S i z e O f ( FProfundidade ) ) ;
121
ValStream . Write ( FPosX , S i z e O f ( FPosX ) ) ;
122
ValStream . Write ( FPosY , S i z e O f ( FPosY ) ) ;
123
124
St := FOcupacao . Tipo ;
125
L := Length ( St ) ;
126
ValStream . Write (L , S i z e O f (L) ) ; // grava o comprimento da s t r i n g
127
f or k := 1 to L do
128
ValStream . Write ( St [ k ] , S i z e O f (Ch) ) ; // grava a s t r i n g , ch por
ch
129
St := FOcupacao . E s p e c i a l i d a d e ;
130
L := Length ( St ) ;
131
ValStream . Write (L , S i z e O f (L) ) ; // grava o comprimento da s t r i n g
132
f or k := 1 to L do
133
ValStream . Write ( St [ k ] , S i z e O f (Ch) ) ; // grava a s t r i n g , ch por
ch
134
ValStream . Write ( FOcupacao . q f i , S i z e O f ( FOcupacao . q f i ) ) ;
135
136
// L i s t a de o b j e t o s
137
N := FObjetos . Count ;
138
ValStream . Write (N, S i z e O f (N) ) ;
139
f or k := 1 to N do
140
begin
141
TObjeto ( FObjetos . Items [ k −1]) . GetStream ( S t r 1 ) ;
142
S t r 1 . P o s i t i o n := 0 ;
143
L := S t r 1 . S i z e ;
196
17.19 ANEXO S
17 ANEXOS
144
ValStream . Write (L , S i z e O f (L) ) ;
145
ValStream . CopyFrom ( Str1 , L) ;
end ;
146
147
148
S t r 1 . Destroy ;
149
150
end ;
151
152
procedure TComodo . SetStream ( ValStream : TMemoryStream ) ;
153
var
154
Xr : r e a l ;
155
Ch : char ;
156
k ,N : Integer ;
157
L : Int64 ;
158
S t r 1 : TMemoryStream ;
159
St : S t r i n g ;
160
Objeto : TObjeto ;
161
162
begin
163
S t r 1 := TMemoryStream . C r e a t e ;
164
ValStream . P o s i t i o n := 0 ;
165
166
ValStream . Read(L , S i z e O f (L) ) ; // l e o comprimento da s t r i n g
167
St := ’’ ;
168
f or k := 1 to L do
169
begin
170
ValStream . Read(Ch , S i z e O f (Ch) ) ; // l e a s t r i n g
171
St := St+ch ;
172
173
end ;
FNome := St ;
174
197
17.19 ANEXO S
17 ANEXOS
175
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
176
FAltura := Xr ;
177
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
178
FLargura := Xr ;
179
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
180
FProfundidade := Xr ;
181
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
182
FPosX := Xr ;
183
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
184
FPosY := Xr ;
185
186
ValStream . Read(L , S i z e O f (L) ) ; // l e o comprimento da s t r i n g
187
St := ’’ ;
188
f or k := 1 to L do
189
begin
190
ValStream . Read(Ch , S i z e O f (Ch) ) ; // l e a s t r i n g
191
St := St+ch ;
192
end ;
193
FOcupacao . Tipo := St ;
194
ValStream . Read(L , S i z e O f (L) ) ; // l e o comprimento da s t r i n g
195
St := ’’ ;
196
f or k := 1 to L do
197
begin
198
ValStream . Read(Ch , S i z e O f (Ch) ) ; // l e a s t r i n g
199
St := St+ch ;
200
end ;
201
FOcupacao . E s p e c i a l i d a d e := St ;
202
ValStream . Read( Xr , S i z e O f ( Xr ) ) ;
203
FOcupacao . q f i := Xr ;
204
205
// L i s t a de o b j e t o s
198
17.19 ANEXO S
206
ValStream . Read(N, S i z e O f (N) ) ;
207
f or k := 1 to N do
17 ANEXOS
begin
208
209
ValStream . Read(L , S i z e O f (L) ) ;
210
Str1 . Position :=0;
211
S t r 1 . CopyFrom ( ValStream , L) ;
212
Objeto := TObjeto . c r e a t e ;
213
Objeto . SetStream ( S t r 1 ) ;
214
FObjetos . Add( Objeto ) ;
215
L i s t a . Add( Objeto . Nome)
end ;
216
217
218
219
S t r 1 . Destroy ;
end ;
220
221
procedure TComodo . S e t A l t u r a ( const Value : Real ) ;
222
begin
223
224
FAltura := Value ;
end ;
225
226
procedure TComodo . S e t L a r g u r a ( const Value : Real ) ;
227
begin
228
229
FLargura := Value ;
end ;
230
231
procedure TComodo . SetPosX ( const Value : Real ) ;
232
begin
233
234
FPosX := Value ;
end ;
235
236
procedure TComodo . SetPosY ( const Value : Real ) ;
199
17.19 ANEXO S
237
238
239
17 ANEXOS
begin
FPosY := Value ;
end ;
240
241
procedure TComodo . S e t P r o f u n d i d a d e ( const Value : Real ) ;
242
begin
243
244
FProfundidade := Value ;
end ;
245
246
procedure TComodo . S e t O b j e t o s ( const Value : T O b j e c t L i s t ) ;
247
begin
248
249
FObjetos := Value ;
end ;
250
251
252
253
254
255
procedure TComodo . ExportaGridObjetos ( var Grid : TS tr in gG r id ) ;
var l i n : integer ;
begin
i f FObjetos . Count > 0 then
begin
256
Grid . RowCount := FObjetos . Count +1;
257
Grid . ColCount := 3 ;
258
Grid . C e l l s [ 0 , 0 ] := ’Objeto ’ ;
259
Grid . C e l l s [ 1 , 0 ] := ’Nome ’ ;
260
Grid . C e l l s [ 2 , 0 ] := ’Energia (MJ)’ ;
261
f or l i n := 1 to FObjetos . Count do
262
begin
263
Grid . C e l l s [ 0 , l i n ] := I n t T o S t r ( l i n ) ;
264
Grid . C e l l s [ 1 , l i n ] := TObjeto ( FObjetos . Items [ l i n −1]) .
Nome ;
265
Grid . C e l l s [ 2 , l i n ] := F l o a t T o S t r ( TObjeto ( FObjetos . Items
[ l i n −1]) . E n e r g i a ) ;
200
17.19 ANEXO S
end ;
266
end
267
268
17 ANEXOS
else
begin
269
270
Grid . RowCount := 2 ;
271
Grid . ColCount := 3 ;
272
Grid . C e l l s [ 0 , 0 ] := ’Objeto ’ ;
273
Grid . C e l l s [ 1 , 0 ] := ’Nome ’ ;
274
Grid . C e l l s [ 2 , 0 ] := ’Energia (MJ)’ ;
275
Grid . C e l l s [ 0 , 1 ] := ’’ ;
276
Grid . C e l l s [ 1 , 1 ] := ’’ ;
277
Grid . C e l l s [ 2 , 1 ] := ’’ ;
end ;
278
279
end ;
280
281
procedure TComodo . I n s e r e O b j e t o ;
282
var
283
Nome : s t r i n g ;
284
Obx : TObjeto ;
285
begin
286
Obx:= TObjeto . c r e a t e ;
287
Obx . Nome := ’’ ;
288
Obx . A l t u r a := 1 ;
289
Obx . Largura := 1 ;
290
Obx . P r o f u n d i d a d e := 1 ;
291
i f FormObjeto . MyShowModal (Obx , L i s t a , −1) then
begin
292
293
O b j e t o s . Add(Obx) ;
294
L i s t a . Add(Obx . Nome) ;
end ;
295
296
end ;
201
17.19 ANEXO S
17 ANEXOS
297
298
299
300
procedure TComodo . E d i t a O b j e t o ( Obj : S t r i n g ) ;
var indO : integer ;
begin
301
indO := GetindObjeto ( Obj ) ;
302
i f ( indO >= 0 ) then
begin
303
304
ObjetoAtual := TObjeto ( O b j e t o s [ indO −1]) ;
305
i f FormObjeto . MyShowModal ( ObjetoAtual , L i s t a , indO ) then
begin
306
307
O b j e t o s [ indO −1] := ObjetoAtual ;
308
L i s t a [ indO −1] := ObjetoAtual . Nome ;
end ;
309
end ;
310
311
end ;
312
313
314
315
procedure TComodo . Removeobjeto ( Obj : S t r i n g ) ;
var indO : integer ;
begin
316
indO := GetindObjeto ( o b j ) ;
317
i f MessageDlg ( ’Confirma Eliminacao do objeto: ’+Obj+’?’ ,
mtWarning , [ mbYes , mbNo ] , 0 ) = 6 then
318
i f ( indO >= 0 ) then
begin
319
320
FObjetos . Remove ( TObjeto ( FObjetos . Items [ indO −1]) ) ;
321
L i s t a . D e l e t e ( indO −1) ;
end ;
322
323
end ;
324
325
procedure TComodo . SetOcupacao ( const Value : TOcupacao ) ;
326
begin
202
17.19 ANEXO S
327
328
17 ANEXOS
FOcupacao := Value ;
end ;
329
330
331
function TComodo . GetIndObjeto (Nome : S t r i n g ) : integer ;
var i n d : integer ;
ok : boolean ;
332
333
begin
334
ok := f a l s e ;
335
i f ( FObjetos . Count > 0 ) then
begin
336
337
i n d := −1;
338
repeat
339
inc ( ind ) ;
340
ok := ( i n d < FObjetos . Count ) ;
u n t i l not ( ok ) or ( L i s t a [ i n d ] = Nome) ;
341
end ;
342
343
i f ok then r e s u l t := i n d+1
344
e l s e r e s u l t := −1;
345
end ;
346
347
348
function TComodo . NomeValido (Nome : s t r i n g ) : boolean ;
var ok : boolean ;
i : integer ;
349
350
begin
351
ok := true ;
352
f or i := 1 to FObjetos . Count do
i f TObjeto ( FObjetos . Items [ i −1]) . Nome = Nome then ok := f a l s e
353
;
354
355
r e s u l t := ok ;
end ;
356
203
17.19 ANEXO S
17 ANEXOS
357
function TComodo . C a l c C a r g a I n c e n d i o O b j : r e a l ;
358
begin
359
360
end ;
361
362
363
364
function TComodo . CalcCargaIncendioOcup : r e a l ;
var carga , a r e a : r e a l ;
begin
365
a r e a := FLargura ∗ FProfundidade ;
366
c a r g a := a r e a ∗ ocupacao . q f i ;
367
r e s u l t := c a r g a ;
368
end ;
369
370
// r e t o r n a true s e o ponto ( x , y ) e s t a d e n t r o do comodo
371
function TComodo . Dentro ( x , y : r e a l ) : boolean ;
372
begin
373
r e s u l t := ( ( x > PosX ) and ( x < ( PosX+Largura ) ) ) and
( ( y > PosY ) and ( y < ( PosY+P r o f u n d i d a d e ) ) ) ;
374
375
end ;
376
377
378
379
procedure TComodo . C a l c u l o s ;
var i : integer ;
begin
380
FArea := FLargura ∗ FProfundidade ;
381
FEnergia := 0 ;
382
f or i := 1 to O b j e t o s . Count do
383
begin
384
TObjeto ( FObjetos . Items [ i −1]) . C a l c u l o s ( ) ;
385
FEnergia := FEnergia+TObjeto ( FObjetos . Items [ i −1]) . E n e r g i a ;
386
387
end ;
i f FArea > 0 then FCargaIncendio := FEnergia /FArea
204
17.19 ANEXO S
388
389
17 ANEXOS
e l s e FCargaIncendio := −1;
end ;
390
391
procedure TComodo . SetArea ( const Value : r e a l ) ;
392
begin
393
394
FArea := Value ;
end ;
395
396
procedure TComodo . S e t C a r g a I n c e n d i o ( const Value : r e a l ) ;
397
begin
398
399
FCargaIncendio := Value ;
end ;
400
401
procedure TComodo . S e t E n e r g i a ( const Value : r e a l ) ;
402
begin
403
404
FEnergia := Value ;
end ;
405
406
end .
205
REDEMAT
REDE TEMÁTICA EM ENGENHARIA DE MATERIAIS
UFOP – CETEC – UEMG
UFOP - CETEC - UEMG
Sandra Arlinda Santiago Maciel
"Desenvolvimento de um software para levantamento de
características de reação ao fogo dos materiais de uso
comum: carga de incêndio"
Dissertação de Mestrado apresentada ao Programa de
Pós-Graduação
em
Engenharia
de
Materiais
da
REDEMAT, como parte integrante dos requisitos para a
obtenção do título de Mestre em Engenharia de
Materiais.
Área de concentração: Análise de Materiais
Orientador: Prof. Antônio Maria Claret de Gouveia, DSc
Co-Orientador: Prof. Ronaldo Silva Trindade, MSc
Ouro Preto, setembro de 2008
M152d
Maciel, Sandra Arlinda Santiago.
Desenvolvimento de um software para levantamento de características
de reação ao fogo dos materiais de uso comum [manuscrito]: carga de incêndio /
Sandra Arlinda Santiago Maciel. – 2008.
205f.: il. color., tabs.
Orientador: Prof. Dr. Antônio Maria Claret Gouveia.
Co-orientador: Prof. Ronaldo Silva Trindade.
Dissertação (Mestrado) - Universidade Federal de Ouro Preto. Escola de
Minas. Rede Temática em Engenharia de Materiais.
Área de concentração: Análise e seleção de materiais.
Catalogação: [email protected]
“Posso, tudo posso Naquele que me fortalece
Nada e ninguém no mundo vai me fazer desistir
Quero, tudo quero, sem medo entregar meus projetos
Deixar-me guiar nos caminhos que Deus desejou pra mim e ali estar
Vou perseguir tudo aquilo que Deus já escolheu pra mim
Vou persistir, e mesmo nas marcas daquela dor
Do que ficou, vou me lembrar
E realizar o sonho mais lindo que Deus sonhou
Em meu lugar estar na espera de um novo que vai chegar
Vou persistir, continuar a esperar e crer
E mesmo quando a visão se turva e o coração só chora
Mas na alma, há certeza da vitória
Posso, tudo posso Naquele que me fortalece
Nada e ninguém no mundo vai me fazer desistir
Vou perseguir tudo aquilo que Deus já escolheu pra mim
Vou persistir, e mesmo nas marcas daquela dor
Do que ficou, vou me lembrar
E realizar o sonho mais lindo que Deus sonhou
Em meu lugar estar na espera de um novo que vai chegar
Vou persistir, continuar a esperar e crer ...
Eu vou sofrendo, mas seguindo enquanto tantos não entendem
Vou cantando minha história, profetizando
Que eu posso, tudo posso... em Jesus!”
Celina Borges
Agradecimentos
A Deus, pelo dom da vida.
Aos meus amores e companheiros de jornada, por condição e também por opção: minha
mãe Lélia, meu pai Cór-Jesu, as queridas maninhas Alesandra e Alexsandra (quantas correções,
Lê!!!) . Ao Iram, o amor que a vida me deu de presente, pela compreensão e apoio.
Aos professores Claret, pela oportunidade e orientação e ao mestre, por vocação e doação,
Ronaldinho, pelo incentivo e aprendizado.
Aos amigos e colegas de trabalho do CEFET-OP, em especial da Diretoria de Ensino,
pelo incentivo e compreensão.
Aos irmãos de caminhada espiritual do grupo de oração e do NATA pelas orações.
Download

DISSERTAÇÃO_