Biblioteca Python de código aberto para formatos de arquivo CAD 3D
Biblioteca Python CAD gratuita para criar modelos CAD 3D paramétricos. Ele cria formatos CAD de alta qualidade como STEP, AMF e 3MF, além do tradicional STL
A biblioteca Python de código aberto CadQuery é uma biblioteca Python fácil de usar para construir modelos CAD 3D paramétricos. A biblioteca é muito poderosa e, ao escrever scripts curtos, pode produzir modelos CAD de alta qualidade dentro de aplicativos Python. Também é possível personalizar o script e fazer muitos objetos diferentes usando um único script. Os scripts CadQuery são muito rápidos e podem construir STL, STEP, AMF e 3MF mais rápido do que outras bibliotecas disponíveis.
A biblioteca oferece habilidades avançadas de modelagem, como filetes, extrusões curvilíneas, curvas paramétricas e lofts. É uma biblioteca baseada em script que pode criar um modelo paramétrico que pode ser facilmente personalizado pelos usuários finais. Ele cria modelos 3D com scripts que são o mais próximo possível de como você descreveria o objeto para um ser humano. CadQuery é licenciado sob os termos da Apache Public License, versão 2.0.
Essa biblioteca CadQuery foi projetada deliberadamente para ser sem GUI, de modo que possa ser usada em aplicativos científicos e de engenharia para criar modelos 3D programaticamente. Se você precisar usar uma GUI, considere o GUI CQ-editor baseado em Qt ou a extensão Jupyter jupyter-cadquery. Também é possível usar a biblioteca junto com outras bibliotecas Python.
Introdução ao CadQuery
A maneira mais fácil de instalar a versão estável do CadQuery é usando o pip. Por favor, use o seguinte comando para uma instalação suave.
Instalar CadQuery via pip
pip install cadquery
Você pode baixar a biblioteca compartilhada compilada do repositório Github.
Trabalhar com polígono via biblioteca Python 3D
Um polígono é uma forma bidimensional com lados retos. A modelagem poligonal é uma abordagem para modelar objetos representando ou aproximando suas superfícies usando malhas poligonais. A Biblioteca Python de código aberto CadQuery permite que os desenvolvedores de software criem polígonos para cada ponto de pilha com apenas algumas linhas de código Python. É muito benéfico em impressoras 3D cujo firmware não corrige para tamanhos de furos pequenos.
Crie planos de trabalho em faces por meio da biblioteca Python 3D
A biblioteca Python de código aberto CadQuery oferece suporte completo para a criação de planos de trabalho em faces dentro de aplicativos Python. o uso de planos de trabalho dessa maneira é um recurso-chave do CadQuery. Ele libera os usuários de procurar a posição de vários recursos em variáveis e permite que o modelo exclua as dimensões redundantes. Os usuários podem selecionar as faces do sólido resultante chamando o método Workplane.faces (). Lembre-se de que, por padrão, a origem de um novo plano de trabalho é calculada criando um plano a partir da face selecionada e projetando a origem anterior nesse plano.
Criando planos de trabalho em faces via Python
result = cq.Workplane("front").box(2, 3, 0.5) # make a basic prism
result = result.faces(">Z").workplane().hole(0.5) # find the top-most face and make a hole
Trabalhando com peças LEGO 3D via Python
A biblioteca CadQuery fornece suporte completo para a criação de animação 3D representando os tijolos Lego em tamanhos diferentes usando comandos Python. Também é possível recriar tijolos juntando vários cubos e cilindros. Podemos criar um objeto composto para unir essas formas 3D em um único objeto (tijolo). O exemplo a seguir demonstra como gerar um tijolo Lego(TM) retangular regular de qualquer tamanho. Só é complicado por causa da lógica em relação à parte de baixo do tijolo.
Crie peças de LEGO 3D via Python
#####
# Inputs
######
lbumps = 6 # number of bumps long
wbumps = 2 # number of bumps wide
thin = True # True for thin, False for thick
#
# Lego Brick Constants-- these make a lego brick a lego :)
#
pitch = 8.0
clearance = 0.1
bumpDiam = 4.8
bumpHeight = 1.8
if thin:
height = 3.2
else:
height = 9.6
t = (pitch - (2 * clearance) - bumpDiam) / 2.0
postDiam = pitch - t # works out to 6.5
total_length = lbumps*pitch - 2.0*clearance
total_width = wbumps*pitch - 2.0*clearance
# make the base
s = cq.Workplane("XY").box(total_length, total_width, height)
# shell inwards not outwards
s = s.faces("Z").workplane(). \
rarray(pitch, pitch, lbumps, wbumps, True).circle(bumpDiam / 2.0) \
.extrude(bumpHeight)
# add posts on the bottom. posts are different diameter depending on geometry
# solid studs for 1 bump, tubes for multiple, none for 1x1
tmp = s.faces(" 1 and wbumps > 1:
tmp = tmp.rarray(pitch, pitch, lbumps - 1, wbumps - 1, center=True). \
circle(postDiam / 2.0).circle(bumpDiam / 2.0).extrude(height - t)
elif lbumps > 1:
tmp = tmp.rarray(pitch, pitch, lbumps - 1, 1, center=True). \
circle(t).extrude(height - t)
elif wbumps > 1:
tmp = tmp.rarray(pitch, pitch, 1, wbumps - 1, center=True). \
circle(t).extrude(height - t)
else:
tmp = s
# Render the solid
build_object(tmp)