Imagetracer.js for Inkscape
i

Mario VoigtImagetracer.js for Inkscape

Mario Voigt

This extension is an InkScape wrapper for https://github.com/jankovicsandras/imagetracerjs. It utilized a standalone node.js executable to run the JavaScript code. It will be fed with embedded or linked images within InkScape. The big difference between this tracer and all other tracers in recent InkScape is the fact that it is capable of splitting an image into it's "isles". The regular tracers separate by colors but not by objects. That makes it hard to work with sometimes. Imagetracer.js will vectorize your beautiful image into a more beautiful SVG trace with separated infills (break apart into single surfaces like a puzzle), that means you get a lot of single areas. works for Linux and Windows Docs: https://y.stadtfabrikanten.org/imagetracerjs


Comment here...
Styles To Layers
i

Mario VoigtStyles To Layers

Mario Voigt

This extension will re-layer your selected items or the whole document according to their color (stroke or fill). Each style will be put onto it's own layer. This way you can devide elements by their colors with ease. It does some basic-only handling of gradient styles. Docs: https://y.stadtfabrikanten.org/stylestolayers See also https://inkscape.org/~MarioVoigt/%E2%98%85remove-empty-groups for useful cleaning extension. Notes: - includes "Apply Transformations" extension


Comment here...
Primitive for Inkscape
i

Mario VoigtPrimitive for Inkscape

Mario Voigt

Primitive - Reproducing images with geometric primitives written in Go. This InkScape extension just wraps https://github.com/fogleman/primitive into InkScape to quickly get cool traced vector graphics works for Linux and Windows Docs: https://y.stadtfabrikanten.org/primitive


Comment here...
Contour Scanner And Trimmer
i

Mario VoigtContour Scanner And Trimmer

Mario Voigt

Find open, closed and self-intersecting contours. Self-intersecting contours can be closed or open contours so you can select this option additionally! Docs: https://y.stadtfabrikanten.org/contourscannerandtrimmer TL;DR: Bentley-Ottmann algorithm is used to check for those intersections. The algorithm works with the accuracy of the selected paths (epsilons). Self-intersections usually happen if you just have large overlaps where the contour crosses itself like an 'eight' character for example. Using the highlighting it's easy to find contours with unproper path handles. While in a CAD system an area of of a surface can only be calculated if the contour is closed and clean, finding self intersections in Inkscape is not required to do so. SVG format allows to calculate areas on open contours and self-twisted curves. This "artwork behaviour" makes it harder for handling machinery-like drawings for laser cutting, vinyl cutting or whatever. That's why we need to have extra sanity checks but we also have the great freedom of Inkscape. Finding self-intersecting contours does only work for curves with straight line segments (polylines) because it just calculates with a set of given XY points. It does not respect bezier curve segments. Bezier curves have no regular points but special handles, which define the slope of the curve per handle side (left and right). To properly handle a bezier curve we need to split the bezier curve in a lot of small linear segments (acting like infinitessimal solution). We can use the tool "Flatten Bezier to do this (will make your curve looking edgy or ugly possible). If you want to leave the shape of the line clean (bezier type, no edgy approximation) we can use Split Bezier (Subdivide) or Add Nodes instead. But remember that your calculated self-intersection points will only be an approximation then. The higher the subdivide count is the higher the precision of the calculated self-intersecting points coordinates will be.


Comment here...
WebP Import
i

Mario VoigtWebP Import

Mario Voigt

Import *.webp image files using ImageMagick conversion. Routine is webp → png → svg → write into Inkscape canvas. You need to install ImageMagick. The command "magick" or "convert" needs to be in path variable, otherwise the extension will fail. Docs: https://y.stadtfabrikanten.org/webp-import


Comment here...
Inventory Sticker
i

Mario VoigtInventory Sticker

Mario Voigt

This extension generates inventory stickers for thermo printers (we use Brother QL-720NW) from our Teedy instance. Teedy is an open source software document management system (DMS). This extension is tested in Linux (Ubuntu 20 LTS) and Windows 10. Source code can be found in https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.2/src/branch/master/extensions/fablabchemnitz Docs: https://y.stadtfabrikanten.org/inventorysticker


