{"id":34255,"date":"2026-01-08T14:28:30","date_gmt":"2026-01-08T13:28:30","guid":{"rendered":"https:\/\/www.azzurrodigitale.com\/?p=34255"},"modified":"2026-03-02T12:24:39","modified_gmt":"2026-03-02T11:24:39","slug":"mvc-and-ddd-different-models-same-objective","status":"publish","type":"post","link":"https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/","title":{"rendered":"Nesting: the art of optimising space to reduce waste"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Indice dei contenuti<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #21bdff;color:#21bdff\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #21bdff;color:#21bdff\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/#How_It_Works_simplifying_complexity\" >How It Works: simplifying complexity<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/#Deep_Tech_for_Insiders\" >Deep Tech for Insiders<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/#Developer_Glossary\" >Developer Glossary<\/a><\/li><\/ul><\/nav><\/div>\n\n<h4 class=\"wp-block-heading\"><\/h4>\n\n<h4 class=\"wp-block-heading\">Article by Mattia Favretto &#8211; Full-stack Developer at AzzurroDigitale<\/h4>\n\n<p><em>Let&#8217;s discover how it is possible to print solid objects while minimising material waste and increasing production efficiency thanks to advanced nesting software.<\/em><\/p>\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<p>In the manufacturing world, space is money. Every square centimetre of wasted material or unused volume translates into a direct loss. This is where <strong>Nesting <\/strong>comes into play: not just a simple interlocking of shapes, but a complex mathematical challenge aimed at minimising waste.  <\/p>\n\n<p>There are different types of nesting. The most common is <strong>2D Nesting<\/strong>, typical of sheet metal or fabric cutting, where flat shapes are arranged on a surface. At the opposite extreme is <strong>3D Nesting<\/strong>, where the best positioning for solid shapes is sought, which is extremely complex computationally.  <\/p>\n\n<p>In between, however, there is a specific challenge that we have addressed: <strong>2.5D Nesting<\/strong>. In this scenario, we start with three-dimensional objects (CAD files) that must be arranged on a plane, but whose arrangement is constrained not only by their footprint, but also by their heights and spatial geometric characteristics. The scientific literature is vast, but often theoretical; implementing an industrial solution requires overcoming the barrier between academic theory and production reality.  <\/p>\n\n<p>The adoption of an advanced nesting algorithm is not a technological fad, but a strategic lever for competitiveness.<\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Quality standardisation<\/strong>: While human efficiency can vary depending on fatigue or experience, the algorithm guarantees a constant search for the optimal solution, ensuring predictable and repeatable results.<\/li>\n\n\n\n<li><strong>Reduction of direct costs<\/strong>: The primary objective is to reduce raw material waste. By optimising the positioning of the pieces, more products can be placed on the same sheet or in the same load volume, drastically reducing waste material. <\/li>\n\n\n\n<li><strong>Automation and speed<\/strong>: Processes that would require hours of manual attempts by experienced operators are resolved in a short time, freeing up human resources for tasks with greater added value.<\/li>\n<\/ul>\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<h2 class=\"wp-block-heading\" id=\"Quando-usare-MVC\"><span class=\"ez-toc-section\" id=\"How_It_Works_simplifying_complexity\"><\/span>How It Works: simplifying complexity<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<p>Imagine playing Tetris, but with much more difficult rules: the pieces are not simple geometric blocks, but irregular, curved and complex shapes.<\/p>\n\n<p>Our solution tackles the problem in three logical steps:<\/p>\n\n<p>1. <strong>Collision prevention (safety margin)<\/strong>: Before fitting the pieces together, the software adds a small buffer, a safety margin around the perimeter of each shape. This measure is not only necessary for production purposes but also compensates for small mathematical inaccuracies and prevents the pieces from accidentally touching or overlapping during positioning. <\/p>\n\n<p>2. <strong>Recognition (from 3D to 2D)<\/strong>: The system does not just see a flat outline. It analyses the original CAD file (STEP format) and extracts its footprint (the outer perimeter), also keeping track of heights. It is as if we were taking an X-ray of the object to understand how much space it actually occupies.  <\/p>\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<figure class=\"wp-block-image size-full is-resized\"><img fetchpriority=\"high\" decoding=\"async\" width=\"640\" height=\"498\" src=\"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/immagine1.webp\" alt=\"\" class=\"wp-image-34257\" style=\"aspect-ratio:1.2851845513149638;width:464px;height:auto\" srcset=\"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/immagine1.webp 640w, https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/immagine1-300x233.webp 300w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<p>3. NFP geometry: To understand whether two pieces fit together, the software calculates a mathematical \u2018prohibited\u2019 area around each piece already placed (A). If the new piece (B) enters this area, it means there is a collision; if the new piece touches the edge of the area, we have perfect contact. The goal is to slide the new piece as close as possible to the existing ones without ever entering the forbidden zone.    <\/p>\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" width=\"1024\" height=\"397\" src=\"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/immagine2.webp\" alt=\"\" class=\"wp-image-34258\" style=\"aspect-ratio:2.5794714969026895;width:784px;height:auto\" srcset=\"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/immagine2.webp 1024w, https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/immagine2-300x116.webp 300w, https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/immagine2-768x298.webp 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<p>4. <strong>The optimisation gam<\/strong>e: Once you understand how to fit two pieces together, you have to decide <em>which <\/em>piece to insert and <em>where<\/em>. The algorithm tries thousands of different combinations: it rotates the pieces, changes the order of insertion and \u201cshakes\u201d the solution when it realises it is stuck, all in order to find the configuration that takes up as little space as possible. <\/p>\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\n<div class=\"wp-block-media-text is-stacked-on-mobile\" style=\"grid-template-columns:57% auto\"><figure class=\"wp-block-media-text__media\"><img decoding=\"async\" width=\"797\" height=\"500\" src=\"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/immagine3.webp\" alt=\"\" class=\"wp-image-34259 size-full\" srcset=\"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/immagine3.webp 797w, https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/immagine3-300x188.webp 300w, https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/immagine3-768x482.webp 768w\" sizes=\"(max-width: 797px) 100vw, 797px\" \/><\/figure><div class=\"wp-block-media-text__content\">\n<p>The objects shown here have a safety edge so that they do not touch each other even when they are close together<\/p>\n<\/div><\/div>\n<\/div>\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<hr class=\"wp-block-separator has-text-color has-cyan-bluish-gray-color has-alpha-channel-opacity has-cyan-bluish-gray-background-color has-background is-style-wide\" style=\"margin-top:30;margin-bottom:30px\"\/>\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<h2 class=\"wp-block-heading has-text-color has-link-color has-large-font-size wp-elements-fc012bf475b11b6cf9396693e942f31d\" style=\"color:#01bdff\"><span class=\"ez-toc-section\" id=\"Deep_Tech_for_Insiders\"><\/span>Deep Tech for Insiders <span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<p>Our technical implementation is written in Python and uses advanced libraries for geometric manipulation and heuristic optimisation. Considering that <strong>nesting is a variant of the Bin Packing problem<\/strong>, classified as NP-Hard (therefore with non-polynomial complexity), in the search for the result it is necessary to resort to a sub-optimal solution since the search for the best solution would require excessive time, which is not applicable in our case. <\/p>\n\n<h3 class=\"wp-block-heading\" id=\"1.-Elaborazione-CAD-e-Generazione-2.5D\"><strong>1. CAD processing and 2.5D generation<\/strong><\/h3>\n\n<p>The challenge begins with raw STEP files. We use the <strong>PythonOCC <\/strong>library to import the 3D geometry and analyse it. <\/p>\n\n<ul class=\"wp-block-list\">\n<li><strong>Projection and Alpha Shape<\/strong>: The algorithm samples points along the edges of the faces of the 3D model and projects them onto the base plane. The perimeter of the figure is calculated on these points. <\/li>\n\n\n\n<li><strong>Height mapping<\/strong>: We do not limit ourselves to the perimeter to understand how tall the object is. We identify the segments that best simplify our figure and calculate the height of each one, also taking into account the geometry of the polygon; this allows us to correctly evaluate the possible height variations present in a single piece. In particular, we construct a rectangular area for each side and randomly select points from which we calculate the height, then using a weighted upper average (it is better to err on the side of excess than deficiency), we associate a height with each side.   <\/li>\n<\/ul>\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"484\" src=\"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/immagine5.webp\" alt=\"\" class=\"wp-image-34262\" style=\"aspect-ratio:1.322363876153991;width:395px;height:auto\" srcset=\"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/immagine5.webp 640w, https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/immagine5-300x227.webp 300w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<h3 class=\"wp-block-heading\"><strong>2. The geometric heart: No-Fit Polygon (NFP)<\/strong><\/h3>\n\n<p>For positioning, we use the concept of <strong>No-Fit Polygon (NFP)<\/strong><sup data-fn=\"5d6da03b-739a-4d1e-acfc-abdc644b733b\" class=\"fn\"><a id=\"5d6da03b-739a-4d1e-acfc-abdc644b733b-link\" href=\"#5d6da03b-739a-4d1e-acfc-abdc644b733b\">1<\/a><\/sup>. Instead of continuously checking whether the new piece collides with those already in place, the software first generates a special template. This template, which is based on a geometric calculation called Minkowski Difference, represents the exact forbidden space around the fixed pieces. In practice, it is the footprint that the new piece would leave if it moved along the edges of those already placed, indicating the positions of perfect contact.   <\/p>\n\n<p>We use the <strong>Pyclipper <\/strong>library to perform these complex Boolean operations efficiently.<\/p>\n\n<p>The resulting NFP zone represents the set of all positions where the centre of gravity of the moving part <em>cannot <\/em>go. Consequently, the contours of this zone represent the positions of perfect contact. <\/p>\n\n<p>The algorithm selects the best candidates from the NFP geometry, favouring bottom-left positions to compact the layout towards the origin and reduce waste. The choice of valid positions for the pieces must take into account the height constraint. A search is then made for adjacent pieces and, if their heights differ excessively, a penalty is applied to the solution found, which is greater the greater the difference in height, thus allowing solutions whose heights slightly exceed the imposed limit not to be completely discarded. <\/p>\n\n<h3 class=\"wp-block-heading\" id=\"3.-Algoritmo-di-Ottimizzazione-GLS-(Guided-Local-Search)\"><strong>3. GLS (Guided Local Search) optimisation algorithm<\/strong><\/h3>\n\n<p>We do not rely on a simple greedy approach. We have implemented a <strong>Guided Local Search (GLS)<\/strong> meta-heuristic. <\/p>\n\n<p><strong>Local Mutations<\/strong>: The algorithm explores the solution space by applying mutations to the original sequence through rotations, exchanges of pieces and groups of pieces. <\/p>\n\n<p><strong>Constraint management<\/strong>: The algorithm applies higher costs to solutions that violate the set height constraints, making them less favourable but still possible if the waste is very low.<\/p>\n\n<p><strong>Restart and Perturbation<\/strong>: To avoid local minima, the system monitors improvements. If no better solution is found after a certain number of iterations, a massive permutation is triggered. This phase completely shuffles the sequence and assigns random rotations, forcing the algorithm to explore a completely new area of the solution space, temporarily accepting even worse solutions in order to break the deadlock.  <\/p>\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n<h2 class=\"wp-block-heading has-text-color has-link-color has-large-font-size wp-elements-b0f9f62f548cd391d9c3c562ade396af\" style=\"color:#01bdff\"><span class=\"ez-toc-section\" id=\"Developer_Glossary\"><\/span>Developer Glossary<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol class=\"wp-block-footnotes\"><li id=\"5d6da03b-739a-4d1e-acfc-abdc644b733b\"><strong>No-fit polygon (NFP)<\/strong>: This is the prohibited area that forms around an already placed part (A), within which the reference point of a new part (B) cannot enter. Positioning the reference point of B:   <br><img decoding=\"async\" src=\"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/immagine6.webp\" alt=\"\"><br><br>To create the NFP in our algorithm, we use the centroid of the part, but this can be calculated with respect to each reference point of part B.<br>On the edge of the NFP: parts A and B are in perfect contact (interlocking).<br>Inside the NFP: parts A and B overlap (collision).<br>In order to minimise the area occupied by part B, I will choose a point on the edge of the NFP as its position. <a href=\"#5d6da03b-739a-4d1e-acfc-abdc644b733b-link\" aria-label=\"Jump to footnote reference 1\">\u21a9\ufe0e<\/a><\/li><\/ol>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>How advanced nesting reduces waste, costs and production times by optimising the positioning of complex objects using advanced mathematical algorithms.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"[{\"id\":\"5d6da03b-739a-4d1e-acfc-abdc644b733b\",\"content\":\"<strong>No-fit polygon (NFP)<\\\/strong>: This is the prohibited area that forms around an already placed part (A), within which the reference point of a new part (B) cannot enter. Positioning the reference point of B:   <br><img src=\\\"https:\\\/\\\/www.azzurrodigitale.com\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/immagine6.webp\\\" alt=\\\"\\\"><br><br>To create the NFP in our algorithm, we use the centroid of the part, but this can be calculated with respect to each reference point of part B.<br>On the edge of the NFP: parts A and B are in perfect contact (interlocking).<br>Inside the NFP: parts A and B overlap (collision).<br>In order to minimise the area occupied by part B, I will choose a point on the edge of the NFP as its position.\"}]"},"categories":[160],"tags":[],"class_list":["post-34255","post","type-post","status-publish","format-standard","hentry","category-digital-transformation-en"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Nesting: the art of optimising space to reduce waste - AzzurroDigitale<\/title>\n<meta name=\"description\" content=\"Discover how 2.5D nesting reduces waste and production costs by optimising space with advanced algorithms and industrial software.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nesting: the art of optimising space to reduce waste - AzzurroDigitale\" \/>\n<meta property=\"og:description\" content=\"Discover how 2.5D nesting reduces waste and production costs by optimising space with advanced algorithms and industrial software.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/\" \/>\n<meta property=\"og:site_name\" content=\"AzzurroDigitale\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/azzurrodigitale\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-08T13:28:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-02T11:24:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/taglio-laser-1200x650-3-1024x562.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"562\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Sofia Cominato\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sofia Cominato\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Nesting: the art of optimising space to reduce waste - AzzurroDigitale","description":"Discover how 2.5D nesting reduces waste and production costs by optimising space with advanced algorithms and industrial software.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/","og_locale":"en_US","og_type":"article","og_title":"Nesting: the art of optimising space to reduce waste - AzzurroDigitale","og_description":"Discover how 2.5D nesting reduces waste and production costs by optimising space with advanced algorithms and industrial software.","og_url":"https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/","og_site_name":"AzzurroDigitale","article_publisher":"https:\/\/www.facebook.com\/azzurrodigitale","article_published_time":"2026-01-08T13:28:30+00:00","article_modified_time":"2026-03-02T11:24:39+00:00","og_image":[{"width":1024,"height":562,"url":"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/taglio-laser-1200x650-3-1024x562.png","type":"image\/png"}],"author":"Sofia Cominato","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Sofia Cominato","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/#article","isPartOf":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/"},"author":{"name":"Sofia Cominato","@id":"https:\/\/www.azzurrodigitale.com\/en\/#\/schema\/person\/4d2d52ca7760d6f0ae9fe66dfc94a78c"},"headline":"Nesting: the art of optimising space to reduce waste","datePublished":"2026-01-08T13:28:30+00:00","dateModified":"2026-03-02T11:24:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/"},"wordCount":1207,"publisher":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/#organization"},"image":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/#primaryimage"},"thumbnailUrl":"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/immagine1.webp","articleSection":["Digital Transformation"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/","url":"https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/","name":"Nesting: the art of optimising space to reduce waste - AzzurroDigitale","isPartOf":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/#primaryimage"},"image":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/#primaryimage"},"thumbnailUrl":"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/immagine1.webp","datePublished":"2026-01-08T13:28:30+00:00","dateModified":"2026-03-02T11:24:39+00:00","description":"Discover how 2.5D nesting reduces waste and production costs by optimising space with advanced algorithms and industrial software.","breadcrumb":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/#primaryimage","url":"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/immagine1.webp","contentUrl":"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2026\/01\/immagine1.webp"},{"@type":"BreadcrumbList","@id":"https:\/\/www.azzurrodigitale.com\/en\/mvc-and-ddd-different-models-same-objective\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.azzurrodigitale.com\/en\/"},{"@type":"ListItem","position":2,"name":"Nesting: the art of optimising space to reduce waste"}]},{"@type":"WebSite","@id":"https:\/\/www.azzurrodigitale.com\/en\/#website","url":"https:\/\/www.azzurrodigitale.com\/en\/","name":"AzzurroDigitale","description":"","publisher":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.azzurrodigitale.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.azzurrodigitale.com\/en\/#organization","name":"AzzurroDigitale","url":"https:\/\/www.azzurrodigitale.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.azzurrodigitale.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2024\/10\/logo-azzurro-digitale.svg","contentUrl":"https:\/\/www.azzurrodigitale.com\/wp-content\/uploads\/2024\/10\/logo-azzurro-digitale.svg","width":503,"height":64,"caption":"AzzurroDigitale"},"image":{"@id":"https:\/\/www.azzurrodigitale.com\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/azzurrodigitale","https:\/\/www.youtube.com\/channel\/UC1NqEqHgcztU_2GIVr9Turg","https:\/\/www.linkedin.com\/company\/azzurrodigitale"]},{"@type":"Person","@id":"https:\/\/www.azzurrodigitale.com\/en\/#\/schema\/person\/4d2d52ca7760d6f0ae9fe66dfc94a78c","name":"Sofia Cominato","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c7fbc3aefcb486c357c3137f8cf8d65d3676df01ab2b649830cdf7e2456f04e8?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c7fbc3aefcb486c357c3137f8cf8d65d3676df01ab2b649830cdf7e2456f04e8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c7fbc3aefcb486c357c3137f8cf8d65d3676df01ab2b649830cdf7e2456f04e8?s=96&d=mm&r=g","caption":"Sofia Cominato"}}]}},"_links":{"self":[{"href":"https:\/\/www.azzurrodigitale.com\/en\/wp-json\/wp\/v2\/posts\/34255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.azzurrodigitale.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.azzurrodigitale.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.azzurrodigitale.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.azzurrodigitale.com\/en\/wp-json\/wp\/v2\/comments?post=34255"}],"version-history":[{"count":0,"href":"https:\/\/www.azzurrodigitale.com\/en\/wp-json\/wp\/v2\/posts\/34255\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.azzurrodigitale.com\/en\/wp-json\/wp\/v2\/media?parent=34255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.azzurrodigitale.com\/en\/wp-json\/wp\/v2\/categories?post=34255"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.azzurrodigitale.com\/en\/wp-json\/wp\/v2\/tags?post=34255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}