diff --git a/wiki/Developer_hub.wikitext b/wiki/Developer_hub.wikitext index c21bdddebd..376a7095c2 100644 --- a/wiki/Developer_hub.wikitext +++ b/wiki/Developer_hub.wikitext @@ -16,6 +16,13 @@ This is the place to come if you want to contribute to the development of the Fr These pages are in the early stage of development. If you can't find the information you are looking for, or have found useful information somewhere we have not linked to, then please leave a comment on the [https://forum.freecad.org/index.php?sid=5f84150e79db8842e277b042077097ff forum] and someone will look into it. +== Getting Started == + +* [https://freecad.github.io/DevelopersHandbook/ Developers Handbook] — The official, continuously updated developer guide +* [https://github.com/FreeCAD/FreeCAD GitHub Repository] — Main FreeCAD source code +* [[Source_code_management|Source Code Management]] — Git workflow for FreeCAD contributors +* [https://github.com/FreeCAD/Addon-Academy Addon Academy] — Learn to create FreeCAD addons and workbenches + == Developer Documentation == @@ -49,6 +56,14 @@ The developer documentation comprises the following sections: * [[Windows_packaging|Windows packaging]] * [[MacOS_packaging|MacOS packaging]] +== API Documentation == + +* [https://freecad.github.io/lens-docs/ Lens Docs] — Interactive API documentation browser +* [https://freecad.github.io/SourceDoc/ SourceDoc] — Auto-generated C++ and Python API reference +* [[Base_API|Base API]] — Core FreeCAD base classes +* [[Console_API|Console API]] — Console and logging utilities +* [[Draft_API|Draft API]] — Draft module API reference + === Build Support Tools === @@ -152,8 +167,15 @@ FreeCAD, though usable in certain areas, is at the beginning of a long way into [[Contributors|Contributors]] +== External Resources == + +* [https://github.com/FreeCAD/Addon-Academy Addon Academy] — Tutorial repository for creating addons +* [https://github.com/FreeCAD/SourceDoc SourceDoc] — C++/Python API documentation generator +* [https://github.com/FreeCAD/lens-docs Lens Docs] — API documentation browser +* [https://github.com/FreeCAD FreeCAD GitHub Organization] — All FreeCAD repositories + {{Userdocnavi{{#translation:}}}} [[Category:Hubs{{#translation:}}]] -[[Category:Developer Documentation{{#translation:}}]] \ No newline at end of file +[[Category:Developer Documentation{{#translation:}}]] diff --git a/wiki/External_Add-ons.wikitext b/wiki/External_Add-ons.wikitext new file mode 100644 index 0000000000..1bbbad26a2 --- /dev/null +++ b/wiki/External_Add-ons.wikitext @@ -0,0 +1,72 @@ + + + + +This page provides an overview of external add-ons (workbenches and macros) available for FreeCAD. For the complete and always up-to-date list, visit the [https://github.com/FreeCAD/Addons Addons Repository]. + + +[[Image:Crystal_Clear_app_tutorials.png|64px]] +---- +{{TOCright}} + + +== Official Add-on Repository == + + +The [https://github.com/FreeCAD/Addons FreeCAD Addons Repository] is the central index for all FreeCAD add-ons: + +* [https://github.com/FreeCAD/Addons/tree/master/Mod Workbenches] — Full workbenches +* [https://github.com/FreeCAD/Addons/tree/master/Macro Macros] — Python scripts + + +To install add-ons, use the [[Std_AddonMgr|Addon Manager]] at {{MenuCommand|Tools → Addon Manager}}. + +== Popular Workbenches == + +{| class="wikitable" +! Workbench !! Description !! Repository +|- +| SheetMetal || Sheet metal design tools || [https://github.com/shaise/FreeCAD_SheetMetal GitHub] +|- +| A2plus || Assembly workbench || [https://github.com/kbwbe/A2plus GitHub] +|- +| Fasteners || Standard fastener library || [https://github.com/shaise/FreeCAD_FastenersWB GitHub] +|- +| Curves || NURBS curve tools || [https://github.com/tomate44/CurvesWB GitHub] +|- +| Assembly3 || Assembly solver || [https://github.com/realthunder/FreeCAD_assembly3 GitHub] +|} + +== Installing Add-ons == + +=== Using the Addon Manager === + +# Go to {{MenuCommand|Tools → Addon Manager}} +# Browse or search for the desired add-on +# Click "Install" and restart FreeCAD + +=== Manual Installation === + +# Download the add-on repository +# Place it in your FreeCAD Mod directory: +** Linux: {{FileName|~/.local/share/FreeCAD/Mod/}} +** Windows: {{FileName|%APPDATA%\FreeCAD\Mod\}} +** Mac: {{FileName|~/Library/Application Support/FreeCAD/Mod/}} +# Restart FreeCAD + +== Creating Add-ons == + +* [https://github.com/FreeCAD/Addon-Academy Addon Academy] — Tutorial repository +* [[Workbench_creation|Workbench Creation Guide]] — Official documentation +* [https://freecad.github.io/DevelopersHandbook/ Developers Handbook] — Developer guide + +== Contributing Add-ons == + +To submit your add-on to the official repository: + +# Fork the [https://github.com/FreeCAD/Addons Addons Repository] +# Add your add-on metadata to the appropriate directory +# Submit a Pull Request +# See [https://github.com/FreeCAD/Addons/blob/master/CONTRIBUTING.md CONTRIBUTING.md] for details + + diff --git a/wiki/Macros_recipes.wikitext b/wiki/Macros_recipes.wikitext index 46f0528871..322632235f 100644 --- a/wiki/Macros_recipes.wikitext +++ b/wiki/Macros_recipes.wikitext @@ -8,6 +8,78 @@ This page lists [[Macros|macros]] that can add functionality to a FreeCAD instal If you have written a macro and want to include it in one of the categories on this page, then go to [[Macro_documentation|Macro documentation]] to learn more about properly documenting a macro. +== What are Macros? == + + +Macros are Python scripts that extend FreeCAD's functionality. They can automate repetitive tasks, add new features, or create custom workflows. Macros are stored as {{FileName|.FCMacro}} or {{FileName|.py}} files. + +== Installing Macros == + +=== Via Addon Manager === + +# Go to {{MenuCommand|Tools → Addon Manager}} +# Select the "Macros" tab +# Browse or search for the desired macro +# Click "Install" and restart FreeCAD + +=== Manual Installation === + +# Download the macro file ({{FileName|.FCMacro}} or {{FileName|.py}}) +# Place it in your FreeCAD Macro directory: +** Linux: {{FileName|~/.local/share/FreeCAD/Macro/}} +** Windows: {{FileName|%APPDATA%\FreeCAD\Macro\}} +** Mac: {{FileName|~/Library/Application Support/FreeCAD/Macro/}} +# Run via {{MenuCommand|Macro → Macros...}} + +== Popular Macros == + +=== CAD/CAM Tools === + +{| class="wikitable" +! Macro !! Description !! Author +|- +| SheetMetal Unfolder || Unfold sheet metal parts for manufacturing || Ulrich Brammer +|- +| Fasteners || Generate standard fasteners (screws, nuts, washers) || shaise +|- +| Curves Workbench || Advanced curve and surface manipulation || Chris_G +|} + +=== Productivity === + +{| class="wikitable" +! Macro !! Description !! Author +|- +| Draft Alignment || Align objects in Draft workbench || triplus +|- +| Sketcher Shortcuts || Keyboard shortcuts for Sketcher constraints || chennes +|- +| Bill of Materials || Generate BOM from 3D model || various +|} + +== Creating Macros == + + +To create your own macros: + +# Open the Macro editor: {{MenuCommand|Macro → Macros... → Create}} +# Write your Python code +# Save with {{FileName|.FCMacro}} extension +# Test with {{MenuCommand|Macro → Execute Macro}} + + +See the [https://freecad.github.io/DevelopersHandbook/ Developers Handbook] for Python scripting documentation. + +== Submitting Macros == + + +To add your macro to the official repository: + +# Fork the [https://github.com/FreeCAD/Addons Addons Repository] +# Add your macro to the {{FileName|Macro/}} directory +# Include a README with description and usage +# Submit a Pull Request + == Categories == @@ -104,7 +176,7 @@ If you have written a macro and want to include it in one of the categories on t
-Empty for now! +* {{MacroLink|Icon=Macro_Spring.png|Macro_Move_Assembly|Move Assembly}}: Move an Assembly using a simple control panel.
@@ -1004,4 +1076,33 @@ If the [[Std_AddonMgr|Addon Manager]] is not used, the macro can be installed ma [[Category:Macros{{#translation:}}]] -[[Category:Python Code{{#translation:}}]] \ No newline at end of file +[[Category:Python Code{{#translation:}}]] + +== Macro Recipes == + +=== Basic Template === + + +import FreeCAD +import FreeCADGui + +doc = FreeCAD.ActiveDocument +if doc: + obj = doc.addObject("Part::Box", "MyBox") + obj.Length = 10 + obj.Width = 10 + obj.Height = 10 + doc.recompute() + + +=== Selection Handling === + + +import FreeCADGui + +selection = FreeCADGui.Selection.getSelection() +for obj in selection: + print(f"Selected: {obj.Name}") + + +