Time code for additive and subtractive manufacturing

WO2026122529A1PCT designated stage Publication Date: 2026-06-11JOHNS HOPKINS UNIVERSITY

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
JOHNS HOPKINS UNIVERSITY
Filing Date
2025-12-02
Publication Date
2026-06-11

AI Technical Summary

Technical Problem

Existing G-Code programming for 3D printing causes frequent interruptions due to line-by-line execution, leading to defects and reduced efficiency when incorporating auxiliary commands for material switching and shape changes, especially in designs with continuous gradients.

Method used

Implementing a time-based synchronization approach called T-Code to decouple motion commands from auxiliary commands, allowing for continuous and synchronized control of printheads and auxiliary devices, reducing interruptions and enhancing print speed and precision.

Benefits of technology

T-Code enables defect-free, efficient, and precise 3D printing of multifunctional structures with continuous gradients by maintaining uninterrupted motion and synchronized auxiliary actions, improving print quality and efficiency.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure US2025057677_11062026_PF_FP_ABST
    Figure US2025057677_11062026_PF_FP_ABST
Patent Text Reader

Abstract

Disclosed herein are method, system, and computer program product aspects for time-based control of computer numerical control (CNC) devices, including 3D printers. Input data representing a structure or process is used to generate a time-based control file (time code or T-Code) that defines motion actions and auxiliary actions for one or more devices of a CNC system and associates those actions with corresponding times or events. The T-Code enables synchronized and parallel control of motion subsystems and auxiliary subsystems, including material-related and non-material-related functions, without requiring line-by-line execution. A CNC process is performed by controlling the motion of a movable component and controlling auxiliary operations according to the time-associated actions, while resynchronizing devices at predetermined, calculated, or event-based synchronization points. The disclosed techniques improve precision, reduce interruptions, and enable continuous or gradient functionalization during manufacturing.
Need to check novelty before this filing date? Find Prior Art

Description

TIME CODE FOR ADDITIVE AND SUBTRACTIVE MANUFACTURINGCROSS-REFERENCE TO RELATED APPLICATION

[0001] This patent application claims benefit of U.S. Provisional Patent Application No. 63 / 726,992 filed on December 2, 2024 and titled “Time Code for Additive and Subtractive Manufacturing,” which is incorporated by reference herein in its entirety.BACKGROUND

[0002] Manufacturing through additive or subtractive means has become a mainstay in prototyping or even for production runs of finished products. Both subtractive manufacturing and additive manufacturing typically begin with a design file or other representation of a desired structure (e.g., CAD models, image data, or script-generated geometry), from which instructions to control the respective tools can be generated.

[0003] Subtractive manufacturing technologies, such as computer numerical control (CNC) machines, can typically work with materials to produce resilient objects with precise tolerances. Additive manufacturing, such as 3D printing, offers enormous design freedom, enabling the production of multifunctional structures with hierarchical complexity across various industries, from aerospace and construction to consumer goods and healthcare. In a specific example, direct ink writing (DIW) — a material extrusion 3D printing technique — provides unparalleled material versatility, capable of processing a broad range of organic and inorganic materials, both individually and concurrently. DIW can be further enhanced by multifunctional 3D printheads that enable, among others, multi-material switching, mixing, in-situ curing, and rotational co-extrusion with sub-voxel resolution. This versatility facilitates diverse applications, such as architected materials, integrated electronics, optics, soft robotics, and vascularized tissue.SUMMARY

[0004] Aspects of this disclosure are directed to a system, methods, and a non-transitory computer readable medium that can be used to perform a CNC process, such as a 3D printing process. In some embodiments, a method can include receiving or generating ageometric code (G-Code) file based on input data, such as a computer-aid design (CAD) file or other representations of a desired structure, and converting the G-Code file into a time code (T-Code) file by decoupling motion commands and auxiliary commands in the G-Code file and modifying the motion commands and / or the auxiliary commands. The method can further include synchronizing, according to the T-Code file, multiple instruments or devices involved in the CNC process, such as one or more printheads and / or a supporting platform of a 3D printer and one or more auxiliary devices in the 3D printing process. The method can further include performing the CNC process based on the T-Code file. For example, the method can include printing, using the 3D printer and the auxiliary device(s), a structure. Printing the structure can include controlling, based on the motion commands, a motion of a printhead of the 3D printer and controlling, based on the auxiliary commands, actions of the auxiliary device(s). Printing the structure can further include resynchronizing, when the printhead stops or is otherwise paused (e.g., to change its motion), the 3D printer and the auxiliary device(s).

[0005] In other embodiments, a T-Code file may be generated directly from the input data, without first generating a G-Code file, and may be used to control motion and auxiliary operations in a time-synchronized manner.

[0006] Certain aspects of the disclosure have other steps or elements in addition to or in place of those mentioned above. The steps or elements will become apparent to those skilled in the art from a reading of the following detailed description when taken with reference to the accompanying drawings.BRIEF DESCRIPTION OF THE DRAWINGS

[0007] Aspects of the present disclosure are best understood from the following detailed description when read with the accompanying figures. It is noted that, in accordance with the common practice in the industry, various features are not drawn to scale. In fact, the dimensions of the various features may be arbitrarily increased or reduced for clarity of illustration and discussion.

[0008] FIG. 1 illustrates a 3D printing system, in accordance with some embodiments.

[0009] FIG. 2 illustrates a flowchart of a method of operating a 3D printing system usingT-Code, in accordance with some embodiments.

[0010] FIG. 3A illustrates a design of a structure and a path along which a printhead of a 3D printer moves to print the structure using G-Code, in accordance with some embodiments.

[0011] FIG. 3B illustrates a G-Code file, in accordance with some embodiments.

[0012] FIG. 4 is a flow chart illustrating a process for converting a G-Code file into a T-Code file, in accordance with some embodiments.

[0013] FIG. 5A illustrates a process of using motion commands to control a 3D printer, in accordance with some embodiments.

[0014] FIG. 5B illustrates a process of using auxiliary commands to control an auxiliary device, in accordance with some embodiments.

[0015] FIG. 6A illustrates a 3D printed structure using T-Code with resynchronization, in accordance with some embodiments.

