# Volume interno tra superfici

**URL:** <https://it.discourse.mcneel.com/t/volume-interno-tra-superfici/6439>\
**Category:** Grasshopper\
**Created:** [7 Gennaio 2025, 6:55am UTC](https://it.discourse.mcneel.com/t/volume-interno-tra-superfici/6439 "2025-01-07T06:55:59Z")\
**Posts on this page:** 10\
**Page:** 2

<div class="post-metadata">

**Author:** ![Sergio\_Alessi](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/sergio_alessi/32/22676_2.png) [@Sergio\_Alessi](https://it.discourse.mcneel.com/u/Sergio_Alessi)\
**Post date:** [27 Gennaio 2025, 8:34am UTC](https://it.discourse.mcneel.com/t/volume-interno-tra-superfici/6439/21 "2025-01-27T08:34:15Z")

</div>

Così forse è più comprensibile. Con il termine “esteso di 2” (la griglia non si vede …) intendo “incrementa il boundingbox” perchè piani verticali e orizzontali posti agli estremi possono costituire eccezioni del metodo proposto.

 ![image](https://global.discourse-cdn.com/mcneel/uploads/mcneel_it/original/3X/1/c/1ccc59f96c200a54701d65acb107fa199d37efef.jpeg)

---

<div class="post-metadata">

**Author:** ![leopoldomonzani](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/leopoldomonzani/32/17957_2.png) [@leopoldomonzani](https://it.discourse.mcneel.com/u/leopoldomonzani)\
**Post date:** [27 Gennaio 2025, 9:37am UTC](https://it.discourse.mcneel.com/t/volume-interno-tra-superfici/6439/22 "2025-01-27T09:37:30Z")

</div>

Se non è necessaria una precisione assoluta si può dare uno spessore agli elementi di taglio.  
Con l’unione booleana si creano i volumi interni, quindi si elimina facilmente la “buccia”.  
Non so se può funzionare sempre.  
[volumi b.gh](https://it.discourse.mcneel.com/uploads/short-url/4ViIYnvAmyGUaMZgsuAqbdLBkUN.gh) (24,9 KB)

 ![img1](https://global.discourse-cdn.com/mcneel/uploads/mcneel_it/original/3X/8/5/85a3f2dd513accecb29d7581fbdf4544edc364d2.jpeg)  
 ![img2](https://global.discourse-cdn.com/mcneel/uploads/mcneel_it/original/3X/9/0/90c002def6913894a184f84f32113378dc7a3690.jpeg)

---

<div class="post-metadata">

**Author:** ![RiccardoMajewski](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/riccardomajewski/32/22945_2.png) [@RiccardoMajewski](https://it.discourse.mcneel.com/u/RiccardoMajewski)\
**Post date:** [27 Gennaio 2025, 3:33pm UTC](https://it.discourse.mcneel.com/t/volume-interno-tra-superfici/6439/23 "2025-01-27T15:33:25Z")

</div>

Generalizzato per funzionare con superfici:

 ![2025-01-27 16_32_02-Window](https://global.discourse-cdn.com/mcneel/uploads/mcneel_it/original/3X/b/d/bd8c019cf411e06e34940a479d1468e12ec578a3.png)  
[brep splits.gh](https://it.discourse.mcneel.com/uploads/short-url/vHQibBiV1BKVqTfpHj99dGadckp.gh) (20,8 KB)

```auto
private void RunScript(List<Surface> s, ref object R)
  {
    // Creazione boundingbox globale contenente tutte le superfici
    Rhino.Geometry.BoundingBox bbox = Rhino.Geometry.BoundingBox.Empty;
    int n = s.Count;
    for(int i = 0;i < n;i++){
      Surface surf = s[i];
      bbox.Union(surf.GetBoundingBox(true));
    }
    
    // Aumentato boundingbox per avere margine negli step finali
    double d = bbox.Diagonal.Length;
    bbox.Inflate(+d / 100);
    
    // Esteso tutte le superfici per assicurare una completa intersezione con il bbox
    for(int i = 0;i < n;i++){
      s[i] = s[i].Extend(IsoStatus.East, d, true);
      s[i] = s[i].Extend(IsoStatus.North, d, true);
      s[i] = s[i].Extend(IsoStatus.South, d, true);
      s[i] = s[i].Extend(IsoStatus.West, d, true);
    }

    // Creata lista con tutti i frammenti da "tagliare"
    List<Brep> breps = new List<Brep>();
    breps.Add(bbox.ToBrep());

    // Ciclo iterativo, uno per ogni "cutter", per ogni superficie di taglio
    for(int i = 0;i < n;i++){
      Brep cutter = s[i].ToBrep();
      
      // Lista dove tenere i risultati dei tagli
      List<Brep> breps2 = new List<Brep>();
      
      // Operazione solida "split" per ogni frammento da tagliare con l'attuale cutter
      foreach(Brep brep in breps){
        Brep[] results = Rhino.Geometry.Brep.CreateBooleanSplit(brep, cutter, 0.01);
        if(results.Length == 0){
          // il cutter non ha intersecato il frammento, il frammento viene tenuto intero per i prossimi cicli
          breps2.Add(brep);
        }else{
          // il cutter ha intersecato il frammento, vengono tenuti i nuovi sotto-frammenti risultanti
          foreach(Brep result in results){
            breps2.Add(result);
          }
        }
      }
      breps = breps2;
    }

    
    List<Brep> results2 = new List<Brep>();
    
    // rimpicciolimento bbox
    bbox.Inflate(-d / 100);
    // salvata ogni brep che viene contenuta completamente dal bbox iniziale
    // in questo punto tutti i frammenti brep esterni perimetrali avranno una propria bbox che interseca con la bbox iniziale esattamente di "d"
    foreach(Brep brep in breps){
      if(bbox.Contains(brep.GetBoundingBox(true))){
        results2.Add(brep);
      }
    }

    R = results2;
  }

```

EDIT: aggiunti commenti nel codice qua ^ , @luca.filippone

---

<div class="post-metadata">

**Author:** ![luca.filippone](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/luca.filippone/32/16173_2.png) [@luca.filippone](https://it.discourse.mcneel.com/u/luca.filippone)\
**Post date:** [27 Gennaio 2025, 8:53pm UTC](https://it.discourse.mcneel.com/t/volume-interno-tra-superfici/6439/24 "2025-01-27T20:53:05Z")

</div>

Sei Fantastico. Appena provo ti do un feedback. Grazie Ricc

nel frattempo riesci a spiegare brevemente come funziona?

---

<div class="post-metadata">

**Author:** ![leopoldomonzani](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/leopoldomonzani/32/17957_2.png) [@leopoldomonzani](https://it.discourse.mcneel.com/u/leopoldomonzani)\
**Post date:** [27 Gennaio 2025, 10:32pm UTC](https://it.discourse.mcneel.com/t/volume-interno-tra-superfici/6439/25 "2025-01-27T22:32:26Z")

</div>

La mia con Anemone funziona così.

---

<div class="post-metadata">

**Author:** ![luca.filippone](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/luca.filippone/32/16173_2.png) [@luca.filippone](https://it.discourse.mcneel.com/u/luca.filippone)\
**Post date:** [28 Gennaio 2025, 5:11am UTC](https://it.discourse.mcneel.com/t/volume-interno-tra-superfici/6439/26 "2025-01-28T05:11:48Z")

</div>

Bravo Leo, anche tu porti a casa il risultato. Prediligo possibilmente soluzioni indipendenti. Ad ogni modo grazie ad entrambi.

---

<div class="post-metadata">

**Author:** ![luca.filippone](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/luca.filippone/32/16173_2.png) [@luca.filippone](https://it.discourse.mcneel.com/u/luca.filippone)\
**Post date:** [28 Gennaio 2025, 9:14pm UTC](https://it.discourse.mcneel.com/t/volume-interno-tra-superfici/6439/27 "2025-01-28T21:14:16Z")

</div>

![image](https://global.discourse-cdn.com/mcneel/uploads/mcneel_it/original/3X/d/e/def46d8dca0e694651197f562ffb0fd6329a986e.jpeg)  
Ricc, mancano i locali indicati in viola.

---

<div class="post-metadata">

**Author:** ![RiccardoMajewski](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/riccardomajewski/32/22945_2.png) [@RiccardoMajewski](https://it.discourse.mcneel.com/u/RiccardoMajewski)\
**Post date:** [28 Gennaio 2025, 11:26pm UTC](https://it.discourse.mcneel.com/t/volume-interno-tra-superfici/6439/28 "2025-01-28T23:26:47Z")

</div>

A spanne mi sembra di capire che non hai selezionato le superfici, e per quello che non crea quei volumi…  
Puoi passarmi il file con il problema? Altrimenti non riesco a capire cosa non sta funzionando…

---

<div class="post-metadata">

**Author:** ![luca.filippone](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/luca.filippone/32/16173_2.png) [@luca.filippone](https://it.discourse.mcneel.com/u/luca.filippone)\
**Post date:** [29 Gennaio 2025, 6:57am UTC](https://it.discourse.mcneel.com/t/volume-interno-tra-superfici/6439/29 "2025-01-29T06:57:56Z")

</div>

E’ il tuo file. Non c’è nulla di mio. Comunque si, ho visto che non sono in rosso. Ok grazie, metto che hai risolto, buona giornata a tutti

---

<div class="post-metadata">

**Author:** ![RiccardoMajewski](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/riccardomajewski/32/22945_2.png) [@RiccardoMajewski](https://it.discourse.mcneel.com/u/RiccardoMajewski)\
**Post date:** [29 Gennaio 2025, 8:17am UTC](https://it.discourse.mcneel.com/t/volume-interno-tra-superfici/6439/30 "2025-01-29T08:17:21Z")

</div>

Ah , si, avevo internalizzato tutte superfici nuove, quindi non sta realmente usando le geometrie che avevi fornito te.  
Cmq non l’ho testato molto, se c’è da sistemare fallo sapere…

[Pagina precedente](https://it.discourse.mcneel.com/t/volume-interno-tra-superfici/6439.md?page=1)
