Академический Документы
Профессиональный Документы
Культура Документы
Este livro divide-se em duas partes. Na primeira são apresentados diferentes princípios compositivos
frequentemente utilizados por arquitetos e designers, organizados nos seguintes capítulos: simetria,
formas paramétricas, recursão, composições aleatórias, composições regradas e formas emergentes.
Na segunda parte propõe-se a automatização de processos repetitivos, através da algoritmização de
processos de projeto e da geração automática de alternativas. Cada capítulo começa com uma análise
de exemplos do uso de cada sistema compositivo na arquitetura e design. Em seguida, são sugeridos
exercícios para a criação de composições com a utilização de comandos do AutoCAD de forma
inovadora ou de técnicas de programação em VBA, sempre de maneira simples e accessível para o
programador principiante.
[Orelha direita]
Nascida e criada em São Paulo, capital, formei-me em arquitetura em 1989 pela FAU-USP.
Trabalhei a seguir no Rio de Janeiro, desenvolvendo projetos residenciais. Em 1992 mudei-me para
São José dos Campos, SP, onde lecionei CAD em cursos de engenharia civil e arquitetura, enquanto
desenvolvia estudos de mestrado na FAU-USP. Em 1997, mudei-me para Boston, nos Estados
Unidos, onde trabalhei como free-lancer em diversos escritórios de arquitetura. Em 1999 iniciei o
curso de Ph.D. em Design & Computation no M assachusetts Institute of Technology (M IT), onde fui
assistente de ensino e pesquisa dos professores William M itchell, Terry Knight e Takehiko
Nagakura, tendo ainda a oportunidade de criar minha própria disciplina. Defendi minha tese em
julho de 2002 e desde então voltei a residir no Brasil.
Gabriela Celani
celani@alum.mit.edu
[Dedicatória]
Para meus pais, Adela e Dino, e para minha tia, Antonieta, com quem aprendi muito mais do que em
qualquer uma das escolas e universidades que frequentei.
Introdução
As origens do CAD
Ao contrário do que muita gente pensa, CAD não é um programa de computador específico, nem
muito menos uma abreviação de “AutoCAD”, o programa gráfico vetorial criado e comercializado
pela empresa americana AutoDesk. A sigla CAD nada mais é do que a breviação de computer-aided
design, ou seja, projeto (de arquitetura, engenharia, desenho industrial, etc.) auxiliado por
computador, não importando, em princípio, o tipo de uso que se faz do computador ou o programa
que se utiliza. Embora diferentes tipos de programas se enquadrem nessa definição, como programas
de análise estrutural, de simulação de processos ou de otimização, existe uma tendência em se
associar a palavra CAD a programas gráficos vetoriais, ou seja, ao CAD interativo, aquele que
permite a visualização da forma - definida matematicamente - através de uma representação gráfica
digital.
Nos anos 80, os PC’s, surgidos na década anterior, ainda não se comparavam ao poder de
processamento dos computadores de grande porte. Por outro lado, a fim de se viabilizar
economicamente a comercialização em larga escala, era preciso criar programas menos específicos,
que pudessem ser utilizados por um grande número de usuários diferentes. Por estes motivos, o CAD
foi reduzido praticamente a um mero programa de representação da forma. Segundo M itchell (1990),
o efeito negativo dessa adaptação teria sido “estabelecer uma concepção simplista do CAD na
cabeça dos arquitetos”, retardando as possibilidades de uma utilização mais inteligente e avançada
do mesmo.
Este livro surgiu a partir de uma série de experimentos educacionais com CAD realizados em
diferentes cursos de arquitetura e engenharia civil. Ele se destina a qualquer pessoa que queira
aprender a utilizar o computador para projetar de uma maneira criativa, não importando seu
conhecimento prévio do assunto.
M uitas pessoas se consideram usuários avançados de programas gráficos difícies de utilizar, mas
nunca tiveram a oportunidade de refletir sobre o tipo de uso que fazem deles. Se este uso fôr
relacionado meramente à representação da forma, estes usuários terão sem dúvida algo a aprender
com este livro, onde são sugeridas formas inovadoras de se utilizar técnicas tradicionais, com o
objetivo de tornar mais eficiente o processo de criação na mídia eletrônica.
Por outro lado, algumas pessoas com grande sensibilidade artística temem iniciar seu aprendizado de
CAD, pois não vêem nesse tipo de software nenhuma relação com a criatividade. Para elas, os livros
tradicionais de CAD não passam de manuais técnicos indecifráveis, e embora elas saibam que deve
haver algum meio de se usar o computador de uma maneira criativa, o caminho parece muito árduo.
Com este livro, estas pessoas poderão aprender a utilizar o CAD de uma forma criativa, através de
exercícios divertidos, avançando suavemente das etapas mais simples para as mais avançadas.
Como este livro pretende atender a um público bastante diversificado, os exercícios foram divididos
de maneira a permitir que os novatos aprendam todos os detalhes, enquanto os usuários experientes
podem pular os exercícios inicias de cada capítulo, seguindo diretamente para os mais avançados. As
introduções teóricas, no entanto, servirão igualmente para todos, pois têm como objetivo estabelecer
relações entre os processos de criação da forma na arquitetura e nos programas de CAD.
Embora este livro tenha sido desenvolvido com o intuito de ser um livro-texto para disciplinas de
CAD em cursos relacionados ao design, ele pode ser igualmente utilizado por auto-didatas.
Os exercícios descritos neste livro foram desenvolvidos especialmente para o programa AutoCAD
versão 2000, com a linguagem de programação VBA, cujo editor acompanha o próprio AutoCAD.
No entanto, isto não impede que estes exercícios sejam adaptados a outros programas de CAD e
linguagens de programação aos quais o leitor esteja mais habituado. Dependendo do conhecimento
prévio do programa de CAD e do tempo disponível, serão necessárias de duas semanas de estudo
diário até um semestre de estudo semanal para o aprendizado de todo o conteúdo do livro. Os
exercícios do primeiro capítulo não envolvem nenhum tipo de programação, podendo ser facilmente
desenvolvidos por leitores principiantes. Nos demais capítulos há sempre a opção de se desenvolver
um pequeno programa utilizando os tutoriais, ou de se utilizar programa prontos, fáceis de instalar,
desenvolvidos especialmente para este livro, que se encontram no CDROM em anexo e que também
podem ser obtidos através da Internet. Como este livro não pretende ser um manual de AutoCAD, é
aconselhável que os menos experientes disponham também de um livro que explique cada comando
do programa detalhadamente.
Agradecimentos
Além do CNPq e do fundo Rosenblith, que custearam minha pesquisa de doutorado, este trabalho
não teria sido possível sem a inestimável contribuição de todos os meus alunos com seus criativos
trabalhos que ilustram este livro. Sou também infinitamente grata a Terry Knight e William M itchell,
meus orientadores do M IT, e aos professores M arcelo Giacaglia e Doris Kowaltowski, pela
oportunidade que me deram de testar meu método de ensino com seus alunos.
Capítulo 1: Simetria
Antigamente, o conceito de simetria estava relacionado com a relação entre as partes e o todo numa
composição. Segundo Vitrúvio, grande teórico da arquitetura que viveu na época do império
romano, "a simetria é derivada da proporção, da calibração mútua de cada elemento com o todo."
Já no mundo moderno, a palavra simetria é normalmente associada a composições geradas por um
processo de reflexão ao longo de um eixo central, a chamada simetria “bilateral” 1. No entanto, o
conceito de simetria envolve também todo tipo de composição em que existe uma repetição
ordenada de partes ao longo de eixos ou ao redor deles. M arch e Steadman definem os seguintes
tipos de simetria no plano: cíclica, diédrica, de frizo e de papel de parede. Ao contrário do que muita
gente pensa, segundo eles, a arquitetura moderna “não aboliu as simetrias, apenas a reintroduziu de
maneira mais original”. As plantas de Frank Lloyd Wright na Figura 1 mostram exemplos do uso da
simetria cíclica e diédrica em algumas de suas plantas.
1
“Bilateral” é a denominação in formal da simetria diédrica com rotação de 0o . No entanto, muitas associam a palavra
simetria exclusivamente a este tipo de composição.
A simetria é também um tema constante em composições da azulejaria clássica e moderna. Observe,
por exemplo, os mosaicos de Alberti e os painéis de Athos Bulcão na Figura 3. Nos dois exemplos,
apesar de distantes no tempo, utilizam o mesmo conceitos de repetição de formas segundo operações
geométricas. A única diferença está no fato de Alberti repetir suas formas dentro de um mesmo
azulejo, enquanto Athos Bulcão as repete em azulejos separados.
Exercícios
Figura 4: Figura-base.
Dicas:
1. Para acionar qualquer comando, você pode selecioná-lo em um menu ou digitá-lo diretamente na
linha de comando, na parte inferior da tela.
2. Os comandos M IRROR e ARRAY se encontram no menu superior M ODIFY.
3. O comando SOLID se encontra no menu superior DRAW/SURFACES/2D SOLID.
4. Quando utilizar o comando SOLID, clique nos vértices do polígono desejado na ordem mostrada
na Figura 5.
5. Leia sempre a linha de comando na parte inferior da tela para saber o que um comando espera
que você faça para dar prosseguimento ao processo.
Figura 5: Sequência corret a para indicação de pontos de um polígono com o comando SOLID.
Observe que no exercício anterior, após a aplicação dos comandos de repetição da figura-base, a
mesma não pode mais ser alterada, sem que para isso seja necessário refazer completamente a
composição. Neste exercício vamos utilizar um recurso mais avançado do AutoCAD, o bloco, para
atualizar automaticamente as cópias da figura-base caso esta seja modificada posteriormente.
Agora redefina seu bloco e observe a atualização automática de suas composições simétricas.
M odifique seu bloco quantas vezes desejar, até obter um resultado interessante em todas as suas
composições simétricas, como na Figura 6.
1. Para acionar qualquer comando, você pode selecioná-lo em um menu ou digitá-lo diretamente na
linha de comando, na parte inferior da tela.
2. O comando BLOCK se encontra no menu superior DRAW/BLOCK/M AKE
3. Para redefinir seu bloco siga os passos abaixo:
Figura 7: Composições simétricas geradas com o auxílio de viewports. Créditos (de cima para baixo e da esquerda para
a direita): Marcelo Nakazaki, ...
Em uma folha de layout, crie 4 viewports quadradas, e desenhe em uma das viewports uma figura
que não possua nenhum tipo de simetria própria, como na Figura 8.
Viewport A Viewport B
Viewport D Viewport C
• Na viewport B, utilize o comando VPOINT com os valores 0,0,-1 para conseguir uma
imagem refletida da figura original.
• Na viewport C, utilize o comando DVIEW com o valor 180 na opção TWIST, para conseguir
uma imagem invertida da figura original.
• Finalmente, na viewport D, utilize as duas oprações acima, na mesma ordem em que
aparecem, para conseguir uma imagem ao mesmo tempo refletida e invertida da figura
original.
Dicas:
1. Viewports são vistas para o M odel Space arranjadas em uma página de layout. Clique na orelha
“Layout 1” logo abaixo da área de desenho para passar para o espaço de layout, também
chamado “paper space”.
2. No paper space, crie 4 viewports com o comando VIEW/VIEWPORTS/4VIEWPORTS. Clique
primeiramente em um ponto qualquer da área de desenho e em seguida digite, na linha de
comando: @20,20. Você criará 4 janelas idênticas de dimensão 10x10 unidades. Utilize o
zoom para aproximá-las ou afastá-las, conforme necessário.
3. Para ativar qualquer uma dessas janelas, clique no botão PAPER logo abaixo da área de desenho,
e depois clique dentro da viewport desejada. Ao se criar uma figura em uma das janelas, a
mesma aparecerá nas demais janelas. Para reativar o espaço de layout, clique novamente no
botão com a inscrição M ODEL abaixo da área de prompt.
4. Se você desejar tornar as molduras das viewports invisíveis, use o comando FORM AT/LAYER
para criar um novo layer e congelá-lo. Em seguida, ative o paper space, selecione as molduras
das viewports, e no seletor de layers clique no layer congelado. As molduras irão sumir, mas
não o seu conteúdo.
5. Para evitar que o tamanho e posição das figuras seja diferente em cada viewport, use o comando
VIEW/ZOOM /SCALE, digitando nXP, onde n é um valor arbitrário, porém igual para todas as
viewports. Após essa operação, evite utilizar o comando ZOOM de dentro das viewports
novamente, o que acarretaria uma mudança de tamanho em apenas uma das janelas. Ao invés
disso, experimente usar o comando M ODIFY/SCALE, o que provocará uma modificação
simultânea em todas as janelas. Pelo mesmo motivo, utilize o comando M ODIFY/MOVE ao
invés do comando VIEW/PAN para reposicionar simultaneamente todas as figuras.
6. O uso de determinados comandos, como o SKETCH e o SPLINE, não acarretam uma
atualização simultânea das demais viewports até que os mesmos sejam finalizados.
O resultado será parecido ao que é mostrado na Figura 9. A gora continue acrescentando figuras à sua
composição e editando as mesmas, observando, em tempo real, as consequências dessas alterações
em sua composição simétrica.
Viewport A Viewport B
Viewport D Viewport C
Utilize o mesmo princípio para criar ambientes para o desenvolvimento de outras composições com
simetria de frizo e de papel de parede. Para isso, comece criando uma viewport no Paper Space e
utilizando o comando MODIFY/ARRAY, opção RECTANGULAR, para criar matrizes com uma
única linha e diversas colunas (para simetria de frizo) ou com diversas linhas e colunas (para
simetria de papel de parede). Observe como um objeto desenhado ou modificado em apenas uma
dessas viewports é simultaneamente atualizado em todas as demais janelas, como na Figura 10.
Figura 11: Ambiente de viewports para o desenvolvimento de simetria de papel de parede com viewports com diferentes
ângulos de rotação.
Experimente outras variações de frizos e papel de parede, com diferentes rotações e reflexões.
Observe que para que os módulos sejam iguais as rotações deverão ser sempre múltiplas de 90o.
Para criar ambientes para o projeto de composições cíclicas você pode sobrepôr viewports com
vistas em diferentes ângulos de rotação. Para criar composições cíclicas a 120o, comece criando
quatro viewports iguais e quadradas, com o comando VIEW/VIEWPORTS/4 VIEWPORTS numa
nova folha de layout. Apague uma delas, pois você só vai utilizar três, e desenhe algo no model
space, só para servir de referência, como na Figura 12.
Viewport B
Viewport A
Viewport D
Você deve ter observado que agora o tamanho das figuras nas diferentes viewports ficou
ligeiramente diferente. Isso ocorre porque ao se utilizar o comando D VIEW o nível de zoom é
automaticamente ajustado para EXTANTS, ou seja, o programa tenta exibir tudo o que foi
desenhado no M odel Space dentro de cada viewport. No entanto, os diferentes ângulos de
visualização fazem com que esse ajuste gere diferentes escalas de zoom em cada janela. Para corrigir
esse problema, utilize o comando VIEW/ZOOM /SCALE, digitando nXP (onde n é um valor
arbitrário), procurando exibir a figura em um tamanho menor, como na Figura 14. Além disso, use o
comando M ODIFY/M OVE para mover a figura para fora do centro da viewport, de maneira que não
haja sobreposição da mesma quando as viewports forem sobrepostas.
Figura 14: As 3 viewports com o nível de zoom normalizado e com a figura movida para for a do centro.
Finalmente, acione o paper space (clicando no botão Paper, abaixo da área de prompt) e use o
comando M ODIFY/M OVE para mover as viewports B e C exatamente sobre a viewport A. Agora,
acione novamente o model space (clicando no botão M odel, abaixo da área de prompt), clique dentro
das viewports sobrepostas, e faça modificações em sua figura ou adiciones novas figuras. Você verá
como as três cópias da figura original são dinamicamente atualizadas, de maneira semelhante ao que
ocorre na Figura 15.
Figura 15: As 3 viewports sobrepostas. Observe como novas composições com simetria cíclica são generadas em tempo
real com a movimentação da figura
Tente criar outras composições cíclicas com viewports configuradas para diferentes ângulos de
exibição. Por exemplo, você pode sobrepôr quatro viewports com os ângulos 0, 90, 180 e 270o, cinco
viewports com os ângulos 0, 72, 144, 216 e 288o, etc. , como na Figura 16. Para isto basta dividir
360o no número de objetos que você quer dispôr ao redor do centro de sua composição
Figura 16: Ambiente para o desenvolvimento simultâneo de composições com diferentes tipos de simetria.
Tente também criar outros ambientes especiais para o desenvolvimento de composições com
simetria que possam ajudar em seus projetos. Experimente usar viewports com formatos diferentes,
como na Figura 18. Use diferentes configurações de layers em cada viewport para trabalhar com
diversos módulos simultaneamente, como na Figura 19. Os ambientes assim criados se aplicam não
apenas ao projeto gráfico, como também ao projeto urbanístico. Observe um ambiente de viewports
criado para o estudo do projeto de Oak Park, de Frank Lloyd Wright, na Figura 20. De maneira
semelhante, desenvolva um pequeno projeto na sua área utilizando um ambiente com viewports.
Figura 18: Uso de viewports com formato livre nesta composição com módulos triangulares.
Figura 19: Uso de diferentes con figu raçõ es de layers em diferentes viewports.
Figura 20: Oak Park, de F.L.Wright e um estudo de sua simetria com viewports em AutoCAD.
Dicas:
1. No AutoCAD 2000, o número máximo de viewports que podem ser criadas em um mesmo
layout é 64.
2. Para movimentar, modificar ou configurar a visualização de layers em uma viewport, o paper
space deve estar ativo. Para isso, observe se o botão logo abaixo da área do prompt exibe a
palavra PAPER. Se o mesmo exibir a palavra M ODEL, clique sobre ele para voltar ao espaço
de layout.
3. Para criar viewports não retangulares utilize os comandos VIEW/VIEWPORTS/POLYGONAL
VIEWPORTS ou VIEW/VIEWPORTS/OBJECTS.
4. Para obter diferentes configurações de layers em diferentes viewports, acione o comando layer
(FORM AT/LAYER) e ligue ou desligue os layers desejados na coluna “Active VP Freeze”.
Discussão
1. Quais as vantagens e desvantagens de se utilizar cada uma das técnicas utilizadas nos três
exercícios deste capítulo?
Referências bibliográficas
Por exemplo:
reta r reta s
m=2 e b=3 m=0 e b=1
para x = -2, y = 2 .-2 + 3 = -1 para x = -2, y = 0 .-2 + 3 = 1
para x = -1, y = 2 .-1 + 3 = 1 para x = -1, y = 0 .-1 + 3 = 1
para x = 0, y = 2 . 0 + 3 = 3 para x = 0, y = 0 . 1 + 1 = 1
para x = 1, y = 2 . 1 + 3 = 5 para x = 1, y = 0 . 1 + 1 = 1
para x = 2, y = 2 . 2 + 3 = 7 para x = 2, y = 0 . 2 + 1 = 1
para x = 3, y = 2 . 3 + 3 = 9 para x = 3, y = 0 . 3 + 1 = 1
para x = 4, y = 2 . 4 + 3 = 11 para x = 4, y = 0 . 4 + 1 = 1
para x = 5, y = 2 . 5 + 3 = 13 para x = 5, y = 0 . 5 + 1 = 1
Figura 21: Retas r e s, obtidas pelas equações y=2.x+3 e y=0.x+1, com x variando entre –2 e 5.
Embora as retas r e s não sejam idênticas, elas possuem em comum uma característica fundamental:
a linearidade. Da mesma forma, na natureza, parâmetros são utilizados na geração de formas
diferentes, porém com as mesmas características fundamentais. Isto permite a geração de uma
grande quantidade de indivíduos com características próprias, porém definidos por uma mesma
“fórmula”. Tomemos como exemplo as diferentes raças de cães existentes. Todas possuem o mesmo
número de ossos em seus esqueletos, cada um com a mesma função que nas demais raças, porém
com diferentes proporções. No entanto, apesar dessa semelhança, é grande a diferença existente
entre um Basset e um São Bernardo, ou entre um Chiuaua e um Setter Irlandês.
Na arquitetura diferentes parâmetros são também utilizados na definição de diferentes formas a
partir de um mesmo conceito. Observe, por exemplo, os edifícios do M useu de Arte M oderna do Rio
de Janeiro e a escola Brasil-Paraguay, ambos de Afonso Eduardo Reidy, Observe também o edifício
do ginásio de Guarulhos de João Villanova Artigas. Os perfís laterais de todos estes edifícios podem
ser considerados versões paramétricas da Figura 21, onde os ângulos de inclinação das laterais e do
telhado, assim como a largura das bases e a distância entre elas receberam diferentes valôres.
A comparação entre as fachadas dos edifícios do Palácio das Relações Exteriores, em Brasília, e da
editora M ondadori, em M ilão, ambos de Oscar Niemeyer, revela uma outra forma de uso de
parâmetros (Figura 23). Ambos são definidos por uma seqüência linear de arcos. No entanto, no
primeiro, todos os arcos são idênticos, à exceção dos que se encontram nos cantos do edifício. Já no
segundo, os arcos parecem ter larguras aleatórias, o que confere à obra um interêsse especial, além
de grande originalidade.
Figura 23: Palácio das Relações Exteriores (esquerda) e editora Mondadori (direita), ambos de Oscar Niemey er.
M uitas vezes, elementos de uma mesma obra são repetidos com diferentes parâmetros, porém
seguindo uma sequência lógica, crescente ou decrescente, ascendente ou descendente, como na
sequência logarítmica da espiral, encontrada em diversos exemplares do mundo animal e vegetal, e
também na arquitetura. Outros exemplos podem ser encontrados nas patas de alguns insetos, ou nas
folhas das extremidades dos galhos das árvores. O mesmo conceito foi utilizado por Frank Lloyd
Wright nas colunas de Grandma's house ( Figura 25 ). Este tipo de composição pode ser representado
por uma função recursiva, que será explicada com maiores detalhes no próximo capítulo.
O uso de formas paramétricas no projeto, determinadas por valores aleatórios ou por sequências
lógicas, gera respectivamente formas mais e menos inesperadas. Em algumas situações pode ser
interessante obter certa regularidade, como no caso das colunas de F. L. Wright. No palácio do do
Planalto a regularidade é ainda maior, pois todos os arcos possuem exatamente as mesmas
dimensões (o que chamamos de simetria linear). Já no edifício da Editora M ondadori, de Niemeyer,
o uso de valores aleatórios, às vezes crescentes, às vezes decrescentes, surpreende a quem vê a obra
pela primeira vez. O uso uso de versões paramétricas de uma mesma forma ajuda ainda a estabelecer
relações visuais entre as partes de um edifício, favorecendo a continuidade na leitura do mesmo. A
vista do observador sente-se como que “atraída” pelas partes semelhantes.
Exercícios
A maneira mais simples de se trabalhar com formas paramétricas no AutoCAD é através do uso de
blocos, que podem ser inseridos no desenho com diferentes fatôres de escala. Embora poucos
saibam, no processo de inserção de blocos, não é necessário que os fatôres de escala em X, Y e Z
sejam iguais. O uso de fatôres diferentes permite obter distorções interessantes nas figuras inseridas.
Dica:
Para visualizar seu desenho em perspectiva isométrica, digite o comando VPOINT, seguido por dois
Enters. Posicione o observador através de movimentos do eixo trípode que aparacerá na tela. Outra
opção é utilizar as vistas pré-setadas do AutoCAD, disponíveis no menú
VIEW/3DVIEW/...ISOM ETRIC.
2. Arcos paramétricos
Neste exercício, vamos desenhar uma seqüência de arcos semelhante à do edifício da Editora
M ondadori, de Niemeyer, utilizando para isso apenas um bloco que será previamente definido.
1. Comece criando um arco semelhante ao que aparece na Figura 27, com os comandos LINE e ARC
ou SPLINE.
Dica:
O comando SPLINE permite que você desenhe um arco concordante com as linhas verticais que o
delimitam. Para isso, especifique 3 pontos do arco (inicial, médio e final) e em seguida pressione o
Enter. O promt pedirá para que sejam especificadas as direções de tangência das extremidades do
arco. Com o botão ORTHO ligado, basta clicar em qualquer ponto da tela abaixo de cada um dos
pontos inicial e final do arco.
Figura 27: Bloco “Arco”.
2. Em seguida, transforme o arco recém-criado em um bloco (comando BLOCK), que você chamará
de “arco”. Utilize o ponto A, que aparece na Figura 27, como ponto de inserção.
3. Agora comece a inserir seu bloco repetidas vezes, mantando a escala em Y uniforme, porém
variando a escala em X. Não é necessário alterar a escala em Z.
Figura 28: Composição com o bloco “Arco” inserido com diferentes fatôres de escala.
Observe que, no exercício anterior, os arcos inseridos nem sempre apresentavam uma concordância
perfeita com as colunas. Além disso, a largura das colunas variava juntamente com a largura do arco,
pois não havia maneira de se determinar proporções independentes para cada uma dessas partes do
bloco. Para obter tal precisão você teria que criar seus arcos manualmente, utilizando sempre a
mesma uma seqüência de comandos, porém com diferentes valores de largura e ponto de inserção a
cada novo arco. Para automatizar esse procedimento, vamos criar um programa em VBA que
permite inserir arcos e colunas com quaisquer dimensões, mantendo a concordância entre eles.
Atenção:
Antes de utilizar o editor de VBA do AutoCAD, configure o Windows de maneira que o ponto, e
não a vírgula, seja utilizado como separador das casa decimais. Para isso abra o menú de
“Configurações Regionais” do “Painel de Controle” (menú Iniciar/Configurações/Painel de
Controle). Em seguida, clique na guia “Números” e substitua a vírgula (,) pelo ponto (.) no campo
“Símbolo decimal”. A maioria dos sistemas em português utiliza a vírgula nesse campo, enquanto os
sistemas em inglês utilizam o ponto. Como o AutoCAD utiliza a vírgula como separador de
coordenadas (x,y,z), o ponto é necessário para que números com casas decimais gerados pelo
sistema não sejam confundidos com pares ordenados.
A linguagem de programação Visual Basic for Application é uma variação da linguagem Visual
Basic utilizada para a automatização de rotinas e customização de diversos programas do ambiente
Windows, como o Word, o Excell e o Access. Todos esses programas imcluem um editor de VBA
onde se pode desenvolver programas específicos para cada aplicação. A partir da versão 2000, o
AutoCAD passou também a incluir um ambiente de desenvolvimento de VBA, o VBA Interactive
Development Editor (VBAIDE). Para acessar o VBAIDE do AutoCAD, utilize o comando de menú
TOOLS/MACRO/Visual Basic Editor. A figura ? mostra as principais áreas do VBAIDE:
1. Barra de menús e barra de botões.
2. Janela de código de um módulo (o módulo ou M odule é inserido através do comando de
menú INSERT/M ODULE).
3. Janela de código de uma caixa de diálogo (a caixa de diálogo ou UserForm é inserida através
do comando de menú INSERT/USERFORM ).
4. Janela de desenho de uma caixa de diálogo (aberta através do comando de menú
VIEW/CODE).
5. Caixa de ferramentas ou Toolbox, de onde se retira os comandos que compõem o layout de
um UserForm (aberta através do comando de menú VIEW/TOOLBOX).
6. Janela do projeto, onde se visualiza os elementos que compõem o programa, como
ThisDrawing (arquivo DWG aberto no AutoCAD), UserForms e M odules (aberta através do
comando de menú VIEW/PROJECT EXPLORER).
7. Janela de propriedades, onde se visualiza as propriedades do elementos selecionado, como as
cores e o título (Caption) de um UserForm (aberta através do comando de menú
VIEW/PROPERTIES WINDOW).
Vamos começar nosso programa criando uma interface gráfica. Para isso, siga os passos abaixo:
Sua interface deverá ficar parecida com a que aparece na Figura 30.
8. O próximo passo consiste em acrescentar o código necessário para permitir que os dados
inseridos pelo usuário sejam captados pelo programa e tornar o botão “Inserir” funcionante.
Os comandos que executam essas tarefas devem ser digitados na janela de código do
UserForm, que pode ser visualizada com o comando de menú VIEW/CODE.
9. Na página de código que se abrirá, a primeira etapa da programação consiste em declarar as
variáveis do problema, informando que tipo de dados elas conterão. Digite, no topo da
página:
Tipos de variáveis:
Para as variáveis numéricas, os tipos mais comuns utilizados são Double (número com casa decimal
positivo ou negativo) e Integer (número inteiro positivo ou negativo).
Para maiores informações tipos de variáveis, consulte o assunto “Data Type” no Help do VBAIDE.
10. Em seguida, é preciso adicionar os comandos necessários para que os campos de texto
capturem os valores deigitados pelo usuário, atribuindo-os às variáveis declaradas. Para
isso, retorne à janela de layout do UserForm (VIEW/OBJECT) e clique duplo sobre o
primeiro campo de texto. A janela de código se abrirá e duas linhas serão acrescentadas
automaticamente. Digite, entre as linhas criadas, o código em negrito abaixo:
Função Val():
A função Val() assegura que o valor do campo de texto nunca será nulo. Se o usuário não digitar
nenhum valor nesse campo, ou se ele digitar algum valor inválido, como caracteres não numéricos, o
valor atribuído à variável será zero e o programa poderá ser executado normalmente.
11. Repita a operação para cada um dos campos de texto, digitando as linhas abaixo em negrito:
Atenção!!
Se você tiver modificado o nome (propriedade Name) dos campos de texto, do botão ou do
UserForm, faça as alterações correspondentes no código acima. Caso contrário, seu programa não
funcionará corretamente.
12. Finalmente, acrescentaremos o código necessário para tornar o botão “Inserir” funcionante.
Para isso, clique duplo sobre ele e digite, entre as linhas criadas automaticamente, o código
abaixo em negrito. As linhas precedidas pelo caracter ‘ são apenas comentários que
explicam as linhas seguintes, e que você não precisa necessariamente copiar. Essas linhas
não serão “lidas” pelo AutoCAD quando o programa fôr executado, e por tanto não
precisam necessariamente ser copiadas.
Atenção!!
● O nome do comando enviado, assim como as respostas dadas durante a interação, devem vir entre
aspas (“”).
● O “enter” é indicado pela expressão vbCr, que significa “Visual Basic Carriage Return”)
● O caracter & (“e” comercial) é utilizado para ligar cada parte da mensagem enviada ao AutoCAD.
Ele aparece entre o nome do comando e o “enter” que vem em seguida. Depois, entre esse “enter” e
a resposta à pergunta que o comando envia, e assim por diante.
● Valores numéricos informados ao AutoCAD podem ser substituídos por variáveis, e nesse caso
não necessitam das aspas. O & é utilizado para formar respostas compostas por partes fixas e
variáveis (e.g. espessura & ",0" informa ao AutoCAD o ponto cujo valor de X é igual ao valor
da variável espessura e cujo valor deY é igual a zero).
Dica:
O caracter “_” é utilizado para indicar a continuação de uma função na linha seguinte. Em seu
programa, você pode optar por dividir suas funções em linhas mais curtas, como aqui, ou omitir os
símbolos “_” que aparecem neste livro e digitar cada função numa única linha, mais longa.
End Sub
13. Teste seu programa com diferentes valores e observe como os diferentes arcos gerados são
inseridos lado a lado, em seqüência, como na Figura 31.
Figura 31: Arcos gerados pelo assistente de arcos com diferent es valores de
altura total, altura da base do arco, largura total e largura da coluna.
Discussão
1. ???
2. ???
Referências bibliográficas
???
Capítulo 3: Recursão
Na matemática, uma função recursiva é aquela que utiliza variáveis criadas durante o processo,
através da aplicação sucessiva de uma mesma rotina. Um bom exemplo de funções recursivas são as
que criam fractais, como a da curva de Koch, na Figura 32.
Embora nos pareça uma figura é uma figura complexa, a curva de Koch é gerada a partir de uma
regra extremamente simples. A regra determina que toda reta encontrada que se assemelhe à figura
denominada “iniciador” deve ser substituída por quatros retas semelhantes, porém reduzidas e
organizadas de acôrdo com a figura denominada “gerador”. É possível, assim, identificar, na figura
gerada, quatro instâncias do “iniciador”, cada uma das quais pode ser então substituída por novos
geradores, e assim sucessivamente.
Quando o processo acima descrito é aplicado a um triângulo, como na Figura 33, o resultado obtido
assemelha-se a um cristal de neve, sendo também conhecido como ilha de Koch. É interessante notar
que, a cada vez que a regra é aplicada, o perímetro da ilha de Koch é aumentado em 1/3, enquanto
sua área sofre aumento gradativamente menor, e portanto desproporcional ao aumento do perímetro,
o que coloca em dúvida nossa concepção euclidiana de espaço e dimensão.
Figura 34: Formas concêntricas e as regras de composição que as produzem: uma seção de tronco de árvo re e a porta de
uma catedral gótica.
Outro exemplo de processo recursivo onde novos elementos com escala diferente são acrescentados
ao original ocorre nas composições em espiral. Nelas, à semelhança das formas com simetria cíclica,
cada novo elemento é inserido ao redor de um ponto com um novo ângulo de rotação, porém em
tamanho maior ou menor que o anterior. Este tipo de composição pode ser encontrado em plantas,
animais e na arquitetura contemporânea, como nos exemplos mostrados na Figura 36.
Figura 36: Espirais em um broto de samambaia, em um caramujo, e na estação de Lyon, do arquiteto Santiago
Calatrava.
Um processo recursivo pode também ocorrer de fora para dentro. A Figura 37 mostra diferentes
exemplos de subdivisão interna, desde uma folha de samambaia até um vitral gótico, uma rosácea ou
a abside de uma igreja medieval. Os jardins do Taj M ahal e o teto do British Institute of Art, de
Louis Khan, são casos semelhantes de subdivisões recursivas de um quadrado.
m
Figura 37: Subdivisão interna de uma folha de samambaia, de um vitral gótico, e de arcos roânicos. Subdivisão
recu rsiva do quadrado nos jardins do Taj Mahal e no teto do British Art institute, de Louis Khan.
Outro exemplo de processo recursivo é o entroncamento que ocorre naturalmente nos galhos das
árvores. Na estrutura da galeria XXX em Toronto, o arquiteto espanho Santiago Calatrava, também
utilizou a subdivisão recursiva para conferir leveza ao conjunto. Os “galhos” superiores são mais
curtos e esbeltos do que os inferiores, e o número de pontos de apoio no piso é bem menor que o de
apoios da cobertura.
Figura 38: Entroncamento recursivo em galhos de árvores e na estrutura da galleria XXX, de Santiago Calatrava.
Exercícios
O uso de técnicas simples em AutoCAD, com viewports (como nos exercícios de simetria) e blocos,
permite explorar algumas das possibilidades do desenho recursivo. No entanto, pode-se também
programar o AutoCAD para que ele efetue operações recursivamente, tomando como parâmetros
para operações sucessivas as variáveis geradas em operações anteriores. Os exercíos X a XX
utilizam essas técnicas mais simples. Já os exercícios X a XX utilizam ambientes especialmente
desenvolvido em VBA que possibilita o uso de operações recursivas em 2D e 3D, e que podem ser
obtidos a partir da web-site XXXXX (ou que se encontram disponíveis no CDROM que acompanha
este livro).
Não existe, no AutoCAD, nenhum comando específico para se desenhar formas geradas através de
processos recursivos. Para se criar uma composição em espiral, por exemplo, seria necessário seguir
as etapas abaixo:
Observe que na tabela abaixo os fatôres de escala aumentam em progressão geométrica (por
multiplicação), enquanto os ângulos de inserção aumentam em escala aritmética (por soma). A
figura resultante será uma composição em espiral semelhante à Figura 40.
Inserção Ponto de inserção Fatôr de escala Ângulo de rotação
1a (0,0) 1 0o
2a (0,0) (1 x 1.2) 1.2 (0o + 30o) 30o
3a (0,0) (1.2 x 1.2) 1.44 (30o + 30o) 60o
4a (0,0) (1.44 x 1.2) 1.728 (60o + 30o) 90o
5a (0,0) (.7281 x 1.2) 2.0736 (90o + 30o) 120o
6a (0,0) (2.0728 x 1.2) 2.48832 (120o + 30o) 150o
7a (0,0) (2.48832 x 1.2) 2.985984 (150o + 30o) 180o
8a (0,0) (2.985984 x 1.2) 3.5831808 (180o + 30o) 210o
Tabela 1: Ponto de inserção, fatôres de escala e ângulos de rotação do bloco “folha”.
É possível montar uma combinação de viewports no paper space que simule alguns tipos de
composições recursivas, permitindo que você desenhe a figura-base ao mesmo tempo em que
observa sua repetição em posições e escalas diferentes. Conforme a figura-base é modificada, as
demais versões são atualizadas dinamicamente. A fim de obter variações de escala nas diversas
viewports, é preciso aplicar fatôres de Zoom progressivamente maiores ou menores, de acôrdo com
uma proporção correta. Siga as indicações abaixo para montar ambientes de desenho recursivo
concêntrico, linear e em espiral. Se preferir, copie os arquivos XX, XXX e XXX do CDROM que
acompanha este livro. Neles os ambientes de viewports já se encontram prontos para você começar a
criar suas composições recursivas.
Finalmente, sobreponha todas as viewports, torne o model space corrente (ou clique-duplo dentro
das viewports) e comece a desenhar uma figura. Observe como surgem simultaneamente cópias
concêntricas da figura com diferentes escalas, como na Figura 41.
Figura 41: Arranjo de viewports para geração de omposições recursivas con cêntricas.
Crie novamente 4 viewports quadradas, só que desta vez, além de alterar os fatôres de ZOOM de
cada uma delas, aplique rotações sucessivas a cada uma das vistas. Por exemplo:
Dicas:
6. pp
Embora o exercício anterior permita uma visualização dos resultados da composição recursiva em
tempo real, seus resultados não são efetivamente desenhados no paper space; para transformá-los em
desenhos que você pode continuar transformando e detalhando, até que eles se tornem algo ainda
mais complexo, você teria de aplicar a técnica de inserção de blocos explicada no exercício II.1,
porém com pontos de inserção, fatôres de escala e ângulos de rotação específicos para cada caso. A
fim de tornar esse trabalho menos exaustivo, uma boa opção é utilizar a programação em VBA para
automatizar essa sequência de comandos, como no exercício abaixo II.3.a. Posteriormente, você
pode acresecentar a ele mais variáveis, para que seu programa execute diferentes tipos de desenhos
com recursão, como no exercício II.3.b.
Atenção:
Antes de utilizar o editor de VBA do AutoCAD, configure o Windows de maneira que o ponto, e
não a vírgula, seja utilizado como separador das casa decimais. Para isso abra o menú de
“Configurações Regionais” do “Painel de Controle” (menú Iniciar/Configurações/Painel de
Controle). Em seguida, clique na guia “Números” e substitua a vírgula (,) pelo ponto (.) no campo
“Símbolo decimal”. A maioria dos sistemas em português utiliza a vírgula nesse campo, enquanto os
sistemas em inglês utilizam o ponto. Como o AutoCAD utiliza a vírgula como separador de
coordenadas (x,y,z), o ponto é necessário para que números com casas decimais gerados pelo
sistema não sejam confundidos com pares ordenados.
1. Inicie um novo programa em AutoCAD e crie nele um bloco semelhanteao do exercício II.1,
chamando-o de “folha”.
1. Abra o editor de VBA do AutoCAD (TOOLS/MACRO/VISUAL BASIC EDITOR).
2. No editor de VBA, insira um novo módulo (INSERT/M ODULE) e crie uma nova macro
(INSERT/PROCEDURE). Preencha a caixa de diálogo “Add procedure” com as informações
abaixo:
End Sub
Observe que o programa já deixou uma linha de espaço entre o início e o fim do procedimento, para
que você o preencha com os comandos que desejar.
3. Apesar do VBA ser uma linguagem orientada a objetos, ela também permite que você crie scripts
de comandos de AutoCAD (com os quais você já está familiarizado), através do comando
SendCommand do objeto ThisDrawing. Para inserí-lo, você pode digitá-lo diretamente entre as
linhas de sua macro, como no código abaixo, seguindo sempre a seqüência objeto.comando:
Dica:
Para saber quais são os objetos disponíveis no VBAIDE e seus respectivos “comandos” (ou
métodos), você pode utilizar o Object Browser. Para isso abra-o pelo menu
WINDOW/OBJECTBROWSER. Para encontrar o comando “SendCommand”, por exemplo,
selecione ACADProject, no campo superior esquerdo em que se encontra a expressão <All
Libraries>. Selecione, a seguir, o ítem ThisDrawing, como na figura abaixo. Procure na lista da
direita o comando “SendCommand”, e na parte inferior da janela veja sua descrição detalhada.
Figura 44: Object Browser.
Você notará que assim que digitar a palavra ThisDrawing seguida por um ponto, uma tela com todos
os comandos referentes a ThisDrawing (que é um “objeto”) surgirá no meio do texto. Basta digitar a
letra “s” e a lista mostrará o comando “SendCommand”.
Clique duplo nele para que ele seja digitado na sua página de código. Em seguida, digite um espaço
logo após o comando inserido. O editor de VBA lhe informará o que você deve digitar a seguir,
como na figura abaixo. Após o comando SendCommand, é ncessário digitar o nome de um comando
do AutoCAD em forma de string, ou seja, entre aspas, e dentro de parênteses.
Digite o comando “-insert”, como no código abaixo.Use o menos antes do nome do comando para
evitar que o AutoCAD abra a diaolog box. Assim, você poderá passar a ele outras informações
realtivas à inserção do bloco através da linha de prompt.
4. Grave seu programa (FILE/SAVE) com o nome Recursão.dvb. Em seguida, volte ao AutoCAD e
teste sua macro, através do comando TOOLS/M ACRO/M ACROS. Na caixa de diálogo M acros,
selecione a macro cujo nome termina com as palavras ...Recursao.dvb!M odule1.Recursão e
pressione o botão “Run”. Você verá que o comando “-insert” foi digitado na área de prompt do
AutoCAD. Por enquanto pode não parecer muito, mas com essa técnica pode-se estabelecer
sequências completas de comandos que podem automatizar procedimentos repetitivos e fastidiosos
de desenho.
5. A seguir, você irá adicionar ao seu código todos os caracteres que digitaria na linha de prompt do
AutoCAD se estivesse utilizando o comando “-insert”, sempre entre aspas, inclusive os “enters”, só
que estes serão representados pelos caracteres vbcr (sem aspas), abeviação de Visual Basic Carriage
Return. As palavras e caracteres devem ser sempre separadas dos “enters” pelo símbolo &, conforme
mostra o código abaixo:
Observe que o comando seve ser todo escrito em uma só linha. Caso você deseje dividí-lo em duas
ou mais linhas, para melhor visualização, como no exemplo acima, digite _ ao final de cada linha
que se quebra.
Teste seu programa. A gora, ele deve criar uma espiral semelhante à que você desenhou no exercício
anterior.
Com o programa acima pode-se criar espirais formadas por diferentes figuras, através da redefinição
do bloco “folha”, como na figura abaixo.
Agora que você já criou seu primeiro programa, você pode desejar criar outras espirais, formadas
por blocos inseridos em diferentes ângulos de rotação e com diferentes fatôres de escala. Você pode,
inclusive, querer variar os fatôres de escala em x, y e z de acôrdo com diferentes regras de
progressão. Para isso, é necessário criar um programa um pouco mais complexo, que receba
parâmetros passados pelo usuário, executando essa mesma sequência de comandos de acôrdo com
eles.
1. No topo da sua página de código (M odule1) informe ao programa as variáveis que você irá utilizar
e qual o tipo de dado que elas informarão. Neste caso, chamaremos nossas variáveis de AA
(acréscimo de ângulo) e AE (acréscimo de escala). Ambas serão números reais (Double).
2. Agora, no início de sua função “Recursão”, estabeleça os valores das variáveis AA e AE:
Public Sub Recursao()
AA = 30
AE = 1.2
...
3. Em seguida, substitua os valores em cada etapa de inserção do bloco “folha” pelas variáveis AA e
AE, multiplicando-as e elevando-as quando necessário:
4. M ova a espiral criada anteriormente para outro local da tela e teste novamente seu programa
(TOOLS/MACROS/MACRO). Você verá que ele faz exatamente o que fazia anteriormente. No
entanto, se quisermos mudar, por exemplo, o acréscimo do ângulo de 30 para 40 graus e o acréscimo
da escala de 1.2 para 1.3, essa ação será muito mais simples do que antes. Se desejar, faça essa
modificação e observe o resultado.
5. Agora observe que o único valor que ainda não parametrizamos é o número de recursões. Para
parametrizarmos esse valor será necessário criar uma estrutura de código que permita que o mesmo
seja repetido o número de vezes indicado, tomando parâmetros correspondentes a cada vez. Comece
declarando a variável NR (número de recursões) como um número inteiro (Integer).
Dim NR As Integer
6. Em seguida, confira um valor a sua nova variável e mude a estrutura de seu código para que ele
seja repetido:
Observe que o valor inicial conferido à variável NR foi zero. No entanto, esse valor é acrescido de
uma unidade cada vez que o comando de inserção do bloco é executado. A estrutura de repetição
“Do While/Loop” foi utilizada para fazer com que esse comando seja repetido até que a variável NR
alcance seu valor máximo, ou seja, 7. Como ela começa com o valor 0, o código é executado 8
vezes, e o resultado obtido é idêntico à espiral anterior.
A nova macro é muito mais curta e simples do que a antiga. No entanto, para que novos valores
sejam utilizados, é necessário que ela seja modificada no código, o que exige noções de
programação por parte do usuário. Para evitar esse problema, vamos criar uma interface gráfica que
permita ao usuário informar valores para o acréscimo no ângulo e fatôr de escala cada vez que
utilizar o programa.
Figura 47: UserForm pronto, com campos para entrada de fatôr de escala, ângulo de rotação e número de
repetiçõ es.
3. O nome dos elementos que colocamos no UserForm e o texto ou legenda que aparece neles pode
ser modificados em seus respectivos painéis de propriedades. M odifique os nomes desses elementos
de acôrdo com a tabela abaixo.
Observe que a janela de diálogo (UserForm) também recebeu uma nova legenda. Siga exatamente os
nomes sugeridos acima para que seu programa funcione perfeitamente neste exercício.
4. A seguir, clique duplo no botão “Executar”. A janela de código do UserForm se abrirá e uma
função relacionada ao acionamento do botão será criada automaticamente. Seu nome será “Private
Sub CmdBtExecutar_Click()”, ou seja, ela será acionada toda vez que ocorrer um click no botão
“Executar”. A ação de clicar em um botão chama-se evento. Na área logo abaixo do início da
função, copie o código que estava no M odule1. Copie também as declarações de variáveis bem no
topo da página, mas não copie as atribuições de valores às variáveis, pois estas serão informadas
pelo usuário através dos campos de texto. Seu código ficará assim:
Dim AA As Double
Dim AE As Double
Dim NR As Integer
Dim i as Integer
Observe que a variável i (índice) é usada como um contador, com valor inicial igual a zero, cujo
valor é acrescido de uma unidade a cada vez que o código é executado, até atingir o valor do número
de repetições (NR) menos um.
5. O passo seguinte será fazer com que valores digitados nos campos de texto sejam capturados e
atribuídos às respectivas variáveis. Para isso volte ao UserForm (clicando duplo na palavra
UserForm que aparece na janela de projetos ACADProject, na área superior esquerda da tela).
Clique duplo em cada um dos campos de texto. Cada vez que você fizer isso, será criada, na janela
de código, uma função que será ativada toda vez que um novo valor fôr digitado pelo usuário.
Digite, logo após o início de cada função, as seguintes linhas de código:
Teste seu programa, com o comando de menú RUN/RUN SUB. Após digitar os valores desejados e
clicar no botão “executar”, você terá de fechar a janela clicando no botão na parte superior direita da
mesma. Acione o AutoCAD e observe o resultado. Se você tiver utilizado os valores 1.2, 30 e 8, ele
deverá ser igual ao dos exercícios anteriores.
Dica:
Alterne entre a vista da janela de código e da caixa de diálogo (UserForm) utilizando os comandos
do menu VIEW/CODE e VIEW/OBJECT.
Macros:
No AutoCAD a palavra M ACRO pode designer duas coisas diferentes. De maneira genérica,
MACRO significa uma sequência de comandos de programação. A M ACRO criada no exercício
acima é um atalho que executa as linhas de código no módulo M odule1 do programa Expiral.dvb.
Ela permite que o usuário que não entende de programação utilize seu programa, sem a necessidade
de carregar o editor de VBA.
7. Finalmente, vamos criar uma macro que carregará a caixa de diálogo a partir do menú de macros
do AutoCAD, sem a necessidade de se carregar o ambiente de desenvolvimento VBAIDE. Para isso,
adicione as seguintes linha de código ao M odule1:
Volte ao AutoCAD, abra a janela de macros (TOOLS/M ACRO/M ACROS) e selecione a macro que
termina com as palavras Espiral.dvb!M odule1.Interface. Pressione o botão “Run” e crie uma nova
espiral.
Figura 49: Janela para seleção do programa VBA a ser carreg ado.
Opcionalmente, pode-se gravar um programa em VBA juntamente com um arquivo DWG. Nesse
caso, ao se abrir o desenho no AutoCAD, as macros contidas no programa nele embutido serão
automaticamente disponibilizadas, sem a necessidade de se carregar outros programas. Esta é uma
boa opção para se guardar em um único arquivo programas em VBA e os desenhos com eles obtidos.
Para embutir um programa VBA num arquivo DWG, siga os passos abaixo:
Atenção!!
Arquivos com macros podem conter vírus. Assim como uma macro pode apresentar uma interface
para a criação de espirais, ela pode também ser programada para enviar comandos que apagam seus
arquivos ou formatam seu disco rígido. Tanto no AutoCAD como em qualquer outro software (como
no Word, Excel ou Access) só permita a ativação de M acros em arquivos de origem conhecida.
4. Assistente de Recursão 2D e 3D
Discussão
1. Qual a relação que existe entre simetria e recursão? Como você geraria as diferentes formas
de simetria vistas no Capítulo I através de processos recursivos?
2. Qual a relação que existe entre formas paramétricas e recursão? Como você geraria as
espirais desenhadas neste capítulo através de processos de parametrização da forma?
3. Faça uma pequena pesquisa procurando localizar obras de arquitetura em que a recursão é
utilizada como princípio compositivo, seja através de fractais ou de processos repetitivos de
subdivisão, entroncamento, repetição concêntrica ou nuclear.
4. Procure localizar também projetos em que o autor utiliza regras compositivas, aplicando-as
aqui e ali, mas não necessariamente em uma seqüência recursiva.
Referências bibliográficas
Batty, M . Fractal Cities, P. Longley, 1994. The geometry of the Koch curve (p.61-63).
Capítulo 4: Composições regradas
As composições recursivas vistas no capítulo anterior podem ser também chamadas de composições
regradas, pois são obtidas através de regras de transformação que são sucessivamente aplicadas às
figuras obtidas em cada etapa.
Composições regradas, no entanto, não são necessariamente recursivas. Uma regra compositiva pode
ou não ser utilizada sempre que a forma à qual ela se aplica seja encontrada. Um exemplo simples é
a utilização de janelas em canto por arquitetos modernistas. Num projeto em que o arquiteto decide
utilizar esse princípio compositivo, toda a vez que um canto externo livre é encontrado, ele tem a
opção de aplicar a regra, substituindo a parede cheia por uma janela em canto, como mostra a figura
?, ou não. É perfeitamente possível criar um programa que substitua todos os cantos encontrados em
uma planta por janelas em “L”. No entanto, esse programa não seria 100% eficiente, pois dependeria
da leitura do que é realmente um “canto externo” (figura ?) e da avaliação de outras variáveis
arquitetônicas, como a existência de outras janelas na proximidade, a orientação da janela em canto,
a vista que ela terá, a área máxima de aberturas desejada em cada cômodo, e assim por diante. Além
disso, o programa poderia “confundir” outras formas em L, com paredes em canto, e realizar
substituições equivocadas. Isso sem contar que seria praticamente impossível para o programa
detectar corretamente formas emergentes, como na Figura 50(direita), o que você certamente faria
num piscar de olhos. Para que todos esses fatôres sejam levados em conta, seria preciso criar um
programa muito complexo e específico, o que fugiria do escopo deste livro, mas ainda assim você
pode utilizar, “manualmente”, esse processo compositivo em seus projetos.
Figura 50: Planta em que janelas de canto foram inseridas corretamente (centro) e de man eira equivocada (direita).
Exercícios
Os exercícios abaixo mostram como se criam programas muito simples em VBA que substituem
círculos por quadrados e quadrados por triângulos.
Para substituir todos os círculos em um desenho por quadrados, é preciso, primeiramente, vasculhar
a coleção de entidades existentes num arquivo DWG, mas especificamente em seu M odelSpace, e
verificar se cada um deles possui a etiqueta “AcDbCircle”, que identifica os objetos do tipo
“círculo”. Para isso, usaremos um comando em VBA que permite repetir uma operação para cada
elemento de um conjunto: o FOR EACH/NEXT. A cada objeto do tipo “círculo” encontrado, o
programa extrairá dele os dados necessários para criar, em seu lugar, um quadrado. Em seguida, o
círculo será apagado.
3. Grave seu projeto com o nome RANDOM .DVB, utilizando para isso o comando
FILE/SA VE.
6. Para acrescentar o código necessário para tornar o botão funcionante, clique duplo sobre
ele.
7. Na página de código que se abrirá, acrescente os seguintes comandos (em negrito) entre as
linhas já criadas automaticamente:
Dica:
Habitue-se a escrever comentários explicativos em cada seção de seu código. Para isso, basta
preceder o comentário pelo símbolo ‘, como mostram os exemplos abaixo. Desse modo, a linha será
ignorada pelo programa, mas o ajudará a antender as funções que vêm a seguir.
‘Declaração de variáveis:
Dim entidade As Variant
Dim circulo As AcadCircle
Dim nome As String
Dim X As Double
Dim Y As Double
Dim L As Double
End Sub
Atenção:
Evite usar caracteres especiais, como o “ç” e acentos gráficos nos nomes das variáveis. Por exemplo,
ao invés de “círculo”, escreva simplesmente “circulo”.
1. Insira um novo botão em seu UserForm, mudando o valor do campo Caption para
“Quadrados e retângulos por triângulos”.
2. Clique duplo no novo botão, e acrescente os comandos em negrito entre as linhas de código
geradas automaticamente:
‘Declaração de variáveis.
Dim entidade As Variant
Dim coordenadas As Variant
Dim nome As String
Dim X1 As Double
Dim Y1 As Double
Dim X2 As Double
Dim Y2 As Double
Dim X3 As Double
Dim Y3 As Double
Dim X4 As Double
Dim Y4 As Double
Dim Raio As Double
Dim Xm As Double
Dim Ym As Double
Atenção:
Observe que o comando Abs(operação) foi utilizado nas oprações de cálculo do raio do triângulo
para retirar os sinais negativos que poderiam resultar da subtração de oordenadas X e Y, uma vez
que não se sabe quais delas possuem o maior valor.
End Sub
Discussão
Atenção:
Referências bibliográficas
Nem todas as composições seguem princípios rígidos de organização. Algumas vezes, a composição
possui variáveis aleatórias, e ainda assim resulta em um conjunto harmonioso. Observe, por
exemplo, as marcas de pingos de chuva caindo sobre a água parada de um lago (Figura 55). Apesar
de não estarem organizados rigidamente em simetria matricial ou de papel de parede, é possível
dizer que sua distribuição é uniforme.
Do mesmo modo, ao se analisar o tecido urbano de uma cidade medieval, não se encontra princípios
compositivos clássicos, como a simetria. No entanto, existe nesse tipo de malha urbana uma
homegenidade que é resultante da combinação de regras comuns a todos e de dados pessoais de cada
indivíduo. O método construtivo, por exemplo, é sempre o mesmo, mas o tamanha de cada
residência pode variar entre tais e tais valores. O resultado demonstra uma certa homogeneidade,
como mostra a Figura 56.
Figura 56: Malha urbana de cidade medieval comparad a a uma malha urbana rensacentista.
Em seu livro A Pattern Language (1977), Christopher Alexander descreve diferentes tipos de
padronagens encontradas na natureza e na arquitetura, especialmente em malhas urbanas, que não
são derivadas de princípois rígidos de composição, mas do emprego de determinadas regras com
parâmetros mais ou menos aleatórios, os quais podem, obviamente, exibir certas tendências de
comportamento. Em um livro subsequente (1979), o mesmo autor afirma:
"No nível geométrico, vemos certos elementos físicos que se repetem infinitamente, arranjados
numa quase infinita variedade de combinações.” (p.82)
Programas de computador podem ser utilizados para gerar números aleatórios e criar composições
que parecem ter sido geradas espontaneamente. A vantagem é que, ao contrário dos números
aleatórios gerados por um indivíduo, os números gerados automaticamente são mais uniformemente
distribuídos, podendo ainda apresentar ou tendências baseadas em índices de probabilidades pré-
estabelecidos.
Em VBA, a função Rnd gera números aleatórios entre 0 e 0.999999... Para que ela possa ser
utilizada, é necessário utilizar o comando Ran domize, que inicia o gerador automático de
números.
Para gerar um número inteiro entre dois valores dados, utiliza-se a fórmula abaixo:
Exercícios
Nos exercícios abaixo, vamos gerar automaticamente composições formadas por quadrados
distribuídos aleatoriamente no espaço bidimensional. Em seguida, faremos variações do programa
em que os quadrados receberão cores aleatórias e em que aleatoriamente eles serão substituídos por
círculos. Finalmente, criaremos composições com quadrados que terão uma maior tendência a se
localizar no centro do espaço compositivo do que em sua periferia. O AutoCAD não possui
comandos prontos para este tipo de procedimento, e portanto será necessário criarmos um
programa em VBA específico para esta finalidade. Siga os passos abaixo para que seu programa
funcione corretamente.
Atenção:
Antes de utilizar o editor de VBA do AutoCAD, configure o Windows de maneira que o ponto, e
não a vírgula, seja utilizado como separador das casa decimais. Para isso abra o menú de
“Configurações Regionais” do “Painel de Controle” (menú Iniciar/Configurações/Painel de
Controle). Em seguida, clique na guia “Números” e substitua a vírgula (,) pelo ponto (.) no campo
“Símbolo decimal”. A maioria dos sistemas em português utiliza a vírgula nesse campo, enquanto os
sistemas em inglês utilizam o ponto. Como o AutoCAD utiliza a vírgula como separador de
coordenadas (x,y,z), o ponto é necessário para que números com casas decimais gerados pelo
sistema não sejam confundidos com pares ordenados.
Me.Hide
Dim X As Integer
Dim Y As Integer
Dim L As Integer
Randomize
X = Int((101 * Rnd) -50)
Y = Int((101 * Rnd) -50)
L = Int((10 * Rnd) + 1)
ThisDrawing.SendCommand ("rectangle" & vbCr & X & "," & Y & vbCr _
& (X + L) & "," & (Y + L) & vbCr)
Me.Show
End Sub
Neste código, dois números aleatórios entre –50 e +50 são gerados para comporem o par
ordenado (x,y) que indicará a posição do quadrado na tela. Um outro número aleatório é
gerado para indicar a medida lateral do quadrado (L). Em seguida, o comando
“RECTANGLE” é enviado ao AutoCAD, utilizando como parâmetros os valores gerados.
Deste modo, a cada vez que o botão é acionado, um quadrado de dimensão entre 1 e 10
unidades é inserido por seu canto inferior esquerdo dentro de um espaço de 100 por 100
unidades.
Atenção!!
O símbolo underscore ( _ ) é utilizado ao final de uma linha de código para indicar sua continuidade
na linha seguinte. Outra opção mais simples é escrever todo o código em uma única linha comprida,
o que não pôde ser feito aqui por limitações de espaço.
Agora que já temos formas de tamanhos e posições aleatórias, vamos deixar nosso programa
decidir também sobre as cores decada quadrado.
3. Insira um novo botão em seu UserForm, mudando o valor do campo Caption para
“Quadrados coloridos”.
4. Clique duplo nesse novo botão, e copie o código do botão anterior entre as linhas de código
geradas automaticamente.
5. Em seguida, acrescente os comandos em negrito:
ThisDrawing.SendCommand ("rectangle" & vbCr & X & "," & Y & vbCr _
& (X + L) & "," & (Y + L) & vbCr)
Me.Show
End Sub
Dica:
O uso so do símbolo “–“ na frente do comando COLOR garante que a interação com o mesmo será
feita através do Command Prompt do AutoCAD, e não de uma Dialogue Box. Se esta fôsse
carregada, o VBA não teria como passar informações a ela. Toda a interação feita através da função
ThisDrawing.SendCommand deve ser feita na linha de Prompt.
Além de dimensões, posições e cores, é possível ainda deixar a cargo do programa a escolha entre
formas diferentes. Após gerar um número aleatório inteiro entre um e dois, podemos atribuir a cada
um desses valores uma forma diferente, por exemplo, um quadrado e um círculo. Se o número
gerado fôr 1, optaremos por um quadrado. Caso ele seja 2, optaremos por círculo. A expressão
IF condição THEN
é utilizada na maioria dos programas, para indicar condições desse tipo, enquanto a palavra
ELSE
precede a opção alternativa, caso a condição desejada não seja cumprida. É necessário ainda indicar
o ponto em que terminam as ações relacionadas à condição imposta, o que no VBA é feito com a
expressão
END IF
If forma = 1 Then
ThisDrawing.SendCommand ("rectangle" & vbCr & X & "," & Y & vbCr _
& (X + L) & "," & (Y + L) & vbCr)
Else
ThisDrawing.SendCommand ("circle" & vbCr & X & "," & Y & vbCr & _
L & vbCr)
End If
Me.Show
End Sub
Observe que o valor L, que havia sido gerado como dimensão lateral do quadrado, é
aproveitado aqui como diâmetro do círculo. Desse modo, o menor círculo terá o diâmetro
igual a 1 unidade, do mesmo modo que o menor quadrado tem o lado igual a 1 unidade.
1. Insira um novo botão em seu UserForm, mudando o valor do campo Caption para “Círculos
centralizados”.
2. Clique duplo nesse novo botão
3. Em seguida, acrescente os comandos em negrito abaixo entre as linhas de código geradas
automaticamente:
Me.Hide
Dim X As Integer
Dim Y As Integer
Dim L As Integer
Randomize
centro = Int((3 * Rnd) + 1)
X = Int((101 * Rnd) -50)/centro
Y = Int((101 * Rnd) -50)/centro
L = Int((10 * Rnd) + 1)
ThisDrawing.SendCommand ("circle" & vbCr & X & "," & Y & vbCr & _
L & vbCr)
Me.Show
End Sub
5. Automatizando o processo
1. Insira um novo botão em seu UserForm, mudando o valor do campo Caption para
“Composição automática com círculos centralizados”.
2. Clique duplo nesse novo botão, e copie o código do botão anterior entre as linhas de código
geradas automaticamente.
3. Em seguida, acrescente os comandos em negrito:
Dim i As Integer
i = 1
Do While i <= 50
Randomize
centro = Int((3 * Rnd) + 1)
X = Int((101 * Rnd) -50)/centro
Y = Int((101 * Rnd) -50)/centro
L = Int((10 * Rnd) + 1)
ThisDrawing.SendCommand ("circle" & vbCr & X & "," & Y & vbCr & _
L & vbCr)
i = i + 1
Loop
Me.Show
End Sub
Sugestões:
1. Tente criar um botão que desenha círculos concêntricos uniformemente distribuídos, como na
Figura 55. Para isso, repita o comando CIRCLE algumas vezes, diminuindo em cada uma delas o
valor de L, através de divisão por números cada vez maiores:
ThisDrawing.SendCommand ("circle" & vbCr & X & "," & Y & vbCr & L & vbCr)
ThisDrawing.SendCommand ("circle" & vbCr & X & "," & Y & vbCr & L / 1.5 & vbCr)
ThisDrawing.SendCommand ("circle" & vbCr & X & "," & Y & vbCr & L / 2.5 & vbCr)
ThisDrawing.SendCommand ("circle" & vbCr & X & "," & Y & vbCr & L / 4 & vbCr)
3. Crie uma interface que permita ao usuário determinar o número de quadrados inseridos ao
pressionar o último botão.
4. Para que seu programa se torne acessível através do comando TOOLS/M ACRO/MACROS do
AutoCAD (sem a necessidade de se carregar o editor de VBA), insira em seu projeto um módulo
(M odule) e repita os passos explicados à página ?.
Discussão
1. Faça uma pesquisa procurando identificar obras de arquitetura e urbanismo que utilizam
princípios compositivos aleatórios. Nessas composições, quais as regras que são seguidas por
todos os indivíduos e quais os valores que variam de um para o outro? Você consegue
enxergar tendências nessas composições, semelhantes à tendência à centralização do
exercício desenvolvido acima?
2. Olhe novamente a figura ? no capítulo sobre formas paramétricas. Você seria capaz de criar
um programa que gerasse automaticamente sequências de arcos com dimensões aleatórias,
como fez o arquiteto Oscar Niemeyer no projeto do edifício da Editora M ondadori?
Referências bibliográficas
Alexander, C. (1979) The Timeless Way of Building (New York, O xford University Press).
Capítulo 6: Ambigüidade e emergência
Uma das principais diferenças entre o desenho feito a mão e o desenho feito no computador é o nível
de precisão. Não estou falando de desenhos a nanquim, feitos com régua e esquadro, que podem ser
extremamente precisos, mas dos desenhos feitos com lápis de ponta grossa ou carvão. Também não
me refiro às imagens digitais de tipo raster, aquelas provenientes, por exemplo, da digitalização de
fotos por scanner ou câmera digital. Esses, aliás, podem ser bastantes imprecisos se sua resolução ou
número de pontos fôr baixa. Um arquivo vetorial, criado num programa de CAD como o AutoCAD,
no entanto, não permite nenhum tipo de ambigüidade ou indefinição.
Ora, a indefinição é uma qualidade altamente desejável numa representação gráfica onde diversas
decisões ainda não foram tomadas, como espessuras de paredes e dimensões de vãos. É por esse
motivo que muitas pessoas têm dificuldades em utilizar o CAD nas fases iniciais do projeto. Na
minha opinião isso só ocorre por que ainda utilizamos o CAD como substituto do desenho a
nanquim. Se o utilizássemos de maneira mais inteligente ele poderia substituir, com vantagens,
algumas etapas que são normalmente realizadas a mão. Na próxima vez que iniciar um estudo
preliminar de planta baixa em AutoCAD tente, por exemplo, representar as paredes como linhas
simples ao invés de linhas duplas. Utilize dimensões de eixo a eixo ao invés de dimensões internas
acabadas. Quando decidir sobre a espessura das paredes, você pode utilizar o comando M PEDIT
para transformar as linhas de eixo em polylines e dar-lhes a espessura desejada, que poderá ser
facilmente modificada com o mesmo comando, como mostra a figura ?.
É claro que o desenho a mão livre nunca será totalmente substituído, pois pois algumas pessoas se
comunicam melhor atavés dele. É por esse motivo que novas interfaces que permitem incluir o
gestos manuais no desenho digital vêm sendo desenvolvidas, como canetas e tabletas com as quais
se pode desenhar a mão livre diretamente no espaço virtual.
Outro aspecto em que o CAD pode auxiliar nas fases iniciais do projeto é no que se refere à deteção
de formas emergentes. Formas emergentes são formas que surgem, propositalmente ou não, a partir
da sobreposição de outras formas. Na figura ?, por exemplo, o retângulo cinza surge da interseção de
dois quadrados.
Arquitetos, designers e artistas gráficos treinados têm facilidade para observar essas figuras
derivadas da sobreposição de outras formas. No entanto, conforme a complexidade do desenho, eles
pode lançar mão de certos recursos que os ajudam a destacar novas formas em uma composição. O
método mais mais conhecido é o da sobreposição de uma folha de papel transparente, onde se
copiam apenas as linhas que interessam ou em que se pintam as áreas que serão somadas para formar
uma nova figura. Observe nas figuras ? a ? como diferentes leituras dos padrões decorativos árabes
podem ser obtidas ao se destacar determinadas formas ou unir campos contíguos com uma mesma
tonalidade.
O método acima descrito pode ser utilizado de maneira análoga, no AutoCAD, com a criação de
novos layers e o uso do comando BHATCH.
A grande vantagem deste método é que ele permite que se chegue a formas muito complexas a partir
de figuras primitivas.
Exercícios
Quando criança, você provavelmente já brincou muito com emaranhados de linhas que se
transformam em belos desenhos ao se preencher os campos indicados por um ponto. Nos exercícios
abaixo partiremos de composições recursivas obtida com os programas assistente-de-regras 2D e 3D,
introduzidos no último capítulo, para destacar nelas novos padrões, regulares ou irregulares.
1. Formas emergentes em 2D
????????
Figura 57: Você provavelmente já brincou bastante, quando crian ça, com este tipo de composição emergente.
Figura 58: Exemplos de composições emergentes criadas com o comando BHATCH a partir de
composições regradas geradas pelo program a Assistente de Regras 2D.
Dica:
Ao criar suas regras de composição no assistente-de-regras-2D, tente imaginar de ante-mão como
ficarão as sobreposições das figuras-base e que tipo de figuras emergentes você poderá obter com
elas. Desse modo, suas composições serão mais baseadas em sua real intenção artística do que
simplesmente na sorte ou azar.
2. Formas emergentes em 3D
Se você tiver alguma experiência com AutoCAD 3D, tente criar composições semelhantes às do
exercício anterior em 3D, utilizando como ponto de partida uma compoosição gerada pelo programa
assistente-de-regras-3D, que você pode baixar do mesmo site em que encontra a versão 2D. Após
experimentar diferentes combinações entre cópias de um mesmo sólido, comece a aplicar neles as
operações boleanas (UNION, SUBTRACT, INTERSECT). Utilize também o comando SLICE para
aparar as partes indesejadas, como mostra a Figura 59.
Discussão
7. Faça uma pequena pesquisa e procure detectar a utilização das técnicas apresentadas acima
na obra dos gandes mestres da arquitetura. Ao ver uma forma nova e original, pergunte-se
sempre quais as formas primitivas que deram origem a ela.
8. Em seu próximo projeto, fique atento às formas emergentes que irão surgir,
espontaneamente, à medida em que você começa a desenhar. Em seguida, procure sobrepôr ,
deliberadamente, figuras que propiciem o aparecimento de novas formas em seu projeto.
Faça deste método um hábito aliado aos seus métodos pessoais de projetar.
Referências bibliográficas
Emergence (p.61-63).
Capítulo 7: “Algoritmização” de processos de projeto
Um algorítmo nada mais é do que um procedimento sistemático que produz, num número finito de
etapas, a resposta a uma pergunta ou a solução de um problema. Como pudemos observar na
primeira parte deste livro, um programa de computador nada mais é do que um tipo especial de
algorítmo, descrito em linguagem apropriada. Até aqui os algorítmos apresentados foram bastante
simples e pouco abrangentes no processo projetivo, atuando apenas de maneira localizada, gerando
composições abstratas baseadas em processos lógico-matemáticos. Neste capítulo vamos transformar
em algorítmo (“algoritmizar”) um processo de projeto comum no quotidiano de arquitetos, que
muitas vezes é repetido por eles infinitas vezes.
"Como um algorítmo tem de ser especificado em tamanho grau de detalhe, a simples tentativa de se
construir um algorítmo para um determinado processo constitui-se num excelente meio de se
explorar o processo em todos os seus aspectos e características" (p.208).
“Têm-se dito frequentemente que uma pessoa não compreende realmente uma coisa até que ela seja
capaz de ensiná-la a alguém. Na verdade, uma pessoa não compreende realmente uma coisa, até
que ela seja capaz de ensiná-la ao computador, isto é, expressá-la através de um algorítmo”
(p.709).
Apesar da palavra algorítmo sugerir o uso da computação, algorítmos vêm sendo utilizados há
séculos, inclusive nas artes e na arquitetura. Um excelente exemplo é o livro do grande mestre
italiano do séc. X VII, Andrea Paládio. Em seu tratado “I Quattro Libri d’Árchittetura”, Paládio
explica, através de linguagem algorítmica, ou seja, passo a passo, as regras para o cálculo das
proporções de abóbadas, colunas, entablaturas, pórticos, escadas e telhados, só para citar alguns
exemplos. No texto extraído do livro de Paládio notamos até mesmo a presença de palavras-chave na
criação de um programa de computador, como os condicionais “SE” e “M AS” (que correspondem,
em programação, a “IF” e “ELSE”):
“Os cômodos podem ser cobertos ou com abóbadas ou com tetos planos. SE tiverem tetos planos, a
altura do piso ao teto deve ser igual à sua largura (...) SE forem abobadados, a altura das abóbada
em cômodos quadrados será um terço maior que sua largura. Mas nos cômodos que são mais
longos que largos (...) a altura será encontrada adicioando-se a largura ao comprimento e
dividindo-se o resultado em duas partes iguais (...)”(Primeiro Livro).
O livro de Paládio é um exemplo perfeito de regras de composição que podem ser automatizadas
com o uso do computador. Todo projeto arquitetônico possui algumas etapas consideradas
“mecânicas”, que consistem simplesmente na aplicação de regras determinadas pelo arquiteto
inicialmente e que serão seguidas todas as vezes que uma determinada situação fôr encontrada.
Exercício
• Ao se entrar no cômodo, não se deve avistar as cabines com vasos sanitários. Pode-se, no
entanto, avistar a bancada de pias.
• Para um melhor aproveitamento do espaço, as cabines e a bancada da pia devem ser
distribuídos contra as paredes de maior comprimento, num espaço retangular. (Caso o espaço
seja quadrado, não importa a direção do layout.)
• A passagem entre a porta de acesso e o início das cabines deverá ter uma largura mínima de
1.00m.
• O comprimento das cabines será sempre de 1.20m.
• Todas as cabines devem ter a mesma largura, que deverá ser no mínimo de 1.00m.
Após a definição das regras de composição, é necessário estabelecer as condições exigidas para sua
solução. Por exemplo, se o retângulo dado fôr muito pequeno, será impossível desenvolver o layout
de acôrdo com o esquema estabelecido. Do mesmo modo, um espaço muito grande pode requerer
outro tipo de layout especializado (fig.?). Por esse motivo, será exigido que o espaço fornecido tenha
ao menos 2.00m. de comprimento (para acomodar ao menos uma cabine) e entre 2.50 e 4.00m. de
largura (para que o espaço entre as cabines e a bancada da pia seja sempre entre 0.80 e 2.30m.).
O quadro abaixo resume os valores que serão utilizados no projeto. Dados os valores L, e C, os
valores N e LC serão calculados para cada caso.
Por motivo de simplicidade, levaremos em consideração que a planta do sanitário será sempre
retangular, que estará sempre posicionada horizontalmente na tela do computador, e que a porta de
entrada estará sempre no canto inferior esquerdo do retângulo, posicionado no ponto (0,0,0). De
maneira esquemática, o layout do sanitário se parecerá sempre com a Figura 60, variando apenas no
comprimento e largura do cômodo e no número e largura das cabines.
Vamos começar nosso programa pelo desenho de sua interface gráfica. Como vimos acima, o
usuário terá de nos informar os valores relativos ao comprimento e largura do espaço para o qual
desenvolveremos um layout. Para isso, vamos utilizar campos de texto onde os valores necessários
serão digitados, além de botões para executar a tarefa e para limpar a tela e reiniciar o projeto.
20. Para acrescentar o código necessário para tornar os comandos da interface funcionantes,
clique duplo sobre cada um eles.
21. Na página de código que se abrirá, acrescente os comandos em negrito apresentados abaixo.
22. Em primeiro lugar, faremos as declarações de variáveis no topo da página de código.
Digite, antes da primeira Sub, as seguintes declarações de variáveis de valor fixo e
circunstancial que serão utilizadas no programa:
Observe que a única variável de tipo Integer (número inteiro) é N, o número de cabines, que não
pode ser um número decimal.
Atenção:
As variáveis de um programa podem ser declaradas dentro ou fora de uma Sub ou função. A
diferença é que a variável declarada dentro de uma Sub tem valor apenas dentro da mesma, enquanto
a variável declarada no início do programa pode ser compartilhada por diversas Subs. Em nosso
caso, as variáveis L e C deverão ser acessadas pelas caixas de texto e pelo botão de geração do
layout, devendo, portanto, ser obrigatoriamente declaradas externamente a essas funções.
23. Em seguida, vamos a crescentar o código necessário para que o valor digitado nas caixas de
texto 1 e 2 seja atribuído, repsectivamente, às variáveis C (comprimento do cômodo) e L
(largura do cômodo).
24. O próximo passo consiste em desenhar a bancada da pia e as partições das cabines, quando
o primeiro botão fôr acionado. Para isso as dimensões fixas deverão, incialmente, receber
os valores estabelecidos como padrões de projeto.
Finalmente, as linhas necessárias serão desenhadas na tela, utilizando-se para isso comandos de
AutoCAD misturados a variáveis obtidas no programa:
'Recarregar UserForm
Me.Show
End Sub
Observe que o número de cabines foi calculado com a seguinte fórmula: parte inteira do número
resultante da subtração largura da passagem do comprimento do retângulo, e da divisão do
resultado pela largura mínima da cabine (1.00m). Para se obter a parte inteira desse número, foi
utilizada a função Int(), que tranforma o número Real dentro do parênteses em um número
inteiro, eliminando sua parte decimal. Observe também que o desenho das divisórias foi repetido
(N-1) vezes através de uma estrutura de repetição (“loop”), que utiliza um índice i, um número
inteiro ao qual uma unidade é somada a cada vez que o código é repetido. Esse índice participa
do cálculo da coordenada X da linha divisória, que varia a cada nova partição. A Figura 62
mostra a composição das coordenadas utilizadas no desenho das linhas de layout.
25. O último passo consiste em apagar tudo o que foi desenhado para iniciar um novo estudo de
layout:
2. Estabelecendo limites
Você deve ter notado que alguns dos layouts gerados não parecem adequados aos espaços
definidos. Como vimos acima, tipo de layout que este programa é capaz de fazer se adequa melhor
a espaços com largura entre 2.50 e 4.00m, e comprimento maior ou igual a 2.00m. Para forçar o
usuário a utilizar dimensões dentro dos limites estabelecidos, vamos incluir uma condicional do
tipo IF nas Subs das caixas de texto que apresentará uma caixa de mensagem (M sgBox) avisando o
usuário sobre o problema e cancelando a ação de desenho.
If C = 0 Then
MsgBox "Insira um valor diferente de zero para o comprimento do
cômodo."
GoTo Fim
End If
...
2. Observe como, caso uma condições ou ambas não sejam atendidas, o programa prosseguirá
para a linha “Fim”, através do comando GoTo (“vá para”). Agora é necessário atribuir o
nome “Fim” à última linha da Sub, como mostra o código abaixo em negrito:
...
'Recarregar UserForm
Me.Show
Fim:
End Sub
3. Teste seu programa deixando os campos de texto vazios e preenchendo-os com o valor
zero. Se desejar, imclua também em seu código um teste para valores negativos:
If L <= 0 Then
...
If C <= 0 Then
...
Sua interface poderia permitir ainda a seleção de diferentes valores pre-estabelecidos para as
variáveis com valores fixos no programa acima, através do uso de “list-boxes”. Para isso, vamos
incluir em nossa interface uma lista de valores opcionais para a profundidade das cabines.
1. Acrescente à sua interface uma “combo box” (caixa de lista combinada com campo de texto),
arrastando-a da Toolbox. Seu UserForm ficará parecido com a Figura 63. A ComboBox
apresenta valores pré-definidos e ao mesmo tempo permite que o usuário digite novos
valores.
Figura 63: Interface do programa de geração de layout com a ComboBox.
2. Será necessário agora criar uma nova função na página de código, que atribuirá um valor
inicial e adicionará os demais valores opcionais à lista da ComboBox. Para isso, acesse a
página de código (VIEW/CODE) e selecione, na lista da esquerda, no topo da página, a
palavra UserForm. Em seguida, selecione na lista da direita a palavra Initialize. O editor de
VBA criará, automaticamente, uma nova Sub que será ativada toda vez que o UrseForm fôr
carregado. Nessa Sub, copie o código em negrito abaixo:
Sub UserForm_initialize()
UserForm1.ComboBox1.Value = 1.1
UserForm1.ComboBox1.AddItem (1.1)
UserForm1.ComboBox1.AddItem (1.2)
UserForm1.ComboBox1.AddItem (1.3)
End Sub
3. O próximo passo será capturar o valor escolhido pelo usuário. Para isso, clique duplo na
ComboBox e copie o código em negrito na Sub criada automaticamente:
4. Finalmente, você deve apagar ou comentar a linha de código dentro da Sub do botão “Gerar
Layout” que atribuía um valor fixo à variável PC:
‘PC = 1.2
O programa apresentado acima realiza apenas as tarefas mais básicas no processo de determinação
do layout do sanitário. Ele poderia facilmente incluir divisórias mais detalhada, com linhas duplas e
portas, e inserir blocos pré-definidos para as pias e vasos sanitários. Tudo depende do tempo que
você está disposto a gastar com seu programa, que por sua vez depende da economia de tempo que
este lhe trará no seu dia-a-dia.
Discussão
10. Procure indetificar, em seu cotdiano, tarefas repetitivas de projeto que poderiam ser
automatizadas por programas similares ao desenvolvido acima. Estabeleça, para cada uma
delas, quais seriam as variáveis do problema, quais as condições que deveriam ser respitadas,
quais as limitações dos valores fornecidos e gerados, e quais os procedimentos que seriam
efetuados.
Referências bibliográficas
Stiny, George. Algorithmic aesthetics : computer models for criticism and design in the arts.
Berkeley: University of California Press, 1978.
Em 1975, época em que ainda eram poucos os arquitetos que utilizavam o computador em seu
cotidiano, William M itchell já previa a divisão do processo de projeto entre humanos e máquinas,
em artigo entitulado “The theoretical foundations of computer aided design” (Os fundamentos
teóricos do CAD):
"O uso menos ambicioso da máquina é dar-lhe apenas funções de representação, deixando a
responsabilidade pela geração e avaliação de soluções com o projetista. Numa versão mais
ambiciosa, a máquina pode receber a função de avaliar soluções produzidas por projetistas
humanos. Alternativamente, as funções poderiam ser revertidas, com a geração de alternativas pela
máquina e sua avaliação por humanos. Quando as soluções em potencial e os critérios para sua
seleção podem ambos ser bem definidos (problema bem definido) então sim um processo de projeto
pode, em tese, ser totalmente automatizado. O mais ambicioso uso da máquina consiste na tentativa
de utilizá-la na solução inteligente de problemas mal definidos." (p.?)
Embora quase trinta anos tenham se passado desde então, hoje o que se vê na maioria dos escritórios
de arquitetura e design é um uso do computador limitado às funções de representação. A geração
automática de alternativas de projeto corresponderia, portanto, a uma evolução do ponto de vista do
tipo de uso que fazemos do computador em nossa profissão.
Um sistema gerativo é aquele que produz uma variedade de soluções em potencial para serem
avaliadas, como, por exemplo, objetos resultantes da enumeração das combinações possíveis de suas
partes. Um sistema gerativo pode ser do tipo exaustivo, que gera todas os opções possíveis, por
"tentativa e erro", analítico, que gera apenas as soluções potencialmente viáveis por dedução, ou
ainda heurístico, que gera apenas as soluções desejáveis.
Exercício
Imagine que você quizesse explorar as diferentes possibilidades de composição com três
paralelepípedos ortogonais que se interceptam, como na Figura 64. No AutoCAD, você pode fazer
isso modelando sólidos de tamanhos diferentes com o comando BOX. Para modificar as proporções
dos paralelepípedos, no entanto, seria necessário apagá-los e reiniciar todo o processo. Você também
poderia utilizar um bloco criado a partir de um cubo e alterar suas escalas em X, Y e Z toda vez que
quizesse modificar suas proporções. Com o VBA você pode tornar esse tipo de exploração da forma
ainda mais interativo, com o uso de interface apropriada (barras de rolagem) para controlar as
variáveis, ou ainda gerar automaticamente todas as alternativas possíveis dentro de uma gama de
valores.
Neste caso simplificado de geração automática de alternativas, vamos criar uma interface para
permitir a exploração dinâmica das variações de altura (h), largura (l) e comprimento (c) de três
paralelepípedos sobrepostos, conforme mostra a Figura 65.
O volume central, de cor vermelha, será indicado pela letra V, e os laterais, de cores azul e magenta,
serão indicados pelas letras A e M . As variáveis do programa serão seus respectivos pontos de
inserção e suas dimensões.
Atenção:
Observe que o ponto de inserção do bloco central (vermelho) será sempre em (0,0,0). As
coordenadas dos pontos de inserção dos blocos laterias (azul e magenta), representadas pelas
variáveis (Ax, Ay, Az) e (M x, My, Mz), devem ser calculados em função das dimensões do bloco
central:
Ax = -Vl/2
Ay= -Vc/2
Az= -Vh/2
M x= Vl/2
My= Vc/2
Mz= -Vh/2
Figura 65: Relação espacial entre os três paralelepípedos.
Atenção:
Se o contrôle SliderBar não estiver aparecendo, clique com o botão da direita no painel “Controls”
da ToolBox e selecione a opção “Additional Controls”.
Na lista de controles adicionais, selecione “M icrosoft Slider Control, version 5.0 (SP2), como mostra
a Figura 66.
Figura 66: Painel de controles adiconais.
Clique no botão OK. O comando SliderBar aparecerá no ToolBox, como mostra a Figura 67 .
35. Finalmente, arraste três legendas (Label) da Toolbox para cada moldura, cada uma ao lado
de uma barra de rolagem. M ude a propriedade Caption de cada uma delas para
“Comprimento”, “Largura” e “Altura”. Para que o texto caiba dentro delas, pode ser
necessário torná-las mais largas, esticando-as por um de seus cantos. Sua interface deverá
ficar parecida com a que aparece na Figura 30.
Figura 68: Interface do programa “ Gerador de Alternativas ”.
36. Abra a página de código com o ocmando de menú VIEW/CODE e digite, na parte superior
da janela, as declarações abaixo:
Dim Ac As Double
Dim Al As Double
Dim Ah As Double
Dim Mc As Double
Dim Ml As Double
Dim Mh As Double
Dim Vc As Double
Dim Vl As Double
Dim Vh As Double
Dim Ax As Double
Dim Ay As Double
Dim Az As Double
Dim Mx As Double
Dim My As Double
Dim Mz As Double
37. Volte para a vista de layout do UserForm (VIEW/OBJECT) e clique duplo sobre o botão
“Inserir/Atualizar”. Na página de código que se abrirá, digite os comandos abaixo em
negrito entre as linhas de código geradas automaticamente:
Ac = UserForm1.Slider1.Value
Al = UserForm1.Slider2.Value
Ah = UserForm1.Slider3.Value
Mc = UserForm1.Slider4.Value
Ml = UserForm1.Slider5.Value
Mh = UserForm1.Slider6.Value
Vc = UserForm1.Slider7.Value
Vl = UserForm1.Slider8.Value
Vh = UserForm1.Slider9.Value
Ax = -Vl / 2
Ay = -Vc / 2
Az = -Vh/2 + Ah/2
Mx = Vl / 2
My = Vc / 2
Mz = -Vh/2 + Mh/2
ThisDrawing.SendCommand ("box" & vbCr & "ce" & vbCr & "0,0,0" & vbCr_
& "L" & vbCr & Vc & vbCr & Vl & vbCr & Vh & vbCr)
ThisDrawing.SendCommand ("box" & vbCr & "ce" & vbCr & Ax & "," & Ay_
& "," & Az & vbCr & "L" & vbCr & Ac & vbCr & Al & vbCr & Ah & vbCr)
ThisDrawing.SendCommand ("box" & vbCr & "ce" & vbCr & Mx & "," & My_
& "," & Mz & vbCr & "L" & vbCr & Mc & vbCr & Ml & vbCr & Mh & vbCr)
Me.Show
End Sub
38. Teste seu programa com o ocmando de menú RUN/RUN SUB USERFORM . Após a
primeira inserção de blocos, feche o UserForm e volte à janela do AutoCAD. Estabeleça
um ponto de vista favorável à apreciação dos resultados, digitando os seguinte comandos e
valores en negrito na área de prompt:
Command: VPOINT
Specify a viewpoint or [Rotate] <display compass and tripod>: 1,-1,1
Command: SHADE
O programa desenvolvido acima permite apenas que se visualize o resultado após todas as barras de
rolagem terem sido posicionadas. Imagine agora que você quizesse visualizar o resultado
automaticamente a cada vez que uma barra de rolagem fosse movida. Para isso, a mesma seqüência
de comandos ativada ao se clicar no botão “Inserir” deveria ser repetida a cada vez que o usuário
realizasse um movimento em qualquer uma das barras de rolagem. Para evitar a repetição da
seqüência de comandos que digitamos acima, vamos transformá-la em duas funções, uma de
verificação dos valores das barras e outra de criação dos blocos com esses valores. Esses funções
serão chamadas com o comando Call, conforme mostram as instruções abaixo:
1. Insira um procedimento do tipo Função (Function) em seu programa, utilizando para isso o
comando de menú INSERT/PROCEDURE, e preenchendo o campo Name com as palavras
“LimparTela” (sem espaço entre elas).
2. Entre as linhas de código que aparacerão automaticamente, copie a segunda linha do código
que você havia digitado anteriormente na Sub do botão “Inserir” (CommandButton1):
Public Sub LimparTela()
ThisDrawing.SendCommand ("erase" & vbCr & "all" & vbCr & vbCr)
End Sub
4. Entre as linhas de código que aparacerão automaticamente, copie parte do código do botão
“Inserir” (CommandButton1) relativa à chacagem de valores das barras de rolagem:
Ac = UserForm1.Slider1.Value
Al = UserForm1.Slider2.Value
Ah = UserForm1.Slider3.Value
Mc = UserForm1.Slider4.Value
Ml = UserForm1.Slider5.Value
Mh = UserForm1.Slider6.Value
Vc = UserForm1.Slider7.Value
Vl = UserForm1.Slider8.Value
Vh = UserForm1.Slider9.Value
End Sub
5. Insira agora um terceiro procedimento do tipo Função (Function) em seu programa, sempre
com o comando de menú INSERT/PROCEDURE, preenchendo desta vez o campo Name
com a palavra “Inserir”, como mostra a Figura 69.
Ax = -Vl / 2
Ay = -Vc / 2
Az = -Vh / 2 + Ah / 2
Mx = Vl / 2
My = Vc / 2
Mz = -Vh / 2 + Mh / 2
End Function
7. Substitua as partes retiradas do código do botão “Inserir” pelas linhas em negrito abaixo:
UserForm1.Hide
Call LimparTela
Call ChecarValores
Call Inserir
UserForm1.Show
End Sub
UserForm1.Hide
Call LimparTela
Call ChecarValores
Call Inserir
UserForm1.Show
End Sub
Atenção:
1. O uso da palavra “Call” antes do nome de uma função não é obrigatório. No entanto, ele aumenta
a clareza do código, pois torna explícito o fato de que uma função criada por você – e portanto não
existente anteriormente – está sendo chamada.
2. Poderíamos ter criado uma função única envolvendo os processos de limpeza de tela, checagem
de valores e criação de blocos, que seria chamada pelas barras de rolagem. No entanto, os três
procedimentos foram separados em funções diferentes porque na próxima etapa utilizaremos apenas
dois deles.
3. Observe como seu código ficou muito mais simples de entender ao agruparmos sequências de
comandos em funções cujos nomes descrevem o que está acontecendo.
9. Teste seu programa novamente. Com os comandos Zoom e Pan procure posicionar os blocos
na tela de maneira semelhante à da Figura 70, de modo que ao utilizar as barras de rolagem
você possa visualizar simultaneamente as modificações ocorridas em sua forma.
A versão do programa desenvolvida acima já representa uma boa evolução com relação à anterior,
ao mostrar dinamicamente as alterações causadas pelas mudanças nos valores das diferentes
variáveis do sistema. No entanto, não é possível compará-las lado a lado. Vamos agora utilizar o
VBA para gerar, automaticamente, uma gama de alternativas na tela, para que els possam ser
comparadas entre si. Se considerarmos que cada uma das nove variáveis pudesse assumir apenas
valores inteiros entre 1 e 10, teríamos ao todo 109 soluções possíveis para o problema. Como esse
número é muito grande, vamos limitar a gama de valores para apenas dois para cada variável. Para
que o código seja repetido com todos os valores desejados, utilizaremos um tipo de estrutura de
repetição conhecido como FOR/NEXT.
FOR/NEXT:
1. A estrutura de repetição FOR/NEXT atribui uma gama de valores (que vai de um valor mínimo a
um máximo dados) a uma variável, repetindo um mesmo procedimento para cada valor inteiro entre
esses limites. Em nosso caso, cada FOR/NEXT será executado apenas duas vezes, uma com o valor
mínimo 1 e outra com o valor máximo 2.
2. Embora o valor padrão de acréscimo no FOR/NEXT seja uma unidade, você também pode,
opcionalmente, estabelecer outros valores inteiros ou não, positivos ou negativos que serão somados
ou subtraídos ao valor inicial dado, como nos exemplos abaixo:
No código abaixo não é necessário chamar a função ChecarValores, pois neste caso eles não
dependem das barras de rolagem, e sim da gama de valores atribuída a cada um deles na primeira
linha de cada FOR/NEXT. Dentro da estrutura de repetição FOR/NEXT, teremos de acrescentar uma
função que modifica a origem da UCS, evitando que os blocos criados fiquem sobrepostos. Siga os
passos abaixo para incluir, em sua interface, um botão que gera todas as combinações possíveis dos
três blocos com comprimento, largura e altura variando de 1 a 2 unidades.
1. Aumente a área do UserForm1, caso seja necessário, e insira, em sua parte inferior, um novo
botão (CommandButton), arrastando-o da ToolBox. Na janela de propriedades ou sobre o
próprio botão, mude sua Caption para “Gerar todas as alternativas”.
2. Clique duplo sobre o botão e inclua o seguinte código em negrito entre as linhas criadas
automaticamente:
Next
Next
Next
Next
Next
Next
Next
Next
Next
End Sub
Atenção:
O uso de espaçamentos progressivamente maiores dentro das funções e estruturas de repetição não é
obrigatório, mas aumenta a clareza do código.
3. Teste seu programa. A guarde enquanto o AutoCAD modela todas as alternativas, o que pode
demorar um pouco, dependendo de seu computador. Quando o código tiver sido executado,
volta à janela do AutoCAD e utilize os comandos ZOOM e PAN para visualizar mais de
perto as composições geradas.
Figura 71: Algumas das composições em que o bloco central fica obstruído pelos laterias.
Para obter esta nova gama de possibilidades vamos criar um novo botão, que chamaremos de “Gerar
todas as alternativas desejadas”.
2. Clique duplo sobre o botão criado e copie o código do botão anterior entre as linhas geradas
automaticamente.
‘Checar condição
If Vc > Mc And Vc > Ac Or Vl > Ml And _
Vl > Al Or Vh > Mh And Vh > Ah Then
Next
Next
Next
Next
Next
Next
Next
Next
Next
End Sub
4. Teste seu programa. Como os casos em que há sobreposições são 343, desta vez serão
modeladas apenas 169 alernativas, o que reduz significativemente o número de
possibilidades a serem analisadas visualmente, e consequentemente torna os processos de
geração e seleção mais rápidos.
5. Finalmente, para que os usuários de seu programa não necessitem carregar o editor de VBA
do AutoCAD, crie uma macro que carrega o UserForm1. Para isso, insira um módulo
(INSERT/M ODULE), clique duplo sobre ele e insira em seguida um procedimento
(INSERT/PROCEDURE) do tipo Sub, chamando-o de “Gerador”. Entre as linhas de códigos
inseridas automaticamente, copie a linha abaixo em negrito:
UserForm1.Show
End Sub
6. Grave seu programa. Para utilizá-lo novamente, carregue-o no AutoCAD com o comando
TOOLS/MACRO/LOAD PROJECT, abrindo a seguir o UserForm com o comando
TOOLS/MACRO/M ACROS.
Discussão
1. Imagine outras situações em que esta técnica de produção automática de alternativas e sua
filtragem poderiam ser úteis em um projeto real de arquitetura.
2. Na sua opinião, qual dos métodos de exploração da forma presentes no exercício acima seria
mais útil no desenvolvimento de um projeto de arquitetura: a geração indiscriminada de
alternativas ou a geração seletiva delas? Justifique sua resposta.
Referências bibliográficas
M itchell, W. J. The theoretical foundations of computer aided design. Environment and Planning B,
2. (1975) 127-150.
Apêndice
O VBA é uma linguagem de programação orientada a objetos. Não foi nosso objetivo, neste livro,
introduzir esse tipo de linguagem, mas sim utilizá-la de forma prática com o objetivos de fazer com
que arquitetos e designers passem a enxergar a computação como uma forma de se trabalhar
criativamente. O ambiente de desenvolvimento de VBA do AutoCAD possui um Help em que você
encontrará explicações e exemplos de todos os comandos de VBA vistos neste livro. Para uma
referência rápida, incluí abaixo um resumo da sintaxe da linguagem VBA e seus principais
operadores e estruturas de repetição. Para maiores informações sobre o VBA consulte a bibliografia
sugerida no final desta seção.
1. Sintaxe
Como na maioria das linguagens orientadas a objeto, a sintaxe básica de um programa em VBA tem
a seguinte estrutura:
Declaração de variáveis:
Diga quais serão as variáveis utilizadas e que tipo de informação elas terão (números, texto,
desenhos de AutoCAD, etc.)
Procedimentos:
Um procedimento pode ser do tipo Função ou Subs, e nada mais é do que um agrupamento de linhas
de código:
End Sub
Sintaxe do objeto:
A sintaxe do ponto é utilizada para se extrair propriedades ou aplicar ações (denominadas métodos)
em objetos:
objeto.propriedade
objeto.método
Dica:
Como os objetos em VBA possuem um número muito grande de propriedades e métodos, o editor de
VBA do AutoCAD fornece uma lista das caracterísitcas de cada objeto toda vez que um ponto é
digitado ao lado do nome de um objeto. Por exemplo, experimente digitar a palavra ThisDrawing
seguida por um ponto numa página de código do editor de VBA do AutoCAD. ThisDrawing é o
nome do objeto que representa o arquivo DWG que se encontra ativo no AutoCAD. Observe que há
dois tipos de ícones na lista:o tijolo voando indica um método (ação), enquanto a mão segurando
uma ficha indica uma propriedade, como mostra a figura ?.
2. Operadores
Operadores aritméticos:
+ Soma
- Subtração
* Multiplicação
/ Divisão (retorna número com casas decimais)
\ Divisão (retorna número inteiro)
^ Potência
Operadores de comparação:
< Maior
<= Maior ou igual
> Menor
>= Menor ou igual
= Igual
<> Diferente
3. Estruturas de repetição
Condicionais:
Do...Loop While Do
ação
Loop While condição
Observações:
Dim I As Integer
I = 1
Do While I < 5
ação
I = I + 1
Loop
2. A estrutura For Each só pode ser utilizada em grupos de elementos, como Arrays e Collections.
No AutoCAD, alguns exemplos de Collections são os objetos desenhados no M odelSpace de um
arquivo DWG ou os layers nele criados.
Bibliografia recomendada
Uso criativo da computação
Os livros abaixo, escritos por dois grandes mestres da computação gráfica aplicada à arquitetura e às
artes, certamente agradarão aos leitores interessados no uso da programação para a geração de
formas criativas:
M itchell, W. J., Ligget, R. S. & Kvan, T. (1987) The art of computer graphics programming. New
York: Van Nostrand Reinhold.
Este livro, bem mais recente, traz exercícios práticos para se criar applets animados que você
poderá inserir em suas páginas para Internet. A linguagem utilizada é uma sub-linguagem
baseada em Java, desenvolvida pelo próprio M aeda, e disponível para download de seu site.
Este livro pode ser comprado diretamente pelo site da M IT Press.
Para os leitores que desejam obter maiores informações sobre a linguagem de programação VBA, o
livro de Lomax serve de referência, enquanto o de Roe traz exercícios práticos aplicados à
Roe, A. G. Using Visual Basic with AutoCAD – Second Edition. Albany, NY: Autodesk Press,
2001.