Mostrando postagens com marcador OpenSCAD. Mostrar todas as postagens
Mostrando postagens com marcador OpenSCAD. Mostrar todas as postagens

sexta-feira, 8 de novembro de 2019

O uso do module e do for no OpenSCAD

No OpenSCAD existe uma estrutura de organização denominada "module nome (parâmetros) {ação}" que além dessa função mencionada, ela possui parâmetros de entrada que ao ser alterados migram essas informações para dentro da estrutura de ação, como podemos ver abaixo:



Faça um teste, mude os valores da entrada espira (destacado em azul) para (8,45,30) e você notará que temos menos degraus na escada (porque o primeiro valor é relacionado a quantidade de degraus), e o formato dos degraus se alterou (porque o segundo e o terceiro valor estão relacionados as dimensões dos cubos, exceto pela altura que é fixa em 1). Com isso vemos uma possibilidade de programação e modelamento no OpenSCAD que aceita diferentes valores e mantem a estrutura que foi planejada.
Agora você deve ter notado o uso da repetição "for" dentro da estrutura do module que é responsável pela repetição da construção de cada um dos degraus. No exemplo acima temos "for (n=[0:quantidade])" onde o valor de repetição de n varia de 0 até o máximo colocado na entrada final e gera as repetições numéricas de 1 em 1. Porém é possível fazer esse incremento no for com um valor delimitado diferente (exemplo 0,5) usando "for (n=[0:0.5:quantidade])", conforme o exemplo abaixo:

Outra forma de usar o for é com o auxílio de vetores que delimitam a regra de formação, conforme observamos na figura abaixo:


Agora é com você! Use esses novos conhecimentos para suas construções e deixe nos comentários suas impressões e descobertas. Até a próxima!

terça-feira, 5 de novembro de 2019

Rotações de objetos no OpenSCAD.

