cafajeste

cilindro openSCAD

cilindro openSCAD
Ao preparar este artigo, eu queria descobrir o que as pessoas têm problemas com o openSCAD. Para minha surpresa, a pergunta mais comum era sobre como criar um cilindro. Há um comando de cilindro sobre o qual você aprenderá os detalhes primeiro. Depois disso, você verá maneiras inovadoras de criar cilindros de acordo com sua preferência. Você também pode retirar cilindros de outras peças para criar coisas mais interessantes. A maioria dos leitores que vêm aqui provavelmente querem ver um cilindro oco ou um tubo de algum tipo. Continue lendo, temos muito reservado para você.

O comando do cilindro

Se você usar a versão mais simples do comando do cilindro, você só precisa de um parâmetro. Isso torna um cilindro sólido e uniforme e nada mais. Você deve notar que aquele cilindro terá um raio padrão e a altura do valor entre parênteses. O comando tem muitas opções, porém, vamos examiná-las.

cilindro (r1 = 20);
cilindro (r1 = 20, r2 = 5);
cilindro (r1 = 20, h = 40);
cilindro (r = 20, h = 40);
cilindro (r1 = 20, r2 = 5, h = 40, centro = verdadeiro);

Os primeiros dois cilindros no código acima não fazem sentido porque não têm altura. Um erro comum é quando você esquece o valor e ele não se parece com o que você pretendia. Quando você usa variáveis, o mesmo acontece se você usa uma variável indefinida. Neste caso, para altura, mas verifique o registro do console ao executá-lo.

Um cone

O terceiro é um cone, o motivo é que o valor r2 tem um tamanho padrão. Experimente o quarto e veja o que acontece. O último cria um cone onde você tem total controle das dimensões. Este é simples de usar para cones sólidos. Você define os dois raios e a altura e pronto. Você também pode usar o diâmetro se for mais adequado para você.

O valor center = true é válido para o eixo z, deixando o cone a meio caminho do "solo". O padrão é falso, o que faz com que a parte inferior do cone acabe no "chão", por assim dizer. Você também pode escolher o quão perto as paredes dos cones estão de serem circulares com o parâmetro '$ fn'.

Cilindro oco

Ei espere um minuto! Isso só cria peças sólidas, como faço orifícios nelas? Voce pergunta obrigado! Eu vou te dizer. A resposta está toda na diferença. O comando que é. Considere o código abaixo, ele contém dois cilindros que estão entre colchetes e o comando de diferença.

diferença()
cilindro (r = 30, h = 40);
cilindro (r = 28, h = 41);

Simplificando, quando você tem várias peças, então você corta o material da primeira peça usando todas as peças a seguir. Neste caso, você corta um cilindro de um cilindro. Se você quiser cortar qualquer outra forma, você também pode fazer isso. Experimente um cubo ou uma esfera! Observe os efeitos interessantes e às vezes devastadores que o valor $ fn pode ter sobre este código.

Cone oco

Você também pode fazer isso com um cone, basta usar os valores de raio duplo. Já que você está definindo os dois cones, você tem muito controle sobre o resultado final. O cone oco mais simples tem apenas dois cones um dentro do outro com uma espessura para o material.

diferença()
cilindro (r1 = 30, r2 = 12, h = 50);
cilindro (r1 = 25, r2 = 7, h = 45);

Este cone é coberto na parte superior, você pode abri-lo simplesmente definindo a segunda altura mais alta do que a primeira. Uma vez que você tem dois cilindros, você pode alterar qualquer um dos dois. Como exemplo, você pode fazer um furo reto através dele trocando o segundo cilindro. Você também pode escolher um cubo, mas esteja ciente de que isso pode cortar muito material do cone.

Pirâmide

Isso pode parecer irrelevante, mas é um truque útil que você precisa manter em mente ao continuar usando o openSCAD. Todos os cilindros e outros elementos são uma aproximação de uma forma. Você leu sobre o parâmetro $ fn anteriormente, aqui você tira vantagem dele. Com isso em mente, você pode pensar: Uma pirâmide é um cone com quatro lados. Correto! use $ fn = 4 e você terá um cone com quatro lados, o que significa uma pirâmide.