[0016] FIG. 6B illustrates a 3D printed structure using G-Code, in accordance with some embodiments.

[0017] FIG. 6C illustrates a 3D printed structure using T-Code without resynchronization, in accordance with some embodiments.

[0018] FIG. 7 A illustrates a 3D printed structure with varying width using T-Code, in accordance with some embodiments.

[0019] FIG. 7B illustrates a 3D printed structure with varying width using G-code, in accordance with some embodiments.

[0020] FIG. 8A illustrates a 3D printed structure with varying composition using T-Code, in accordance with some embodiments.

[0021] FIG. 8B illustrates a 3D printed structure with varying composition using G-Code, in accordance with some embodiments

[0022] FIG. 9 is an example computing system useful for implementing various aspects, in accordance with some embodiments.

[0023] Illustrative embodiments will now be described with reference to the accompanying drawings. In the drawings, like reference numerals generally indicate identical, functionally similar, and / or structurally similar elements.DETAILED DESCRIPTION

[0024] The following disclosure provides many different embodiments, or examples, for implementing different features of the provided subject matter. Specific examples of components and arrangements are described below to simplify the present disclosure. These are, of course, merely examples and are not intended to be limiting. For example, the formation of a first feature over a second feature in the description that follows may include embodiments in which the first and second features are formed in direct contact, and may also include embodiments in which additional features may be formed that are between the first and second features, such that the first and second features are not in direct contact. As used herein, the formation of a first feature on a second feature means the first feature is formed in direct contact with the second feature. In addition, the present disclosure may repeat reference numerals and / or letters in the various examples. This repetition does not in itself dictate a relationship between the various embodiments and / or configurations discussed.

[0025] Further, spatially relative terms, such as “beneath,” “below,” “lower,” “above,” “upper” and the like, may be used herein for ease of description to describe one element or feature’s relationship to another element(s) or feature(s) as illustrated in the figures. The spatially relative terms are intended to encompass different orientations of the device in use or operation in addition to the orientation depicted in the figures. The apparatus may be otherwise oriented (rotated 90 degrees or at other orientations) and the spatially relative descriptors used herein may likewise be interpreted accordingly.

[0026] As used herein, references to distinct “devices,” “modules,” “components,” or “instruments” are generally made for convenience of explanation of functionality. Unless otherwise specified, such references do not require that the devices, modules, components, or instruments be implemented as physically separate units. Any described functionality may be combined, subdivided, or reassigned among hardware and / or software entities in various embodiments.

[0027] In some embodiments, the terms “about” and “substantially” can indicate a value of a given quantity that varies within 5% of the value (e.g., ±1%, ±2%, ±3%, ±4%, ±5% of the value). These values are merely examples and are not intended to be limiting. It is to be understood that the terms “about” and “substantially” can refer to a percentage of the values as interpreted by those skilled in relevant art(s) in light of the teachings herein.

[0028] It is noted that references in the specification to “one embodiment,” “an embodiment,” “an example embodiment,” “exemplary,” etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases do not necessarily refer to the same embodiment. Further, when a particular feature, structure or characteristic is described in connection with an embodiment, it would be within the knowledge of one skilled in the art to effect such feature, structure or characteristic in connection with other embodiments whether or not explicitly described.

[0029] It is to be understood that the phraseology or terminology herein is for the purpose of description and not of limitation, such that the terminology or phraseology of the present specification is to be interpreted by those skilled in relevant art(s) in light of the teachings herein.

[0030] Direct ink writing (DIW), an extrusion-based 3D printing technique, holds substantial potential due to its ability to process a broad range of materials and integrate multifunctional printheads with features such as shape-changing nozzles, in situ curing, material switching, and material mixing, facilitated by the incorporation of auxiliary devices, such as pressure boxes, UV-lights, volumetric extruders, heaters, infrared lasers, etc. A common and standard programming language used to control the print path of extrusion-based 3D printers is geometry code (G-Code), which was originally introduced for computer numerical control (CNC) machines. However, incorporating auxiliary controls into G-Code remains challenging due to G-Code’ s line-by-line execution, requiring the printer to decelerate and stop at each new line. If additional path functionalization, such as material switching, is desired, auxiliary commands must be inserted as new lines in the G-Code, causing frequent interruptions along the print path, introducing defects in the printed structure due to over-extrusion of the printheads upon execution of the auxiliary commands, compromising the quality of the printed structure, and resulting in longer printing time and lower efficiency. Such a limitation is especially problematic with designs necessitating frequent changes, such as continuous compositional and shape gradients.

[0031] The embodiments described herein are directed to addressing the challenges mentioned above. In some embodiments, a generalizable method can include separating thecontrol of multiple instruments or devices involved in a CNC process (such as one or more printheads of a 3D printer and one or more auxiliary devices in a 3D printing process) from the G-Code using a time-based synchronization approach referred to as time code (T-Code). For example, the method can effectively decouple print path motion of the printhead(s) from on-the-fly in-situ functionalization of the auxiliary devices, thereby reducing interruptions to the print path and enhancing print speed without compromising the precision, accuracy, or complexity of 3D printed structures. In some embodiments, the method can create functional gradients for both energy absorption and optics and can support parallelization of multiple auxiliary devices for mass customization. The implementation of T-Code overcomes the above-mentioned limitation of G-Code and can practically be implemented in a wide variety of extrusion-based 3D printers. By combining appropriate printheads, auxiliary hardware (e.g., pressure boxes, UV lights, volumetric extruders), and material design, T-Code can be adapted to print a wide range of functional materials, enabling a single-system approach for fabricating multifunctional structures such as structural batteries, shape changing structures, and soft robotics and wearables with integrated electronics. In some embodiments, auxiliary functions controlled by T-Code may relate to a single material. Such auxiliary functions can include adjusting nozzle geometry, rotating a nozzle, modulating a heater or UV source, actuating integrated stepper motors, or other non-material-switching actions.