Ao modelar objetos no OpenSCAD nem sempre sua construção é linda e maravilhosa a ponto de estar lá no ponto zero dos eixos cartesianos e não necessitar de nenhuma movimentação. No post anterior vimos o uso do translate (https://vemfazermatematicaegames.blogspot.com/2019/03/movendo-solidos-no-openscad.html) para transladar objetos pelo plano. Hoje iremos ver formas de rotacionar esse sólido construído pelo plano.
A forma mais simples de rotacionar um objeto é usando o comando "rotate ([x,y,z])", onde as entradas são valores numéricos dos ângulos nos eixos x, y e z respectivamente, conforme a figura abaixo:


Tome cuidado ao fazer rotações parciais para ter uma soma final de uma rotação única, pois elas não são comutativas. No exemplo abaixo, o comando "rotate ([45,45,45])" não tem a mesma posição que as demais rotações usando valores x,y,z iguais a 45 e que a soma desses rotações não dá o original, ou seja, a rotação linear não é comutativa:


Se você quiser saber mais do porque a decomposição da rotação não funciona, leia a página 04 do texto a seguir: https://webserver2.tecgraf.puc-rio.br/~mgattass/Quaternios.pdf.
Outra possibilidade de usar rotação é usando como eixo um vetor posição (ao invés dos eixos cartesianos). Usando o comando "rotate (a=ângulo, v=[x,y,z])" é possível ter um eixo personalizado a partir de um vetor posição e por meio dele fazer a rotação:


Existem outras possibilidade de rotações como o multimatrix, mas esse será abordado futuramente. Por hoje é isso! Agora suas construções já podem ser rotacionadas pelo plano 3D e trazer novos desafios. Não esqueça de deixar suas impressões nos comentários e até a próxima!

quarta-feira, 23 de outubro de 2019

O uso de variáveis no Modelamento Geométrico

Na Matemática, o conceito de variável é atrelado ao estudo de funções, onde podemos ter um conjunto finito ou não de valores desconhecidos, mas que podem ser atrelados a uma regra de construção. Essa definição é muito importante no modelamento de objetos, pois permite fazer construções de objetos escalonados (que podem ter diversos tamanhos) e que podem sofrer modificações sem alterar as regras básicas de construção.


Como podemos ver acima, logo no início da programação são definidos duas variáveis, "valor1" e "valor2" que são igualadas a valores numéricos, estes inclusive podem ser alterados e a peça irá ter um novo redimensionamento (teste a vontade). Estes dois valores estão presentes dentro da programação de construção (união entre cilindro e cubo rotacionado) e temos que: o "valor1" é referente aos valores X e Y do plano, no qual o cilindro tem o raio e o cubo tem as coordenadas cartesianas X e Y (destacados em verde). Já o "valor2" é referente ao eixo Z, no qual o cilindro tem a altura (h) e o cubo tem a terceira coordenada cartesiana (Z) (destacados em laranja). Desse modo, independente do valor que for colocado nas duas variáveis, a construção irá manter suas regras de proporcionalidade de construção.
É possível ainda fazer operações com as variáveis criadas de modo a manter uma mesma escala na construção total do objeto, como podemos ver no código abaixo:



Observe que o comando "valor2 = valor1*0.9" irá construir todos os valores da variável "valor2" com o tamanho escalonado em 0,9 da variável "valor1". Esse tipo de construção irá garantir sempre a proporcionalidade da sua construção como um todo, caso essa seja sua intenção.
Existem outras formas de ajustar suas construções usando os comandos "scale([x,y,z])" e "resize(newsize=[x,y,z])" que são responsáveis por escalonar e redefinir os tamanhos dos sólidos, mas o ponto negativo é que são feitos por sólidos e não de maneira geral como usando as codificações com variáveis:


Finalizando, a importância algébrica na construção de modelos geométricos permite você abstrair melhor outras situações e não ficar na dependência de valores numéricos. A partir de agora é com você. Passe a fazer suas construções em função de variáveis e com o tempo você verá que é muito mais prático. Deixe nos comentários abaixo suas impressões e até a próxima!

segunda-feira, 21 de outubro de 2019

OpenSCAD: Como colorir e escrever em objetos

Prototipar objetos também exige um grau de criatividade que perpassa pelo uso de escritas e de cores. Embora no modelamento geométrico a cor utilizada não irá ser necessariamente a utilizada na impressão final (já que depende do filamento usado), ter o objeto colorido na área de construção do OpenSCAD já dá uma boa noção de como ele ficará (uso apenas no virtual). Assim como, a possibilidade de escrita ajuda a estilizar o objeto e deixar ele com a aparência de algo único.
Em primeiro lugar para para colorir um objeto, podemos usar três possibilidades diferentes, todas elas usando a nomenclatura de cores (link SVG Color List: https://www.w3.org/TR/css-color-3/#svg-color):



  • Nome por extenso em inglês: usando o comando "color ("nome da cor")" (destacado em vermelho);
  • Nomenclatura Hex RGB: usando o comando "color ("nomenclatura HEX RGB")" (destacado em laranja);
  • Valor decimal: usando o comando "color ([ R/255, G/255, B/255 ]), onde o R, G, B devem ser substituídos pelos valores decimais de coloração (destacado em azul).

Para escrever textos no OpenSCAD é bem simples. Basta apenas escrever o seguinte código "text ("digite seu texto")". Agora, se você quiser incrementar o seu texto com cores diferentes ou até mover ele de posição, o código abaixo é um exemplo perfeito de como é possível fazer isso:


Todos os códigos aqui utilizados podem ser baixados deste link: https://drive.google.com/drive/folders/1m0nQDvmQA8tD8c1OdPT4Md-YtH7C75t3?usp=sharing. Assim finalizamos esse post e agora é com você. Deixe nos comentários abaixo suas dúvidas e construções usando o OpenSCAD. Até a próxima! 

quinta-feira, 17 de outubro de 2019

Projeção de sólidos no OpenSCAD

Podemos entender como uma projeção, a sombra que o sólido geométrico sobre um plano. No OpenSCAD isso é possível usando o comando "projection ()". Veja abaixo duas possibilidades de uso de projeção em um sólido formado pela diferença entre um cubo e uma esfera:


Como podemos ver acima, a sombra formada nas projeções assume duas formas diferentes:
  • Projeção de todos os pontos em Z: nesse caso a projeção leva em conta a visão de todos os pontos no eixo Z e funciona como se uma luz projetasse sua sombra do alto do eixo positivo em Z. A programação é dada por:      

  • Projeção somente dos pontos em Z igual a zero: nesse caso é levado em consideração somente o formato do sólido em Z=0 e é realizada a projeção com base nisso. Sua programação é dada por:   


Nem sempre o sólido está na posição que você quer para obter a projeção, por isso a possibilidade de rotacionar o sólido precisa ser cogitada. Usando o comando "rotate([x,y,z])" onde os valores x,y,z são os ângulos de rotação para o seu sólido, teremos um novo formato de projeção (no caso abaixo foi rotacionado 45 graus no eixo X):


Com isso temos o básico para trabalhar com projeções que são muito importantes na Geometria Descritiva. Agora é a sua vez, comece a construir seus objetos e faça as projeções necessárias, depois deixe nos comentários abaixo as suas impressões. Até a próxima!

quarta-feira, 16 de outubro de 2019

Operações boleanas no OpenSCAD: a união, a diferença e a intersecção em sólidos.

Na modelagem 3D existem três tipos principais de operações com sólidos (que no OpenSCAD são denominadas de operações booleanas, se você quiser saber mais pesquise por esse termo na rede): a união, a diferença e a interseção que são totalmente necessárias para você fazer a construção de objetos que se derivem dos sólidos geométricos primitivos. Abaixo, você pode ver as três operações em questão com o uso de dois cilindros (o segundo cilindro sempre está rotacionado em noventa graus):


Para chegar nessas três construções usou-se as seguintes definições e códigos:
  • União: operação definida como a soma dos volume dos dois cilindros formando uma figura única e que pode ser obtida pelo seguinte código:

  • Diferença: operação definida como a subtração dos volumes do cilindros, lembrando que nessa operação a ordem de qual objeto é subtraído de outro faz diferença. Recomenda-se testar o código abaixo com a ordem trocada dos códigos dos cilindros para compreender melhor:

  • Interseção: operação definida com o volume em comum entre os dois cilindros e se desprezando os volumes que não estão em comum:


Como podemos ver acima a estrutura dos códigos é semelhante mudando apenas o nome da operação. Mas e se caso precisássemos combinar mais do que uma dessas operações? Nesse caso precisamos escrever o código na ordem de construção, respeitando a ideia de construção de conjuntos, ou seja, a ordem das chaves é muito importante, veja o exemplo abaixo:


Observando a imagem acima, temos primeiramente a união do cilindro e do paralelepípedo (cube) para criar uma peça única todos dentro de uma unica chave (destacado em vermelho) e, em seguida, é realizada a diferença entre essa peça criada com o cilindro responsável pelo furo (destacado em verde):


Por hoje foi isso. Agora você tem as bases mínimas para produzir objetos em 3D que consiste em saber a programação dos sólidos e suas dimensões, como movimentar eles e como fazer operações boleanas. Deixe nos comentários abaixo suas criações e até a próxima!

terça-feira, 15 de outubro de 2019

Extrusão Linear: transformando figuras 2D pro 3D.

Extrusão linear é uma operação de modelagem na qual pega-se um polígono 2D como entrada (eixos X e Y) e o estende na terceira dimensão (eixo Z) obtendo-se uma forma 3D. Na industria tem-se uma aplicação muito grande, podendo dar-se o exemplo a barra de suporte abaixo:


Vamos começar fazendo uma extrusão linear a partir de uma construção 2D, mais precisamente um círculo unido a um paralelogramo e realizado a diferença em relação a um hexágono em seu interior (destacado o código em vermelho). Veja abaixo a diferença entre a construção 2D e a construção 3D após a extrusão linear (lembrando que o código destacado em verde é o responsável por isso): 



Para o exemplo acima foi usado o seguinte código:



Além de estender em Z, a extrusão linear pode criar torções em torno desse eixo para produzir molas, barras roscadas, dentre outras possibilidades. Veja no exemplo abaixo, o que a alteração do valor na opção "twist=250" produz (note que foi retirado a união do exemplo acima para ficar mais simples de ver a torção hexagonal):



Outro exemplo possível, é usando a diferença em dois círculos e a opção de valor "twist=3000" criando uma mola em torno do eixo Z. Note que foi realizado uma translação, pois é exatamente esse distanciamento do eixo que promove esse efeito radial: 


Todos os códigos aqui utilizados podem ser encontrados no seguinte link: https://drive.google.com/drive/folders/1JFNPK373YLqBkcLyCeNMIds4Nvvb-IgP?usp=sharing. Outra dica também é que colocando o sinal de negativo no twist, temos como resultado a inversão do sentido da extrusão linear. Por hoje é isso, agora é com você, quais inovações utilizando a extrusão linear você pode incrementar em seus projetos de modelamento? Deixe nos comentários abaixo e até a próxima!

segunda-feira, 11 de março de 2019

Movendo sólidos no OpenScad

Que tal construir uma mesa no OpenScad para posterior impressão? Essa será nossa motivação inicial para aprender a como movimentar sólidos no plano geométrico do OpenScad e para entendermos um nível inicial de programação com o uso do for (é um loop de programação que podemos traduzir como "enquanto").
Para começo de conversa, vamos modelar a mesa de cabeça para baixo de modo a facilitar a sua impressão 3D (então não se assuste com o surgimento de mesas ao contrário, afinal na impressão 3D ter uma boa base de aderência é fundamental).


Para construir o tablado usaremos um paralelepípedo fino que será definido pela linha de comando "cube" com valores de dimensão (40,40,5) e os pés da mesa serão construídos com quatro cilindros definidos pela linha de comando "cylinder" com valores de dimensão (30,2,2) e um número de faces igual a 100 (lembrando que quanto maior o valor, mais o cilindro será arredondado). Porém, temos um problema: como posicionar cada um desses sólidos no plano geométrico? A solução mais simples é o uso do "translate" (podemos entender como translação, ou posicionamento em valores de X,Y e Z):



Como podemos observar no código acima, o "translate" é usado antes do sólido construído e o posiciona pegando o ponto central do mesmo, por isso, ao invés de utilizar o ponto em X=20, usou-se o X=18, pois o cilindro possui raio 2, que é exatamente o seu centro. No caso do "cube" foi usado um "center=true" que nada mais é do que um "translate" no ponto zero de todos os eixos (0,0,0).
Existe uma segunda possibilidade de uso do "translate", mas ao invés de repetir o comando quatro vezes, é possível fazer o uso do loop (repetição) "for" e economizar na programação, como podemos ver abaixo:



Basicamente, temos um "enquanto" (for) que tem valores de i variando de 0 a 3 e que serão multiplicados dentro de um "rotate" no eixo x com base no valor 90, ou seja, teremos as posições, 0, 90, 180 e 270, que são os quatro cantos da mesa. Confira abaixo uma figura exemplificando isso:


Com essas duas propostas de movimentos baseadas no "translate" você poderá construir objetos mais complexos. Agora é com você. Que outras construções são possíveis de serem realizadas no OpenScad? Deixe nos comentários os códigos e fotos das suas construções e até a próxima.

sexta-feira, 8 de março de 2019

A Geometria Analítica no OpenScad

Modelar no OpenScad é diferente de modelar usando o TinkerCad. Além de precisar usar comandos ao invés de manipulação de objetos, existe a necessidade de saber alguns conceitos da Geometria Analítica (ao invés de trabalhar com o comprimentos das formas usando o sistema de medidas, teremos o uso de coordenadas cartesianas). E esse é nosso objetivo hoje: dar os primeiros passos no mundo do OpenScad que, para produção de peças com muito detalhamento, é superior a diversos outros CADs disponíveis.
A primeira coisa é entender o que é um plano em R³ (plano com três dimensões: X, Y  e Z), cuja representação abaixo, mostra cada um dos eixos com seus respectivos pontos positivos e negativos, todos saindo da origem com valor zero (para saber mais, consulte: https://mundoeducacao.bol.uol.com.br/matematica/dimensoes-espaco.htm).


Para construir um cubo de lado 20 no OpenScad temos algumas formas de escrever o código. A primeira delas é apontando os valores dos lados do cubo em X, Y e Z (copie o código abaixo, cole ele no OpenScad e aperte F5 para gerar a forma geométrica):



Note que, por ser um cubo, obrigatoriamente todos os lados tem de ser idênticos (caso tenha valores diferenciados nos eixos teremos um paralelepípedo, experimente isso!), por isso podemos resumir esse código como:



Para gerar um esfera de raio 3 podemos usar o código abaixo, onde o valor de r é o valor de raio e o valor $fn é o valor do número de faces de modo que valores mais altos deixam a esfera com uma aparência mais circular e valores menores fica mais poligonal:




É possível construir um cilindro de altura 40 e raio 20 (note que no cilindro temos dois raios, que são os dois valores 20 iguais. O que aconteceria caso os valores fosse diferentes?) com o seguinte comando:





Quando observamos as construções acima, notamos como o entendimento dos pontos no plano tridimensional faz toda a diferença para o correto uso dos valores nos comandos do OpenScad. E isso é a base para aprendizagem da Geometria Analítica. Se você quiser ver outros exemplos  prontos no OpenScad, clique em File/Examples e poderá usar diversas construções prontas e fazer alterações nelas para ir entendendo as especificidades desse software. Curtiu? Deixe nos comentários suas descobertas e produções. Até a próxima!

quinta-feira, 22 de março de 2018

Entendendo o Espaço de Minkowski (Topologia) - Parte 03


Mas e o Minkowski? Depois de todo esse percurso chegamos ao ponto de utilizar a ferramenta Minkowski presente no OpenSCAD de forma mais satisfatória. Observe o exemplo abaixo:


Temos um triângulo (em vermelho) e dentro dele teremos um círculo (em azul) se deslocando e fazendo os preenchimentos necessários. Note que nessa simulação, as pontas do triângulo não podem ser alcançadas pelo círculo formando a figura que aparece abaixo (em rosa). Isso é a operação de Minkowski.
É possível extrapolar para outras formas geométricas, confira como fica um hexágono:


E assim é possível brincar com diversas formas geométricas e “lapidar” suas pontas. Que tal testar com as mais diferentes formas geométricas? Que resultados você espera obter? Deixe nos comentários abaixo as suas experiências.

Entendendo o Espaço de Minkowski (Topologia) - Parte 02


Agora que entendemos o básico sobre a construção de um polígono regular (Parte 01) é hora de avançarmos para alguns procedimentos mais estéticos antes de entrarmos propriamente no Minkowski. Agora iremos aprender a chamar por comando a forma desejada, pois isso abre campo para a construção de várias formas ao mesmo tempo e podendo compor objetos maiores:


Perceba que foi definido em “module” o nome de como vai ser chamada a entrada de comando e em seguida a definição de como ele é construído com as demais linhas de comando. Faça algumas alterações em “poligono (4);”, substituindo o 4 por 6, 7 e 10. Que figuras obtemos?
Para construir outras figuras geométricas é necessário que elas não se sobreponham, por isso um comando de mudança de coordenada é necessário. Para isso utilizaremos o “translate([0,0,0])” ao lado do comando de cada forma geométrica construída e substituíndo os zeros por valores nos eixos x, y e z respectivamente:


No caso, acima além do quadrado, foi construído um octógono (na forma 3Dl) e a segunda forma foi deslocada em x e y para a coordenada (15,15). Mas e se quisermos colorir cada uma delas? Utilize para cada uma das formas geométricas o comando “color([0,0,0]), onde cada um dos valores numéricos correspondem às entradas do RGB (Red, Green, Blue) que conforme o valor 0 (não) e 1 (sim) irão formar as demais cores por composição (se quiser saber mais fica a sugestão e leitura: http://www.ufrgs.br/engcart/PDASR/formcor.html#2). 


Na programação acima temos a repetição das construções anteriores, mas agora é designada o valor 1 em cada entrada para formar as cores azul e vermelha? E as demais cores, como ficaria a programação para elas? Que tal construir um lindo mosaico e impressionar geral? Que cor obtemos ao usar “color([0.5,0.75,0.5])”? Que tal testar e deixar nos comentários abaixo o que você encontrou?

Entendendo o Espaço de Minkowski (Topologia) - Parte 01


A muito grosso modo, o Espaço de Minkowski é uma configuração que modela um plano de 3 dimensões em um outro de 1, fazendo uma composição nova. Falando em uma linguagem mais simples e voltada para a ferramenta de CAD, vamos criar uniões entre duas formas diferentes de forma a deformar uma delas em função da outra, sendo que no nosso caso mais prático, podemos arredondar objetos. No exemplo abaixo, temos duas formas distintas, um cilindro (pode ser encarado com círculo também) e um cubo (pode ser encarado como um quadrado também) e quando contornamos o cilindro ao redor do cubo obtemos um cubo com bordas arredondadas. Isso é a operação de Minkowski que veremos por meio da ferramenta de CAD, o OpenSCAD.


Primeiramente precisamos entender como construir uma forma qualquer a partir de um único comando (no caso aqui explicado iremos utilizar o comando para a Geometria Plana, sendo que para a Espacial você pode pesquisar em: http://www.openscad.org/cheatsheet/index.html?version=2015.03):


Os comandos acima mostrados utilizam o “circle(r = 10, $fn = 5);’’ onde r é o tamanho do raio e o fn é a quantidade de lados que meu polígono vai ter. Mas por que o comando é chamado de círculo (tradução do comando) e não de polígono. O que o círculo tem em comum a todos os polígonos? Descubra isso para enriquecer sua experiência matemática.
Com isso se substituirmos o valor 5 (do fn) por 8, teremos ao invés de uma pentágono um octágono (aperte F5 para ver a visualização na tela). E o que acontece se substituirmos por 360? Veja o que acontece e deixe nos comentários abaixo suas experiências.

Entendendo o Hull


O Hull é responsável por fazer a união de duas peças diferentes ligando suas extremidades (é recomendado você dar uma olhada nos posts sobre Minkowski antes para entender melhor). Do ponto de vista puramente matemático é algo bem complexo de se entender, por isso utilizaremos uma ferramenta de CAD para deixar bem lúdico.
Observe que no comando abaixo iremos utilizar tudo o que foi visto acima e a única novidade é o comando “hull()” responsável por essa operação. Sem ele teríamos apenas um pentágono e um hexágono separados, que inclusive são ilustrados pelas cores azul e vermelha com a repetição de comandos logo após a definição de “module poligono()”:


O Hull na Geometria plana não é tão atrativo, porém quando transportamos ele para a Geometria Espacial temos um impacto visual bacana. Veja como fica dois cubos 5x5 e utilizamos o hull nelas:


Note que tem existe uma repetição de comandos após o comentário em verde que é apenas para ressaltar as duas formas básicas iniciais. Se retirar isso, vai ficar a mesma coisa,m as sem o destaque. Outro detalhe é como foram dados os nomes de coloração, que diferem ligeiramente do padrão visto anteriormente. Quais outras cores podemos usar nesse sentido? É possível fazer hull com outros tipos de polígonos? Bora testar e deixar os seus resultados nos cometários abaixo.

Como não perder nenhum compromisso: Meu App Agenda

No nosso dia a dia a agenda é um instrumento de grande importância que as pessoas utilizam para fazer anotações de compromissos ou informaçõ...