Comment here...
Slic3r STL Input
i

Mario VoigtSlic3r STL Input

Mario Voigt

STL Sliced Import (by Slic3r). Supports OBJ/OFF/PLY/STL as input file formats. How it works: - projects an STL file on the X-Y plane by cutting the objects into "slices" - each "slice" is a group of polygons, with a label indicating its z position - the polygons are converted to paths for better editing in inkscape - use Object → Rows & Columns →  distribute the slices in a grid Warning: Requires Slicer 1.3.1-dev (the really latest build possible) docs: https://y.stadtfabrikanten.org/slic3rstlinput based on stl input extension of Jürgen Weigert. Thanks for your hard work.


Comment here...
Ids to text elements
i

whidevIds to text elements

whidev

A simple Inkscape extension that lets you extract attributes (like id) from all selected paths, and show them as <text> elements inside the paths. Useful for when you want to have all paths' id shown on the SVG document as <text> nodes. You can also use it for other path attributes, like `label`, `fill`, `stroke`, `width`, `height`. Available under the Extensions > Text submenu. Check the extension's repo on GitHub for examples. Options for styling and formatting the text: Font size in pixels Color (the fill color of the <text> elements) Font (should be installed on the system) Font Weight (should be supported by the selected font) Angle (controls the rotation of the generated <text> elements, in degrees) Options for further editing the extracted text (only used with id and label attributes): Text to replace (a simple replace function to remove characters you may not want from the text) Match Regular Expression (matches the extracted text of each path to a regular expression and uses the result on the path, e.g. if the id is `Province_055` and this field `\d+`, the text on the path will be just `055`) Capitalize (capitalize all text) Group paths with the generated text elements (if checked, also group the path with its text label) Note: only works on <path> elements. If you have a <circle>, <rectangle>, <text>, etc., first use Object > Object to Path to convert it. For Inkscape v0.92 and before, you should check the extension's repository on GitHub.


Comment here...
Paperfold
i

Mario VoigtPaperfold

Mario Voigt

Paperfold is another flattener for triangle mesh files, heavily based on https://github.com/felixfeliz/paperfoldmodels by Felix Scholz aka felixfeliz. Possible input files are STL, Wavefront OBJ, PLY and OFF. To run this you need to install OpenMesh with python pip. The algorithm of paperfoldmodels consists of three steps: - Find a minimum spanning tree of the dual graph of the mesh. - Unfold the dual graph. - Remove self-intersections by adding additional cuts along edges. Reference: The code is mostly based on the algorithm presented in a by Straub and Prautzsch (https://geom.ivd.kit.edu/downloads/proj-paper-models_cut_out_sheets.pdf). Docs: https://y.stadtfabrikanten.org/paperfold


Comment here...
Offset Paths
i

Mario VoigtOffset Paths

Mario Voigt

Create offset for open or closed paths from non-bezier paths (destructive method). Python library pyclipper needs to be installed (which is automatically done, if you install MightyScape completely). Use Approximate Curves by Straight Lines (Flatten Beziers) extension in advance of this plugin to convert your paths. Docs: https://y.stadtfabrikanten.org/offsetpaths


Comment here...
TexText
i

jcwinklerTexText

jcwinkler

TexText allows to add and re-edit LaTeX/ XeLaTeX/ LuaLaTeX/ typst generated SVG elements to your drawing. A fully functional LaTeX distribution and or typst installation must be installed on your system! Most recent version is TexText 1.11.0 from 2025-01-06. It is compatible with Inkscape 1.4.x. For Inkscape 1.3.x goto https://github.com/textext/textext/releases/tag/1.10.2 For Inkscape 1.2.x, 1.1.x, and 1.0. goto https://github.com/textext/textext/releases/tag/1.8.2 Extensive installation instructions and extension documentation can be found at https://textext.github.io/textext For manual installation from this site: Download TexText-1.11.0-Inkscape.zip and place its content (i.e. the folder textext with all its files inside) into the Inkscape extension directory. Or load the zip-file via Inkscape's extension manager (experimental). Sourcecode and bug reports: https://github.com/textext/textext This extension is a direct continuation of the discontinued TexText 0.4.4 developed by Pauli Virtanen (https://pav.iki.fi/software/textext/)


