کتابخانه Python منبع باز برای قالبهای فایل 3D CAD
کتابخانه رایگان Python CAD برای ایجاد مدل های CAD 3 بعدی پارامتریک. این فرمت های CAD با کیفیت بالا مانند STEP، AMF و 3MF را علاوه بر STL سنتی ایجاد می کند
کتابخانه Python منبع باز CadQuery یک کتابخانه Python با کاربری آسان برای ساخت مدل های پارامتریک 3D CAD است. این کتابخانه بسیار قدرتمند است و با نوشتن اسکریپت های کوتاه می تواند مدل های CAD با کیفیت بالا را در داخل برنامه های پایتون تولید کند. همچنین می توان اسکریپت را سفارشی کرد و با استفاده از یک اسکریپت بسیاری از اشیاء مختلف را ساخت. اسکریپت های CadQuery بسیار سریع هستند و می توانند STL، STEP، AMF و 3MF را سریعتر از سایر کتابخانه های موجود بسازند.
این کتابخانه توانایی های مدل سازی پیشرفته ای مانند فیله ها، اکسترودهای منحنی، منحنی های پارامتریک و لفت ها را ارائه می دهد. این یک کتابخانه مبتنی بر اسکریپت است که می تواند یک مدل پارامتریک ایجاد کند که به راحتی توسط کاربران نهایی قابل سفارشی سازی باشد. مدلهای سهبعدی با اسکریپتهایی ایجاد میکند که تا حد امکان به نحوه توصیف شی برای انسان نزدیک است. CadQuery تحت شرایط مجوز عمومی آپاچی، نسخه 2.0 مجوز دارد.
آن کتابخانه CadQuery عمداً به گونهای طراحی شده است که فاقد رابط کاربری گرافیکی باشد، به طوری که میتوان از آن در برنامههای مهندسی و علمی برای ایجاد مدلهای سه بعدی بهصورت برنامهریزی استفاده کرد. اگر نیاز به استفاده از رابط کاربری گرافیکی دارید، میتوانید ویرایشگر CQ مبتنی بر Qt یا پسوند Jupyter-Jupyter-cadquery را در نظر بگیرید. همچنین امکان استفاده از کتابخانه همراه با سایر کتابخانه های پایتون وجود دارد.
شروع کار با CadQuery
ساده ترین راه برای نصب نسخه پایدار CadQuery استفاده از pip است. لطفا از دستور زیر برای نصب راحت استفاده کنید.
CadQuery را از طریق pip نصب کنید
pip install cadquery
می توانید کتابخانه مشترک کامپایل شده را از مخزن Github دانلود کنید.
کار با Polygon از طریق کتابخانه 3D Python
چند ضلعی یک شکل دو بعدی با اضلاع مستقیم است. مدل سازی چند ضلعی رویکردی برای مدل سازی اشیا با نمایش یا تقریب سطوح آنها با استفاده از مش های چند ضلعی است. منبع باز Python Library CadQuery توسعه دهندگان نرم افزار را قادر می سازد تا چند ضلعی برای هر Stack Point تنها با چند خط کد پایتون ایجاد کنند. در پرینترهای سه بعدی که سفتافزار آنها برای اندازههای سوراخ کوچک اصلاح نمیشود، بسیار سودمند است.
از طریق کتابخانه سه بعدی پایتون، صفحات کاری روی چهره ها ایجاد کنید
کتابخانه منبع باز Python CadQuery پشتیبانی کاملی را برای ایجاد Workplanes بر روی Faces در داخل برنامه های Python ارائه کرده است. استفاده از صفحات کاری در این راه یکی از ویژگی های کلیدی CadQuery است. کاربران را از جستجوی موقعیت ویژگی های مختلف در متغیرها رها می کند و مدل را قادر می سازد تا ابعاد اضافی را حذف کند. کاربران می توانند با فراخوانی متد Workplane.faces () چهره جامد حاصل را انتخاب کنند. لطفاً به یاد داشته باشید که بهطور پیشفرض مبدا یک صفحه کاری جدید با ساختن یک صفحه از چهره انتخابشده و نمایش مبدا قبلی بر روی آن صفحه محاسبه میشود.
ایجاد صفحات کاری روی چهره ها از طریق پایتون
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
کار با آجرهای سه بعدی لگو از طریق پایتون
کتابخانه CadQuery پشتیبانی کاملی را برای ایجاد انیمیشن سه بعدی که آجرهای لگو را در اندازه های مختلف با استفاده از دستورات پایتون نشان می دهد، ارائه کرده است. همچنین می توان آجرها را با اتصال چند مکعب و استوانه به یکدیگر بازسازی کرد. ما می توانیم یک شی مرکب ایجاد کنیم تا این اشکال سه بعدی را در یک شی واحد (آجر) به هم بپیوندیم. مثال زیر نحوه تولید آجر مستطیلی منظم لگو (TM) را نشان می دهد. این فقط به دلیل منطق در مورد سطح زیرین آجر مشکل است.
آجرهای سه بعدی لگو را با پایتون ایجاد کنید
#####
# 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)