WO2015022572A2 - Optimized virtual 3d printing build tray allocation - Google Patents
Optimized virtual 3d printing build tray allocation Download PDFInfo
- Publication number
- WO2015022572A2 WO2015022572A2 PCT/IB2014/001516 IB2014001516W WO2015022572A2 WO 2015022572 A2 WO2015022572 A2 WO 2015022572A2 IB 2014001516 W IB2014001516 W IB 2014001516W WO 2015022572 A2 WO2015022572 A2 WO 2015022572A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- gizmo
- printer
- printing
- virtual
- build tray
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B33—ADDITIVE MANUFACTURING TECHNOLOGY
- B33Y—ADDITIVE MANUFACTURING, i.e. MANUFACTURING OF THREE-DIMENSIONAL [3-D] OBJECTS BY ADDITIVE DEPOSITION, ADDITIVE AGGLOMERATION OR ADDITIVE LAYERING, e.g. BY 3-D PRINTING, STEREOLITHOGRAPHY OR SELECTIVE LASER SINTERING
- B33Y50/00—Data acquisition or data processing for additive manufacturing
- B33Y50/02—Data acquisition or data processing for additive manufacturing for controlling or regulating additive manufacturing processes
Definitions
- manufacturing systems including rapid manufacturing and prototyping machines and systems, both by additive and subtractive methods, including 3D printing devices, with secure streaming of instructions for operating a manufacturing machine from a secure streaming server over a connection channel to a manufacturing machine, to manufacture 3D models on a virtually organized and optimized 3D printing build tray or build envelope in a production run from one or multiple sources.
- Rapid manufacturing and rapid prototyping are a relatively new class of technologies that can automatically construct physical three-dimensional (3D) objects from Computer-Aided Design (CAD) data.
- CAD Computer-Aided Design
- 3D printers or other manufacturing machines.
- 3D printers including any device using additive or subtractive manufacturing or for example incremental sheet forming
- 3D printing can be very time consuming to print one 3D object at a time. So, in some situations it may be beneficial to print multiple 3D objects in a single printing process or run. However, optimizing the positioning of multiple 3D objects can be complex and time consuming. Additionally, such optimizations often expose the 3D model to a printer operator, which can be a breach in providing secure 3D printing functionality. Thus, it is with respect to these considerations and others that the invention has been made.
- FIG. 1 shows a system diagram of an environment in which embodiments of the invention may be implemented
- FIG 2 illustrates a logical flow diagram generally showing embodiments of a process for positioning 3D objects represented by gizmos in a virtual 3D printer build tray;
- FIG. 3 illustrates a use case example of upfront manual 3D objects allocation on a build tray
- FIG. 4 illustrates a use case example of upfront automatic 3D objects allocation on build tray
- FIG. 5 illustrates a use case example of in-printing manual 3D objects allocation on build tray
- FIG. 6A and 6B illustrate use case examples of in-printing automatic 3D objects allocation on build tray
- FIG. 7 illustrates a use case example of after-printing manual 3D objects allocation on build tray.
- FIG. 8 illustrates a use case example of after-printing automatic 3D objects allocation on build tray.
- 3D printer or “manufacturing machine” refers to any such numerically controlled manufacturing machine, whether using additive or subtractive
- the manufacturing machine can be any numerically controlled manufacturing machine, such as three-dimensional additive manufacturing machines configured for rapid prototyping, three-dimensional printing, two-dimensional printing, freeform fabrication, solid freeform fabrication, incremental sheet forming, and stereolithography.
- Manufacturing machines can also include a subtractive manufacturing machine, including machines adapted for drilling, milling, turning, laser cutting, waterjet cutting, plasma cutting, wire electrical discharge cutting, cold, warm and hot forging metal fabrication, computer numerical control led fabrication machine, and/or an additive manufacturing machine, and/or an injection molding machine.
- the manufacturing machines can further include an extrusion manufacturing machine, a melting manufacturing machine, a solidification manufacturing machine, an ejection manufacturing machine, a die casting manufacturing machine, a stamping process machine, an assembly robot assembling 3D objects from pieces or blocks.
- the manufacturing machines can include a manufacturing machine configured to perform manufacturing using one or more of metal, wood, ice, stone, glass, nuclear materials, pharmaceuticals, edible substances, living substances, cells, chemical molecules, sand, ceramic materials, aluminium, silicon, carbides, silicon nitrides, silicon carbides, metal/ceramic combinations including aluminium/silicon nitride, aluminium/silicon carbide,
- aluminium/zirconium and aluminium/aluminium nitride including materials alterable by friction, heating and cooling.
- the manufacturing instructions that control the manufacturing machines can be, e.g., G- codes or other instructions according to any computer language, including numerical control (CNC) programming language, but also high-level languages like python, java, PHP, etc.
- CNC numerical control
- Such manufacturing instructions may define where to move to, how fast to move, and through what path to move the operative part of the manufacturing machine, such as the printing head, the extruder head, etc., as well as other manufacturing parameters.
- laser may be used in manufacturing machines and/or communications.
- Laser transmission, emission, beaming or communication may be a device and method to emit l ight through optical amplification.
- Laser may be a focused beam of light that can travel over long distances and it can emit.a single color of light, as well as emit pulses of light.
- Lasers can be of visible or invisible light, such as infrared laser, x-ray laser or ultraviolet laser.
- Components of a laser are typically a gain medium, laser pumping energy (electric current or light at a different wavelength), high reflector, output coupler, and laser beam.
- the operation of a laser can be continuous or pulsed.
- There are various types of lasers gas, excimer, chemical, fiber, semiconductor, photonic crystal, solid state, and so on).
- 3D printers can be connected to computing devices including mobile and tablet devices wirelessly or with wired connection such as USB 2.0, 3.0 and beyond, FireWire, 3G, 3.5G, 4G L TE, RadioFrequency, Ethernet, wirelessly with Wi-Fi, Bluetooth, laser beams, and so on. Those connections are often not secure.
- the data connections employed to transmit, receive, or manipulate data virtually, such as 3D models, may be achieved with any one or more of the mentioned suitable data connection methods.
- 3D printing or additive manufacturing may be a process of joining materials to make 3D objects from 3D model data, usually layer upon layer, as opposed to subtractive manufacturing methodologies, such as traditional machining where the object is shaped by removing material.
- additive manufacturing such as traditional machining where the object is shaped by removing material.
- 3D printer operator or “printer operator” refers to a person or persons operating a 3D printer or a 3D printing production system.
- a 3D printer operator in this invention may be a 3 rd party, such as a 3D printing facility carrying out 3D printing on behalf of customers, or the customer who has access to a 3D printing facility production process via virtual online resources for build tray allocation optimization. The latter option may be provided to the customer as a service, or the 3D printer operator responsible for the actual 3D printing facility may perform the duties of a 3D printer operator on behalf of the customer.
- the duties of a 3D printer operator may include one or more of the following: receiving print job requests, scheduling print jobs into production runs, managing the production run process, post processing the manufactured items (remove support material, finishing of parts, cleaning parts), preparing the items for shipping or pickup by customers and so on.
- manufacturing single parts usually has a lower production priority compared to manufacturing several parts in the same production run. Therefore optimization of the 3D printing runs is important.
- the term "provider,” “customer,” or “design owner” may refer to a person, company, or entity, which provides a 3D model to be printed.
- the term “3D model” refers to any computer model of a 3D object to be manufactured, such as file(s) in any of the computer aided design (CAD) file format, STL file(s), or additive manufacturing file format (for example .3ds, .MDX, .3CT, ACIS, ArchiCAD library part, BE-Bridge, CAD data exchange, COLLADA, AutoCAD DXF, Design Web Format, DGN, .dwg, Geometric Description Language, IGES, KernelCAD, Open Design Alliance, OpenCTM, Parasolid, PLY, PRC, Product data record, Revizto, STL, VOA 6.1 , VDA-FS, Wavefront .obj). It can also be one or more files providing views of the 3D object in any image file format.
- the 3D models can be stored in a
- the term "gizmo" or “gizmo container” refers to a virtualized 3D shape that represents the exterior of a 3D object without exposing the 3D model of the 3D object.
- the gizmo can be displayed to a printer operator such that the gizmo may be positioned (either automatically or by the printer operator) on a virtual 3D printer build tray.
- the terms "build tray” and "build envelope” are used to mean the same.
- a gizmo may be a rounding shape, which rounds 3D object external surface; this is a derivative of a 3D object, and it cannot be printed or used as a 3D object. It may have the same or slightly bigger (parametric value) external dimensions of the 3D object that it represents.
- a gizmo may be a standard or predetermined shape, such as, for example, a cone, a cylinder, a sphere, a box, a pyramid, or the like, or any combination thereof. However, other predetermined shapes or combinations of shapes may be employed.
- a gizmo may be an approximation of an underlying 3D
- This approximation may be a lower resolution representation of the exterior of the corresponding 3D object.
- the degree or level of resolution may be defined automatically or by a provider of the 3D model (e.g., the designer/owner of the 3D model). In this way, the provider has control of how a 3D object is represented as a gizmo to a printer operator.
- the gizmo limits a printer operators views of the actual model in varying resolutions (which may hide, conceal, or otherwise suppress some or all of the angles or views of a 3D object).
- the gizmo may hide the exact contours of the model as well or as lightly as the provider (e.g., design owner) allows.
- the provider can define a default level at the time of account creation or this can be offered to the provider by the system, in the beginning or at every submission of new models.
- the printer operator can request different resolution so that the operator or the system (automatically) can position multiple gizmo with higher effeiciency (e.g., closer together).
- the provider can allow a more accurate view (e.g., a higher resolution).
- the level of trust and corresponding 3D object resolution can change (e.g., if the provider requests such a change).
- 3D models can be stored in a storage based on file system, relational database, non- relational database, non-SQL database, microchip, memory hardware, software matrix, etc.
- Embodiments of data structures are not limited to matrix data structures. These alternative data structures can be any array or table data structures, one-dimensional or multi-dimensional.
- Matrix data structure consists of columns, rows and other dimensions (matrix can be multidimensional). Each row and column can have a unique name, by which it is possible to identify value.
- a matrix structure can be replaced by any other type of data structure, such as record, circular array or other types of arrays and structures to store, organize, and use the 3D model data with the help of computing devices. More than one different data structures can in some cases be used to store the 3D model or other data, such as a linked data structure and a matrix data structure.
- Array data structures may include bit arrays, bitboards, arrays, hashed array trees, heightmaps, lookup tables, circular, control, image, dynamic arrays, bit fields, bidirectional maps, gap buffers, matrices, sorted, sparse arrays, sparse matrices, variable length arrays, parallel arrays and so on.
- Data structures may include heaps, deques, stacks, strings, hash tables, multiset, priority queues, multimaps, trees, graphs, and Vlists for example.
- Storage can be one-way and two-way.
- One-way storage may work with a data requesting part of software or hardware only in one way. This means that data requestor can only write data or only get data or both.
- This storage may have a number of dynamic and/or static controls to restrict or allow data requestor.
- Dynamic and static controls can be for example restriction by IP, Subnet identificationor, Virtual network identificationor, location identificator, Virtual machine name identificator, running 3D printing job identificator, physical computer or server identificator, mobile device identificationor etc.
- Dynamic controls can take into account historical information, business rules, current set parameters, etc.
- Static controls can be, for example, set up in the administration panel or directly on the server. Retrieving the 3D model data from storage can happen based on end-user query or processing by applications.
- Secured delivery of 3D models can be via and from one server storage or cloud storage consisting of many servers.
- This server or servers may have modules to process 3D models into manufacturing instructions and manufacturing instructions to secure or unsecure stream.
- This stream can be secured or unsecured (encrypted or unencrypted) and the connection between the source of 3D models and the streaming server can be secured in the same way as other secure connections in the current invention using any method of encryption and decryption, other type of security or unsecured.
- the data communication, secured or unsecured can happen between components of the system installed on the ground or above the ground on Earth, or in Space (both on orbit or near space orbit), a space object or component thereof.
- the secure or non-secure connections over a data communication channel can be provided by any technology used for or feasible for using for connectivity and communications to carry out the current invention, including for numerically controlling manufacturing machines, e.g., any computer network using any communication media (i.e., wireless or wired), optical such as laser beam based
- communications e.g., Internet Protocol, or Ethernet protocol, etc.
- scale e.g., near field network, personal network, local area network, wide area network.
- virtual private networks, peer-to-peer connections, or over satellite communication channels, including laser communication channels may be used.
- Salting can be randomly generated data that may be used to a one-way function as additional input to hash a password, key, or other data value. Salt, resulting from salting, may be commonly used and/or concatenated with the data value such as password or key.
- each part of the 3D model file can be encrypted or/and hashed with different algorithms and hash functions, any other mathematical functions can be applied.
- the cryptographic hash functions can include functions such as message digest algorithms (MD4, MD5), secure hash algorithms (SHA- 1 , SHA-2, SHA-3), Skein, Keccak, RadioGatun, PANAMA, and many others.
- a cryptographic hash function can have four main properties: it is easy to compute the hash value for any given message; it is infeasible to generate a message that has a given hash; it is infeasible to modify a message without changing the hash; it is infeasible to find two different messages with the same hash.
- non-cryptographic hash functions can be used as well as other one-way functions having similar properties (i.e., easy to compute on every input, but hard to invert given the image of a random input) can be used for hashing.
- Hashing can be performed using nonlinear table lookup. Encryption and decryption of data in the secure connection to 3D printer can use AES 128, 256 or any other
- 3D object allocation for 3D printing on a 3D printer build tray may include, for example:
- Upfront Automatic 3D objects Allocation on build tray - before printing, software automatically and optimally allocates 3D objects in a 3D space, which has dimensional limitations of a 3D printer build tray.
- Rapid manufacturing and rapid prototyping are a relatively new class of technologies that can automatically construct physical 3D objects from Computer-Aided Design (CAD) data.
- CAD Computer-Aided Design
- 3D printers There is a growing number of 3D printers (including any device using additive or subtractive manufacturing or for example incremental sheet forming) around the world, at homes and offices. Most of such 3D printers lack secure 3D printing
- Secure 3D printing can employ 3D printing that takes place with security that may be either sufficient for the intended purpose or with high level of security such as encrypted connection, encoded, hashed encrypted 3D model data, secure devices and 3D printers and so on or their combination.
- Digital Rights Management (DRM) systems and schemes are one way to achieve more secure 3D printing than without any security features and functionality but these usually include wide collaboration between various parties of the ecosystem, such as the manufacturers and service providers in the 3D printing industry to agree on for example file formats, encryption standards for the 3D printers, and their connectivity. Such standards do not currently exist across all 3D printers, but may be in some limited use in the enterprise environments. These DRM systems are also often manufacturer dependent and not compatible with each other.
- 2D printing and copying can be used to make copies of copyrighted materials or other materials protected by other types of intellectual property rights. While some technologies exist to inhibit copying of 2D objects, e.g., documents with security features such as watermarks, holograms, straps, UV or IR glowing, etc.; however, no universally applicable technology exists to control reproducing and copying of copyrighted materials or other protected materials.
- 3D objects can be subjects to different types of intellectual property rights independent from each other. These rights may vary depending on the country, but may include copyright rights (e.g., as sculptures, figurines, architectural objects, etc.), industrial design or design patent rights (e.g., a new shape of a product such as a vase or a chair), 3D trademark rights, patent rights, utility 3D model rights, personality rights (e.g., the likeness of a person), or the like.
- copyright rights e.g., as sculptures, figurines, architectural objects, etc.
- industrial design or design patent rights e.g., a new shape of a product such as a vase or a chair
- 3D trademark rights e.g., patent rights, utility 3D model rights
- personality rights e.g., the likeness of a person
- 3D printing with 3D scanning can make possible 3D copying, i.e., a process where first a digital 3D model of an object is made by 3D scanning of the object and then a 3D copy of the 3D object is made by 3D reproducing the object, similarly to the process of digital 2D copying.
- 3D scanning can leave out details that are outside the view of the scanner, such as an internal structure.
- manufacturers, designers, and other intellectual property owners can try to create 3D models that are more intricate and complex in structure, design and/or execution (materials, textures, finishing), have moving parts and mechanics or complex patterns and other features inside or outside or both, internal structures (holes, cavities, formations, shapes or patterns), which may be invisible to 3D scanning.
- internal structures holes, cavities, formations, shapes or patterns
- X-rays may be used to reveal the internal structures of such objects.
- Secure 3D streaming may be an alternative way of distributing and printing 3D models by streaming them in pieces, encrypted, with the aim of ensuring that the source file is not transferred and exposed to the 3D printer or the user of the 3D printer during the printing process, while making it possible to reproduce the object or objects according to the 3D model(s).
- the original 3D file of the 3D object such as a CAD file or a STL file may not sent to the manufacturing machine, but may be kept in a secured system and instead, only the instructions for controlling the manufacturing machine (e.g. the so-called G- codes) that are specific to the manufacturing machine may be streamed to the manufacturing machine. Furthermore, such instructions may be secured so that only a specific manufacturing machine can make use of them.
- 3D printing production systems for manufacturing, in a single production run, many 3D models received from one or multiple sources may include organizing, with the help of software programs or applications, such multiple 3D models onto a virtual 3D printing build tray in order to optimize the printing process in regards to the use of time, resources, and materials, which may reduce the cost of the printing process.
- this process can be rather complex and may expose the original source files of the 3D models (currently and commonly these are CAD or STL files but in the future other source file formats can be used alongside or instead of these) during the file and build tray allocation process by the 3D printer operator.
- This optimization can be performed using software programs either on a physical computing device, offline, or attached to the network, or virtual software over the network or in a so-called cloud environment.
- the operator of the 3D printer or the 3D printing manufacturing system may collect the 3D printing jobs (3D models) from one or many providers/sources (such as emails, physical storage media, online orders and so on) and may organize the corresponding 3D models onto the virtual 3D printing build tray.
- the virtual 3D printing build tray represents in a virtual form a specific build tray of a specific 3D printer.
- the sources/providers of 3D models can be persons or organizations sending the 3D models directly via email or other means of communication to the 3D printer operator.
- the 3D printer operator may receive the 3D printing jobs as 3D models via email or other electronic communications channels, order fulfilment systems such as online services, delivered on physical memory sticks and memory cards or other physical media, and so on. These methods are often not secured, which can leave the original 3D models exposed to theft and/or copying.
- the build tray configuration may be locked and the contents of the virtual build tray can be converted into another format (for example STL, G-codes) or transferred without conversion to be printed on a 3D printer.
- Sending the 3D printable information to a 3D printer may occur from a physical computer with the help of which the optimization was performed using locally installed or remotely accessed software or application, directly via a connecting cable to the 3D printer, or via a communications network to the 3D printer.
- the 3D printer itself may include optimization software, a display, and a user interface for performing optimization tasks directly on the manufacturing device.
- the resulting optimized virtual build tray can be stored locally on the computer, on the 3D printer, or in a remote resource, such as a cloud data storage, a physical storage device accessible by the 3D printer, or at a remotely located data center, and transferred to the 3D printer via a communications network.
- 3D printer operator receives (by email, other electronic means, or in a physical storage device such as a USB stick, memory card) a 3D file or files ⁇ CAD, STL) from a
- 3D printer operator can receive many 3D files from one or more customers or other entities to be printed. 3. Using 3D file handling and 3D printing optimization software on a computing device with a user interface and a display or on a 3D printer with a user interface and a display (such software can also be a virtual software accessible remotely on a server) 3D printer operator may need to correct, alter, manipulate or optimize the 3D file or files as necessary for printing correctly on a 3D printer. This step may include automatically or manually adding, modifying, or removing 3D printing supports and bridges, for example, in the 3D file for optimal printing results and use of materials, editing other parameters such as look, scale, precision, strength, finish, and so on. 4.
- 3D printer operator can organize one or more 3D files onto a virtual representation of a 3D printing build tray /build envelope of a 3D printer. This stage may be referred to as printing build tray allocation. Objects build orientation can be optimized at this stage as well. 3D printer operator may try to position optimally as many objects as possible onto a 3D printing build envelope during a single production run (3D printing session, which can last hours or even days). This optimization process may reduce cost and time, for example, required for 3D printing of the files into physical objects, by manufacturing on a single 3D printing build tray the optimum amount of objects, positioned optimally in relation to each other, using preferably less time and material.
- 3D printer operator can lock the build tray configuration. Locking the build tray means that no more changes will usually be done to the positioning, orientation, and other parameters and qualities of the objects on the virtual 3D printing build tray prior to initiating 3D printing.
- a software program (local or remote) prepares the virtual build tray and its virtually positioned CAD files into one or more STL files to be manufactured on a 3D printer. This process can include slicing the STL file or files into G-codes for 3D printing. G-codes are commonly used for operating 3D printers.
- the STL file or G-codes may be sent over the network or directly from the computing device using a physical cable (on in some cases wirelessly) to the 3D printer for manufacturing the corresponding objects.
- the 3D printer manufactures them either directly from received G- codes or by slicing the STL file into G-codes first.
- the above process may be improved by a virtual 3D printer build tray optimization method and system for receiving, collecting, optimizing, and organizing one 3D file or multiple 3D files onto a virtual build tray representing a physical printing build tray of a 3D printer, such file or files originating from one or more sources without access to the original source files.
- a virtual 3D printer build tray optimization method and system for receiving, collecting, optimizing, and organizing one 3D file or multiple 3D files onto a virtual build tray representing a physical printing build tray of a 3D printer, such file or files originating from one or more sources without access to the original source files.
- FIG. 1 shows a system diagram of an environment in which embodiments of the invention may be implemented.
- the numbers in FIG. l may correspond to the following functions, actions, or steps:
- Realtime action broker for example realplexor, comet, waterspout.
- Realtime action brokers exchange near real time information among system modules, including javascript and ajax in browser on the client's side. Sends action for realtime event invocation. Initiates a new long polling request from the browser.
- the method for virtual build tray optimization and organization described in this invention needs to restrict access to the original source files and allow securely streaming or otherwise transferring the optimized virtual build tray contents from a secured environment or session to a 3D printer for 3D printing the files on the virtual build tray into physical objects on a physical build tray.
- Such virtual build tray optimization method and system must allow remote access, using virtual computing resources such as virtual software applications or cloud computing resources over a communications network by 3D printer operators and other users, alone, together, simultaneously, or in collaboration.
- the virtual build tray allocation tools and resources in the form of software applications, can reside within a virtual remote computing resource which is separate from the 3D printer operators computing resources and networks or within the same network and computing resources than those used by the 3D printer operator and accessed locally on the computer or over the network connection in the same physical network, such as a virtual application within a corporate firewall, or both.
- This current invention describes a method and system for 3D printing one or multiple source files from one or multiple file sources, virtually organizing such file or files into a single or several virtual 3D printing build trays without having access to the actual original source files and securely 3D streaming the contents of such organized 3D printing build trays to a 3D printer.
- Digital Rights Management systems and methods can be used to identify 3D printers and authorize them to print the contents of a virtual build tray.
- 3D streaming cannot be used to securely 3D print 3D files from one or multiple sources on a single build tray and single session due to the limitation that during secure 3D streaming the original source files are not available, exposed and transferred to the 3D printer or the 3D printer operator.
- a 3D printer operator needs access to the original CAD source files or .STL files to optimize such files on a virtual 3D printing build tray for 3D printing on a 3D printer, especially in a production system where optimization is important. As described earlier, this is done using a software application on the computer or a virtual application accessed remotely (on a cloud computing platform, a shared computing resource over the network). If no access to the source file is provided it cannot be optimized in the 3D printing process. Optimization is used to modify certain properties such as the position or orientation of the 3D files and the resulting printing quality and cost for each manufactured item on a 3D printer.
- the current method is most suited for organizing and printing 3D models which have been optimized for 3D printing by the person or persons who created or optimized the 3D models so that when the 3D printer operator receives the 3D models it is no longer necessary to alter the qualities and properties of the 3D models but only the orientation or position, for example.
- the 3D models are ready for printing on one or more specific 3D printers as is when received by the 3D printer operator, requiring little or no modification of the single 3D models, making the current invention most suited for prototyping, design, manufacturing and production of 3D models the source and quality of which can be trusted, has been verified, complies with the intended 3D printing technology, for example due to the source of the 3D models being an experienced designer or operator of the software used for creating the 3D models and able to optimize the 3D models for 3D printing on named 3D printers and using named 3D printing technologies.
- the 3D printer operator may create 3D printing build tray configurations for repeated use, using 3D models that are suitable for printing in the same production run, positioning them onto the virtual 3D printing build tray and locking the build tray configuration after the positioning is considered optimal. This method saves time and effort.
- These virtual configurations of 3D printing build trays consisting of already optimally positioned objects may be stored in a database, either ,in STL or in G-codes format, and streamed to a 3D printer when needed.
- the goal of the invention is achieved by a method and a system where the original 3D fi le of the 3D object such as a CAD file or STL file is not sent to the manufacturing machine or the computing device of the 3D printer operator for optimization and 3D printing, but is kept in a secured system and instead, only the instructions for controlling the manufacturing machine (e.g. so called G-codes) that are specific to this manufacturing machine are streamed to the manufacturing machine. Furthermore, such instructions are secured so that only a specific manufacturing machine can make use of them.
- G-codes the instructions for controlling the manufacturing machine
- the current invention can be used for creating and storing configurations of locked or unlocked build trays for secure 3D streaming at any moment after their creation.
- Unlocked trays can be modified after creation, locked build trays are ready for production. This is useful when the preparation such as slicing of the contents of the virtual build trays into G-codes takes a long time.
- the ready G-codes can be stored in a secure storage as shown in FIG 1 (6) after slicing, for rapid retrieval and deployment in production runs without need to create G-codes each time for the build trays.
- the virtual build trays are already sliced and encrypted, ready for secure 3D streaming onto 3D printers that have the capability to decrypt and use them in 3D printing. After optimization, locking and initiating submission to storage ( 1), the virtual build tray data is automatically broken into pieces, each piece can be encrypted and stored separately in the database or databases.
- a 3D models source for the 3D printer operator is marked in FIG. 1 and named
- Gizmo comparator module is shown in FIG. 1. Gizmo comparator is placed separately in the exemplary system because object simplification is a computing resource consuming process. It can also be placed on the streaming server but it can require its own server cloud. Gizmo comparator asks the current status of printing from streaming server.
- the object allocator is called, which calls gizmo comparator to get the simplified models of the 3D objects. Object allocator can then try to allocate the gizmos on the 3D printing build tray/platform until best combination is found. Some objects may be printed while others will wait in the printing queue.
- Object allocator in FIG. 1 is in or with streaming servers. It can be but does not have to be located with or at the same location than the streaming servers. In the exemplary system it is placed with streaming servers due to security of the 3D models; streaming server has secure access to secure storage.
- FIG. 2 illustrates a logical flow diagram generally showing embodiments of a process for positioning 3D objects represented by gizmos in a virtual 3D printer build tray.
- a process such as process 200 may be implemented by a system, such as that shown in FIG. 1. Additionally, process 200 may be employed or performed by one or more computing devices, which may be in the form of software, hardware, or a combination thereof.
- Process 200 may begin, after a start block, at block 202, where one or more 3D models may be obtained for at least one provider.
- each provider may send (e.g., by email) or otherwise provide (e.g., via a flash drive) one or more 3D models to an intermediate system prior to providing to the printer.
- Process 200 may proceed to block 204, where one or more 3D objects may be determined from the obtained 3D models.
- Each 3D object may be an object to be printed by a 3D printer based on a 3D model.
- Process 200 may continue at block 206, where a gizmo may be determined for each 3D object.
- the gizmo may be a virtual representation of a corresponding 3D object.
- the gizmo may be a predetermined shape (which may be assigned a size that is slightly larger than the exterior of the 3D object).
- the gizmo may be a lower resolution version of the exterior of the 3D object (i.e., the 3D model).
- the level of resolution may be determined by the provider.
- a printer operator may request higher levels of resolution (and/or additional views of the 3D model) - which may or may not be provided or granted by the provider - in order to be able to optimize the printing batch, from one or more designers for one or more models.
- the system may do these requests automatically, leaving out of the printing batch those models that cannot be guaranteed to work, and add them to other build trays. In this way, higher levels of 3D printer build tray optimizations may be possible with higher resolution versions of the 3D model.
- the more complex the model the more views may be necessary to provide enough information to generate the gizmo.
- process 200 may proceed next to block 208, where each gizmo may be automatically positioned in a virtual 3D printer build tray.
- the gizmos may be positioned such that a position for each gizmo does not overlap the position of each other gizmo. So, the gizmos do not overlap one another, which can allow for each 3D object to be printed separately, but during a same printing process.
- the system may automatically determine if additional bridges, supports, platforms, or the like may be needed to support a 3D object when printed.
- the system may determine the location of these supports based on predetermined rules regarding various shapes, sizes, weight limits, material types, or the like employed by a 3D model of a 3D object.
- the system can create or suggest where to create supports and bridges after the provider (e.g., design owner) has submitted to the system sufficient views of the model or its gizmo to the printer operator. This way the system or the operator knows how much space (and material) the included model takes with supports.
- the gizmo may be modified to account for the supports, so that an operator does not have to deal with the supports.
- These message may include adjustments in lower resolution views of the model, where to add supports and bridges, or how to modify the model in other ways to make it more printable. For example, if the printer operator receives from the system, allowed by provider, a number of views (in a virtual viewing environment and not enough to reproduce a copy of the model) of the 3D model he can ask the provider to make also structural changes to the model itself.
- the printable gizmo may be created after the changes and supports have been added.
- each gizmo positioned in the virtual 3D printer build tray may be displayed to the printer operator.
- Each 3D model that corresponds to each 3D object represented by each gizmo may be unavailable to the printer operator. In this way, the operator can view the positioning of the 3D objects in the build tray without seeing the actual objects of the 3D models (or seeing a lower resolution version of the objects).
- Process 200 may continue next at block 210, where the printer operator may be enabled to manually position the gizmos on the virtual 3D printer build tray.
- the gizmos may be automatically positioned (at block 208), and the user can then adjust the positioning of the gizmos.
- the user may manually position the gizmos without them being previously positioned.
- the system may provide additional optimization positioning of the gizmos, which may be based on constraints of the 3D printer itself or on the 3D objects that correspond to the gizmos.
- positioning a gizmo on a virtual 3D printer build tray may include providing 3D coordinates within the possible printing space/limits of the printer, providing a rotation and/or orientation, or the like.
- process 200 may proceed to block 212, where the virtual 3D printer build tray may be locked based on the gizmo positions.
- the operator or system defines the model as printable, it may be locked such that gizmos may not be repositioned by the operator, system or other application.
- one or more gizmos may be locked, such that printing may begin on the locked gizmos, but that the operator or the system can continue to position the remaining unlocked gizmos. In this way, the printing process can begin for one or more 3D objects, while additional optimizations are performed on other gizmos/objects.
- the model is locked (if printed alone) it's prepared for printing (g-codes or other instructions are generated for the model including supports if needed) or if printed as part of a build tray, the instructions for the whole build tray are calculated, sent to print, or stored (if not printed immediately)
- Process 200 may continue at block 214, where each gizmo positioned in the virtual 3D printer build tray may be converted back to each corresponding 3D object.
- the virtual 3D printer build tray may have 3D coordinates and/or orientation for each 3D model that define the 3D objects that are represented by the gizmos based on the gizmo positions.
- process 200 may continue at block 216, where instructions for printing each converted 3D object may be provided to the printer.
- instructions for printing the 3D objects may be generated based on the virtual 3D printer build tray and the 3D models for each corresponding 3D object represented by a gizmo.
- the virtual 3D printer build tray may be sliced into the appropriate machine code used by the printer (e.g., g-codes).
- the system may send the g-codes or other corresponding machine codes or instructions such as bitmaps to the 3D printer to print the 3D objects in the positions determined by their corresponding gizmos based on the provided 3D models.
- the printer operator can position the 3D objects, by way of manipulating their gizmos, without having access to the 3D model.
- the virtual 3D printer build tray may be sliced and converted to the corresponding machine instructions, so that the 3D models are not provided to the printer.
- the system may provide an overall model of the virtual 3D printer build tray to the printer, and the printer can then generate the appropriate machine code for printing the 3D objects.
- process 200 may terminate and/or return to a calling process.
- process 200 may loop (not shown) to block 206 to determine gizmos for new 3D objects that may be positioned during the printing process.
- the system may automatically modify and/or the printer operator may manually modify the positioning of unprinted 3D objects (i.e., where printing has not started) or new 3D objects during printing.
- the gizmos of the unprinted 3D objects or new 3D objects may be determined, such as at block 206.
- the system may obtain a current status of the printer to determine if the printer has started to print an object. Based on this current status and the positioning of the gizmos in the virtual 3D printer build tray, the system may automatically position (e.g., at block 208) and/or the operator may manually position (e.g., at block 210) new or unprinted 3D objects to create an updated virtual 3D printer build tray.
- FIG. 3 provides upfront manual 3D objects allocation on a build tray
- FIG. 4 provides upfront automatic 3D objects allocation on a tray
- FIG. 5 provides in- printing manual 3D objects allocation on a build tray
- FIGS. 6A-6B provides in-printing automatic 3D objects allocation on a build tray
- FIG. 7 provides after-printing manual 3D objects allocation on a build tray
- FIG. 8 provides after-printing automatic 3D objects allocation on a build tray.
- Embodiments may be combined in virtually any combination for the build tray optimization, creation, or production run.
- the embodiments described herein and shown in the various flowcharts may be implemented as entirely hardware embodiments (e.g., special-purpose hardware), entirely software embodiments (e.g., processor-readable instructions), or a combination thereof.
- software embodiments can include multiple processes or threads, launched statically or dynamically as needed, or the like.
- the embodiments described herein and shown in the various flowcharts may be implemented by computer instructions (or processor-readable instructions). These computer instructions may be provided to one or more processors to produce a machine, such that execution of the instructions on the processor causes a series of operational steps to be performed to create a means for implementing the embodiments described herein and/or shown in the flowcharts.
- these computer instructions may be stored on machine- readable storage media, such as processor-readable non-transitory storage media.
- FIG. 3 illustrates a use case example of upfront manual 3D objects allocation on a build tray.
- 3D printer user may position objects using their gizmos in a virtual environment (e.g., a virtual 3D printer build tray), and may not have access to 3D objects originals (e.g., the 3D models that define the 3D objects).
- This virtual environment is marked in FIG. 1 as box "Object on tray allocation UI and printing queue", or as box "Object on tray allocation UI and printing queue on mobile devices”, exchanging information with the system via API and Real-time API,.
- This virtual environment can be, for example, an interactive viewer or application, accessible over the network, in a virtual environment, or the viewer may be an application on a local computing device/other intermediate device. This can be done with a software or application using a gizmo container or containers.
- FIG. 4 illustrates a use case example of upfront automatic 3D objects allocation on build tray.
- a software application may position objects using their gizmos in a virtual environment. 3D printer operator can see the gizmos of objects and bu ild trays and choose automatic reordering of the gizmos (and their associated 3D models) on 3D printer build tray. 3D printer user or software may not have access to the 3D objects originals or 3D models at this stage, they may only be able to view the corresponding gizmo. In order to reorder and manipulate 3D objects on the 3D printer build tray space, software may use gizmos of the 3D objects to be printed. When allocation is final, gizmos coordinates may be transferred to a slicing module(s) or server(s) (marked as 3 in FIG. 1 ), which may slice the objects for the 3D printing process.
- FIG. 5 illustrates a use case example of in-printing manual 3D objects allocation on build tray. While printing on a 3D printer, when printing process has already started and the printing progress can be in the range of 0% to 100%, 3D printer operator may use software or application and can add more 3D models to the printing process, without actually stopping the 3D printing process. The operator may manipulate the gizmos of the 3D models such that the operator does not have access to the 3D models
- 3D printer operator can add more models to the same build tray and printing session in case there is unutilized, available space on the 3D printing build tray by employing gizmos that represent the models. This can be achieved using, for example, a virtual online viewer, where 3D printer operator using a keyboard, mouse, or any other Computer - Human interface or device can allocate a new gizmo for an object on the build tray. For this purpose printer can be automatically or manually paused or operate continuously without interruption.
- 3D printer operator can add a new 3D model to the bottom of the build tray, or on the same level up to which the other, previous 3D models had already been printed when the 3D printer was paused and/or model adding happened.
- gizmos may be employed to enable the operator to add new 3D models to the virtual 3D printer build tray, as described herein
- 3D printer can receive the G-codes of the new 3D model or models together with already-in-progress G-codes (for SLS and SLM) or it receives part of the G- codes required to print the new 3D model from the bottom of the 3D printing build tray (for FDM and SLA).
- new 3D models can be added to the bottom of the build tray, if the area is accessible by the 3D printing material extruder/nozzle. This can be automatically calculated based on the gizmos of the new 3D models and gizmos of the other 3D models on the 3D printing build tray.
- software can calculate the possibility to create supports, existing printed models parts or bridges to make a table, support or other area where the new 3D model can be placed. If such place cannot be found, the new 3D model can be printed on top of the previously allocated 3D models, using supports and a new raft.
- a newly added object is placed and printing is initiated from the layer that the 3D printer is currently printing. Correct placement may be done using gizmo containers of 3D objects printed partially until that moment and of new 3D objects to be printed.
- FIG. 6A and 6B illustrate use case examples of in-printing automatic 3D objects allocation on build tray. While 3D printing on a 3D printer, and if the printing process has already started, and the printing process is at any stage from 0% to 100% of progress, 3D printer operator can add more 3D objects to the 3D printer's queue without actually stopping the 3D printing process using software.
- gizmos may be employed to enable the new 3D models to be automatically added to the virtual 3D printer build tray, as described herein
- FIGS. 6A and 6B show the same stage of adding a new gizmo of a new object for a new model to an ongoing printing process from two different angles. For clarity and visibility, in FIG. 6B the Gizmo containers boundaries are not marked.
- FIG. 7 illustrates a use case example of after-printing manual 3D objects allocation on build tray. It may be possible to add new 3D models onto the 3D printing build tray even when the printing process has already finished if there is space left on the build tray for allocating and printing new objects, by using manual allocation of 3D objects using gizmos.
- gizmos may be employed to enable the operator to add new 3D models to the virtual 3D printer build tray, as described herein 3D printer operator can add more 3D models using software. Such 3D models can be printed on the same build tray utilizing the empty space left on the build tray.
- FIG. 8 illustrates a use case example of after-printing automatic 3D objects allocation on build tray.
- gizmos may be employed to enable the new 3D models to be automatically added to the virtual 3D printer build tray, as described herein. Software can automatically find the best position for new 3D objects using gizmos, which can be printed on the same build tray utilizing the empty space left on the build tray.
- new 3D object can be placed in almost any empty place of the 3D printing build tray, several laser or light beams may be used but a single beam does not have enough power to solidify the build material. Only at the intersection of the beams where more beams meet the material becomes solid. With these embodiments, it is possible to add new 3D models to almost any empty, available space in the 3D printing build tray. Using several lasers to solidify a particular point in the build material can also be used to improve detail and accuracy.
- a data source data storage
- trusted, verified 3D model sources customers such as designers, corporations, partners, employees or other entities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
Abstract
Embodiments are directed towards a method and system for 3D printing one or multiple source files from one or multiple file sources, virtually organizing such file or files into a single or several virtual 3D printing build trays without having access to the actual original source files and securely 3D streaming the contents of such organized 3D printing build trays to a 3D printer. The embodiments for virtual build tray optimization and organization described in this invention needs to restrict access to the original source files and allow securely streaming or otherwise transferring the optimized virtual build tray contents from a secured environment or session to a 3D printer for 3D printing the files on the virtual build tray into physical objects on a physical build tray.
Description
OPTIMIZED VIRTUAL 3D PRINTING BUILD TRAY ALLOCATION
CROSS-REFERENCE TO RELATED APPLICATIONS
This application claims priority to U.S. Provisional Patent Application Serial No.
61/865,239 filed on August 13, 2013, which is incorporated herein by reference. TECHNICAL FIELD
The present invention relates generally to the field of numerically controlled
manufacturing systems, including rapid manufacturing and prototyping machines and systems, both by additive and subtractive methods, including 3D printing devices, with secure streaming of instructions for operating a manufacturing machine from a secure streaming server over a connection channel to a manufacturing machine, to manufacture 3D models on a virtually organized and optimized 3D printing build tray or build envelope in a production run from one or multiple sources.
BACKGROUND
Rapid manufacturing and rapid prototyping are a relatively new class of technologies that can automatically construct physical three-dimensional (3D) objects from Computer-Aided Design (CAD) data. Usually these methods make use of additive manufacturing technologies such as 3D printers or other manufacturing machines. There is a growing number of 3D printers (including any device using additive or subtractive manufacturing or for example incremental sheet forming) around the world, at homes and offices. Most of such 3D printers lack secure 3D printing functionalities.
Moreover, 3D printing can be very time consuming to print one 3D object at a time. So, in some situations it may be beneficial to print multiple 3D objects in a single printing process or run. However, optimizing the positioning of multiple 3D objects can be complex and time consuming. Additionally, such optimizations often expose the 3D model to a printer operator, which can be a breach in providing secure 3D printing functionality. Thus, it is with respect to these considerations and others that the invention has been made.
BRIEF DESCRIPTION OF THE DRAWINGS
Non-limiting and non-exhaustive embodiments of the present invention are described with reference to the following drawings. In the drawings, like reference numerals refer to like parts throughout the various figures unless otherwise specified. For a better understanding of the present invention, reference will be made to the following Detailed Description, which is to be read in association with the accompanying drawings, wherein:
FIG. 1 shows a system diagram of an environment in which embodiments of the invention may be implemented;
FIG 2 illustrates a logical flow diagram generally showing embodiments of a process for positioning 3D objects represented by gizmos in a virtual 3D printer build tray;
FIG. 3 illustrates a use case example of upfront manual 3D objects allocation on a build tray;
FIG. 4 illustrates a use case example of upfront automatic 3D objects allocation on build tray;
FIG. 5 illustrates a use case example of in-printing manual 3D objects allocation on build tray;
FIG. 6A and 6B illustrate use case examples of in-printing automatic 3D objects allocation on build tray;
FIG. 7 illustrates a use case example of after-printing manual 3D objects allocation on build tray; and
FIG. 8 illustrates a use case example of after-printing automatic 3D objects allocation on build tray. DETAILED DESCRIPTION
Various embodiments are described more fully hereinafter with reference to the accompanying drawings, which form a part hereof, and which show, by way of illustration, specific embodiments by which the invention may be practiced. The embodiments may, however, be embodied in many different forms and should not be construed as limited to the
embodiments set forth herein; rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the embodiments to those skilled in the art. Among other things, the various embodiments may be methods, systems, media, or devices. Accordingly, the various embodiments may be entirely hardware embodiments, entirely software embodiments, or embodiments combining software and hardware aspects. The following detailed description should, therefore, not be limiting.
Throughout the specification and claims, the following terms take the meanings explicitly associated herein, unless the context clearly dictates otherwise. The term "herein" refers to the specification, claims, and drawings associated with the current application. The phrase "in one embodiment" as used herein does not necessarily refer to the same embodiment, though it may. Furthermore, the phrase "in another embodiment" as used herein does not necessarily refer to a different embodiment, although it may. Thus, as described below, various embodiments of the invention may be readily combined, without departing from the scope or spirit of the invention.
In addition, as used herein, the term "or" is an inclusive "or" operator, and is equivalent to the term "and/or," unless the context clearly dictates otherwise. The term "based on" is not exclusive and allows for being based on additional factors not described, unless the context clearly dictates otherwise. In addition, throughout the specification, the meaning of "a," "an," and "the" include plural references. The meaning of "in" includes "in" and "on."
As used herein, the term "3D printer" or "manufacturing machine" refers to any such numerically controlled manufacturing machine, whether using additive or subtractive
manufacturing methods. The manufacturing machine can be any numerically controlled manufacturing machine, such as three-dimensional additive manufacturing machines configured for rapid prototyping, three-dimensional printing, two-dimensional printing, freeform fabrication, solid freeform fabrication, incremental sheet forming, and stereolithography. Manufacturing machines can also include a subtractive manufacturing machine, including machines adapted for drilling, milling, turning, laser cutting, waterjet cutting, plasma cutting, wire electrical discharge cutting, cold, warm and hot forging metal fabrication, computer numerical control led fabrication machine, and/or an additive manufacturing machine, and/or an injection molding machine. The manufacturing machines can further include an extrusion manufacturing machine, a melting
manufacturing machine, a solidification manufacturing machine, an ejection manufacturing machine, a die casting manufacturing machine, a stamping process machine, an assembly robot assembling 3D objects from pieces or blocks.
The manufacturing machines can include a manufacturing machine configured to perform manufacturing using one or more of metal, wood, ice, stone, glass, nuclear materials, pharmaceuticals, edible substances, living substances, cells, chemical molecules, sand, ceramic materials, aluminium, silicon, carbides, silicon nitrides, silicon carbides, metal/ceramic combinations including aluminium/silicon nitride, aluminium/silicon carbide,
aluminium/zirconium and aluminium/aluminium nitride including materials alterable by friction, heating and cooling.
The manufacturing instructions that control the manufacturing machines can be, e.g., G- codes or other instructions according to any computer language, including numerical control (CNC) programming language, but also high-level languages like python, java, PHP, etc. Such manufacturing instructions may define where to move to, how fast to move, and through what path to move the operative part of the manufacturing machine, such as the printing head, the extruder head, etc., as well as other manufacturing parameters.
In various embodiments, laser may be used in manufacturing machines and/or communications. Laser transmission, emission, beaming or communication may be a device and method to emit l ight through optical amplification. Laser may be a focused beam of light that can travel over long distances and it can emit.a single color of light, as well as emit pulses of light. Lasers can be of visible or invisible light, such as infrared laser, x-ray laser or ultraviolet laser. Components of a laser are typically a gain medium, laser pumping energy (electric current or light at a different wavelength), high reflector, output coupler, and laser beam. The operation of a laser can be continuous or pulsed. There are various types of lasers (gas, excimer, chemical, fiber, semiconductor, photonic crystal, solid state, and so on).
3D printers can be connected to computing devices including mobile and tablet devices wirelessly or with wired connection such as USB 2.0, 3.0 and beyond, FireWire, 3G, 3.5G, 4G L TE, RadioFrequency, Ethernet, wirelessly with Wi-Fi, Bluetooth, laser beams, and so on. Those connections are often not secure. The data connections employed to transmit, receive, or
manipulate data virtually, such as 3D models, may be achieved with any one or more of the mentioned suitable data connection methods.
3D printing or additive manufacturing (AM) may be a process of joining materials to make 3D objects from 3D model data, usually layer upon layer, as opposed to subtractive manufacturing methodologies, such as traditional machining where the object is shaped by removing material. Several technologies are available for industrial uses, including rapid prototyping and rapid manufacturing, but increasingly so also for domestic and hobbyist uses. 3D printing is rapidly becoming as widespread as traditional 2D printing has become long ago.
As used herein, the term "3D printer operator" or "printer operator" refers to a person or persons operating a 3D printer or a 3D printing production system. A 3D printer operator in this invention may be a 3rd party, such as a 3D printing facility carrying out 3D printing on behalf of customers, or the customer who has access to a 3D printing facility production process via virtual online resources for build tray allocation optimization. The latter option may be provided to the customer as a service, or the 3D printer operator responsible for the actual 3D printing facility may perform the duties of a 3D printer operator on behalf of the customer. The duties of a 3D printer operator may include one or more of the following: receiving print job requests, scheduling print jobs into production runs, managing the production run process, post processing the manufactured items (remove support material, finishing of parts, cleaning parts), preparing the items for shipping or pickup by customers and so on. In a 3D production system, manufacturing single parts usually has a lower production priority compared to manufacturing several parts in the same production run. Therefore optimization of the 3D printing runs is important.
As used herein, the term "provider," "customer," or "design owner" may refer to a person, company, or entity, which provides a 3D model to be printed. As used herein, the term "3D model" refers to any computer model of a 3D object to be manufactured, such as file(s) in any of the computer aided design (CAD) file format, STL file(s), or additive manufacturing file format (for example .3ds, .MDX, .3CT, ACIS, ArchiCAD library part, BE-Bridge, CAD data exchange, COLLADA, AutoCAD DXF, Design Web Format, DGN,
.dwg, Geometric Description Language, IGES, KernelCAD, Open Design Alliance, OpenCTM, Parasolid, PLY, PRC, Product data record, Revizto, STL, VOA 6.1 , VDA-FS, Wavefront .obj). It can also be one or more files providing views of the 3D object in any image file format. The 3D models can be stored in a database or databases, a source of 3D models (4).
As used herein, the term "gizmo" or "gizmo container" refers to a virtualized 3D shape that represents the exterior of a 3D object without exposing the 3D model of the 3D object. The gizmo can be displayed to a printer operator such that the gizmo may be positioned (either automatically or by the printer operator) on a virtual 3D printer build tray. In the present invention the terms "build tray" and "build envelope" are used to mean the same.
A gizmo may be a rounding shape, which rounds 3D object external surface; this is a derivative of a 3D object, and it cannot be printed or used as a 3D object. It may have the same or slightly bigger (parametric value) external dimensions of the 3D object that it represents.
In some embodiments, a gizmo may be a standard or predetermined shape, such as, for example, a cone, a cylinder, a sphere, a box, a pyramid, or the like, or any combination thereof. However, other predetermined shapes or combinations of shapes may be employed.
In other embodiments, a gizmo may be an approximation of an underlying 3D
object/model (even though the actual model is not inside the gizmo when displayed to a printer operator). This approximation may be a lower resolution representation of the exterior of the corresponding 3D object. The degree or level of resolution may be defined automatically or by a provider of the 3D model (e.g., the designer/owner of the 3D model). In this way, the provider has control of how a 3D object is represented as a gizmo to a printer operator. In various embodiments, the gizmo limits a printer operators views of the actual model in varying resolutions (which may hide, conceal, or otherwise suppress some or all of the angles or views of a 3D object). The gizmo may hide the exact contours of the model as well or as lightly as the provider (e.g., design owner) allows. The provider can define a default level at the time of account creation or this can be offered to the provider by the system, in the beginning or at every submission of new models. In some embodiments, the printer operator can request different resolution so that the operator or the system (automatically) can position multiple gizmo with higher effeiciency (e.g., closer together). In various embodiments, if the relationship between
the 3D model provider and a select printer operator is trusted, then the provider can allow a more accurate view (e.g., a higher resolution). However, the level of trust and corresponding 3D object resolution can change (e.g., if the provider requests such a change).
3D models can be stored in a storage based on file system, relational database, non- relational database, non-SQL database, microchip, memory hardware, software matrix, etc. Embodiments of data structures are not limited to matrix data structures. These alternative data structures can be any array or table data structures, one-dimensional or multi-dimensional.
Matrix data structure consists of columns, rows and other dimensions (matrix can be multidimensional). Each row and column can have a unique name, by which it is possible to identify value. In various embodiments, a matrix structure can be replaced by any other type of data structure, such as record, circular array or other types of arrays and structures to store, organize, and use the 3D model data with the help of computing devices. More than one different data structures can in some cases be used to store the 3D model or other data, such as a linked data structure and a matrix data structure. Array data structures may include bit arrays, bitboards, arrays, hashed array trees, heightmaps, lookup tables, circular, control, image, dynamic arrays, bit fields, bidirectional maps, gap buffers, matrices, sorted, sparse arrays, sparse matrices, variable length arrays, parallel arrays and so on.
Data structures may include heaps, deques, stacks, strings, hash tables, multiset, priority queues, multimaps, trees, graphs, and Vlists for example.
Storage can be one-way and two-way. One-way storage may work with a data requesting part of software or hardware only in one way. This means that data requestor can only write data or only get data or both. This storage may have a number of dynamic and/or static controls to restrict or allow data requestor. Dynamic and static controls can be for example restriction by IP, Subnet identificator, Virtual network identificator, location identificator, Virtual machine name identificator, running 3D printing job identificator, physical computer or server identificator, mobile device identificator etc. Dynamic controls can take into account historical information, business rules, current set parameters, etc. Static controls can be, for example, set up in the
administration panel or directly on the server. Retrieving the 3D model data from storage can happen based on end-user query or processing by applications.
Secured delivery of 3D models can be via and from one server storage or cloud storage consisting of many servers. This server or servers may have modules to process 3D models into manufacturing instructions and manufacturing instructions to secure or unsecure stream. This stream can be secured or unsecured (encrypted or unencrypted) and the connection between the source of 3D models and the streaming server can be secured in the same way as other secure connections in the current invention using any method of encryption and decryption, other type of security or unsecured. The data communication, secured or unsecured, can happen between components of the system installed on the ground or above the ground on Earth, or in Space (both on orbit or near space orbit), a space object or component thereof.
The secure or non-secure connections over a data communication channel (as indicated as arrows between components of the system in FIG. 1 ) can be provided by any technology used for or feasible for using for connectivity and communications to carry out the current invention, including for numerically controlling manufacturing machines, e.g., any computer network using any communication media (i.e., wireless or wired), optical such as laser beam based
communications, communication protocol (e.g., Internet Protocol, or Ethernet protocol, etc.), or scale (e.g., near field network, personal network, local area network, wide area network. Also virtual private networks, peer-to-peer connections, or over satellite communication channels, including laser communication channels may be used.
Salting can be randomly generated data that may be used to a one-way function as additional input to hash a password, key, or other data value. Salt, resulting from salting, may be commonly used and/or concatenated with the data value such as password or key. During storage and streaming, each part of the 3D model file can be encrypted or/and hashed with different algorithms and hash functions, any other mathematical functions can be applied.
In various embodiments, the cryptographic hash functions can include functions such as message digest algorithms (MD4, MD5), secure hash algorithms (SHA- 1 , SHA-2, SHA-3), Skein, Keccak, RadioGatun, PANAMA, and many others. A cryptographic hash function can have four main properties: it is easy to compute the hash value for any given message; it is infeasible to generate a message that has a given hash; it is infeasible to modify a message without changing the hash; it is infeasible to find two different messages with the same hash. Instead of cryptographic hash functions, non-cryptographic hash functions can be used as well as other one-way functions having similar properties (i.e., easy to compute on every input, but hard to invert given the image of a random input) can be used for hashing. Even though general- purpose hash functions can be used, also special purpose hash function can be designed, taking into account the nature of the data to be hashed (i.e., the instructions for controlling the manufacturing machine). Checksum functions, cyclic redundancy checks, checksums, and fingerprinting functions can be used for hashing.
Hashing can be performed using nonlinear table lookup. Encryption and decryption of data in the secure connection to 3D printer can use AES 128, 256 or any other
encryption/decryption algorithm including proprietary algorithms.
The various embodiments described herein may be achieved by a solution that is software, hardware, or a combination thereof.
3D Printing Environment
3D object allocation for 3D printing on a 3D printer build tray may include, for example:
• Upfront Manual 3D objects Allocation on build tray - before printing, 3D printer operator manually and optimally positions objects in a 3D space, which has dimensional limitations of a 3D printer build tray.
• Upfront Automatic 3D objects Allocation on build tray - before printing, software automatically and optimally allocates 3D objects in a 3D space, which has dimensional limitations of a 3D printer build tray.
Rapid manufacturing and rapid prototyping are a relatively new class of technologies that can automatically construct physical 3D objects from Computer-Aided Design (CAD) data. Usually these methods make use of additive manufacturing technologies such as 3D printers or other manufacturing machines. There is a growing number of 3D printers (including any device using additive or subtractive manufacturing or for example incremental sheet forming) around the world, at homes and offices. Most of such 3D printers lack secure 3D printing
functionalities. Secure 3D printing can employ 3D printing that takes place with security that may be either sufficient for the intended purpose or with high level of security such as encrypted connection, encoded, hashed encrypted 3D model data, secure devices and 3D printers and so on or their combination. Digital Rights Management (DRM) systems and schemes are one way to achieve more secure 3D printing than without any security features and functionality but these usually include wide collaboration between various parties of the ecosystem, such as the manufacturers and service providers in the 3D printing industry to agree on for example file formats, encryption standards for the 3D printers, and their connectivity. Such standards do not currently exist across all 3D printers, but may be in some limited use in the enterprise environments. These DRM systems are also often manufacturer dependent and not compatible with each other.
2D printing and copying can be used to make copies of copyrighted materials or other materials protected by other types of intellectual property rights. While some technologies exist to inhibit copying of 2D objects, e.g., documents with security features such as watermarks, holograms, straps, UV or IR glowing, etc.; however, no universally applicable technology exists to control reproducing and copying of copyrighted materials or other protected materials.
The problem is also important in 3D printing and copying. Protecting the original 3D files may be important if the file in question is a valuable means of direct monetization for the copyright or intellectual property (IP) owner or organization. 3D objects can be subjects to different types of intellectual property rights independent from each other. These rights may vary depending on the country, but may include copyright rights (e.g., as sculptures, figurines, architectural objects, etc.), industrial design or design patent rights (e.g., a new shape of a product such as a vase or a chair), 3D trademark rights, patent rights, utility 3D model rights, personality rights (e.g., the likeness of a person), or the like. While certain fair use provisions
may exist allowing some copying in limited circumstances, protecting intellectual property rights in 3D objects and 3D models may be very important to the right holder. However, in some cases the IP owner may want to distribute such content for free, as a gift or reward to consumers and customers, while still keeping full control of the original 3D model and its distribution. Combining 3D printing with 3D scanning can make possible 3D copying, i.e., a process where first a digital 3D model of an object is made by 3D scanning of the object and then a 3D copy of the 3D object is made by 3D reproducing the object, similarly to the process of digital 2D copying. However, copying with 3D scanning can leave out details that are outside the view of the scanner, such as an internal structure. To further reduce the possibility and impact of unauthorized reproduction using 3D scanning, manufacturers, designers, and other intellectual property owners can try to create 3D models that are more intricate and complex in structure, design and/or execution (materials, textures, finishing), have moving parts and mechanics or complex patterns and other features inside or outside or both, internal structures (holes, cavities, formations, shapes or patterns), which may be invisible to 3D scanning. However, X-rays may be used to reveal the internal structures of such objects.
Protecting the integrity and security of the original 3D models, complex or simple, becomes therefore ever more important in the 3D printing economy. The rapidly growing additive manufacturing / 3D printing industry may benefit from new secure ways to ensure integrity of sensitive intellectual property rights, such as original branded consumer goods and their corresponding 3D model data, at all stages of the value chain from creation to sales to customer.
Secure 3D streaming may be an alternative way of distributing and printing 3D models by streaming them in pieces, encrypted, with the aim of ensuring that the source file is not transferred and exposed to the 3D printer or the user of the 3D printer during the printing process, while making it possible to reproduce the object or objects according to the 3D model(s). In secure 3D streaming the original 3D file of the 3D object such as a CAD file or a STL file may not sent to the manufacturing machine, but may be kept in a secured system and instead, only the instructions for controlling the manufacturing machine (e.g. the so-called G- codes) that are specific to the manufacturing machine may be streamed to the manufacturing
machine. Furthermore, such instructions may be secured so that only a specific manufacturing machine can make use of them. However, not all 3D printers may have network connectivity and even when they do the connection may not be secured, encrypted, or otherwise. Securely streaming of 3D files onto a 3D printing process can improve some security issues. 3D printing production systems for manufacturing, in a single production run, many 3D models received from one or multiple sources may include organizing, with the help of software programs or applications, such multiple 3D models onto a virtual 3D printing build tray in order to optimize the printing process in regards to the use of time, resources, and materials, which may reduce the cost of the printing process. However, this process can be rather complex and may expose the original source files of the 3D models (currently and commonly these are CAD or STL files but in the future other source file formats can be used alongside or instead of these) during the file and build tray allocation process by the 3D printer operator. This optimization can be performed using software programs either on a physical computing device, offline, or attached to the network, or virtual software over the network or in a so-called cloud environment.
During this optimization using such software, the operator of the 3D printer or the 3D printing manufacturing system may collect the 3D printing jobs (3D models) from one or many providers/sources (such as emails, physical storage media, online orders and so on) and may organize the corresponding 3D models onto the virtual 3D printing build tray. The virtual 3D printing build tray represents in a virtual form a specific build tray of a specific 3D printer. The sources/providers of 3D models can be persons or organizations sending the 3D models directly via email or other means of communication to the 3D printer operator.
As mentioned, prior to the optimization, the 3D printer operator may receive the 3D printing jobs as 3D models via email or other electronic communications channels, order fulfilment systems such as online services, delivered on physical memory sticks and memory cards or other physical media, and so on. These methods are often not secured, which can leave the original 3D models exposed to theft and/or copying.
When the virtual build tray optimization is done, the build tray configuration may be locked and the contents of the virtual build tray can be converted into another format (for example STL, G-codes) or transferred without conversion to be printed on a 3D printer.
Sending the 3D printable information to a 3D printer may occur from a physical computer with the help of which the optimization was performed using locally installed or remotely accessed software or application, directly via a connecting cable to the 3D printer, or via a communications network to the 3D printer. In some cases the 3D printer itself may include optimization software, a display, and a user interface for performing optimization tasks directly on the manufacturing device. The resulting optimized virtual build tray can be stored locally on the computer, on the 3D printer, or in a remote resource, such as a cloud data storage, a physical storage device accessible by the 3D printer, or at a remotely located data center, and transferred to the 3D printer via a communications network.
Briefly described is a general process to handle and print multiple 3D objects on a single build tray. Some variations in this process may exist between different 3D printing technologies. 1. 3D printer operator receives (by email, other electronic means, or in a physical storage device such as a USB stick, memory card) a 3D file or files {CAD, STL) from a
provider/customer or other entity, to be printed into a physical object or objects by 3D printing.
2. 3D printer operator can receive many 3D files from one or more customers or other entities to be printed. 3. Using 3D file handling and 3D printing optimization software on a computing device with a user interface and a display or on a 3D printer with a user interface and a display (such software can also be a virtual software accessible remotely on a server) 3D printer operator may need to correct, alter, manipulate or optimize the 3D file or files as necessary for printing correctly on a 3D printer. This step may include automatically or manually adding, modifying, or removing 3D printing supports and bridges, for example, in the 3D file for optimal printing results and use of materials, editing other parameters such as look, scale, precision, strength, finish, and so on.
4. Having optimized the 3D file or files received from either a single customer or entity or from several customers, using a 3D printing optimization software or application (can be local or virtual, such as software on a desktop computing device, on a portable computing device, or accessible by such devices on a virtual environment over the network), 3D printer operator can organize one or more 3D files onto a virtual representation of a 3D printing build tray /build envelope of a 3D printer. This stage may be referred to as printing build tray allocation. Objects build orientation can be optimized at this stage as well. 3D printer operator may try to position optimally as many objects as possible onto a 3D printing build envelope during a single production run (3D printing session, which can last hours or even days). This optimization process may reduce cost and time, for example, required for 3D printing of the files into physical objects, by manufacturing on a single 3D printing build tray the optimum amount of objects, positioned optimally in relation to each other, using preferably less time and material.
5. When the 3D printing build tray has been virtually optimized and organized, 3D printer operator can lock the build tray configuration. Locking the build tray means that no more changes will usually be done to the positioning, orientation, and other parameters and qualities of the objects on the virtual 3D printing build tray prior to initiating 3D printing.
6. On 3D printer operator's command, a software program (local or remote) prepares the virtual build tray and its virtually positioned CAD files into one or more STL files to be manufactured on a 3D printer. This process can include slicing the STL file or files into G-codes for 3D printing. G-codes are commonly used for operating 3D printers.
7. The STL file or G-codes may be sent over the network or directly from the computing device using a physical cable (on in some cases wirelessly) to the 3D printer for manufacturing the corresponding objects. The 3D printer manufactures them either directly from received G- codes or by slicing the STL file into G-codes first.
The above process may be improved by a virtual 3D printer build tray optimization method and system for receiving, collecting, optimizing, and organizing one 3D file or multiple 3D files onto a virtual build tray representing a physical printing build tray of a 3D printer, such file or files originating from one or more sources without access to the original source files.
Illustrative Operating Environment
FIG. 1 shows a system diagram of an environment in which embodiments of the invention may be implemented. The numbers in FIG. l may correspond to the following functions, actions, or steps:
1. Sending of 3D model data in STL or CAD into storage
2. Updating changes from e.g. web such as a marketplace, as shown in the image, in database
3. Sending a 3D model to slicing servers which can be a cloud based sheer using balance load sharing to use resources more efficiently and create G-codes in shorter time. For example several virtual machines can create portions of the required G-codes for one 3D model, instead of one virtual machine the G-codes for one 3D model.
4. Realtime action broker (for example realplexor, comet, waterspout). Realtime action brokers exchange near real time information among system modules, including javascript and ajax in browser on the client's side. Sends action for realtime event invocation. Initiates a new long polling request from the browser.
5. Looking/quering for a ready job to send keys to streaming server
6. Storing 3D model G-codes into secured storage
7. Looking/quering for a ready job to send G-codes to streaming server
8. Sending action for key servers to decrypt the main key
9. Decrypting main key and sending it back
10. Sending 3D model segment key
1 1. Sending 3D model G-codes batch
12. Updating streaming process changes in database
However, embodiments are not so limited and other systems and/or functions may be employed.
General Operation
The method for virtual build tray optimization and organization described in this invention needs to restrict access to the original source files and allow securely streaming or otherwise transferring the optimized virtual build tray contents from a secured environment or
session to a 3D printer for 3D printing the files on the virtual build tray into physical objects on a physical build tray.
Such virtual build tray optimization method and system, as shown in one exemplary system in FIG. 1 , must allow remote access, using virtual computing resources such as virtual software applications or cloud computing resources over a communications network by 3D printer operators and other users, alone, together, simultaneously, or in collaboration.
The virtual build tray allocation tools and resources, in the form of software applications, can reside within a virtual remote computing resource which is separate from the 3D printer operators computing resources and networks or within the same network and computing resources than those used by the 3D printer operator and accessed locally on the computer or over the network connection in the same physical network, such as a virtual application within a corporate firewall, or both.
This current invention describes a method and system for 3D printing one or multiple source files from one or multiple file sources, virtually organizing such file or files into a single or several virtual 3D printing build trays without having access to the actual original source files and securely 3D streaming the contents of such organized 3D printing build trays to a 3D printer. Instead of securely 3D streaming, Digital Rights Management systems and methods can be used to identify 3D printers and authorize them to print the contents of a virtual build tray.
Without the method and system described in the current invention, 3D streaming cannot be used to securely 3D print 3D files from one or multiple sources on a single build tray and single session due to the limitation that during secure 3D streaming the original source files are not available, exposed and transferred to the 3D printer or the 3D printer operator.
If original source files are not available the 3D printer operator is not able to optimize the 3D files and the 3D printing build tray contents sufficiently or at all. A 3D printer operator needs access to the original CAD source files or .STL files to optimize such files on a virtual 3D printing build tray for 3D printing on a 3D printer, especially in a production system where optimization is important. As described earlier, this is done using a software application on the computer or a virtual application accessed remotely (on a cloud computing platform, a shared
computing resource over the network). If no access to the source file is provided it cannot be optimized in the 3D printing process. Optimization is used to modify certain properties such as the position or orientation of the 3D files and the resulting printing quality and cost for each manufactured item on a 3D printer. With the currently described method in this invention it is possible to organize and securely stream the contents of virtual 3D printing build trays to 3D printers without exposing original source files to the 3D printer operator. The current method is most suited for organizing and printing 3D models which have been optimized for 3D printing by the person or persons who created or optimized the 3D models so that when the 3D printer operator receives the 3D models it is no longer necessary to alter the qualities and properties of the 3D models but only the orientation or position, for example. Ideally, the 3D models are ready for printing on one or more specific 3D printers as is when received by the 3D printer operator, requiring little or no modification of the single 3D models, making the current invention most suited for prototyping, design, manufacturing and production of 3D models the source and quality of which can be trusted, has been verified, complies with the intended 3D printing technology, for example due to the source of the 3D models being an experienced designer or operator of the software used for creating the 3D models and able to optimize the 3D models for 3D printing on named 3D printers and using named 3D printing technologies.
Furthermore, it is ideal for uses where the 3D models are printed more than once, either with the same 3D printing build tray configuration consisting always of the same 3D models or with different 3D printing build tray configurations consisting of different 3D models. In this case, the 3D printer operator may create 3D printing build tray configurations for repeated use, using 3D models that are suitable for printing in the same production run, positioning them onto the virtual 3D printing build tray and locking the build tray configuration after the positioning is considered optimal. This method saves time and effort. These virtual configurations of 3D printing build trays consisting of already optimally positioned objects may be stored in a database, either ,in STL or in G-codes format, and streamed to a 3D printer when needed.
The goal of the invention is achieved by a method and a system where the original 3D fi le of the 3D object such as a CAD file or STL file is not sent to the manufacturing machine or
the computing device of the 3D printer operator for optimization and 3D printing, but is kept in a secured system and instead, only the instructions for controlling the manufacturing machine (e.g. so called G-codes) that are specific to this manufacturing machine are streamed to the manufacturing machine. Furthermore, such instructions are secured so that only a specific manufacturing machine can make use of them.
The current invention can be used for creating and storing configurations of locked or unlocked build trays for secure 3D streaming at any moment after their creation. Unlocked trays can be modified after creation, locked build trays are ready for production. This is useful when the preparation such as slicing of the contents of the virtual build trays into G-codes takes a long time. The ready G-codes can be stored in a secure storage as shown in FIG 1 (6) after slicing, for rapid retrieval and deployment in production runs without need to create G-codes each time for the build trays. The virtual build trays are already sliced and encrypted, ready for secure 3D streaming onto 3D printers that have the capability to decrypt and use them in 3D printing. After optimization, locking and initiating submission to storage ( 1), the virtual build tray data is automatically broken into pieces, each piece can be encrypted and stored separately in the database or databases.
Hereinafter methods of this invention are described that make it possible for a 3 D printer operator to optimize 3D files and 3D printing build trays for additive manufacturing, while not gaining access to the original 3D files in a form and way that makes the original 3D files vulnerable to exploitation such as copying, and allow secure 3D streaming of the contents of such 3D printing build trays to a 3D printer.
A 3D models source for the 3D printer operator is marked in FIG. 1 and named
"Marketplace with public printing queue"; this marketplace can be an online store or storage, a physical or virtual storage, accessed over local or remote network, storing the public printing queue of 3D models to be printed; the 3D models (usually CAD, STL} can be received and stored from emails, other electronic means such as online electronic order intake systems, USB sticks, memory cards and so on. The source can contain 3D models from one or many people, organizations, companies or other entities.
Gizmo comparator module is shown in FIG. 1. Gizmo comparator is placed separately in the exemplary system because object simplification is a computing resource consuming process. It can also be placed on the streaming server but it can require its own server cloud. Gizmo comparator asks the current status of printing from streaming server.
If streaming server has received multiple objects for 3D printing on the same 3D printer, the object allocator is called, which calls gizmo comparator to get the simplified models of the 3D objects. Object allocator can then try to allocate the gizmos on the 3D printing build tray/platform until best combination is found. Some objects may be printed while others will wait in the printing queue.
Object allocator in FIG. 1 is in or with streaming servers. It can be but does not have to be located with or at the same location than the streaming servers. In the exemplary system it is placed with streaming servers due to security of the 3D models; streaming server has secure access to secure storage.
FIG. 2 illustrates a logical flow diagram generally showing embodiments of a process for positioning 3D objects represented by gizmos in a virtual 3D printer build tray. In various embodiments, a process, such as process 200 may be implemented by a system, such as that shown in FIG. 1. Additionally, process 200 may be employed or performed by one or more computing devices, which may be in the form of software, hardware, or a combination thereof.
Process 200 may begin, after a start block, at block 202, where one or more 3D models may be obtained for at least one provider. In various embodiments, each provider may send (e.g., by email) or otherwise provide (e.g., via a flash drive) one or more 3D models to an intermediate system prior to providing to the printer.
Process 200 may proceed to block 204, where one or more 3D objects may be determined from the obtained 3D models. Each 3D object may be an object to be printed by a 3D printer based on a 3D model.
Process 200 may continue at block 206, where a gizmo may be determined for each 3D object. As described herein, the gizmo may be a virtual representation of a corresponding 3D object. In some embodiments, the gizmo may be a predetermined shape (which may be assigned
a size that is slightly larger than the exterior of the 3D object). In other embodiments, the gizmo may be a lower resolution version of the exterior of the 3D object (i.e., the 3D model). In some embodiments, the level of resolution may be determined by the provider. In some embodiments, a printer operator may request higher levels of resolution (and/or additional views of the 3D model) - which may or may not be provided or granted by the provider - in order to be able to optimize the printing batch, from one or more designers for one or more models. In other embodiments, the system may do these requests automatically, leaving out of the printing batch those models that cannot be guaranteed to work, and add them to other build trays. In this way, higher levels of 3D printer build tray optimizations may be possible with higher resolution versions of the 3D model. In some embodiments, the more complex the model, the more views may be necessary to provide enough information to generate the gizmo.
In any event, process 200 may proceed next to block 208, where each gizmo may be automatically positioned in a virtual 3D printer build tray. In various embodiments, the gizmos may be positioned such that a position for each gizmo does not overlap the position of each other gizmo. So, the gizmos do not overlap one another, which can allow for each 3D object to be printed separately, but during a same printing process.
In some embodiments, the system may automatically determine if additional bridges, supports, platforms, or the like may be needed to support a 3D object when printed. In various embodiments, the system may determine the location of these supports based on predetermined rules regarding various shapes, sizes, weight limits, material types, or the like employed by a 3D model of a 3D object. The system can create or suggest where to create supports and bridges after the provider (e.g., design owner) has submitted to the system sufficient views of the model or its gizmo to the printer operator. This way the system or the operator knows how much space (and material) the included model takes with supports. In some embodiments, the gizmo may be modified to account for the supports, so that an operator does not have to deal with the supports.
In other embodiments, there may be an exchange of manual or automatic messages between the system and the provider or the operator and the provider. These message may include adjustments in lower resolution views of the model, where to add supports and bridges, or how to modify the model in other ways to make it more printable. For example, if the printer
operator receives from the system, allowed by provider, a number of views (in a virtual viewing environment and not enough to reproduce a copy of the model) of the 3D model he can ask the provider to make also structural changes to the model itself. In some embodiments, the printable gizmo may be created after the changes and supports have been added.
In various embodiments, each gizmo positioned in the virtual 3D printer build tray may be displayed to the printer operator. Each 3D model that corresponds to each 3D object represented by each gizmo may be unavailable to the printer operator. In this way, the operator can view the positioning of the 3D objects in the build tray without seeing the actual objects of the 3D models (or seeing a lower resolution version of the objects).
Process 200 may continue next at block 210, where the printer operator may be enabled to manually position the gizmos on the virtual 3D printer build tray. In some embodiments, the gizmos may be automatically positioned (at block 208), and the user can then adjust the positioning of the gizmos. In other embodiments, the user may manually position the gizmos without them being previously positioned. In other embodiments, after the user manually positions the gizmos, the system may provide additional optimization positioning of the gizmos, which may be based on constraints of the 3D printer itself or on the 3D objects that correspond to the gizmos.
In various embodiments described herein, positioning a gizmo on a virtual 3D printer build tray may include providing 3D coordinates within the possible printing space/limits of the printer, providing a rotation and/or orientation, or the like.
In any event process 200 may proceed to block 212, where the virtual 3D printer build tray may be locked based on the gizmo positions. Once the operator or system defines the model as printable, it may be locked such that gizmos may not be repositioned by the operator, system or other application. In some embodiments, one or more gizmos may be locked, such that printing may begin on the locked gizmos, but that the operator or the system can continue to position the remaining unlocked gizmos. In this way, the printing process can begin for one or more 3D objects, while additional optimizations are performed on other gizmos/objects.
Once the model is locked (if printed alone) it's prepared for printing (g-codes or other instructions are generated for the model including supports if needed) or if printed as part of a build tray, the instructions for the whole build tray are calculated, sent to print, or stored (if not printed immediately)
Process 200 may continue at block 214, where each gizmo positioned in the virtual 3D printer build tray may be converted back to each corresponding 3D object. In this way, the virtual 3D printer build tray may have 3D coordinates and/or orientation for each 3D model that define the 3D objects that are represented by the gizmos based on the gizmo positions.
In any event, process 200 may continue at block 216, where instructions for printing each converted 3D object may be provided to the printer. In various embodiments, instructions for printing the 3D objects may be generated based on the virtual 3D printer build tray and the 3D models for each corresponding 3D object represented by a gizmo. In some embodiments, the virtual 3D printer build tray may be sliced into the appropriate machine code used by the printer (e.g., g-codes). The system may send the g-codes or other corresponding machine codes or instructions such as bitmaps to the 3D printer to print the 3D objects in the positions determined by their corresponding gizmos based on the provided 3D models. In this way, the printer operator can position the 3D objects, by way of manipulating their gizmos, without having access to the 3D model. Once positioned, the virtual 3D printer build tray may be sliced and converted to the corresponding machine instructions, so that the 3D models are not provided to the printer. In other embodiments, the system may provide an overall model of the virtual 3D printer build tray to the printer, and the printer can then generate the appropriate machine code for printing the 3D objects.
After block 216, process 200 may terminate and/or return to a calling process. In some embodiments, process 200 may loop (not shown) to block 206 to determine gizmos for new 3D objects that may be positioned during the printing process.
In various embodiments, the system may automatically modify and/or the printer operator may manually modify the positioning of unprinted 3D objects (i.e., where printing has not started) or new 3D objects during printing. In some embodiments, the gizmos of the unprinted 3D objects or new 3D objects may be determined, such as at block 206. The system may obtain
a current status of the printer to determine if the printer has started to print an object. Based on this current status and the positioning of the gizmos in the virtual 3D printer build tray, the system may automatically position (e.g., at block 208) and/or the operator may manually position (e.g., at block 210) new or unprinted 3D objects to create an updated virtual 3D printer build tray. The system may convert the gizmos associated with the updated virtual 3D printer build tray to the 3D objects, and provide instructions for printing the unprinted portions of the updated virtual 3D printer build tray to the printer. It should be recognized, that in some embodiments, the unprinted portions of objects that already started printing may be included in the updated instructions sent to the printer. Additional details regarding various embodiments described herein are described in conjunction with FIGS. 3-7. Briefly, FIG. 3 provides upfront manual 3D objects allocation on a build tray; FIG. 4 provides upfront automatic 3D objects allocation on a tray; FIG. 5 provides in- printing manual 3D objects allocation on a build tray; FIGS. 6A-6B provides in-printing automatic 3D objects allocation on a build tray; FIG. 7 provides after-printing manual 3D objects allocation on a build tray; and FIG. 8 provides after-printing automatic 3D objects allocation on a build tray. Embodiments may be combined in virtually any combination for the build tray optimization, creation, or production run.
It should be understood that the embodiments described in the various flowcharts may be executed in parallel, in series, or a combination thereof, unless the context clearly dictates otherwise. Accordingly, one or more blocks or combinations of blocks in the various flowcharts may be performed concurrently with other blocks or combinations of blocks. Additionally, one or more blocks or combinations of blocks may be performed in a sequence that varies from the sequence illustrated in the flowcharts.
Further, the embodiments described herein and shown in the various flowcharts may be implemented as entirely hardware embodiments (e.g., special-purpose hardware), entirely software embodiments (e.g., processor-readable instructions), or a combination thereof. In some embodiments, software embodiments can include multiple processes or threads, launched statically or dynamically as needed, or the like.
The embodiments described herein and shown in the various flowcharts may be implemented by computer instructions (or processor-readable instructions). These computer instructions may be provided to one or more processors to produce a machine, such that execution of the instructions on the processor causes a series of operational steps to be performed to create a means for implementing the embodiments described herein and/or shown in the flowcharts. In some embodiments, these computer instructions may be stored on machine- readable storage media, such as processor-readable non-transitory storage media.
Use Case Illustrations
FIG. 3 illustrates a use case example of upfront manual 3D objects allocation on a build tray. 3D printer user may position objects using their gizmos in a virtual environment (e.g., a virtual 3D printer build tray), and may not have access to 3D objects originals (e.g., the 3D models that define the 3D objects). This virtual environment is marked in FIG. 1 as box "Object on tray allocation UI and printing queue", or as box "Object on tray allocation UI and printing queue on mobile devices", exchanging information with the system via API and Real-time API,. This virtual environment can be, for example, an interactive viewer or application, accessible over the network, in a virtual environment, or the viewer may be an application on a local computing device/other intermediate device. This can be done with a software or application using a gizmo container or containers.
FIG. 4 illustrates a use case example of upfront automatic 3D objects allocation on build tray. A software application may position objects using their gizmos in a virtual environment. 3D printer operator can see the gizmos of objects and bu ild trays and choose automatic reordering of the gizmos (and their associated 3D models) on 3D printer build tray. 3D printer user or software may not have access to the 3D objects originals or 3D models at this stage, they may only be able to view the corresponding gizmo. In order to reorder and manipulate 3D objects on the 3D printer build tray space, software may use gizmos of the 3D objects to be printed. When allocation is final, gizmos coordinates may be transferred to a slicing module(s) or server(s) (marked as 3 in FIG. 1 ), which may slice the objects for the 3D printing process.
FIG. 5 illustrates a use case example of in-printing manual 3D objects allocation on build tray. While printing on a 3D printer, when printing process has already started and the printing
progress can be in the range of 0% to 100%, 3D printer operator may use software or application and can add more 3D models to the printing process, without actually stopping the 3D printing process. The operator may manipulate the gizmos of the 3D models such that the operator does not have access to the 3D models
During 3D printing process, 3D printer operator can add more models to the same build tray and printing session in case there is unutilized, available space on the 3D printing build tray by employing gizmos that represent the models. This can be achieved using, for example, a virtual online viewer, where 3D printer operator using a keyboard, mouse, or any other Computer - Human interface or device can allocate a new gizmo for an object on the build tray. For this purpose printer can be automatically or manually paused or operate continuously without interruption.
Depending on the type of 3D printer technology (FDM, SLA, SLS, SLM) 3D printer operator can add a new 3D model to the bottom of the build tray, or on the same level up to which the other, previous 3D models had already been printed when the 3D printer was paused and/or model adding happened. In various embodiments, gizmos may be employed to enable the operator to add new 3D models to the virtual 3D printer build tray, as described herein
Once 3D printer operator has allocated the new gizmos of the new 3D model or models, 3D printer can receive the G-codes of the new 3D model or models together with already-in-progress G-codes (for SLS and SLM) or it receives part of the G- codes required to print the new 3D model from the bottom of the 3D printing build tray (for FDM and SLA).
For FDM and SLA types of 3D printers depending on the existing models on the 3D printing build tray layout, new 3D models can be added to the bottom of the build tray, if the area is accessible by the 3D printing material extruder/nozzle. This can be automatically calculated based on the gizmos of the new 3D models and gizmos of the other 3D models on the 3D printing build tray.
If the intended area for the new 3D models is not accessible or is partly accessible by the 3D printing material extruder, software can calculate the possibility to create
supports, existing printed models parts or bridges to make a table, support or other area where the new 3D model can be placed. If such place cannot be found, the new 3D model can be printed on top of the previously allocated 3D models, using supports and a new raft.
- For SLS and SLM type of 3D printers, a newly added object is placed and printing is initiated from the layer that the 3D printer is currently printing. Correct placement may be done using gizmo containers of 3D objects printed partially until that moment and of new 3D objects to be printed.
FIG. 6A and 6B illustrate use case examples of in-printing automatic 3D objects allocation on build tray. While 3D printing on a 3D printer, and if the printing process has already started, and the printing process is at any stage from 0% to 100% of progress, 3D printer operator can add more 3D objects to the 3D printer's queue without actually stopping the 3D printing process using software.
It may also be possible to program and configure the software to automatically identify, analyze and find free spaces in the printing build tray during the printing process based on the gizmos and/or 3D models already in the printing build tray, and fill such spaces with 3D models from a data source (data storage) of approved, cleared and ready to print 3D models or from incoming new 3D print models from trusted, verified 3D model sources (customers such as designers, corporations, partners, employees or other entities) to optimize the production process for maximum efficiency. In various embodiments, gizmos may be employed to enable the new 3D models to be automatically added to the virtual 3D printer build tray, as described herein
FIGS. 6A and 6B show the same stage of adding a new gizmo of a new object for a new model to an ongoing printing process from two different angles. For clarity and visibility, in FIG. 6B the Gizmo containers boundaries are not marked.
FIG. 7 illustrates a use case example of after-printing manual 3D objects allocation on build tray. It may be possible to add new 3D models onto the 3D printing build tray even when the printing process has already finished if there is space left on the build tray for allocating and printing new objects, by using manual allocation of 3D objects using gizmos. In various
embodiments, gizmos may be employed to enable the operator to add new 3D models to the virtual 3D printer build tray, as described herein 3D printer operator can add more 3D models using software. Such 3D models can be printed on the same build tray utilizing the empty space left on the build tray. FIG. 8 illustrates a use case example of after-printing automatic 3D objects allocation on build tray. It may be possible to add new models onto the 3D printing build tray even when the printing process has already finished if there is space left on the build tray for allocating and printing new objects by using automatic allocation of 3D objects. In various embodiments, gizmos may be employed to enable the new 3D models to be automatically added to the virtual 3D printer build tray, as described herein. Software can automatically find the best position for new 3D objects using gizmos, which can be printed on the same build tray utilizing the empty space left on the build tray.
In case of SLA type printers using laser beams, new 3D object can be placed in almost any empty place of the 3D printing build tray, several laser or light beams may be used but a single beam does not have enough power to solidify the build material. Only at the intersection of the beams where more beams meet the material becomes solid. With these embodiments, it is possible to add new 3D models to almost any empty, available space in the 3D printing build tray. Using several lasers to solidify a particular point in the build material can also be used to improve detail and accuracy. It may also be possible to program and configure software to automatically identify, analyze and find free spaces in the printing build tray after the printing process, and fill such spaces with 3D models from a data source (data storage) of approved, cleared and ready to print 3D models or from incoming new 3D print models from trusted, verified 3D model sources (customers such as designers, corporations, partners, employees or other entities) to optimize the production process for maximum efficiency.
The methods and steps above can be achieved using Cloud software (all or part of the processing done in parallel on any number of machines).
The above specification, examples, and data provide a complete description of the manufacture and use of the composition of the invention. Since many embodiments of the invention can be made without departing from the spirit and scope of the invention, the invention resides in the claims hereinafter appended.
Claims
1. A method for enabling three-dimensional (3D) printing, comprising:
determining at least one 3D object included in at least one 3D model for at least one provider, wherein the at least one 3D model is provided in at least one of a computer aided design (CAD) format or a computer aided manufacturing (CAM) format;
determining a gizmo for each determined 3D object, wherein each gizmo is a virtual representation of its corresponding 3D object;
automatically positioning each gizmo in a virtual 3D printer build tray such that a position for each gizmo does not overlap another position of another gizmo in the virtual 3D printer build tray, wherein the virtual 3D printer build tray includes a visual representation of printable space for a 3D printer;
displaying each gizmo positioned in the virtual 3D printer build tray to a printer operator, wherein each 3D model that corresponds to each 3D object represented by each gizmo is unavailable to the printer operator;
employing the 3D model to convert each gizmo positioned in the virtual 3D printer build tray into instructions for printing each corresponding 3D object; and
providing the printing instructions to the 3D printer.
2. The method of Claim 1 , further comprising:
locking at least one gizmo to prohibit changes in a position of the at least one locked gizmo on the virtual 3D printer build tray; and
enabling the 3D printer to initiate printing based on the at least one locked gizmo.
3. The method of Claim 1 , wherein at least one gizmo is a predetermined 3D shape that has dimensions that are at least different or larger than an exterior surface of its corresponding 3D object.
4. The method of Claim 1 , wherein at least one gizmo is low resolution version of its corresponding 3D object.
5. The method of Claim 1 , further comprising, enabling the printer operator to manually position at least one gizmo in the virtual 3D printer build tray.
6. The method of Claim 1 , further comprising, enabling the at least one provider to specify a resolution of a 3D object to employ as at least one gizmo.
7. The method of Claim 1 , further comprising:
determining a new gizmo for a new 3D object;
determining a current status of printing the at least one 3D object; automatically positioning a new gizmo in the virtual 3D printer build tray to generate an updated virtual 3D printer build tray having updated instructions for printing, wherein the positioning of the new gizmo is based on the positioning of each gizmo for the at least one 3D object and the current printing status without stopping the printing of the at least one 3D object; and
providing at least an unprinted portion of the updated instructions to the 3D printer.
8. A system for enabling three-dimensional (3D) printing, comprising:
a 3D printer that prints 3D objects; and
a computing device that executes instructions to perform actions, including: determining at least one 3D object included in at least one 3D model for at least one provider, wherein the at least one 3D model is provided in at least one of a computer aided design (CAD) format or a computer aided manufacturing (CAM) format;
determining a gizmo for each determined 3D object, wherein each gizmo is a virtual representation of its corresponding 3D object;
automatically positioning each gizmo in a virtual 3D printer build tray such that a position for each gizmo does not overlap another position of another gizmo in the virtual 3D printer build tray, wherein the virtual 3D printer build tray includes a visual representation of printable space for the 3D printer;
displaying each gizmo positioned in the virtual 3D printer build tray to a printer operator, wherein each 3D model that corresponds to each 3D object represented by each gizmo is unavailable to the printer operator;
employing the 3D model to convert each gizmo positioned in the virtual 3D printer build tray into instructions for printing each corresponding 3D object; and
providing the printing instructions to the 3D printer.
9. The system of Claim 8, wherein the computing device executes instructions to perform further actions, comprising:
locking at least one gizmo to prohibit changes in a position of the at least one locked gizmo on the virtual 3D printer build tray; and
enabling the 3D printer to initiate printing based on the at least one locked gizmo.
10. The system of Claim 8, wherein at least one gizmo is a predetermined 3D shape that has dimensions that are at least different or larger than an exterior surface of its corresponding 3D object.
1 1. The system of Claim 8, wherein at least one gizmo is low resolution version of its corresponding 3D object.
12. The system of Claim 8, wherein the computing device executes instructions to perform further actions, comprising, enabling the printer operator to manually position at least one gizmo in the virtual 3D printer build tray.
13. The system of Claim 8, wherein the computing device executes instructions to perform further actions, comprising, enabling the at least one provider to specify a resolution of a 3D object to employ as at least one gizmo.
14. The system of Claim 8, wherein the computing device executes instructions to perform further actions, comprising:
determining a new gizmo for a new 3D object;
' determining a current status of printing the at least one 3D object; automatically positioning a new gizmo in the virtual 3D printer build tray to generate an updated virtual 3D printer build tray having updated instructions for printing, wherein the positioning of the new gizmo is based on the positioning of each gizmo for the at least one 3D object and the current printing status without stopping the printing of the at least one 3D object; and
providing at least an unprinted portion of the updated instructions to the 3D printer.
15. A network computer for enabling three-dimensional (3D) printing, comprising: a memory for storing at least instructions; and
a processor that executes the instructions to perform actions, including:
determining at least one 3D object included in at least one 3D model for at least one provider, wherein the at least one 3D model is provided in at least one of a computer aided design (CAD) format or a computer aided manufacturing (CAM) format;
determining a gizmo for each determined 3D object, wherein each gizmo is a virtual representation of its corresponding 3D object;
automatically positioning each gizmo in a virtual 3D printer build tray such that a position for each gizmo does not overlap another position of another gizmo in the virtual 3D printer build tray, wherein the virtual 3D printer build tray includes a visual representation of printable space for a 3D printer;
displaying each gizmo positioned in the virtual 3D printer build tray to a printer operator, wherein each 3D model that corresponds to each 3D object represented by each gizmo is unavailable to the printer operator;
employing the 3D model to convert each gizmo positioned in the virtual 3D printer build tray into instructions for printing each corresponding 3D object; and
providing the printing instructions to the 3D printer.
16. The network computer of Claim 15, wherein the processor that executes the instructions performs further actions, comprising:
locking at least one gizmo to prohibit changes in a position of the at least one locked gizmo on the virtual 3D printer build tray; and
enabling the 3D printer to initiate printing based on the at least one locked gizmo.
17. The network computer of Claim 15, wherein at least one gizmo is a predetermined 3D shape that has dimensions that are at least different or larger than an exterior surface of its corresponding 3D object.
18. The network computer of Claim 15, wherein at least one gizmo is low resolution version of its corresponding 3D object.
19. The network computer of Claim 15, wherein the processor that executes the instructions performs further actions, comprising, enabling the printer operator to manually position at least one gizmo in the virtual 3D printer build tray.
20. The network computer of Claim 15, wherein the processor that executes the instructions performs further actions, comprising:
determining a new gizmo for a new 3D object;
determining a current status of printing the at least one 3D object; automatically positioning a new gizmo in the virtual 3D printer build tray to generate an updated virtual 3D printer build tray having updated instructions for printing, wherein the positioning of the new gizmo is based on the positioning of each gizmo for the at least one 3D object and the current printing status without stopping the printing of the at least one 3D object; and
providing at least an unprinted portion of the updated instructions to the 3D printer.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361865239P | 2013-08-13 | 2013-08-13 | |
US61/865,239 | 2013-08-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2015022572A2 true WO2015022572A2 (en) | 2015-02-19 |
WO2015022572A3 WO2015022572A3 (en) | 2015-08-13 |
Family
ID=51845436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/IB2014/001516 WO2015022572A2 (en) | 2013-08-13 | 2014-08-13 | Optimized virtual 3d printing build tray allocation |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2015022572A2 (en) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105139453A (en) * | 2015-07-30 | 2015-12-09 | 中国石油化工股份有限公司 | Three-dimensional model display system |
US20170173888A1 (en) * | 2015-12-16 | 2017-06-22 | Stratasys, Inc. | Multi-user access to fabrication resources |
US20170282458A1 (en) * | 2016-03-30 | 2017-10-05 | Canon Kabushiki Kaisha | Forming control apparatus, and method and storage medium therefor |
US10006225B2 (en) | 2016-01-29 | 2018-06-26 | Y Soft Corporation, A.S. | Secure 3D printer and 3D printer management network |
CN108723549A (en) * | 2018-05-28 | 2018-11-02 | 河海大学常州校区 | A kind of electric arc increasing material manufacturing method |
WO2019117886A1 (en) * | 2017-12-13 | 2019-06-20 | Hewlett-Packard Development Company, L.P. | Thermal behavior prediction from a contone map |
WO2019143352A1 (en) * | 2018-01-19 | 2019-07-25 | Hewlett-Packard Development Company, L.P. | 3d print part placement |
US10466681B1 (en) | 2014-09-02 | 2019-11-05 | Machine Research Corporation | Systems and methods for machining knowledge reuse |
CN110770734A (en) * | 2017-06-02 | 2020-02-07 | 德普技术公司 | Method, apparatus and system for part build |
US10800155B2 (en) * | 2014-08-29 | 2020-10-13 | Hewlett-Packard Development Company, L.P. | Generation of three-dimensional objects |
US10817526B2 (en) | 2014-07-16 | 2020-10-27 | Machine Research Corporation | Systems and methods for searching a machining knowledge database |
US11059229B2 (en) | 2017-01-27 | 2021-07-13 | Hewlett-Packard Development Company, L.P. | Rules for printing three-dimensional parts |
WO2021170751A1 (en) * | 2020-02-26 | 2021-09-02 | Schubert Additive Solutions GmbH | Method for operating an additive manufacturing device |
US11225025B2 (en) | 2016-10-27 | 2022-01-18 | Hewlett-Packard Development Company, L.P. | Generating additive manufacturing instructions |
US11597143B2 (en) | 2017-04-19 | 2023-03-07 | Hewlett-Packard Development Company, L.P. | Additive manufacturing process using fusing and non-fusing printing fluids |
US11618217B2 (en) | 2014-01-16 | 2023-04-04 | Hewlett-Packard Development Company, L.P. | Generating three-dimensional objects |
US11628627B2 (en) | 2017-07-18 | 2023-04-18 | Hewlett-Packard Development Company, L.P. | Additive manufacturing process to disguise physical characteristics of item |
US11673314B2 (en) | 2014-01-16 | 2023-06-13 | Hewlett-Packard Development Company, L.P. | Generating three-dimensional objects |
US11679560B2 (en) | 2014-01-16 | 2023-06-20 | Hewlett-Packard Development Company, L.P. | Generating a three-dimensional object |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7296157B2 (en) * | 2002-07-10 | 2007-11-13 | Electronics For Imaging, Inc. | Methods and apparatus for secure document printing |
-
2014
- 2014-08-13 WO PCT/IB2014/001516 patent/WO2015022572A2/en active Application Filing
Non-Patent Citations (1)
Title |
---|
None |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11679560B2 (en) | 2014-01-16 | 2023-06-20 | Hewlett-Packard Development Company, L.P. | Generating a three-dimensional object |
US11673314B2 (en) | 2014-01-16 | 2023-06-13 | Hewlett-Packard Development Company, L.P. | Generating three-dimensional objects |
US11618217B2 (en) | 2014-01-16 | 2023-04-04 | Hewlett-Packard Development Company, L.P. | Generating three-dimensional objects |
US10817526B2 (en) | 2014-07-16 | 2020-10-27 | Machine Research Corporation | Systems and methods for searching a machining knowledge database |
US10800155B2 (en) * | 2014-08-29 | 2020-10-13 | Hewlett-Packard Development Company, L.P. | Generation of three-dimensional objects |
US10466681B1 (en) | 2014-09-02 | 2019-11-05 | Machine Research Corporation | Systems and methods for machining knowledge reuse |
CN105139453A (en) * | 2015-07-30 | 2015-12-09 | 中国石油化工股份有限公司 | Three-dimensional model display system |
US10696038B2 (en) | 2015-12-16 | 2020-06-30 | Stratasys, Inc. | Multi-user access to fabrication resources |
US20170173888A1 (en) * | 2015-12-16 | 2017-06-22 | Stratasys, Inc. | Multi-user access to fabrication resources |
US10006225B2 (en) | 2016-01-29 | 2018-06-26 | Y Soft Corporation, A.S. | Secure 3D printer and 3D printer management network |
US11573543B2 (en) * | 2016-03-30 | 2023-02-07 | Canon Kabushiki Kaisha | Forming control apparatus, and method and storage medium therefor |
US20170282458A1 (en) * | 2016-03-30 | 2017-10-05 | Canon Kabushiki Kaisha | Forming control apparatus, and method and storage medium therefor |
US10754311B2 (en) * | 2016-03-30 | 2020-08-25 | Canon Kabushiki Kaisha | Forming control apparatus, and method and storage medium therefor |
CN107263853B (en) * | 2016-03-30 | 2020-04-10 | 佳能株式会社 | Formation control apparatus and method thereof |
CN107263853A (en) * | 2016-03-30 | 2017-10-20 | 佳能株式会社 | Form control device and its method |
US11225025B2 (en) | 2016-10-27 | 2022-01-18 | Hewlett-Packard Development Company, L.P. | Generating additive manufacturing instructions |
US11059229B2 (en) | 2017-01-27 | 2021-07-13 | Hewlett-Packard Development Company, L.P. | Rules for printing three-dimensional parts |
US11597143B2 (en) | 2017-04-19 | 2023-03-07 | Hewlett-Packard Development Company, L.P. | Additive manufacturing process using fusing and non-fusing printing fluids |
CN110770734A (en) * | 2017-06-02 | 2020-02-07 | 德普技术公司 | Method, apparatus and system for part build |
US11628627B2 (en) | 2017-07-18 | 2023-04-18 | Hewlett-Packard Development Company, L.P. | Additive manufacturing process to disguise physical characteristics of item |
US11669057B2 (en) | 2017-12-13 | 2023-06-06 | Hewlett-Packard Development Company, L.P. | Neural network thermal behavior predictions |
WO2019117886A1 (en) * | 2017-12-13 | 2019-06-20 | Hewlett-Packard Development Company, L.P. | Thermal behavior prediction from a contone map |
WO2019143352A1 (en) * | 2018-01-19 | 2019-07-25 | Hewlett-Packard Development Company, L.P. | 3d print part placement |
US11198248B2 (en) | 2018-01-19 | 2021-12-14 | Hewlett-Packard Development Company, L.P. | 3D print part placement |
CN111448051A (en) * | 2018-01-19 | 2020-07-24 | 惠普发展公司,有限责任合伙企业 | 3D printing part placement |
CN108723549A (en) * | 2018-05-28 | 2018-11-02 | 河海大学常州校区 | A kind of electric arc increasing material manufacturing method |
CN114902633A (en) * | 2020-02-26 | 2022-08-12 | 舒伯特附加解决方案有限公司 | Method for operating an additive manufacturing apparatus |
WO2021170751A1 (en) * | 2020-02-26 | 2021-09-02 | Schubert Additive Solutions GmbH | Method for operating an additive manufacturing device |
Also Published As
Publication number | Publication date |
---|---|
WO2015022572A3 (en) | 2015-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2015022572A2 (en) | Optimized virtual 3d printing build tray allocation | |
US9948820B2 (en) | Three-dimensional object storage, customization, and distribution system | |
CN105103486B (en) | Safe fluidizing method and safety numerical control manufacture system in NC Manufacturing System | |
US9604406B2 (en) | Three-dimensional design and manufacturing systems | |
EP3766205B1 (en) | System and method to protect items associated with additive manufacturing | |
CN105936127B (en) | Embedding a database in a physical object | |
US11623407B2 (en) | Encoding volumetric data to support trusted transaction delivery | |
CA2917555C (en) | Three-dimensional object storage, customization, and procurement system | |
US11263296B2 (en) | Secure 3D printing | |
EP2757736A1 (en) | Secure streaming method in a numerically controlled manufacturing system, and a secure numerically controlled manufacturing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
32PN | Ep: public notification in the ep bulletin as address of the adressee cannot be established |
Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205A DATED 18/05/2016) |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 14792854 Country of ref document: EP Kind code of ref document: A2 |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 14792854 Country of ref document: EP Kind code of ref document: A2 |