[0032] Besides 3D printing, T-Code can also be implemented in systems that conventionally rely on programming languages providing instructions on motions of elements in the systems (e.g., G-Code), such as CNC machines (e.g., milling machine, lathes, routers, plasma cutters, laser cutters and engravers, wateijet cutters, grinders ,etc.), robotic systems (e.g., industrial robots, robotic arms in manufacturing, and automated packaging robots, etc.), printed circuit board (PCB) fabrication machines (e.g., PCB drilling machine, PCB milling machine, laser etching machine, etc.), automated cutting and engraving machines (e.g., vinyl cutters, plotters, form cutters, etc.), jewelry and watchmaking tools (e.g., CNC jewelers, stone cutting machines, watch engraving machines, etc.), medical and dental machines (e.g., dental milling machines, orthopedic and prosthetic fabrication machines, surgical tool fabricators, etc.), automotive and aerospace machines (e.g., component manufacturing machines, prototyping machines, etc.), educational and hobbyist machines (e.g., hobbyist CNC machines, desktop 3D printers,etc.), textile and apparel machines (e.g., fabric cutters, embroidery machines, etc.), food industry machines (e.g., chocolate and pastry molding machines, cake decorating robots, etc.), signage and advertising machines (e.g., sign engraving machines, laser engravers, etc.), construction and architecture tools (e.g., CNC woodworking machines, concrete 3D printers, stone cutting machines, etc.), quality control and inspection systems (e.g., coordinate measuring machines, robotic inspection systems, etc.), agricultural automation systems (e.g., robotic harvesters, seed planting machines, etc.), art and creative machines (e.g., CNC sculpting machines, engraving machines, etc.), and specialized machines (e.g., lens cutting machines, wire electrical discharge machines, etc.). In general, T-Code can be implemented in a system that executes line-based or block-based control instructions for coordinated motion and auxiliary operations, regardless of whether such instructions conform to a particular G-Code syntax.

[0033] FIG. 1 is a schematic of a 3D printing system 100 for a 3D printing process, according to some embodiments. As illustrated in Fig. 1, 3D printing system 100 can include a 3D printer 110, a computer system 120, and an auxiliary device 130. 3D printer 110 and computer system 120 can be configured to communicate with each other via communication link 115. Auxiliary device 130 and computer system 120 can be configured to communicate with each other via communication link 125. 3D printer 110 and auxiliary device 130 can be configured to couple with each other via channel 135. In some embodiments, communication links 115 and 125 can include wired and / or wireless communications. The functional division among components 110, 120, and 130 is logical, not necessarily physical. Any of the described functionality may be performed by a single device, distributed across devices, or reassigned among the components. In some embodiments, each of 3D printer 110, a computer system 120, and an auxiliary device 130 can be an independent instrument. In some embodiments, 3D printer 110, a computer system 120, and an auxiliary device 130 can be partially or entirely integrated into a single instrument. For example, computer system 120 and / or auxiliary device 130 can be integrated into 3D printer 110.

[0034] 3D printer 110 can be configured to fabricate structures according to computer aid design (CAD) files. 3D printer 110 can include one or more printheads / extruders / nozzles, which can extrude materials while moving along paths designed according to the CAD files, such that the extruded materials can be deposited in three dimensional (3D) spatialcoordinates to form the structures in a manner of additive manufacturing. 3D printer 110 can be configured to perform the 3D printing process according to instructions provided by computer system 120. 3D printer 110 can be configured to communicate with computer system 120 such as receiving instructions and files from computer system 120 and sending the status of 3D printer 110 to computer system 120 via communication link 115. In some embodiments, some or all of the functions attributed to computer system 120 may be implemented by control electronics integrated within 3D printer 110.

[0035] Auxiliary device 130 can be configured to couple with 3D printer 110 to provide auxiliary controls to 3D printer 110. For example, auxiliary device 130 can include pressure boxes, UV-lights, volumetric extruders, heaters, and / or infrared lasers that can provide multiple functions to 3D printer 110, such as adjusting compositions of the extruded materials, adjusting local temperature of the printed structures, in situ curing of the printed structures, and / or adjusting extrusion parameters (e.g., extrusion volume and / or rate). Auxiliary device 130 can be configured to execute these functions via channel 135. Auxiliary device 130 can be configured to communicate with 3D printer 110 via channel 135. For example, Auxiliary device 130 and 3D printer 110 can exchange status and send and receive instructions to and from each other. In some embodiments, auxiliary device 130 can be configured to receive instructions from and send status to computer system 120 via communication link 125. In other embodiments, auxiliary device 130 can itself include multiple controllable subsystems (valves, lasers, etc.) that each can be targets of T-Code commands.

[0036] Computer system 120 can be configured to store and provide instructions to operate 3D printer 110 and auxiliary device 130. Computer system 120 can be configured to design the structures to be printed. For example, computer system 120 can include CAD tools for designing the structures and generate the CAD files. Computer system 120 can be configured to generate G-Code files according to the CAD files. In some embodiments, the G-Code files can include motion commands for controlling the motion of the printheads of 3D printer 110 and auxiliary commands for controlling the actions of auxiliary device 130. In some embodiments, the G-Code files can include motion commands for controlling the motion of a supporting platform of 3D printer 110. In some embodiments, computer system 120 can be configured to convert the G-Code files to T-Code files by decoupling the motion commands and auxiliary commands of the G-Code files and synchronizing the motion ofthe extruders of 3D printer 110 and the actions of auxiliary device 130. In some embodiments, computer system 120 can be configured to generate T-Code files from sources besides the G-Code files. For example, computer system 120 can be configured to generate T-Code files directly from input data.

[0037] In some embodiments, the T-Code files can further include commands for controlling additional functionalities of 3D printing system 100. These functionalities can include, but are not limited to, operations of the printhead and integrated modules thereof (e.g., integrated extruders, actuators, heaters, sensors), operations of auxiliary device 130, and operations of one or more axes or motors of 3D printer 110. In some embodiments, any function described herein as being performed by 3D printer 110, auxiliary device 130, or computer system 120 may be controlled, partially or entirely, through corresponding T- Code commands. The T-Code architecture may therefore provide unified control of multiple subsystems of the 3D printing system, regardless of whether such subsystems are implemented as discrete devices or are integrated within a single enclosure.

