A basic technology of 3D printers of so-called fused-deposition-modeling type, which use ABS resin or PLA resin filament, are described in the U.S. Pat. No. 5,136,515 by Richard Helinski. In addition, there are other types of 3D printers that uses materials which are gel state in room temperature but becomes solid by heat or light. By using such technologies, object models to be printed are sliced to thin layers, and each layer is formed by arraying filament in horizontal directions, and the layers are stacked.
The direction of filament can, thus, normally be observed in printed objects. In a sparsely-printed object, the shapes of filaments immediately after extrusion is preserved so the filament direction can be observed; however, in a densely-printed object, filaments are bonded to neighbor filaments and only limited traces of filaments can be observed. Because the print direction is horizontal, the direction of filament or the lines is restricted to be horizontal. When designing an object to be printed the shape of the model is designed by using a CAD tool and the designed shape is tried to be copied as exact as possible by a 3D printer.
In a 3D printer of fused-deposition-modeling (FDM) type or another layering 3D printer, the print head can move not only to horizontal directions but also to vertical and oblique directions. So the nozzle at the tip of the print head can extrude filament while moving freely in the three-dimensional space. Therefore, by using a numerical-control (NC) program coded by G-Code and by using a tool that generates the program, the nozzle can draw free lines or curves such as circles, polygons, or splines, in the same way as in line arts. If the filament (as part of the printed object) can be kept (solidified) along the trajectory of the nozzle, the above curves and lines can be expressed in the object created by 3D printing. This means, objects with sense of directions and motions can be created. In addition, the area and shape of the filament cross-section can be varied.
There are two factors that prevent 3D-printability of 3D models. One is that it is difficult to keep an unsupported filament at a specific location in the air, and the other is that it is difficult to extrude filament at the designed location if there is an obstacle between the designed location and the location of the nozzle. These factors mean, because it is difficult to keep a filament that is extruded in the air at the original location, it is difficult to give free shape to the filament, and it is not possible to print it if an obstacle exists.
No general methods for programming nozzle motion and filament extrusion for automatic 3D printing with the following two conditions, i.e., keeping a filament to the designed location and guaranteeing no obstacle exists, are known. This invention is to give a method that can, while guaranteeing 3D-printability, create various shapes by moving the nozzle to every direction in the three-dimensional space.
To solve the above problem, various shapes and patterns should be prepared as predefined models (parts), and a method (tool) for assembling (combining) and deforming and/or transformation them should be given. By using a similar way to conventional 3D CAD, complex shapes can be formed by assembling predefined parts. However, there are shapes and patterns which are impossible or difficult to be created by this assembly-only method. A much more variety of shapes can be created by using deformations and transformations. Basic methods of deformations and transformations include enlargement, reduction, and rotation. More general deformations and transformations can be described by freely-defined coordinate transformations. By defining and applying coordinate transformations that preserve 3D-printability, various printable shapes can be created.
By preparing printable shapes and patterns, and by using methods for defining deformations and transformations that preserve 3D-printability, 3D-printability of generated shapes and patterns can easily be guaranteed. Free deformations and transformations enable creation of shapes by freely moving the nozzle (the print head) in the three-dimensional space.
By using
As described above, one or more 3D-printable models can be generated. By applying the assembly processing 104 to generated 3D-printable models 103, 103′, and so on, a 3D-printable model 105 is generated. The assembly processing 104 can preserve 3D-printability. The deformation-and-transformation processing 102 can be applied again to the 3D-printable model 105, which is generated by the assembly processing 104. That means, the above processing can be repeated any number of times.
If the 3D-printable model 105 is a peeled model (which is defined later), that is, if the 3D-printable model 105 is decomposed into string-shaped parts, an NC program 107 in G-Code can be generated by executing the NC-program-generation processing 106. The NC program 107 traverses the strings specified in the 3D-printable model 105 and extrudes filament, where the amount of each part of filament depends on the thickness (the cross section) of the corresponding part of string. By outputting this program 107 to a 3D printer, the above-described model can be printed. According to the program 107 which is outputted to the 3D printer, the control system of the 3D printer controls the print-head motion-direction and motion-velocity and the extruder controls the print velocity, i.e., the filament extrusion velocity, and the 3D printer effectively controls the printing velocity, i.e., the filament-extrusion velocity. In this context, the filament extrusion velocity is expressed by either extruded filament volume per second or extruded filament length per second, i.e., the line speed.
The conditions of 3D printability (i.e., the set of conditions that makes 3D printing possible) are the following two. The first condition is that previously printed strings (filaments in design) do not prevent the printing process. If there is a string between the nozzle of the print head and the print location (the position to be placed melted filament), the printing fails. The second condition is that the newly printed string keeps (is solidified) at the designed location by a supporter. The supporter may be either a print bed, previously printed string, or support material (which is material used only for supporting strings and to be removed after printing). The string is not necessarily supported from underneath, but it can be supported (from oblique or horizontal direction) if it is pressed to a supporter in a horizontal (or oblique) direction. If printed string is placed at a location where the string does not contact with any supporter, the string goes out of the placed location and moves to a downward or horizontally out-of-place location. To be 3D-printable, both of these conditions must be satisfied.
[Three Types of Models and Application of the Procedure to them]
The procedure shown in
In the second type of application of the method shown in
If the 3D-printable model 105 is a solid model, the NC-program-generation processing 106 is a combination of peeling (or, hashing or slicing) the model 105 and transforming it to an NC program such as G-Code, and the NC program 107 is generated as the output. In either case, the NC program 107 is outputted to normal 3D printer and the 3D printing processing 108 is executed, then the 3D object 109, which contains filaments directed to various directions in the three-dimensional space.
As described above, regardless of which model in the three types of models is used, a peeled model can be generated and can be printed. The structure of the peeled model is thus described below. If the peeled model 201 is represented by a sequence of bounded lines (but has non-zero thickness), each line (string) can be represented by a pair of coordinates of the starting and ending points of the line. For example, the following expression represents a peeled model.
((−1,−1,0)−(1,−1,0),(−1,1,0)−(1,1,0)) (1)
This peeled model consists of two lines: one of them is from (−1, −1, 0) to (1, −1, 0) (which are Cartesian coordinates) and the other is from (−1, 1, 0) to (1, 1, 0). Although these lines are represented by a pair of coordinates, the start point of the latter line can be omitted if it is the same as the end point of the former line. For example, the following expression can represent a peeled model consists of a line from (−1, −1, 0) to (1, −1, 0) and a line from (1, −1, 0) to (1, 1, 0).
((−1,−1,0)−(1,−1,0)−(1,1,0)) (2)
A peeled model can also be represented by polar coordinate system or another type of coordinate system instead of Cartesian coordinate system. In particular, it can be represented by a coordinate system in which the nozzle motion direction is always the front direction (i.e., egocentric polar coordinate system; in other words, the coordinate system used for flight simulator). This coordinate system is convenient for drawing and printing 3D turtle graphics (i.e., drawing a trajectory of print head, which is regarded as a turtle, by filament). For example, 3D-printing a circle by the following sequence of commands, such as follow, is often graphically (not physically but virtually) executed by using programming language such as Logo.
This program repeats an action sequence, i.e., moving forward 5 mm and turning left 5 degrees, 72 times.
Extruding filament from the nozzle while moving as described above, the filament forms a circule. Moving up or down motion can also be specified in 3D turtle graphics. (For example, “up 5” (head up 5 degrees).) However, if moving up in the air, the printed filament is dropped, so, (when calculating the trajectory) by determine the gravity direction, the head must be moved just over the previously printed filament. In conventional turtle graphics, a virtual turtle draws a curve in 2D or 3D virtual space, and the result can be displayed on a computer display. In addition, a physical turtle can hold a pen and can move so that it can draw 2D curve in the real space. In the same way, a 3D curve can be drawn in the physical 3D space by using the above method.
A 3D printer that directly executes the above program can be developed; however, most of existing 3D printers are designed to execute NC programs such as G-Code, so the above program must be transformed to an NC program by using a computer. One of the following two methods can be used for this conversion. The first method is to input the above program as data. In this method, a program in the computer transforms the input program as data to an NC program. The second method is to input the above program as program. In this method, a library (application programming interfaces or APIs) for processing the above program or for a program in a conventional language, which expresses the same meaning as the original program, is prepared, the program is executed by using a conventional language processor, and the program outputs an NC program. The above conversion methods can be applied not only to programs for turtle graphics but also to programs using Cartesian, cylinder, or polar coordinate system.
Cylinder coordinate with egocentric direction or polar coordinate with pseudo-egocentric direction (horizontally egocentric but with zero elevation angle) can be used for a coordinate system for 3D turtle graphics. These coordinate systems can be called the egocentric cylinder coordinate system and the pseudo-egocentric polar coordinate system. If cylinder coordinate is used, the motion of print head can be represented by a triple: horizontal motion amount, rotation angle of the print head in the horizontal 2D space, and previously described vertical motion amount of the head.
In this case, if the filament diameter is 0.5 mm or close, the vertical filament pitch (interval) can be set to 0.4 mm and a cylinder can be printed by using the following command sequence.
This program repeats a sequence of action, i.e., moving up 0.4/72 mm, moving forward 5 mm, and turning left by 5 degree, 50*72 times. The reason why moving-up and moving-forward actions are performed at once is that, if they are divided, filaments are not smoothly layered. By moving up and forward at once, the shape of extruded and stacked filament is approximately a helix.
In addition, when using a polar coordinate, a triple (r, theta, phi), where r means the motion amount according to the motion direction in the 3D space, theta means the depression angle (azimuth), and phi means the elevation angle that is orthogonal to the depression angle, can represent the print-head motion described above. In the case of polar coordinate, an egocentric coordinate, in which the turtle always faces the front direction similar to a flight simulator, is used. However, if a polar coordinate is used, because it becomes difficult to decide the gravity direction, it becomes difficult to design filament stacking (layering) exactly. So cylinder coordinate system may be better.
Note that the above sequence of coordinates such as (1) or (2), can be connected by a curve such as a spline, instead of linear lines. This means, a “straight peeled model” such as (1) or (2) can be reinterpreted as a “curved peeled model” connected by a spline. If they are interpreted as above, the print head should be controlled to move and to print along the spline.
The thickness of a string (i.e., a line or connected lines) in a peeled model 201 varies by deformation-and-transformation processing 102. To preserve 3D-printability of the peeled model 201 by the transformation, the following design condition must be satisfied when the model is inputted to the NC-program-generation processing 106. (Therefore, to satisfy this condition when selecting the peeled model 201 first time, the pitch of the string and the cross section must be designed to have sufficient margins.) The following conditions are instances of the previously described 3D-printability conditions for the peeled model.)
The first condition to be satisfied is that the cross section of the (logical) string which is contained in the peeled model 201 is slightly larger than the cross section of the physical filament that is extruded by the 3D printer. (Assert that the inner radius of the nozzle of the printer is r, then the cross section of the filament when extruded is pi*r*r (where pi is the circular constant).) This condition is the condition for the filament not to be excessive when printing. However, even if the (logical) cross section of the designed string is slightly over the (physical) cross section of the filament, this condition may be loosen because the filament may shrink to fit in the space according to the printing condition. In addition, this condition may intentionally be dropped as described below.
The second condition to be satisfied is that a string and another string beneath the first string or the horizontally neighboring string is to be contacted. If the height of the string or its cross section is small and the filament that corresponds to the string is smaller than the space that is to be filled with the filament (see
A method for controlling the height and width or controlling the cross section is explained below. There are two methods for controlling them. The first method is to control the motion velocity of the print head. If the extrusion velocity of filament is constant, the cross section becomes m times larger when the motion velocity of the print head becomes m times larger. In addition, if the height is constant then the width becomes m times larger, and if the width is constant then the height becomes m times larger. The second method is for controlling the extrusion velocity of filament. If the motion velocity of the print head is constant then the cross section is m-times larger. By combining these methods, the cross section can be controlled by varying both the motion velocity of the print head and the extrusion velocity of filament.
By using
In the same way, in the case of enlargement or reduction along the y-axis only, the cross section of the string must be kept to be the same when the string is y-axis direction, it must be m times larger when the string is x- or z-axis direction, and when the print velocity is constant, it must be m times larger. If the string is skewed, the extrusion velocity is also m times larger. In any case above, 3D-printability is preserved if the head can extrude m times larger amount of filament. The cross section may vary when changing the motion velocity of the nozzle. If the extrusion velocity is unchanged, the motion velocity is 1/m times larger when the cross section becomes m times larger.
Second, a constant (uniform) enlargement 303 or reduction toward the vertical direction (i.e., z-axis direction), which is another instance of deformation-and-transformation processing 102, is explained. By applying a vertical enlargement or reduction to a peeled model, if the ratio or enlargement is m (m>1 in the case of enlargement and m<1 in the case of reduction), the cross section does not vary when the direction of the string is z-axis direction. However, in this case, if the print velocity, i.e., the motion velocity of the nozzle, is unchanged, the extrusion velocity of the filament must be m times larger. If the direction of the string is horizontal, it is necessary to enlarge or to reduce the cross section of the string, c, to m*c, and the extrusion velocity of the filament must be m times larger. If the direction of the string is oblique, 3D-printability can be preserved by increasing or decreasing the filament extrusion by m times. Also in this case, the motion velocity of the nozzle can be varied instead of varying the extrusion velocity.
Third, rotation is the third basic deformation-and-transformation processing 102, so rotation is explained below. If the axis of rotation 304 is parallel to the z-axis, 3D-printability is not affected. If the rotation axis 305 is not parallel to the z-axis, 3D-printability is not preserved when the rotation angle is large (but 3D-printability is preserved when the rotation angle is small).
If the rotation axis is parallel to the z-axis, 3D-printability is naturally preserved; however, a certain method must be applied to preserve 3D-printability. When the rotation axis 305 is not parallel to z-axis, the condition of 3D-printability preservation and the method for preserving 3D-printability is explained by using
Even if the model is printed after rotating it by a small rotation angle (
If the model is printed after rotating by an angle less than 90 degrees (
To solve the above problem, one of the following two methods should be applied. First, if the angle is less than 90 degrees, the following first method can solve it and the model remains 3D-printable. As described above, the cross section must be enlarged or reduced for the upper string to be contacted to the lower string. However, if the extrusion velocity of filament (string) is increased to increase the cross section, the filaments (strings) may become wavy or bended and they will not contact each other, one of the following two methods should be applied. The first method is that, instead of increasing the extrusion velocity, the motion velocity of the nozzle (print head) must be reduced instead of increasing the extrusion velocity.
However, although this method can reduce the waving of filament, it is difficult to resolve this problem completely. To solve this problem, the second method is to select a nozzle (print head) with larger inner diameter. This method can resolve the problem of waving.
Second, when rotating the model by little less than 90 degrees, the neighboring filaments are mostly horizontally arrayed, so it becomes difficult to press to and to bond with the filaments. In this case, the filaments can be bonded by using the method shown in
As described above, it is difficult to preserve 3D-printability when the rotation angle is more than 90 degrees (but not impossible). On the contrary, when the angle is less, the object becomes 3D-printable if the order of printing is reversed, that is, the direction of the strings and the printing order are reversed. When the angle is approximately 90 degrees, the object may become 3D-printable by applying the method shown in
The method for preserving 3D-printability described above is a method that can be applied to situations that filament is extruded only to downward; however, if the print head can rotate, a method described below can also applied. That is, as shown in
Three types of the deformation-and-transformation processing 102 described above are the most basic ones; however, instead, a coordinate transformation function can be used for a more flexible transformation. That is, a function that can map each coordinate of a point in the model 101 to a coordinate of a point in the model 103, which the deformation-and-transformation processing 102 outputs, can be given. Cartesian coordinate system, (x, y, z), can be used for representing each coordinate of the points in the model 101 and 103. Cylinder coordinate system, (r, theta, z), or polar coordinate system, (r, theta phi), can also be used. If a continuous function is used for the coordinate transformation function, the cross sections after the transformation can be relatively easily computed (approximated) and whether 3D-printability is preserved or not can also relatively easily be confirmed.
If the deformation-and-transformation processing 102 is based on the cylinder coordinate system, the deformation-and-transformation processing 102 can be described by a deformation function deform_cylinder(fp, fv, fc, m), where fp(r, theta, z) is a coordinate transformation function, fv(v, r, theta, z) is a function that maps the original print head motion velocity v and coordinate (r, theta, z) to the print head motion velocity (after the transformation), and m represents the model 101. The value that is returned by this deformation function is the model 103.
An example of deformation is explained below using
fp(r,theta,z)=(r+a*z,theta,z)(z<=0,a>0)
Function fp returns triple values (r′, theta′, and z′), where r′ is the value of r after the transformation, theta′ is the value of theta after the transformation, and z′ is the value of z after the transformation. The velocities of the print head and filament does not concern the shape. The transformation can also be described by a coordinate system other than the cylinder coordinate.
In addition, by combining the cup without a bottom or plate with a bottom by applying the combination processing 104, a shape of the above described cup with a bottom can be generated.
Instead of using a transformation that is uniform along the z-axis, a more general shape such as a vase with a narrow neck can be formed by using deformation functions such as third order curves or triangular functions.
Moreover, by using a deformation function deform_cylinder and by updating the print head motion velocity (or filament velocity) but not changing the shape, the cross section of filament and the shape can be changed. In addition, when the shape is transformed by a coordinate transformation, in addition to fp, by giving a function fv or fc (which is not the identity function), 3D-printability can be preserved. By using a non-linear coordinate transformation for fp, a shape different from the original shape can be generated. For example, a plate or vase, which have non-uniform cross section, can be created.
The shape used for generating a widely-opened cup or a plate is a cup with open top; however, if the same cup is mapped to a closed shape by mapping the top of the cylinder to a point at r=0. For example, if the upper part of a cylinder is looped along meridians of a sphere while horizontally shrunk the cylinder by deformation, a half sphere with a bottom, 805, can be formed.
It is possible to compute the print head motion velocity automatically by computing the magnification ratio of the cross section by the coordinate transformation. However, a better print result can be obtained by using and adjusting a non-identical function fc.
Number | Date | Country | Kind |
---|---|---|---|
P2014-118197 | Jun 2014 | JP | national |