# Enhancing 3D Printing with Procedural Generation and STL Formatting Using Python
## 2 Procedural Generation of 3D Objects in AM  
Procedural content generation is the automated creation of content using algorithms. Most often, in procedural generation, a small number of input parameters and pseudo-random processes are used to generate content that will meet the requirements. Modern tools, such as the Solidworks Toolbox, allow us to generate, for example, a rack by specifying standard gear parameters. We do not see the entire algorithm (procedure) for creating such a rack. The procedural creation of objects allows us to specify parameters and change the process of constructing components. It gives us a much broader scope for creating and automating the procedure by defining steps (algorithm) and parameters (variables) for creating the given elements. Procedurally generated 3D objects that are converted to STL format have several advantages:  
* Customizability: procedural generation offers extensive customization options, allowing users to control various aspects of generated objects, such as the size, shape, texture, and complexity;Repeatability and consistency: procedurally generated objects are inherently reproducible, ensuring consistency across multiple iterations or instances;
* Algorithmic creativity: procedural generation can inspire creativity by exploring novel designs and unexpected variations;
* Variety: procedural generation allows the creation of a wide range of diverse and unique 3D objects;
* Scalability: procedural generation techniques can be scaled to create objects of varying complexity and detail;
* Efficiency and automation: procedural generation automates the 3D model creation process, reducing the need for manual intervention;
* Low memory requirements: procedural generation can create complex 3D objects using relatively little memory compared to storing pre-modeled meshes;
* Adaptable to constraints: procedural generation algorithms can be designed to meet precise limitations or requirements, such as printability in the case of 3D printing. The usability of automatically generated 3D-printed objects depends on many factors, such as the accuracy of the generation process, the quality of the resulting prints, and the suitability of the objects for the intended purpose, including:  
* Personalization: automatically generated 3D-printed objects are highly customizable, allowing users to tailor designs to their specific needs and preferences;
* Efficiency: automation streamlines the workflow from design to production, reducing the time and effort required to create 3D-printed objects;
* Complexity: automatic generation techniques can create complex and complicated designs that may be difficult or time-consuming to create manually;
* Accessibility: automatically generated 3D-printed objects can democratize access to design and manufacturing capabilities, enabling people without specialized CAD skills to create custom products;
* Quality control: ensuring the quality and printability of automatically generated objects is essential for usability;
* User experience: the usability of automatically generated 3D-printed objects also depends on the user's experience in the generation process;
* Application specificity: the usefulness of automatically generated objects varies depending on the intended use. The feasibility of AM is realized in several areas. First, in terms of geometric complexity, AM enables the creation of complex geometries that are not feasible using traditional manufacturing methods. However, designers must consider the limitations of a particular AM technology, such as the minimum feature size and layer resolution. Next, when it comes to material design, different AM technologies support different materials. Designers must make sure that the chosen material is suitable for the intended application and can be reliably processed by the chosen AM technology. In the area of support structures, some AM processes require support structures for protrusions.