[0038] FIG. 2 illustrates a flowchart of a method 200 of operating a CNC system, such as a 3D printing system that can implement T-Code, according to some embodiments. For example, method 200 can be used to operate 3D printing system 100 as shown in FIG. 1. Operations shown in method 200 are not exhaustive; other operations can be performed as well before, after, or between any of the illustrated operations. In some embodiments, operations of method 200 can be performed in a different order. Variations of method 200 are within the scope of the present disclosure. For illustrative purposes, method 200 is described with reference to FIGs. 3A-8B. The discussion of elements in FIG. 1 with the same annotations applies to FIGs. 3 A-8B, unless mentioned otherwise.

[0039] Referring to FIG. 2, method 200 begins with an operation 210 and the process of generating a G-Code file based on a CAD file. In some embodiments, the CAD file can include a design about a geometry of a structure to be processed by the CNC system (e.g., a structure to be printed by 3D printing system 100). In some embodiments, generating the G-Code file can include using computer system 120 to analyze the design by slicing the structure into different layers and calculating paths for the printhead of 3D printer 110 to travel along. In some embodiments, generating the G-Code file can include using computer system 120 to generate the motion commands for controlling the motion of the printhead and / or the supporting platform. In some embodiments, generating the G-Code file canfurther include using computer system 120 to analyze material features of the structure according to the design, such as the material compositions of different portions of the structure and / or the fine details of the geometry of the structure, which can be fabricated by incorporating auxiliary device 130 with 3D printer 110. In some embodiments, generating the G-Code file can include using computer system 120 to generate auxiliary commands controlling auxiliary device 130. In some embodiments, generating the G-Code file can include using computer system 120 to combine the motion commands and the auxiliary commands arranged in a proper sequence in the G-Code file. In some embodiments, references herein to “G-Code” can encompass other numeric or block-based control formats that define motion commands and auxiliary commands, even if such formats do not strictly conform to a formal G-Code standard.

[0040] In other embodiments, the G-Code file may be generated independently of a CAD file. For example, the G-Code file may be created manually by an operator, produced by a script or software routine (e.g., a Python script), or generated based on user-provided data such as raster images (e.g., JPG, PNG), vector graphics, hand-drawn sketches, technical drawings, scanned geometries, point clouds, or other representations of the desired structure. Any such input data may be processed to derive toolpaths, motion commands, auxiliary commands, or other instructions to be encoded in the G-Code file.

[0041] Operation 210 can be described with reference to an example as shown in FIGs. 3 A and 3B. FIG. 3A illustrates a structure 300 to be fabricated in a CNC process, for example a 3D printing process performed by 3D printing system 100. Structure 300 can include a first portion 300L and a second portion 300R adjacent to first portion 300L. First and second portions 300L and 300R can include first and second materials, respectively. In some embodiments, the first and second materials can be different (e.g., with different compositions, colors, and / or other physical / chemical properties). In some embodiments, generating the G-Code file can include slicing structure 300 into different layers, such as a first layer including section 310 of first portion 300L and section 315 of second portion 300R, a second layer including section 325 of first portion 300L and section 320 of second portion 300R, and a third layer including section 330 of first portion 300L and section 335 of second portion 300R. In some embodiments, generating the G-Code file can include calculating path 305 traversing the different layers to cover a volume of structure 300. For example, path 305 can start from coordinate 312, then traverse horizontally through section310 and 315 to coordinate 316, then traverse vertically to coordinate 322, then traverse horizontally through section 320 and 325 to coordinate 326, and so on. In some embodiments, generating the G-Code file can include generating motion commands to instruct the printhead of 3D printer 110 to move along path 305. To print the different compositions of first and second portions 300L and 300R, actions of auxiliary device 130 can take place when the printhead reaches their boundaries to change the extruded material of the printhead of 3D printer 110. For example, auxiliary device 130 can be a pressure box controlling pressure values to supply pressure to the first and second materials to the printhead, and upon reaching boundary 314, can turn off the pressure applied to the first material and turn on the pressure applied to the second material, such that the material supply to the printhead can be switched. In some implementations, due to response delays, pneumatic lag, or timing requirements of the system, the pressure applied to the second material may be turned on before the pressure applied to the first material is fully turned off, thereby creating two or more distinct transition points rather than a single instantaneous switching point. Each of these transition points may correspond to a separate G-Code command (or other control instruction) and may require a brief stoppage or dwell of the printhead to execute the respective transition. Similarly, upon reaching a coordinate 324 at a boundary between section 320 and 325, auxiliary device 130 can turn off the pressure applied to the second material and turn on the pressure applied to the first material. In some embodiments, generating the G-Code file can include generating auxiliary commands to instruct auxiliary device 130 to perform the above-mentioned actions. FIG. 3B illustrates an example of a G-Code file 350 generated using computer system 120 and including the motion commands and auxiliary commands. For example, G-Code file 350 can start with command 301 stating “G1 X314 Y0 Z0 E310 F310”, which instructs the printhead to move to coordinate 314 while extruding first material constituting section 310. G-Code file 350 can continue with command 302 stating “Auxiliary Command at 314”, which instructs the auxiliary device to switch the pressure values to stop providing the first material and start providing the second material to the printhead. G-Code file 350 can then continue with command 303 stating “G1 X316 Y0 Z0 E315 F315”, which instructs the printhead to move to coordinate 316 while extruding the second material constituting section 315. G-Code file 350 can then continue with commands 304-307 and further commands including the other motion commands and auxiliary commands, which instruct the printhead of 3D printer 110to continue moving along path 305 with the actions of auxiliary device 130 switching between the first and second materials at boundaries between portions 300L and 300R.

[0042] Since commands in G-Code programming language are executed line-by-line, when using G-Code file 350 to operate 3D printing system 100, a motion command prior to an auxiliary command will instruct the printhead to decelerate until it stops, before the execution of the auxiliary command. For example, command 301 instructs the printhead to move between coordinates 312 and 314, and stop upon reaching coordinate 314, before the execution of command 302 switching the material supply between the first and second materials. After command 302, command 303 instructs the printhead to restart moving from coordinate 314 to coordinate 316. The interruption of the motion of the printhead at coordinate 314 can cause defects around coordinate 314 and impact the efficiency of the 3D printing process. Therefore, instead of directly using G-Code file 350 to operate 3D printing system 100, G-Code file 350 can be converted into a T-Code file, which can be used to operate 3D printing system 100.

