Instituto Superior Técnico Licenciatura em Arquitectura Desenho Assistido por Computador II Ano lectivo 2005/06, 2° ano Responsável: Assistente: José Pinto Duarte Arq. Deborah Benrós Notas de apoio ao Exercício 4. Parte 2 Por forma a auxiliar a cumprir os objectivos propostos neste exercício junto se apresentam algumas sugestões que permitirão trabalhar de uma forma mais simples e optimizada. 1. Lista base Deverá ser criada uma lista base, formada por diversas listas, que contenha a informação fundamental sobre os todos os elementos desenhados. Exemplo1: ( ( nome ( características) ) Elemento 1 Elemento 2 Elemento n ( ( nome1 ( origem larg alt comp tipo) ) ( nome2 ( origem larg alt comp tipo) ) ... ) nome : o entity name do objecto (por forma a que mais tarde se possa seleccionar) características : origem = lista com as coordenadas de origem do objecto ( x y z ) larg = valor numérico com a largura máxima do elemento alt = valor numérico com a altura máxima do elemento comp = valor numérico com o comprimento máximo do elemento tipo = nível hierárquico ou de complexidade em que o elemento está (ex:base2 ou fuste3 ) Nota: poderão ser registadas nesta lista estas ou quaisquer outras características que se achar conveniente para o exercício (diâmetro, cor, layer, etc...) Sempre que se cria ou altera um elemento (ou elementos) esta lista deverá ser actualizada, ou seja, retiram-se os elementos anteriores e colocam-se os novos, para que a lista reflicta sempre o estado actual de cada um dos elementos no desenho. Apresenta-se em seguida um exemplo com várias fases possíveis na “evolução” de uma coluna e a correspondente actualização da lista base. Exemplo 2: Coluna capitel capitel-A fuste fuste-A base base-2 base-1 (0 0 0) suporte 1 2 3 Lista base: ( ( nome ( origem altura diâmetro tipo ) ) ) 1: ( (ent1 ( (3 5 0) 3 0.5 “suporte”) ) 2: ( (ent2 ((3 5 0) 0.3 0.5 “base”)) (ent3 ( (3 5 .3) 2.2 0.5 “fuste”)) ( ent4 ((3 5 2.5) 0.5 0.5 “capitel”)) ) 3: ( (ent5 ((3 5 0) 0.2 0.5 “base1”)) (ent6 ((3 5 0.2) 0.1 0.5 “base2”)) (ent7 ( (3 5 .3) 2.2 0.5 “fuste-A”)) ( ent8 ((3 5 2.5) 0.5 0.5 “capitel-A”)) ) 2. Interface Junto se apresenta uma sugestão para o interface do programa. Quando executado, o programa faz uma pergunta ao utilizador do género: “Quer Criar , Modificar ou Sair ? :” Seleccionando a opção C (criar), o programa: a) desenha elemento no local indicado e com as características definidas pelo utilizador b) acrescenta à lista base o elemento e as suas características Podem ser criados quantos elementos o utilizador desejar. Seleccionando a opção M (modificar), o programa: a) pede ao utilizador para seleccionar um elemento desenhado e captura o seu entity name b) verifica se esse entity name consta da lista base e captura todas as suas características c) analisa o “tipo” de elemento capturado e em que fase está, decidindo em conformidade d) apaga o elemento seleccionado e desenha o(s) novo(s) elemento(s) e) retira o elemento seleccionado da lista base e coloca o(s) novo(s) elementos(s) Seleccionando a opção S (sair), termina o programa. 3. Estrutura do programa O programa a criar deverá ser dividido em várias funções simples e isoladas, que são chamadas conforme as necessidades. Junto se apresentam algumas funções que poderão ser úteis para os objectivos propostos: Função acrescentar Objectivo: acrescenta um elemento à lista base Input: o entity name e as diversas características do elemento Output: lista base com mais um elemento acrescentado Função capturar Objectivo: captura as características de um elemento desenhado Input: entity name Output: lista com as características do objecto - ex: ((3 5 6) 40 20 “estrutura2”)) Função apagar Objectivo: retira um elemento da lista Input: entity name do elemento a apagar da lista Output: lista sem o elemento indicado Função substituir Objectivo: substitui um elemento na lista base por outro Input: entity name do elemento a substituir e entity name + características do novo elemento Output: lista actualizada Nota: esta função pode chamar a função apagar Função progredir Objectivo: a função que “sabe” qual é a próxima fase do elemento seleccionado Input: tipo Output: substituição do elemento desenhado por outro(s) etc., etc.......