Comment here...
vpypetools - vpype for Inkscape
i

Mario Voigtvpypetools - vpype for Inkscape

Mario Voigt

vpype is a command processor working with SVG files. It can do a lot of productive steps to optimize files for different purposes like pen plotting, laser cutting or the generation of creative artwork. vpype is really powerful and helps to extend Inkscape feature capability. vpype contains a lot of functionality which is included natively within Inkscape. The extension "vpype for Inkscape" does not deal with all features but with a set of important commands like linemerge, linesort, linesimplify, occult, etc. We can use it to shorten tool path lengths, remove hiddenlines and so on. vpype converts all elements into simple SVG elements like svg:line, svg:polyline and svg:polygon. They can be displayed properly in Inkscape, but they have no knot handles to edit (see https://alpha.inkscape.org/vectors/www.inkscapeforum.com/viewtopicb51d.html?f=16&t=32562). We need to convert those elements to svg:path using key combination CTRL + SHIFT + C ("object to path"; do not use "stroke to path" because it will duplicate your outline with inset and outset contours). Our extension allows to do this conversion automatically. Documentation: https://y.stadtfabrikanten.org/vpypetools


Comment here...
OptimLaser
i

Frank SAURETOptimLaser

Frank SAURET

This script optimizes a drawing for laser cutting: - Removes overlapping lines (except Bézier curves); - Saves the modified file with a new name; - Applies modifications to the entire document; - Delete non cuttable path; - Optimizes the cutting order. Translated in english. Please, fork and make a pull request on github for other languages. Or send me the pot file with country code. Download it on https://github.com/FrankSAURET/OptimLaser.


Comment here...
Convert To Polylines
i

Mario VoigtConvert To Polylines

Mario Voigt

This extension takes the points of a path and make a straight polyline out of it. Nothing less, nothing more. You can do the same with default Inkscape UI (select the path -> Node Tool -> Straighten lines) but it might be quicker to use in some use cases. This extension handles duplicate points on a path by removing them. Docs: https://y.stadtfabrikanten.org/convert-to-polylines


Comment here...
Unwind Paths
i

Mario VoigtUnwind Paths

Mario Voigt

An extension to wrap off paths to receive horizontal lines or extruded bands. Can be used for paper crafting, analysis and other works. You can also just use it to colorize path segments. Docs: https://y.stadtfabrikanten.org/unwindpaths Note: Unwind Paths is similar to https://inkscape.org/~Shoshanaz/%E2%98%85horizontal-lines-effect-hlines, but it is more andvanced as it supports bezier curves and allows to create extruded bands, style config, etc.


Comment here...
Move Path Node
i

Mario VoigtMove Path Node

Mario Voigt

Extension to change starting node of a path and visualize it by dots and numbers Notes: Use "Path → Reverse" to change path direction Use extension "Chain Paths" to make closed paths out of segments. Docs: https://y.stadtfabrikanten.org/movepathnode


Comment here...
Ungrouper And Element Migrator/Filter
i

Mario VoigtUngrouper And Element Migrator/Filter

Mario Voigt

This extension parses the selection and will put all elements into one single group. If you have a cluster with lots of groups and elements you will clean up this way (one top level group, all elements below it). If you select a single element or a set of elements you just wrap it like using CTRL + G (like making a usual group). You can also use this extension to filter out unwanted SVG elements at all. This tool is also able to drop elements with certain SVG tags to perform some kind of cleanup in the selection. You can drop elements like circle,ellipse,image,line,path,polyline,rect,text,tspan and some more. Notes: - includes "Remove Empty Groups" extension - includes "Apply Transformations" extension Docs: https://y.stadtfabrikanten.org/migrategroups


Comment here...
Create Links (Breakaway Connectors)
i

Mario VoigtCreate Links (Breakaway Connectors)

Mario Voigt

To create tabs in Inkscape, we cannot properly use the integrated eraser tool. It will clip only in a cosmetic fashion but we do not get the real paths we need. Creating links (also known as microtabs, tabs, bridges, breakaway connectors, links, perforations) is sometimes required for laser cutting or vinyl cutting. This extension allows to pinch paths to create according segments - no cosmetic one's, but real segments. It will split up open or closed contours with user defined rules. To get best output please try to close open paths before using. Docs: https://y.stadtfabrikanten.org/createlinks


Comment here...
Typst
i

jcwinklerTypst

jcwinkler

Typst is a markdown-based typesetting system comparable to LaTeX but much easier to learn. This extension renders typst code to svg and inserts it into your Inkscape document. Notes: - This extension will be part of Inkscape by default, most likely starting with Inkscape 1.4. Until then you need to install it as described below. - This extension just inserts a formula into your document. If you need to edit your formulas try the TexText extension, which also supports typst: https://github.com/textext/textext Installation instructions (2 possibilities): A) Installation via Inkscape's Extension Manager 1. Download the zip file 2. Launch Inkscape and open "Extensions" - "Manage Extensions..." 3. Select "Install Packages" and then click on the disk button 4. Select the downloaded zip file and close the extension manager. 5. Restart Inkscape. You will find the extension under "Extensions"- "Text" - "Typst Formula..." B) Manual installation 1. Download the zip file 2. Extract its content into Linux, Mac: ~/.config/inkscape/extensions Windows: C:\Users\AppData\Roaming\inkscape\extensions 3. Restart Inkscape. You will find the extension under "Extensions"- "Text" - "Typst Formula..."


Comment here...
Export to LaserGRBL for laser cutting
i

Nikki.SmithExport to LaserGRBL for laser cutting

Nikki.Smith

This free extension for Inkscape speeds up preparation of laser cutting jobs by exporting Gcode to LaserGRBL (included with most laser cutters). Pick your model of laser and material / thickness from pulldown lists, then export a complex job directly into LaserGRBL with one click. Use different coloured lines for each part of a job. eg, red lines to engrave in a single pass at 3000 mm/min @ 80% power, but blue lines cut in 3 passes at 300 mm/min @ 90% power. The emphasis is on it being very easy to use, with the bare minimum of settings. v1.21 17/Dec/2024


Comment here...
Export Layers
i

Dmitry TExport Layers

Dmitry T

Inkscape extension to export SVG layers as standalone PDF, PNG, SVG or JPEG images. The exported images can progressively reveal content of an Inkscape document.


Comment here...
Crossword Puzzle Generator
i

Jonathan NeuhauserCrossword Puzzle Generator

Jonathan Neuhauser

A simple crossword puzzle generator. - Generate simple crossword puzzles based on a list of words and clues. - Wordlist can be read in from a file. - Tries to find a relatively compact solution. The generation algorithm is based on genxword (https://github.com/riverrun/genxword). - Outputs the grid, clue list and solution (if requested) on newly added pages. - All different element types in the output are assigned a class to allow for easy manipulation of the design of the crossword; classes are reused if more than one crossword puzzle is generated inside a file. - The solution can be displayed as wordlist or as filled-out grid. - Letters can be marked as pre-filled by prefixing them with a `^` sign.


Comment here...
Animate Order
i

Mario VoigtAnimate Order

Mario Voigt

Create animated SVG preview file and show it in browser. Helps to quickly evaluate line order for cutting processes. Docs: https://y.stadtfabrikanten.org/animateorder Please also check out Maren's extension: https://inkscape.org/~Moini/%E2%98%85line-animator-draw-by-invisible-hand


Comment here...
Cleanup Styles
i

Mario VoigtCleanup Styles

Mario Voigt

This plugin is a bit similar to [Blueprint Maker](https://y.stadtfabrikanten.org/blueprint-maker) but has a more special use case and a lot of options! It is useful for adjusting the stroke width and opacity of large groups. Usually for good laser cutting the line width has to match a maximum width to be recognized as a hairline. Additionally often opacity issues cause that lines are missed by laser cutter. Docs: https://y.stadtfabrikanten.org/cleanup-styles


Comment here...
Localization / translation example extension
i

Nikki.SmithLocalization / translation example extension

Nikki.Smith

For extension developers. This minimal extension pulls together some helpful documentation about adding localization to an extension, including where the translation files go and what gettext commands to use on both Windows and Linux. Now includes localized text in the Python script. Also many small changes that result in a much higher pylint code score.


Comment here...
Dynamic GUI example extensions with GTK
i

Nikki.SmithDynamic GUI example extensions with GTK

Nikki.Smith

For extension developers. Most extensions to Inkscape use an .inx file that describes a static user interface, then a Python script is run one time when the user clicks "Apply". To create a dynamic UI (that changes as the user clicks buttons, selects from dropdown menus, etc) you can build it in GTK using a Python script that runs immediately. Requires Inkscape v1.1 or newer. These short examples demonstrate a handful of functions in GTK+ 3. Now includes an example extension that uses a .glade XML file to create the UI with Gtk.Builder(). Also many small changes that result in much higher pylint code scores.


Comment here...
Engrenage (Gear)
i

Frank SAURETEngrenage (Gear)

Frank SAURET

Gears extension for tracing involute gears and metric pitch gears (belt pulley); allows spokes, center cross, metric module, best evolute shape. Initially, copy of inkscape-gears-dev by jnweiger. - 2024-11-09 | 2024.3 : - Added the ability to define fixing holes based on material thickness. - Ability to make a hole that matches the material thickness. - Added the drawing of the axis if the perfect square option is chosen. - 2024-11-06 | 2024.2 : The fixing wheel for servomotors is now configurable. - 2024-10-25 | 2024.1 : Added the drawing of the fixing wheel for servomotors. Versioning change. Flanks for T-type wheel. - 2024-07-20 | 1.4 : Added the drawing of metric pitch pulley. Retouched explanations. Added diagrams. - 2024-06-22 | 1.3 : Added colors for cutting order. Separated into multiple objects to facilitate retouching and recoloring. - 2024-06-18 | 1.2 : Added the ability to choose the shape of the hole (rectangular, round, or servo imprint) and to choose the dimensions of the hole. Added the ability to choose an imprint for the servo hole. The imprints are placed in the file engrenage.ini. - 2024-04-21 | 1.1 : Translated into French. Modified the color in case of undercut. Modified the dedendum to be 1.25 times the addendum. -------------------------------------------------------------------------------------------------------------------- - 2024-11-09 | 2024.3 : - Ajout de la possibilité de définir les trous de fixation en fonction de l'épaisseur du matériau. - Possibilité de faire un trou qui correspond à l'épaisseur du matériau. - Ajout du dessin de l'axe si on choisit l'option carré parfait. - 2024-11-06 | 2024.2 : La roue de fixation pour les servomoteurs est maintenant paramétrable. - 2024-10-25 | 2024.1 : Ajout du tracé de roue de fixation pour les servomoteurs. Changement de versionnage. Flancs pour roue de type T. - 2024-07-20 | 1.4 : Ajout du tracé de poulie au pas métrique. Retouche des explications. Ajout de schémas. - 2024-06-22 | 1.3 : Ajout de couleurs pour l'ordre de découpe. Séparation en plusieurs objet pour faciliter la retouche et la recolorisation. - 2024-06-18 | 1.2 : Ajout de la possibilité de choisir la forme du trou (rectangulaire, ronde ou empreinte de servo) et de choisir les dimensions du trou. Ajout de la possibilité de choisir une empreinte pour le trou du servo. Les empreintes sont placées dans le fichier engrenage.ini - 2024-04-21 | 1.1 : traduction en français. Modification de la couleur en cas d'undercut. Modification du deddendum pour qu'il fasse 1,25 fois l'addendum. Translated in english. Please send me pot file for other languages.


Comment here...
Split And Break Bezier At T
i

Mario VoigtSplit And Break Bezier At T

Mario Voigt

Splits a path at value t=0..1 (t=0.5 means 50%) Applies independently for each sub path in selection. Docs: https://y.stadtfabrikanten.org/splitandbreakbezieratt


Comment here...
Multi page layout and margins
i

ElCoyoteeMulti page layout and margins

ElCoyotee

Setup the Inkscape canvas for projects with multiple pages. For example booklets or flyers. You can change the way the pages are ordered either a single array of pages for loose collection of pages or double pages for books. As well as creating and positioning the pages margins are added for cut safety zones or content region. The margins are grouped so they are easy to show or hide for export. MD5 Hash: 6746c85b3a35bfc4ab296e71d1af8d75


Comment here...
xkcdify
i

Gui Meiraxkcdify

Gui Meira

This extension modifies your paths to make them look hand-drawn like the ones in xkcd comics (https://xkcd.com/). It does so by first adding more nodes to your path and then adding a little bit of noise to the position of each node. The algorithm was adapted from the one used in matplotlib's xkcd function: https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.xkcd.html The extension can also replace the fonts of all the selected texts with Humor Sans, which looks (kinda) similar to the text on xkcd. Installation: 1) Download the zip file for this extension. 2) Open Inkscape and go to Edit > Preferences. Open the System tab on the left panel. You'll see a list of folder names. 3) Locate the User extensions folder and click Open. 4) Extract the files from the xkcdify release you just downloaded into this folder and restart Inkscape. 5) Optionally, download and install the Humor Sans font. It can be obtained here: https://github.com/shreyankg/xkcd-desktop/blob/master/Humor-Sans.ttf Usage: 1) Select the paths and texts you want to xkcdify 2) Go to Extensions > Modify paths > xkcdify 3) Adjust the parameters to tune the effect to your liking. You can enable the live preview using the checkbox at the bottom of the window This extension only processes paths. If you want to xkcdify ellipses, rectangles, and other shapes, convert them to paths first using Path > Object to path This project is not affiliated, authorized, or endorsed by xkcd. I'm just a guy on the internet who thinks xkcd is cool.


Comment here...
Sibelius ViewBox
i

musikaiSibelius ViewBox

musikai

This is an extension for Inkscape 1.2 for correcting SVG-files that were exported by Sibelius via the graphic selection tool. These SVG are always the full page with 4 white rectangles that cover the unwanted area. The page size and viewbox isn't set correctly to show only the selected area. The extension will correct this and has the options to - remove the white cover boxes - remove all elements that are outside the page (most of it). #### Download: Click on the image above #### Video: https://www.youtube.com/watch?v=Jg7QqarVrA4 #### Installation: On Windows extract the zip file into something like this path: C:\Users\yourname\AppData\Roaming\inkscape\extensions\ To find and open the correct folder you can also open Inkscape->Edit->Preferences->System->User Extensions->Open After installation and restart Inkscape you can run the extension in "Extensions"->Document->Sibelius Viewbox. #### (Optional) Usage as .bat-file to process multiple SVGs: As it is a python script it also can be used to batch process multiple files via command line. Put this line into a text-file, edit the paths (yourname) and save as SibeliusViewbox.bat: for %%a in (%*) do python.exe "C:\Users\yourname\AppData\Roaming\inkscape\extensions\SibeliusViewbox\SibeliusViewboxExtension.py" --remove_whiteboxes=True --remove_elements=True %%a > %%a_viewbox.svg An example .bat-file is included. Once created you can drag and drop multiple SVGs onto the SibeliusViewbox.bat-file and the script will generate the corrected SVGs. Note: If Inkscape is not installed in "C:\Program Files\" you must edit the Python script. #### (Optional) Add .bat-file to Send-to-Menu: You can add the .bat-file to the Windows Send-to-menu. Open Windows-Explorer and insert this into the address-bar: shell:sendto This opens the Send-to-folder. Copy the .bat-file into it. Now you can select all your SVGs, right click -> Send-to -> SibeliusViewbox.bat


Comment here...