[0043] Referring to FIG. 2, method 200 continues with an operation 220 and the process of converting the G-Code file into a T-Code file, by decoupling the motion commands and the auxiliary commands of the G-Code file. For example, as described with reference to FIG 4, a process 410 can decouple the motion commands and the auxiliary commands that control the printhead to move along path 305 to print structure 300. In some embodiments, decouple the motion commands and the auxiliary commands can include converting path 305 into a new path 405, in which sections of path 305 that are interrupted by actions of auxiliary device 130 can be combined into continuous sections. For example, the sections between coordinates 312 and 314 and between coordinates 314 and 316 in path 305 can be combined as a continuous section between coordinates 412 and 416 in path 405. Similarly, sections between coordinates 322 and 324 and between coordinates 324 and 326 in path 305 can be combined as a continuous section between coordinates 422 and 426 in path 405. Path 405 can be used to generate a new set of motion commands by a process 420. Moving under the instruction of path 405, the motion of the printhead can be represented by a timevelocity diagram 425. In particular, in diagram 425, between time tO and t2, the printhead is controlled to move from coordinate 412 to coordinate 416 by accelerating from zero speed at tO to a constant speed vcat t0’, maintaining the speed vcfor a period of time, and decelerating to zero speed at time t2 when the printhead reaches coordinate 416.

[0044] In some embodiments, decoupling the motion commands and the auxiliary commands can include extracting the auxiliary commands from the G-Code file and synchronizing the auxiliary commands with the new set of motion commands. For example, as shown in FIG. 4 by a structure 415, which is the same as structure 300, auxiliary commands can be extracted to control auxiliary device 130 to take actions upon the printhead moving along path 405 reaches coordinates 414 and 424. According to the coordinates on path 405 and the information about the velocity and acceleration of the printhead as shown in diagram 425, computer system 120 can calculate the times when the printhead reaches coordinates 414 and 424. For example, a time tl can be determined when the printhead reaches coordinate 414, based on a distance L between coordinates 312 and 314 on path 305, speed vc, and an acceleration a(t) between times tO and t0’. In particular, a distance Lathe printhead moves between times tO and t0’ can be calculated by integrating acceleration a(t) over time between times tO and tO’. Time tl can then be calculated according to tl = tO’ + (L - La) / vc. In some embodiments, acceleration a(t) can be configured as a parameter of the printhead. For example, acceleration a(t) can be a constant ac, such that tO’ = tO + vc / acand La= 0.5 x vc2 / ac. In some embodiments, acceleration a(t) can be time-dependent. For example, acceleration a(t) can have a shape of a half-sine curve or an S-curve, and distance Lacan be calculated by integrating acceleration a(t) over time between times tO and tO’. In some embodiments, a time-dependent acceleration a(t) can be linearly approximated by constant acto calculate time tl without compromising the accuracy of the printed structure, especially if the acceleration is quick and short such that distance La is much less than distance L. This simplification of acceleration a(t) by a linear approximation may be especially useful under circumstances when the exact profile of acceleration a(t) of the printhead is not known or difficult to determined. Although specific examples of calculating time tl based on acceleration and velocity profiles are described, in other embodiments the times associated with auxiliary actions can be determined using other analytical, numerical, empirical, or data-driven methods (e.g., look-up tables, calibration data, or machine-learned models) based on the kinematic characteristics of the CNC system.

[0045] Similarly, a time t3 can be determined when the printhead reaches coordinate 424. Times tl and t3 can be associated with the actions of auxiliary device 130 at coordinates 414 and 424 in a process 430, respectively. Times tl and t3 can be used to synchronize theactions of the auxiliary device 130 to switch the material supply to the printhead, as shown in diagram 435. Accordingly, computer system 120 can generate a new set of auxiliary commands about the actions of the auxiliary device 130 and their corresponding times.

[0046] In some embodiments, the new set of motion commands can be programmed as a script 525 in a process 510, as described with reference to FIG. 5 A. In some embodiments, script 525 can be in a similar format as a G-Code file without including any auxiliary commands. For example, script 525 can include command 502 stating “G1 X416 Y0 Z0 E515 F515” to instruct the printhead to move from coordinate 412 to coordinate 416 without stopping or interruption at the boundary at coordinate 414. Script 525 can then be sent to 3D printer 110 from computer system 120 in a process 520.

[0047] In some embodiments, the new set of auxiliary commands can be programmed as a script 535 in a process 515, as described with reference to FIG. 5B. In some embodiments, script 535 can be a Python script or any other programming language script, and can include the instructions of taking specific auxiliary actions at corresponding times. For example, script 535 can include command 513 stating “At tl, switch the material supply from the 1st material to the 2nd material” to instruct auxiliary device 130 to switch material supply at time tl. Script 535 can then be sent to auxiliary device 130 in a process 525. For example, script 535 can be sent directly from computer system 120 via communication link 125 to auxiliary device 130, or indirectly from computer system 120 via communication link 115 to 3D printer 110 and via channel 135 to auxiliary device. In some embodiments, the T- Code file can include both scripts 525 and 535. In some embodiments, the T-Code file can be represented as a single data structure that internally encodes one or more motion channels and one or more auxiliary channels, rather than as two separate scripts, and may be parsed or executed by one or more interpreters associated with the devices.

[0048] In some embodiments, converting the G-Code file into the T-Code file can be performed within 3D printer 110. For example, 3D printer 110 can include a processor that can decouple the motion commands and the auxiliary commands in the G-Code, reconstruct the new sets of motion commands and auxiliary commands, generate the T-Code file including scripts 525 and 535, and send script 535 to auxiliary device 130.

[0049] Referring to FIG. 2, method 200 continues with an operation 230 and the process of synchronizing different devices of the CNC system (such as 3D printer 110 and auxiliary device 130 of 3D printing system 100 as shown in Fig. 1) using the T-Code file. Forexample, scripts 525 and 535 can include both their first commands 501 and 511 as “Synchronization at tO,” as shown in FIGs. 5A and 5B.

