מדריך: יצירת תוספים עבור FreeCAD
מטרת השיעור: צור תוסף פשוט שמוסיף סביבת עבודה חדשה עם כפתור, ומציג הודעה בעת לחיצה עליו.
שלב 1. הכנת תיקיית התוסף
וודא שיש לך את התיקייה הבאה:
.../FreeCAD/Mod/HelloWorldAddon/
אם לא – צור אותה.
שם התיקייה חשוב: הוא חייב להתאים לשם המודול בקוד.
נשתמש בשם HelloWorldAddon.
בתוך תיקייה זו, צור שני קבצים:
InitGui.pyhello_workbench.py
חשוב: אל תשתמש ברווחים או בתווים קיריליים בשמות קבצים ותיקיות!
שלב 2. קובץ InitGui.py – נקודת הכניסה
קובץ זה מופעל אוטומטית על ידי FreeCAD באתחול, אם הוא נמצא בתיקיית התוסף.
פתח אותו בעורך והעתק את הקוד הבא:
# InitGui.py
import FreeCADGui
from HelloWorldAddon.hello_workbench import HelloWorldWorkbench
FreeCADGui.addWorkbench(HelloWorldWorkbench())
מה עושה הקוד הזה?
- מייבא את סביבת העבודה שלנו מקובץ
hello_workbench.py - רושם אותה בממשק FreeCAD באמצעות
FreeCADGui.addWorkbench()
הערה:from HelloWorldAddon.hello_workbench – כאן HelloWorldAddon הוא שם התיקייה, ו-hello_workbench הוא שם הקובץ בלי הסיומת .py.
שלב 3. קובץ hello_workbench.py – לוגיקת התוסף
כעת ניצור את סביבת העבודה עצמה.
העתק את הקוד הבא ל-hello_workbench.py:
# hello_workbench.py
import FreeCAD, FreeCADGui
from PySide import QtGui
# === פקודה: מה קורה כשלוחצים על הכפתור? ===
class HelloWorldCommand:
def GetResources(self):
"""מחזיר נתונים לתצוגת הפקודה"""
return {
"MenuText": "אמר שלום", # טקסט בתפריט
"ToolTip": "הצג ברכת שלום", # תיאור מצוף
"Pixmap": "" # נתיב לסמל (כרגע ריק)
}
def Activated(self):
"""נקרא כאשר לוחצים על הכפתור"""
QtGui.QMessageBox.information(
None,
"תוסף FreeCAD",
"שלום עולם!\nהפעלת בפעם הראשונה את התוסף שלך!"
)
def IsActive(self):
"""מתי הפקודה זמינה? (כאן: תמיד → True)"""
return True
# === סביבת עבודה: מקבצת פקודות יחד ===
class HelloWorldWorkbench(FreeCADGui.Workbench):
# השם שיופיע ברשימה
MenuText = "שלום עולם"
ToolTip = "סביבת העבודה הראשונה שלי"
def Initialize(self):
"""נקרא כאשר מפעילים את סביבת העבודה"""
# רשימת שמות הפקודות
self.list = ["HelloWorldCommand"]
# הוספת סרגל כלים
self.appendToolbar("כלי שלום", self.list)
# הוספת פריט לתפריט
self.appendMenu("שלום עולם", self.list)
def GetClassName(self):
"""מתודה חובה לסביבות עבודה בפייתון"""
return "Gui::PythonWorkbench"
# === רישום הפקודה ===
FreeCADGui.addCommand("HelloWorldCommand", HelloWorldCommand())
ניתוח הקוד לפי רכיבים:
- פקודה (
HelloWorldCommand)
GetResources()– מתאר איך הפקודה תופיע בממשקActivated()– מגדיר מה קורה בעת לחיצהIsActive()– קובע מתי הכפתור פעיל (למשל רק אם יש מסמך פתוח)
- סביבת עבודה (
HelloWorldWorkbench)
- יורשת מ-
FreeCADGui.Workbench - המתודה
Initialize()מוסיפה פקודות לסרגל הכלים ולתפריט GetClassName()אומרת ל-FreeCAD: „זאת סביבת עבודה בפייתון”
- רישום
FreeCADGui.addCommand()מקשרת בין השם"HelloWorldCommand"למחלקה
שלב 4. בדיקת תפקוד
- שמור את שני הקבצים
- הפעל מחדש את FreeCAD
- בחר ברשימת סביבות העבודה את „שלום עולם“
- לחץ על הכפתור „אמר שלום“
חלון עם ההודעה „שלום עולם!“ אמור להופיע.
משימה מעשית
- שנה את הטקסט המוצג.
- הוסף פקודה שנייה – למשל „הצג תאריך“, שתציג את התאריך הנוכחי.
- נסה לשחק עם
IsActive()– גרום לכפתור להיות פעיל רק אם קיים מסמך פתוח:
def IsActive(self):
return FreeCAD.ActiveDocument is not None
מה הלאה?
בשיעור 3 נלמד:
- כיצד ליצור אובייקטים תלת-ממדיים אמיתיים (תיבות, גלילים) באמצעות פייתון
- להבין את מבנה המסמך ב-FreeCAD
- לבנות תוסף שיוצר גופים פרמטריים
כך תתחיל הפיתוח האמיתי ב-CAD!