Stepover-based toolpath generation through partitioned slice regions
Patent Information
- Authority / Receiving Office
- EP · EP
- Patent Type
- Applications
- Current Assignee / Owner
- SIEMENS INDUSTRY SOFTWARE INC
- Filing Date
- 2023-09-27
- Publication Date
- 2026-07-01
AI Technical Summary
Existing 3D printing technologies face challenges in constructing toolpaths within the allowable stepover range, especially for complex and large 3D object designs, leading to deformations, gaps, and manufacturing defects.
The system partitions a slice region into multiple subsections based on the medial axis, allowing for individual evaluation and modification of sub-toolpaths to ensure they comply with the allowable stepover range, using techniques such as splitting and boundary extension.
This approach enables automated and intelligent toolpath generation, improving the efficiency and quality of 3D printing by reducing stepover violations and enhancing part quality.
Smart Images

Figure US2023033829_03042025_PF_FP_ABST
Abstract
Description
STEPOVER-BASED TOOLPATH GENERATION THROUGH PARTITIONED SLICE REGIONSBACKGROUND
[0001] Computer systems can be used to create, use, and manage data for products, items, and other objects. Examples of computer systems include computer-aided design (CAD) systems (which may include computer-aided engineering (CAE) systems and computer-aided manufacturing (CAM) systems), visualization and manufacturing systems, product data management (PDM) systems, product lifecycle management (PLM) systems, and more. These systems may include components that facilitate the design, analysis, visualization, and simulated testing of product structures and product manufacture.BRIEF DESCRIPTION OF THE DRAWINGS
[0002] Certain examples are described in the following detailed description and in reference to the drawings.
[0003] Figure 1 shows an example of a system that supports stepover-based toolpath generation through partitioned slice regions.
[0004] Figure 2 shows an example partitioning of a slice region into multiple subsections according to the present disclosure.
[0005] Figure 3 shows an example toolpath generation according to the present disclosure through splitting of selected subsections of a slice region.
[0006] Figure 4 shows an example toolpath generation according to the present disclosure through splitting of all subsections of a slice region.
[0007] Figure 5 shows an example toolpath generation according ot the present disclosure through boundary extension of selected subsections.
[0008] Figure 6 shows an example of logic that a system may implement to support stepover-based toolpath generation through partitioned slice regions.
[0009] Figure 7 shows an example of a computing system that supports stepover- based toolpath generation through partitioned slice regions.DETAILED DESCRIPTION
[0010] Additive manufacturing (sometimes referred to as 3-dimensional or 3D printing) may be performed via 3D printers that can construct objects on a layer-by-layer basis. Example forms of additive manufacturing include multiaxis 3D printing, in which 3D printers can adjust (e.g., tilt) an axis along which 3D construction is performed through material deposition, and laser powder bed fusion processes, in which a laser can be used as a power source to sinter / melt powdered material (e.g., metal powder) laid up on a powder bed or build platform. 3D printing may involve successively forming material in an incremental manner through use of 3D printing tools, such as through a material deposition head or an energy beam that is used to incrementally build a 3D part in an ordered manner. As used herein, a toolpath may refer to any course, route, or pathing that is used by a 3D printer to construct any portion of a 3D part through additive manufacturing, whether as a path to successively deposit material for material deposition 3D printing technologies, as a path to guide a laser (or other energy emission) for energy application through LPBF- type 3D printing technologies, and more.
[0011] The specific properties and characteristics of deposition materials and additive manufacturing process parameters may impact physical product construction. One characteristic of additive manufacturing processes is stepover or stepover value, which may refer to a distance between successive or consecutive material deposits in an additive manufacturing process. Stepover may be computed, specified, or otherwise determined in various ways, for example as a fixed value or range of values, which can be based on the bead size (e.g., diameter) of deposition material in an additive manufacturing process. In some 3D printing systems, stepover is measured as a distance between successive depositions of beads (e.g., center-to-center distance).
[0012] Stepovers in additive manufacturing toolpaths can impact part quality of constructed objects. If a stepover value at a toolpath section in an additive manufacturing process is too small (e.g., successive deposition of beads is a relatively shorter distance apart), then the 3D printed product can have deformations caused by unintended material overlap or buildup at such sections. If a stepover value at a toolpath section in an additive manufacturing process is too large (e.g., successive deposition of beads is a relatively longer distance apart), then the 3D printed product can have gaps or missing material in constructed layers, which can likewise result in product defects.
[0013] Additive manufacturing process may be characterized by an allowable stepover range. An allowable stepover range may specify a range of stepover values for material depositions in a 3D printing process will not cause product defects, and such ranges may be user-configurable or user- specified. A stepover range may be specified as a range of values that are within a maximum stepover value and a minimum stepover value. Maximum stepover values may be specified based on a bead diameter of deposition material, e.g., equal to the bead diameter, or as a function of the bead diameter. Minimum stepover values may be specified as a numerical value or as a percentage of the maximum stepover value, e.g., 90% of the maximum stepover value. Through toolpath adherence to allowance stepover value ranges specified for additive manufacturing processes, the quality of 3D printed products can improve and defects in manufactured parts can be reduced or eliminated.
[0014] One challenge in modern 3D printing processes is constructing toolpaths that are within the allowable stepover range, especially as 3D object designs and 3D printed products continue to increase in size and complexity. For curved or rounded parts (e.g., constructed via wire arc additive manufacturing machines), it may be further beneficial to construct such parts through toolpaths with shorter zig-zag movements between proximate boundaries of the part rather than through long horizontal toolpath movements across the entire width of the part. Manual construction of zig-zag or weaving toolpaths for additive manufacture of 3D object designs is not practicallyfeasible, as doing so would require individual construction of toolpaths with, often times, hundreds to thousands of weaves per slice across a product that may require hundreds or thousands of slices to construct.
[0015] Moreover, satisfaction of stepover constraints in manual toolpath construction further increases the complexity of such processes. Ensuring compliance with stepover ranges for each individual slice toolpath would require immense amounts of time and resources to complete for even a simple 3D object. Satisfying the allowable stepover range in such zig-zag toolpaths may be particularly challenging, as curvature and arcs of rounded parts may cause deposition distances that violate the maximum stepover value on longer arc boundaries, that violate the minimum stepover value when weaving and zig-zagging from shorter arc boundaries, or possibly both. For a slice region of a 3D object for which a toolpath may zig-zag between a shorter arc boundary and a longer arc boundary, violations of a minimum stepover value along the shorter arc may result in extraneous material deposition and manufacturing defects. Violations of a maximum stepover value along the longer arc may result in missing material and incomplete product manufacture, likewise introducing part defects.
[0016] The disclosure herein may provide systems, methods, devices, and logic for stepover-based toolpath generation through partitioned slice regions. The toolpath generation technology described herein may provide automated and intelligent additive manufacturing toolpath generation techniques that account for stepover ranges in generation of zig-zag toolpaths for slices of a 3D object. As described further herein, the toolpath generation technology of the present disclosure may partition a slice region into multiple different subsections, for example doing so based on splitting criteria applied to a medial axis of the slice region. Different subsections can be evaluated and modified individually, allowing for increased flexibility and toolpath adaptations that account for the specific geometric characteristics of the subsections.
[0017] The toolpath generation technology disclosed herein can support evaluation of subsections on an individual basis. For example, individual subsections can be evaluated to determine whether a sub-toolpath for thesubsection (e.g., a zig-zag toolpath for this subsection) would violate the allowable stepover range. As used herein, a sub-toolpath may refer to a toolpath for additive manufacturing of a slice region subsection and can be combined with other sub-toolpaths to form a toolpath for the slice region. If sub-toolpath violations of the allowable stepover range are detected, the subsections are modified. Example subsection modifications of the present disclosure include subsection splitting our boundary extensions, as described in greater detail herein.
[0018] Subsection modifications can continue until each of the multiple subsections of a slice region can satisfy the allowable stepover range for subsection sub-toolpaths. Sub-toolpath generation may be performed for the individual subsections, and then the toolpath for the slice region can be generated as a combination of the sub-toolpaths generated for the subsections of the partitioned slice region. Through slice region partitioning, subsection modifications, and sub-toolpath generations, slice region toolpaths can be automatically generated with increased efficiency, intelligence, and effectiveness. The toolpath generation features of the present disclosure may thus improve the speed of 3D printing processes through efficient toolpath generation and may increase part quality through reduction of stepover violations in 3D printing processes.
[0019] These and other toolpath generation features and technical benefits according to the present disclosure are described in greater detail herein.
[0020] Figure 1 shows an example of a computing system 100 that supports stepover-based toolpath generation through partitioned slice regions. The computing system 100 may take the form of a single or multiple computing devices such as application servers, compute nodes, desktop or laptop computers, smart phones or other mobile devices, tablet devices, embedded controllers, and any relevant or applicable technological device. In some implementations, the computing system 100 hosts, supports, executes, or implements an application that supports any number of facets of additive manufacturing, such as toolpath generations and 3D printing of physical objects.
[0021] As an example implementation to support any combination of the toolpath generation features described herein, the computing system 100 shown in Figure 1 includes a slice region access engine 108 and a toolpath generation engine 110. The computing system 100 may implement the engines 108 and 110 (including components thereof) in various ways, for example as hardware and programming. The programming for the engines 108 and 110 may take the form of processor-executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the engines 108 and 1 10 may include a processor to execute those instructions. A processor may take the form of single processor or multiprocessor systems, and in some examples, the computing system 100 implements multiple engines using the same computing system features or hardware components (e.g., a common processor or a common storage medium).
[0022] In operation, the slice region access engine 108 may access a slice region of a digital object design (e.g., a CAD object) for a product to be manufactured through an additive manufacturing process. A slice region may refer to any portion of a slice applicable to an additive manufacturing process, which can include an entire slice of the digital object design or a sub-portion of the slice. Access of the slice region by the slice region access engine 108 may be based on user inputs, for example accessing a particular slice region selected by a user for which to generate a zig-zag toolpath. As another example, the slice region access engine 108 may identify and access slice regions based on part curvatures of a digital object design or according to configured application parameters for which zig-zag toolpath generation has been configured, specified, or selected for portions of the digital object design. In the example of Figure 1 , the slice region access engine 108 accesses a slice region of a digital object design shown as the slice region 120.
[0023] In operation, the toolpath generation engine 1 10 may automatically generate a toolpath for the slice region 120 based on an allowable stepover range specified for the additive manufacturing process. In the example of Figure 1 , the toolpath generation engine 1 10 generates the toolpath 130 forthe accessed slice region 120. The toolpath generation engine 1 10 may generate the toolpath 130 by determining a medial axis of the slice region 120 and partitioning the slice region 120 into multiple subsections based on the medial axis of the slice region 120. Partitioning of the slice region 120 by the toolpath generation engine 1 10 may be performed based on splitting criteria, which may include any constraint, condition, requirement, or other criterion through which the toolpath generation engine 1 10 may partition a slice region. In some implementations, the splitting criteria may include criteria applied to a medial axis of the slice region 120, and the toolpath generation engine 1 10 may identify splits between different subsections in the slice region 120 at (and through) points 220 on the medial axis 210 that satisfy splitting criteria.
[0024] In generating the toolpath 130, the toolpath generation engine 1 10 may also evaluate individual subsections among the multiple subsections of the partitioned slice region based on the allowable stepover range and modify a given subsection responsive to a determination that a sub-toolpath for the given subsection would violate the allowable stepover range. The toolpath generation engine 110 may further generate sub-toolpaths for each of the multiple subsections of the partitioned slice region, including any modified subsections, and generate the toolpath 130 for the slice region 120 as a combination of the sub-toolpaths generated for each of the multiple subsections of the partitioned slice region. In operation, the toolpath generation engine 1 10 may also provide the toolpath 130 to a 3-dimensional printer in support of physical manufacture of the product through the additive manufacturing process.
[0025] These and other features of the toolpath generation technology of the present disclosure are described in greater detail next.
[0026] Figure 2 shows an example partitioning of a slice region into multiple subsections according to the present disclosure. The example features of Figure 2 are described through the toolpath generation engine 1 10 as an example, though any suitable implementation is contemplated herein.
[0027] The toolpath generation engine 110 may partition a slice region 120 into multiple subsections in support of stepover-based toolpath generation. Asubsection may refer to any sub-portion, partition, or section of a slice region. As described herein, the toolpath generation engine 110 may apply any number of splitting criteria in order to determine portions, positions, points, or any suitable delineation within the slice region 120 at which to split different subsections of the slice region 120. In some implementations, the toolpath generation engine 1 10 may split the slice region 120 into different subsections based on a medial axis of the of slice region 120. The medial axis may provide an indicator or representative curve of an overall shape of the slice region, and the toolpath generation engine 1 10 may utilize the medial axis of the slice region 120 to determine at which points to partition the slice region 120 into multiple subsections.
[0028] In the example shown in Figure 2, the toolpath generation 1 10 determines the medial axis 210 of the slice region 120 and may do so via any suitable medial axis determination technique. For medial axis determinations, the toolpath generation engine 1 10 may apply or implement any suitable technique, algorithm, calculations, or logic to determine a medial axis for slice regions of any type. The toolpath generation engine 1 10 may next determine points of the medial axis 210 that satisfy the applied splitting criteria and split the slice region 120 into different subsections via the identified points.
[0029] By splitting the slice region 120 into distinct subsections, the toolpath generation engine 1 10 may create distinct zones with differing characteristics and generate a separate toolpath for each subsection. Thus, instead of generating a single toolpath for the entire slice region 120, the toolpath generation engine 1 10 may, in effect, split the slice region 120 into distinct sub-portions with different characteristics and generate a respective subtoolpath for partitioned subsections. The splitting of the slice region 120 into subsections may be intentional and controlled, as guided by the splitting criteria used to partition the slice region 120. Such splitting criteria may cause partitioning into subsections that can be particularly amenable to individual sub-toolpath generation, and the toolpath generation 110 may apply any number of splitting criteria for partitioning the slice region 120. Various examples of splitting criteria are described herein.
[0030] As a first example, the toolpath generation engine 110 may apply a straight splitting criterion that is satisfied when a straight-line portion of the medial axis 210 starts or ends. Through the straight splitting criterion, the toolpath generation engine 1 10 may split off subsections of the slice region 120 with straight (or mirrored) boundaries. This may be the case for portions of the slice region 120 along which the medial axis 210 is straight, and the toolpath generation engine 110 may partition straight boundary subsections through the straight splitting criterion applied ot the medial axis 210 of the slice region 120. Sub-toolpath generation for partitioned straight subsections may be particularly effective, as zig-zag toolpaths need not account for curvature changes that can cause stepover violations, and sub-toolpath generation can be quickly and efficiently performed for such partitioned straight subsections.
[0031] As another example, the toolpath generation engine 110 may apply a curvature splitting criterion that is satisfied when a curvature of the medial exceeds a threshold curvature value. The threshold curvature value may be a predetermined value, which can be user-specified or configured as system parameter. In some implementations, the threshold curvature value is set to a curvature value at which the allowable stepover range will be violated, e.g., for zig-zag toolpaths generated for portions of the slice region 120 with a curved boundaries that cause the medial axis 210 to exceed the threshold curvature value. As such, the toolpath generation engine 1 10 may determine to partition off a separate subsection for such portions of the slice region 210 and address such subsections separately, which may allow for more efficient and effective toolpath generation for the distinct subsections.
[0032] As yet another example, the toolpath generation engine 1 10 may apply an inflection splitting criterion that is satisfied at an inflection point in the medial axis 210 at which the medial axis 210 changes concavity. The change in concavity of the medial axis 210 may be reflective of a change in concavity of boundaries of the slice region 120, at which the toolpath generation engine 1 10 may split separate subsections for the slice region 120. By doing so, the toolpath generation engine 1 10 may reduce (e.g., eliminate) subsections that with multiple boundary curve concavities, which can result in stepoverviolations due to boundary curvature changes that are too drastic for stepover range requirements for material depositions. Accordingly, the toolpath generation engine 1 10 may address such situations by partitioning these slice portions into different subsections via the inflection splitting criterion and generate corresponding sub-toolpaths for subsections partitioned through the inflection splitting criterion.
[0033] The toolpath generation engine 110 may thus apply splitting criteria that include a straight splitting criterion, a curvature splitting criterion, an inflection splitting criterion, or any combination thereof. In the example of Figure 2, the toolpath generation engine 1 10 applies splitting criteria to the slice region 120 and processes the medial axis 210 to determine points along the medial axis 210 that satisfy the splitting criteria. In particular, the toolpath generation engine 1 120 determines three (3) points along the medial axis 210 at which the splitting criteria are satisfied, labeled as points 220 in Figure 2. In the example of Figure 2, the toolpath generation engine 1 10 determines that a leftmost point of the points 220 satisfies a straight splitting criterion, that a center point of the points 220 satisfies an inflection splitting criterion, and that a rightmost point of the points 220 satisfies the straight splitting criterion. Through the points 220 on the medial axis 210 that satisfy the splitting criteria, the toolpath generation engine 1 10 may partition the slice region 120 into multiple different subsections.
[0034] While some splitting criteria examples are presented herein with respect to a medial axis, the toolpath generation engine 1 10 may utilize splitting criteria applicable through any suitable analysis of a slice region 120. For example, splitting criteria may apply directly to the boundaries or any relevant geometrical features of the of the slice region instead of a medial axis. Through such geometrical analyses, the toolpath generation engine 1 10 may determine points at which to partition the slice region 120 to form subsections for subsequent evaluation and sub-toolpath generation.
[0035] The toolpath generation engine 1 10 may partition the slice region 120 from the determined points 220 by splitting the slice region via partitioning lines that pass through the points 220. For a leftmost point of the points 220that satisfies a straight splitting criterion, the toolpath generation engine 1 10 may insert a partitioning line through this point, and the partitioning line may separate different subsections of the slice region 120. The toolpath generation engine 1 10 may insert partitioning lines in any suitable manner and according to any configurable or specified parameters. For example, the toolpath generation engine 1 10 may insert partitioning lines that cross through determined points 220 that satisfy the splitting criteria at a specified angle (e.g., as vertical lines), by connecting points normal to the slice region boundaries and crossing through a particular point on the medial axis 210, or in any other suitable manner.
[0036] As one example, the toolpath generation engine 1 10 may insert partitioning lines by adaptively determining an angle at which to insert the partitioning lines to partition different subsections. In doing so, the toolpath generation engine 110 may angle inserted partitioning lines for straight-line or low curvature subsections, doing so to decrease the difference in length between the longer and shorter boundaries of a neighboring subsection (e.g., with relatively higher curvature). Doing so may allow for a reduced boundary length difference in a neighboring subsection and decrease the likelihood of stepover violations.
[0037] To form subsections for the slice region 120 in the example of Figure 2, the toolpath generation engine 110 inserts three (3) partitioning lines to. A respective partitioning line crosses a respective one of the determined points 220 that satisfy the splitting criteria. In doing so, the toolpath generation engine 110 may partition the slice region 120 into four (4) different subsections via the determined points 220, and the partitioned subsections are labeled as subsections 231 -234 in Figure 2. By partitioning the slice region 120 into the multiple different subsections 231 -234, the toolpath generation engine 1 10 may separate out distinct portions of the slice region 120 for which subtoolpaths for the individual subsections can be separately generated. In that regard, determination of stepover violations and subsequent adaptations may be performed through evaluation of individual subsections, instead of regionwide generation of a singular toolpath for the slice region 120 as a whole.Doing so may increase the efficiency of toolpath generations, as problematic subsections can be quickly and individually identified and addressed accordingly without a need to for global evaluations and toolpath modifications for the slice region 120 as a whole.
[0038] Various subsection evaluation and modification features are contemplated herein in order to generate sub-toolpaths for the multiple subsections of a partitioned slice region. Example modification techniques and toolpath generation technologies are presented next through Figures 3- 5, using the partitioned slice region of Figure 2 with subsections 231 -234 as a continuing example.
[0039] Figure 3 shows an example toolpath generation according to the present disclosure through splitting of selected subsections of a slice region. In support of the toolpath generation technology of the present disclosure, the toolpath generation engine 1 10 may evaluate individual subsections of a partitioned slice region based on an allowable stepover range specified for an additive manufacturing process. As used herein, evaluation of a slice subsection may comprise determining whether a sub-toolpath for the subsection would violate the allowable stepover range.
[0040] Evaluation of subsections of the toolpath generation engine 1 10 may vary depending on the format, type, or characteristics of subsection subtoolpaths for which stepover violations are being determined. Any suitable sub-toolpath is contemplated herein, and the toolpath generation engine 1 10 may support generation or evaluation of sub-toolpaths of any type. As a continuing example used herein, the toolpath generation engine 1 10 may generate or evaluate toolpaths (including sub-toolpaths) in the form of zig-zag toolpaths that weave back and forth from one boundary of a slice region or subsection to another. Such zig-zag toolpaths may traverse from a first boundary to another, increment a small distance forward, and weave back from the other boundary back to the first boundary. The distance increment along a subsection boundary may be referred to as a weave increment, and weave increment values may be boundary specific. In such zig-zag toolpaths, the number of weave increments may be equal in number for the twoboundaries that the zig-zag toolpath weaves between. As such, the weave increment value in zig-zag toolpaths may be evaluated along both boundaries of a subsection for stepover range violations.
[0041] In performing subsection evaluations, the toolpath generation engine 1 10 need not actually generate the sub-toolpath for determination of stepover range violations. Instead, the toolpath generation engine 1 10 may evaluate the boundary geometry or other characteristics of the subsection in making a stepover violation determination. For zig-zag toolpaths, the toolpath generation engine 1 10 may evaluate a given subsection by processing the two boundaries that a sub-toolpath for the given subsection weaves between based on an allowable stepover range.
[0042] In some implementations, the toolpath generation engine 1 10 can evaluate a sub-toolpath in which weave increments along a longer boundary of the subsection are assigned the maximum stepover value in stepover range. Then, the toolpath generation engine 1 10 may determine whether the weave increments in the shorter boundary violate the minimum stepover range value of the allowable stepover range. In doing so, the toolpath generation engine 1 10 may evaluate a given subsection by splitting a longer boundary of the given subsection in a number of points with intervals between adjacent points along the longer boundary equal to a maximum stepover value in the allowable stepover range and splitting a shorter boundary of the given subsection into a same number of points as the longer boundary with equidistant intervals between adjacent points along the shorter boundary.
[0043] In such a way, the toolpath generation engine 1 10 may set the weave increment along the longer boundary to the maximum stepover value and divide the shorter boundary into an equal number of weave increments. Then, the toolpath generation engine 110 may determine that the sub-toolpath for the given subsection would violate the allowable stepover range responsive to a determination the equidistant interval between adjacent points along the shorter boundary (e.g., weave increment along the shorter boundary) is less than the minimum stepover value in the allowable stepover range.
[0044] As another example, the toolpath generation engine 110 can evaluate a sub-toolpath in which weave increments along a longer boundary of the subsection are assigned the minimum stepover value in stepover range (or any other value within the stepover range that is less than the maximum stepover value). In this example, the toolpath generation engine 1 10 may determine whether the weave increments in the longer boundary violate the maximum stepover range value of the allowable stepover range. The toolpath generation engine 1 10 may thus evaluate a given subsection by splitting a shorter boundary of the given subsection in a number of points with intervals between adjacent points along the shorter boundary equal to a minimum stepover value in the allowable stepover range (or other configured value) and splitting a longer boundary of the given subsection into a same number of points as the shorter boundary with equidistant intervals between adjacent points along the longer boundary.
[0045] By doing so, the toolpath generation engine 110 may set the weave increment along the shorter boundary to the minimum stepover value (or other configured value) and divide the longer boundary into an equal number of weave increments. Then, the toolpath generation engine 1 10 may determine that the sub-toolpath for the given subsection would violate the allowable stepover range responsive to a determination the equidistant interval between adjacent points along the longer boundary (e.g., weave increment along the longer boundary) is greater than the maximum stepover value in the allowable stepover range.
[0046] As yet another example, the toolpath generation engine 1 10 may evaluate a given subsection based on a distance difference between a longer boundary and a shorter boundary that a sub-toolpath for the given subsection would weave between. Responsive to a determination that the distance difference is greater than a distance threshold value, the toolpath generation engine 110 may determine that the subsection would violate the allowable stepover range. The distance threshold value may be specified as a function of the maximum stepover value or the minimum stepover value. Such a comparison using a distance threshold value calculated based on maximumor minimum allowable stepover values can be, in effect, functionally equivalent to violation determinations through the splitting of longer and shorter boundaries into equidistant intervals, as described above.
[0047] In any of the ways described herein, the toolpath generation engine 1 10 may evaluate individual subsections of a partitioned slice region. Evaluation may be based on sub-toolpaths for the individual subsections and whether such sub-toolpaths would violate the allowable stepover range. Responsive to a determination that a given subsection would violate the allowable stepover range (e.g., a zig-zag toolpath for the given subsection would violate the allowable stepover range), the toolpath generation engine 1 10 may perform subsection modifications to address the detected stepover violations.
[0048] As one example, the toolpath generation engine 110 may modify a given subsection by splitting the given subsection into two separate subsections. To explain through the example of Figure 3, the toolpath generation engine 1 10 may individually evaluate each of the subsections 231 - 234 and determine that subsections 232 and 233 violate the allowable stepover range. Responsive to such violation determinations, the toolpath generation engine 1 10 may split each of the subsections 232 and 233 into two separate subsections. As shown in Figure 3, the toolpath generation engine 1 10 may split subsection 232 into subsections 31 1 and 312. In a similar manner, the toolpath generation engine 1 10 may split subsection 233 into subsections 321 and 322.
[0049] The toolpath generation engine 1 10 may split a given subsection into multiple subsections in any number of ways. In some examples, the toolpath generation engine 1 10 may partition the given subsection along the medial axis of the slice region 120, splitting the given subsection into two. As another example, the toolpath generation engine 110 may partition the given subsection along the medial axis of the given subsection itself. As yet another example, the toolpath generation engine 1 10 may split the given subsection into two subsections of equal area (or within an area difference threshold) Any suitable splitting scheme, configurations, and parameters can be employed bythe toolpath generation engine 110 to split a violating subsection, including splitting the subsection into three (3) subsections, four (4) subsections, or more.
[0050] In some examples, the toolpath generation engine 1 10 may further evaluate any modified subsections, including split subsections such as subsections 31 1 , 312, 321 , and 322. Then, the toolpath generation engine 1 10 may perform further modifications should any of the modified subsections (e.g., sub-toolpaths thereof) violate the allowable stepover range. In the example of Figure 3, the toolpath generation engine 110 may evaluate the split subsections 31 1 , 312, 321 , and 322 and further any of modify these split subsections 311 , 312, 321 , and 322 responsive to a determination that a respective subsection violates the allowable stepover range.
[0051] In the example of Figure 3, the toolpath generation engine 1 10 determines that sub-toolpaths of split subsections 31 1 , 312, 321 , and 322 satisfy the allowable stepover range, and no further modifications are necessary. As such, the partitioned slice region (after modifications) may comprise the subsection 231 , split subsections 31 1 and 312 (modified from subsection 232), split subsections 321 and 322 (modified from subsection 233), and subsection 234. The toolpath generation engine 1 10 may then generate sub-toolpaths for each of these subsections 231 , 31 1 , 312, 321 , 322, and 234.
[0052] Sub-toolpath generation by the toolpath generation engine 1 10 may be automated and performed in any suitable manner. As the evaluations of the subsections by the toolpath generation engine 1 10 can include subdividing boundaries of the subsection into equidistant points / intervals (e.g., weave increments), sub-toolpath generation may follow a similar process. To generate the sub-toolpaths, the toolpath generation engine 1 10 may connect the different points on the subsection boundaries (or within a threshold distance offset from the boundary, e.g., half of a maximum stepover value) to weave back and forth between the boundaries of the subsection. In doing so, the toolpath generation engine 1 10 may generate sub-toolpaths for individual subsections.
[0053] Examples of sub-toolpaths are shown in Figure 3 for each of the subsections 231 , 31 1 , 312, 321 , 322, and 234 of a partitioned slice region. As seen in the illustrative example of Figure 3, each of the sub-toolpaths may zigzag between respective boundaries of a given subsection. The toolpath generation engine 1 10 may next combine the sub-toolpaths to form a toolpath for the slice region 120 as a whole, shown in Figure 3 as the toolpath 130. Such combination may include linking endpoints of a sub-toolpath to the start of another sub-toolpath. Figure 3 provides an illustrative example of subtoolpath generation and merging of sub-toolpaths to generate a slice region toolpath, and the toolpath generation engine 110 may implement any suitable toolpath generation capabilities to flexibly and efficiently generate zig-zag toolpaths for individual subsections of a slice region. While Figure 3 provides one example of subsection modification, others are contemplated herein, as described further through Figures 4 and 5.
[0054] Figure 4 shows an example toolpath generation according to the present disclosure through splitting of all subsections of a slice region. In the example of Figure 4, the toolpath generation engine 110 individually evaluates subsections 231 , 232, 233, and 234 of a partitioned slice region, doing so in any of the ways described herein. In this example, the toolpath generation engine 110 determines that subsections 232 and 233 violate the allowable stepover range. Responsive to such a determination, the toolpath generation engine 1 10 may modify subsections of the slice region by splitting all subsections of the slice region, including those which do not violate the allowable stepover range.
[0055] In the example of Figure 4, the toolpath generation engine 1 10 modifies each of the subsections 231 , 232, 233, and 234 by splitting the subsections into multiple split subsections. In particular, the toolpath generation engine 1 10 may split subsection 231 into subsections 411 and 412, split subsection 232 into subsections 421 and 422, split subsection 233 into subsections 431 and 432, and split subsection 234 into subsections 441 and 442. As such, the toolpath generation engine 1 10 may split each of subsections 231 and 234 into two other separate subsections respectively,even though the sub-toolpaths for subsections 231 and 234 would not violate the allowable stepover range. Subsection modifications through splitting of the subsections 231 -234 may be performed in any of the ways described herein.
[0056] In a consistent manner as described herein, the toolpath generation engine 110 may also evaluate any modified subsections, including the split subsections 41 1 , 412, 421 , 422, 431 , 432, 441 , and 442. Further modifications may include splitting of all subsections, including modified subsections, responsive to a determination that one or more of the split subsections 41 1 , 412, 421 , 422, 431 , 432, 441 , and 442 (e.g., a sub-toolpath thereof) would violate the allowable stepover range.
[0057] Upon determining that no subsections (including modified subsections) would violate the allowable stepover range, the toolpath generation engine 1 10 may generate sub-toolpaths for the partitioned slice region. In the example of Figure 4, the toolpath generation engine 1 10 determines that none of the subsections 41 1 , 412, 421 , 422, 431 , 432, 441 , and 442 violate the allowable stepover range, and thus the partitioned slice region includes the subsections 411 , 412, 421 , 422, 431 , 432, 441 , and 442. Then, the toolpath generation engine 110 may generate individual subtoolpaths for each of the subsections 411 , 412, 421 , 422, 431 , 432, 441 , and 442, doing so in any of the ways described herein. Next, the toolpath generation engine 110 may form the toolpath 130 for the slice region by combining the sub-toolpaths generated for the subsections 41 1 , 412, 421 , 422, 431 , 432, 441 , and 442.
[0058] The example features of Figures 3 and 4 provide various splitting modifications that the toolpath generation engine 1 10 may perform to address violating subsections. As another example modification, the toolpath generation engine 1 10 may perform boundary extension modifications, described next with reference to Figure 5.
[0059] Figure 5 shows an example toolpath generation according ot the present disclosure through boundary extension of selected subsections. In the example of Figure 5, the toolpath generation engine 1 10 individuallyevaluates subsections 231 , 232, 233, and 234 of a partitioned slice region, doing so in any of the ways described herein. In this illustrative example, the toolpath generation engine 110 determines that subsections 232 and 233 violate the allowable stepover range. Responsive to such a determination, the toolpath generation engine 1 10 may modify the subsections 232 and 233 by extending the boundary of subsections 232 and 233 to address the stepover range violation.
[0060] In extending the boundary of a violating subsection, the toolpath generation engine 1 10 may extend the boundary of the violating subsection to include a portion of a neighboring subsection. Selection of a particular neighboring subsection and the extent of the boundary extension may be configurable and controlled via various extension parameters. In some examples, the toolpath generation engine 1 10 may extend the boundary of the violating subsection to include a portion of a neighboring non-violating subsection and determine not extend the boundary into another violating subsection. To illustrate through the example of Figure 5, the toolpath generation engine 110 may determine to extend the boundary of violating subsection 232 into neighboring subsection 231 (non-violating), but not into neighboring subsection 233 (violating). In a consistent manner, the toolpath generation engine 110 may determine to extend the boundary of violating subsection 233 into neighboring subsection 234 (non-violating), but not into neighboring subsection 232 (violating).
[0061] The extent to which the toolpath generation engine 110 extends a boundary may be controllable, such as through a pre-fixed value (e.g., a fixed length value) or a boundary percentage of the violating subsection, the neighboring subsection, or combinations thereof. As another example, the toolpath generation engine 110 may extend the boundary of a given subsection until the given subsection no longer violates the allowable stepover range, which can be determined through subsection evaluations or similar computations. While some examples are provided herein, the toolpath generation engine 110 may apply any suitable criteria, parameters, andconfigurations in extending the boundary of a violating subsection into a neighboring subsection for subsection modifications.
[0062] In the example of Figure 5, the toolpath generation engine 1 10 determines to modify subsection 232 by extending the left boundary of the subsection 232 (which is in the form of an inserted partitioning line) into neighboring subsection 231. Also, the toolpath generation engine 1 10 determines to modify subsection 233 by extending the right boundary of the subsection 233 (which is in the form of an inserted partitioning line) into neighboring subsection 234. Through such boundary extensions, the toolpath generation engine 1 10 may reduce the difference between boundary lengths for which the weave increments of a zig-zag sub-toolpath may cause a stepover violation. As such, the sub-toolpaths for extended subsections may satisfy the stepover range and increase the quality of 3D printed products. In some implementations, the toolpath generation engine 1 10 may evaluate any extended subsections for stepover violations and may further modify any determined violating subsections.
[0063] The toolpath generation engine 110 may generate sub-toolpaths for the partitioned slice region, including any extended subsections. In the example of Figure 5, the toolpath generation engine 110 determines that, after boundary extension, none of the subsections 231 (reduced), 232 (extended), 233 (extended), and subsection 234 (reduced) violate the allowable stepover range. The toolpath generation engine 1 10 may then generate sub-toolpaths for the subsections 231 (reduced), 232 (extended), 233 (extended), and subsection 234 (reduced) and combine the generated sub-toolpaths to form the toolpath 130 generated for the slice region 120.
[0064] While many of the examples herein were presented in the context of 2-dimensional slice regions, the toolpath generation features of the present disclosure are not so limited. For example, the toolpath generation engine 1 10 may consistently apply any of the toolpath generation features described herein to 3-dimensional free form toolpath regions. In such 3D regions, toolpaths may weave between any two sides of the free-form region, e.g., as a planar-intersection of points in the 3D region. In doing so, the toolpathgeneration engine 1 10 may perform subsection partitioning as well as individual subsection evaluation and modification in any of the ways described herein as applied to the free form region.
[0065] In many of the examples provided herein, stepover violations were discussed at subsection boundaries. The toolpath generation engine 1 10 may generate sub-toolpaths that likewise satisfy the allowable stepover range across the entire sub-toolpath (e.g., in toolpath portions weaving between the subsection or slice region boundaries), and thus increase the effectiveness of 3D part manufacture by reducing (e.g., eliminating) stepover violations.
[0066] Figure 6 shows an example of logic 600 that a system may implement to support stepover- based toolpath generation through partitioned slice regions. For example, the computing system 100 may implement the logic 600 as hardware, executable instructions stored on a machine-readable medium, or as a combination of both. The computing system 100 may implement the logic 600 via the slice region access engine 108 and toolpath generation engine 1 10, through which the computing system 100 may perform or execute the logic 600 as a method to support stepover-based toolpath generation through partitioned slice regions. The following description of the logic 600 is provided using the slice region access engine 108 and toolpath generation engine 1 10 as examples. However, various other implementation options by systems are possible.
[0067] In implementing the logic 600, the slice region access engine 108 may access a slice region of a digital object design for a product to be manufactured through an additive manufacturing process (602). In implementing the logic 600, the toolpath generation engine 110 may automatically generate a toolpath based on an allowable stepover range specified for the additive manufacturing process (604), including by determining a medial axis of the slice region (606) and partitioning the slice region into multiple subsections based on the medial axis of the slice region, including by identifying splits between different subsections in the slice region at points on the medial axis that satisfy splitting criteria (608).
[0068] The toolpath generation engine 110 may also generate the toolpath by evaluating a given subsection among the multiple subsections of the partitioned slice region based on the allowable stepover range (610), modifying the given subsection responsive to a determination that a subtoolpath for the given subsection would violate the allowable stepover range (612), generating sub-toolpaths for each of the multiple subsections of the partitioned slice region, including any modified subsections (614), and generating the toolpath for the slice region as a combination of the subtoolpaths generated for each of the multiple subsections of the partitioned slice region (616).
[0069] In implementing the logic 600, the toolpath generation engine 1 10 may further provide the toolpath to a 3-dimensional printer in support of physical manufacture of the product through the additive manufacturing process. In some implementations, the toolpath engine 1 10 may control, implement, or otherwise access a 3D printer and the toolpath generation engine 1 10 may physically manufacture the product using the generated toolpath for the slice region.
[0070] The logic 600 shown in Figure 6 provides an illustrative example by which a computing system 100 may support, implement, or provide capabilities for stepover-based toolpath generation through partitioned slice regions. Additional or alternative steps in the logic 600 are contemplated herein, including according to any of the toolpath generation technology described herein with regards to the slice region access engine 108, toolpath generation engine 1 10, or combinations of both.
[0071] Figure 7 shows an example of a computing system 700 that supports stepover-based toolpath generation through partitioned slice regions. The computing system 700 may include a processor 710, which may take the form of a single or multiple processors. The processor(s) 710 may include a central processing unit (CPU), microprocessor, or any hardware device suitable for executing instructions stored on a machine-readable medium. The computing system 700 may include a machine-readable medium 720. The machine- readable medium 720 may take the form of any non-transitory electronic,magnetic, optical, or other physical storage device that stores executable instructions, such as the slice region access instructions 722 and the toolpath generation instructions 724 shown in Figure 7. As such, the machine- readable medium 720 may be, for example, Random Access Memory (RAM) such as a dynamic RAM (DRAM), flash memory, spin-transfer torque memory, an Electrically-Erasable Programmable Read-Only Memory (EEPROM), a storage drive, an optical disk, and the like.
[0072] The computing system 700 may execute instructions stored on the machine-readable medium 720 through the processor 710. Executing the instructions (e.g., the slice region access instructions 722 and / or the toolpath generation instructions 724) may cause the computing system 700 to perform any of the toolpath generation features described herein, including according to any of the features of the slice region access engine 108, toolpath generation engine 1 10, or combinations of both.
[0073] For example, execution of the slice region access instructions 722 by the processor 710 may cause the computing system 700 to access a slice region of a digital object design for a product to be manufactured through an additive manufacturing process. Execution of the toolpath generation instructions 724 by the processor 710 may cause the computing system 700 to automatically generate a toolpath based on an allowable stepover range specified for the additive manufacturing process, including by determining a medial axis of the slice region and partitioning the slice region into multiple subsections based on the medial axis of the slice region. Partitioning may include identifying splits between different subsections in the slice region at points on the medial axis that satisfy splitting criteria.
[0074] Execution of the toolpath generation instructions 724 by the processor 710 may also cause the computing system 700 to generate the toolpath by evaluating a given subsection among the multiple subsections of the partitioned slice region based on the allowable stepover range, modifying the given subsection responsive to a determination that a sub-toolpath for the given subsection would violate the allowable stepover range, generating subtoolpaths for each of the multiple subsections of the partitioned slice region,including any modified subsections, and generating the toolpath for the slice region as a combination of the sub-toolpaths generated for each of the multiple subsections of the partitioned slice region.
[0075] Execution of the toolpath generation instructions 724 by the processor 710 may further cause the computing system 700 to provide the toolpath to a 3-dimensional printer in support of physical manufacture of the product through the additive manufacturing process. In some implementations, the computing system 700 itself includes the 3D printer and execution of the toolpath generation instructions 724 by the processor 710 may further cause the computing system 700 to physically manufacture the product using the generated toolpath for the slice region.
[0076] Any additional or alternative toolpath generation features as described herein may be implemented via the slice region access instructions 722, toolpath generation instructions 724, or a combination of both.
[0077] The systems, methods, devices, and logic described above, including the slice region access engine 108 and toolpath generation engine 1 10, may be implemented in many different ways in many different combinations of hardware, logic, circuitry, and executable instructions stored on a machine- readable medium. For example, the slice region access engine 108, toolpath generation engine 110, or combinations thereof, may include circuitry in a controller, a microprocessor, or an application specific integrated circuit (ASIC), or may be implemented with discrete logic or components, or a combination of other types of analog or digital circuitry, combined on a single integrated circuit or distributed among multiple integrated circuits. A product, such as a computer program product, may include a storage medium and machine-readable instructions stored on the medium, which when executed in an endpoint, computer system, or other device, cause the device to perform operations according to any of the description above, including according to any features of the slice region access engine 108, toolpath generation engine 1 10, or combinations thereof.
[0078] The processing capability of the systems, devices, and engines described herein, including the slice region access engine 108 and toolpathgeneration engine 110, may be distributed among multiple system components, such as among multiple processors and memories, optionally including multiple distributed processing systems or cloud / network elements. Parameters, databases, and other data structures may be separately stored and managed, may be incorporated into a single memory or database, may be logically and physically organized in many different ways, and may be implemented in many ways, including data structures such as linked lists, hash tables, or implicit storage mechanisms. Programs may be parts (e.g., subroutines) of a single program, separate programs, distributed across several memories and processors, or implemented in many different ways, such as in a library (e.g., a shared library).
[0079] While various examples have been described above, many more implementations are possible.
Claims
CLAIMS1 . A method comprising: by a computing system: accessing (602) a slice region (120) of a digital object design for a product to be manufactured through an additive manufacturing process; automatically generating (604) a toolpath (130) based on an allowable stepover range specified for the additive manufacturing process, including by: determining (606) a medial axis (210) of the slice region (120); partitioning (608) the slice region (120) into multiple subsections (231 , 232, 233, 234) based on the medial axis (210) of the slice region (120), including by identifying splits between different subsections in the slice region (120) at points (220) on the medial axis (210) that satisfy splitting criteria; evaluating (610) a given subsection among the multiple subsections (231 , 232, 233, 234) of the partitioned slice region based on the allowable stepover range; modifying (612) the given subsection responsive to a determination that a sub-toolpath for the given subsection would violate the allowable stepover range; generating (614) sub-toolpaths for each of the multiple subsections of the partitioned slice region, including any modified subsections (231 , 232, 233, 234, 311 , 312, 321 , 322, 411 , 412, 421 , 422, 431 , 432, 441 , 442); and generating (616) the toolpath (130) for the slice region (120) as a combination of the sub-toolpaths generated for each of the multiple subsections of the partitioned slice region; and providing (618) the toolpath (130) to a 3-dimensional printer in support of physical manufacture of the product through the additive manufacturing process.
2. The method of claim 1 , wherein the splitting criteria comprises: a straight splitting criterion that is satisfied when a straight-line portion of the medial axis (210) starts or ends, a curvature splitting criterion that is satisfied when a curvature of the medial exceeds a threshold curvature value, an inflection splitting criterion that is satisfied at an inflection point in the medial axis (210) at which the medial axis (210) changes concavity, or any combination thereof.
3. The method of claim 1 or 2, wherein evaluating the given subsection comprises: splitting a longer boundary of the given subsection in a number of points with intervals between adjacent points along the longer boundary equal to a maximum stepover value in the allowable stepover range; splitting a shorter boundary of the given subsection into a same number of points as the longer boundary with equidistant intervals between adjacent points along the shorter boundary; and determining that a sub-toolpath for the given subsection would violate the allowable stepover range responsive to a determination the equidistant interval between adjacent points along the shorter boundary is less than the minimum stepover value in the allowable stepover range.
4. The method of any of claims 1 -3, wherein modifying the given subsection comprises splitting the given subsection into two separate subsections.
5. The method of any of claims 1 -4, further comprising splitting a different subsection of the multiple subsections into two other separate subsections, wherein a sub-toolpath for the different subsection would not violate the allowable stepover range.
6. The method of any of claims 1 -3, wherein modifying the given subsection comprises extending a boundary of the given subsection to include a portion of a neighboring subsection.
7. The method of any of claims 1 -6, wherein the allowable stepover range for the additive manufacturing process is user-specified.
8. A computing system (700) comprising: a processor (710); and a non-transitory machine-readable medium (720) comprising instructions (722, 724) that, when executed by the processor (710), cause the computing system (700) to: access a slice region (120) of a digital object design for a product to be manufactured through an additive manufacturing process; automatically generate a toolpath (130) based on an allowable stepover range specified for the additive manufacturing process, including by: determining a medial axis (210) of the slice region (120); partitioning the slice region (120) into multiple subsections (231 , 232, 233, 234) based on the medial axis (210) of the slice region (120), including by identifying splits between different subsections in the slice region (120) at points (220) on the medial axis (210) that satisfy splitting criteria; evaluating a given subsection among the multiple subsections (231 , 232, 233, 234) of the partitioned slice region based on the allowable stepover range; modifying the given subsection responsive to a determination that a sub-toolpath for the givensubsection would violate the allowable stepover range; generating sub-toolpaths for each of the multiple subsections of the partitioned slice region, including any modified subsections (231 , 232, 233, 234, 31 1 , 312, 321 , 322, 411 , 412, 421 , 422, 431 , 432, 441 , 442); and generating the toolpath (130) for the slice region (120) as a combination of the sub-toolpaths generated for each of the multiple subsections of the partitioned slice region; and provide the toolpath (130) to a 3-dimensional printer in support of physical manufacture of the product through the additive manufacturing process.
9. The computing system (700) of claim 8, wherein the splitting criteria comprises: a straight splitting criterion that is satisfied when a straight-line portion of the medial axis (210) starts or ends, a curvature splitting criterion that is satisfied when a curvature of the medial exceeds a threshold curvature value, an inflection splitting criterion that is satisfied at an inflection point in the medial axis (210) at which the medial axis (210) changes concavity, or any combination thereof.
10. The computing system (700) of claim 8 or 9, wherein the instructions (722, 724) cause the computing system (700) to evaluate the given subsection by: splitting a longer boundary of the given subsection in a number of points with intervals between adjacent points along the longer boundary equal to a maximum stepover value in the allowable stepover range;splitting a shorter boundary of the given subsection into a same number of points as the longer boundary with equidistant intervals between adjacent points along the shorter boundary; and determining that a sub-toolpath for the given subsection would violate the allowable stepover range responsive to a determination the equidistant interval between adjacent points along the shorter boundary is less than the minimum stepover value in the allowable stepover range.1 1 . The computing system (700) of any of claims 8-10, wherein the instructions (722, 724) cause the computing system (700) to modify the given subsection by splitting the given subsection into two separate subsections.
12. The computing system (700) of any of claims 8-1 1 , wherein the instructions (722, 724) further cause the computing system (700) to split a different subsection of the multiple subsections into two other separate subsections, wherein a sub-toolpath for the different subsection would not violate the allowable stepover range.
13. The computing system (700) of any of claims 8-10, wherein the instructions (722, 724) cause the computing system (700) to modify the given subsection by extending a boundary of the given subsection to include a portion of a neighboring subsection.
14. The computing system (700) of any of claims 8-13, wherein the allowable stepover range for the additive manufacturing process is user- specified.
15. A non-transitory machine-readable medium (720) comprising instructions (722, 724) that, when executed by a processor (710), cause a computing system (100, 700) to perform a method according to any of claims 1 -7.