[0050] Referring to FIG. 2, method 200 continues with an operation 240 and the process of performing the CNC process by concurrently controlling the different devices of the CNC system using the T-Code file. For example, a structure can be 3D-printed by concurrently controlling 3D printer 110 and auxiliary device 130 using the T-Code file. Operation 240 can include parallel operations 242 and 244 to control a motion of the printhead of 3D printer 110 according to the motion commands and control the auxiliary device according to the auxiliary commands, respectively. For example, after the synchronization at time tO, command 502 in script 525 can instruct the printhead of 3D printer 110 to start moving from coordinate 412 to coordinate 416 while commands 512 and 513 in script 535 can instruct auxiliary device 130 to supply the first material to the printhead starting at time tO and then switch the material supply at time tl. The synchronization at time tO can guarantee that auxiliary device 130 can switch the material supply to the printhead at the moment (time tl) when the printhead reaches coordinate 314 as the designed boundary between sections 310 and 315 as shown in FIG. 3A. By implementing the T-Code file to perform the 3D printing process, the printhead can maintain a constant speed when passing coordinate 314 and switching material supply without having its motion interrupted. Therefore, the 3D printing process can be less timeconsuming and more efficient, while the printed structure can have higher quality with fewer defects. The 3D printing process can continue until all the instructions in scripts 525 and 535 are executed such that the printed structure is completed.

[0051] In some embodiments, during the 3D printing process, there can be deviations of the synchronization of 3D printer 110 and auxiliary device 130 due to unavoidable hardware and / or software factors, such as deviation of the mechanical motion of the 3D printer and time delays when executing scripts 525 and 535. Such deviations can be accumulated during the 3D printing process and may result in auxiliary actions taken at times deviated from as designed. To overcome this problem, in some embodiments, operation 240 can further include operation 246 to resynchronize 3D printer 110 and auxiliary device 130 during the 3D printing process. For example, scripts 525 and 535 can include instructions at proper stages of the 3D printing process to resynchronize, such as commands 504 and 514 stating “Resynchronization at t2.” In some embodiments, theresynchronizations can take place at points when the printhead stops to change direction, such that the interruptions of the 3D printing process can be minimized. For example, as shown in FIGs. 5 A and 5B, commands 504 and 514 can be executed when the printhead reaches coordinate 422 at time t2. The resynchronization at t2 can ensure that the next action of switching the material supply by auxiliary device 130 can be taken at time t3 when the printhead reaches the designed material boundary on the path from coordinate 422 to coordinate 426. In some embodiments, resynchronization operations may involve any subset of devices participating in the CNC process, such as multiple printheads and multiple auxiliary devices, and may update one or more clocks, counters, or state variables used to execute the T-Code file.

[0052] FIGs. 6A-6C illustrate structures based on the same design as structure 300 but printed by different approaches using T-Code or G-Code.

[0053] FIG. 6 A illustrates a structure 610 printed by implementing T-Code using method 200 with operation 246 to resynchronize 3D printer 110 and auxiliary device 130. During the 3D printing process, the printhead can be controlled to move along path 405 according to the motion commands, while auxiliary device 130 can be controlled to take actions at times tl and t3 to switch material supply to the printhead according to the auxiliary commands synchronized with the motion commands. In particular, the printhead can maintain a constant moving speed when passing boundaries between sections with varied compositions without being interrupted by the switching of material supply, avoiding generation of defects around the boundaries and producing smooth and continuous interface between different sliced layers. Moreover, 3D printer 110 and auxiliary device 130 can repetitively resynchronize with each other at points when the printhead stops to change direction to ensure the accuracy of the time for auxiliary device 130 to take action. For example, resynchronization of 3D printer 110 and auxiliary device 130 at time t2 can eliminate deviations affecting the synchronization of 3D printer 110 and auxiliary device 130 prior to time t2, such that the action of auxiliary device 130 can be taken accurately at time t3. As a result, for example, the boundaries of between sections of different material compositions can be aligned.

[0054] In some embodiments, resynchronization between 3D printer 110 and auxiliary device 130 may additionally or alternatively be performed at artificial or user-defined stopping points inserted into the toolpath for the purpose of improving timing accuracy.For example, in cases where a print path includes a long continuous motion segment, cumulative timing deviations may arise before the next natural stopping point. To mitigate such deviations, the system may introduce an intermediate dwell or pause (e.g., mid-line) solely for resynchronization, even though the printhead would not otherwise stop at that location. Such intermediate stops may introduce minor artifacts, but in certain implementations they can provide improved temporal alignment between motion commands and auxiliary actions.

[0055] FIG. 6B illustrates a structure 620 printed by implementing G-Code. For example, structure 620 can be printed by implementing the G-Code file 350 as shown in FIG. 3B, in which the instructions, including both the motion commands and the auxiliary commands, are executed line-by-line. For example, the printhead can be instructed to move along path 305 starting from coordinate 312 to coordinate 314 according to command 301, and then be instructed to stop at coordinate 314 such that auxiliary device 130 can switch the material supply to the printhead. The interruption of the motion of the printhead at coordinate 314 can affect the extrusion of the printing material by the printhead, causing defects in structure 620. For example, before reaching coordinate 314, printhead can over-extrude the printing material due to deceleration of the printhead leading up to the stopping point 314 and produce a defect 622 having a bulging shape. In some embodiments, defect 622 can cause uneven interface between adjacent sliced layers. In some embodiments, the unevenness of a sliced layer caused by defect 622 can cause another defect 624 in another sliced layer printed on the sliced layer. In some embodiments, defects 622 and 624 can impact the dimensional and mechanical quality of structure 620. As a comparison, structure 610 printed by implementing T-Code as shown in FIG. 6 A can have defect-free sliced layers with smooth and continuous interface between them.

