libdrone — FreeCAD Cookbook
About¶
Complete step-by-step guide to modelling every libdrone printed part in FreeCAD 1.0.2. Teaches FreeCAD from zero with full UI interaction and beginner explanations. Follow with FreeCAD open on the other screen. Read each step fully before clicking anything. If something goes wrong: Ctrl+Z undoes the last action. Nothing is permanent until you save (Ctrl+S). FreeCAD is fully open source, runs locally on your computer — no cloud, no account, no licence that can change.
About¶
A complete build guide with full UI interaction and beginner explanations.
FreeCAD is fully open source, runs locally, and your computer. FCStd files are yours unconditionally — no cloud, no account, no licence that can change.
This Cookbook teaches FreeCAD from zero and guides you through modelling every libdrone printed part. Follow it with FreeCAD open on the other screen. Read each step fully before you click anything.
If something goes wrong: Ctrl+Z undoes the last action. Nothing is permanent until you save (Ctrl+S).
SCALING PHILOSOPHY - READ THIS BEFORE MODELLING ANYTHING¶
libdrone is designed as a scalable platform, not a fixed 6-inch product. The same architecture — Spitfire rod sandwich, Platform middle layer, Backplane exoskeleton, dual GX12-7 payload interface — is intended to work from 5-inch up to 10-inch and beyond. This section explains what scales and what does not, so the CAD you build now remains valid at any frame size.
FRAME-DRIVEN VARIABLES (scale with wheelbase)¶
These variables change when you scale the frame. Changing Wheelbase in the Spreadsheet cascades into all of them:
Wheelbase — the primary scale driver ArmShaftLength — derived from wheelbase and hub geometry RodLength — derived from wheelbase (verify in Assembly) PlatformAttachPostY — post pair positions track battery and fan positions, which track electronics layout (see below)
When you scale the frame, recalculate prop clearance from scratch. The stepped Platform width (40 mm narrow / 50 mm electronics) was calculated specifically for 330 mm wheelbase and 6-inch props. At every new scale, run the clearance geometry before committing to Platform width. The PRUSA guide and Master Spec contain the clearance calculation method.
ELECTRONICS-DRIVEN VARIABLES (scale-independent)¶
These variables are determined by the electronics, not the frame size. They stay roughly constant across all libdrone scales unless the electronics themselves change:
PlatformLength - set by nose-to-fan electronics layout, not wheelbase. A 10-inch libdrone uses the same FC, ESC, VTX, GPS. The Platform does NOT grow with the frame. StackPattern - FC/ESC bolt pattern (30.5 mm). Hardware-fixed. GX12_PositionY - connector position in electronics zone. Fixed. MIPIChannelWidth - HDZero cable width. Fixed. FanSlot - Gdstime 3010 dimensions. Fixed. BatteryDims - changes with battery choice, not frame scale. Larger frame = larger battery = recalculate rail geometry.
The critical insight: when scaling from 6-inch to 10-inch, the Platform length stays approximately the same. The arms get longer. The sandwich core gets larger. The Platform rides on top of a bigger core — but the electronics zone does not stretch.
PAYLOAD INTERFACE (scale-independent by design)¶
The dual GX12-7 standard is deliberately scale-independent:
GX12-7 connector geometry - identical at all scales Boss pad M3 spacing (20 mm) - identical at all scales Backplane post spacing - follows electronics zone, not frame
A payload built for libdrone 6 plugs into libdrone 10 without modification. This is the core commercial argument for the platform: buyers invest in payloads once, run them on any scale frame.
Preserve these two things at every scale and the payload ecosystem is compatible: 01. Dual GX12-7 A/B at the positions defined in the Variables file. 02. Two M3 boss pads at 20 mm spacing on the Backplane rear centreline.
WHAT REQUIRES HUMAN JUDGEMENT AT EACH SCALE¶
Not everything can be automated by changing a variable: Prop clearance — recalculate from geometry for every new wheelbase. Do not assume the Platform width is safe. Battery choice — larger frame carries larger battery. Rail geometry changes. Recalculate BattRailInnerWidth. EASA category — AUW determines category. Recalculate at each scale. A 10-inch libdrone will likely be A3. Plan accordingly. Motor and ESC — scale with frame. Update mass budget. Arm cross-section — may need to grow at larger scales for stiffness. ArmWidth and ArmHeight are variables — adjust if needed.
THE RECOMMENDED SCALING SEQUENCE¶
When building a new scale variant:
- Duplicate the .FCStd file. Rename: libdrone_[size]inch_V10.FCStd
- Open the Variables. Change Wheelbase only.
- Recalculate prop clearance manually. Adjust PlatformWidthElec if needed.
- Recalculate ArmShaftLength from new wheelbase geometry.
- Update RodLength (verify in Assembly — Box-in-Box check).
- Choose battery for new frame size. Update battery rail variables.
- Recalculate mass budget. Verify EASA category.
- Run the full Assembly verification (rod clearance, corner post check, chimney clearance). These checks are mandatory at every scale.
- Print coupons before printing full parts. The fit tests are more important at a new scale than at an iterated known scale.
CURRENT REFERENCE SCALE¶
This Cookbook documents the 6-inch reference build: Wheelbase: 330 mm. Props: HQProp 6×3×3. Battery: Tattu 1800mAh 6S. AUW bare: ~807 g (EASA A1). AUW + sensor payload: ~860 g (EASA A2). Platform: =Variables. PlatformLength long. Backplane: =Variables. BackplaneLength × =Variables. BackplaneWidth.
All modelling steps use variables from the Variables. They are correct at 330 mm and will remain correct at any scale if the Spreadsheet is updated following the sequence above.
PART 0 — FIRST LAUNCH & GLOBAL SETUP (DO THIS ONCE)¶
0.1 Start FreeCAD
• Windows: Start Menu → FreeCAD 1.0.2 → FreeCAD
• Linux Flatpak: Applications → FreeCAD (or run `flatpak run org.freecad.FreeCAD` )
0.2 Set Navigation Style
Menu: Edit → Preferences → Display → Navigation
• Navigation style: CAD
• Check: “Zoom at cursor”
Click OK.
0.3 Set Units
Menu: Edit → Preferences → General → Units
• Unit system: Standard (mm/kg/s)
• Number of decimals: 3
Click OK.
0.4 Show Workbench Selector & Toolbars
• Top toolbar left: Workbench dropdown (initially shows “Start”).
• You will switch between: Spreadsheet, Part Design, Part, Assembly.
0.5 Macro folder (Flatpak Linux only)
Path: ~/.var/app/org.freecad.FreeCAD/data/FreeCAD/Macro/
Menu: Tools → Macros → (note the Macro path displayed)
Copy any libdrone macros here; run via Tools → Macros → select → Execute.
0.6 Save discipline (important)
• Ctrl+S frequently. No autosave.
• Menu: File → Save a Copy before major edits (makes a safe restore point).
PART ONE — UNDERSTANDING FREECAD BEFORE YOU TOUCH ANYTHING¶
WHAT IS CAD?¶
CAD stands for Computer-Aided Design. It is a way of drawing objects in three dimensions so precisely that a machine — in our case a 3D printer — can manufacture them exactly.
A normal drawing shows what something looks like. A CAD model tells the computer exactly how big every surface is, to a fraction of a millimetre. That precision is what makes it useful.
WHAT IS FREECAD?¶
FreeCAD is a free and open source parametric 3D CAD program. Unlike Onshape:
It runs on your computer — nothing is in the cloud. Your files (. FCStd) are yours. They open in 20 years without an account. There is no subscription, no terms of service that can change. It is actively developed by an open community.
Download and install FreeCAD 1.0 from https://www.freecad.org/downloads.php Choose the stable 1.0 release for your operating system.
THE THREE FUNDAMENTAL IDEAS¶
Before anything else, understand these three ideas. Everything in FreeCAD builds on them.
IDEA 1: SKETCHES A sketch is a 2D drawing — like drawing on paper with a pencil and ruler. You draw shapes: lines, rectangles, circles, arcs. You add dimensions to make them precise. A sketch lives on a flat plane.
IDEA 2: FEATURES A feature is what you do to a sketch to make it 3D. The most common feature is PAD — you take your 2D sketch and push it into the third dimension. Another common feature is POCKET — like carving material away.
IDEA 3: THE MODEL TREE On the left side of the FreeCAD screen is a tree showing everything you have done, in order. This is called the Model Tree (FreeCAD calls it the "Model" panel). Every sketch and every feature appears here. You can double-click any item to go back and change it. This is what makes CAD powerful.
THE THREE AXES¶
In 3D space, every point has three coordinates: * X: left and right * Y: forward and backward * Z: up and down
FreeCAD shows coloured axes in the viewport: * Red arrow = X axis * Green arrow = Y axis * Blue arrow = Z axis
THE THREE STANDARD PLANES¶
When you create a new Body, FreeCAD gives you three standard planes:
- XY Plane: flat, like a floor
- XZ Plane: faces toward you, like a wall
- YZ Plane: faces to the right
You always start a sketch on one of these planes, or on a flat face of a part you have already created.
THE TOPOLOGICAL NAMING WARNING¶
FreeCAD has a known issue called Topological Naming. When you add or reorder features, references to edges and faces can silently break — a sketch that was attached to a face may detach, a fillet may lose its edge, a pocket may move.
FreeCAD 1.0 has substantially improved this, but has not fully eliminated it.
How to minimise the problem: 01. BUILD IN ORDER. Do not go back and insert features early in the tree after later features exist. Add features at the end of the sequence. 02. REFERENCE DATUM PLANES, not faces of existing features, wherever possible. If you need to cut at a specific Z height, create a datum plane at that height rather than referencing the face of a previous feature. 03. ATTACH SKETCHES TO PLANES, not to faces, for features that don't need to be on a specific face. 04. If the model breaks after editing: look at the Model Tree for yellow warning triangles. Click each warned feature to see what broke. Usually you need to re-select the reference it lost.
This is the main practical difference from Onshape. Plan your feature order before you start modelling. Do not worry about it — just be aware.
WORKBENCHES¶
FreeCAD uses the concept of Workbenches. A Workbench is a set of tools for a specific task. You switch between workbenches using the dropdown selector in the toolbar (top centre of the screen).
You will use three workbenches:
SPREADSHEET — for creating parametric variables (before any modelling) PART DESIGN — for solid modelling (sketches, pads, pockets, fillets) ASSEMBLY — for bringing parts together and verifying fit
The Workbench dropdown shows the current workbench. Change it any time. Switching workbench does not close or lose your work.
PART TWO — THE FREECAD SCREEN¶
Open FreeCAD. You will see:
TOP: Menu bar (File, Edit, View, Tools...) and a toolbar with icons.
Centre of toolbar: the Workbench selector dropdown (shows "Start" initially).
LEFT PANEL: Model Tree (also called Model panel). Shows the document structure. Initially contains just the document name.
CENTRE: The 3D viewport. Grey background.
BOTTOM: Status bar showing coordinates and snap information.
NAVIGATING THE VIEWPORT¶
FreeCAD has several navigation styles. We recommend CAD navigation (default) or Blender navigation. To check/change: Edit menu → Preferences → Display → Navigation → Navigation Style → CAD or Blender.
With CAD navigation (default):
ROTATE VIEW: Hold MIDDLE mouse button and drag. The model rotates. (Alternative: hold numpad keys 4/6/8/2 for precise rotation)
PAN (MOVE SIDEWAYS): Hold MIDDLE mouse button + CTRL and drag. (Alternative: hold SHIFT + MIDDLE mouse button)
ZOOM: Scroll the mouse wheel forward to zoom in, backward to zoom out.
LOOK AT A SPECIFIC FACE: Select a face (click it) then press numpad 0 to look straight at it. (Alternative: View menu → Standard Views → look at selected face)
FIT ALL TO VIEW: Press V then F, or use View → Standard Views → Fit All.
STANDARD VIEWS: Numpad 1 = Front view Numpad 2 = Rear view Numpad 3 = Right view Numpad 7 = Top view Numpad 0 = fit to selected face
IMPORTANT FREECAD KEYBOARD SHORTCUTS¶
These differ from Onshape:
Ctrl+Z = Undo Ctrl+Y = Redo V then F = Fit all to view Spacebar = Toggle selected item visibility S = (in Sketcher only) opens Sketch → Sketcher Geometries menu P = (in Sketcher) point-on-object constraint shortcut
In Part Design, tools are accessed from the Part Design menu or toolbar, not primarily by keyboard shortcuts. Use the toolbar or menus.
PART THREE — YOUR FIRST FREECAD DOCUMENT¶
STEP 3.1: INSTALL FREECAD¶
Download FreeCAD 1.0 from: https://www.freecad.org/downloads.php Linux Flatpak (Fedora): flatpak install flathub org.freecad. FreeCAD Macro folder: ~/.var/app/org.freecad. FreeCAD/data/FreeCAD/Macro/ First run: flatpak override org.freecad. FreeCAD --filesystem=home
No account required. No cloud. The program runs entirely on your computer.
STEP 3.2: CREATE A NEW DOCUMENT¶
File menu → New (Ctrl+N). A new empty document appears in the Model Tree, named "Unnamed".
File menu → Save As. Navigate to your libdrone project folder. Name: LD_V34. FCStd Click Save.
FreeCAD does NOT autosave. Save manually with Ctrl+S regularly. Before any major edit: File → Save a Copy → give it a version name. Recommended: save a copy before any session where you will make significant changes.
STEP 3.3: UNDERSTAND THE DOCUMENT STRUCTURE¶
FreeCAD documents can contain multiple Bodies, Spreadsheets, and Assemblies in one file. The structure we will build:
Spreadsheet (Variables) — all parametric variables (create this first, always) Body: Arm — the structural arm part Body: Arm Tab — tab parts (×8) Body: Arm Cover Active — cable-side cover (×4) Body: Arm Cover Passive — motor-side cover (×4) Body: X Body PCCF Base — X body PCCF layers (×3, identical) Body: X Body PETG Bottom — bottom impact layer Body: X Body PETG Top — clean top layer Body: Platform — middle functional layer Body: Backplane — lattice exoskeleton Body: GPS Camera Bracket — front bracket upright Body: Camera Tilt Plate — separate rotating tilt part Body: ASA Bumper — bumper sleeves (×4) Assembly — assembly for fit verification
Everything lives in one . FCStd file.
STEP 3.4: SET UP THE VARIABLES SPREADSHEET¶
▶ SHORTCUT — USE THE MACRO (recommended): Copy code/LD_V343_Variables. FCMacro to your FreeCAD Macro folder. Tools → Macros → LD_V343_Variables → Execute. The "Variables" spreadsheet appears with all 70+ variables already set. Skip the manual procedure below and jump to Part Four.
Reference any variable in a sketch dimension as: =Variables. ArmWidth (prefix is always "Variables." — the spreadsheet object name)
Manual procedure (if not using the macro): Workbench dropdown → Spreadsheet Spreadsheet menu → Create Spreadsheet Model Tree: right-click "Spreadsheet" → Rename → Variables → Enter Double-click Variables to open the grid. Column A = variable name (e.g. ArmWidth) Column B = value (e.g. 26) Right-click the B cell → Properties → Alias → type ArmWidth → OK Repeat for all variables in reference/LD_-_Variables_v246.md.
In FreeCAD variable names have no # prefix: use ArmWidth not #ArmWidth. When referencing in a sketch: type =Variables. ArmWidth FreeCAD substitutes the value automatically.
Save (Ctrl+S) before modelling anything.
PART FOUR — ROBUST MODELLING HABITS (DO THESE EVERY TIME)¶
2.1 Always sketch on base planes or Datum Planes for features that go through
the body. Avoid sketching on transient faces for through‑holes/slots.
2.2 Create and name datum planes clearly
Menu: Part Design → Datum → Datum Plane
Property panel (Data tab) → Label: e.g., DatumPlane_RodOuter_45deg → Enter
2.3 If a fillet/chamfer turns yellow in Model Tree
• Double‑click it → re‑select edges → OK
2.4 Solver help
Menu (while in Sketcher): Sketch → Sketcher Preferences → General → Solver messages
• Set to Full/Verbose
2.5 After using Part booleans
• Menu: Part → Refine Shape (or enable auto‑refine in Part Design Preferences)
• Model Tree: right‑click Body → Toggle Active Body (to continue in Part Design)
PART FIVE — MODELLING THE ARM¶
The arm is the most complex part. Build it step by step, one feature at a time.
The arm has these main sections: A. Shaft — the long body B. Motor head — wider, taller flared end C. Rod channels — two holes running full length D. Pinch slit — thin slot at motor end for tensioning bolt E. Motor mount bores — four holes for floating mount screws F. Counterbores and lateral rims — o-ring seating G. MR30 wire channel and strain relief port H. Longitudinal cable groove (dovetail, EMC separation) I. Bumper notch — recess at hub end
Build in this order. Do not skip ahead.
CREATE THE BODY¶
In the Workbench dropdown, select: Part Design.
Model menu → Body → Create Body. (Or Part Design toolbar → Create Body icon)
A "Body" appears in the Model Tree. Right-click it → Rename → type: Arm. This Body will contain all features of the arm.
STEP 5.1: SKETCH THE ARM SHAFT PROFILE¶
WHAT WE ARE DOING: Drawing the cross-section of the arm. Viewed end-on, it is a rectangle with rounded corners.
-
In the Model Tree, click "XZ_Plane" under the Body to select it. (XZ_Plane faces toward you — we sketch the arm cross-section here, then pad along Y.)
-
Sketch → New Sketch. (Or click the New Sketch icon in the toolbar.) A flat grid appears. You are in Sketch edit mode. The Model Tree shows "Sketch" being created under the Body.
-
In the Sketcher toolbar (now visible at top), find the Rectangle tool. Sketcher menu → Sketcher Geometries → Create Rectangle. OR: click the Rectangle icon in the Sketcher toolbar.
-
Choose "Centered Rectangle" from the dropdown. Click once at the origin (0, 0 — the cross point of the axes). Move your mouse out and click to set approximate size. The exact size does not matter yet — dimensions come next.
-
Now add precise dimensions. In Sketcher: Sketcher menu → Sketcher Constraints → Constrain Horizontal Distance. Click one horizontal edge of the rectangle. A dialog appears: type =Variables. ArmWidth → OK. The rectangle snaps to exactly 26 mm wide.
-
Sketcher menu → Sketcher Constraints → Constrain Vertical Distance. Click one vertical edge. Type: =Variables. ArmHeight → OK.
-
Add the rounded corners (Aero-Fillets): Sketcher menu → Sketcher Geometries → Create Fillet. Click each of the four corners one by one. Type radius: 3 → OK. Each corner rounds to 3 mm.
-
The sketch should now be FULLY CONSTRAINED. FreeCAD shows a message at the bottom: "Fully constrained". All sketch elements turn green (not white/yellow). White/yellow elements are still under-constrained — add more dimensions.
If the rectangle centre is not locked to the origin: Select the centre point of the rectangle + the origin point (click both while holding Ctrl). Sketcher → Constraints → Constrain Coincident. This locks the centre to origin.
- Click Close in the Sketcher panel (left side), or press Escape. The sketch closes and "Sketch" appears in the Model Tree.
WHAT YOU HAVE: A fully constrained ArmWidth × ArmHeight rectangle with 3 mm rounded corners, centred on the origin.
STEP 5.2: PAD THE SHAFT¶
WHAT WE ARE DOING: Pushing the sketch shape out into 3D.
-
Make sure the Sketch is selected in the Model Tree (click it).
-
Part Design menu → Additive → Pad. (Or click the Pad icon — a box with an upward arrow.)
-
The Pad dialog appears:
- Type: Dimension
- Length: 120 mm (working length — we will adjust when hub geometry is done)
- Symmetric: leave UNCHECKED (we want to pad in one direction)
- Reversed: check if the arrow points in the wrong direction in the viewport Click OK.
A solid bar appears in the viewport.
- Press V then F to fit view. Rotate the view (middle mouse + drag). You see a long rounded rectangular bar.
WHAT YOU HAVE: A solid bar with cross-section ArmWidth × ArmHeight, 120 mm working length.
STEP 5.3: SKETCH THE MOTOR HEAD PROFILE¶
WHAT WE ARE DOING: The motor end of the arm is wider and taller. We draw the larger profile, then loft (blend) from shaft to motor head.
-
Look at the arm in the viewport. One end is the MOTOR END. Click on the end face of the bar to select it.
-
Sketch → New Sketch. FreeCAD will offer to use the selected face — click OK.
-
Sketcher: draw a Centered Rectangle. Centre it on the face centre (click the centre point of the face — hover until you see the snap indicator at the geometric centre).
-
Set dimensions: Horizontal: =Variables. MotorHeadWidth → OK Vertical: =Variables. MotorHeadHeight → OK
-
Add 3 mm fillets to all four corners.
-
The origin of this sketch should coincide with the face centre. If not: Constrain the rectangle centre Coincident with the face centre point.
-
Click Close.
WHAT YOU HAVE: A MotorHeadWidth × MotorHeadHeight rounded rectangle on the motor end face — the target profile for the loft.
STEP 5.4: ADDITIVE LOFT THE MOTOR HEAD¶
WHAT WE ARE DOING: Blending the shaft cross-section to the motor head cross-section over MotorHeadTaper mm.
In FreeCAD, the loft works between two separate sketches at different positions. Currently both sketches are at the same location (motor end face). We need the motor head profile to be MotorHeadTaper mm further outward.
APPROACH — CREATE AN OFFSET DATUM PLANE:
- Part Design menu → Create a datum plane. (Part Design → Datum → Create a Datum Plane) In the Attachment dialog:
- Select: face of the existing sketch (the motor end face)
- Mode: Flat Face
- Offset: type =Variables. MotorHeadTaper in the Z field (moves the plane outward from the face by MotorHeadTaper mm)
Click OK. A datum plane appears MotorHeadTaper mm beyond the motor end face.
-
Click the new datum plane in the Model Tree to select it. Sketch → New Sketch. (Sketch on the datum plane.)
-
Draw the motor head profile again — identical to Step 4.3: Centered rectangle, MotorHeadWidth × MotorHeadHeight, 3 mm corner fillets, centred on origin of the plane. Click Close. This is the far profile for the loft.
-
Now create the Additive Loft: Part Design menu → Additive → Additive Loft.
-
In the Loft dialog:
- Profile section: click "Add Section"
- Select the motor end face of the existing shaft body
- Click "Add Section" again
- Select the new sketch on the datum plane
- Closed: UNCHECKED
- Ruled: UNCHECKED (smooth blend, not faceted) Click OK.
The motor head now smoothly blends from the shaft profile to the larger motor head profile over MotorHeadTaper mm.
WHAT YOU HAVE: An arm where the shaft transitions smoothly to a wider, taller motor head at one end. Check the Variables file for MotorHeadTaper value.
STEP 5.5: ADD ROD CHANNELS¶
WHAT WE ARE DOING: Two cylindrical channels run the full arm length at Z = +5.0 mm and Z = +2.0 mm above the arm neutral axis. These carry the 2 mm CF rods.
IMPORTANT ORIENTATION: Both channels are on the SAME SIDE of the neutral axis (both above — at +5.0 and +2.0 mm). FR and RR arms are the same printed part installed upside down — channels then appear at −5.0 and −2.0 mm. One print file for all four arms.
CREATE A DATUM PLANE FOR THE ROD SKETCH:
- We need to sketch circles at the correct Z heights. Part Design → Datum → Create a Datum Plane. Attachment mode: XZ_Plane (parallel to front face, offset 0 — this gives us the correct Y-Z plane to draw the channel cross-sections). Actually: we want to sketch on a plane that cuts across the arm length. Select XZ_Plane, offset = 0. This is the arm's own front face plane.
Alternative simpler approach: click the end face of the arm at the HUB END (the end opposite the motor head). This face faces along the arm length (along Y). Sketch circles here and pocket Through All along Y.
-
Click the HUB END face of the arm (opposite motor head). Select it. Sketch → New Sketch.
-
Draw two circles:
- Circle 1: centre at (0, +5.0 mm). Diameter: =Variables. RodDiaChannel
- Circle 2: centre at (0, +2.0 mm). Diameter: =Variables. RodDiaChannel
To position the centres precisely: Draw each circle, then use: Sketcher → Constraints → Constrain Vertical Distance from the X axis. Click the circle centre, then the X axis line. Set distance: 5.0 (or 2.0). Sketcher → Constraints → Constrain Horizontal Distance from the Y axis. Click the circle centre, then the Y axis. Set distance: 0 (on centreline).
-
Click Close.
-
Create a Pocket: Part Design menu → Subtractive → Pocket.
- Type: Through All
-
Direction: the pocket direction should run along the arm length (along Y).
If the direction arrow is wrong, check "Reversed" in the dialog. For "Through All (Symmetric)" check that it cuts the full length.
Click OK.
Two cylindrical channels now run the full arm length.
- ADD ENTRY CHAMFERS: Part Design → Chamfer. Select the circular edge at each end of each channel (2 channels × 2 ends = 4 edges total — hold Ctrl to multi-select edges). Size: 0.5 mm. Click OK.
WHAT YOU HAVE: Two rod channels at Z +5.0 and +2.0 mm, full arm length.
STEP 5.6: ADD THE PINCH SLIT¶
WHAT WE ARE DOING: At the motor end, a thin slot allows the arm to flex slightly and clamp the carbon rods when an M3 bolt is tightened.
-
Click on the TOP face of the motor head. Part Design → New Sketch.
-
Draw the slit — a narrow rectangle straddling the centreline:
- Width: =Variables. PinchSlit (0.5 mm)
- Height: 8.0 mm
- Centre the rectangle on the vertical (Z) axis.
To centre it: draw the rectangle, then: Sketcher → Constraints → Symmetric — select both vertical sides of the rectangle and the Y axis. The rectangle snaps to be centred.
-
Click Close.
-
Part Design → Pocket.
- Type: Dimension
- Depth: 5.0 mm (into the motor face, not through-all)
-
Direction: inward (into the motor head body) Click OK.
-
ADD THE CLAMP BOLT TAB: Click on the SIDE face of the motor head (narrow face, same side as slit). Part Design → New Sketch. Draw a rectangle: 5 mm wide × 5 mm tall, centred on the slit location. Click Close. Part Design → Pad. Length: 5 mm (tab sticks out from side face). OK.
-
Click on the outer face of the new tab. Part Design → New Sketch. Draw a circle: diameter 3.3 mm (M3 clearance). Centre on the tab centre. Click Close. Part Design → Pocket. Type: Through All. OK.
WHAT YOU HAVE: A pinch slit plus a side tab with M3 bolt hole. Tightening the M3 bolt squeezes the slot and clamps the rods.
STEP 5.7: ADD THE MOTOR MOUNT BORES¶
WHAT WE ARE DOING: Four holes through the motor head for the M3 motor screws. Deliberately oversize (6.5 mm for M3) — the screw floats inside. This is the core of the vibration isolation system.
Verify the actual motor hole pattern from your BrotherHobby Avenger 2507 specification sheet before modelling. Typical: 4 × M3 on 12 mm spacing (centres at ±6 mm from motor centreline).
-
Click on the TOP face of the motor head. Part Design → New Sketch.
-
Draw 4 circles, each Ø=Variables.MotorBoreDia (6.5 mm):
- Circle 1: (X=+6, Z=+6) relative to the motor head centre
- Circle 2: (X=+6, Z=−6)
- Circle 3: (X=−6, Z=+6)
- Circle 4: (X=−6, Z=−6)
Efficient approach: Draw one circle at (+6, +6), fully dimension it. Then Sketcher → Symmetry: mirror across the vertical axis to get (−6, +6). Select both circles + the horizontal axis → Symmetry: get all four.
-
Click Close.
-
Part Design → Pocket. Type: Through All. Verify the direction arrow points through the full motor head height (18 mm). Click OK.
-
CHECK WALL THICKNESS: Use the Measure tool (Tools → Measure, or the Measure icon in Part Design). Click two edges/points to see distance. Distance from each bore edge to the outer motor head wall must be ≥ 6.0 mm. If below 6 mm: open the Spreadsheet, change MotorHeadWidth from 35 to 36. The entire model updates. This is the power of parametric design.
WHAT YOU HAVE: Four 6.5 mm holes through the motor head. Motor screws float.
STEP 5.8: ADD THE O-RING COUNTERBORES AND LATERAL RIMS¶
WHAT WE ARE DOING: Shallow recesses (1.5 mm deep) seat o-rings flush. A thin raised rim (0.5 mm tall) prevents o-ring migration under side loads.
TOP FACE COUNTERBORES:
-
Click TOP face of motor head. Part Design → New Sketch.
-
Draw 4 circles, each Ø=Variables.ORingCBoreDia (7.0 mm), concentric with the 4 motor bores.
To make them concentric with the existing bore centres: Draw a circle near the first bore, then: Sketcher → Constraints → Constrain Coincident. Click the new circle's centre, then click the edge of the existing bore circle. FreeCAD snaps the centres together. Set diameter: =Variables. ORingCBoreDia. Repeat for all four.
- Click Close. Part Design → Pocket. Depth: =Variables. ORingCBoreDepth (1.5 mm). Blind (not through all). OK.
TOP FACE LATERAL RIMS:
-
Click TOP face. Part Design → New Sketch.
-
For each of the four counterbores, draw two concentric circles:
- Inner circle: Ø7.0 mm (coincident with counterbore edge)
-
Outer circle: Ø8.0 mm The annular region between them is the rim profile. Repeat for all four — 8 circles total forming 4 annular rings.
-
Click Close. Part Design → Pad. Length: =Variables. ORingRimHeight (0.5 mm). Direction: ADD material outward from top face. OK.
BOTTOM FACE — COUNTERBORES AND RIMS:
- Rotate view to see the BOTTOM face of the motor head. Click it. Repeat steps 1–6 for the bottom face (identical geometry).
WHAT YOU HAVE: Matching counterbores and lateral rims on both faces.
STEP 5.9: ADD THE MR30 WIRE CHANNEL AND STRAIN RELIEF PORT¶
WIRE CHANNEL ON MOTOR END FACE:
-
Click the END FACE of the motor head (faces the motor). New Sketch.
-
Draw a rectangle:
- Width: 4.0 mm, centred on the arm neutral axis (X = 0)
-
Length: from bore exit to edge of end face (~15 mm)
-
Close. Part Design → Pocket. Depth: 3.0 mm (blind). OK.
STRAIN RELIEF PORT (průchodka):
-
Click the SIDE FACE of the motor head (the narrow face with the pinch tab). New Sketch.
-
Draw a circle:
- Diameter: =Variables. CablePortDia (5.5 mm)
- Position: centred on the arm neutral axis (Z = ArmHeight/2 from bottom)
-
Along length: 8–10 mm inboard from the motor end face
-
Close. Part Design → Pocket. Type: Through All. Direction: through the side wall (perpendicular to arm long axis). OK.
-
Part Design → Chamfer. Select both circular edges of the port (entry and exit). Size: 1.0 mm. OK.
WHAT YOU HAVE: Wire routing channel on motor end face + chamfered strain relief port through the side wall.
STEP 5.9b: ADD THE LONGITUDINAL CABLE GROOVE (EMC)¶
WHAT WE ARE DOING: A dovetail groove runs the full length of the arm shaft underside. Motor phase wires sit inside, held by the arm cover. This enforces signal/power separation by geometry — a key EMC feature.
WHICH FACE: The BOTTOM face of the arm shaft (opposite the rod channels). The groove faces DOWN in all four arm positions — consistent assembly.
-
Click the BOTTOM face of the arm shaft. New Sketch.
-
Draw the dovetail profile (a trapezoid, wider at the bottom):
-
Draw a rectangle: =Variables. CableGrooveWidth wide (4.5 mm) ×
=Variables.CableGrooveDepth deep (2.0 mm). Centre on X axis.
-
Add the dovetail angle by moving the bottom two corners outward.
The offset is CableGrooveDepth × tan(CableGrooveAngle) ≈ 2.0 × tan(8°) ≈ 0.28 mm.
In Sketcher: after drawing the basic rectangle, delete the bottom line. Draw a new wider bottom line: CableGrooveWidth + 2×0.28 mm = ~5.06 mm wide. Connect it to the sides with diagonal lines. Use Symmetric constraint to keep it centred. Add the angle with an Angular constraint: select the side line and the vertical axis, set angle to 8°.
-
Close.
-
Part Design → Pocket. Type: To Face — select the start face of the motor head loft. This stops the groove at the shaft/motor-head transition. (Alternatively: measure the shaft length and use a specific depth.) OK.
-
Part Design → Chamfer. Select the two top edges of the groove opening at the hub end. Size: 0.5 mm. OK.
WHAT YOU HAVE: Dovetail cable groove on arm underside. EMC separation by geometry from hub to motor head transition.
STEP 5.10: ADD THE TPU BUMPER NOTCH¶
-
Click the HUB END face. New Sketch.
-
Draw a rectangle:
- Width: =Variables. ArmWidth (full arm width, 26 mm)
- Height: 4.0 mm (shallow band across full width)
-
Centre on the face.
-
Close. Part Design → Pocket. Depth: 2.0 mm. OK.
WHAT YOU HAVE: A notch at the hub end. The ASA bumper clips here.
STEP 5.11: REVIEW YOUR ARM¶
Press V then F to fit view. Rotate and inspect from all directions.
Check list (use Measure tool for each): □ Shaft profile: ArmWidth × ArmHeight with 3 mm corner fillets □ Motor head: MotorHeadWidth × MotorHeadHeight, MotorHeadTaper transition □ Rod channels: 2 × Ø2.2 mm, Z +5.0 and +2.0 mm from arm neutral axis, full length, 0.5 × 45° chamfers both ends □ Pinch slit: 0.5 mm wide × 8 mm long × 5 mm deep, motor end, centred □ Clamp bolt tab: 5 × 5 mm boss, Ø3.3 mm through hole □ Motor bores: 4 × Ø6.5 mm, 12 mm spacing, through motor head □ Counterbores: 4 × Ø7.0 mm × 1.5 mm deep, BOTH faces □ Lateral rims: Ø7.0–8.0 mm × 0.5 mm tall, BOTH faces □ Wire channel: 4 × 3 mm groove, motor end face □ Strain relief port: Ø5.5 mm, side face, 1.0 mm chamfers □ Cable groove: dovetail 4.5 × 2.0 mm (8° walls), shaft underside, full length □ Bumper notch: 26 × 4 mm × 2 mm deep, hub end face
Save the document (Ctrl+S).
STEP 5.12: MODEL THE ARM TAB¶
Create a new Body: Part Design → Body → Create Body. Rename: Arm Tab.
The tab has: * Body: 22 × 16 mm cross-section, 20 mm long (CRITICAL: height = ArmHeight = 16 mm — tab fills T-slot completely) * T-lock extension at inner tip * Rod channels (same pattern as X body — Through All) * M2 screw holes * Shaft pocket (1 mm deep, outer face)
Steps follow the same Sketch → Pad / Pocket pattern. Print orientation for the tab: HORIZONTAL (layers perpendicular to pull-out). See PRUSA guide for orientation details.
STEP 5.13: ARM COVER ACTIVE (PETG) — ×4¶
— separate Body per arm, ×4
These clip over the dovetail cable groove on the arm shaft underside,
trapping the motor phase wire bundle.
Part Design → Body → rename: Arm Cover Active
Select XZ_Plane → New Sketch
• Draw the dovetail groove cover profile:
Outer rectangle: ArmWidth × 6 mm (cover width × height), centred on X axis
Inner dovetail: matches arm groove — 4.5mm top width, 8° walls, 2mm deep
The cover snaps over the groove — friction fit, retained by 2×M2 screws
Close → Part Design → Pad → ArmShaftLength (125 mm) → OK
M2 screw holes (for retention):
Top face → New Sketch → 2 × Ø2.0 circles at X=±20mm from centre → Pocket 4 mm → OK
Heat-set insert bores on cover INNER face:
Inner face → New Sketch → 2 × Ø3.0 circles (M2 insert bore) → Pocket 4 mm → OK
Print: PETG Natural, FLAT orientation, 4 perimeters, 20% Gyroid.
⚠ CRITICAL ORIENTATION: print flat so layers are parallel to the dovetail
slide direction — this maximises resistance to the clip-on/off load.
STEP 5.14: ARM COVER PASSIVE (PETG-CF) — ×4¶
⚠ FFP3 respirator MANDATORY for PETG-CF printing and post-processing.
(PETG-CF) — separate Body per arm, ×4
The passive cover sits over the motor head on the o-ring boss side.
It does NOT contact the arm surface — it contacts ONLY the o-ring bosses.
The air gap between cover and arm face is what makes the floating mount work.
⚠ FFP3 respirator MANDATORY for PETG-CF printing and post-processing.
Part Design → Body → rename: Arm Cover Passive
Select XZ_Plane → New Sketch
• Outer rectangle: MotorHeadWidth × MotorHeadHeight, 3mm corner fillets
• Offset inward 2mm: Sketcher → Tools → Offset → −2mm (creates 2mm wall)
Close → Part Design → Pad → 8 mm → OK
M3 motor screw clearance holes (4 off — float through cover into motor):
Front face → New Sketch → 4 × Ø3.3 at motor hole pattern positions → Pocket Through All → OK
Nyloc nut capture pockets (bottom face):
Bottom face → New Sketch → 4 × hex profiles (5.7mm AF) at motor hole positions
→ Pocket 2.6 mm (blind) → OK
Print: PETG-CF, FLAT, 6 perimeters, 15% Gyroid.
After print: verify o-ring boss contact surfaces are flat and clean.
Verify air gap between cover inner face and arm surface before assembly.
PART SIX — MODELLING THE X BODY SANDWICH¶
The sandwich is five layers. Three Part Bodies, used as follows: X_Body_PETG_Bottom — 1 copy, 3 mm, impact face, rod interference fit in core X_Body_PCCF_Base — 3 copies, 3 mm each (print 3 identical parts) X_Body_PETG_Top — 1 copy, 4 mm, clean top surface (V2.4.6: Platform is separate)
Total stack: 3+3+3+3+4 = 16 mm = SandwichHeight = ArmHeight ✓
OVERVIEW: THE X PLAN¶
The X body plan viewed from above: * A 60 × 60 mm square core at centre * Four arm extensions at 45° diagonals: 40 mm wide × 35 mm long each * T-slot pockets in each extension: opens at outer edge, runs 20 mm inward * Rod channels: four at Z +5.0, +2.0, −2.0, −5.0 mm (two pairs, crossing) * Sandwich bolt holes: 4 × Ø3.3 mm
In FreeCAD, you model ONE of the PCCF layers, verify it, then use it three times in the assembly (insert same Body three times with different placements).
STEP 6.1: CREATE THE BODY¶
Part Design → Create Body. Rename: X Body PCCF Base.
STEP 6.2: SKETCH THE X BODY PLAN¶
-
Select XY_Plane (Top plane in FreeCAD). New Sketch.
-
Draw the core: Centered Rectangle: 60 × 60 mm. Centre on origin.
-
Draw the four arm extensions (one at each 45° diagonal corner): For each extension: draw a rectangle 40 × 35 mm, oriented at 45°.
FreeCAD approach for 45° oriented rectangle: - Draw a construction line at 45° from a core corner outward. - Draw the rectangle along this line (use Constrain Equal and Angular
constraints to orient the extension correctly).
TIP: Draw one extension completely, then use: Sketcher → Tools → Create Carbon Copy (or symmetry/array tools) to replicate it. Or: manually draw all four using construction lines at 45°, 135°, 225°, 315° from the core corners.
-
Trim overlapping lines (Sketcher → Geometries → Trim Edge — click any line segment to remove it). Clean up until the outline is a single closed shape.
-
Close sketch. Part Design → Pad. Length: =Variables.PCCFLayerThick (3 mm). OK.
STEP 6.3: ADD T-SLOT POCKETS¶
One T-slot per arm extension. Opens at outer edge, runs 20 mm inward.
For EACH of the four arm extensions:
-
Click TOP face of the extension. New Sketch.
-
Draw the T-slot profile (viewed from above): a. SLOT BODY: Rectangle 22.4 mm wide × 20 mm deep, centred on extension
centreline. Outer edge OPEN (aligns with extension outer edge — the slot opens outward; tab slides in from outside).
b. T-LOCK POCKET: At the inner end of the slot, a wider pocket:
38.4 mm wide × 4.2 mm deep. Centred on slot centreline.
MUST be wider than the slot body — this is the T-lock.
The combined shape looks like a T from above.
-
Close. Part Design → Pocket. Type: Through All. OK.
-
Repeat for all four arm extensions.
CHECK WALL THICKNESS (Measure tool): * Wall between T-slot edge and extension outer edge: ≥ 3 mm each side * Wall around T-lock pocket: ≥ 2 mm at corners
STEP 6.4: ADD ROD CHANNELS¶
Four CF rods at Z = +5.0, +2.0, −2.0, −5.0 mm. Two pairs, crossing at 45° through the core. They must NOT touch at the crossing.
For each of the four rod channels:
-
Select the END FACE of one arm extension (the face at the outer edge, facing diagonally outward). New Sketch.
-
Draw 1 circle at the correct Z offset:
- Diameter: =Variables. RodDiaChannel (2.2 mm)
-
Z position from the layer base:
Layer midplane = 1.5 mm from base (3 mm layer / 2) Z +5.0 mm above neutral axis = 1.5 + 5.0 = 6.5 mm from base face Z +2.0 mm = 1.5 + 2.0 = 3.5 mm from base face Z −2.0 mm = 1.5 − 2.0 = −0.5 mm (below base — outside this layer) Z −5.0 mm = 1.5 − 5.0 = −3.5 mm (below base — outside this layer)
NOTE: In a 3 mm layer, the Z −2.0 and Z −5.0 channels are in the ADJACENT layers (not this one). Each layer only contains the channels that fall within its 3 mm thickness. Plan which channels are in which layer carefully. For the PCCF Base layers: all four channels pass through (they span the full assembly height). Use Through All pocket along the diagonal direction.
-
Part Design → Pocket. Type: Through All. IMPORTANT: Direction must be along the 45° arm axis (diagonal direction). In FreeCAD, set a custom direction: In the Pocket dialog, change Direction from "Sketch Normal" to a custom direction. Click the edge of the arm extension along the arm axis — FreeCAD uses this edge direction for the pocket.
-
ADD CHAMFERS: 0.5 × 45° at both ends of each channel. Chamfer tool, select all four circular exit edges (2 channels × 2 ends at each axis).
-
Repeat for the other arm axis (perpendicular 45° diagonal).
VERIFICATION — BOX-IN-BOX: After modelling, create a simple Assembly (see Part Nine) and insert two cylinders (Ø2.0 mm × 260 mm) representing the rods. Confirm that at the crossing in the core, the cylinders do not intersect. Minimum gap: 0.3 mm.
STEP 6.5: ADD SANDWICH BOLT HOLES¶
Four M3 bolts run through ALL layers, compressing the sandwich.
Positions (from hub centre): (±18, ±18) mm.
- Click TOP face. New Sketch.
- Draw 4 circles: Ø 3.3 mm at (±18, ±18).
- Close. Part Design → Pocket. Through All. OK.
Rename Body: "X Body PCCF Base". Save (Ctrl+S).
STEP 6.6: MODEL THE PETG BOTTOM LAYER¶
Create new Body. Rename: X Body PETG Bottom.
IDENTICAL to PCCF Base EXCEPT:
DIFFERENCE 1 — ROD INTERFERENCE FIT IN CORE ZONE: In the core crossing zone (60 × 60 mm central area), rod channels are =Variables. RodDiaChannelCore (2.1 mm) instead of 2.2 mm.
Model with two features: Feature A: Pocket, Ø2.2 mm, full diagonal length, Through All. Feature B: Pocket, Ø2.1 mm, limited to core zone only (set depth to core zone length, not Through All). Applied after Feature A — the 2.1 mm cut takes precedence in the core overlap zone.
DIFFERENCE 2 — HEX NUT CAPTURE POCKETS: Bottom face. 4 pocket positions at sandwich bolt hole positions. M3 hex nut: 5.5 mm across flats, 2.4 mm thick.
- Click BOTTOM face. New Sketch.
- At each bolt hole position, draw a hexagon: Sketcher → Geometries → Create Polygon. Set 6 sides. Set circumradius = 5.7/2 = 2.85 mm (across flats = 5.7 mm). Centre coincident with bolt hole position.
- Close. Part Design → Pocket. Depth: 2.6 mm (blind). OK.
Save. Rename: "X Body PETG Bottom".
STEP 6.7: MODEL THE X BODY PETG TOP LAYER¶
Create new Body. Rename: X Body PETG Top.
V2.4.6: This layer is SIMPLE. All platform features are in the separate Platform Body (Steps 6.9–6.18). Do NOT add GX12 chimneys, battery rails, fan slot, or wire channels here.
Start from same plan geometry as PCCF Base (Steps 6.2–6.5 apply: X plan, T-slot pockets, rod channels, sandwich bolt holes). Then add these UNIQUE features:
THICKNESS: =Variables. PETGTopLayerThick (4.0 mm).
STACK PATTERN HOLES (for FC/ESC standoffs): 01. TOP face. New Sketch. 02. Draw 4 circles: Ø3.3 mm on the 30.5 mm stack pattern, centred on body centre. 03. Through All pocket. OK.
GPS/CAMERA BRACKET MOUNT HOLES: 04. TOP face. New Sketch. 05. Draw 2 circles: Ø3.3 mm at Y = front centreline, X = ±10 mm (20 mm spacing). 06. Through All pocket. OK.
SENSOR MAST BOSS PADS: The mast attaches via 2 × M3 screws into heat-set inserts. Bosses provide the insert depth that the 4 mm flat layer cannot alone.
- TOP face. New Sketch.
- Draw 2 circles: Ø9.0 mm, at (X = ±10 mm, Y = rear centreline).
-
Close. Part Design → Pad. Length: 7.0 mm upward. OK. (Boss rises above top face.)
-
Click top face of each new boss. New Sketch. Draw Ø4.6 mm circle concentric on each boss.
-
Pocket: 5.5 mm deep (blind — does not go through). OK.
-
Part Design → Chamfer. Select top rim of each bore: 0.5 × 45°. OK.
INSTALL HEAT-SET INSERTS AFTER PRINTING: 2 × M3 × 4 mm brass heat-set inserts. Soldering iron at 200–210°C. Press flush. Cool 60 s undisturbed.
FEATURE VERIFICATION: □ Rod channels: 4 × Ø2.2 mm — verify clear □ T-slot pockets: 4 — verify tab slide-fit □ Stack holes: 4 × Ø3.3 mm on 30.5 mm pattern □ Bracket holes: 2 × Ø3.3 mm, front centreline, 20 mm spacing □ Mast boss pads: 2 × Ø9 mm × 7 mm tall, bores 4.6 mm × 5.5 mm deep □ Sandwich bolt holes: 4 × Ø3.3 mm
Save. Rename: "X Body PETG Top".
PART SEVEN — MODELLING THE PLATFORM¶
The Platform is the middle layer of the three-layer architecture. A single PETG part (=Variables. PlatformLength long, stepped width: =Variables. PlatformWidthNarrow nose/battery zone, =Variables. PlatformWidthElec electronics zone from Y = =Variables. PlatformStepY). Carries ALL functional features.
NOTE ON SCALING: PlatformLength is electronics-driven, not frame-driven. It stays approximately constant across all libdrone scales. Do not scale it with Wheelbase. See Scaling Philosophy section.
Create new Body. Rename: Platform.
Coordinate reference: body centre = X body centre = Y = 0. Platform runs from nose (+50 mm bracket mount) to tail (check =Variables. PlatformLength in Variables file), total length =Variables. PlatformLength. Width: =Variables. PlatformWidthNarrow for nose/battery zone
=Variables.PlatformWidthElec from Y = =Variables.PlatformStepY to tail
STEP 7.1: BASE¶
- Select XY_Plane. New Sketch.
- Draw the stepped plan:
- Nose/battery zone: 40 mm wide × 94 mm long (Y = +50 to −44 mm)
- Electronics zone: 50 mm wide × 189 mm long (Y = −44 to −233 mm) Both centred on X = 0. The step at Y = −44 mm joins the two rectangles. Draw both rectangles, merge them into a single closed outline using Trim.
- Close. Part Design → Pad. Length: =Variables. PlatformThick. OK.
STEP 7.2: BATTERY RAILS¶
Battery: 78 × 40 × 53 mm. Front at Y = +39 mm, rear at Y = −39 mm. Exits RIGHT.
LEFT RAIL: Inner face at X = −20.5 mm. Wall 3 mm. Height 53 mm. RIGHT RAIL: Mirror of left rail. ENDSTOP WALL at nose end of right rail. LATERAL STRAP SLOTS: 20 mm wide, through full rail height, centred at X = 0. Cut Through All from top face.
Steps: 01. Click TOP face of Platform. New Sketch. Draw left rail profile: a tall rectangle at X = −20.5 to −23.5 mm, Y = −39 to +39 mm (battery zone length), height dimension 53 mm. 02. Close. Part Design → Pad. Length: 53 mm (rail height). OK. 03. Add right rail (mirror of left — Part Design → Mirrored, YZ_Plane). OK. 04. Add endstop wall: small rectangle on nose end of right rail. Pad 53 mm. OK. 05. Add strap slots: sketch on TOP face of rails, cut pockets Through All.
VERIFY: Battery (40 mm) in 41 mm inner width. 0.5 mm clearance per side. Exit clearance: battery right face to nearest arm root ≥ 40 mm.
STEP 7.3: MIPI CHANNEL¶
Top face: rectangle 16 mm wide × full Platform length, on centreline. Pocket depth: 1.5 mm. Blind. OK. Verify ≥ 2.5 mm material below channel floor.
STEP 7.3b: WIRE CHANNELS¶
Two channels, top face, nose-to-tail: LEFT at X = −20 mm from centreline → SIGNAL wires (GPS, UART, I2C) RIGHT at X = +20 mm from centreline → POWER wires (battery, phase)
Each: 4 mm wide × 1 mm deep. Pocket, Blind depth 1 mm. OK. Label with embossed text "SIG" and "PWR" if desired (Part Design → Pad on text sketch).
STEP 7.3c: BATTERY LEAD RELIEF NOTCH¶
At rear of battery zone (Y = −39 mm, centre of Platform): 8 × 4 mm notch, Through All. 0.5 × 45° chamfers on all edges.
STEP 7.4: GX12-7 CHIMNEYS (A LEFT, B RIGHT) — D-D BORE PROFILE¶
POLARITY: GX12-7 MALE panel mount installs in drone (pins face upward toward payload). BORE PROFILE: D-D shape (circle with two flats) — NOT a simple round hole. This is critical — the flats prevent the connector rotating under plug/unplug loads.
WHAT WE ARE DOING: Creating two chimney housings that hold the payload connectors. The chimney is a tube extending below the Platform, with a boss above it. The bore is D-D shaped to match the anti-rotation flats on the male connector body.
Boss (top face): Click TOP face → New Sketch → circle Ø14 mm at (−25, −66) → Pad 3 mm → OK Rename datum: DatumPlane_ChimneyA
D-D bore through boss and Platform base: Click TOP face of boss → New Sketch • Draw circle Ø =Variables. GX12ChimneyBoreOD (11.87 mm) at connector position • Add two horizontal lines at Z = ±=Variables. GX12ChimneyBoreFlatFlat/2 (±5.40 mm)
from centre — these define the flat faces
• Trim the circle arcs outside those two lines • Result: D-D profile (circle with two parallel flats) → Pocket Through All → OK
Chimney tube (bottom face, downward): Click BOTTOM face of Platform → New Sketch Draw annular ring: Ø18 mm outer / Ø11.87 mm inner at connector position → Pad 25 mm DOWNWARD (check Reversed in dialog) → OK
Wire exit slot: Click bottom face of chimney → New Sketch Draw 6×4 mm rectangle facing LEFT (SIG side) for Connector A → Pocket Through All → OK
Mirror for Connector B (X = +25 mm): Mirror all chimney features across YZ_Plane for Connector B Edit Connector B wire exit: slot faces RIGHT (PWR side)
After printing: install GX12-7 MALE connector with double nut + Loctite 243 blue. Test: connector body must NOT rotate in bore. If it rotates: reduce GX12ChimneyBoreFlatFlat by 0.1 mm in Variables and reprint Coupon 10.
WHAT YOU HAVE: Two chimney housings with D-D bore profiles, Connector A left (X=−25 mm) and Connector B right (X=+25 mm), both at Y=−66 mm.
STEP 7.5: FAN SLOT¶
At Y = −138 to −148 mm, rear-facing: 30 × 30 mm opening. Through All from rear face. 0.5 × 45° chamfers on all edges. Wire channel: 3 × 2 mm pocket from slot toward LEFT (signal) zone.
STEP 7.6: ATTACHMENT POSTS¶
Three post pairs, integral to Platform: Post pair A: Y = +39 mm, X = ±17 mm Post pair B: Y = −39 mm, X = ±17 mm Post pair C: Y = −148 mm, X = ±17 mm
Each post: Ø6 mm cylinder, 54 mm tall (battery 53 mm + 1 mm clearance). M3 bore: Ø3.3 mm through the centre top (Pocket from top face, 15 mm deep).
- Click TOP face. New Sketch. Draw 2 circles Ø6 mm at X = ±17 mm, Y = +39 mm. Close. Part Design → Pad. 54 mm upward. OK.
- Click TOP face of the two new posts. New Sketch. Draw 2 circles Ø3.3 mm concentric on post centres. Close. Part Design → Pocket. 15 mm deep. OK.
- Repeat for post pairs B (Y = −39 mm) and C (Y = −148 mm). (Or: select both post bodies after step 1 and use Mirrored/Linear Pattern to create all three pairs more efficiently.)
VERIFY post X positions (±17 mm) clear the battery rail inner walls and strap slots.
STEP 7.7: BRACKET MOUNT HOLES¶
At Platform nose (Y = +50 mm): 2 × Ø3.3 mm, X = ±10 mm (20 mm spacing). Through All pocket. OK.
STEP 7.8: PLATFORM SUMMARY¶
Print: PETG Natural. Face-up on build plate. Supports: inside both GX12-7 chimney bores ONLY.
Battery rails: LEFT + RIGHT, 53 mm tall, 41 mm inner width Endstop wall: nose end of RIGHT rail Lateral strap slots: 20 mm wide, through rail height MIPI channel: 16 × 1.5 mm, centreline, full length Wire channels: LEFT (signal) + RIGHT (power), 4 × 1 mm Battery lead notch: 8 × 4 mm, chamfered Connector A chimney: Ø18 mm OD / 25 mm deep at X=−25 mm, Y=−66 mm, exit LEFT Connector B chimney: Ø18 mm OD / 25 mm deep at X=+25 mm, Y=−66 mm, exit RIGHT Fan slot: 30 × 30 mm at Y=−138 to −148 mm Attachment posts: 3 pairs at Y=+39, −39, −148 mm, X=±17 mm, 54 mm tall Bracket holes: 2 × Ø3.3 mm at nose
Save (Ctrl+S).
PART EIGHT — MODELLING THE BACKPLANE¶
The Backplane is the top layer — a diamond/hexagonal PETG lattice crash exoskeleton. Clips onto the three Platform post pairs via M3 screws. Payload modules mount on top.
Create new Body. Rename: Backplane. Dimensions: =Variables. BackplaneLength × =Variables. BackplaneWidth. Spans Y = +39 mm (post pair A) to Y = −148 mm (post pair C). Beam: 3 mm wide, 1.5 mm thick. ~65% open area. ~7 g. PETG Natural.
NOTE ON SCALING: Backplane dimensions follow the electronics zone, not the frame. BackplaneWidth matches PlatformWidthElec. BackplaneLength spans the post pairs — which are set by electronics layout. Neither dimension scales with Wheelbase. See Scaling Philosophy section.
STEP 8.1: LATTICE SKETCH¶
The lattice is the most complex sketch in the project. Take your time.
-
Select XY_Plane. New Sketch.
-
Draw the outer boundary: =Variables.BackplaneLength × =Variables.BackplaneWidth rectangle on centreline. Centre at origin.
-
Draw the longitudinal spine beams: 3 mm wide lines along both long edges. Left edge: X = −25 to −22 mm (3 mm wide). Right edge: X = +22 to +25 mm.
-
Draw the transverse ribs: 10 ribs, 20 mm spacing, each 3 mm wide, full width (=Variables. BackplaneWidth). Span from Y = −148 mm (post pair C) to Y = +39 mm (post pair A). Adjust spacing to distribute evenly across =Variables. BackplaneLength.
-
Draw diagonal beams in alternating bays between ribs: In even-numbered bays: diagonal at +45°. In odd-numbered bays: diagonal at −45°. Each diagonal: 3 mm wide, runs from one rib to the adjacent rib. Result: diamond/zigzag pattern.
TIP: Draw the beam outline as closed polygons (parallelograms at 45°). Use Equal constraints to keep widths consistent.
-
The sketch defines SOLID regions — all beam outlines filled. Open areas between beams are void (not drawn — they are holes by default).
-
Close sketch. Part Design → Pad. Length: 1.5 mm. OK.
BATTERY ZONE OPEN RIGHT EDGE (Y = +39 to −39 mm): 08. The RIGHT spine beam must NOT exist in this zone. If you modelled a continuous right spine beam, cut it: New Sketch on top face. Draw a rectangle covering the right spine in the battery zone only. Pocket: Through All. OK. Battery slides out RIGHT under open lattice — this gap is critical.
FAN EXHAUST ZONE (Y = −138 to −148 mm): 09. No lattice material in this zone. Pocket to remove any beams in the Y = −138 to −148 mm strip.
STEP 8.2: GX12-7 BOSS RINGS (TWO)¶
Connector A: at X = −25 mm, Y = −66 mm. Connector B: at X = +25 mm, Y = −66 mm.
For each: 01. Click TOP face. New Sketch. Draw annular ring: Ø18 mm outer, Ø12 mm inner, centred at position. 02. Close. Part Design → Pad. 3 mm upward. OK.
These rings surround the Platform chimney bosses and protect them under lateral crash loads.
STEP 8.3: ATTACHMENT HOLES¶
Three pairs Ø3.3 mm through-holes: Pair A: X = ±17 mm, Y = +39 mm Pair B: X = ±17 mm, Y = −39 mm Pair C: X = ±17 mm, Y = −148 mm
Pocket: Through All. OK. VERIFY these X positions match the Platform posts (±17 mm) before printing.
STEP 8.4: BACKPLANE SUMMARY¶
Lattice: =Variables. BackplaneLength × =Variables. BackplaneWidth,
1.5 mm thick, 3 mm wide beams
Rib spacing: 20 mm, 10 ribs, diamond/alternating diagonals Open zones: RIGHT edge in battery zone (Y=+39 to −39 mm)
Fan exhaust zone (Y=−138 to −148 mm)
Connector A boss ring: Ø18 mm at Y=−66 mm, X=−25 mm Connector B boss ring: Ø18 mm at Y=−66 mm, X=+25 mm Attachment holes: 3 pairs at X=±17 mm (post positions) Est. mass: ~7 g. No supports. Print flat.
Save (Ctrl+S).
PART NINE — MODELLING THE GPS/CAMERA BRACKET & CAMERA TILT PLATE¶
Goal: bracket upright (hollow, arc‑slot camera tilt), separate tilt plate,
and four ASA bumper sleeves for the arm hub ends.
9.1 GPS/Camera Bracket — Body
Part Design → Body → rename: GPS Camera Bracket
Select XZ_Plane → New Sketch
• Centered Rectangle: Width=26 mm, Height=65 mm, bottom edge at Z=0
(Centre at X=0, Z=32.5 — lock with Coincident + offset constraint)
• Offset inward: Sketcher → Tools → Offset → select rectangle → −2 mm
Result: 2 mm wall all around
Close → Part Design → Pad → 20 mm (bracket front-to-back depth) → OK
9.2 Bracket — Pivot Hole
Select FRONT face of bracket → New Sketch
• Circle Ø3.3 mm, centred at X=0, Z=35 mm from bracket base
(camera zone centre — 35 mm up from Z=0)
Close → Part Design → Pocket → Through All → OK
9.3 Bracket — Arc Slot (camera tilt 0°–30°)
This is the most complex sketch. Read fully before clicking.
The arc slot is centred on the pivot hole, radius=20 mm, sweeping
from 0° (camera level) to 30° (camera tilted forward = downward angle).
Slot width = 3.3 mm (M3 clearance).
Select FRONT face → New Sketch
• Draw outer arc:
Sketcher → Geometries → Arc by Centre
Centre: click the pivot hole centre point (use Coincident to snap)
Radius: 20 + 1.65 = 21.65 mm
Start angle: −90° (directly below pivot = camera level)
End angle: −120° (30° further = camera tilted forward)
• Draw inner arc:
Same centre, radius: 20 − 1.65 = 18.35 mm, same angular span
• Close the arc ends with two short straight lines (end caps)
Connect outer arc start to inner arc start; outer end to inner end
• Result: a closed curved slot shape
• Constrain arcs as Symmetric about the vertical axis if needed
Status bar: Fully constrained → Close
Part Design → Pocket → Through All → OK
Index tick marks (optional but useful in the field):
Select FRONT face → New Sketch
At each 10° increment (0°, 10°, 20°, 30°) draw a 2×1 mm rectangle
just outside the arc slot at that angle position
Close → Part Design → Pad → 0.4 mm → OK (embossed marks)
9.4 Bracket — GPS Pocket (top face)
Select TOP face of bracket → New Sketch
• Rectangle 38×38 mm centred on bracket width (M10Q-5883 PCB footprint)
• Add 4 × Ø3.3 mm holes at GPS module mounting positions
(check M10Q-5883 datasheet — typically 32×32 mm pattern)
Close → Part Design → Pocket → 1.5 mm deep (locating pocket) → OK
9.5 Bracket — MIPI Channel (front face)
Select FRONT face → New Sketch
• Rectangle 16 mm wide × 65 mm tall, centred on bracket width
Close → Part Design → Pocket → 1.5 mm deep → OK
(HDZero MIPI cable runs down this channel from camera to Platform)
9.6 Bracket — Base Mounting Holes
Select BOTTOM face → New Sketch
• 2 × Ø3.3 mm circles at X=±10 mm (20 mm spacing — matches Platform nose holes)
Close → Part Design → Pocket → Through All → OK
Rename and save: Ctrl+S
9.7 Camera Tilt Plate — separate Body
Part Design → Body → rename: Camera Tilt Plate
Select XZ_Plane → New Sketch
• Rectangle 26 mm wide × 22 mm tall, centred on origin
Close → Part Design → Pad → 4 mm → OK
Camera body slot:
Select FRONT face → New Sketch
• Rectangle 19×19 mm centred on plate (HDZero camera body clearance fit)
Close → Part Design → Pocket → Through All → OK
Pivot hole (upper centre):
Select FRONT face → New Sketch
• Circle Ø3.3 mm at X=0, Z=+7 mm (upper centre of plate)
Close → Part Design → Pocket → Through All → OK
Slot clearance hole (lower):
Select FRONT face → New Sketch
• Circle Ø3.3 mm at X=0, Z=+7−20=−13 mm (20 mm below pivot hole)
This hole stays ROUND in the plate — the arc is in the bracket upright
Close → Part Design → Pocket → Through All → OK
ASSEMBLY NOTE: pivot bolt (M3×8 cap head) goes through bracket pivot hole
and tilt plate pivot hole. Slot bolt (M3×8 cap head + nyloc) goes through
bracket arc slot and tilt plate lower hole. Tighten slot bolt to lock angle.
Default: 15° (MAP→ACRO midpoint). Field adjustment: 15 seconds, 2.5 mm hex.
9.8 ASA Bumper — Body
Part Design → Body → rename: ASA Bumper
Select XZ_Plane → New Sketch
• Outer rectangle: =Variables.ArmWidth × =Variables.ArmHeight, centred on origin
• Offset inward: Sketcher → Tools → Offset → select outer rectangle → −2.0 mm
Result: 2 mm wall, inner hollow cross-section
• Add 3 mm fillets to BOTH rectangle sets:
Sketcher → Geometries → Create Fillet → click each of 8 corners
Close → Part Design → Pad → 12 mm → OK
Draft the outer walls (taper toward free end):
Part Design → Dress-Up → Draft
• Select all four outer side faces (hold Ctrl to multi-select)
• Draft angle: 3°
• Neutral plane: select the BASE face of the bumper
OK
Print 4 + 2 spares per build. Material: ASA Natural.
The taper concentrates crush deformation at the free tip — away from motor bell.
PART TEN — MODELLING THE ASA BUMPERS¶
Create new Body. Rename: ASA Bumper.
- XZ_Plane. New Sketch.
- Draw the hollow cross-section:
- Outer rectangle: =Variables. ArmWidth × =Variables. ArmHeight, centred on origin.
-
Inner rectangle: same centre, offset inward 2.0 mm.
(Sketcher → Tools → Offset. Select outer rectangle. Offset: −2.0 mm.)
-
Add 3 mm fillets to BOTH rectangles (outer and inner corners). Result: closed annular profile (wall cross-section).
-
Close. Part Design → Pad. Length: 12 mm. OK.
-
TAPER the outer wall: Part Design → Draft (may be under Part Design → Part Design → Draft). Select all outer side faces. Angle: 3–5°. Neutral plane: the base face. The bumper tapers toward the free end.
Save. Rename: "ASA Bumper".
PART ELEVEN — COUPONS (PRINT BEFORE FULL PRODUCTION RUNS)¶
Coupons are small test prints that validate critical fit geometry before you commit to printing full parts. Never skip coupons — they save hours of wasted print time and filament.
11.1 Coupon 8 — T-lock fit (CRITICAL — before any X body layers)
What to print: one full Arm Tab + a 50mm section of X body PCCF layer
with one T-slot pocket (same wall thickness, same settings as production).
Test: tab slides into T-slot with light hand pressure.
Test: zero lateral play when tab is fully seated.
PASS → proceed to X body production run.
FAIL (binds): open Variables spreadsheet → increase TabClearance by 0.1mm → reprint.
FAIL (play): decrease TabClearance by 0.1mm → reprint.
11.2 Coupon 8b — Rod interference fit (before PETG bottom layer)
What to print: a 30mm cube with one Ø2.1mm rod channel through it (PETG only).
Test: thread a 2mm CF rod through the channel by hand.
PASS: rod grips firmly, requires light push, does not fall through freely.
FAIL (too tight): open Variables → increase RodDiaChannelCore to 2.15mm.
FAIL (too loose): decrease to 2.05mm.
Note: if still too tight after 2.15mm, use 2mm drill bit to open the
core zone after printing — see PRUSA guide.
11.3 Coupon 10 — GX12-7 chimney D-D bore (CRITICAL — before Platform print)
What to print: 30×30×30mm block with:
- D-D bore profile (11.87mm OD, 10.80mm flat-to-flat) through full height
- Ø18mm OD chimney tube 25mm downward from block bottom
- 6×4mm wire exit slot at chimney base
Test 1: GX12-7 MALE slides into D-D bore without binding.
Test 2: connector body does NOT rotate in bore (flats grip).
Test 3: panel nut threads cleanly.
Test 4: 6-wire bundle passes through exit slot.
FAIL (rotates): decrease GX12ChimneyBoreFlatFlat by 0.1mm.
FAIL (binds): increase GX12ChimneyBoreFlatFlat by 0.1mm.
11.4 Coupon 11 — Battery rail slide test (CRITICAL — before Platform print)
What to print: 100mm section of both rails with 10mm base plate.
Test 1: reference battery (78×40×53mm) slides in from right, seats against endstop.
Test 2: battery slides out right with light hand pressure.
Test 3: 25mm strap passes through strap slots cleanly.
FAIL (binding): increase BattRailInnerWidth by 0.2mm in Variables.
PART TWELVE — THE ASSEMBLY¶
The Assembly lets you bring all parts together to verify fit. This is a verification step — not a manufacturing step.
FreeCAD 1.0 includes the Assembly workbench built-in. Use it.
STEP 12.1: CREATE THE ASSEMBLY¶
In the Workbench dropdown, select: Assembly.
Assembly menu → Create Assembly. (Or the Assembly toolbar → Create Assembly icon.)
An Assembly container appears in the Model Tree. Rename it: libdrone V2.4.6 Assembly.
STEP 12.2: INSERT PARTS¶
Assembly menu → Insert Component. (Or: drag Bodies from the Model Tree into the Assembly.)
Insert: Arm (×4 — insert the same Body four times) Arm Tab (×8) X Body PETG Bottom (×1) X Body PCCF Base (×3 — same Body inserted three times) X Body PETG Top (×1)
Each inserted part appears at the origin. Position them using Joints (Mates).
STEP 12.3: JOINTS¶
FreeCAD 1.0 Assembly uses Joints to constrain parts.
The most useful joint types: FIXED JOINT: locks a part rigidly to the assembly origin. Use for the
first part inserted — fix the PETG Bottom as the reference.
COINCIDENT/COPLANAR: faces aligned flush. CYLINDRICAL: shaft-in-hole (allows rotation along axis).
To create a joint: Assembly menu → New Joint → choose type. Select the two geometry elements (faces, edges, points) to join. Click OK.
For the X body sandwich verification: 01. Fix PETG Bottom (Assembly → New Joint → Fixed Joint → select PETG Bottom body). 02. Mate PCCF Base layer 1: Coincident joint between PCCF Base top face and PETG Bottom top face. (They share a face — coincident stacks them.) Apply three times for three layers. 03. Mate PETG Top: Coincident to PCCF Base 3 top face.
STEP 12.4: VERIFY BOX-IN-BOX ROD CLEARANCE¶
Create a simple virtual rod: Create new Body → Rename: CF Rod Virtual. Sketch: circle Ø2.0 mm. Pad: 333 mm. (This is the actual rod length.)
Insert two virtual rods into the Assembly. Position one rod along the Type A (FL/RL) diagonal channels. Position the other rod along the Type B (FR/RR) diagonal channels.
At the hub centre crossing: the rods must not intersect.
FreeCAD Assembly interference check: Assembly menu → Solve Assembly (to resolve all joints). Then: Tools → Part → Check Geometry → Check for Intersections. If intersection detected: the channel Z positions need adjusting. Edit the Spreadsheet to change the rod offset values — the model updates.
STEP 12.5: BACKPLANE CORNER POST ASSEMBLY CHECK¶
⚠ MANDATORY before printing Platform or Backplane.
Background: Post pair A sits at Y = +39 mm, X = ±17 mm. This is the corner of the battery zone open edge. The question: does the Backplane lattice actually connect to the post at this corner?
-
Create a new Assembly (or reuse the main one). Insert: Platform, Backplane.
-
Fix the Platform. Constrain the Backplane to the Platform top surface (Coincident joint: Backplane bottom face to Platform top face).
-
Apply a Section Cut: View menu → Standard Views → Section Cut. Select XY plane. Adjust the Z offset to the height of the Platform top surface. The section view now shows a horizontal slice through the assembly.
-
Zoom to X = +17 mm, Y = +39 mm (the battery zone right corner).
Verify: □ The Backplane right edge beam reaches Y = +39 mm (the front post pair). □ The transverse rib at Y = +39 mm extends to X = +17 mm (post position). □ No gap between post top and Backplane beam at this corner.
-
If a gap exists: open the Backplane Body. Extend the transverse rib at Y = +39 mm to X = +17 mm. The open battery zone starts AT the post — the post itself must be captured.
-
Repeat check at mirror position X = −17 mm, Y = +39 mm. Should be connected (this is in the left edge lattice zone, not the open zone).
-
Rotate to isometric. Confirm all 6 post tops are overlapped by lattice material (none floating through open cells).
Do not print Platform or Backplane until this check passes.
STEP 12.6: CHECK GPS MOUNT¶
Verify the GPS module position on the bracket places the patch antenna completely above the PCCF layers — no CF material between antenna and sky. CF conducts and attenuates GPS signals. Any CF above the antenna is a problem.
PART THIRTEEN — EXPORTING FOR PRINTING¶
STEP 13.1: EXPORT AS STL¶
For each Body you want to print:
Right-click the Body in the Model Tree → Export Mesh. (Alternatively: File → Export, with the Body selected, format: STL Mesh.)
In the export dialog: Format: STL Units: mm (verify — not inches) Quality / Deviation: 0.01 mm (fine resolution for smooth curves)
Export list: Arm_Shaft.stl (×4 — same file, print 4 copies) Arm_Tab.stl (×8 — same file, print 8 copies) X_Body_PCCF_Base.stl (×3 — layers 2, 3, 4, identical) X_Body_PETG_Bottom.stl (×1 — layer 1, impact face) X_Body_PETG_Top.stl (×1 — layer 5, clean top) Platform.stl (×1 — rails, chimneys, MIPI, wire channels, posts) Backplane.stl (×1 — lattice exoskeleton) GPS_Camera_Bracket.stl (×1) Camera_Tilt_Plate.stl (×1) ASA_Bumper.stl (×4 + spares)
STEP 13.2: IMPORT INTO PRUSASLICER¶
Open PrusaSlicer. Drag and drop the STL files onto the build plate.
Select the correct printer profile (PRUSA COREONE+) and filament profile.
Refer to build/LD_-_PRUSA_v246.md for all slicer settings.
Orient each part correctly: Arm Shaft: VERTICAL (standing on pinch bolt end) Arm Tab: FLAT/HORIZONTAL X Body layers: FLAT on build plate Platform: FLAT, face-up Backplane: FLAT, face-up (no supports) GPS Bracket: FLAT Camera Tilt Plate: FLAT Bumpers: FLAT
PART FOURTEEN — LINUX FLATPAK NOTES (FEDORA)¶
(IF APPLICABLE)
9.1 Macro path: ~/.var/app/org.freecad. FreeCAD/data/FreeCAD/Macro/
9.2 Sandbox file access: run once → flatpak override org.freecad.FreeCAD --filesystem=home
9.3 Sketcher visibility on dark themes: Preferences → Display → Colors → Sketcher → adjust colors 9.4 After Part booleans: right‑click Body → Toggle Active Body
PART FIFTEEN — TIPS, TRICKS AND COMMON MISTAKES¶
MISTAKES FREECAD BEGINNERS ALWAYS MAKE¶
MISTAKE 1: Forgetting to close a sketch. If your Pad/Pocket does not work, open the sketch — look for gaps in the outline. The profile must be fully closed. Use View → Standard Views to look at the sketch face-on. Look for tiny gaps at corners (zoom in very close). MISTAKE 2: Under-constrained sketches (white/yellow elements). White or yellow elements can still move. Add dimensions or constraints (Coincident, Symmetric, etc.) until all elements turn GREEN. A fully green sketch is fully defined. Bottom of screen shows: "Fully constrained" when done.
MISTAKE 3: Topological naming failures (features turn yellow or red). If the Model Tree shows yellow warnings after editing an early feature: Click the warned item → it shows what reference was lost. Re-select the lost reference (face, edge, or datum) and click OK. To avoid: reference datum planes rather than faces where possible.
MISTAKE 4: Confusing Sketch fillets and Part Design fillets. Sketcher → Create Fillet = rounds corners in the 2D sketch. Part Design → Fillet = rounds 3D edges on the finished solid. For arm cross-section rounded corners: use Sketcher Fillet. For any edge on the finished 3D part: use Part Design Fillet.
MISTAKE 5: Padding in the wrong direction. If the solid appears on the wrong side: check "Reversed" in the Pad dialog.
MISTAKE 6: Not saving manually. FreeCAD does NOT autosave. Press Ctrl+S regularly. Save a copy (File → Save a Copy) before major edits.
MISTAKE 7: Editing a Body that belongs to the wrong document context. If you have multiple Bodies and accidentally sketch on the wrong one: Check which Body is ACTIVE (shown in bold in the Model Tree). To activate a different Body: double-click it in the Model Tree.
USEFUL SHORTCUTS¶
Ctrl+S = Save Ctrl+Z = Undo Ctrl+Y = Redo V then F = Fit all to view Spacebar = Toggle visibility of selected item Numpad 1 = Front view Numpad 7 = Top view Numpad 0 = View from selected face P = (in Sketcher) Point on Object constraint
WHEN YOU GET STUCK¶
FreeCAD Forum: forum.freecad.org The most helpful FreeCAD community. Post with a screenshot and your . FCStd file.
FreeCAD Wiki: wiki.freecad.org Comprehensive documentation for every workbench and tool.
FreeCAD 1.0 Release Notes: wiki.freecad.org/Release_notes_1.0 What changed in 1.0 — especially useful if you find old tutorials that reference different UI behaviour.
FreeCAD YouTube channel: search "FreeCAD 1.0 Part Design tutorial" Video walkthroughs are often clearer than text for spatial concepts.
SAVING AND VERSIONING¶
FreeCAD does not have Onshape's built-in version history. Use this workflow instead:
BEFORE MAJOR CHANGES: File → Save a Copy → name it libdrone_V34_[date]_[description]. FCStd Example: libdrone_V34_2026-03-10_ArmComplete. FCStd
AFTER MAJOR MILESTONES: Save a copy with a version note. Keep a folder: libdrone_CAD/Versions/
For STL exports: keep a folder libdrone_CAD/STL_Exports/ with dated subfolders. The . FCStd is the source of truth. Never edit STL files directly.
APPENDIX A — FREECAD QUICK REFERENCE¶
Workbench switching: top-left dropdown Part Design: Body, Sketch, Pad, Pocket, Loft, Fillet/Chamfer, Datum Plane Sketcher keys: H (horizontal), V (vertical), D (dimension), F (radius), C (coincident)
G (external geometry), P (point on object)
External Geometry: magenta icon (reference edges/axes from other features) Assembly: Insert Component, Fixed/Coincident/Axial/Distance joints, Section Cut Expressions: =Variables. Name in all dimensions and feature fields Refine shape: Part → Refine Shape; enable auto-refine in Part Design Preferences
STANDARD VIEWS: Numpad 1 = Front Numpad 7 = Top Numpad 0 = View from selected face V then F = Fit all Spacebar = Toggle visibility
SAVING: Ctrl+S = Save (manual — no autosave) File → Save a Copy → LD_V34_YYYYMMDD_milestone. FCStd
EXPORT STL: Right-click Body in Model Tree → Export Mesh → STL, deviation 0.01 mm, 0.5° Never export the full document — always export per Body.
APPENDIX B — WHAT EACH PART NEEDS (BUILD CHECKLIST)¶
ARM SHAFT (×4 — one design, all four positions): * Sketch on XZ_Plane: ArmWidth × ArmHeight rectangle, 3 mm corner fillets * Pad: ArmShaftLength (~125 mm) along Y * Motor head: datum plane at MotorHeadTaper, sketch MotorHeadWidth × MotorHeadHeight, Additive Loft between shaft end face and motor head sketch * Rod channels: 2 × Ø2.2 mm at Z +5.0 and +2.0 mm, Pocket Through All along arm axis 0.5×45° chamfers at both ends of each channel (Chamfer tool) * Pinch slit: Pocket 0.5 × 8 mm × 5 mm deep from motor face (top face sketch) * Clamp tab: Pad 5 × 5 mm × 5 mm on side face + Pocket Ø3.3 mm Through All * Motor bores: 4 × Ø6.5 mm Pocket Through All on motor head top face * O-ring counterbores: Pocket 4 × Ø7.0 mm × 1.5 mm deep, BOTH faces * Lateral rims: Pad 4 × Ø7.0–8.0 mm annular rings × 0.5 mm, BOTH faces * Wire channel: Pocket 4.0 × 3.0 mm on motor end face * Strain relief port: Pocket Ø5.5 mm Through All through side wall, 1.0 mm chamfers * Dovetail cable groove: Pocket trapezoidal profile (4.5 mm top, 8° walls, 2.0 mm deep) shaft underside, from hub end to start of motor head loft 0.5 mm chamfers at hub end entry * Bumper notch: Pocket 26 × 4 mm × 2 mm deep on hub end face
ARM TAB (×8 — 2 per arm): * Body: 22 × 16 mm × 20 mm Pad (XZ_Plane sketch) * T-lock extension: Pad +8 mm wider, 4 mm inboard from tip * Rod channels: Ø2.2 mm at Z +5.0 and +2.0 mm, Through All, 0.5 mm chamfers * M2 holes: 2 × Ø2.0 mm Pocket at shaft junction face * Shaft pocket: Pocket 1.0 mm deep on outer face, arm shaft profile * Print orientation: FLAT (layers perpendicular to pull-out direction)
X BODY PETG BOTTOM (×1, 3 mm): * Same X plan as PCCF Base * Rod channels: 2.2 mm in arm extensions, 2.1 mm in core zone (two Pocket features) * Sandwich bolt holes: 4 × Ø3.3 mm Pocket Through All * M3 hex nut capture pockets: 4 × hexagonal Pocket on BOTTOM face (5.7 mm across flats, 2.6 mm deep)
X BODY PCCF BASE (×3, 3 mm each): * X plan: 60 × 60 mm core + 4 × arm extensions (40 mm × 35 mm) at 45° * T-slot Pockets × 4: 22.4 mm × 20 mm slot + 38.4 mm × 4.2 mm T-lock pocket * Rod channels: 4 × Ø2.2 mm at Z +5.0, +2.0, −2.0, −5.0 mm, Through All, chamfered * Sandwich bolt holes: 4 × Ø3.3 mm Through All
X BODY PETG TOP (×1, 4 mm): * Same X plan as PCCF Base + T-slots + rod channels + sandwich holes * Stack pattern: 4 × Ø3.3 mm Pocket on 30.5 mm pattern * Bracket holes: 2 × Ø3.3 mm Pocket at front centreline, ±10 mm * Mast boss pads: 2 × Ø9 mm Pad × 7 mm tall (rear centreline ±10 mm), Ø4.6 mm Pocket × 5.5 mm deep (insert bore), 0.5 mm chamfer on bore rim
GPS/CAMERA BRACKET UPRIGHT (×1): * Width: 26 mm, height ~65 mm, wall 2 mm (Pad from XZ_Plane, 20 mm deep) * Pivot hole: Ø3.3 mm Pocket Through All * Arc slot: closed curve Pocket (inner/outer arcs + end caps), radius 20 mm, 0°–30° span, 3.3 mm wide, Through All * Index marks: small Pads (0.4 mm) at 5° increments beside arc slot * MIPI channel: Pocket 16 mm × 1.5 mm on front face, full height * Mounting holes: 2 × Ø3.3 mm Pocket Through All at base, ±10 mm
CAMERA TILT PLATE (×1 — separate Body, prints flat): * 26 × 22 × 4 mm Pad * Camera body slot: 19 × 19 mm Pocket Through All * Pivot hole: Ø3.3 mm Pocket Through All (upper centre) * Slot clearance hole: Ø3.3 mm Pocket Through All (20 mm below pivot)
ASA BUMPER (×4 + spares): * Hollow annular sleeve: ArmWidth × ArmHeight outer, −2 mm inner offset 3 mm corner fillets on both rectangles. Pad: 12 mm * Draft: 3–5° on outer faces, tapering toward free end
FIRST BUILD — WHAT TO OBSERVE¶
V2.4.6 sandwich architecture is new. The design is sound in principle but the first physical build will tell us things no CAD model can.
TAB T-LOCK FIT (Coupon 8): Print one tab and one X body layer section before committing to full X body. The T-lock should slide with light hand pressure, zero lateral play when seated. If it binds: adjust TabLockWidth clearance in Variables. If play: tighten. Do not skip this coupon.
SANDWICH TOTAL HEIGHT: After assembling all 5 layers, measure with calipers. Target: SandwichHeight (check Variables file). If slightly high (PCCF shrinkage variation): note delta, compensate in shaft tab pocket depth before printing shafts in quantity.
FIRST CRASH OBSERVATION:¶
After the first crash (it will happen), before repairing anything: * Check which element broke (shaft, tab, or neither) * Check T-lock engagement — is the tab still fully seated? * Check PCCF layers around the T-slot opening for cracking These observations will tell us if geometry needs adjustment for next revision.
No upfront redesign needed. Build it, fly it, observe it.¶
"IN CAD AS IN LIFE: MEASURE TWICE, PAD ONCE." — libdrone V2.4.6¶
libdrone FreeCAD Cookbook V2.4.6 — Complete Edition FreeCAD source: build/LD_V34. FCStd STL exports: create a dated subfolder in your project directory Variables: reference/LD_-_Variables_v246.md
Revision History¶
| Version | Date | Author | Summary |
|---|---|---|---|
| 3.4.3 | 2026-03-27 | JS | PRUSA reference updated to LD_-_PRUSA_v246.md. |
| 3.4.0 | 2026-02 | JS | GX12-7 dual connector. Stepped platform. D-D bore profile for chimney. Arc-slot camera tilt. |
| 3.3.0 | 2025-12 | JS | Platform and Backplane sections added. VTX moved to electronics zone. |