Add Prettier as a dev dependency with .prettierrc.json config and .prettierignore. Hook added via mirrors-prettier in pre-commit config. All TypeScript, JSON, Markdown, and YAML files auto-formatted. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4.4 KiB
4.4 KiB
SVG Logo Import Guide
Added in: v2.2.3
The import_svg_logo tool converts SVG vector graphics into filled polygons on a KiCAD PCB layer. This is useful for placing company logos, project branding, or custom artwork on your board's silkscreen or copper layers.
Tool Reference
import_svg_logo
Imports an SVG file as filled graphic polygons onto a PCB layer. Curves are linearized automatically.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
pcbPath |
string | Yes | -- | Path to the .kicad_pcb file |
svgPath |
string | Yes | -- | Path to the SVG logo file |
x |
number | Yes | -- | X position of the logo top-left corner in mm |
y |
number | Yes | -- | Y position of the logo top-left corner in mm |
width |
number | Yes | -- | Target width of the logo in mm (height scales to preserve aspect ratio) |
layer |
string | No | F.SilkS | PCB layer name (e.g., F.SilkS, B.SilkS, F.Cu, B.Cu) |
strokeWidth |
number | No | 0 | Outline stroke width in mm (0 = no outline) |
filled |
boolean | No | true | Fill polygons with solid color |
Returns:
- Polygon count
- Final dimensions (width x height in mm)
- Layer used
SVG Requirements
Supported Features
- Path elements with M, L, H, V, C, S, Q, T, A, Z commands
- Filled shapes (polygons, rectangles, circles, ellipses)
- Nested groups and transforms
- Cubic and quadratic Bezier curves (linearized automatically)
Recommendations
- Use simple, solid shapes -- avoid complex gradients or filters
- Convert text to paths/outlines before importing
- Ensure shapes are filled (not just stroked) for best results
- Keep the SVG clean -- remove unnecessary metadata and layers
What Will Not Work
- Raster images embedded in SVG
- CSS-based styling (inline style attributes are preferred)
- Complex SVG filters or effects
- Transparency (PCB layers are binary -- copper or no copper)
Workflow
1. Prepare Your SVG
If starting from a raster image (PNG, JPG):
- Use a vector graphics editor (Inkscape, Illustrator, Figma) to trace the image
- In Inkscape: Path > Trace Bitmap to convert
- Export as plain SVG
If starting from a vector logo:
- Open in a vector editor
- Convert all text to paths (Object to Path / Create Outlines)
- Remove unnecessary layers and hidden elements
- Save as plain SVG
2. Import the Logo
Import my company logo from ~/logos/logo.svg onto the board at position x=25 y=40 with width 15mm on the front silkscreen.
3. Verify Placement
Use get_board_2d_view to preview the board with the logo, or open in KiCAD to check placement.
4. Adjust if Needed
Re-run import_svg_logo with different position, width, or layer parameters.
Layer Options
| Layer | Use Case |
|---|---|
F.SilkS |
Front silkscreen (most common for logos) |
B.SilkS |
Back silkscreen |
F.Cu |
Front copper (logo as exposed copper) |
B.Cu |
Back copper |
F.Mask |
Front solder mask opening (exposes copper underneath) |
B.Mask |
Back solder mask opening |
Manufacturing Considerations
- Silkscreen logos are the safest choice -- no impact on electrical design
- Copper logos will be part of the copper layer and may affect DRC. Ensure adequate clearance from traces and pads
- Minimum feature size depends on your PCB fabricator. Most support 0.15mm (6mil) minimum line width for silkscreen
- Logo size should account for manufacturing tolerances -- very small details may not reproduce well
Source Files
- TypeScript tool definition:
src/tools/board.ts(import_svg_logo) - Python implementation:
python/commands/svg_import.py