[0056] FIG. 6C illustrates a structure 630 printed by implementing T-Code using method 200 but without operation 246 to resynchronize 3D printer 110 and auxiliary device 130. In comparison with structure 610 as shown in FIG. 6A, structure 630 can be printed without resynchronization at time t2’, such that the moment to switch material supply at time t3 can be deviated from the design due to the accumulation of deviations caused by hardware and / or software factors prior to time t2’. As a result, boundaries 635 between sections of different material compositions can be misaligned, in comparison with structure 610 asshown in FIG. 6A. In some embodiments, without the resynchronization, the accuracy of the printed structure can be compromised.

[0057] In some embodiments, using T-Code for 3D printing can achieve continuous variation of properties of the printed structure, such as continuous variation of the dimension of the printed structure. For example, FIG. 7A illustrates a structure 710 printed by using T-Code. In some embodiments, a T-Code file can be generated by converting a G-Code file according to a CAD design of structure 710, as described with reference to operation 220 in FIG. 2. In some embodiments, the T-Code file can synchronize 3D printer 110 and auxiliary device 130 at point 712, as described with reference to operation 230 in FIG. 2. In some embodiments, the T-Code file can concurrently control the printhead of 3D printer 110 to move along path 715 while controlling auxiliary device 130 to continuously adjusting the extrusion rate of the supplied material. For example, auxiliary device 130 can be controlled to continuously increasing a size of a nozzle of the printhead that extrudes the printing material, or to continuously increase a pressure to supply the printing material, while the motion of the printhead is uninterrupted. As a result, structure 710 can be printed to be defect-free, with a surface 716 being smooth and continuous.

[0058] As a comparison, FIG. 7B illustrates a structure 720 printed by using G-Code. Limited by its line-by-line execution, a G-Code file can vary the dimension of structure 720 by printing joint sections with discretely different widths. For example, the G-Code file can instruct the printhead to move along a section of a path 725 while extruding the printing material, then stop the printhead at a coordinate 722 to instruct auxiliary device to increase an extrusion rate, and then instruct the printhead to restart moving along a next section of path 725, and so on. As a result, the geometrical and mechanical properties of structure 720 can be affected. For example, a surface 726 of structure 720 can be unsmooth and discontinuous, and interfaces 728 between adjacent sections can have defects resulting in mechanical weak points. Although continuous variation is described in this example, in other embodiments T-Code may also be used to implement discrete or stepwise changes in dimension, while still decoupling motion from auxiliary actions.

[0059] In some embodiments, using T-Code for 3D printing can achieve continuous variation of properties of the printed structure, such as continuous variation of the material composition of the printed structure. For example, FIG. 8 A illustrates a structure 810 printed by using T-Code. In some embodiments, a T-Code file can be generated byconverting a G-Code file according to a CAD design of structure 810, as described with reference to operation 220 in FIG. 2. In some embodiments, the T-Code file can synchronize 3D printer 110 and auxiliary device 130 at point 812, as described with reference to operation 230 in FIG. 2. In some embodiments, the T-Code file can concurrently control the printhead of 3D printer 110 to move along path 815 while controlling auxiliary device 130 to continuously adjusting the extrusion rates of two or more different materials supplied to the printhead. For example, auxiliary device 130 can be controlled to continuously varying different pressure values that determines the extrusion rates of the different materials, while the motion of the printhead is uninterrupted. As a result, structure 810 can be printed to be defect-free, with a surface 816 being smooth and continuous. Although continuous variation is described in this example, in other embodiments T-Code may also be used to implement discrete or stepwise changes in dimension, while still decoupling motion from auxiliary actions.

[0060] As a comparison, FIG. 8B illustrates a structure 820 printed by using G-Code. Limited by its line-by-line execution, a G-Code file can vary the material composition of structure 720 by printing joint sections with discretely different extrusion rates of printed materials. For example, the G-Code file can instruct the printhead to move along a section of a path 825 while extruding first and second materials under first and second extrusion rates, then stop the printhead at a coordinate 822 to instruct auxiliary device to change the first and second extrusion rates, and then instruct the printhead to restart moving along a next section of path 825, and so on. As a result, the geometrical and mechanical properties of structure 820 can be affected. For example, a surface 826 of structure 820 can be unsmooth and discontinuous, and interfaces 828 between adjacent sections can have defects resulting in mechanical weak points.

[0061] FIG. 9 is an example computer system 900 useful for implementing various aspects of the present disclosure, in accordance with some embodiments. Computer system 900 may be any computer capable of performing the functions described herein. For example, functions of computer system 120 as shown in FIG. 1 can be implemented using components of the computing system 900. In some embodiments, functions of 3D printer 110 and auxiliary device 130 as shown in in FIG. 1 can be implemented using components of the computing system 900

[0062] Computer system 900 includes one or more processors (also called central processing units, or CPUs), such as a processor 904. Processor 904 is connected to a communication infrastructure or bus 906.

[0063] One or more processors 904 may each be a graphics processing unit (GPU). In an aspect, a GPU is a processor that is a specialized electronic circuit designed to process mathematically intensive applications. The GPU may have a parallel structure that is efficient for parallel processing of large blocks of data, such as mathematically intensive data common to computer graphics applications, images, videos, etc.

[0064] Computer system 900 also includes user input / output device(s) 903, such as monitors, keyboards, pointing devices, etc., that communicate with communication infrastructure 906 through user input / output interface(s) 902.

[0065] Computer system 900 also includes a main or primary memory 908, such as random access memory (RAM). Main memory 908 may include one or more levels of cache. Main memory 908 has stored therein control logic (i.e., computer software) and / or data.

[0066] Computer system 900 may also include one or more secondary storage devices or memory 910. Secondary memory 910 may include, for example, a hard disk drive 912 and / or a removable storage device or drive 914. Removable storage drive 914 may be a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup device, and / or any other storage device / drive.

[0067] Removable storage drive 914 may interact with a removable storage unit 918. Removable storage unit 918 includes a computer usable or readable storage device having stored thereon computer software (control logic) and / or data. Removable storage unit 918 may be a floppy disk, magnetic tape, compact disk, DVD, optical storage disk, and / any other computer data storage device. Removable storage drive 914 reads from and / or writes to removable storage unit 918 in a well-known manner.