diferença()
cilindro (r1 = 30, r2 = 12, h = 40, $ fn = 4);
cilindro (r1 = 25, r2 = 7, h = 35, $ ​​fn = 4);

O cilindro interno corta o mesmo cilindro que o externo. Até você começar a brincar com o parâmetro $ fn. Para se familiarizar com os efeitos deste parâmetro, tente fazer um banquinho de quatro patas. Como o parâmetro $ fn afeta o resultado? Além disso, como você pode cobrir a parte superior ou inferior?

Combinando muitos

Para usar muito os cilindros, você deve aprender a combinar muitos deles. O resultado final pode ser muito complexo e às vezes até útil. Colocar um topo em seu cilindro é uma opção. Para fazer isso bem, você deve começar a usar variáveis. Crie o hábito de colocá-los no topo do que você está projetando. Torna mais fácil fazer módulos mais tarde.

espessuran = 5;
básico = 30;
topr = 12;
altura = 50;
União()
// O cone inferior
diferença()
cilindro (r1 = baser, r2 = topr, h = altura);
cilindro (r1 = espessura da base, r2 = topo - espessura, h = altura + espessura);

// A bola de cima
traduzir ([0, 0, altura])
diferença()
esfera (r = topr);
esfera (r = topr -espessura);
traduzir ([0, 0, -topr])
cubo (tamanho = topr * 2, centro = verdadeiro);

Começando do topo, você tem variáveis. Eles são para a espessura, raio da base, raio superior e altura. A declaração do sindicato junta as peças. Dentro das chaves, você tem o cone e, em seguida, a bola superior. Por estarem dentro do sindicato, eles se tornarão uma só peça no final. Você pode fazer ainda mais quando usa muitos cilindros em muitos ângulos.

Fazendo um tubo de ensaio

Partindo dos cones, faça um tubo de ensaio. Primeiro, você precisa considerar quais formas fazem um tubo de ensaio. A parte principal é um cilindro, nada extravagante, apenas a diferença regular entre dois cilindros. Se você definir o comprimento como uma variável, você pode usar esse valor como uma referência. Você precisa saber onde o tubo termina e se torna a semiesfera na parte inferior. Você também usará o raio do tubo para definir a esfera.

tubr = 20;
tubl = 80;
espessuran = 2;
diferença()
cilindro (r1 = tubr, r2 = tubr, h = tubl);
cilindro (r1 = tubr - espesso, r2 = tubr - espesso, h = tubl);

Experimente e você terá apenas um cilindro simples, para fazer todo o tubo você precisa derretê-lo junto com a meia esfera. Não há meia-esfera no openSCAD padrão, você deve torná-lo. Use a diferença entre duas esferas para criar uma esfera oca e, em seguida, remova outro cubo que corta a esfera.

diferença()
esfera (tubr);
esfera (tubr - espessura);
traduzir ([0, 0, -tubr])
cubo (tamanho = tubr * 2, centro = verdadeiro);

Agora, você tem duas peças separadas. A próxima etapa é colocá-los juntos. Aqui, você pode usar o comando union. Como o comando de diferença, a união leva todas as peças em ordem. Na união, a ordem não é tão importante, pois é uma adição. O código ficará um pouco feio porque não usamos módulos aqui.

União()
// Tubo Principal
diferença()
cilindro (r1 = tubr, r2 = tubr, h = tubl);
cilindro (r1 = tubr - espesso, r2 = tubr - espesso, h = tubl);

// Esfera inferior
traduzir ([0, 0, tubl])
diferença()
esfera (tubr);
esfera (tubr - espessura);
traduzir ([0, 0, -tubr])
cubo (tamanho = tubr * 2, centro = verdadeiro);


// Anel superior
diferença()
cilindro (r = tubr + espesso, h = espesso);
cilindro (r = tubr, h = espesso);

