
FreeCAD
โมเดล CAD พารามิเตอร์ 3 มิติแบบโอเพนซอร์ส
สร้าง, แก้ไข และอัตโนมัตาการออกแบบ 3 มิติด้วย Python API สำหรับวิศวกรรมเครื่องกล, สถาปัตยกรรม และการออกแบบผลิตภัณฑ์.
FreeCAD คืออะไร?
FreeCAD เป็นโมเดล CAD พารามิเตอร์ 3 มิติที่ทรงพลังและเป็นโอเพ่นซอร์สออกแบบมาสำหรับการสร้างวัตถุในโลกจริงที่มีขนาดใดก็ได้ มันสนับสนุนการสร้างโมเดลแบบพารามิเตอร์ ทำให้ผู้ใช้สามารถปรับเปลี่ยนการออกแบบได้อย่างง่ายดายโดยการปรับพารามิเตอร์ในประวัติของโมเดล สร้างบนสถาปัตยกรรมที่แข็งแรงโดยใช้ OpenCASCADE, Coin3D, Qt, และ Python FreeCAD รองรับการใช้งานในวิศวกรรมเครื่องกล สถาปัตยกรรม การออกแบบผลิตภัณฑ์ และอื่น ๆ API Python ที่ยืดหยุ่นของมันทำให้ผู้พัฒนาและผู้ใช้ขั้นสูงสามารถอัตโนมัติงาน ขยายฟังก์ชันการทำงาน และผสานรวมกับเครื่องมือภายนอก ไม่ว่าคุณจะเป็นผู้สนใจ, นักเรียน, วิศวกร หรือผู้สอน FreeCAD ให้แพลตฟอร์มระดับมืออาชีพสำหรับการออกแบบ 3 มิติโดยไม่มีค่าใช้จ่ายลิขสิทธิ์
จุดแข็งหลักของ FreeCAD อยู่ที่ความสามารถในการเชื่อมโยงการวาดสเก็ตช์ 2 มิติและการสร้างโมเดล 3 มิติ ทำให้ผู้ใช้สามารถวาดโปรไฟล์ 2 มิติที่มีข้อจำกัดด้านเรขาคณิตและดันออกเป็นฟีเจอร์ 3 มิติได้ มันมีเวิร์กเบนช์เฉพาะสำหรับการออกแบบชิ้นส่วน การประกอบ การร่างแบบ สถาปัตยกรรม และอื่น ๆ แอปพลิเคชันทำงานโดยตรงบน Windows, macOS, และ Linux ทำให้เข้าถึงได้อย่างกว้างขวาง ด้วยการสนับสนุนจากชุมชนที่กระตือรือร้น เอกสารที่ครอบคลุม และสถาปัตยกรรมปลั๊กอินแบบโมดูลาร์ FreeCAD เหมาะสำหรับทั้งผู้เริ่มต้นและผู้เชี่ยวชาญ CAD ที่ต้องการทางเลือกที่โปร่งใส ปรับแต่งได้ และฟรีแทนเครื่องมือเชิงพาณิชย์ การบูรณาการกับกระบวนการจำลองและการผลิตทำให้เหมาะสมกับวงจรการพัฒนาผลิตภัณฑ์ทั้งหมด
เริ่มต้นใช้งาน FreeCAD
FreeCAD มีให้ดาวน์โหลดเป็นตัวติดตั้งที่คอมไพล์ล่วงหน้าสำหรับ Windows, macOS, และ Linux บน หน้าปล่อยรุ่นล่าสุด. บน Linux มักจะสามารถติดตั้งได้ผ่านตัวจัดการแพ็กเกจของการแจกจ่ายหรือศูนย์ซอฟต์แวร์ของคุณ. สำหรับนักพัฒนาและผู้ใช้ระดับสูง การสร้างจากซอร์สโค้ดได้รับการสนับสนุนโดยใช้ CMake. คู่มือผู้พัฒนาทางการ Developers Handbook ให้คำแนะนำการสร้างอย่างละเอียด. เมื่อติดตั้งแล้ว ให้เปิด FreeCAD และสำรวจเวิร์กเบนช์ผ่านแถบเครื่องมือ. คอนโซล Python และระบบแมโครช่วยให้ทำการอัตโนมัติและปรับแต่งได้. สำหรับแหล่งเรียนรู้ ให้เยี่ยมชม คู่มือ Getting Started บนวิกิของ 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
การสร้างโมเดล 3 มิติ แบบพารามิเตอร์ด้วย Python API
เครื่องยนต์การสร้างโมเดลเชิงพารามิเตอร์ของ FreeCAD อนุญาตให้ผู้ใช้กำหนดวัตถุด้วยพารามิเตอร์ที่แก้ไขได้ ทำให้สามารถทำการออกแบบซ้ำโดยปรับค่าได้อย่างง่ายดาย API ของ Python เปิดเผยสแต็กการสร้างโมเดลทั้งหมด ทำให้นักพัฒนาสามารถสร้างรูปทรงเชิงซับซ้อนโดยโปรแกรมได้ โดยใช้เวิร์กเบนช์ Part และ PartDesign คุณสามารถสร้างรูปทรงพื้นฐาน ทำการดำเนินการบูลีน เพิ่มฟิลเล็ต/แชมเฟอร์ และสร้างฟีเจอร์เช่น แพด, พ็อกเก็ต, และการหมุน—all ผ่าน Python ความสามารถนี้สำคัญสำหรับการออกแบบเชิงสร้างสรรค์ การเพิ่มประสิทธิภาพโทโพโลยี และการบูรณาการ CAD กับการจำลองหรือกระบวนการผลิต API รองรับทั้งแนวทางเชิงวัตถุและเชิงฟังก์ชัน ทำให้เหมาะสำหรับสคริปต์ แมโคร และปลั๊กอินเต็มรูปแบบ ด้วยการเข้าถึงเคอร์เนล OpenCASCADE ที่อยู่เบื้องหลัง FreeCAD ให้การดำเนินการเชิงเรขาคณิตระดับมืออาชีพในขณะที่ยังคงใช้งานง่ายสำหรับผู้เริ่มต้น
สร้างลูกบาศก์แบบพารามิเตอร์และแก้ไขมิติของมันด้วย Python
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()
เวิร์กเบนช์การวาดสเก็ตช์ 2 มิติและการร่างแบบ
FreeCAD มีสภาพแวดล้อมการสเก็ตช์ 2 มิติที่แข็งแกร่งและเชื่อมต่อกับกระบวนการสร้างโมเดล 3 มิติ Workbench Sketcher ช่วยให้ผู้ใช้วาดโปรไฟล์ 2 มิติที่มีการจำกัดรูปทรงโดยใช้เส้น, โค้ง, วงกลม และสไพล์น์ การจำกัดเช่น แนวนอน, แนวตั้ง, ขนาน, ตั้งฉาก และการจำกัดมิติ ทำให้ควบคุมรูปทรงสเก็ตช์ได้อย่างแม่นยำ เมื่อเสร็จแล้ว สเก็ตช์เหล่านี้จะเป็นฐานสำหรับฟีเจอร์ 3 มิติ เช่น การดันออก (extrusion), การหมุน (revolution) และการลอฟท์ (loft) นอกจากนี้ Workbench Draft มีเครื่องมือสำหรับสร้างภาพเวกเตอร์ 2 มิติโดยไม่มีการจำกัด เหมาะสำหรับแผนผังสถาปัตยกรรมหรือภาพประกอบทางเทคนิค Workbench Drawing ช่วยสร้างการฉายภาพแบบออร์โธกราฟิก, มุมมองตัด, และภาพวาดที่มีคำอธิบายจากโมเดล 3 มิติ รองรับเอกสารเทคนิคที่เป็นไปตามมาตรฐาน ISO ด้วยการกำหนดมิติ, การกำหนด tolerancing, และคุณลักษณะบิลล์ของวัสดุ
สร้างสเก็ตช์, เพิ่มข้อจำกัด, และทำการดึงออกเพื่อสร้างฟีเจอร์ 3 มิติ
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 ทำให้ผู้ใช้สามารถรวมหลายชิ้นส่วนเป็นกลไกที่ทำงานได้ การประกอบถูกสร้างโดยใช้ข้อจำกัดเช่น coincident, parallel, perpendicular, tangent, และ distance เพื่อกำหนดตำแหน่งและการเคลื่อนที่สัมพันธ์ระหว่างส่วนประกอบ ตัวแก้สมการจะอัปเดตการประกอบโดยอัตโนมัติเมื่อมีการแก้ไขชิ้นส่วนหรือข้อจำกัดใด ๆ เพื่อรักษาความสมบูรณ์ของการออกแบบ ความสามารถนี้มีความสำคัญต่องานวิศวกรรมเครื่องกล เช่น ระบบเฟือง, กลไกการเชื่อมต่อ, และการออกแบบเคส การประกอบสามารถส่งออกเป็นไฟล์ STEP เพื่อการทำงานร่วมกับระบบ CAD อื่น ๆ และการจำลองการเคลื่อนที่เป็นไปได้ผ่านการรวมกับเครื่องมือภายนอกเช่น Yade หรือสคริปต์ Python ที่กำหนดเอง ธรรมชาติแบบพารามิเตอร์ของ 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 สร้างเอกสารก่อสร้างพร้อมคำอธิบาย, มิติ, และตารางเวลา
สร้างผนังและเพิ่มหน้าต่างโดยใช้ Python 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()
