A method of determining toolpaths for an infill structure for a digital 3D model, the method comprising: a. receiving a polygon, the polygon representing an outline of a layer of the digital 3D model; b. determining a medial axis within the polygon, the medial axis comprising a number of nodes and a number of edges; c. decomposing areas between the medial axis and the polygon into a set of trapezoids and triangles, by introducing further edges from the nodes of the medial axis to a closest point on the polygon; d. defining a skeleton, the skeleton comprising the nodes and edges of the medial axis and the further edges; e. determining, for each node v of the skeleton, a feature radius value, where the feature radius of a location on the skeleton is defined as the radius of an inscribed circle centered at the location; f. calculating, for each edge of the skeleton, a significance value S, with S = |r1-r2|/D, wherein r1 is the feature radius of a first node of the edge, and r2 is a feature radius of a second node of the edge, and D is a length of the edge; g. marking those edges of the skeleton that have a significance value S which is lower than a predefined threshold T to obtain the marked edges; h. defining marked nodes as those nodes which are either connected to a marked edge or have a feature radius larger than all of their neighbouring nodes, and defining unmarked nodes as being all those nodes that are not marked nodes; i. assigning each marked node in the skeleton a bead count value b, which is defined as a number of beads to fit along a diameter of the inscribed circle centered at the respective marked node; j. assigning to each marked node, a bead distribution B, defined as the combination of a location list L of feature radii values and a bead width list W of bead widths, for which the location list and bead width list have a size of at least half of the bead count b assigned to that marked node; k. assigning to each unmarked node, a bead distribution B which is based on the bead distributions of nodes connected to the unmarked node via an edge of the skeleton; l. determining, on each unmarked edge, junctions at those locations along the unmarked edge where the feature radius corresponds to any of the feature radii values in the location list of the node with the higher feature radius value of the two nodes connected to the respective unmarked node and assigning to each of the junctions a corresponding bead width out of the bead width list W; m. filling the polygon with toolpaths, the toolpaths passing through the junctions and having a variable width defined by the assigned bead widths. a. receiving a polygon, the polygon representing an outline of a layer of the digital 3D model; b. determining a medial axis within the polygon, the medial axis comprising a number of nodes and a number of edges; c. decomposing areas between the medial axis and the polygon into a set of trapezoids and triangles, by introducing further edges from the nodes of the medial axis to a closest point on the polygon; d. defining a skeleton, the skeleton comprising the nodes and edges of the medial axis and the further edges; e. determining, for each node v of the skeleton, a feature radius value, where the feature radius of a location on the skeleton is defined as the radius of an inscribed circle centered at the location; f. calculating, for each edge of the skeleton, a significance value S, with S = |r1-r2|/D, wherein r1 is the feature radius of a first node of the edge, and r2 is a feature radius of a second node of the edge, and D is a length of the edge; g. marking those edges of the skeleton that have a significance value S which is lower than a predefined threshold T to obtain the marked edges; h. defining marked nodes as those nodes which are either connected to a marked edge or have a feature radius larger than all of their neighbouring nodes, and defining unmarked nodes as being all those nodes that are not marked nodes; i. assigning each marked node in the skeleton a bead count value b, which is defined as a number of beads to fit along a diameter of the inscribed circle centered at the respective marked node; j. assigning to each marked node, a bead distribution B, defined as the combination of a location list L of feature radii values and a bead width list W of bead widths, for which the location list and bead width list have a size of at least half of the bead count b assigned to that marked node; k. assigning to each unmarked node, a bead distribution B which is based on the bead distributions of nodes connected to the unmarked node via an edge of the skeleton; l. determining, on each unmarked edge, junctions at those locations along the unmarked edge where the feature radius corresponds to any of the feature radii values in the location list of the node with the higher feature radius value of the two nodes connected to the respective unmarked node and assigning to each of the junctions a corresponding bead width out of the bead width list W; m. filling the polygon with toolpaths, the toolpaths passing through the junctions and having a variable width defined by the assigned bead widths.