Aqui nós projetamos de cabeça para baixo, isso é com você. Faça o que for conveniente para o caso particular. Você sempre pode girá-lo ao usá-lo. O anel superior tem bordas afiadas, você pode corrigir isso usando um círculo e girar_extrudá-lo. Existem outras maneiras de fazer, explorar e experimentar!

rotate_extrude (convexidade = 10, $ fn = 100)
traduzir ([tubr, 0, 0])
círculo (r = espesso, $ fn = 100);

Combinando muitos cilindros

Depois de fazer um tubo com vários cilindros, você também pode querer conectá-los de maneiras diferentes. Para fazer isso, você pode usar um sindicato novamente. Digamos que você queira um tubo em um ângulo de quarenta e cinco graus com o outro tubo. Para fazer isso, você posiciona o tubo angular a meio caminho do tubo grande.

União()
tubo (50, 4, 300);
translate ([0, 0, totlength / 2]) rotate ([45, 0, 0])
tubo (50, 4, 150);

Quando você tenta isso, parece ótimo de fora. Quando você olha para dentro, você vê que tem os dois tubos inteiros. O curto está bloqueando o fluxo no tubo longo. Para remediar isso, você precisa apagar os dois cilindros dentro dos tubos. Você pode considerar a união inteira como uma peça e colocar os cilindros correspondentes depois dela dentro de uma diferença.

diferença()
União()
tubo (50, 4, 300);
translate ([0, 0, totlength / 2]) rotate ([45, 0, 0])
tubo (50, 4, 150);


cilindro (r = 50 - 4, h = comprimento total);
translate ([0, 0, totlength / 2]) rotate ([45, 0, 0])
cilindro (r = 50 - 4, h = comprimento total / 2);

Como você pode ver, o primeiro cilindro se estende por todo o comprimento do tubo. Isso apagará qualquer coisa dentro do tubo grande, mas o tubo pequeno que está inclinado também precisa ser apagado. O comando de translação move o tubo para cima até a metade, ele então gira e coloca o cilindro dentro do tubo. Na verdade, o código é copiado de cima e o tubo é substituído por um cilindro.

Encanamento

Se você quiser fazer mais tubos, você pode usar o módulo no exemplo acima e começar a expandir. O código está disponível em https: // github.com / matstage / openSCAD-Cylinders.git, no momento em que este artigo foi escrito, havia apenas esses dois, mas volte sempre para ver mais. Você pode ser capaz de criar coisas mais interessantes.

Dentro de um bloco

Se você pretende fazer um motor de combustão interna, você precisa de um orifício cilíndrico em uma peça sólida. Abaixo está um exemplo, o mais simples possível, para canais de resfriamento e pistões há muito mais a adicionar. Isso é para outro dia embora.

bloco de cilindros do módulo (
cilindro R = 3,
Edge = 1,
numCylinders = 8)

diferença()
cubo ([cilindroR * 2 + Edge * 2,
cilindroR * 2 * numCilindros + Borda * numCilindros + Borda, 10]);
para (x = [0: 1: numCylinders-1])
translação ([cilindroR + Borda, cilindroR * x * 2 + Borda * x + cilindroR + Borda, 0])
cilindro (r = cilindro R, h = 12);

Aqui, você tem um cubo que cresce de acordo com o número de cilindros que você deseja dentro do bloco. Todos os valores no módulo são o padrão, então você pode usá-lo sem valores. Para usá-lo, use o 'use 'declaração no topo de seu arquivo e, em seguida, adicione cilindroblock (numCylinders = 8). Você pode usar ou omitir qualquer valor, ao omiti-los, ele tomará o padrão. Em suma, o interior do módulo começa com os valores e, em seguida, cria um cubo longo o suficiente para caber nos cilindros. Em seguida, continua removendo os cilindros com uma instrução for. Graças à instrução for, você pode fazer um bloco maior ou menor. Para módulos mais avançados, você pode colocar restrições que alterem o design quando certos valores forem alcançados. Talvez você queira torná-lo um V se tiver 8 ou mais cilindros.

