OpenScad Cylinder

OpenScad Cylinder
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 criar um cilindro. Existe um comando de cilindro que você aprenderá os detalhes sobre primeiro. Depois disso, você verá maneiras inovadoras de criar cilindros ao seu gosto. Você também pode tirar cilindros de outras peças para criar coisas mais interessantes. A maioria dos leitores, que vem aqui provavelmente quer ver um cilindro oco ou um tubo de algum tipo. Continue lendo, temos muito 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 faz um cilindro uniforme sólido e nada mais. Você deve observar que o cilindro será de raio padrão e a altura do valor nos parênteses. O comando tem muitas opções, vamos cavar através deles.

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 = true);

Os dois primeiros cilindros no código acima não fazem sentido porque eles não têm altura. Um erro comum é quando você esquece o valor e não parece da maneira que você pretendia. Quando você usa variáveis, a mesma coisa acontece se você usar uma variável indefinida. Nesse caso, a altura, mas verifique o log do console quando você o executar.

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 controle total das dimensões. Este é simples de usar para cones sólidos. Você define os dois raios e a altura e terminou. Você também pode usar o diâmetro se isso melhor lhe combina.

O Centro = Valor True é válido para o eixo Z, deixando o cone até a metade do "solo". O padrão é falso, o que faz com que o fundo do cone termine no "chão", por assim dizer. Você também pode escolher o quão perto as paredes dos cones estão de ser circular com o parâmetro '$ fn'.

Cilindro oco

Ei, espere um minuto! Isso só cria peças sólidas, como faço para fazer furos neles? Você pergunta, obrigado! Eu vou te contar. A resposta está tudo na diferença. O comando que é. Considere o código abaixo, ele contém dois cilindros que são adotados com colchetes encaracolados 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, depois cortou o material da primeira peça usando todas as seguintes peças. Nesse caso, você corta um cilindro de um cilindro. Se você quiser cortar qualquer outra forma, pode fazer isso também. Experimente um cubo ou uma esfera! Observe os efeitos interessantes e às vezes devastadores que o valor $ fn pode ter neste código.

Cone oco

Você também pode fazer isso com um cone, basta usar os valores de raio duplo. Como você está definindo os dois cones, você tem muito controle sobre o resultado final. O cone oco mais simples é apenas dois cones dentro um 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 está coberto no topo, você pode abri -lo simplesmente definindo a segunda altura mais alta que a primeira. Como você tem dois cilindros, você pode mudar qualquer um dos dois. Como exemplo, você pode cortar um buraco reto através dele, mudando 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 ter em mente enquanto continua 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ê aproveita. 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 a parte inferior?

Combinando muitos

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

espessura = 5;
Baser = 30;
TopR = 12;
altura = 50;
União()
// o cone inferior
diferença()
cilindro (r1 = mais base, r2 = topR, h = altura);
cilindro (R1 = Baser -Thickn, R2 = TopR - espessura, H = altura + espessura);

// a bola superior
traduzir ([0, 0, altura])
diferença()
esfera (r = topR);
esfera (r = TopR -Thickn);
traduzir ([0, 0, -topr])
cubo (tamanho = topR*2, centro = true);

A partir do topo, você tem variáveis. Eles são para a espessura, raio da base, raio superior e altura. A declaração da união reúne as peças. Dentro do aparelho, você tem o cone e depois a bola superior. Por estarem dentro da união, eles se tornarão uma peça no final. Você pode fazer ainda mais quando usa muitos cilindros em muitos ângulos.

Fazendo um tubo de ensaio

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

tubr = 20;
TUBL = 80;
espessura = 2;
diferença()
cilindro (r1 = tubr, r2 = tubr, h = tobl);
cilindro (r1 = tubr - espessura, r2 = tubr - espessura, h = tbl);

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

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

Agora, você tem duas peças separadas. O próximo passo é montá -los. Aqui, você pode usar o comando da União. Como o comando de diferença, o sindicato leva todas as peças em ordem. Em 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 = tobl);
cilindro (r1 = tubr - espessura, r2 = tubr - espessura, h = tbl);

// esfera inferior
Traduzir ([0, 0, TUBL])
diferença()
esfera (tubr);
esfera (tubr - espessura);
traduzir ([0, 0, -tubr])
cubo (tamanho = tubr*2, centro = true);


// anel superior
diferença()
cilindro (r = tubr + de espessura, h = espessura);
cilindro (r = tubr, h = espessura);

Aqui nós o projetamos de cabeça para baixo, isso depende de você. Faça o que é conveniente para o caso específico. Você sempre pode girá -lo quando o usar. O anel superior tem bordas nítidas, você pode remediar isso usando um círculo e girado_extrude. Existem outras maneiras de fazer isso, explorar e experimentar!

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

