System and method for managing a 3D printing-based manufacturing process
By generating inventory identifiers and dynamically adjusting job queues in the management server, the efficiency and cost issues of producing high-quality 3D printed products on demand in the traditional manufacturing process are solved, and efficient on-demand production is achieved.
Patent Information
- Application Number
- CN202380041932.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-07-25
- Filing Date
- 2023-07-12
- Publication Date
- 2025-01-10
AI Technical Summary
Traditional manufacturing processes struggle to efficiently produce high-quality, customized 3D printed products, especially in large-scale production where managing the printing of multiple parts presents challenges in terms of cost and time management for on-demand manufacturing.
By generating inventory identifiers in the management server, assigning and tracking multiple jobs, including 3D printing, finishing, assembly and quality assurance jobs, and dynamically adjusting job queues based on 3D printer and worker availability, the production process is optimized to improve efficiency.
It enables efficient on-demand production of 3D printed products, reduces production delays and costs, improves product quality assurance, and adapts to changes in consumer demand.
Smart Images

Figure CN119301596A_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims the benefit of U.S. Provisional Application No. 63 / 369,296, filed on July 25, 2022, the contents of which are incorporated herein by reference in their entirety. Technical Field
[0003] The present disclosure relates generally to the field of manufacturing of 3D printed products, and more particularly to improved systems and methods for managing a 3D printing-based manufacturing process to produce 3D printed items on demand for consumers. Background Art
[0004] Consumer goods and household items are often manufactured using traditional manufacturing processes such as injection molding. From a cost perspective, traditional manufacturing processes often require that products be manufactured in large quantities to offset the high overhead costs associated with mold design and tooling. However, once a product is mass-produced using custom molds, it is often difficult to change the product design without increasing overhead costs. Furthermore, if any product-related issues are discovered after a production run has been completed or nearly completed, the result of such a production run may be that the product is unusable or unfit for sale, resulting in a large amount of waste. As a result, traditional manufacturing is often not suitable for manufacturing high-quality, design-centric products where consumer expectations are high and consumer tastes can evolve or change over time.
[0005] While certain 3D printing processes, such as fused deposition modeling (FDM) or fused filament fabrication (FFF), are becoming preferred alternatives to traditional manufacturing, companies specializing in 3D printing-based manufacturing often face a new set of challenges regarding how to best manage or coordinate 3D printing workflows. These issues are particularly evident for companies that manufacture products that include multiple parts, where each part may take several hours to print and the completion of the entire product may require the services of multiple 3D printers and workers spending several days. In addition, it is challenging to measure the true cost of producing complex 3D printed products on demand in terms of both labor and materials. This can lead to difficulties in pricing such 3D printed products, especially when the products are sold directly to consumers rather than through traditional wholesale channels.
[0006] Therefore, a solution is needed that not only addresses the shortcomings and disadvantages of traditional manufacturing processes, but also addresses the challenges faced by experts in 3D printing-based manufacturing, especially large-scale manufacturing. Such a solution should not be overly complex and should allow for the manufacture of high-quality 3D printed products on demand, on time, and on budget. Summary of the invention
[0007] Disclosed herein are systems and methods for managing a 3D printing-based manufacturing process to produce 3D printed items for consumers on demand. In some embodiments, a method for managing a 3D printing-based manufacturing process is disclosed. The method includes: receiving an order from a customer's computing device, wherein the order includes a product made of 3D printed parts and one or more standardized functional components; generating an inventory identifier for identifying the product during and after manufacturing at a management server; creating multiple jobs to be executed to manufacture the product at the management server, wherein the inventory identifier is associated with each job, and wherein the jobs include a 3D printing job for printing the 3D printed parts, a finishing job for finishing each 3D printed part, an assembly job for assembling the 3D printed parts and one or more standardized functional components into an assembled product, a quality assurance job for inspecting the 3D printed parts and the assembled product, and a packaging job for packaging the assembled product; at the management server, based on the job order, a The invention relates to a method for controlling the availability of one or more 3D printers, the availability of one or more workers, and the inventory levels of one or more standardized functional components and 3D printing materials, assigning a job status to each of a plurality of jobs associated with an inventory identifier, and continuously updating the job status of each job based on one or more completed jobs, the availability of one or more 3D printers, the availability of one or more workers, and the inventory levels of one or more standardized functional components and 3D printing materials; and assigning at least one job associated with the inventory identifier to one of the 3D printers by adding the job to the printer job queue of the 3D printer, and assigning at least another job associated with the inventory identifier to one of the workers by adding the other job to the worker job queue of the worker.
[0008] In some embodiments, the method further includes: calculating, at a management server, an inventory yield percentage based in part on a total number of completed jobs and a total number of failed jobs associated with the inventory identifier during a manufacturing process; calculating a component yield percentage based in part on a total number of completed jobs and a total number of failed jobs associated with the manufacture of a 3D printed component of the product, wherein the 3D printed component is also associated with the inventory identifier; and adjusting a printer job queue of a 3D printer so that jobs associated with the inventory identifier and assigned to the 3D printer are ranked higher in the printer job queue than other jobs not associated with the inventory identifier, or adjusting a worker job queue of a worker so that jobs associated with the inventory identifier and assigned to the worker are ranked higher in the worker job queue than other jobs not associated with the inventory identifier, which is partially due to at least one of the calculated inventory yield percentage and the component yield percentage.
[0009] In some embodiments, the method further includes: automatically duplicating, at the management server, one of the failed jobs associated with the inventory identifier, thereby generating a duplicate job associated with the inventory identifier, wherein calculating the inventory yield percentage further includes incorporating the result of the duplicate job into any calculation of the inventory yield percentage, and wherein calculating the part yield percentage further includes incorporating the result of the duplicate job into any calculation of the part yield percentage of the 3D printed part when the duplicate job is required to manufacture the 3D printed part; and assigning the duplicate job associated with the inventory identifier to one of the 3D printers or one of the workers by adding the duplicate job to a printer job queue of the 3D printer or adding the duplicate job to a worker job queue of the worker.
[0010] In some embodiments, the method further includes: pre-copying one or more of the jobs created to manufacture one of the 3D printed parts of the product when the historical part yield percentage calculated by the management server drops below a threshold percentage; and automatically assigning the pre-copied job to one of the workers or 3D printers.
[0011] In some embodiments, the method further includes: calculating a print yield percentage of one of the 3D printers over a period of time, wherein the print yield percentage is calculated based on the number of completed 3D print jobs initiated by the 3D printer during the period of time and the number of 3D print jobs initiated by the 3D printer that failed due to machine failure; calculating a print quality assurance (print QA) yield percentage of the 3D printer over the period of time, wherein the print QA yield percentage is calculated based on the number of 3D print jobs completed by the 3D printer that failed to pass the QA inspection of the 3D printed parts generated by the completed 3D print jobs and the number of 3D print jobs completed by the 3D printer that passed the QA inspection of the 3D printed parts generated by the completed 3D print jobs; automatically taking the 3D printer offline based on at least one of the print yield percentage and the print QA yield percentage, wherein when the 3D printer is offline, the management server does not automatically assign any further 3D print jobs to the 3D printer.
[0012] In some embodiments, the method further includes: tracking a number of consecutive failed jobs for the 3D printer; and automatically taking the 3D printer offline based on the number of consecutive failed jobs, wherein when the 3D printer is offline, the management server does not automatically assign any further 3D printing jobs to the 3D printer.
[0013] In some embodiments, the product is associated with a stock keeping unit (SKU) identifier and a product category. In these embodiments, the method further comprises: calculating a SKU yield percentage based on the number of failed jobs and the number of completed jobs associated with the SKU identifier across multiple orders; calculating a product category yield percentage based on the number of failed jobs and the number of completed jobs associated with the product category across multiple orders; and when the SKU yield percentage drops below a SKU yield threshold percentage, increasing the price of the product associated with the SKU identifier, or when the product category yield percentage drops below a product category yield threshold percentage, increasing the price of all products included in the product category.
[0014] In some embodiments, the method also includes: receiving a second order from another computing device, wherein the second order is a high priority order, wherein the second order includes a second product, and wherein the second product includes a second set of 3D printed parts and standardized functional components; generating, at a management server, a second inventory identifier for identifying the second product during and after manufacturing; creating, at the management server, a plurality of second jobs to be executed to manufacture the second product, wherein a second inventory identifier is associated with each second job; automatically assigning at least some of the second jobs to one or more 3D printers and workers; and prioritizing completion of the second job associated with the second inventory identifier at the management server by queuing the second job above other jobs not associated with the second inventory identifier in at least one of a worker job queue of one of the workers and a printer job queue of one of the 3D printers.
[0015] In some embodiments, the method further includes: tracking a worker yield percentage of a worker, wherein the worker yield percentage is calculated based on the number of failed jobs and the number of completed jobs assigned to the worker; and when the worker yield percentage drops below a worker yield percentage threshold, removing the worker from a group of available workers or designating the worker for further training, wherein when the worker is removed from the group of available workers, the management server does not automatically assign any further jobs to the worker.
[0016] In some embodiments, the method further includes: receiving, at a management server, a return order notification for a product having a return reason, wherein the return reason is attributed to at least one of: a defective 3D printed part, wherein the defective 3D printed part is associated with an inventory identifier, a defective standardized functional component, and an assembly problem; if the return reason is attributed to the defective 3D printed part, tracing the defective 3D printed part associated with the inventory identifier to one of the 3D printers assigned to print the defective 3D printed part; if the return reason is attributed to the defective 3D printed part, tracing the defective 3D printed part associated with the inventory identifier to one or more workers assigned a job associated with the defective 3D printed part; if the return reason is attributed to a defective standardized functional component, tracing the defective standardized functional component to a standardized functional component associated with the inventory identifier that is incorporated into the product; and if the return reason is attributed to an assembly problem, tracing the assembly problem to one or more workers assigned to an assembly job of assembling the 3D printed part of the product, wherein the assembly job is associated with the inventory identifier.
[0017] A system for managing a 3D printing-based manufacturing process is also disclosed. The system includes a plurality of 3D printers; and the server includes one or more processors, wherein the one or more processors are programmed to execute instructions to: receive an order from a retail server or a computing device of a customer, wherein the order includes a product made of a 3D printed part and one or more standardized functional components; generate an inventory identifier for identifying the product during and after manufacturing; create a plurality of jobs to be executed to manufacture the product, wherein the inventory identifier is associated with each job, and wherein the job includes a 3D printing job for printing the 3D printed part, a finishing job for finishing each 3D printed part, an assembly job for assembling the 3D printed part and one or more standardized functional components into an assembled product, a quality assurance job for inspecting the 3D printed part and the assembled product, and a job for packaging the assembled product packaging jobs; assigning a job status to each of a plurality of jobs associated with an inventory identifier based on job orders, availability of 3D printers, availability of one or more workers, and inventory levels of one or more standardized functional components and 3D printing materials, and continuously updating the job status of each job based on one or more completed jobs, availability of one or more 3D printers, availability of one or more workers, and inventory levels of one or more standardized functional components and 3D printing materials; and assigning at least one job associated with the inventory identifier to one of the 3D printers by adding the job to the printer job queue of the 3D printer, and assigning at least another job associated with the inventory identifier to one of the workers by adding the other job to the worker job queue of the worker.
[0018] In some embodiments, the one or more processors are programmed to execute further instructions to: calculate an inventory yield percentage based in part on a total number of completed jobs and a total number of failed jobs associated with the inventory identifier during a manufacturing process; calculate a component yield percentage based in part on a total number of completed jobs and a total number of failed jobs associated with the manufacture of a 3D printed part of a product, wherein the 3D printed part is also associated with the inventory identifier; and adjust a printer job queue of a 3D printer so that jobs associated with the inventory identifier and assigned to the 3D printer are ranked higher in the printer job queue than other jobs not associated with the inventory identifier, or adjust a worker job queue of a worker so that jobs associated with the inventory identifier and assigned to the worker are ranked higher in the worker job queue than other jobs not associated with the inventory identifier, due in part to at least one of the calculated inventory yield percentage and the component yield percentage.
[0019] In some embodiments, one or more processors are programmed to execute further instructions to: automatically duplicate one of the failed jobs associated with the inventory identifier, thereby generating a duplicate job associated with the inventory identifier, wherein calculating the inventory yield percentage further includes incorporating the results of the duplicate job into any calculation of the inventory yield percentage, and wherein calculating the part yield percentage further includes incorporating the results of the duplicate job into any calculation of the part yield percentage of the 3D printed part when the duplicate job is required to manufacture the 3D printed part; and assigning the duplicate job associated with the inventory identifier to one of the 3D printers or one of the workers by adding the duplicate job to a printer job queue of the 3D printer or adding the duplicate job to a worker job queue of the worker.
[0020] In some embodiments, the one or more processors are programmed to execute further instructions to: pre-duplicate one or more of the jobs created to manufacture one of the 3D printed parts of the product when the historical part yield percentage calculated by the management server drops below a threshold percentage; and automatically assign the pre-duplicate job to one of the workers or 3D printers.
[0021] In some embodiments, one or more processors are programmed to execute further instructions to: calculate a print yield percentage for one of the 3D printers over a period of time, wherein the print yield percentage is calculated based on a number of completed 3D print jobs initiated by the 3D printer and a number of 3D print jobs initiated by the 3D printer that failed due to machine failure during the period of time; calculate a print quality assurance (print QA) yield percentage for the 3D printer over the period of time, wherein the print QA yield percentage is calculated based on a number of 3D print jobs completed by the 3D printer that failed a QA inspection of 3D printed parts generated by the completed 3D print jobs and a number of 3D print jobs completed by the 3D printer that passed a QA inspection of 3D printed parts generated by the completed 3D print jobs; automatically take the 3D printer offline based on at least one of the print yield percentage and the print QA yield percentage, wherein when the 3D printer is offline, the management server does not automatically assign any further 3D print jobs to the 3D printer.
[0022] In some embodiments, one or more processors are programmed to execute further instructions to: track the number of consecutive failed jobs for the 3D printer; and automatically take the 3D printer offline based on the number of consecutive failed jobs, wherein, when the 3D printer is offline, the management server does not automatically assign any further 3D printing jobs to the 3D printer.
[0023] In some embodiments, the product is associated with a stock keeping unit (SKU) identifier and a product category. In these embodiments, the one or more processors are programmed to execute further instructions to: calculate a SKU yield percentage based on the number of failed jobs and the number of completed jobs associated with the SKU identifier across multiple orders; calculate a product category yield percentage based on the number of failed jobs and the number of completed jobs associated with the product category across multiple orders; and increase the price of the product associated with the SKU identifier when the SKU yield percentage drops below a SKU yield threshold percentage, or increase the price of all products contained in the product category when the product category yield percentage drops below a product category yield threshold percentage.
[0024] In some embodiments, one or more processors are programmed to execute further instructions to: track a worker yield percentage for a worker, wherein the worker yield percentage is calculated based on the number of failed jobs and the number of completed jobs assigned to the worker; and when the worker yield percentage drops below a worker yield percentage threshold, remove the worker from a group of available workers or designate the worker for further training, wherein when the worker is removed from the group of available workers, the management server does not automatically assign any further jobs to the worker.
[0025] In some embodiments, one or more processors are programmed to execute further instructions to: receive a return order notification for a product with a return reason, wherein the return reason is attributed to at least one of: a defective 3D printed part, wherein the defective 3D printed part is associated with an inventory identifier, a defective standardized functional component, and an assembly problem; if the return reason is attributed to the defective 3D printed part, tracing the defective 3D printed part associated with the inventory identifier to one of the 3D printers assigned to print the defective 3D printed part; if the return reason is attributed to the defective 3D printed part, tracing the defective 3D printed part associated with the inventory identifier to one or more workers assigned a job associated with the defective 3D printed part; if the return reason is attributed to a defective standardized functional component, tracing the defective standardized functional component to a standardized functional component associated with the inventory identifier that is incorporated into the product; and if the return reason is attributed to an assembly problem, tracing the assembly problem to one or more workers assigned to an assembly job of assembling the 3D printed part of the product, wherein the assembly job is associated with the inventory identifier.
[0026] Also disclosed is a non-transitory computer-readable medium including machine-executable instructions stored thereon, wherein the instructions include the following steps: receiving an order from a computing device of a customer, wherein the order includes a product made of 3D printed parts and one or more standardized functional components; generating an inventory identifier for identifying the product during and after manufacturing; creating a plurality of jobs to be performed to manufacture the product, wherein the inventory identifier is associated with each job, and wherein the jobs include a 3D printing job for printing the 3D printed parts, a finishing job for finishing each 3D printed part, an assembly job for assembling the 3D printed parts and the one or more standardized functional components into an assembled product, a quality assurance job for inspecting the 3D printed parts and the assembled product, and a packaging job for packaging the assembled product; Based on job orders, availability of one or more 3D printers, availability of one or more workers, and inventory levels of one or more standardized functional components and 3D printing materials, assign a job status to each of a plurality of jobs associated with an inventory identifier, and continuously update the job status of each job based on one or more completed jobs, availability of one or more 3D printers, availability of one or more workers, and inventory levels of one or more standardized functional components and 3D printing materials; and assign at least one job associated with the inventory identifier to one of the 3D printers by adding the job to the printer job queue of the 3D printer, and assign at least another job associated with the inventory identifier to one of the workers by adding the other job to the worker job queue of the worker. BRIEF DESCRIPTION OF THE DRAWINGS
[0027] Figure 1 One embodiment of a system for managing a 3D printing based manufacturing process is shown.
[0028] Figure 2 One embodiment of a method of managing a 3D printing based manufacturing process is shown.
[0029] Figure 3 One embodiment of a product ordering web page that a customer may use to place an order for a product that may be manufactured using the 3D printing-based manufacturing process disclosed herein is shown.
[0030] Figure 4 An exploded view of one embodiment of a product that may be manufactured using the 3D printing-based manufacturing process disclosed herein is shown.
[0031] Figure 5A and 5B An example portion of an inventory status page is shown that may provide a real-time overview of all manufacturing activities associated with a product.
[0032] Figure 6 An example page of the jobs dashboard is shown, which can provide a real-time overview of the status of all jobs created by the system.
[0033] Figure 7 An example printer status page is shown that may provide the current status of one of the 3D printers.
[0034] Figure 8 An example Printer Dashboard page is shown that may provide real-time performance metrics about all 3D printers.
[0035] Fig.9A Shown is an example of a machine failure screen that may be used to provide a reason for a 3D printer failure.
[0036] Fig. 9B Shown is an example of a Print QA screen that can be used to communicate the results of a QA inspection of a 3D printed part.
[0037] Fig.10 Shown is an example of a Returns page that can provide a real-time overview of all returns processed by the system.
[0038] Fig.11 An example of a worker status page is shown, which may provide a real-time overview of a worker's work-related activities.
[0039] Fig.12 An example of an inventory dashboard page is shown, which may provide a real-time overview of the number of inventory items currently in inventory. DETAILED DESCRIPTION
[0040] Figure 1 One embodiment of a system 100 for managing a 3D printing-based manufacturing process is shown. More specifically, the system 100 may be used to manage an on-demand 3D printing-based manufacturing process in response to a request for a product to be purchased through an online retail website 303 (see Figure 3 ) received orders to manufacture products 302 on demand (see e.g. Figure 3 , 4 , 5A, etc.).
[0041] In some embodiments, system 100 may include not only a server, a computing device, and a 3D printer for managing a 3D printing-based manufacturing process, but may also include a server for managing the sale of products through an online retail website 303 .
[0042] For example, system 100 may include a retail server 102 , a retail database 104 , an administrative server 106 , an administrative database 108 , a plurality of production client devices 110 , and a plurality of 3D printers 112 .
[0043] The management server 106 can be communicatively coupled to the retail server 102 and the plurality of production client devices 110. The management database 108 can be communicatively coupled to or otherwise accessible to the management server 106 and the plurality of production client devices 110.
[0044] The retail database 104 may be communicatively coupled to or otherwise accessible to the retail server 102 , the management server 106 , a computing device communicatively coupled to the retail server 102 or the management server 106 , or a combination thereof.
[0045] although Figure 1 The management server 106 is shown as a separate server from the retail server 102, but the present disclosure contemplates and one of ordinary skill in the art will appreciate that one server may perform the functions of both the management server 106 and the retail server 102. In these embodiments, the present disclosure contemplates and one of ordinary skill in the art will appreciate that one database may perform the functions of both the management database 108 and the retail database 104.
[0046] like Figure 1 As shown, the retail server 102 may receive an order 300 from a customer's computing device (see Figure 3 ). Figure 3 As discussed in more detail, order 300 may include at least one product 302 including 3D printed part 400 (see Figure 4 ) or 3D printable parts. The management server 106 can receive the order 300 from the retail server 102.
[0047] As about Figure 5A and 5B As discussed in more detail, the management server 106 may be configured to generate an inventory identifier 502 (see Figure 5A ) for identifying the product 302 during and after the manufacturing process. The management server 106 may also be configured to create a plurality of jobs 510 (see Figure 5A ), these jobs 510 will be performed by multiple workers 1102 (see Fig.11 ) and 3D printer 112 to manufacture product 302. Management server 106 can be configured to allocate job 510 based on various factors, including the availability of one or more 3D printers 112, the availability of one or more workers 1102, the availability of one or more standardized functional components 402 (see Fig.12 ) and 3D printing material 1204 (see Figure 3 ) inventory level 1208, and one or more yield percentages.
[0048] In some embodiments, production client device 110 may be produced by worker 1102 (see Fig.11 ) to control or operate the 3D printer 112. The production client device 110 can receive messages, instructions, or new / updated queues (e.g., the printer job queue 702 and the worker job queue 1104) from the management server 106. The production client device 110 can also transmit updates, messages, notifications, or data about the status of the job 510 to the management server 106, the management database 108, or a combination thereof. In these and other embodiments, the production client device 110 can also be used to assist workers in performing other jobs or tasks other than 3D printing jobs (e.g., painting jobs, finishing jobs, assembly jobs, etc.).
[0049] In some embodiments, one production client device 110 may be used to control or operate multiple 3D printers 112. For example, one production client device 110 may be used to control or operate one or more groups or rows of 3D printers 112.
[0050] In alternative embodiments, the management server 106 may communicate directly with the plurality of 3D printers 112. In these embodiments, the management server 106 may transmit machine-readable instructions (e.g., G-code) directly to the 3D printers 112 and receive job status updates directly from the 3D printers 112 regarding the status of the print jobs.
[0051] like Figure 1As shown, the plurality of 3D printers 112 may include n 3D printers (112n), which include at least a first 3D printer 112A and a second 3D printer 112B. The plurality of production client devices 110 may include n production client devices (110n), which include at least a first production client device 110A and a second production client device 110B.
[0052] In some embodiments, the number n of 3D printers 112 and the number n of production client devices 110 can range from a few hundred to a few thousand. The system 100 is designed to be scalable so that new 3D printers 112 and new production client devices 110 can be added as the number of incoming orders 300 increases.
[0053] In some embodiments, all 3D printers 112 and production client devices 110 may be located in one production facility. In other embodiments, 3D printers 112 and production client devices 110 may be distributed among multiple production facilities located in different geographic locations.
[0054] In some embodiments, the number of production client devices 110 can be greater than the number of 3D printers 112 because production client devices 110 can also be used to assist workers in the production facility with other jobs or tasks besides 3D printing jobs. In other embodiments, the number of 3D printers 112 can be equal to or greater than the number of production client devices 110.
[0055] In some embodiments, the printer job queue 702 and the worker job queue 1104 may be maintained by the management server 106 and transmitted to the production client device 110. The management server 106 may continuously transmit updated instances of the printer job queue 702 and the worker job queue 1104 to the production client device 110. In other embodiments, the printer job queue 702 may be transmitted directly to the 3D printer 112 by the management server 106.
[0056] In some embodiments, each 3D printer 112 may be assigned a dedicated production client device 110. In these embodiments, a dedicated production client device 110 may control or operate one 3D printer 112 or multiple 3D printers 112.
[0057] In alternative embodiments, a dedicated production client device 110 may be assigned to each worker 1102. In these embodiments, when the dedicated production client device 110 assigned to the worker 1102 is communicatively coupled (e.g., via a wired or wireless connection) to one or more 3D printers 112, the dedicated production client device 110 may operate or control the one or more 3D printers 112.
[0058] For purposes of this disclosure, any reference to "3D printer 112" or "the 3D printer 112" may be considered a reference to any 3D printer 112, including the first 3D printer 112A or the second 3D printer 112B. In addition, any reference to "production client device 110" or "the production client device 110" may be considered a reference to any production client device 110, including the first production client device 110A or the second production client device 110B.
[0059] The retail server 102, the retail database 104, the management server 106, the management database 108, the plurality of production client devices 110, and the plurality of 3D printers 112 may communicate with each other via one or more networks (e.g., network 105). The one or more networks may refer to one or more wide area networks (WANs), such as the Internet or other smaller WANs, wireless local area networks (WLANs), local area networks (LANs), wireless personal area networks (WPANs), system area networks (SANs), metropolitan area networks (MANs), campus area networks (CANs), enterprise private networks (EPNs), virtual private networks (VPNs), multi-hop networks, or combinations thereof.
[0060] The production client device 110 and the 3D printer 112 can communicate with each other via a wired connection (e.g., Ethernet, fiber optic cable, etc.) and / or one or more wireless communication protocols or standards (e.g., 3G wireless communication standard, 4G wireless communication standard, 5G wireless communication standard, Long Term Evolution (LTE) wireless communication standard, Bluetooth TM (IEEE 802.15.1) or Bluetooth TM Low Energy (BLE) short-range communication protocol, Wireless Fidelity (WiFi) (IEEE 802.11) communication protocol, Ultra-Wideband (UWB) (IEEE802.15.3) communication protocol, ZigBee TM (IEEE 802.15.4) communication protocol or a combination thereof) are connected to each other and to the management server 106, the management database 108 or a combination thereof.
[0061] The management server 106 or the retail server 102 may be or refer to a cloud computing platform or service (e.g., Amazon Web Services). Microsoft Google In some embodiments, the management server 106 or the retail server 102 may be a virtualized computing resource or cloud-based server hosted, supported, and / or provided by a server farm, server farm, or server farm. In these and other embodiments, the actual server hardware of the management server 106 or the retail server 102 may be one or more server computers (e.g., blade servers or rack-mounted servers) located in a data center, server farm / cluster, or dedicated server facility. Any reference to the management server 106 or the retail server 102 may also refer to the actual server hardware located in such a facility, and any reference to one or more processors of the management server 106 or the retail server 102 may refer to one or more processors of such server hardware. In addition, any reference to a task or operation performed by the management server 106 or the retail server 102 may refer to the same task or operation performed by one or more processors of the actual server hardware.
[0062] In other embodiments, any tasks or operations performed or performed by the management server 106 or the retail server 102 may also be performed or performed by one or more independent servers, mainframes, and / or dedicated desktop or laptop computers. For example, any tasks or operations performed or performed by the management server 106 or the retail server 102 may also be performed or performed by an independent server located in a production facility.
[0063] The management server 106 may be configured to store data, files, or information in or retrieve data, files, or information from the management database 108, and the retail server 102 may be configured to store data, files, or information in or retrieve data, files, or information from the retail database 104. The management database 108 or the retail database 104 may be or refer to one or more cloud-based databases (e.g., Amazon Web Services). Cloud-based databases, Google Database, Microsoft For example, the cloud-based database may be a relational database (e.g., an SQL database or an SQLite database) or a key-value database.
[0064] For the purposes of this disclosure, any reference to a server (e.g., management server 106 or retail server 102) may also be interpreted as a reference to a specific component, processor, module, chip, or circuit within the server. For example, each of management server 106 or retail server 102 may include one or more server processors, server memory and storage unit, and server communication interface. The server processor may be coupled to the server memory and storage unit and the server communication interface via a high-speed bus or interface. The one or more server processors may include one or more CPUs, GPUs, ASICs, FPGAs, or a combination thereof. The one or more server processors may execute software stored in the server memory and storage unit to perform the methods or instructions described herein. The one or more server processors may be an embedded processor, a processor core, a microprocessor, a logic circuit, a hardware FSM, a DSP, or a combination thereof. As a more specific example, at least one server processor may be a 64-bit processor.
[0065] The server memory and storage unit can store software, data (including video or image data), tables, logs, databases or combinations thereof. The server memory and storage unit can include internal memory and / or external memory, such as memory residing on a storage node or storage server. The server memory and storage unit can be volatile memory or non-volatile memory. For example, the server memory and storage unit can include non-volatile storage devices, such as NVRAM, flash memory, solid-state drive, hard disk drive, and volatile storage devices, such as SRAM, DRAM or SDRAM.
[0066] The server communication interface may refer to one or more wired and / or wireless communication interfaces or modules. For example, the server communication interface may be a network interface card. The server communication interface may include or refer to a WiFi communication module, a cellular communication module (e.g., a 4G or 5G cellular communication module), and a At least one of a BLE or other type of short-range communication module. The management server 106 may be connected to or communicatively coupled with the retail server 102, the production client device 110, and the 3D printer 112 via a server communication interface, and the retail server 102 may be connected to or communicatively coupled with the management server 106 and the client computing device via a server communication interface.
[0067] The retail server 102, the management server 106, the production client device 110, and the 3D printer 112 can be configured to transmit data, files, or information to each other via a secure connection. The secure connection can be a real-time, two-way connection protected by one or more encryption protocols, such as the Secure Sockets Layer (SSL) protocol, the Transport Layer Security (TLS) protocol, or a combination thereof. In addition, data or packets transmitted via the secure connection can be encrypted using a secure hash algorithm (SHA) or other suitable encryption algorithm.
[0068] Software instructions running on any server (e.g., management server 106, retail server 102, or a combination thereof), including any method steps disclosed herein, may be used Programming languages (e.g. Ruby on the web application framework), C# programming language, PHP programming language, Node.js (JavaScript) programming language, Java TM programming language, programming language or a combination thereof.
[0069] In some embodiments, production client device 110 may be a desktop computer or a laptop computer. In other embodiments, production client device 110 may be a high-performance tablet computer or other type of portable electronic device.
[0070] In some embodiments, the production client device 110 may refer to a personal communication device, such as a smartphone carried by the worker 1102. In other embodiments, the production client device 110 may be or include a pair of smart glasses that can record video or images and communicate with the management server 106.
[0071] For purposes of this disclosure, any reference to a production client device 110 may also be construed as a reference to a specific component, processor, module, chip, or circuit within the production client device 110 .
[0072] The production client device 110 may include one or more client device processors, client device memory and storage units, client device communication modules, and video image sensors or cameras. The client device may also include a positioning unit and a portable power storage unit. The components of the production client device 110 may be interconnected via a high-speed bus or interface.
[0073] The client device processor may include one or more central processing units (CPUs), graphics processing units (GPUs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or a combination thereof. The client device processor may execute software stored in client device memory and storage units to perform the methods or instructions described herein.
[0074] The client device memory and storage unit may include volatile memory and non-volatile memory or storage. For example, the client device memory and storage unit may include flash memory or storage, such as one or more solid-state drives, dynamic random access memory (DRAM) or synchronous dynamic random access memory (SDRAM), such as low-power double data rate (LPDDR) SDRAM, and embedded multimedia controller (eMMC) storage. The client device memory and storage unit may store software, firmware, data (including video and image data), tables, logs, databases, or a combination thereof.
[0075] The client device communication module may include a cellular communication module, a WiFi communication module, At least one of a communication module or a combination thereof. For example, the cellular communication module can support communication over a 5G network or a 4G network (e.g., a 4G Long Term Evolution (LTE) network).
[0076] The WiFi communication module may allow the production client device 110 to communicate with other production client devices 110 or one or more 3D printers 112 via a WiFi (IEEE 802.11) communication protocol (eg, 802.11n, 802.11ac, or 802.11ax protocol). The module may allow production client devices 110 to Communication protocols (e.g. Basic Rate / Enhanced Data Rate (BR / EDR), Low Energy (BLE) communication protocol or a combination thereof) to communicate with other production client devices 110 or one or more 3D printers 112. Modules can support v4.2 standard or Bluetooth v5.0 standard. In some embodiments, the wireless communication module may include a combined WiFi and module.
[0077] The production client device 110 may also include one or more built-in video image sensors or cameras for capturing video or images of 3D printed parts 400 that have successfully passed their quality assurance (QA) inspection or 3D printed parts 400 that have failed their QA inspection. The worker 1102 may also use the built-in video image sensor or camera of the production client device 110 to capture video or images of 3D printer failures.
[0078] The production client device 110 may also include a high-precision positioning unit with a global positioning system (GPS) receiver. The GPS receiver may receive GPS signals from GPS satellites. The positioning unit may provide positioning data that may allow the management server 106 to determine the geographic location of each production client device 110 within the production facility.
[0079] The software instructions running on any production client device 110, including any method steps disclosed herein, may be written in Objective-C programming language, programming language, Programming language, JavaScript programming language, programming language, Programming language, Golang TM programming language, C++ programming language, or a combination of them.
[0080] The production client device 110 can transmit machine-readable instructions (eg, G-code) to the 3D printer 112 to cause the 3D printer 112 to 3D print a part 400 (see FIG. 1 ) for manufacturing a product 302 sold on the online retail website 300. Figure 3 ).
[0081] In some embodiments, at least one 3D printer 112 may be a Cartesian 3D printer. Cartesian 3D printers are named for the three-axis Cartesian coordinate system that uses x, y, and z coordinates to determine the position of the print head. Cartesian printers are typically equipped with tracks that allow the print head to move in the x and y dimensions and an actuator that moves the print head up and down in the z dimension.
[0082] In other embodiments, at least one 3D printer 112 may be a Delta 3D printer. Delta 3D printers typically rely on three arms arranged in a triangular arrangement that move up and down on a vertical track. Each arm can move up and down on the track independently of the others. Delta printers use trigonometric functions based on the angles formed by these arms to determine the position of the print head within the 3D printing volume.
[0083] In some embodiments, the 3D printer 112 may be a fused deposition modeling (FDM) 3D printer, in which a 3D printing material in the form of a filament (e.g., a thermoplastic filament) is melted and extruded onto a print bed, and a part is constructed layer by layer by melting and extruding the 3D printing material. In further embodiments, at least one 3D printer 112 may be a selective laser sintering (SLS) 3D printer. SLS 3D printers rely on lasers to selectively sinter particles of 3D printing material (e.g., polymer powder) and fuse the particles together to build parts layer by layer. In additional embodiments, at least one 3D printer 112 may be a stereolithography (SLA) 3D printer. SLA 3D printers rely on a technology called "vat (Vat) photopolymerization," in which a laser is used to cure a liquid resin (e.g., a photopolymer resin) into a hardened material (e.g., a hardened plastic). Using this technology, an SLA 3D printer can "print" parts layer by layer through photopolymerization.
[0084] In some embodiments, at least one 3D printer 112 may be a binder jet 3D printer, in which a print head selectively deposits a liquid binder (referred to as a binder) onto a layer of powder particles to form a layer of a component. Additional powder particles are then deposited again onto the formed layer, and the print head selectively deposits a liquid binder or binder onto the new layer of powder particles. This process is repeated until the component is "printed" layer by layer in this manner.
[0085] In additional embodiments, at least one of the 3D printers 112 may be a cylindrical coordinate 3D printer. The cylindrical coordinate 3D printer may be any 3D printer disclosed in International Publication No. WO2021 / 025939, published on February 11, 2021, the contents of which are incorporated herein by reference in their entirety. For example, a cylindrical coordinate 3D printer may include a rotatable print bed support assembly, a vertically translatable base plate configured to support the print bed support assembly, a plurality of track segments located above the print bed support assembly and radially aligned with the print bed support assembly, and at least one gantry carrier configured to move along each track segment. In some embodiments, at least two gantry carriers may be configured to move simultaneously. Each gantry carrier may be configured to carry or support a print head on the gantry carrier.
[0086] although Figure 1A plurality of 3D printers 112 are shown as production machines, but the present disclosure contemplates and persons of ordinary skill in the art will appreciate that the system 100 (and method 200) disclosed herein may also be used to control or operate other types of machines, such as robotic manufacturing arms or other types of robotic manufacturing components, robotic spraying machines or components, robotic grinding or deburring machines or components, robotic sorting / picking machines or components, robotic packaging machines or components, or combinations thereof. In addition, the system 100 (and method 200) disclosed herein may also be used to control or operate certain automated storage machines or components.
[0087] Figure 2 One embodiment of a method 200 for managing or processing a 3D printing-based manufacturing process is shown for producing a product 302 including a 3D printed part 400 (see Figure 3 and 4 In some embodiments, method 200 is customized or optimized for managing or processing a 3D printing-based manufacturing process, where product 302 is manufactured on-demand for a customer in response to an order 300 received through an online retail website 303 (see Figure 3 ). The method 200 may be distinguished from conventional manufacturing methods, in which a product is manufactured in batches or large quantities using injection molding or die casting; typically before the product is sold through retail channels.
[0088] In some embodiments, the method 200 may be used to manage the production of 3D printed lighting products on demand. In other embodiments, the method 200 may be used to manage the production of 3D printed furniture on demand. In further embodiments, the method 200 may be used to manage the production of 3D printed consumer goods, kitchen items, bathroom items, or other types of household items on demand.
[0089] Method 200 may be used as Figure 1 Any of the servers, client devices, and 3D printers shown as a portion of the system 100 depicted may be implemented.
[0090] Method 200 may include, at operation 202, receiving an order 300 for a product 302 (see Figure 3 ), the product 302 includes a 3D printed part 400 and one or more standardized functional components 402 (see e.g. Figure 4 ). Retail server 102 (see Figure 1 ) can receive an order 300 from a customer's computing device. The retail server 102 can then send the order 300 (including the customer's preferences for product color 304 and product size 306 (see Figure 3 )All selections made) are transmitted to the management server 106.
[0091] The method 200 may also include, at operation 204, generating an inventory identifier 502 at the management server 106 (see Figure 5A ), which is used to identify the product 302 ordered by the customer during and after the manufacturing process. In some embodiments, the inventory identifier 502 can be a number assigned to the product 302. In other embodiments, the inventory identifier 502 can be an alphanumeric string containing numbers and letters. The inventory identifier 502 can be used to track the product 302 at different stages of the manufacturing process. For example, the inventory identifier 502 can be used to track the various parts 400 of the product 302 that need to be 3D printed, refined, and inspected as part of the manufacturing process. If the product 302 is ultimately returned by the customer, the inventory identifier 502 can also be used to track the product 302 after the product 302 is manufactured and shipped to the customer.
[0092] The inventory identifier 502 can also be used to track the standardized functional components 402 that are incorporated into the product 302 along with the 3D printed part 400. For example, the inventory identifier 502 can be used to track light bulbs, light switches, wires, and screws or other fasteners used to manufacture the product 302.
[0093] The method 200 may also include, in operation 206, creating a plurality of jobs 510 at the management server 106 (see Figure 5A ), these jobs 510 need to be performed or executed in order to manufacture the product 302. The jobs 510 may include a 3D printing job 512 for printing the 3D printed parts 400 of the product 302, a finishing job 514 for finishing each 3D printed part 400, an assembly job 516 for assembling the 3D printed parts 400 and one or more standardized functional components 402 into an assembled product, a quality assurance (QA) job 518 for inspecting the 3D printed parts 400 and the assembled product, and a packaging job 520 for packaging the assembled product (see Figure 5A and 5B ). An inventory identifier 502 may be associated with each job 510 .
[0094] The method 200 may also include, in operation 208, at the management server 106 based on the job order 523 (see Figure 5B ), the availability of one or more 3D printers 112, the availability of one or more workers 1102 (see Fig.11 ) and inventory levels 1208 of one or more standardized functional components 402 and 3D printing materials 1204 (see Fig.12 ), assigning a job status 522 to each of the plurality of jobs 510 associated with the inventory identifier 502 (see Figure 5A and 5B), and continuously updates the job status 522 of each job 510 based on one or more completed jobs 524, the availability of one or more 3D printers 112, the availability of one or more workers 1102, and the inventory levels 1208 of one or more standardized functional components 402 and 3D printing materials 1204.
[0095] The method 200 may also include, at operation 210, adding at least one job 510 associated with the inventory identifier 502 to a printer job queue 702 (see FIG. 7 ) of one of the 3D printers 112. Figure 7 ), assigning the job 510 to the 3D printer 112, and assigning at least another job 510 associated with the inventory identifier 502 to the worker 1102 by adding the other job 510 to the worker job queue 1104 of one of the workers 1102.
[0096] A technical problem faced by the applicant is how to design a 3D printing-based manufacturing process that can mass-produce high-end products, where each of these products contains multiple parts, each of which may take up to several hours to print, and where the completion of the entire product may take several days and require the services of multiple 3D printers and workers. One technical solution discovered and developed by the applicant is to divide the manufacturing process into multiple discrete jobs, where all jobs (including any and all failed jobs) are tracked, and jobs are assigned to certain 3D printers and workers based on the availability and performance of these 3D printers and workers.
[0097] A person of ordinary skill in the art will understand that method 200 and certain method steps / operations disclosed herein may be embodied in a non-transitory readable medium, a machine-readable medium and / or a machine-accessible medium that includes instructions that are compatible, readable and / or executable by one or more processors of a machine, server or other type of computing device.
[0098] In addition, method 200 may include: Figure 5A , 5B , 6, 7, 8, 9A, 9B, 10, 11 and 12 discussed additional method steps or operations.
[0099] Figure 3 An embodiment of a product ordering webpage 301 of an online retail website 303 is shown. As previously described, a customer can place an order 300 (e.g., an online order) for a product 302 manufactured using the system 100 and method 200 disclosed herein. Figure 4 As discussed in more detail, product 302 may be made from 3D printed parts 400 and standardized functional components 402 .
[0100] A customer may access an online retail website 303 using the customer's computing device to place an order 300. The order 300 may be received at the retail server 102, and all data and information about the order 300 may be stored in the retail database 104. The retail server 102 may then transmit the data and information about the order 300 to the management server 106.
[0101] like Figure 3 As shown, the product ordering web page 301 may also allow the customer to select a product color 304 and a product size 306 when placing the order 300. As will be discussed in more detail in later paragraphs, the management server 106 may automatically generate or create a plurality of jobs 510 that need to be completed to manufacture the product 302. The type of job 510 created may depend on the product size 306 and the product color 304.
[0102] The product ordering webpage 301 may also list a product price 308. As will be discussed in more detail in later paragraphs, the product price 308 may be adjusted (eg, increased or decreased) based on one or more yield percentages tracked by the system 100.
[0103] Figure 4 An exploded view of one embodiment of a product 302 (e.g., a lighting product) that can be manufactured using the system 100 and method 200 disclosed herein is shown. Figure 4 As shown in , product 302 may include 3D printed part 400 and several standardized functional components 402 .
[0104] Standardized functional components 402 can be manufactured in batches in advance (i.e., before manufacturing product 302). For example, standardized functional components 402 can be purchased from a supplier or seller of such components, or can be manufactured using traditional manufacturing techniques, such as injection molding, die casting, die casting, metal casting, extrusion, computer numerical control (CNC) milling, forging, sheet metal stamping, or a combination thereof. In some embodiments, standardized functional components 402 can be manufactured without a 3D printing process (i.e., functional components 402 are not manufactured using 3D printing).
[0105] The functional components 402 may be standardized so that the same functional component 402 may be used for different products 302. For example, one of the standardized functional components 402 may be a light switch, and the same light switch may be used for all different types of lighting products.
[0106] When the product 302 is a lighting product, the 3D printed part 400 may include a lampshade 404 , a light diffuser 406 , and a lamp holder 408 , wherein the lamp holder 408 includes a bottom cover 410 , a weight holder 412 , a weight cavity 414 , and a bottom plate 416 .
[0107] In some embodiments, the lampshade 404, the bottom cover 410, the weight holder 412, the weight cavity 414, and the bottom plate 416 can be made of an opaque polymer material. For example, these 3D printed parts 400 can be printed using opaque polymer filaments. As a more specific example, the opaque polymer filaments can be opaque filaments made of PLA. In some embodiments, the opaque PLA filaments can be plant-based PLA filaments.
[0108] In these and other embodiments, the light diffuser 406 or the light shield can be made of a translucent polymer material. For example, the light diffuser 406 can be printed using a translucent polymer thread. As a more specific example, the translucent polymer thread can be a translucent thread made of PLA. In certain embodiments, the translucent PLA thread can be a plant-based transparent PLA thread. In other embodiments, the translucent thread can be a translucent / transparent PETG thread or a translucent / transparent PETT thread. The light diffuser 406 can be made to diffuse the light emitted by the light emitting component 418 (e.g., a bulb or LED component).
[0109] When the product 302 is a lighting product, the standardized functional components 402 may include a light emitting component 418 (e.g., a light bulb, an LED component, etc.), a lamp socket 420 (e.g., a lamp socket), a lamp socket bracket 422, one or more rods 424, a plurality of weights 426, a plurality of rod connectors 428, a plurality of rod fixing flanges 430, and a plurality of rubber pads 432, the rubber pads 432 being configured to be fixed on the bottom outer surface of the bottom plate 416 to prevent the bottom plate 416 from sliding. The standardized functional components 402 may also include a light actuator 434 or a light switch and a cable. In some embodiments, the light actuator 434 may be a slidable actuator having a translatable sliding rod for controlling or dimming the amount of light emitted. In other embodiments, the light actuator 434 may be a toggle actuator having a toggle switch, a rotary actuator having a rotatable knob, or any combination of a sliding actuator, a toggle actuator, and a rotary actuator. In a further embodiment, the light actuator 434 may include a wireless communication unit configured to receive wireless signals from a portable electronic device (e.g., a smartphone, tablet, or other computing device) to control the on / off function or dimming level of the lighting product.
[0110] The weight holder 412 may cooperate or otherwise couple with the weight cavity 414 to hold a plurality of weights 426 for stabilizing or balancing the lighting product. Figure 4 Four weights 426 are shown for stabilizing or balancing a lighting product (eg, a floor lamp). The weight holder 412, the plurality of weights 426, and the weight cavity 414 may be housed within the bottom cover 410.
[0111] The bottom cover 410 can also accommodate a rod connector 428 and a rod fixing flange 430. The rod connector 428 and the rod fixing flange 430 can work together to fix the rod 424 to the base of the floor lamp. The rod connector 428 can also be used to connect the rods 424 to each other to extend or raise the height of the lampshade 404 relative to the bottom cover 410.
[0112] like Figure 4 As shown in FIG, the light emitting assembly 418, the lamp socket 420, and the lamp socket bracket 422 can be at least partially positioned within the lamp housing 404 and the light diffuser 406 or light shield. The light diffuser 406 can be mated with the lamp housing 404 or otherwise coupled to the lamp housing 404.
[0113] The weight 426 can be partially made of metal materials (such as iron, stainless steel, etc.), high-density polymer materials or a combination thereof. The weight 426 can be used to stabilize or balance the base of a lighting product, such as a floor lamp base or a table lamp base.
[0114] although Figure 4 The product 302 is shown as a lighting product (e.g., a floor lamp), but the present disclosure contemplates that the system 100 and method 200 disclosed herein may be used to manage on-demand production of other types of products 302 that include 3D printed parts. For example, the system 100 and method 200 disclosed herein may be used to manage on-demand production of a piece of furniture that includes 3D printed parts. In further embodiments, the system 100 and method 200 disclosed herein may be used to manage on-demand production of consumer goods, kitchen items, bathroom items, or other types of household items that include 3D printed parts.
[0115] Figure 5A and 5B A portion of an inventory status page 500 is shown, which may be provided as part of an online management panel or portal. For example, Figure 5A A portion of the initial portion of the inventory status page 500 is shown, and Figure 5B A portion of the subsequent portion of the inventory status page 500 is shown as the user scrolls down.
[0116] The inventory status page 500 may be presented on a display of a computing device, such as one of the production client devices 110 or a device used by a foreman or manager to monitor a 3D printing-based manufacturing process.
[0117] The inventory status page 500 can provide a real-time overview or snapshot of all manufacturing activities associated with the product 302 ordered by the customer. In some embodiments, the inventory status page 500 can be accessed through a web browser. In other embodiments, the inventory status page 500 can be accessed through a downloadable desktop or mobile software application. The inventory status page 500 for each product 302 can be generated and continuously updated by the management server 106.
[0118] As previously described, the management server 106 may generate an inventory identifier 502 that is used to identify the customer ordered product 302 during and after the manufacturing process. Figure 5A As shown in , inventory identifier 502 may be a unique number assigned to product 302. In other embodiments, inventory identifier 502 may be an alphanumeric string including numbers and letters of the alphabet.
[0119] Inventory identifier 502 may be used to track product 302 throughout different stages or phases of the manufacturing process. For example, inventory identifier 502 may be used to track multiple parts 400 of product 302 that require 3D printing, finishing, and inspection as part of the manufacturing process.
[0120] Inventory identifiers 502 may also be used to track standardized functional components 402 incorporated into products 302 along with 3D printed parts 400. For example, inventory identifiers 502 may be used to track light bulbs, light switches, wires, and screws or other fasteners incorporated into products 302 along with 3D printed parts 400.
[0121] If the product 302 is returned by the customer, the inventory identifier 502 can also be used to track the product 302 after the product 302 is manufactured and shipped to the customer. Once the management server 106 receives data or information about the order 300 from the retail server 102, the management server 106 can generate the inventory identifier 502 and assign the inventory identifier 502 to the product 302.
[0122] Inventory identifier 502 may be used to identify the actual item produced as a result of the 3D printing-based manufacturing process. Inventory identifier 502 may also be used to identify the actual item that is packaged and shipped to the customer. In the event that a manufactured / shipped item is returned by a customer, inventory identifier 502 may also be used to identify the returned item.
[0123] Inventory identifier 502 may be different from order number 504 or stock keeping unit (SKU) identifier 506. This is because a single order 300 may include multiple products, or even products from different product categories 508. For example, a customer may place an order 300 that includes an ABC floor lamp and an XYZ desk lamp.
[0124] SKU identifier 506 may be used to identify all instances of a product (e.g., all red, medium ABC floor lamps) of a particular product color 304 and product size 306. One SKU identifier 506 may be associated with multiple inventory identifiers 502. Product category 508 may refer to a general classification of products, regardless of product color 304 or product size 306 (e.g., all ABC floor lamps).
[0125] The management server 106 may automatically generate or create a plurality of jobs 510 that need to be performed and completed in order to manufacture the product 302 and fulfill the order 300. In some embodiments, the jobs 510 may include a plurality of 3D printing jobs 512 for printing the parts 400 of the product 302, a finishing job 514 for finishing each 3D printed part, an assembly job 516 for assembling the finished 3D printed parts with one or more standardized functional components 402 into an assembled product, a quality assurance (QA) job 518 for inspecting the 3D printed parts and the assembled product, and a packaging job 520 for packaging the assembled product.
[0126] In some embodiments, finishing operations 514 may include one or more grinding or deburring operations, masking operations, and painting operations. In some embodiments, finishing operations 514 may also include adding certain surface textures or surface details or designs. As a more specific example, a handheld grinding or deburring tool or an automatic robotic grinding or deburring tool may be used to grind or deburr the 3D printed part 400. Painting operations may include applying a base coat and painting the 3D printed part 400 using a sprayer or a spray gun.
[0127] Assembly 516 may include assembling 3D printed parts 400 with other 3D printed parts 400 and with standardized functional components 402. For example, assembly 516 may include fastening, bonding, or otherwise coupling 3D printed parts 400 with other 3D printed parts 400 and with standardized functional components 402. In some embodiments, standardized functional components 402 may be at least partially positioned within one or more cavities or housings of 3D printed parts 400.
[0128] It should be understood by those of ordinary skill in the art that QA jobs 518, finishing jobs 514, and assembly jobs 516 are as important to the successful construction of product 302 as 3D printing jobs 512, and that the system 100 and method 200 disclosed herein track job completion and failure rates associated with all such jobs (not just 3D printing jobs 512).
[0129] The type of jobs 510 created and / or the number of jobs 510 created may vary depending on the product ordered by the customer. More specifically, products from different product categories 508 may be composed of different 3D printed parts 400 and (in some cases) different standardized functional components 402. Furthermore, each 3D printed part 400 may have its own unique set of finishing jobs 514, assembly jobs 516, and QA jobs 518 associated with that particular 3D printed part.
[0130] In certain embodiments, the type of job 510 created and / or the number of jobs 510 created may depend on the customer selected product size 306 and product color 304. In these embodiments, the customer selected product size 306 and product color 304 may dictate the type and / or size of part 400 that will need to be 3D printed and the finishing work that will need to be performed.
[0131] Furthermore, the type of jobs 510 and the number of jobs 510 created for one product 302 from one product category 508 may be different from the type of jobs 510 and the number of jobs 510 created for a product 302 from another product category 508, because the products 302 from the various product categories 508 may differ in their component parts 400 and the way these component parts 400 are refined and assembled. Therefore, the workflow that the management server 106 needs to create and manage for each of these products 302 is different. The system 100 and method 200 disclosed herein can create and manage many workflows (each workflow involving many jobs 510) in a scalable manner.
[0132] In some embodiments, the jobs 510 created or generated by the management server 106 may be predetermined by the engineering team and / or the design team. For example, the jobs 510 created or generated by the management server 106 may be designed by the engineering team in collaboration with the designer or design team responsible for designing the product 302. The jobs 510 created or generated by the management server 106 may be determined based on a large number of practical manufacturing runs performed by the engineering team, the design team, and / or the manufacturing personnel.
[0133] In other embodiments, the jobs 510 created or generated by the management server 106 can be modified or updated based on feedback or data / analysis obtained from the manufacturing process. For example, the G-code used by the 3D printer 112 to print a particular part 400 can be updated based on past printing failures. In addition, additional jobs 510 can be added, or a job 510 can be broken down into multiple smaller jobs based on feedback or data / analysis obtained from the manufacturing process.
[0134] Figure 5A and 5B It is also shown that a job status 522 may be assigned to each job 510 associated with the inventory identifier 502. The job status 522 may include any of a "completed" status (also referred to as completed jobs 524), an "in progress" status (also referred to as in progress jobs 526), a "failed" status (also referred to as failed jobs 528), a "ready" status (also referred to as ready jobs 530), and a "waiting" status (also referred to as waiting jobs 532).
[0135] Once the 3D printer 112 or worker 1102 begins executing the ready job 530, the job status 522 of the job 510 may be changed to an in-progress job 526. Once the job status 522 of the ready job 530 has been changed to "in-progress", the job may continue to complete or fail. If the in-progress job 526 continues to complete, the job status 522 changes to a completed job 524. If the in-progress job 526 fails, the job status 522 changes to a failed job 528.
[0136] The management server 106 can assign a job status 522 based in part on a job order 523 (wherein jobs 510 fit into an overall ordering of jobs 510 that need to be completed in order to manufacture the product 302), the availability of one or more 3D printers 112 and workers 1102, and inventory levels 1208 of one or more standardized functional components 402 and 3D printing materials 1204 required to manufacture the product 302.
[0137] For example, all jobs 510 may initially be assigned a "ready" or "waiting" job status 522. When a job 510 is ready to be executed or performed, it may be assigned a "ready" job status 522. For example, when a job 510 does not require any other jobs to be completed before executing the job 510 and the necessary 3D printers 112, (one or more) 3D printing materials 1204, (one or more) standardized functional components 402, and / or (one or more) workers 1102 are available to complete the job 510, the job 510 is ready for execution.
[0138] A job 510 may be assigned a "waiting" job status 522 when the job 510 is waiting for one or more conditions to be met before the job status 522 of the job 510 can be changed to "ready". For example, the one or more conditions may include: (i) waiting for one or more other jobs to be completed first because the job order 523 specifies that the completion of these other jobs is a necessary prerequisite for the job currently being executed (e.g., a painting job cannot be performed before a masking job is first performed); (ii) waiting for a 3D printer 112 or a worker 1102 to be available; (iii) waiting for the inventory level 1208 of one or more standardized functional components 402 or 3D printing materials 1204 to be replenished.
[0139] The management server 106 can assign the ready job 530 to one or more 3D printers 112 and workers 1102. The management server 106 can add the ready job 530 to the printer job queue 702 (see Figure 8 ) to assign the ready job 530 to the 3D printer 112.
[0140] In some embodiments, the management server 106 can maintain all printer job queues 702 and transmit these printer job queues 702 to the production client devices 110 responsible for operating the 3D printers 112. For example, the management server 106 can transmit the printer job queue 702 of the 3D printer C023 to the production client device 110 that is assigned or otherwise responsible for operating the 3D printer C023 during the work shift. In other embodiments, the management server 106 can transmit the printer job queue 702 directly to the 3D printer 112.
[0141] The management server 106 can add the ready job 530 to the worker job queue 1104 of the worker 1102 (see Fig.11 ) to assign the ready job 530 to the worker 1102. The management server 106 can maintain all worker job queues 1104 and transmit each worker job queue 1104 to the production client device 110 assigned to the worker 1102 or another computing device that the worker 1102 can access.
[0142] Ready jobs 530 can be added to the printer job queue 702 or the worker job queue 1104 based on the point value associated with each ready job 530. In some embodiments, the management server 106 can calculate the point value of each ready job 530. The management server 106 can also calculate the point value of each waiting job 532.
[0143] The point value for each ready job 530 and waiting job 532 may be stored in the management database 108. In some embodiments, the point value for each ready job 530 and waiting job 532 may be hidden from the view of the worker 1102 so that the point value is not displayed as part of the inventory status page 500 or another page or dashboard screen. In other embodiments, the point value for each ready job 530 and waiting job 532 may be displayed as part of the inventory status page 500 or another page or dashboard screen and may be seen by the worker 1102.
[0144] The point values associated with the ready jobs 530 may be used to rank the ready jobs 530 relative to other ready jobs 530 (according to a point-based ranking system) to determine which ready jobs 530 are performed first by available 3D printers 112 and workers 1102 .
[0145] When the retail server 102 first receives an order 300 for a product 302, a point value for each ready job 530 may be initially assigned or appropriated. As previously described, an inventory identifier 502 may be created to identify a product 302 during the manufacturing process. The same inventory identifier 502 may also be associated with all jobs 510 that need to be performed to manufacture the product 302. The point value initially assigned or appropriated to each ready job 530 associated with the inventory identifier 502 may be a default amount (e.g., 10 points). The point value (starting from the default amount for the day the order 300 was received) may be increased by a preset amount (e.g., 1 point) periodically (e.g., at the end of each day, half day, hour, half hour, etc.) until the ready job 530 is finished or completed.
[0146] The point value of each waiting job 532 may also be initially assigned or allocated when the retail server 102 first receives an order 300 for a product 302. The point value initially assigned or allocated to each waiting job 532 associated with the inventory identifier 502 may be a default amount (e.g., 10 points) that is the same as the point value assigned or allocated to each ready job 530. The point value (starting with the default amount on the day the order 300 is received) may also be increased by a preset amount (e.g., 1 point) periodically (e.g., at the end of each day, half day, hour, half hour, etc.) until the status of the waiting job 532 changes to a ready job 530 and the ready job 530 ends or is completed. When the status of the waiting job 532 changes to a ready job 530 (e.g., when a particular 3D printer 112 becomes available, or when an out-of-stock standardized functional component 402 is replenished), the point value of each waiting job 532 may be carried over. That is, the point value accumulated by the waiting job 532 then becomes the point value of the ready job 530 that now replaces it.
[0147] In some embodiments, the ready jobs 530 associated with a particular inventory identifier 502 may be added to the printer job queue 702 of the 3D printer 112 or the worker job queue 1104 of the worker 1102 based on the point value of each ready job 530. The point values of the ready jobs 530 may be used to rank or order the ready jobs 530. This ranking or ordering of the ready jobs 530 may constitute a ranking or ordering of the printer job queue 702 or the worker job queue 1104.
[0148] This ranking or ordering of the ready jobs 530 is important because all of the 3D printers 112 and workers 1102 of the system 100 work sequentially along their printer job queues 702 and worker job queues 1104, respectively. A ready job 530 with a higher ranking (or higher point value) is executed before another ready job 530 with a lower ranking (or lower point value). Since a 3D printer 112 or worker 1102 typically does not complete all of the ready jobs 530 in their queues during their operating period or during their work shift, respectively, those ready jobs 530 that are ranked higher in the queue have a higher probability of being completed during these operating periods or during these work shifts.
[0149] As about Figure 7 and Fig.11 As discussed in more detail, the printer job queue 702 and the worker job queue 1104 can each include jobs 510 associated with multiple inventory identifiers 502 (or multiple products 302). In this sense, the ready jobs 530 associated with one inventory identifier 502 are "competing" with other ready jobs 530 associated with other inventory identifiers 502 for available resources (e.g., available 3D printers 112 and workers 1102) that may enable the ready jobs 530 to be completed.
[0150] The management server 106 can continuously adjust the printer job queue 702 and the worker job queue 1104 because new ready jobs 530 are added to these queues due to the placement of new orders 300, and the status of waiting jobs 532 is changed to ready jobs 530. In addition, the management server 106 can continuously adjust the printer job queue 702 and the worker job queue 1104 because completed jobs 524 are removed from these queues, and the status of ready jobs 530 is changed to waiting jobs 532 due to changes in circumstances.
[0151] For example, if one of the 3D printers 112 required to complete a ready job 530 becomes unavailable or is offline, the ready job 530 can change its job status 522 to a waiting job 532. Similarly, if a skilled worker 1102 required to complete a ready job 530 becomes unavailable or is absent for a period of time, the ready job 530 can change its job status 522 to a waiting job 532.
[0152] As previously described, the point value of a ready job 530 that has not yet been completed can be increased periodically (e.g., at the end of each day, half day, hour, half hour, etc.) by a preset amount (e.g., 1 point) until the ready job 530 is completed. This prevents unfinished ready jobs 530 from being stuck in the printer job queue 702 or worker job queue 1104, because older ready jobs 530 will accumulate more points and therefore will be ranked higher than newer ready jobs 530.
[0153] In some embodiments, all ready jobs 530 and waiting jobs 532 on all inventory identifiers 502 may be ranked using an overall job ranking before assigning these ready jobs 530 to specific 3D printers 112 or workers 1102. All ready jobs 530 and waiting jobs 532 on all inventory identifiers 502 may be ranked using the same point-based ranking system discussed above. Once all ready jobs 530 and waiting jobs 532 are ranked, the management server 106 may automatically assign the ready jobs 530 to all currently available 3D printers 112 and currently available workers 1102 based on the overall job ranking. In some embodiments, the ready jobs 530 that are ranked at or near the top of the overall job ranking may be assigned to the 3D printer 112 with a higher print yield percentage 802 or a higher print QA yield percentage 804 (see Figure 8 ). In some embodiments, a printer job queue 702 for each available 3D printer 112 and a worker job queue 1104 for each available worker 1102 may be generated for a set period of time (e.g., a workday or a work shift), so that the ready jobs 530 added to such printer job queues 702 and worker job queues 1104 may maintain their relative job rankings over the set period of time. At the end of the set period of time or at the beginning of a new set period of time (e.g., a workday or a work shift), the still unfinished or uncompleted ready jobs 530 and any newly added ready jobs 530 may be ranked according to the new overall job ranking, and the management server 106 may automatically assign the ready jobs 530 to all currently available 3D printers 112 and currently available workers 1102 according to the new overall job ranking.
[0154] Figure 5AIt is also shown that each order 300 can have a priority level 534 attached to the order 300. The priority level 534 can be assigned by the management server 106, the retail server 102, or a combination thereof. The priority level 534 can be assigned based on the identity or account of the customer, the order type, the order source, or a combination thereof. In some embodiments, the priority level 534 can include: (i) a default priority level 536, (ii) a high priority level 538, and (iii) a low priority level 540.
[0155] For example, orders 300 placed by VIP customers or returning customers may have a high priority level 538 assigned to such orders. Additionally, orders 300 placed for testing purposes, research and development purposes, or marketing purposes, for example, may have a lower priority level 538 attached to such orders. All other orders placed through the online retail website 303 may have a default priority level 536 attached to such orders.
[0156] An order 300 having a default priority level 536—the default priority level 536 being attached to or otherwise assigned to the order 300—may be treated as a regular order process, whereby both the ready jobs 530 and the waiting jobs 532 of the order 300 having the default priority level 536 are initially assigned or allocated the same default point value in order to rank or sort such jobs. For example, the initial default point value may be 10 points, and the initial default point value may be increased by a preset amount (e.g., 1 point) periodically (e.g., at the end of each day, half-day, hour, half-hour, etc.) until the job is finished or completed.
[0157] An order 300 with a high priority level 538—the high priority level 538 is attached to the order 300 or otherwise assigned to the order 300—may be considered an urgent or emergency order to be processed, so that both the ready jobs 530 and the waiting jobs 532 of the order 300 with the high priority level 538 are initially assigned or allocated a higher point value than the default point value in order to rank or sort such jobs. For example, the larger or higher initial point value may be 20 points, rather than the default initial point value of 10 points. In addition, the larger initial point value may be increased by a higher preset amount (e.g., 2 points) periodically (e.g., at the end of each day, half-day, hour, half-hour, etc.) until the job is finished or completed. In this way, the management server 106 sets the priority of the job 510 associated with the order 300 with the high priority level 538 to be higher than the job 510 associated with the order 300 with the default priority level 536. Furthermore, because ready jobs 530 associated with orders 300 having a high priority level 538 are typically ranked higher than ready jobs 530 associated with orders 300 having a default priority level 536, such higher priority ready jobs 530 are typically included at the top or beginning of the printer job queue 702 and the worker job queue 1104. This increases the chances that these higher priority ready jobs 530 are actually completed during operation of the 3D printer or during a worker's shift, and significantly reduces the completion time or lead time of such higher priority ready jobs 530.
[0158] An order 300 with a low priority level 540—the low priority level 540 is attached to or otherwise assigned to the order 300—can be processed with the lowest priority, so that the ready jobs 530 and waiting jobs 532 of the order 300 with the low priority level 540 are all assigned or allocated an initial point value that is lower or less than the default initial point value, so as to rank or sort such jobs. For example, the lower or less initial point value may be 5 points, rather than the default initial point value of 10 points. In addition, the lower initial point value may be increased by a lower preset amount (e.g., 0.5 points) periodically (e.g., at the end of each day, half-day, hour, half-hour, etc.) until the job is finished or completed. In this way, the management server 106 reduces the priority of the job 510 associated with the order 300 with the low priority level 540 to a lower level than the job 510 associated with the order 300 with the default priority level 536 and the high priority level 538. Furthermore, because ready jobs 530 associated with orders 300 having a low priority level 540 are typically ranked lower than ready jobs 530 associated with orders 300 having a default priority level 536, such lower priority ready jobs 530 are typically included at the bottom or end of the printer job queue 702 and the worker job queue 1104. This can increase the completion time or lead time of such lower priority ready jobs 530.
[0159] As a more specific example, the management server 106 may receive two separate orders 300 (e.g., a first order and a second order) from the retail server 102, wherein the first order has a default priority level 536 attached to or otherwise assigned to the order, and the second order has a high priority level 538 attached to or otherwise assigned to the order. The second order with the high priority level 538 may be placed by a VIP customer who has placed multiple high-value orders in the past. The management server 106 may generate a first inventory identifier to identify a first product included as part of the first order, and a second inventory identifier to identify a second product included as part of the second order. The management server 106 may then create a first set of jobs associated with the first inventory identifier and a second set of jobs associated with the second inventory identifier. The management server 106 may then prioritize the completion of the second set of jobs over the first set of jobs. For example, the management server 106 may prioritize the completion of the second set of jobs over the first set of jobs by assigning a default initial point value to each ready job in the second set of jobs, the default initial point value being greater than or higher than the default initial point value assigned to each ready job in the first set of jobs. In addition, the management server 106 may also periodically (e.g., at the end of each day, each half day, each hour, each half hour, etc.) increase the point value associated with the ready job in the second group of jobs by a preset point value that is greater than or higher than the current point value used to increase the point value associated with the ready job in the first group of jobs. By doing so, the management server 106 can ensure that the second group of jobs associated with the order with the high priority level 538 is completed before the first group of jobs associated with the order with the default priority level 536, so that the second product is manufactured before the first product, and the second order is completed before the first order.
[0160] As previously described, once the 3D printer 112 or worker 1102 has begun executing the ready job 530, the job status 522 of the job 510 can be changed to an in-progress job 526. Once the job status 522 of the ready job 530 is changed to "in-progress", the job can continue to complete (becoming a completed job 524) or fail (becoming a failed job 528). Fig.9A and 9B As discussed in more detail, a job 510 may fail for a variety of reasons. For example, a 3D print job 512 may fail due to a machine failure 902 (a failure of the 3D printer 112 executing the 3D print job 512) or a print quality failure 908. More specifically, when the final product produced by the 3D print job 512 does not pass the QA inspection (see Fig. 9B ), print quality failure 908 may occur.
[0161] The management server 106 can track job failures and completions by tracking a plurality of yield percentages, completion times, and total job failures 542. The total job failures 542 can be the total number of failed jobs 528 associated with the inventory identifier 502. The total job failures 542 can be calculated periodically or intermittently during the manufacturing process. For example, the total job failures 542 can be calculated every few seconds, every few minutes, every hour, every day, every two weeks, every week, etc. In some embodiments, the total job failures 542 can be calculated each time an in-progress job 526 becomes a failed job 528.
[0162] In some embodiments, the yield percentages may include an inventory yield percentage 544 and a component yield percentage. The component yield percentages may also include a current component yield percentage 546 and a historical component yield percentage 548.
[0163] The management server 106 can calculate the inventory yield percentage 544 by dividing the total number of completed jobs 524 associated with the inventory identifier 502 by the sum of the total number of failed jobs 528 associated with the inventory identifier 502 and the total number of completed jobs 524 (Inventory Yield Percentage = Total Number of Completed Jobs / (Total Number of Failed Jobs + Total Number of Completed Jobs)).
[0164] The inventory yield percentage 544 can be calculated periodically or intermittently during the manufacturing process. For example, the inventory yield percentage 544 can be calculated every few seconds, every few minutes, every hour, every day, every two weeks, every week, etc. In some embodiments, the inventory yield percentage 544 can be calculated each time a job 510 is completed or ends in failure. The inventory yield percentage 544 can provide real-time insights into the efficiency and effectiveness of the manufacturing process as it relates to the production of the product 302.
[0165] The management server 106 may calculate the current component yield percentage 546 by dividing the total amount of completed jobs 524 associated with the production of one of the 3D printed parts 400 of the product 302 by the sum of the total amount of failed jobs 528 associated with the production of the 3D printed part 400 and the total amount of completed jobs 524 (Current component yield percentage of 3D printed part=total amount of completed jobs associated with the production of the 3D printed part / (total amount of failed jobs associated with the production of the 3D printed part+total amount of completed jobs)). The current component yield percentage 546 may be calculated periodically or intermittently during the process of manufacturing the 3D printed part 400. For example, the current component yield percentage 546 may be calculated every few seconds, every few minutes, every hour, every day, every two weeks, every week, etc. In some embodiments, the current component yield percentage 546 may be calculated each time a job 510 associated with the production of the 3D printed part 400 is completed or ends in failure. The current component yield percentage 546 may provide real-time insights into the efficiency and effectiveness of the current manufacturing process as it relates to the production of that particular 3D printed part 400.
[0166] The management server 106 may calculate the historical component yield percentage 548 by dividing the total amount of completed jobs 524 associated with the production of all instances of the 3D printed component 400 on the plurality of orders 300 by the sum of the total amount of failed jobs 528 associated with all instances of the 3D printed component 400 on the plurality of orders 300 and the total amount of completed jobs 524 (Historical component yield percentage of 3D printed component = total amount of completed jobs associated with the production of all instances of the 3D printed component / (total amount of failed jobs associated with the production of all instances of the 3D printed component + total amount of completed jobs)). The historical component yield percentage 548 may be calculated periodically or intermittently. For example, the historical component yield percentage 548 may be calculated every few seconds, every few minutes, every hour, every day, every two weeks, every week, etc. In some embodiments, the historical component yield percentage 548 may be calculated each time a job 510 associated with the production of a particular 3D printed component 400 is completed or ends in failure. Historical part yield percentage 546 may provide historical or long-term insight into the efficiency and effectiveness of the manufacturing process as it relates to the general production of 3D printed parts 400 .
[0167] The management server 106 can calculate and track the inventory yield percentage 544 immediately upon the start of the job 510 associated with the inventory identifier 502. The management server 106 can store the calculated inventory yield percentage 544 in the management database 108. The management server 106 can display the calculated latest inventory yield percentage 544 to the administrator or one or more workers 1102 through the inventory status page 500.
[0168] Once a job 510 associated with a 3D printed part 400 for a product 302 is started, the management server 106 can calculate and track a plurality of current part yield percentages 546. The management server 106 can store the calculated current part yield percentages 546 in the management database 108. The management server 106 can display the calculated latest current part yield percentages 546 to an administrator or one or more workers 1102 via the inventory status page 500.
[0169] The management server 106 may also track multiple completion times, including inventory completion time 550 and various component completion times. The inventory completion time 550 may be the amount of time that has passed since a customer placed an order 300 for a product 302 or since the management server 106 first received the order 300. The management server 106 may stop tracking the inventory completion time 550 when the product 302 has been manufactured and packaged for shipping.
[0170] Management server 106 may also track part completion times for various 3D printed parts 400. Part completion time may be the amount of time that passes from when a customer places an order 300 for product 302 or when management server 106 first receives an order 300 until the 3D printed part 400 is manufactured. Management server 106 may track part completion time for each 3D printed part 400.
[0171] The management server 106 can store the inventory completion time 550 and the individual component completion time in the management database 108. The management server 106 can display the inventory completion time 550 and the individual component completion time to the administrator or one or more workers 1102 through the inventory status page 500.
[0172] The management server 106 may also calculate and track an inventory completion percentage 552 and various component completion percentages. The management server 106 may calculate the inventory completion percentage 552 by dividing the number of completed jobs 524 by the total number of jobs 510 initially created to manufacture the product 302. The denominator of this calculation does not include any duplicate jobs 608 or failed jobs 528, but only includes the total number of jobs 510 initially created to manufacture the product 302 (assuming that all such jobs 510 have been successfully completed). The management server 106 may calculate the component completion percentage for each 3D printed part 400 of the product 302. The management server 106 may calculate the component completion percentage by dividing the number of completed jobs 524 for a particular 3D printed part 400 by the total number of jobs 510 initially created to manufacture the 3D printed part 400. The denominator of this calculation does not include any duplicate jobs 608 or failed jobs 528, but only includes the total number of jobs 510 initially created to manufacture the 3D printed part 400 (assuming that all such jobs 510 have been successfully completed). Once a job 510 associated with an inventory identifier 502 or a 3D printed part 400 is completed, the management server 106 may calculate and track an inventory completion percentage 552 and various part completion percentages.
[0173] The management server 106 can store the inventory completion percentage 552 and various component completion percentages in the management database 108. The management server 106 can display the inventory completion percentage 552 and various component completion percentages to an administrator or one or more workers 1102 through the inventory status page 500.
[0174] The management server 106 can be programmed to track: (i) inventory yield percentage 544, (ii) current part yield percentage 546, (iii) inventory completion time 550, (iv) part completion time, (v) inventory completion percentage 552, (vi) part completion percentage, (vii) total job failure 542 number, or a combination thereof to ensure timely production or manufacturing of product 302.
[0175] In addition, the management server 106 may be programmed to take certain actions or proactive steps if either the inventory yield percentage 544 or the current component yield percentage 546 drops below or remains below a preset minimum threshold percentage. In addition, the management server 106 may be programmed to take certain actions or proactive steps if either the inventory completion time 550 or the component completion time exceeds a preset maximum threshold time. In addition, the management server 106 may be programmed to take certain actions or proactive steps if either the inventory completion time 550 or the component completion time exceeds a preset maximum threshold time and either the inventory yield percentage 544 or the current component yield percentage 546 drops below or is falling below a preset minimum threshold percentage. That is, the management server 106 may be programmed to take certain actions or proactive steps if a certain amount of time has passed since the order 300 arrived and either the inventory yield percentage 544 or the current component yield percentage 546 still drops below or is falling below a preset minimum threshold percentage.
[0176] In addition, the management server 106 may also be programmed to take certain actions or proactive steps if either the inventory completion time 550 or the part completion time exceeds a preset maximum threshold time, and either the inventory completion percentage 552 or the part completion percentage still drops below or is falling below the current minimum threshold percentage. In some embodiments, the management server 106 may also be programmed to take certain actions or proactive steps if the total job failures 542 associated with the inventory identifier 502 exceeds a total job failure threshold.
[0177] For example, the management server 106 may be programmed to take certain actions or proactive steps if: (i) the inventory yield percentage 544 drops below or is falling below a minimum inventory yield threshold percentage (e.g., 40% of 50%); (ii) any of the current component yield percentages 546 drops below or is falling below a minimum current component yield threshold percentage (e.g., 40% or 50%); (iii) the inventory completion time 550 exceeds a maximum inventory completion threshold time (e.g., 30 days or 60 days); (iv) any of the component completion times exceeds a maximum component completion threshold time (e.g., 20 days or 40 days); (v) the inventory completion percentage 552 drops below or is falling below a minimum inventory completion threshold percentage after a minimum amount of time has passed (e.g., 30 days or 60 days); (vi) any of the component completion percentages drops below or is falling below a minimum component completion threshold percentage after a minimum amount of time has passed (e.g., 30 days or 60 days); (vii) the number of total job failures 542 exceeds a total job failure threshold, or a combination thereof.
[0178] In some embodiments, the action or proactive step taken by the management server 106 may involve adjusting one or more printer job queues 702 or worker job queues 1104 so that one of the ready jobs 530 associated with the inventory identifier 502 moves up in the one or more printer job queues 702 or worker job queues 1104. That is, the management server 106 may be programmed to adjust the printer job queue 702 of one of the 3D printers 112 and the worker job queue 1104 of one of the workers 1102 so that one of the ready jobs 530 associated with the inventory identifier 502 moves up in the printer job queue 702 or the worker job queue 1104, based on at least one of the inventory yield percentage 544, the current part yield percentage 546, the inventory completion time 550, the part completion time, the inventory completion percentage 552, the part completion percentage, and the total job failures 542.
[0179] The management server 106 may be programmed to adjust the printer job queue 702 of one of the 3D printers 112 and the worker job queue 1104 of one of the workers 1102 by adjusting the point values of all ready jobs 530 (and, in some cases, waiting jobs 532) associated with the inventory identifier 502 or associated with one of the 3D print parts 400. For example, the management server 106 may be programmed to increase or raise the point values of all ready jobs 532 (and, in some cases, waiting jobs 532) associated with the inventory identifier 502 if: (i) the inventory yield percentage 544 drops below or is falling below an inventory yield minimum threshold percentage, (ii) the inventory completion time 550 exceeds an inventory completion maximum threshold time, (iii) the inventory completion percentage 552 drops below or is falling below an inventory completion minimum threshold percentage after a minimum amount of time has elapsed, (iv) the total job failure 542 number exceeds a total job failure threshold, or a combination thereof. In addition, for example, the management server 106 can be programmed to increase or raise the point value of all ready jobs 532 (and in some cases, waiting jobs 532) associated with the 3D printed part 400 if: (i) the current part yield percentage 546 of the part 400 drops below or is falling below the current part yield minimum threshold percentage, (ii) the part completion time of the part 400 exceeds the part completion maximum threshold time, (iii) the part completion percentage of the part 400 drops below or is falling below the part completion minimum threshold percentage after a minimum amount of time has elapsed, or a combination thereof. As a more specific example, the management server 106 can be programmed to increase or raise the point value of all ready jobs 532 (and in some cases, waiting jobs 532) associated with the inventory identifier 502 by adding additional points to the current point value, multiplying the current point value by a preset amount, or squaring the current point value.
[0180] For example, the management server 106 can be programmed to adjust the printer job queue 702 of one of the 3D printers 112 or the worker job queue 1104 of one of the workers 1102 by adding points (e.g., 10 points) to the current point values of all ready jobs 530 and waiting jobs 532 associated with the inventory identifier 502 if the inventory completion time 550 exceeds 60 days and the inventory yield percentage 544 drops below or is falling below 40%.
[0181] A technical problem faced by the applicant is how to ensure that 3D printed products are produced on time and that any delays due to job failures or inventory shortages do not have a significant impact on production lead time. A technical solution discovered and developed by the applicant is to calculate and track the inventory yield percentage, inventory completion time, inventory completion percentage, and total job failures associated with inventory identifiers, and calculate and track the component yield percentage, component competition time, and component completion percentage associated with all parts of the product throughout the manufacturing process. Certain rules or conditions can be set so that if any yield percentage or completion percentage drops below a minimum threshold percentage, or any completion time exceeds a maximum threshold time, the job associated with a specific inventory identifier or a specific 3D printed part can be moved up in the queue of the assigned 3D printer or worker to ensure that such job is not further delayed.
[0182] Figure 6 An example page of a job panel 600 is shown. The job panel 600 can provide a real-time overview or snapshot of the status of all jobs 510 created by the management server 106 due to orders 300 placed by customers. The job panel 600 can be presented on a display of a computing device, such as one of the production client devices 110 or a device used by a foreman or manager to monitor the 3D printing-based manufacturing process. In some embodiments, the job panel 600 can be accessed through a web browser. In other embodiments, the job panel 600 can be accessed through a downloadable desktop or mobile software application.
[0183] The job dashboard 600 may be generated and continuously updated by the management server 106. The job dashboard 600 may be one of several panel screens, dashboard screens, graphical user interface (GUI) screens provided as part of an online management panel or portal.
[0184] As previously described, the job panel 600 may provide a real-time overview of the status of all jobs 510, including in-progress jobs 526, ready jobs 530, waiting jobs 532, completed jobs 524, and failed jobs 528. The job panel 600 may allow a user (e.g., a worker 1102 or an administrator) to search for a specific job 510 or filter the jobs 510 displayed by job type 602 (e.g., 3D printing job 512, finishing job 514, assembly job 516, QA job 518, or packaging job 520), job status 522, manufacturing step or stage 604 (e.g., printing stage, finishing stage, QA stage, assembly stage, or packaging stage), product name, the 3D printer 112 assigned to the job (if any), and inventory identifier 502.
[0185] The job panel 600 may also allow a user (eg, worker 1102 or administrator) to sort the jobs 510 by their priority level 534 via a sorting function 606. For example, the sorting function 606 may allow a user to search or filter for high priority jobs.
[0186] The sorting function 606 may also allow the user to sort the jobs 510 according to a point-based ranking system such that jobs 510 with higher point values (e.g., ready jobs 530 and waiting jobs 532) are ranked before other jobs 510 with lower point values. As previously described, the management server 106 may rank or sort the jobs 510 using a point-based ranking system such that those jobs 510 with higher point values are more likely to be executed or performed by the 3D printer 112 or worker 1102 before other jobs 510 with lower point values.
[0187] Figure 6 It is also shown that the job panel 600 can also display one or more duplicate jobs 608. Jobs 510 can be duplicated for various reasons. For example, failed jobs 528 can be duplicated to ensure that failed jobs 528 are still retained by the system 100 and tried again.
[0188] The management server 106 may be programmed to automatically duplicate the failed job 528 by creating a duplicate job 608. The duplicate job 608 may be associated with the same inventory identifier 502 as the failed job 528. Once the in-progress job 526 is marked as failed by the production client device 110, the 3D printer 112, or a combination thereof, the management server 106 may automatically duplicate the failed job 528 (by creating the duplicate job 608).
[0189] The replication job 608 may be assigned a job status 522 similar to any job 510 initially created by the management server 106. For example, the replication job 608 may be initially assigned a job status 522 of "ready" or "waiting". The replication job 608 may then be automatically assigned to a 3D printer 112, a worker 1102, or a combination thereof. When a 3D printer 112 or a worker 1102 initiates a replication job 608 with a job status 522 of "ready", the replication job 608 may have its status changed to "in progress". An "in progress" replication job 608 may end in failure (i.e., fail again) or be completed.
[0190] In some embodiments, the same point value assigned to a ready job 530 that ultimately causes a failure (or becomes a failed job 528) can be automatically assigned to a duplicate job 608 so that the duplicate job 608 retains the same point-based ranking and is started or executed as quickly as possible. In addition, all failed jobs 528 are tracked as part of the calculation of the inventory yield percentage 544, any applicable current component yield percentage 546, any applicable historical component yield percentage 548, and the total job failures 542.
[0191] For example, the management server 106 may be programmed to factor the results of all the replicated jobs 608 into any calculation of the inventory yield percentage 544. Furthermore, the management server 106 may be programmed to factor the results of all the replicated jobs 608 into any calculation of the current part yield percentage 546 or the historical part yield percentage 548 for a particular 3D printed part 400 when the replicated jobs 608 are needed to manufacture the particular 3D printed part 400. As a more specific example, a product 302 currently being manufactured may have a current inventory yield percentage 544 of 80% due to 8 completed jobs 524 and 2 failed jobs 528 associated with the manufacture of the product 302. In this example, one of the failed jobs 528 may be replicated and experience failure again (i.e., the replicated job 608 fails). In this scenario, the current inventory yield percentage 544 for the product 302 may now be reduced to 72.7% (or 8 completed jobs / (8 completed jobs + 3 failed jobs)).
[0192] One technical problem faced by the applicant is how to handle failed jobs (e.g., failed 3D printing jobs) during the manufacturing process, and how to incorporate these failures into decisions about how products are manufactured in the short and long term. One technical solution discovered and developed by the applicant is to immediately replicate the failed job as a duplicate job, and factor the failed job (and the results of the duplicate job) into certain yield percentage calculations, which can then be used to decide whether the job associated with the product should be prioritized over other jobs, and whether the product (or part of the product) should be re-engineered or re-designed in the future.
[0193] In some embodiments, the management server 106 may be configured to generate a component yield percentage based on the historical component yield percentage 548 (see Figure 5A ) pre-copied certain jobs 510 (or all jobs 510) associated with a particular 3D printed part 400. As previously described, the historical part yield percentage 548 may take into account all completed jobs 524 and all failed jobs 528 associated with the manufacture of a particular 3D printed part 400 over a period of time and across multiple inventory identifiers 502. Such pre-copied jobs 610 may be created when the historical part yield percentage 548 is below a preset historical part yield threshold percentage. When the historical part yield percentage 548 of a particular 3D printed part 400 is below the historical part yield threshold percentage, this indicates that the 3D printed part 400 may be difficult to manufacture and that one or more jobs 510 required to produce the 3D printed part 400 may be prone to failure. For this reason, the management server 106 may create one or more pre-copied jobs 610 in order to manufacture two or more versions of the 3D printed part 400 to account for these potential failures.
[0194] like Figure 6 As shown in , pre-copied jobs 610 can be performed simultaneously with "original" jobs. For example, the management server 106 can initially create a series of jobs 510 to produce a base assembly for a floor lamp. In this example, the historical component yield percentage 548 of this base assembly can be lower than a preset historical component yield threshold percentage (e.g., 40%), so the management server 106 also creates a series of pre-copied jobs 610 in case any of the "original" jobs 510 fail.
[0195] In some embodiments, the pre-copied job 610 can be created simultaneously or contemporaneously with the original job 510. In other embodiments, the pre-copied job 610 can be created after the original job 510 is created but before any job failure occurs.
[0196] One technical problem faced by the Applicant is how to ensure that products with parts that are difficult to 3D print and prone to printing failure (which are often parts that affect the aesthetics of such products) are not disadvantaged in terms of how long it takes to manufacture such products. One technical solution discovered and developed by the Applicant is to pre-duplicate certain jobs (e.g., 3D printing jobs) required to manufacture the part based on the historical part yield percentage of the part. This ensures that even if the "original" job fails, at least one of the duplicate jobs will succeed and allow the manufacturing process to continue.
[0197] The management server 106 may also be programmed to designate or flag a particular 3D printed part 400 for further engineering or reengineering when the historical part yield percentage 548 of the particular 3D printed part 400 drops below a preset or predetermined historical part yield threshold percentage (e.g., 30% or 20%). For example, when the historical part yield percentage 548 of a particular 3D printed part 400 drops below a preset or predetermined historical part yield threshold percentage, this may indicate that the particular 3D printed part 400 is too difficult to manufacture based on the manner in which the 3D printed part 400 was designed or engineered, and further design or engineering of the 3D printed part 400 is needed to improve the current part yield percentage 546 and the historical part yield percentage 548 of the 3D printed part 400.
[0198] In some embodiments, the management server 106 may also be programmed to track a SKU yield percentage calculated based on the number of failed jobs 528 and the number of completed jobs 524 associated with the SKU identifier 506 (see Figure 5A ). The management server 106 can also be programmed to track SKU yield percentages over multiple orders 300 or over a set time period. As previously described, a SKU identifier 506 can be used to identify all product instances of a particular product color 304 and product size 306 (e.g., all medium ABC floor lamps in red). One SKU identifier 506 can be associated with multiple inventory identifiers 502.
[0199] The management server 106 can be programmed to calculate the SKU yield percentage by dividing the total number of completed jobs 524 associated with the SKU identifier 506 by the sum of the total number of failed jobs 528 associated with the SKU identifier 506 and the total number of completed jobs 524 (SKU yield percentage = total number of completed jobs associated with the SKU / (total number of failed jobs associated with the SKU+total number of completed jobs associated with the SKU). The SKU yield percentage can be calculated periodically or intermittently.
[0200] In some embodiments, a SKU yield percentage may be calculated each time a job 510 associated with a SKU identifier 506 is completed or ends in failure. The SKU yield percentage may provide real-time insights into the efficiency and effectiveness of the manufacturing process as it relates to the products 302 belonging to the SKU (e.g., all medium ABC floor lamps in red).
[0201] The SKU yield percentage may accurately indicate how much labor (e.g., man-hours) and other resources (e.g., 3D printer time, 3D printing materials, etc.) were actually spent over a period of time and across multiple orders to manufacture instances of product 302. More specifically, when the SKU yield percentage is low or below certain percentage thresholds, this may indicate that a significant amount of labor and other resources were wasted in manufacturing instances of product 302.
[0202] Thus, the management server 106 may be programmed to adjust the product price 308 of the product 302 based on the SKU yield percentage (see Figure 3 )(if the product 302 belongs to a SKU identifier 506 for tracking SKU yield percentages. For example, when the SKU yield percentage drops below or is falling below a SKU yield threshold (e.g., when the SKU yield percentage drops below 60%, 50%, or 40%), the management server 106 can increase the product price 308 of the product 302.
[0203] In some embodiments, when the SKU yield percentage exceeds or is above the SKU yield threshold, the management server 106 may also reduce the product price 308 of the product 302. When the SKU yield percentage exceeds or is above the SKU yield threshold, this may indicate that the manufacturing process is efficient and these efficiencies may be passed on to customers in the form of price reductions.
[0204] In some embodiments, the management server 106 may also be programmed to track a product category yield percentage calculated based on the number of failed jobs 528 and the number of completed jobs 524 associated with the product category 508 (see Figure 5A ). The management server 106 can also be programmed to track product category yield percentages over multiple orders 300 or a set period of time. As previously described, product category 508 can refer to a general classification of products 302 without regard to product color 304 or product size 306 (e.g., all ABC floor lamps).
[0205] The management server 106 can be programmed to calculate the product category yield percentage by dividing the total number of completed jobs 524 associated with the product category 508 by the sum of the total number of failed jobs 528 associated with the product category 508 and the total number of completed jobs 524 (product category yield percentage = total number of completed jobs associated with the product category / (total number of failed jobs associated with the product category+total number of completed jobs associated with the product category). The product category yield percentage can be calculated periodically or intermittently.
[0206] In some embodiments, a product category yield percentage may be calculated each time a job 510 associated with a product category 508 is completed or ends in failure. The product category yield percentage may provide real-time insight into the efficiency and effectiveness of the manufacturing process as it relates to all products 302 (e.g., all ABC floor lamps) belonging to that product category.
[0207] The product category yield percentage may accurately indicate how much labor (e.g., man-hours) and other resources (e.g., 3D printer time, 3D printing materials, etc.) are actually consumed to manufacture products 302 belonging to product category 508. More specifically, when the product category yield percentage is low or below certain percentage thresholds, this may indicate that a lot of labor and other resources are wasted in order to manufacture such products 302.
[0208] Thus, the management server 106 may be programmed to adjust the product prices 308 of all products 302 belonging to the product category 508 based on the product category yield percentage (see Figure 3 For example, when the product category yield percentage drops below or is falling below a product category yield threshold (e.g., when the product category yield percentage drops below 60%, 50%, or 40%), the management server 106 can increase the product price 308 of all products 302 belonging to the product category 508.
[0209] In some embodiments, when the product category yield percentage exceeds or is above the product category yield threshold, the management server 106 may also reduce the product price 308 of the product 302 belonging to the product category 508. When the product category yield percentage exceeds or is above the product category yield threshold, this may indicate that the manufacturing process is efficient and these efficiencies may be passed on to customers in the form of price reductions.
[0210] In some embodiments, the management server 106 may transmit instructions or commands to the retail server 102 to adjust (e.g., increase or decrease) the product price(s) 308 of the (one or more) products 302. In other embodiments, the management server 106 may directly access the retail database 104 to adjust (e.g., increase or decrease) the product price(s) 308 of the (one or more) products 302.
[0211] In some embodiments, the management server 106 may be programmed to remove products 302 associated with a particular SKU identifier 502 from the online retail website 303 when the SKU yield percentage drops below a minimum SKU yield threshold percentage. In these and other embodiments, the management server 106 may be programmed to remove all products 302 belonging to a product category 508 from the online retail website 303 when the product category yield percentage drops below a minimum product category yield threshold percentage. This may be performed, for example, to allow for reengineering or redesign of the product(s) 302 for manufacturing purposes.
[0212] In some embodiments, the management server 106 may send instructions or commands to the retail server 102 to remove one or more products 302 from the online retail website 303. In other embodiments, the management server 106 may directly access the retail database 104 to remove one or more products 302 from the online retail website 303.
[0213] A technical problem faced by applicants is how to accurately price high-quality 3D printed products that are manufactured on demand and take into account the actual costs (both in terms of labor and materials) of manufacturing the product. One technical solution discovered and developed by applicants is to dynamically set the price of 3D printed products so that the price accurately reflects the inefficiencies (or efficiencies) associated with the manufacturing process. For example, the price of a 3D printed product can be adjusted based on certain yield percentages calculated across multiple orders. As a more specific example, the yield percentage can include a SKU yield percentage or a product category yield percentage. When the SKU yield percentage drops below a minimum SKU yield threshold percentage or the product category yield percentage drops below a minimum product category yield threshold percentage, the price of the 3D printed product can be increased.
[0214] Figure 7 One embodiment of a printer status page 700 is shown. The printer status page 700 may provide a real-time overview or snapshot of the current status of one of the 3D printers 112. Figure 7 An example printer status page 700 for one of the 3D printers 112 is shown, but the present disclosure contemplates that each 3D printer 112 may have its own printer status page 700 .
[0215] The printer status page 700 can be presented on a display of a computing device, such as one of the production client devices 110 or a device used by a foreman or manager to monitor the 3D printing-based manufacturing process. In some embodiments, the printer status page 700 can be accessed through a web browser. In other embodiments, the printer status page 700 can be accessed through a downloadable desktop or mobile software application.
[0216] The printer status page 700 may be generated and continuously updated by the management server 106. The printer status page 700 may be one of a number of pages or GUI screens provided as part of an online management panel or portal.
[0217] Figure 7 It is shown that the print status page 700 can display a portion of a printer job queue 702 for the 3D printer 112. As previously described, the management server 106 can be programmed to generate and maintain the printer job queue 702. The printer job queues 702 for all 3D printers 112 can be stored as part of the management database 108.
[0218] In some embodiments, the management server 106 can be programmed to transmit the printer job queue 702 to the production client device 110 responsible for operating the 3D printer 112. In these embodiments, the management server 106 can be programmed to continuously or periodically update the printer job queue 702 and transmit the updated instance of the printer job queue 702 to the production client device 110.
[0219] In other embodiments, the management server 106 may be programmed to transmit the printer job queue 702 directly to the 3D printer 112. In these embodiments, the management server 106 may be programmed to continuously or periodically update the printer job queue 702 and transmit updated instances of the printer job queue 702 directly to the 3D printer 112.
[0220] Management server 106 may also be programmed to assign ready jobs 530 (ready 3D print jobs 512) to 3D printers 112 by adding ready jobs 530 to printer job queue 702. As previously described, ready jobs 530 may be added to printer job queue 702 according to a point value associated with each ready job 530.
[0221] As previously described, the point values associated with the ready jobs 530 may be used to order the ready jobs 530 relative to other ready jobs 530 to determine which ready jobs 530 from the printer job queue 702 are executed first by the 3D printer 112 .
[0222] When the retail server 102 first receives an order 300 that requires a ready job 530, a point value may be initially allocated or appropriated for the ready job 530. The point value initially allocated or appropriated to the ready job 530 may be a default amount (e.g., 10 points). The point value (starting with the default amount on the day the order 300 is received) may be increased by a preset amount (e.g., 1 point) periodically (e.g., at the end of each day, half day, hour, half hour, etc.) until the 3D printer 112 executes and successfully completes the ready job 530.
[0223] As previously described, some ready jobs 530 may be created in conjunction with order(s) 300 having a priority level 534 (e.g., a high priority level 538 or a low priority level 540). For example, orders 300 placed by VIP customers or returning customers may have a high priority level 538 assigned to such orders 300. Additionally, for example, orders 300 placed for testing purposes, research and development purposes, or marketing purposes may have a low priority level 538 assigned to such orders.
[0224] An order 300 with a high priority level 538 attached to or otherwise assigned to an order 300 may be considered an urgent or emergency order to be processed, such that a ready job 530 associated with that order 300 may be initially assigned or allocated a higher point value than the default point value in order to rank or sort such ready job 530. Additionally, the larger initial point value may be periodically increased by a higher preset amount until the job is finished or completed. In this way, the management server 106 may be programmed to prioritize such ready jobs 530 over other jobs. This significantly reduces the completion time or lead time of such high priority ready jobs 530.
[0225] In some embodiments, waiting jobs 532 may also be added to the printer job queue 702. In these embodiments, waiting jobs 532 may be added to the printer job queue 702, but hidden so that the waiting jobs 532 are not visible until the job status 522 of these jobs changes to "ready". As previously described, waiting jobs 532 may also be assigned or allocated point values. The point value (starting from a default amount on the day the order 300 is received) may also be increased by a preset amount (e.g., 1 point) periodically. When the status of the waiting jobs 532 changes to ready jobs 530, the point value of each waiting job 532 may be carried over.
[0226] The point value of each waiting job 532 may also be initially allocated or appropriated when the retail server 102 first receives an order 300 for a product 302. The point value initially allocated or appropriated to each waiting job 532 associated with the inventory identifier 502 may have the same default amount (e.g., 10 points) as the point value allocated or appropriated to each ready job 530. The point value (starting with the default amount on the day the order 300 is received) may also be increased by a preset amount (e.g., 1 point) periodically (e.g., at the end of each day, half day, hour, half hour, etc.) until the status of the waiting job 532 changes to a ready job 530 and the ready job 530 ends or is completed. When the status of the waiting job 532 changes to a ready job 530 (e.g., when a particular 3D printer 112 becomes available, or when an out-of-stock standardized functional component 402 is replenished), the point value of each waiting job 532 may be carried over. That is, the same point value accumulated by the waiting job 532 subsequently becomes the point value of the ready job 530 that now replaces it.
[0227] In some embodiments, the point value for each ready job 530 and waiting job 532 may be hidden from view so that the point value is not displayed as part of any printer status page 700 .
[0228] The printer job queue 702 may include ready jobs 530 (ready 3D print jobs 512) associated with multiple inventory identifiers 502 (or multiple products 302). In this sense, the ready jobs 530 associated with one inventory identifier 502 "compete" for the services of the 3D printer 112 with other ready jobs 530 associated with other inventory identifiers 502. In addition, because new ready jobs 530 may be added to the printer job queue 702 before the 3D printer 112 can complete the ready jobs 530 currently in its printer job queue 702, those ready jobs 530 that are ranked higher in the printer job queue 702 will have a greater chance of being completed more quickly.
[0229] The management server 106 can be programmed to continuously adjust the printer job queue 702 due to the following reasons: new ready jobs 530 are created due to new incoming orders 300 (including any new high priority ready jobs 530), the status of waiting jobs 532 is changed to ready jobs 530, the status of ready jobs 530 is changed to waiting jobs 532 due to changes in circumstances (e.g., 3D printing materials or other inventory becomes unavailable, etc.), some ready jobs 530 are successfully completed, and some ready jobs 530 fail and are copied as copy jobs 608.
[0230] In addition, as previously described, the management server 106 can also be programmed to adjust the printer job queue 702 of the 3D printer 112 by improving the ranking or order of one or more ready jobs 530 in the printer job queue 702 due to at least one of the following: inventory completion time 550, part completion time, inventory yield percentage 544, current part yield percentage 546, inventory completion percentage 552, part completion percentage, and the number of total job failures 542.
[0231] For example, the management server 106 may be programmed to increase or raise the point values of all ready jobs 532 (and in some cases waiting jobs 532) associated with the inventory identifier 502 in the following circumstances: (i) if the inventory yield percentage 544 associated with the inventory identifier 520 drops below or is falling below a minimum inventory yield threshold percentage, (ii) if the applicable current part yield percentage 546 drops below or is falling below a current part yield minimum threshold percentage, (iii) if the inventory completion time 550 exceeds a maximum inventory completion time, (iv) if the applicable part completion time exceeds a maximum part completion time, (v) if the inventory completion percentage 552 drops below or is falling below a minimum inventory completion percentage after a minimum amount of time has elapsed, (vi) if the applicable part completion percentage drops below or is falling below a minimum part completion percentage after a minimum amount of time has elapsed, (vii) if the total job failure 542 number exceeds a total job failure threshold, or a combination thereof. The management server 106 can be programmed to increase or raise the point value of these ready jobs 532 (and in some cases waiting jobs 532) associated with the inventory identifier 502 by adding additional points to the current point value, multiplying the current point value by a preset amount, or squaring the current point value.
[0232] In some embodiments, when a ready job 530 is manually initiated by a worker 1102 assigned to a 3D printer 112, the ready job 530 that appears first or at the top of the printer job queue 702 may have its job status 522 changed from "ready" to "in progress." For example, the worker 1102 may connect or otherwise communicatively couple the production client device 110 to the 3D printer 112 to transmit certain machine-readable instructions 704 (e.g., G-code instructions) to the 3D printer 112. The 3D printer 112 may then execute the machine-readable instructions 704 to 3D print the part 400.
[0233] In other embodiments, when a ready job 530 is automatically started by the 3D printer 112, the ready job 530 that appears first on the printer job queue 702 or at the top of the printer job queue 702 may have its job status 522 changed from “ready” to “in progress.” For example, the 3D printer 112 may automatically start the ready jobs 530 included in its printer job queue 702 by executing machine-readable instructions 704 (e.g., G-code instructions) associated with such ready jobs 530. For example, the management server 106 may be programmed to transmit any machine-readable instructions 704 associated with the ready job 530 to the 3D printer 112 at the same time as the management server 106 adds the ready job 530 to the printer job queue 702 of the 3D printer 112.
[0234] Once the 3D printer 112 begins executing the ready job 530 (i.e., the job status 522 changes to "in progress"), the job can continue to complete or fail. If the in progress job 526 continues to complete, the job status 522 changes to a completed job 524. If the in progress job 526 fails, the job status 522 changes to a failed job 528.
[0235] As about Fig.9A and 9B As discussed in more detail, the 3D print job 512 may be caused by a machine failure 902 (a failure of the 3D printer 112 executing the 3D print job 512, see Fig.9A ), print quality failure 908 (a failure of the final product caused by the 3D print job 512 not passing the QA check, see Fig. 9B ) or a combination thereof. 3D printing job 512 is considered complete when part 400 has been 3D printed and the completed 3D printed part 400 has passed QA inspection.
[0236] When a 3D print job 512 fails due to a machine failure 902, the 3D printer 112 and / or a production client device 110 communicatively coupled to the 3D printer 112 may send a job failure notification to the management server 106. For example, a worker 1102 may notice that an ongoing 3D print job 512 has stopped prematurely due to a failure of one of the components of the 3D printer 112 (e.g., a loose or bent carriage of the 3D printer 112), in which case the worker 1102 may apply one or more user inputs to a job status page or another page of the management panel (e.g., via a production client device 110 carried by the worker 1102) to indicate that the particular 3D print job 512 has failed.
[0237] When a 3D print job 512 fails due to a print quality failure 908 , a worker 1102 assigned to QA inspection of the 3D printed part 400 may apply one or more user inputs to the job status page or another page of the management panel to indicate that this particular 3D print job 512 has failed.
[0238] The management server 106 may be programmed to track the number of failed jobs 528 executed by the 3D printer 112. In some embodiments, the management server 106 may be programmed to track the number of consecutive failed jobs 706. The management server 106 may also be programmed to take certain actions with respect to the 3D printer 112 based on the number of consecutive failed jobs 706 (i.e., the number of consecutive 3D print jobs 512 executed by the 3D printer 112 that ended in failure). For example, the management server 106 may be programmed to take certain actions with respect to the 3D printer 112 when the number of consecutive failed jobs 706 exceeds a threshold amount.
[0239] In some embodiments, the management server 106 may be programmed to automatically take the 3D printer 112 offline or remove the 3D printer 112 from the pool of available 3D printers based on the number of consecutive failed jobs 706. For example, the management server 106 may be programmed to automatically take the 3D printer 112 offline or remove the 3D printer 112 from the pool of available 3D printers when the number of consecutive failed jobs 706 exceeds two (i.e., when the 3D printer 112 has three consecutive failed jobs). Applicants have discovered that when a 3D printer 112 has failed three consecutive jobs (including three consecutive print quality failures 908), there is a high probability that the 3D printer 112 will fail in its next job if the 3D printer 112 does not undergo maintenance or diagnosis. The management server 106 may be programmed to automatically take the 3D printer 112 offline or remove the 3D printer 112 from the pool of available 3D printers when the number of consecutive failed jobs 706 caused by print quality failures 908 exceeds two (i.e., when the 3D printer 112 has three consecutive print quality failures 908).
[0240] In other embodiments, the management server 106 may be programmed to automatically take the 3D printer 112 offline or remove the 3D printer 112 from the pool of available 3D printers when the number of consecutive failed jobs 706 caused by a machine failure 902 exceeds two.
[0241] Any 3D printer 112 that has been offline can be designated for maintenance or diagnostic testing. The 3D printer 112 can remain offline or unavailable until the necessary maintenance or diagnostic testing is performed.
[0242] In all such embodiments, when a 3D printer 112 is offline or removed from the pool of available 3D printers, the management server 106 does not assign any further 3D print jobs 512 to this 3D printer 112. In addition, when a 3D printer 112 is offline, the management server 106 can automatically reassign the ready jobs 530 (and waiting jobs 532) assigned to this 3D printer 112 to the currently available 3D printers 112. Then, those ready jobs 530 (and waiting jobs 532) can be automatically added to the printer job queues 702 of those available 3D printers 112. When the ready jobs 530 (and waiting jobs 532) are ranked against those jobs previously included in the printer job queues 702 of the available 3D printers 112, those ready jobs 530 (and waiting jobs 532) can retain their point values.
[0243] Figure 8 One embodiment of a printer dashboard page 800 is shown. The printer dashboard page 800 may provide real-time performance metrics or data about all 3D printers 112. For example, the printer dashboard page 800 may allow a worker 1102 or an administrator of the system 100 to determine whether certain 3D printers 112 should be taken offline or designated for repair or maintenance.
[0244] The printer dashboard page 800 can be presented on a display of a computing device, such as one of the production client devices 110 or a device used by a foreman or manager to monitor the 3D printing-based manufacturing process. In some embodiments, the printer dashboard page 800 can be accessed through a web browser. In other embodiments, the printer dashboard page 800 can be accessed through a downloadable desktop or mobile software application.
[0245] The printer dashboard page 800 may be generated and continuously updated by the management server 106. The printer dashboard page 800 may be one of a plurality of panel screens, dashboard screens, graphical user interface (GUI) screens provided as part of an online management panel or portal.
[0246] like Figure 8 As shown, the printer dashboard page 800 can display a print yield percentage 802 and a print QA yield percentage 804 for each 3D printer 112. The management server 106 can be programmed to calculate and track the print yield percentage 802 and the print QA yield percentage 804 for each 3D printer 112.
[0247] As previously described, a 3D printing job 512 executed by one of the 3D printers 112 may fail due to a machine failure 902 (see Fig.9A ) or print quality error 908 (see Fig. 9BA print quality failure 908 may occur when a final product (eg, 3D printed part 400) produced by a 3D print job 512 fails a QA inspection.
[0248] The management server 106 may be programmed to calculate a print yield percentage 802 for each 3D printer 112 based on the number of completed 3D print jobs 512 initiated by the 3D printer 112 and the number of 3D print jobs 512 initiated by the 3D printer 112 that failed due to machine failures 902 .
[0249] For example, the management server 106 can be programmed to calculate the printing yield percentage 802 of each 3D printer 112 by dividing the total number of completed 3D printing jobs 512 initiated by the 3D printer 112 by the sum of the total number 902 of 3D printing jobs 512 initiated by the 3D printer 112 that failed due to machine failure and the total number of completed 3D printing jobs 512 initiated by the 3D printer 112 (printing yield percentage = total number of completed 3D printing jobs initiated by the 3D printer / (total number of 3D printing jobs initiated by the 3D printer that failed due to machine failure + total number of completed 3D printing jobs initiated by the 3D printer)).
[0250] The management server 106 may be programmed to calculate a print QA yield percentage 804 for each 3D printer 112 based on the number of 3D print jobs 512 completed by the 3D printer 112 that passed the QA inspection of the 3D printed parts 400 generated by the completed 3D print jobs 512 and the number of 3D print jobs 512 completed by the 3D printer 112 that failed the QA inspection of the 3D printed parts 400 generated by the completed 3D print jobs 512.
[0251] For example, the management server 106 may be programmed to calculate the total number of 3D print jobs 512 completed by the 3D printer 112 that passed the QA inspection of the 3D printed parts 400 generated by the completed 3D print jobs 512 by dividing the total number of 3D print jobs 512 completed by the 3D printer 112 that did not pass the QA inspection of the 3D printed parts 400 generated by the completed 3D print jobs 512 by the total number of 3D print jobs 512 completed by the 3D printer 112 that passed the QA inspection of the 3D printed parts 400 generated by the completed 3D print jobs 512. The printing QA yield percentage 804 of each 3D printer 112 is calculated by summing up the total amount of 3D printing jobs 512 (printing QA yield percentage = total amount of 3D printing jobs completed by the 3D printer that passed the QA inspection of the 3D printed parts generated by the completed 3D printing jobs / (total amount of 3D printing jobs completed by the 3D printer that failed the QA inspection of the 3D printed parts generated by the completed 3D printing jobs + total amount of 3D printing jobs completed by the 3D printer that passed the QA inspection of the 3D printed parts generated by the completed 3D printing jobs)).
[0252] The management server 106 may also be programmed to take certain actions with respect to the 3D printer 112 based on the print yield percentage 802 and the print QA yield percentage 804 of the 3D printer 112. For example, the management server 106 may be programmed to take certain actions with respect to the 3D printer 112 when the print yield percentage 802 drops below or is falling below a minimum print yield threshold percentage. Also, for example, the management server 106 may be programmed to take certain actions with respect to the 3D printer 112 when the print QA yield percentage 804 drops below or is falling below a minimum print QA yield threshold percentage.
[0253] In some embodiments, the management server 106 may be programmed to automatically take the 3D printer 112 offline or remove the 3D printer 112 from the pool of available 3D printers based on the print yield percentage 802, the print QA yield percentage 804, or a combination thereof. For example, the management server 106 may be programmed to automatically take the 3D printer 112 offline or remove the 3D printer 112 from the pool of available 3D printers when the print yield percentage 802 drops below or is falling below a minimum print yield threshold percentage (e.g., when the print yield percentage 802 drops below or is falling below 60% or 70%). Additionally, for example, the management server 106 may be programmed to automatically take the 3D printer 112 offline or remove the 3D printer 112 from the pool of available 3D printers when the print QA yield percentage 804 drops below or is falling below a minimum print QA yield threshold percentage (e.g., when the print QA yield percentage 804 drops below or is falling below 50% or 60%).
[0254] Any offline 3D printer 112 may be designated for maintenance or diagnostic testing. The 3D printer 112 may remain offline or unavailable until the necessary maintenance or diagnostic testing is performed.
[0255] In all such embodiments, when a 3D printer 112 is offline or removed from the pool of available 3D printers, the management server 106 does not assign any further 3D print jobs 512 to this 3D printer 112. In addition, when a 3D printer 112 is offline, the management server 106 can automatically reassign the ready jobs 530 (and waiting jobs 532) assigned to this 3D printer 112 to the currently available 3D printers 112. Then, those ready jobs 530 (and waiting jobs 532) can be automatically added to the printer job queues 702 of those available 3D printers 112. When those ready jobs 530 (and waiting jobs 532) are ranked with those jobs previously included in the printer job queues 702 of the available 3D printers 112, the ready jobs 530 (and waiting jobs 532) can retain their point values 112.
[0256] In certain embodiments, the management server 106 may be programmed to assign one or more high priority 3D print jobs 512 or 3D print jobs 512 with high point values to a 3D printer 112 having a relatively high print yield percentage 802, a relatively high print QA yield percentage 804, or a combination thereof. For example, the management server 106 may be programmed to assign one or more high priority 3D print jobs 512 or 3D print jobs 512 with high point values to a 3D printer 112 if the print yield percentage 802 of the 3D printer 112 exceeds a maximum print yield threshold percentage (e.g., if the print yield percentage 802 of the 3D printer 112 exceeds 80% or 90%). Additionally, for example, the management server 106 may be programmed to assign one or more high priority 3D print jobs 512 or 3D print jobs 512 with high point values to a 3D printer 112 if the print QA yield percentage 804 of the 3D printer 112 exceeds a maximum print QA yield threshold percentage (e.g., if the print QA yield percentage 804 of the 3D printer 112 exceeds 70% or 80%). In these embodiments, a 3D printer 112 with a high print yield percentage 802 (i.e., the print yield percentage 802 exceeds the maximum print yield threshold percentage), a high print QA yield percentage 804 (i.e., the print QA yield percentage 804 exceeds the maximum print QA yield threshold percentage), or a combination thereof may be referred to as a high performance 3D printer 806.
[0257] In some embodiments, the management server 106 may also be programmed to reallocate a 3D print job 512 that was initially assigned to one or more low-performance 3D printers 808 to one or more high-performance 3D printers 806. For example, the management server 106 may be programmed to reallocate a 3D print job 512 that was initially assigned to one or more low-performance 3D printers 808 to one or more high-performance 3D printers 806 if the 3D print job 512 is associated with an inventory identifier 502 and wherein: (i) the inventory yield percentage 544 associated with the inventory identifier 502 drops below or is falling below an inventory yield minimum threshold percentage (e.g., 40% of 50%), (ii) the inventory completion time 550 associated with the inventory identifier 502 exceeds an inventory completion maximum threshold time (e.g., 30 days or 60 days), (iii) the inventory completion percentage 552 associated with the inventory identifier 502 drops below or is falling below an inventory completion minimum threshold percentage, and (iv) the total job failure 542 number associated with the inventory identifier 502 exceeds a total job failure threshold, or a combination thereof.
[0258] In addition, for example, the management server 106 may be programmed to reassign a 3D print job 512 that was initially assigned to a low-performance 3D printer 808 to a high-performance 3D printer 806 if the 3D print job 512 is associated with a particular 3D print part 400 and wherein: (i) the part completion time for the 3D print part 400 exceeds a part completion maximum threshold time (e.g., 20 days or 40 days), (ii) the current part yield percentage 546 of the 3D print part 400 drops below or is falling below a current part yield minimum threshold percentage (e.g., 40% or 50%), (iii) the part completion percentage of the 3D print part 400 drops below or is falling below a part completion minimum threshold percentage, or a combination thereof. By doing so, the management server 106 may increase the chances that high-priority 3D print jobs 510 or relatively difficult 3D print jobs 510 can be completed by these high-performance 3D printers 806 without further job failures or without a significant number of further job failures.
[0259] The management server 106 may assign or reallocate a 3D print job 512 to a 3D printer 112 by adding the 3D print job 512 to the printer job queue 702 of the 3D printer 112. The management server 106 may be programmed to continuously or periodically update or modify the printer job queue 702 of all available 3D printers 112 to account for: a 3D printer 112 that is offline, reallocating a 3D print job 510 due to low yield or longer than expected completion time, or a combination thereof.
[0260] Fig.9AOne embodiment of a machine failure screen 900 is shown. The machine failure screen 900 may be presented on a display of a computing device, such as a production client device 110 communicatively coupled to a 3D printer 112. For example, a worker 1102 may use the production client device 110 to control or operate the 3D printer 112. In other embodiments, the machine failure screen 900 may be presented directly on the display of the 3D printer 112. In some embodiments, the machine failure screen 900 may appear as a pop-up window or a modal window.
[0261] The machine failure screen 900 may be generated by the management server 106 in response to the management server 106 receiving a notification, message, or other type of data transmission from a production client device 110 or 3D printer 112 that a 3D print job 512 initiated by the 3D printer 112 failed due to a machine failure 902 .
[0262] A machine failure 902 may occur when a 3D print job 512 being executed by a 3D printer 112 is terminated or ends before the 3D print job 512 is completed due to a hardware failure or a problem associated with one or more components of the 3D printer 112 .
[0263] For example, machine failure 902 may occur due to any of the following reasons: (i) extruder failure, (ii) Bowden tube ejection, (iii) 3D printing material running out in the middle of a print job, (iv) heating failure, (v) thermal runaway or overheating issues, (vi) thermistor error, (vii) spool problem, (viii) 3D printing material bursting, (ix) excessive stringing issues, (x) clumps of 3D printing material on the print bed or printed object, (xi) sensor failure, (xii) heat sink fan failure, and (xiii) carriage failure.
[0264] In some embodiments, a worker 1102 operating or otherwise responsible for overseeing a 3D printer 112 may provide a reason for a machine failure 902 by applying a user input (e.g., a click input or a touch input) to one of several rendered icons or graphical elements 904 that appear next to each possible reason for a machine failure 902. For example, Fig.9A As shown in , a worker 1102 operating a 3D printer 112 can apply user input to a “pass” button or a “fail” button that appears next to each possible cause of a machine failure 902. The management server 106 can receive the cause of the machine failure 902 in response to the user input received through the machine failure screen 900.
[0265] In alternative embodiments, the 3D printer 112 may perform a self-initiated diagnostic procedure to determine the cause of the machine failure 902. In these embodiments, the 3D printer 112 may transmit the cause of the machine failure 902 directly to the management server 106.
[0266] Fig. 9B One embodiment of a print QA screen 906 is shown. The print QA screen 906 can be presented on a display of a computing device (e.g., production client device 110) assigned to a worker 1102. The worker 1102 can use the print QA screen 906 to communicate the results of a QA check of the 3D printed part 400. The QA check can be part of a QA job 518 of a worker job queue 1104 assigned to the worker 1102 (see Fig.11 ).
[0267] In other embodiments, the print QA screen 906 may be presented directly on the display of the 3D printer 112 that most recently completed the 3D print job 512. In these embodiments, the worker 1102 may apply user input (e.g., click input or touch input) directly to the display of the 3D printer 112.
[0268] Worker 1102 may inspect or evaluate 3D printed part 400 based on some criteria or benchmarks. For example, Fig. 9B As shown, worker 1102 can check 3D printed part 400 for any print quality issues, such as: (a) layer lines, (b) fragments longer than 2 millimeters (mm), (c) burns longer than 2 mm, (d) over-extrusion, (e) under-extrusion, or (f) rafting texture. Worker 1102 can report the results of the print QA check by applying user input to one of several graphical icons or graphical elements 904 that appear next to each possible print quality issue listed on print QA screen 906. More specifically, worker 1102 performing the print QA check can apply user input to a "pass" button, a "fail" button, or a "critically failed" button next to each possible print quality issue listed on print QA screen 906.
[0269] In response to the worker 1102 applying user input to a "Fail" button or a "Fail Critically" button next to one of the print quality issues, the production client device 110 may notify the management server 106 that a print quality failure 908 has occurred.
[0270] 3D print job 512 may be due to machine failure 902 (see Fig.9A) or print quality failure 908. A print quality failure 908 occurs when the final product (e.g., 3D printed part 400) produced by the 3D print job 512 does not pass its QA inspection. When the 3D print job 512 is completed without a machine failure 902 and the 3D printed part 400 produced by the 3D print job 512 has passed its QA inspection, the 3D print job 512 is considered complete. As previously described, when a 3D print job 512 fails due to a machine failure 902 or a print quality failure 908, the 3D print job 512 can be immediately copied.
[0271] Fig.10 One embodiment of a returns page 1000 is shown. The returns page 1000 can provide a real-time overview or snapshot of all returns 1002 processed by the system 100 (e.g., by the management server 106, the retail server 102, or a combination thereof). In some embodiments, the returns page 1000 can be presented as part of a larger dashboard screen (e.g., the returns page 1000 can be presented as a window or part of a larger dashboard screen).
[0272] The return page 1000 may be presented on a display of a computing device, such as one of the production client devices 110 or a device used by a foreman or manager to monitor the 3D printing-based manufacturing process. In some embodiments, the return page 1000 may be accessed via a web browser. In other embodiments, the return page 1000 may be accessed via a downloadable desktop or mobile software application.
[0273] The return page 1000 may be generated and continuously updated by the management server 106. The return page 1000 may be one of a plurality of panel screens, a dashboard screen, a graphical user interface (GUI) screen provided as part of an online management panel or portal.
[0274] In some embodiments, the return page 1000 may also display at least one return reason 1004. The return reason 1004 may be provided by the customer when the customer initiates a return online. The return reason 1004 may be included as part of the return order notification received by the management server 106.
[0275] When a returned product 302 is received from a customer, the return reason 1004 can be verified by one of the workers 1102. For example, the worker 1102 can check or inspect the returned product 302 received from the customer to ensure that the return reason 1004 is legitimate and consistent with the condition of the returned product 302.
[0276] In some embodiments, the management server 106 may receive the return order notification from the retail server 102 or another server programmed to process customer returns. In other embodiments, the management server 106 may receive the return order notification directly from the customer's computing device.
[0277] The return reason 1004 may be attributed to at least one of a defective 3D printed part 1006, a defective standardized functional component 1008, and an assembly problem 1010. The defective 3D printed part 1006 and the defective standardized functional component 1008 may be associated with the inventory identifier 502 of the returned product 302. The assembly problem 1010 may be associated with one or more assembly jobs 516 associated with the inventory identifier 502 of the returned product 302.
[0278] When the return reason 1004 is attributed to a defective 3D printed part 1006, the management server 106 can be programmed to track the defective 3D printed part 1006 associated with the inventory identifier 502 to one of the 3D printers 112 assigned to print the defective 3D printed part 1006. Since all completed jobs 524 (including all completed 3D printing jobs) are stored in the management database 108 by the management server 106, the management server 106 can query the management database 108 for the 3D printer 112 assigned to print the defective 3D printed part 1006.
[0279] In some embodiments, the management server 106 may be programmed to adjust the print QA yield percentage 802 of the 3D printer 112 assigned to print the defective 3D printed part 1006 based on the return reason 1004. For example, the management server 106 may be programmed to retroactively change the job status 522 of the 3D print job 512 from a completed job 524 to a failed job 528 (due to the print quality failure 908). This may cause the print QA yield percentage 802 of the 3D printer 112 to decrease. The management server 106 may also be programmed to adjust the total job failures 542 of the 3D printer 112 (increase the number of total job failures 542) to account for this new failed job 528.
[0280] In certain embodiments, the management server 106 may be programmed to track the defective 3D printed part 1006 to one or more workers 1102 assigned the job 510 associated with the defective 3D printed part 1006. For example, the worker 1102 may have been previously assigned the QA job 518 to inspect the defective 3D printed part 1006. In this example, the management server 106 may be programmed to retroactively change the job status 522 of the QA job 518 from the completed job 524 to the failed job 528. The management server 106 may also be programmed to adjust the worker yield percentage 1106 of the worker 1102 assigned the QA job 518 to inspect the defective 3D printed part 1006 to account for the new failed job 528.
[0281] When the return reason 1004 is attributed to a defective standardized functional component 1008, the management server 106 can be programmed to trace the defective standardized functional component 1008 to the standardized functional component associated with the inventory identifier 502 that was incorporated into the returned product 302. For example, the defective standardized functional component 1008 may have been purchased as part of an inventory purchase order along with other standardized functional components 402. The management server 106 can be programmed to trace the defective standardized functional component 1008 to a specific inventory purchase order. In some embodiments, the management server 106 can be programmed to initiate a supplier return order associated with the defective standardized functional component 1008. In other embodiments, the management server 106 can be programmed to create one or more additional QA jobs 518 to check whether any other standardized functional components 402 obtained as part of the same inventory purchase order are defective.
[0282] When the return reason 1004 is attributed to an assembly problem 1010, the management server 106 can be programmed to track the assembly problem 1010 to the worker 1102 assigned the assembly job 516 for assembling the 3D printed part 400 of the returned product 302. The assembly job 516 can be associated with the inventory identifier 502 of the returned product 302.
[0283] In some embodiments, the management server 106 can be programmed to retroactively change the job status 522 of the assembly job 516 from a completed job 524 to a failed job 528. The management server 106 can also be programmed to adjust the worker yield percentage 1106 of the worker 1102 assigned to the assembly job 516 to account for the new failed job 528.
[0284] A technical problem faced by all item manufacturers is how to leverage downstream data and information about order returns (i.e., when such items are returned by customers) to better improve the upstream manufacturing process of the item. One technical solution discovered and developed by the applicant is to track the return reason provided by the customer to one or more jobs created by the system to manufacture the returned product. For example, when a defective 3D printed part is provided as a return reason, the system can track the defective 3D printed part to the 3D printer assigned to print the defective 3D printed part or the worker assigned to perform QA inspection on the defective 3D printed part. In addition, when a purchased inventory item is provided as a return reason, the system can track the defective purchased inventory item to a specific supplier or inventory purchase order. In addition, when an assembly problem is provided as a return reason, the system can track the assembly problem to the worker assigned to assemble the returned product. Once the system tracks the return reason to the appropriate machine or worker, the system can make certain adjustments to the yield percentage or performance indicators of the machine or worker to take the order return into account. The 3D printing-based manufacturing process disclosed herein is able to utilize downstream data and information about order returns to better improve the upstream manufacturing process because the manufacturing process divides the manufacturing process into multiple discrete operations, and these operations and which machines and workers perform these operations are continuously tracked together. In other words, any problem with a product produced by the 3D printing-based manufacturing process disclosed herein can be traced back to a specific operation, a specific worker, a specific machine, or a specific functionalized component. For products mass-produced using traditional manufacturing processes, this ability to trace defective products or their parts to a specific operation, a specific worker, a specific machine, or a specific functionalized component is not possible.
[0285] Fig.11 One embodiment of a worker status page 1100 is shown. The worker status page 1100 may provide a real-time overview or snapshot of one of the workers 1102's identity and work-related activities.
[0286] The worker status page 1100 may be presented on a display of a computing device, such as one of the production client devices 110 or a device used by a foreman or manager of the worker 1102. In some embodiments, the worker status page 1100 may be accessed through a web browser. In other embodiments, the worker status page 1100 may be accessed through a downloadable desktop or mobile software application.
[0287] In some embodiments, the worker status page 1100 can display at least a portion of a worker job queue 1104 for a worker 1102. As previously described, the management server 106 can be programmed to generate and maintain the worker job queue 1104. The worker job queues 1104 for all workers 1102 can be stored as part of the management database 108.
[0288] In some embodiments, the management server 106 can be programmed to transmit each worker job queue 1104 to the production client device 110 assigned to the worker 1102. In these embodiments, the management server 106 can be programmed to continuously or periodically update each worker job queue 1104 and transmit the updated instance of each worker job queue 1104 to each production client device 110.
[0289] The management server 106 can also be programmed to assign ready jobs 530 (e.g., finishing jobs 514, assembly jobs 516, QA jobs 518, etc.) to workers 1102 by adding the ready jobs 530 to the worker job queue 1104 of the worker 1102. As previously described, the ready jobs 530 can be added to the worker job queue 1104 according to the point value associated with each ready job 530.
[0290] As previously described, the point values associated with a ready job 530 may be used to order the ready job 530 relative to other ready jobs 530 to determine which ready jobs 530 from the worker job queue 1104 are to be executed first by the worker 1102 .
[0291] When the retail server 102 first receives an order 300 that requires a ready job 530, a point value may be initially allocated or transferred to the ready job 530. The point value initially allocated or transferred to the ready job 530 may be a default amount (e.g., 10 points). The point value (starting with the default amount on the day the order 300 is received) may be increased by a preset amount (e.g., 1 point) periodically (e.g., at the end of each day, half day, hour, half hour, etc.) until the worker 1102 performs and successfully completes the ready job 530.
[0292] As previously described, some ready jobs 530 may be created in conjunction with order(s) 300 having a priority level 534 (e.g., a high priority level 538 or a low priority level 540) attached to the order(s) 300. For example, orders 300 placed by VIP customers or returning customers may have a high priority level 538 assigned to such orders 300. Additionally, for example, orders 300 placed for testing purposes, research and development purposes, or marketing purposes may have a lower priority level 538 attached to such orders.
[0293] An order 300 having a high priority level 538 attached to or otherwise assigned to the order 300 may be treated as an urgent or emergency order, so that the ready jobs 530 associated with the order 300 may be initially assigned or allocated a point value greater than the default point value in order to rank or sort such ready jobs 530. In addition, this larger initial point value may be periodically increased by a higher preset amount until the job is finished or completed. In this way, the management server 106 may be programmed to prioritize such ready jobs 530 over other jobs. This significantly reduces the completion time or lead time of such higher priority ready jobs 530, making it more likely that the worker 1102 will complete the higher priority ready jobs 530 during the worker's work shift.
[0294] In some embodiments, waiting jobs 532 may also be added to the worker job queue 1104. In these embodiments, waiting jobs 532 may be added to the worker job queue 1104, but hidden from view, so that the waiting jobs 532 are not visible until the job status 522 of these jobs changes to "ready". As previously described, waiting jobs 532 may also be assigned or allocated point values. The point value (starting from a default amount on the day the order 300 is received) may also be increased by a preset amount (e.g., 1 point) periodically. When the status of the waiting job 532 changes to a ready job 530, the point value of each waiting job 532 may be carried over.
[0295] The point value of each waiting job 532 may also be initially assigned or allocated when the retail server 102 first receives an order 300 for a product 302. The point value initially assigned or allocated to each waiting job 532 associated with the inventory identifier 502 may have the same default amount (e.g., 10 points) as the point value assigned to each ready job 530. The point value (starting with the default amount on the day the order 300 is received) may also be increased by a preset amount (e.g., 1 point) periodically (e.g., at the end of each day, half day, hour, half hour, etc.) until the status of the waiting job 532 changes to a ready job 530 and the ready job 530 ends or is completed. When the status of the waiting job 532 changes to a ready job 530 (e.g., when a particular 3D printer 112 becomes available, or when an out-of-stock standardized functional component 402 is replenished), the point value of each waiting job 532 may be carried over. That is, the same point value accumulated by the waiting job 532 subsequently becomes the point value of the ready job 530 that now replaces it.
[0296] In some embodiments, the point value of each ready job 530 and waiting job 532 can be hidden from view so that the point value is not displayed as part of any worker status page 1100.
[0297] The worker job queue 1104 may include ready jobs 530 (e.g., finishing jobs 514, assembly jobs 516, QA jobs 518, etc.) associated with multiple inventory identifiers 502 (or multiple products 302). In this sense, the ready jobs 530 associated with one inventory identifier 502 "compete" for the worker 1102's time with other ready jobs 530 associated with other inventory identifiers 502. In addition, because new ready jobs 530 may be added to the worker job queue 1104 before the worker 1102 completes the ready jobs 530 already in the worker job queue 1104, those ready jobs 530 that are ranked higher in the worker job queue 1104 will have a greater chance of being completed faster.
[0298] The management server 106 can be programmed to continuously adjust the printer job queue 702 due to the following reasons: new ready jobs 530 (including any new high priority ready jobs 530) are added due to new incoming orders 300, the status of waiting jobs 532 is changed to ready jobs 530, the status of ready jobs 530 is changed to waiting jobs 532 due to changes in circumstances (for example, 3D printing materials or (one or more) standardized functional components 402 become unavailable, etc.), some ready jobs 530 are successfully completed, and some ready jobs 530 fail and are copied as copy jobs 608.
[0299] In addition, as previously described, the management server 106 can also be programmed to adjust the worker job queue 1104 of each worker 1102 by increasing the level or order of one or more ready jobs 530 in the worker job queue 1104 due to one of the following reasons: inventory completion time 550, part completion time, inventory yield percentage 544, current part yield percentage 546, inventory completion percentage 552, part completion percentage, and the number of total failed jobs 542.
[0300] For example, the management server 106 may be programmed to increase or raise the point values of all ready jobs 532 (and in some cases waiting jobs 532) associated with the inventory identifier 502 in the following circumstances: (i) if the inventory yield percentage 544 associated with the inventory identifier 520 drops below or is falling below a minimum inventory yield threshold percentage, (ii) if the applicable current part yield percentage 546 drops below or is falling below a current part yield minimum threshold percentage, (iii) if the inventory completion time 550 exceeds a maximum inventory completion time, (iv) if the applicable part completion time exceeds a maximum part completion time, (v) if the inventory completion percentage 552 drops below or is falling below a minimum inventory completion percentage after a minimum amount of time has elapsed, (vi) if the applicable part completion percentage drops below or is falling below a minimum part completion percentage after a minimum amount of time has elapsed, (vii) if the total job failure 542 number exceeds a total job failure threshold, or a combination thereof. The management server 106 may be programmed to increase or raise the point value of such ready jobs 532 (and in some cases, waiting jobs 532) associated with the inventory identifier 502 by adding additional points to the current point value, multiplying the current point value by a preset amount, or squaring the current point value.
[0301] In some embodiments, when a worker 1102 starts a ready job 530, the ready job 530 that appears first on the worker job queue 1104 or at the top of the worker job queue 1104 may have its job status 522 changed from "ready" to "in progress". If the in progress job 526 continues to complete, the job status 522 may change to "completed". If the in progress job 526 ends in failure, the job status 522 may change to "failed".
[0302] The management server 106 may be programmed to track the number of failed jobs 528 attributed to each worker 1102. In some embodiments, the management server 106 may be programmed to calculate and track a worker yield percentage 1106 for each worker 1102. The management server 106 may be programmed to calculate the worker yield percentage 1106 based on the number of failed jobs 528 attributed to the worker 1102 and the number of completed jobs 524. For example, the management server 106 may be programmed to calculate the worker yield percentage 1106 by dividing the total number of completed jobs 524 attributed to the worker 1102 by the sum of the total number of failed jobs 528 attributed to the worker 1102 and the total number of completed jobs 524 (worker yield percentage = total number of completed jobs attributed to the worker / (total number of failed jobs attributed to the worker + total number of completed jobs)).
[0303] In some embodiments, each time a worker 1102 completes a job or fails a job, a worker yield percentage 1106 for the worker 1102 can be calculated or updated. The worker yield percentage 1106 can provide real-time insights into the efficiency, skills, and capabilities of the worker 1102.
[0304] In some embodiments, the management server 106 may also be programmed to track the number of consecutive failed jobs attributed to the worker 1102 (ie, the number of consecutive jobs 510 undertaken by the worker 1102 that ended in failure).
[0305] The management server 106 may be programmed to take certain actions with respect to the worker 1102 based on the worker yield percentage 1106, the number of consecutive failed jobs, or a combination thereof. For example, the management server 106 may be programmed to take certain actions with respect to the worker 1102 when the worker yield percentage 1106 drops below a worker yield threshold percentage. As another example, the management server 106 may be programmed to take certain actions with respect to the worker 1102 when the number of consecutive failed jobs exceeds a threshold number.
[0306] In some embodiments, the management server 106 may be programmed to remove a worker 1102 from the pool of available workers 1102 or designate the worker 1102 for further training or evaluation if the worker yield percentage 1106 drops below or is falling below a worker yield threshold percentage. The management server 106 may also be programmed to remove a worker 1102 from the pool of available workers 1102 or designate the worker 1102 for further training or evaluation if the number of consecutive failed jobs exceeds a threshold amount (e.g., when the worker 1102 fails three consecutive jobs).
[0307] When a worker 1102 is removed from the pool of available workers 1102 or is designated for further training / evaluation, no additional ready jobs 530 (or waiting jobs 532) are added to the worker job queue 1104 of this worker 1102. In addition, when a worker 1102 is removed from the pool of available workers 1102 or is designated for further training / evaluation, the ready jobs 530 (and waiting jobs 532) assigned to this worker 1102 may be automatically reallocated to currently available workers 1102 by the management server 106. Those ready jobs 530 (and waiting jobs 532) may then be automatically added to the worker job queues 1104 of those available workers 1102. When the ready jobs 530 (and waiting jobs 532) are ranked against those jobs previously included in the worker job queues 1104 of the available workers 1102, these ready jobs 530 (and waiting jobs 532) may retain their point values.
[0308] Fig.12One embodiment of an inventory dashboard page 1200 is shown, which may be provided as part of an online management panel or portal. The inventory dashboard page 1200 may provide a real-time overview or snapshot of the number of inventory items 1202 currently in inventory. Inventory items 1202 may refer to all non-3D printed items required to manufacture products 302. For example, inventory items 1202 may include various standardized functional components 402, 3D printing materials 1204, coatings 1206, and adhesives. Inventory items 1202 may also include items or tools required to assemble, package, and ship products 302. Inventory items may be purchased from a variety of suppliers.
[0309] The inventory dashboard page 1200 can be presented on a display of a computing device, such as one of the production client devices 110 or a device used by a foreman or manager to monitor the 3D printing-based manufacturing process. In some embodiments, the inventory dashboard page 1200 can be accessed through a web browser. In other embodiments, the inventory dashboard page 1200 can be accessed through a downloadable desktop or mobile software application.
[0310] The inventory dashboard page 1200 may be generated and continuously updated by the management server 106. The inventory dashboard page 1200 may be one of several panel screens, dashboard screens, graphical user interface (GUI) screens provided as part of an online management panel or portal.
[0311] like Fig.12 As shown, the inventory dashboard page 1200 can display the inventory level 1208 of each inventory item 1202. The inventory level 1208 can be the amount of inventory items 1202 remaining in stock. The inventory dashboard page 1200 can also display the unit cost of each inventory item 1202.
[0312] In some embodiments, the management server 106 may update the inventory levels 1208 of inventory items 1202 (e.g., standardized functional components 402, 3D printing materials 1204, coatings 1206, adhesives, etc.) immediately after creating each job 510 or series of jobs 510 associated with each incoming order 300. For example, the inventory level 1208 of a particular inventory item 1202 required to manufacture the product(s) 302 included in the order 300 may be reduced to match the jobs 510 (including 3D printing jobs 512, finishing jobs 514, assembly jobs 516, and packaging jobs 520) created by the management server 106.
[0313] The inventory level 1208 of the inventory item 1202 may be reduced to match the usage level based on the created jobs 510. For example, the inventory level 1208 of the inventory item 1202 may be reduced to match the usage level based on the assumption that all jobs 510 created for the product(s) 302 included in the manufacturing order 300 will be completed and no jobs will fail.
[0314] In some embodiments, the inventory level 1208 of the inventory items 1202 may be reduced to match the estimated amount of duplicate jobs 608 based on the usage level of the jobs 510 created for each order 300 or each product 302 and due to expected job failures (see Figure 6 ). The yield percentages may be based on one or more historical component yield percentages 548 recorded by the management server 106 for products 302 manufactured in the past (see Figure 5A ), SKU yield percentage, total job failures 542, or a combination thereof to calculate an estimated amount of replication jobs 608.
[0315] Then, when the inventory level 1208 of any inventory item 1202 drops below the inventory threshold, the management server 106 can automatically order additional inventory items 1202. For example, when the inventory level 1208 of a certain color of paint (or the amount of paint currently in inventory at the production facility) drops below 50 gallons, the management server 106 can automatically order more of that color of paint.
[0316] Many embodiments have been described. However, it will be appreciated by those skilled in the art that various changes and modifications may be made to the present disclosure without departing from the spirit and scope of the embodiments. The elements of the systems, devices, apparatuses and methods shown in any embodiment are exemplary for a particular embodiment and may be used in combination or otherwise for other embodiments within the present disclosure. For example, the steps of any method depicted in the figure or described in the present disclosure do not require the specific order or continuous order shown or described to achieve the desired result. In addition, other step operations may be provided, or steps or operations may be eliminated or omitted from the method or process to achieve the desired result. In addition, any components or parts of any device or system described in the present disclosure or shown in the figure may be removed, eliminated or omitted to achieve the desired result. In addition, for the sake of brevity and clarity, some components or parts of the system, device or apparatus shown or described herein are omitted.
[0317] Accordingly, other embodiments are within the scope of the following claims, and the description and / or drawings are to be regarded as illustrative rather than restrictive.
[0318] Each individual variation or embodiment described and illustrated herein has discrete components and features that may be readily separated or combined with the features of any other variation or embodiment. Modifications may be made to adapt a particular situation, material, composition of matter, process, process act(s) or step(s) to the objective(s), spirit or scope of the present invention.
[0319] The methods described herein may be performed in any order of events that are logically feasible, as well as in the order of events described. In addition, additional steps or operations may be provided, or steps or operations may be eliminated to achieve the desired results.
[0320] Furthermore, when a numerical range is provided, every intervening value between the upper and lower limits of that range and any other specified or intervening values in the stated range are encompassed within the invention. Furthermore, any optional features of the described inventive variations may be presented and claimed alone or in combination with any one or more features described herein. For example, a description of a range of 1 to 5 should be considered to have disclosed subranges such as 1 to 3, 1 to 4, 2 to 4, 2 to 5, 3 to 5, etc., as well as individual numbers within that range, such as 1.5, 2.5, etc., and any integer or fractional increments therebetween.
[0321] All prior subject matter (e.g., publications, patents, patent applications) mentioned herein are incorporated by reference in their entirety, except to the extent that the subject matter may conflict with the subject matter of the present invention, in which case the disclosure herein controls. The referenced items are provided solely for their disclosure prior to the filing date of the present application. Nothing herein should be construed as an admission that the present invention is not entitled to antedate such material by virtue of prior invention.
[0322] Reference to singular items includes the possibility of the presence of plural identical items. More specifically, as used herein and in the appended claims, the singular forms "a," "an," "said," and "the" include plural referents unless the context clearly dictates otherwise. It should also be noted that the claims may be drafted to exclude any optional elements. Therefore, this statement is intended to serve as antecedent basis for the use of exclusive terminology such as "only," "only," or the use of a "negative" limitation when reciting claim elements. Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs.
[0323] In understanding the scope of the present disclosure, the term "comprise" and its derivatives used herein are intended to be open terms, which specify the presence of the features, elements, components, groups, integers and / or steps, but do not exclude the presence of other undescribed features, elements, components, groups, integers and / or steps. The foregoing also applies to words with similar meanings, such as the terms "comprise", "have" and their derivatives. In addition, the terms "part", "section", "part", "member", "element" or "assembly" can have the dual meaning of a single part or multiple parts when used in the singular. As used herein, the following directional terms "forward, backward, above, downward, vertical, horizontal, below, laterally, laterally and vertically" and any other similar directional terms refer to those positions of equipment or equipment parts, or those directions in which equipment or equipment parts translate or move. Finally, terms of degree such as "substantially", "about" and "approximately" as used herein mean a reasonable amount of deviation from the specified value (e.g., up to ±0.1%, ±1%, ±5% or ±10% as such variations are appropriate) such that the end result is not significantly or substantially changed.
[0324] The present disclosure is not intended to be limited to the scope of the particular forms set forth, but is intended to cover alternatives, modifications and equivalents of the variants or embodiments described herein. In addition, the scope of the present disclosure fully encompasses other variants or embodiments that may be obvious to those skilled in the art based on the present disclosure.
Claims
1. A method for managing a 3D printing-based manufacturing process, comprising: receiving an order from a computing device of a customer, wherein the order includes a product made from the 3D printed part and one or more standardized functional components; generating, at a management server, an inventory identifier for identifying the product during and after manufacturing; creating, at the management server, a plurality of jobs to be performed to manufacture the product, wherein the inventory identifier is associated with each job, and wherein the jobs include a 3D printing job for printing the 3D printed parts, a finishing job for finishing each 3D printed part, an assembly job for assembling the 3D printed parts and the one or more standardized functional components into an assembled product, a quality assurance job for inspecting the 3D printed parts and the assembled product, and a packaging job for packaging the assembled product; At the management server, assigning a job status to each of a plurality of jobs associated with the inventory identifier based on job orders, availability of one or more 3D printers, availability of one or more workers, and inventory levels of the one or more standardized functional components and 3D printing materials, and continuously updating the job status of each job based on one or more completed jobs, availability of one or more 3D printers, availability of one or more workers, and inventory levels of the one or more standardized functional components and 3D printing materials; and The job is assigned to one of the 3D printers by adding at least one job associated with the inventory identifier to a printer job queue of the one of the 3D printers, and at least one other job associated with the inventory identifier is assigned to one of the workers by adding the other job to a worker job queue of the one of the workers.
2. The method according to claim 1, further comprising: calculating, at the management server, an inventory yield percentage based in part on a total number of completed jobs and a total number of failed jobs associated with the inventory identifier during a manufacturing process; calculating a part yield percentage based in part on a total number of completed jobs and a total number of failed jobs associated with the manufacture of a 3D printed part of the product, wherein the 3D printed part is also associated with the inventory identifier; and Adjusting a printer job queue of the 3D printer such that jobs associated with the inventory identifier and assigned to the 3D printer are ranked higher in the printer job queue than other jobs not associated with the inventory identifier, or adjusting a worker job queue of the worker such that jobs associated with the inventory identifier and assigned to the worker are ranked higher in the worker job queue than other jobs not associated with the inventory identifier, due in part to at least one of the calculated inventory yield percentage and the component yield percentage.
3. The method according to claim 2, further comprising: automatically duplicating, at the management server, one of the failed jobs associated with the inventory identifier, thereby generating a duplicate job associated with the inventory identifier, wherein calculating the inventory yield percentage further comprises incorporating a result of the duplicate job into any calculation of the inventory yield percentage, and wherein calculating the part yield percentage further comprises incorporating a result of the duplicate job into any calculation of a part yield percentage for the 3D printed part when the duplicate job is required to manufacture the 3D printed part; and The copy job associated with the inventory identifier is assigned to one of the 3D printers or one of the workers by adding the copy job to a printer job queue of the 3D printer or adding the copy job to a worker job queue of the worker.
4. The method according to claim 2, further comprising: When the historical part yield percentage calculated by the management server drops below a threshold percentage, pre-copying one or more of the jobs created to manufacture one of the 3D printed parts of the product; and Automatically assign a pre-copied job to a worker or one of the 3D printers.
5. The method according to claim 2, further comprising: Calculating a print yield percentage of one of the 3D printers over a period of time, wherein the print yield percentage is calculated based on a number of completed 3D print jobs initiated by the 3D printer and a number of 3D print jobs initiated by the 3D printer that failed due to a machine failure during the period of time; Calculating a print quality assurance (print QA) yield percentage for the 3D printer over the period of time, wherein the print QA yield percentage is calculated based on the number of 3D print jobs completed by the 3D printer that failed a QA inspection of 3D printed parts resulting from completed 3D print jobs and the number of 3D print jobs completed by the 3D printer that passed a QA inspection of 3D printed parts resulting from completed 3D print jobs; The 3D printer is automatically taken offline based on at least one of the print yield percentage and the print QA yield percentage, wherein the management server does not automatically assign any further 3D printing jobs to the 3D printer when the 3D printer is offline.
6. The method according to claim 2, further comprising: Tracking the number of consecutive failed jobs for the 3D printer; as well as The 3D printer is automatically taken offline based on a number of consecutive failed jobs, wherein when the 3D printer is offline, the management server does not automatically assign any further 3D printing jobs to the 3D printer.
7. The method of claim 1, wherein the product is associated with a stock keeping unit (SKU) identifier and a product category, and wherein the method further comprises: calculating a SKU yield percentage based on a number of failed jobs and a number of completed jobs associated with the SKU identifier across a plurality of orders; calculating a product category yield percentage based on a number of failed jobs and a number of completed jobs associated with the product category across a plurality of orders; as well as When the SKU yield percentage drops below a SKU yield threshold percentage, increase the price of products associated with the SKU identifier, or when the product category yield percentage drops below a product category yield threshold percentage, increase the prices of all products contained in the product category.
8. The method according to claim 1, further comprising: receiving a second order from another computing device, wherein the second order is a high priority order, wherein the second order includes a second product, and wherein the second product includes a second set of 3D printed parts and standardized functional components; generating, at the management server, a second inventory identifier for identifying a second product during and after manufacturing; creating, at the management server, a plurality of second jobs to be performed to manufacture a second product, wherein a second inventory identifier is associated with each second job; automatically assigning at least some of the second jobs to one or more 3D printers and workers; and At the management server, a second job associated with the second inventory identifier is prioritized for completion by queuing the second job above other jobs not associated with the second inventory identifier in at least one of a worker job queue of one of the workers and a printer job queue of one of the 3D printers.
9. The method according to claim 2, further comprising: tracking a worker yield percentage for the worker, wherein the worker yield percentage is calculated based on a number of failed jobs and a number of completed jobs assigned to the worker; as well as When the worker yield percentage drops below a worker yield percentage threshold, the worker is removed from a group of available workers or designated for further training, wherein when the worker is removed from the group of available workers, the management server does not automatically assign any further jobs to the worker.
10. The method according to claim 1, further comprising: A return order notification is received at the management server for a product with a return reason, wherein the return reason is attributed to at least one of: a defective 3D printed part, wherein the defective 3D printed part is associated with the inventory identifier, Defective standardized functional components, and Assembly issues; If the return reason is attributed to a defective 3D printed part, tracing the defective 3D printed part associated with the inventory identifier to one of the 3D printers assigned to print the defective 3D printed part; If the return reason is attributed to a defective 3D printed part, tracing the defective 3D printed part associated with the inventory identifier to one or more workers assigned a job associated with the defective 3D printed part; if the return reason is attributed to a defective standardized functional component, tracing the defective standardized functional component to a standardized functional component associated with the inventory identifier that is incorporated into the product; as well as If the return reason is attributed to the assembly issue, the assembly issue is traced to one or more workers assigned to an assembly job of assembling the 3D printed component of the product, wherein the assembly job is associated with the inventory identifier.
11. A system for managing a 3D printing-based manufacturing process, comprising: Multiple 3D printers; as well as A server comprising one or more processors, wherein the one or more processors are programmed to execute instructions to: Receiving an order from a retail server or a computing device of a customer, wherein the order includes a product made from the 3D printed part and one or more standardized functional components; generating an inventory identifier for identifying the product during and after manufacturing; creating a plurality of jobs to be performed to manufacture the product, wherein the inventory identifier is associated with each job, and wherein the jobs include a 3D printing job for printing the 3D printed parts, a finishing job for finishing each 3D printed part, an assembly job for assembling the 3D printed parts and the one or more standardized functional components into an assembled product, a quality assurance job for inspecting the 3D printed parts and the assembled products, and a packaging job for packaging the assembled products; assigning a job status to each of the plurality of jobs associated with the inventory identifier based on job orders, availability of the 3D printers, availability of one or more workers, and inventory levels of the one or more standardized functional components and 3D printing materials, and continuously updating the job status of each job based on one or more completed jobs, availability of one or more 3D printers, availability of one or more workers, and inventory levels of the one or more standardized functional components and 3D printing materials; and The job is assigned to one of the 3D printers by adding at least one job associated with the inventory identifier to a printer job queue of the one of the 3D printers, and at least one other job associated with the inventory identifier is assigned to one of the workers by adding the other job to a worker job queue of the one of the workers.
12. The system of claim 11, wherein the one or more processors are programmed to execute further instructions to: calculating an inventory yield percentage based in part on a total number of completed jobs and a total number of failed jobs associated with the inventory identifier during a manufacturing process; A component yield percentage is calculated based in part on a total number of completed jobs and a total number of failed jobs associated with the manufacture of a 3D printed component of the product, wherein The 3D printed part is also associated with the inventory identifier; as well as Adjusting a printer job queue of the 3D printer such that jobs associated with the inventory identifier and assigned to the 3D printer are ranked higher in the printer job queue than other jobs not associated with the inventory identifier, or adjusting a worker job queue of the worker such that jobs associated with the inventory identifier and assigned to the worker are ranked higher in the worker job queue than other jobs not associated with the inventory identifier, due in part to at least one of the calculated inventory yield percentage and the component yield percentage.
13. The system of claim 12, wherein the one or more processors are programmed to execute further instructions to: automatically duplicating one of the failed jobs associated with the inventory identifier, thereby generating a duplicate job associated with the inventory identifier, wherein: Calculating the inventory yield percentage further comprises incorporating results of the replication operation into any calculation of the inventory yield percentage, and wherein calculating the part yield percentage further comprises incorporating results of the replication operation into any calculation of a part yield percentage for the 3D printed part when the replication operation is required to manufacture the 3D printed part; and The copy job associated with the inventory identifier is assigned to one of the 3D printers or one of the workers by adding the copy job to a printer job queue of the 3D printer or adding the copy job to a worker job queue of the worker.
14. The system of claim 12, wherein the one or more processors are programmed to execute further instructions to: When the historical part yield percentage calculated by the management server drops below a threshold percentage, pre-copying one or more of the jobs created to manufacture one of the 3D printed parts of the product; and Automatically assign a pre-copied job to a worker or one of the 3D printers.
15. The system of claim 12, wherein the one or more processors are programmed to execute further instructions to: Calculate the print yield percentage of one of the 3D printers over a period of time, where, The print yield percentage is calculated based on the number of completed 3D print jobs initiated by the 3D printer during the period of time and the number of 3D print jobs initiated by the 3D printer that failed due to machine failure; Calculating a print quality assurance (print QA) yield percentage for the 3D printer over the period of time, wherein the print QA yield percentage is calculated based on the number of 3D print jobs completed by the 3D printer that failed a QA inspection of 3D printed parts resulting from completed 3D print jobs and the number of 3D print jobs completed by the 3D printer that passed a QA inspection of 3D printed parts resulting from completed 3D print jobs; The 3D printer is automatically taken offline based on at least one of the print yield percentage and the print QA yield percentage, wherein the management server does not automatically assign any further 3D printing jobs to the 3D printer when the 3D printer is offline.
16. The system of claim 11, wherein the one or more processors are programmed to execute further instructions to: Tracking the number of consecutive failed jobs for the 3D printer; and automatically taking the 3D printer offline based on a number of consecutive failed jobs, wherein, When the 3D printer is offline, the management server will not automatically assign any further 3D printing jobs to the 3D printer.
17. The system of claim 11, wherein the product is associated with a stock keeping unit (SKU) identifier and a product category, wherein the one or more processors are programmed to execute further instructions to: calculating a SKU yield percentage based on a number of failed jobs and a number of completed jobs associated with the SKU identifier across a plurality of orders; calculating a product category yield percentage based on a number of failed jobs and a number of completed jobs associated with the product category across a plurality of orders; and When the SKU yield percentage drops below a SKU yield threshold percentage, increase the price of products associated with the SKU identifier, or when the product category yield percentage drops below a product category yield threshold percentage, increase the prices of all products contained in the product category.
18. The system of claim 11, wherein the one or more processors are programmed to execute further instructions to: tracking a worker yield percentage for the worker, wherein the worker yield percentage is calculated based on a number of failed jobs and a number of completed jobs assigned to the worker; and When the worker yield percentage drops below a worker yield percentage threshold, removing the worker from a group of available workers or designating the worker for further training, wherein When the worker is removed from the set of available workers, the management server does not automatically assign any further jobs to the worker.
19. The system of claim 11, wherein the one or more processors are programmed to execute further instructions to: A return order notification is received for a product having a return reason, wherein the return reason is attributed to at least one of the following: a defective 3D printed part, wherein the defective 3D printed part is associated with the inventory identifier, Defective standardized functional components, and Assembly issues; If the return reason is attributed to a defective 3D printed part, tracing the defective 3D printed part associated with the inventory identifier to one of the 3D printers assigned to print the defective 3D printed part; If the return reason is attributed to a defective 3D printed part, tracing the defective 3D printed part associated with the inventory identifier to one or more workers assigned a job associated with the defective 3D printed part; if the return reason is attributed to a defective standardized functional component, tracing the defective standardized functional component to a standardized functional component associated with the inventory identifier that is incorporated into the product; as well as If the return reason is attributed to the assembly issue, the assembly issue is traced to one or more workers assigned to an assembly job of assembling the 3D printed component of the product, wherein the assembly job is associated with the inventory identifier.
20. A non-transitory computer-readable medium comprising machine-executable instructions stored thereon, wherein: The instructions include the following steps: receiving an order from a computing device of a customer, wherein the order includes a product made from the 3D printed part and one or more standardized functional components; generating an inventory identifier for identifying the product during and after manufacturing; creating a plurality of jobs to be performed to manufacture the product, wherein the inventory identifier is associated with each job, and wherein the jobs include a 3D printing job for printing the 3D printed parts, a finishing job for finishing each 3D printed part, an assembly job for assembling the 3D printed parts and the one or more standardized functional components into an assembled product, a quality assurance job for inspecting the 3D printed parts and the assembled products, and a packaging job for packaging the assembled products; assigning a job status to each of the plurality of jobs associated with the inventory identifier based on job orders, availability of one or more 3D printers, availability of one or more workers, and inventory levels of the one or more standardized functional components and 3D printing materials, and continuously updating the job status of each job based on one or more completed jobs, availability of one or more 3D printers, availability of one or more workers, and inventory levels of the one or more standardized functional components and 3D printing materials; and The job is assigned to one of the 3D printers by adding at least one job associated with the inventory identifier to a printer job queue of the one of the 3D printers, and at least one other job associated with the inventory identifier is assigned to one of the workers by adding the other job to a worker job queue of the one of the workers.
Citation Information
Patent Citations
Cylindrical coordinate 3D printer and methods of operation thereof
WO2021025939A1