
FreeCAD
مدلساز CAD پارامتریک 3D منبع باز
طراحیهای 3D را با API پایتون برای مهندسی مکانیک، معماری و طراحی محصول ایجاد، ویرایش و خودکار کنید.
FreeCAD چیست؟
FreeCAD یک مدلساز CAD پارامتریک سهبعدی قدرتمند و منبع باز است که برای ایجاد اشیاء واقعی با هر اندازهای طراحی شده است. این نرمافزار از مدلسازی پارامتریک پشتیبانی میکند و به کاربران امکان میدهد با تنظیم پارامترها در تاریخچه مدل، به راحتی طراحیها را تغییر دهند. بر پایه معماری قوی با استفاده از OpenCASCADE، Coin3D، Qt و Python ساخته شده است و به مهندسی مکانیک، معماری، طراحی محصول و موارد دیگر خدمت میکند. API انعطافپذیر پایتون آن به توسعهدهندگان و کاربران پیشرفته اجازه میدهد وظایف را خودکار کنند، عملکردها را گسترش دهند و با ابزارهای خارجی یکپارچه شوند. چه شما یک علاقهمند، دانشجو، مهندس یا مدرس باشید، FreeCAD یک پلتفرم حرفهای برای طراحی سهبعدی بدون هزینههای لایسنس فراهم میکند.
نقطه قوت اصلی FreeCAD در توانایی آن برای پل زدن بین طراحی دو‑بعدی و مدلسازی سه‑بعدی است، بهطوری که به کاربران اجازه میدهد پروفایلهای دو‑بعدی محدود به هندسه را رسم کرده و به ویژگیهای سه‑بعدی استخراج کنند. این برنامه شامل میزهای کاری تخصصی برای طراحی قطعات، مونتاژ، نقشهکشی، معماری و موارد دیگر است. این نرمافزار بهصورت بومی بر روی ویندوز، macOS و لینوکس اجرا میشود و دسترسی گستردهای را فراهم میکند. با پشتیبانی فعال جامعه، مستندات جامع و معماری افزونههای مدولار، FreeCAD برای مبتدیان و حرفهایهای CAD با تجربه که به دنبال یک جایگزین شفاف، قابل تنظیم و رایگان برای ابزارهای تجاری هستند، ایدهآل است. ادغام آن با جریانهای شبیهسازی و تولید، آن را برای تمام دورهٔ توسعه محصول مناسب میسازد.
شروع کار با FreeCAD
FreeCAD به صورت نصبکنندههای پیشکامپایلشده برای ویندوز، macOS و لینوکس در صفحه آخرین نسخهها. در لینوکس، اغلب از طریق مدیر بسته توزیع شما یا مرکز نرمافزار در دسترس است. برای توسعهدهندگان و کاربران پیشرفته، ساخت از منبع با استفاده از CMake پشتیبانی میشود. راهنمای رسمی راهنمای توسعهدهندگان دستورالعملهای ساخت دقیق را ارائه میدهد. پس از نصب، FreeCAD را اجرا کنید و با استفاده از نوار ابزار، ورکبنچها را بررسی کنید. کنسول پایتون و سیستم ماکرو امکان خودکارسازی و سفارشیسازی را فراهم میکنند. برای منابع آموزشی، راهنمای شروع کار را در ویکی FreeCAD بازدید کنید.
نصب FreeCAD از طریق مدیر بسته (Linux) یا دانلود
# Ubuntu/Debian
sudo apt install freecad
# macOS (Homebrew)
brew install --cask freecad
# Windows: Download from https://github.com/FreeCAD/FreeCAD/releases/latest
مدلسازی پارامتریک 3D با API پایتون
موتور مدلسازی پارامتریک FreeCAD به کاربران امکان تعریف اشیاء با پارامترهای قابل ویرایش را میدهد، بهطوری که با تنظیم ساده مقادیر میتوانند تکرارهای طراحی را انجام دهند. API پایتون تمام لایه مدلسازی را در دسترس قرار میدهد و به توسعهدهندگان اجازه میدهد هندسههای پیچیده را بهصورت برنامهنویسی ایجاد کنند. با استفاده از ورکبنچهای Part و PartDesign میتوانید primitiveها را تولید کنید، عملیات بولی انجام دهید، فیلت/چامفر اضافه کنید و ویژگیهایی مانند پدها، جیبها و چرخشها را—همه از طریق پایتون—ایجاد کنید. این قابلیت برای طراحی مولد، بهینهسازی توپولوژی و یکپارچهسازی CAD با جریانهای شبیهسازی یا تولید ضروری است. API از هر دو رویکرد شیءگرا و تابعی پشتیبانی میکند، که آن را برای اسکریپتنویسی، ماکروها و افزونههای کامل مناسب میسازد. با دسترسی به هسته OpenCASCADE زیرین، FreeCAD عملیات هندسی با کیفیت حرفهای را ارائه میدهد در حالی که استفاده آسان برای مبتدیان را حفظ میکند.
ایجاد یک مکعب پارامتریک و تغییر ابعاد آن با پایتون
import FreeCAD as App
import Part
# Create document and object
doc = App.newDocument()
cube = doc.addObject("Part::Box", "Cube")
cube.Length = 10
cube.Width = 20
cube.Height = 30
App.ActiveDocument.recompute()
# Modify dimensions later
cube.Length = 15
App.ActiveDocument.recompute()
محیط کار طراحی و نقشهکشی 2D
FreeCAD شامل یک محیط پیشرفتهٔ طراحی دو بعدی است که با خط لولهٔ مدلسازی سهبعدی یکپارچه شده است. میز کار Sketcher به کاربران امکان میدهد پروفایلهای دو بعدی محدود به هندسه را با استفاده از خطوط، قوسها، دایرهها و اسپلاینها رسم کنند. محدودیتهایی مانند افقی، عمودی، موازی، عمود و محدودیتهای بعدی کنترل دقیق بر هندسهٔ طرح را تضمین میکنند. پس از تکمیل، این طرحها به عنوان پایهای برای ویژگیهای سهبعدی مانند برآمدگیها، چرخشها و لوفتها عمل میکنند. علاوه بر این، میز کار Draft ابزارهایی برای ایجاد نقاشیهای برداری دو بعدی بدون محدودیت فراهم میکند که برای نقشههای طبقهٔ معماری یا تصویرهای فنی ایدهآل است. میز کار Drawing امکان تولید پروژکشنهای ارتوگرافیک، نماهای مقطعی و نقشههای حاشیهدار از مدلهای سهبعدی را فراهم میآورد و با مستندات فنی سازگار با ISO که شامل ابعاد، تحملها و ویژگیهای فهرست مواد است، پشتیبانی میکند.
یک طرح ایجاد کنید، محدودیتها را اضافه کنید و برای شکلدادن به یک ویژگی سهبعدی Extrude کنید
import FreeCAD as App
import Sketcher
import PartDesign
doc = App.newDocument()
Part = doc.addObject("PartDesign::Body")
Sketch = doc.addObject("Sketcher::SketchObject", "Sketch")
Sketch.Placement = App.Placement(App.Vector(0,0,0), App.Rotation(App.Vector(0,0,1),0))
# Add geometry
Sketch.addGeometry(Part.LineSegment(App.Vector(-10,0,0),App.Vector(10,0,0)),False)
Sketch.addGeometry(Part.LineSegment(App.Vector(10,0,0),App.Vector(10,10,0)),False)
Sketch.addGeometry(Part.LineSegment(App.Vector(10,10,0),App.Vector(-10,10,0)),False)
Sketch.addGeometry(Part.LineSegment(App.Vector(-10,10,0),App.Vector(-10,0,0)),False)
# Add constraints
Sketch.addConstraint(Sketcher.Constraint('Coincident',0,2,1,1))
Sketch.addConstraint(Sketcher.Constraint('Coincident',1,2,2,1))
Sketch.addConstraint(Sketcher.Constraint('Coincident',2,2,3,1))
Sketch.addConstraint(Sketcher.Constraint('Coincident',3,2,0,1))
Sketch.addConstraint(Sketcher.Constraint('Horizontal',0))
Sketch.addConstraint(Sketcher.Constraint('Vertical',1))
# Extrude
Pad = doc.addObject("PartDesign::Pad", "Pad")
Pad.Profile = Sketch
Pad.Length = 5
doc.recompute()
طراحی مونتاژ و حل محدودیتها
FreeCAD از مدلسازی مونتاژ پیچیده از طریق ورکبنچهای Assembly4 و Assembly3 پشتیبانی میکند و به کاربران امکان ترکیب چندین قطعه در مکانیزمهای عملکردی را میدهد. مونتاژها با استفاده از قیدهایی مانند همموقع، موازی، عمود، مماس و فاصله ساخته میشوند تا موقعیتها و حرکات نسبی بین اجزا را تعریف کنند. حلکننده بهصورت خودکار مونتاژ را هنگامی که هر قطعه یا قیدی تغییر کند بهروزرسانی میکند و یکپارچگی طراحی را تضمین مینماید. این قابلیت برای وظایف مهندسی مکانیک مانند دندهدوانیها، لینکها و طراحیهای محفظهای حیاتی است. مونتاژها میتوانند بهصورت فایلهای STEP صادر شوند تا با سایر سیستمهای CAD همکاری کنند و شبیهسازی حرکت از طریق ادغام با ابزارهای خارجی مانند Yade یا اسکریپتهای سفارشی پایتون امکانپذیر است. طبیعت پارامتریک FreeCAD تضمین میکند که تغییرات در قطعات فردی بهصورت خودکار به مونتاژ منتقل شود، بهروزرسانیهای دستی را کاهش داده و خطاها را به حداقل میرساند.
یک مونتاژ ساده با دو قطعه ایجاد کنید و یک محدودیت Coincident اعمال کنید
import FreeCAD as App
import Assembly4
doc = App.newDocument("Assembly")
# Add parts
Part1 = doc.addObject("Part::Box", "Block1")
Part1.Length, Part1.Width, Part1.Height = 10, 10, 10
Part2 = doc.addObject("Part::Cylinder", "Cylinder1")
Part2.Radius, Part2.Height = 3, 15
# Create assembly
asm = doc.addObject("App::Part", "Assembly")
asm.Type = "Assembly"
asm.addObject(Part1)
asm.addObject(Part2)
# Apply constraint (simplified)
# In practice, use Assembly4's Constraint class for full functionality
App.ActiveDocument.recompute()
ابزارهای BIM و مدلسازی معماری
FreeCAD شامل ابزارهای تخصصی برای مدلسازی اطلاعات ساختمان (BIM) و طراحی معماری از طریق ورکبنچ Arch است. کاربران میتوانند دیوارها، کفها، سقفها، پنجرهها، درها و عناصر سازهای را با استفاده از اشیای پارامتریک شهودی ایجاد کنند. این اشیا بهصورت خودکار هنگام تغییر پارامترهایشان بهروزرسانی میشوند و از طراحی تکراری و انطباق با کدهای ساختمانی پشتیبانی میکنند. این ورکبنچ از واردات/صادرات IFC (Industry Foundation Classes) پشتیبانی میکند و امکان تعامل با نرمافزارهای BIM استاندارد صنعتی مانند Revit و Archicad را فراهم میآورد. ویژگیهایی مانند برنامهریزی سایت، تنظیم تحلیل انرژی و برآورد مواد، FreeCAD را برای طراحی و مستندسازی معماری در مراحل اولیه مناسب میسازد. علاوه بر این، ورکبنچهای Draft و Sketcher بهصورت یکپارچه برای ایجاد پلانهای دقیق طبقه و نماها کار میکنند، در حالی که ورکبنچ Drawing اسناد ساخت را با حاشیهنویسیها، ابعاد و برنامهها تولید میکند.
یک دیوار ایجاد کنید و با استفاده از API پایتون یک پنجره اضافه کنید
import FreeCAD as App
import Arch
doc = App.newDocument("Building")
# Create wall
Wall = Arch.makeWall(length=5000, width=200, height=3000)
Wall.Base = Arch.makeSketch([0,0,0], [5000,0,0], [5000,200,0], [0,200,0])
# Create window
Window = Arch.makeWindow(1200, 1500)
Window.Base = Arch.makeSketch([1000,100,0], [2200,100,0], [2200,1600,0], [1000,1600,0])
Window.Host = Wall
App.ActiveDocument.recompute()