Combinando muitos cilindros

Depois de fazer um tubo de vários cilindros, você também pode conectá -los de maneiras diferentes. Para fazer isso, você pode usar uma união novamente. Digamos que você queira um tubo em um ângulo de quarenta e cinco graus no outro tubo. Para fazer isso, você posiciona o tubo angular na metade do tubo grande.

União()
tubo (50, 4, 300);
Traduzir ([0, 0, TotLength/2]) girar ([45, 0, 0])
tubo (50, 4, 150);

Quando você tenta isso, fica ótimo do lado 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 toda a união uma peça e colocar os cilindros correspondentes depois dela dentro de uma diferença.

diferença()
União()
tubo (50, 4, 300);
Traduzir ([0, 0, TotLength/2]) girar ([45, 0, 0])
tubo (50, 4, 150);


cilindro (r = 50 - 4, h = comprimento tot);
Traduzir ([0, 0, TotLength/2]) girar ([45, 0, 0])
cilindro (r = 50 - 4, h = TotLength/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 pequeno tubo que está inclinado também precisa ser apagado. O comando de tradução move o tubo para cima, ele gira e gira e coloca o cilindro dentro do tubo. De fato, o código é copiado de cima e o tubo é substituído por um cilindro.

Encanamento

Se você quiser fazer mais tubos, 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 Cilindros.Git, no momento da redação, existem apenas esses dois, mas volte frequentemente para ver mais. Você pode ser capaz de criar coisas mais emocionantes.

Dentro de um bloco

Se você pretende fazer um mecanismo de combustão interna, 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 para adicionar. Isso é para outro dia embora.

Módulo Cilindrobloco (
Cylinderr = 3,
Edge = 1,
Numcilindros = 8)

diferença()
Cubo ([Cylinderr * 2 + Edge * 2,
Cylinderr*2*numcylinders + Edge*numcylinders + Edge, 10]);
para (x = [0: 1: numcylinders-1])
Traduzir ([Cylinderr+ Edge, Cylinderr*x*2+ Edge*x+ cilinderr+ Edge, 0]))
cilindro (r = cilinderr, h = 12);

Aqui, você tem um cubo que cresce de acordo com o número de cilindros que deseja dentro do bloco. Todos os valores no módulo são o padrão para que você possa usá -lo sem valores. Para usá -lo, use a instrução 'Use' na parte superior do seu arquivo e adicione o CylinderBlock (Numcylinders = 8). Você pode usar ou omitir qualquer valor, quando você omita, ele levará o padrão. Em suma, o interno do módulo começa com os valores e depois cria um cubo para ser longo o suficiente para caber nos cilindros. Então continua removendo os cilindros com uma declaração para. Graças à declaração para a declaração, você pode fazer um bloco maior ou menor. Para módulos mais avançados, você pode colocar restrições nessa alteração do design quando certos valores são alcançados. Talvez você queira fazer um V se for 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 15 (sem unidades no OpenScad) de comprimento, 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ê verá isso mais tarde. Enquanto um cilindro oco, o código é um pouco mais longo.

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

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

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

Este código cria um meio-círculo que é oco. Uma nota com que você deve ter cuidado é que a tradução é necessária ou você receberá um erro: “Erro: todos os pontos para girateExtrude () devem ter o mesmo sinal de coordenada x (o intervalo é -2.09 -> 20.00) ". Os números dependerão do valor no círculo. Já que isso cria a mesma forma que um cilindro, pode parecer inútil. Não é! O melhor uso deste comando é tornar funcional de forma plana de alguma forma. O manual tem um polígono simples como exemplo, ele cria uma forma redonda onde você pode executar um cinto. Você também pode torcer por aí. 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 no manual mostra um polígono que pode ser útil. O código abaixo pode ser o que você quiser, mas ilustra o poder de fazê -lo dessa maneira.

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

Você pode experimentar a forma do polígono até acertar o seu aplicativo. Se parecer um pouco assustador usando apenas números, você pode criar o perfil em outros programas CAD e importar o resultado do 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 isso. Você também precisa incorporá -lo ao seu design e talvez criar problemas mais complexos do que os cilindros. Encontre maneiras e desafios para sua expansão contínua de conhecimento usando o 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 está coberto neste post é que você pode desenhar coisas em Inkscape e Blender e importá -lo para OpenScad. Exportar do OpenScad para STL e outros formatos é bem suportado e, se você estiver realmente curioso, confira as criações no Thingiverse. Eles têm um pacote de entusiastas contribuindo com as coisas para o seu site.