Open Source Python Library för 3D CAD-filformat
Gratis Python CAD-bibliotek för att skapa parametriska 3D CAD-modeller. Det skapar högkvalitativa CAD-format som STEP, AMF och 3MF utöver traditionella STL
Python-biblioteket CadQuery med öppen källkod är ett lättanvänt Python-bibliotek för att bygga parametriska 3D CAD-modeller. Biblioteket är mycket kraftfullt och kan genom att skriva korta skript producera högkvalitativa CAD-modeller i Python-applikationer. Det är också möjligt att anpassa skriptet och göra många olika objekt med ett enda skript. CadQuery-skripten är mycket snabba och kan bygga STL, STEP, AMF och 3MF snabbare än andra tillgängliga bibliotek.
Biblioteket erbjuder avancerade modelleringsförmåga som filéer, kurvlinjära extruder, parametriska kurvor och loft. Det är ett skriptbaserat bibliotek som kan skapa en parametrisk modell som enkelt kan anpassas av slutanvändare. Den skapar 3D-modeller med skript som är så nära som möjligt hur du skulle beskriva objektet för en människa. CadQuery är licensierad under villkoren i Apache Public License, version 2.0.
Det CadQuery-biblioteket är avsiktligt utformat för att vara GUI-fritt, så att det kan användas i tekniska och vetenskapliga applikationer för att programmatiskt skapa 3D-modeller. Om du behöver använda ett GUI kan du överväga Qt-baserad GUI CQ-editor eller Jupyter extension jupyter-cadquery. Det är också möjligt att använda biblioteket tillsammans med andra Python-bibliotek.
Komma igång med CadQuery
Det enklaste sättet att installera CadQuery stabil version är att använda pip. Använd följande kommando för en smidig installation.
Installera CadQuery via pip
pip install cadquery
Du kan ladda ner det kompilerade delade biblioteket från Github-förrådet.
Arbeta med Polygon via Python 3D Library
En polygon är en tvådimensionell form med raka sidor. Polygonal modellering är en metod för att modellera objekt genom att representera eller approximera deras ytor med hjälp av polygonmaskor. Pythonbiblioteket CadQuery med öppen källkod gör det möjligt för mjukvaruutvecklare att skapa polygoner för varje stackpunkt med bara ett par rader Python-kod. Det är mycket fördelaktigt i 3d-skrivare vars firmware inte korrigerar för små hålstorlekar.
Skapa arbetsplan på ansikten via Python 3D Library
Pythonbiblioteket CadQuery med öppen källkod har tillhandahållit komplett stöd för att skapa arbetsplan på ansikten i Python-applikationer. användningen av arbetsplan på detta sätt är en nyckelfunktion i CadQuery. Det befriar användare från att söka positionen för olika funktioner i variabler och gör det möjligt för modellen att ta bort de överflödiga dimensionerna. Användare kan välja ytorna på den resulterande soliden genom att anropa metoden Workplane.faces (). Kom ihåg att som standard beräknas ursprunget för ett nytt arbetsplan genom att göra ett plan från det valda ansiktet och projicera det tidigare ursprunget på det planet.
Skapa arbetsplan på 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
Arbeta med 3D LEGO-klossar via Python
CadQuery-biblioteket har tillhandahållit komplett stöd för att skapa 3D-animationer som representerar legoklossarna i olika storlekar med Python-kommandon. Det är också möjligt att återskapa tegelstenar genom att sammanfoga flera kuber och cylindrar. Vi kan skapa ett sammansatt objekt för att sammanfoga dessa 3D-former i ett enda objekt (tegelsten). Följande exempel visar hur man skapar en vanlig rektangulär Lego(TM)-kloss i alla storlekar. Det är bara knepigt på grund av logiken angående tegelstenens undersida.
Skapa 3D LEGO-klossar 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)