Extrudando de uma forma plana

Outra maneira de criar um cilindro é fazer um círculo e extrudá-lo. Um cilindro sólido tem apenas duas linhas:

linear_extrude (15)
círculo (20);

Isso cria um comprimento de 15 (sem unidades no openSCAD), com um raio de 20. Você pode usar o diâmetro usando o parâmetro d. Apenas criar um cilindro não é muito útil, mas você pode usar a mesma técnica para qualquer forma 2D. Você vai ver isso mais tarde. Embora seja um cilindro oco, o código é um pouco mais longo.

linear_extrude (15)
diferença()
círculo (20);
círculo (18);

Este é o mesmo, mas, como fizemos anteriormente, você remove o círculo central. Você também pode dobrá-lo em um círculo com a versão rotate_extrude. Isso é ótimo para fazer donuts, a versão mais simples parece um.

rotate_extrude (ângulo = 180, convexidade = 10)
traduzir ([30,0,0])
diferença()
círculo (20);
círculo (10);

Este código cria um semicírculo vazio. Uma nota com a qual você deve ter cuidado é que a tradução é necessária ou você obterá um erro: “ERROR: todos os pontos para rotateextrude () devem ter o mesmo sinal de coordenada X (o intervalo é -2.09 -> 20.00) ”. Os números vão depender do valor no círculo. Uma vez que isso cria a mesma forma de um cilindro, pode parecer inútil. Não é! O melhor uso deste comando é tornar a forma plana funcional de alguma forma. O manual tem um polígono simples como exemplo, ele cria uma forma redonda onde você pode passar um cinto. Você também pode torcer. O código abaixo cria um saca-rolhas.

traduzir ([- 80,0,0])
linear_extrude (80, torção = 900, escala = 2.0, fatias = 100)
traduzir ([2, 0, 0])
quadrado (10);

O exemplo do manual mostra um polígono que pode ser útil. O código abaixo pode ser o que você quiser, mas ilustra o poder de fazer isso dessa maneira.

traduzir ([0, -80, 0])
rotate_extrude (ângulo = 275)
traduzir ([12,3,2])
polígono (pontos = [[0,0], [20,17], [34,12], [25,22], [20, 30]]);

Você pode experimentar com a forma do polígono até acertar para a sua aplicação. Se parecer um pouco assustador usar apenas números, você pode criar o perfil em outros programas CAD e importar o resultado dxf usando o comando import ().

Conclusão

Fazer um cilindro é simples, mas apenas o início do processo. A parte complicada é fazer algo útil com ele. Você também precisa incorporá-lo ao seu design e talvez criar questões mais complexas do que os cilindros. Encontre caminhos e desafios para sua expansão contínua de conhecimento usando openSCAD. Lembre-se de usar a documentação e apoiar-se em outro software quando não puder ser facilmente alcançado com números e tal. Algo que não foi abordado neste artigo é que você pode desenhar coisas no Inkscape e no Blender e importá-las para o openSCAD. Exportar de openSCAD para stl e outros formatos é bem suportado e se você estiver realmente curioso, verifique as criações no Thingiverse. Eles têm um grupo de entusiastas contribuindo com coisas para o site deles.

Como usar o AutoKey para automatizar jogos Linux
AutoKey é um utilitário de automação de desktop para Linux e X11, programado em Python 3, GTK e Qt. Usando sua funcionalidade de script e MACRO, você ...
Como mostrar o contador de FPS em jogos Linux
Os jogos Linux tiveram um grande impulso quando a Valve anunciou o suporte Linux para o cliente Steam e seus jogos em 2012. Desde então, muitos jogos ...
Como baixar e jogar Sid Meier's Civilization VI no Linux
Introdução ao jogo Civilization 6 é uma versão moderna do conceito clássico introduzido na série de jogos Age of Empires. A ideia era bastante simples...