Open Source Python Library สำหรับรูปแบบไฟล์ 3D CAD
ฟรีห้องสมุด Python CAD เพื่อสร้าง Parametric 3D CAD Models มันสร้างรูปแบบ CAD คุณภาพสูงเช่น STEP, AMF & 3MF นอกเหนือจาก STL แบบดั้งเดิม
CadQuery ไลบรารี Python แบบโอเพ่นซอร์สเป็นไลบรารี Python ที่ใช้งานง่ายสำหรับการสร้างโมเดล CAD 3 มิติแบบพาราเมตริก ไลบรารีมีประสิทธิภาพมากและการเขียนสคริปต์สั้นๆ สามารถสร้างโมเดล CAD คุณภาพสูงภายในแอปพลิเคชัน Python นอกจากนี้ยังสามารถปรับแต่งสคริปต์และสร้างวัตถุต่างๆ มากมายโดยใช้สคริปต์เดียว สคริปต์ CadQuery นั้นรวดเร็วมากและสามารถสร้าง STL, STEP, AMF และ 3MF ได้เร็วกว่าไลบรารี่อื่นๆ ที่มี
ไลบรารีนำเสนอความสามารถในการสร้างแบบจำลองขั้นสูง เช่น ฟิเลต์ เส้นโค้งแบบโค้ง เส้นโค้งพาราเมตริก และลอฟท์ เป็นไลบรารีที่ใช้สคริปต์ซึ่งสามารถสร้างโมเดลพาราเมตริกซึ่งผู้ใช้ปลายทางสามารถปรับแต่งได้อย่างง่ายดาย สร้างแบบจำลอง 3 มิติด้วยสคริปต์ที่ใกล้เคียงกับวิธีที่คุณจะอธิบายวัตถุกับมนุษย์มากที่สุด CadQuery ได้รับอนุญาตภายใต้เงื่อนไขของ Apache Public License รุ่น 2.0
ไลบรารี CadQuery นั้นได้รับการออกแบบโดยจงใจให้ไม่มี GUI เพื่อให้สามารถใช้ในแอปพลิเคชันด้านวิศวกรรมและวิทยาศาสตร์สำหรับการสร้างแบบจำลอง 3 มิติทางโปรแกรม หากคุณต้องการใช้ GUI คุณสามารถพิจารณาใช้ Qt-based GUI CQ-editor หรือ Jupyter extension jupyter-cadquery นอกจากนี้ยังสามารถใช้ไลบรารีร่วมกับไลบรารี Python อื่นๆ ได้
เริ่มต้นใช้งาน CadQuery
วิธีที่ง่ายที่สุดในการติดตั้งรุ่นเสถียรของ CadQuery คือการใช้ pip โปรดใช้คำสั่งต่อไปนี้เพื่อการติดตั้งที่ราบรื่น
ติดตั้ง CadQuery ผ่าน pip
pip install cadquery
คุณสามารถดาวน์โหลดไลบรารีที่ใช้ร่วมกันที่คอมไพล์ได้จากที่เก็บ Github
ทำงานกับ Polygon ผ่าน Python 3D Library
รูปหลายเหลี่ยมคือรูปทรงสองมิติที่มีด้านตรง การสร้างแบบจำลองหลายเหลี่ยมเป็นวิธีการสร้างแบบจำลองวัตถุโดยการแสดงหรือประมาณพื้นผิวของวัตถุโดยใช้ตาข่ายรูปหลายเหลี่ยม Python Library CadQuery แบบโอเพ่นซอร์สช่วยให้นักพัฒนาซอฟต์แวร์สามารถสร้างรูปหลายเหลี่ยมสำหรับแต่ละสแต็กพอยต์ด้วยโค้ด Python เพียงไม่กี่บรรทัด มีประโยชน์มากในเครื่องพิมพ์ 3 มิติที่เฟิร์มแวร์ไม่เหมาะกับขนาดรูเล็กๆ
สร้าง Workplanes บน Faces ผ่าน Python 3D Library
Python Library CadQuery แบบโอเพ่นซอร์สได้ให้การสนับสนุนอย่างสมบูรณ์สำหรับการสร้าง Workplanes บน Faces ภายในแอปพลิเคชัน Python การใช้เวิร์กเพลนในลักษณะนี้เป็นคุณลักษณะสำคัญของ CadQuery ช่วยให้ผู้ใช้ไม่ต้องค้นหาตำแหน่งของคุณสมบัติต่างๆ ในตัวแปร และทำให้โมเดลสามารถลบมิติที่ซ้ำซ้อนได้ ผู้ใช้สามารถเลือกใบหน้าของของแข็งที่เป็นผลลัพธ์ได้โดยการเรียกใช้เมธอด Workplane.faces () โปรดจำไว้ว่าตามค่าเริ่มต้น จุดเริ่มต้นของเวิร์กเพลนใหม่จะคำนวณโดยการสร้างระนาบจากใบหน้าที่เลือกและฉายภาพต้นทางก่อนหน้าไปยังระนาบนั้น
การสร้าง Workplanes บน Faces ผ่าน 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
ทำงานกับ 3D LEGO Bricks ผ่าน Python
ไลบรารี CadQuery ให้การสนับสนุนอย่างสมบูรณ์สำหรับการสร้างภาพเคลื่อนไหว 3 มิติที่แสดงตัวต่อเลโก้ในขนาดต่างๆ โดยใช้คำสั่ง Python นอกจากนี้ยังสามารถสร้างอิฐขึ้นมาใหม่ได้ด้วยการต่อลูกบาศก์และทรงกระบอกหลายๆ อันเข้าด้วยกัน เราสามารถสร้างวัตถุผสมเพื่อรวมรูปร่าง 3 มิติเหล่านี้เข้าด้วยกันในวัตถุเดียว (อิฐ) ตัวอย่างต่อไปนี้สาธิตวิธีสร้างตัวต่อ Lego(TM) สี่เหลี่ยมปกติขนาดใดก็ได้ มันยุ่งยากเพียงเพราะตรรกะเกี่ยวกับด้านล่างของอิฐ
สร้าง 3D LEGO Bricks ผ่าน 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)