Atvirojo kodo Python biblioteka 3D CAD failų formatams
Nemokama Python CAD biblioteka, skirta parametriniams 3D CAD modeliams kurti. Sukurkite aukštos kokybės CAD formatus, tokius kaip STEP, AMF ir 3MF, be tradicinių STL
Atvirojo kodo Python biblioteka CadQuery yra lengvai naudojama Python biblioteka, skirta parametriniams 3D CAD modeliams kurti. Biblioteka yra labai galinga ir rašant trumpus scenarijus gali sukurti aukštos kokybės CAD modelius Python programose. Taip pat galima tinkinti scenarijų ir sukurti daugybę skirtingų objektų naudojant vieną scenarijų. „CadQuery“ scenarijai yra labai greiti ir gali sukurti STL, STEP, AMF ir 3MF greičiau nei kitos galimos bibliotekos.
Biblioteka siūlo pažangias modeliavimo galimybes, tokias kaip filė, kreiviniai išspaudimai, parametrinės kreivės ir palėpės. Tai scenarijais pagrįsta biblioteka, kuri gali sukurti parametrinį modelį, kurį galutiniai vartotojai gali lengvai pritaikyti. Jis sukuria 3D modelius su scenarijais, kurie yra kuo artimesni tam, kaip apibūdintumėte objektą žmogui. „CadQuery“ licencijuota pagal „Apache“ viešosios licencijos 2.0 versijos sąlygas.
Ta „CadQuery“ biblioteka sąmoningai sukurta taip, kad joje nebūtų GUI, kad ją būtų galima naudoti inžinerinėse ir mokslinėse programose programiškai kuriant 3D modelius. Jei reikia naudoti GUI, galite apsvarstyti galimybę naudoti Qt pagrįstą GUI CQ redaktorių arba Jupyter plėtinį jupyter-cadquery. Taip pat biblioteką galima naudoti kartu su kitomis Python bibliotekomis.
Darbo su „CadQuery“ pradžia
Lengviausias būdas įdiegti „CadQuery“ stabilų leidimą yra naudoti pip. Norėdami sklandžiai įdiegti, naudokite šią komandą.
Įdiekite „CadQuery“ per pip
pip install cadquery
Sukompiliuotą bendrinamą biblioteką galite atsisiųsti iš Github saugyklos.
Dirbkite su daugiakampiu per Python 3D biblioteką
Daugiakampis yra dvimatė forma su tiesiomis kraštinėmis. Daugiakampis modeliavimas yra būdas modeliuoti objektus, vaizduojant arba aproksimuojant jų paviršius naudojant daugiakampio tinklelius. Atvirojo kodo Python Library CadQuery leidžia programinės įrangos kūrėjams sukurti daugiakampius kiekvienam dėklo taškui naudojant tik kelias Python kodo eilutes. Tai labai naudinga 3D spausdintuvuose, kurių programinė įranga netinka mažo dydžio skylėms.
Kurkite darbo plokštes veiduose naudodami Python 3D biblioteką
Atvirojo kodo Python biblioteka „CadQuery“ suteikė visišką palaikymą kuriant „Workplanes on Faces“ Python programose. darbo plokštumų naudojimas tokiu būdu yra pagrindinė CadQuery savybė. Tai išlaisvina vartotojus nuo įvairių funkcijų kintamuosiuose paieškos ir leidžia modeliui ištrinti nereikalingus matmenis. Vartotojai gali pasirinkti gautos kietosios medžiagos paviršius iškviesdami metodą Workplane.faces (). Atminkite, kad pagal numatytuosius nustatymus naujos darbo plokštumos pradžia apskaičiuojama sudarant plokštumą iš pasirinkto paviršiaus ir projektuojant ankstesnę pradžią į tą plokštumą.
Darbo planų kūrimas ant veidų naudojant 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
Darbas su 3D LEGO kaladėlėmis per Python
CadQuery biblioteka suteikė visišką palaikymą kuriant 3D animaciją, vaizduojančią skirtingo dydžio Lego kaladėles naudojant Python komandas. Taip pat galima atkurti plytas sujungiant kelis kubus ir cilindrus. Galime sukurti sudėtinį objektą, kad sujungtume šias 3D formas į vieną objektą (plytą). Toliau pateiktame pavyzdyje parodyta, kaip sukurti bet kokio dydžio įprastą stačiakampę Lego(TM) kaladėlę. Tai sudėtinga tik dėl logikos, susijusios su plytos apačia.
Sukurkite 3D LEGO kaladėles naudodami 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)