[0068] According to an exemplary aspect, secondary memory 910 may include other means, instrumentalities or other approaches for allowing computer programs and / or other instructions and / or data to be accessed by Computer system 900. Such means, instrumentalities or other approaches may include, for example, a removable storage unit 922 and an interface 920. Examples of the removable storage unit 922 and the interface 920 may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM or PROM) and associated socket,a memory stick and USB port, a memory card and associated memory card slot, and / or any other removable storage unit and associated interface.

[0069] Computer system 900 may further include a communication or network interface 924. Communication interface 924 enables Computer system 900 to communicate and interact with any combination of remote devices, remote networks, remote entities, etc. (individually and collectively referenced by reference number 928). For example, communication interface 924 may allow Computer system 900 to communicate with remote devices 928 over communications path 926, which may be wired and / or wireless, and which may include any combination of LANs, WANs, the Internet, etc. Control logic and / or data may be transmitted to and from Computer system 900 via communication path 926.

[0070] In an aspect, a tangible, non-transitory apparatus or article of manufacture comprising a tangible, non-transitory computer useable or readable medium having control logic (software) stored thereon is also referred to herein as a computer program product or program storage device. This includes, but is not limited to, Computer system 900, main memory 908, secondary memory 910, and removable storage units 918 and 922, as well as tangible articles of manufacture embodying any combination of the foregoing. Such control logic, when executed by one or more data processing devices (such as Computer system 900), causes such data processing devices to operate as described herein.

[0071] It is to be appreciated that the Detailed Description section, and not the Abstract of the Disclosure section, is intended to be used to interpret the claims. The Abstract of the Disclosure section may set forth one or more but not all possible embodiments of the present disclosure as contemplated by the inventor(s), and thus, are not intended to limit the subjoined claims in any way.

[0072] The foregoing disclosure outlines features of several embodiments so that those skilled in the art may better understand the aspects of the present disclosure. Those skilled in the art will appreciate that they may readily use the present disclosure as a basis for designing or modifying other processes and structures for carrying out the same purposes and / or achieving the same advantages of the embodiments introduced herein. Those skilled in the art will also realize that such equivalent constructions do not depart from the spirit and scope of the present disclosure, and that they may make various changes, substitutions, and alterations herein without departing from the spirit and scope of the present disclosure.

Claims

What is claimed is:

1. A method, comprising: associating motion actions for a first device of a computer numerical control (CNC) system and auxiliary actions for a second device of the CNC system with corresponding times in a time-based control (T-Code) instruction set, wherein the motion actions and the auxiliary actions are provided in instruction inputs for the CNC system; synchronizing, according to the T-Code instruction set, the first device and the second device of the CNC system; and processing the instruction inputs and the T-Code instruction set, including: controlling, based on the motion commands, a first action of the first device; controlling, based on the auxiliary commands, a second action of the second device; and resynchronizing the first and second devices at a synchronization point specified by the T-Code instruction set.

2. The method of claim 1, wherein the CNC system comprises a 3D printing system.

3. The method of claim 2, wherein the first device comprises an extrusion unit, and wherein the second device comprises a material-handling module.

4. The method of claim 1, wherein controlling the second action of the second device comprises controlling the second action of the second device without interrupting controlling the first action of the first device.

5. The method of claim 1, further comprising generating a T-Code file based on the motion actions and the auxiliary actions.

6. The method of claim 5, further comprising generating, based on the motion actions and the auxiliary actions, a geometric code (G-Code) file, wherein the G-Code comprises motion commands and auxiliary commands, wherein generating the T-Code file comprisesconverting the G-Code file into the T-Code file by decoupling the motion commands and the auxiliary commands.

7. The method of claim 1, further comprising determining the corresponding times based on based on the motion actions and the auxiliary actions.

8. A method, comprising: generating, based on input data representing an object to be printed, a time code (T- Code) file comprising motion commands about motion actions of a 3D printing system and auxiliary commands about auxiliary actions of the 3D printing system; synchronizing, according to the T-Code file, a movable component of the 3D printing system and an auxiliary device; and printing the object, wherein printing the object comprises: controlling, based on the motion commands, a motion of the movable component; controlling, based on the auxiliary commands, an action of the auxiliary device; and resynchronizing, when the movable component stops to change the motion, the movable component and the auxiliary device.

9. The method of claim 8, wherein printing the object further comprises simultaneously controlling the motion of the movable component and the action of the auxiliary in a parallel manner.

10. The method of claim 8, wherein the auxiliary device comprises a pressure box configured to supply first and second printing materials to the movable component, and wherein controlling the action of the auxiliary device comprises switching a material supply to the movable component between the first and second printing materials.

11. The method of claim 8, wherein controlling the action of the auxiliary device comprises controlling the action of the auxiliary device without interrupting controlling the motion of the movable component.

12. The method of claim 8, wherein generating the T-Code file comprises analyzing material features of the object according to the input data.

13. The method of claim 8, wherein generating the T-Code file comprises determining times at which the movable component pauses, changes direction or speed, or reaches a synchronization point.

14. A computer numerical control (CNC) system, comprising: a first device configured to perform a first action; a second device configured to perform a second action; and a control device coupled to the first device and the second device, wherein the control device is configured to: generate, based on input data representing a process to be performed by the CNC system, a time code (T-Code) file comprising motion commands and auxiliary commands; synchronize, according to the T-Code file, the first and second devices; control, based on the motion commands, the first action of the first device; control, based on the auxiliary commands, the second action of the second device; and resynchronize the first and second devices at a synchronization point.

15. The CNC system of claim 14, wherein the first device comprises a movable component configured to 3D-print an object, and wherein the second device comprises a materialsupply system configured to supply first and second printing materials.

16. The CNC system of claim 15, wherein: the first action comprises moving the movable component; and the second action comprises switching a material supply to the movable component between the first and second printing materials.

17. The CNC system of claim 16, wherein the control device is further configured to determine, based on a motion state of the movable component, a time at which the switching of material supply is to occur.

18. The CNC system of claim 14, wherein the control device is further configured to control the second action of the second device without interrupting the first action of the first device.

19. The CNC system of claim 14, wherein the control device is further configured to simultaneously control the first action and the second action in a parallel manner.

20. The CNC system of claim 14, wherein the control device is further configured to determine the synchronization point.