# ApplyCurvePiping

**URL:** <https://it.discourse.mcneel.com/t/applycurvepiping/2247>\
**Category:** Rhino Windows\
**Created:** [11 Febbraio 2019, 1:47am UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247 "2019-02-11T01:47:20Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [11 Febbraio 2019, 1:47am UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/1 "2019-02-11T01:47:20Z")

</div>

lo so che è da parecchio tempo che non posto domande  
ma con questa recupero un pochino di domande strane 🙂

sarebbe possibbile replicare il comando ApplyCurvePiping?

---

<div class="post-metadata">

**Author:** ![vittorio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/vittorio/32/16755_2.png) [@vittorio](https://it.discourse.mcneel.com/u/vittorio)\
**Post date:** [11 Febbraio 2019, 9:06am UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/2 "2019-02-11T09:06:28Z")

</div>

In Rhino Options alla voce aliases aggiungi un alias es. : ap = \_ApplyCurvePiping

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [11 Febbraio 2019, 11:17am UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/3 "2019-02-11T11:17:12Z")

</div>

grazie Vittorio per la risposta,

a volte ho dato troppe info e non si capiva il senso  
ma questa volta ho sintetizzato troppo la domanda  
colpa mia, chiedo venia…

quello che intendevo era poter replicare il comando  
\_ApplyCurvePiping senza eseguire il comando stesso, quindi  
eseguire vari comandi di rhino per ottenere lo stesso risultato.

dovrebbe essere possibile, credo o no?

---

<div class="post-metadata">

**Author:** ![PAOLONOZZA](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/paolonozza/32/16132_2.png) [@PAOLONOZZA](https://it.discourse.mcneel.com/u/PAOLONOZZA)\
**Post date:** [11 Febbraio 2019, 6:01pm UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/4 "2019-02-11T18:01:13Z")

</div>

Usi il comando forma tubolare e poi converti in mesh

se poi vuoi essere ancora più masochista usi :  
cerchio verticale su curva e sweep a 1 binario. poi decidi se usare il \_cap oppure posizioni due sfere in testa . Splitti le sfere e fai un join di tutto.

Comunque che senso ha fare tutto questo?  
boh…

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [11 Febbraio 2019, 9:49pm UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/5 "2019-02-11T21:49:41Z")

</div>

salve paolo e grazie per la risposta,

> [@PAOLONOZZA](#):
>
> Comunque che senso ha fare tutto questo?

 ![a](https://global.discourse-cdn.com/mcneel/uploads/mcneel_it/original/2X/d/d84677e669f750e974ff29cbfb46d7d9e8587779.jpeg)  
 ![b](https://global.discourse-cdn.com/mcneel/uploads/mcneel_it/original/2X/6/66dad0ae4e689f9e78ccdd3a8e5ffd60f4e3fb44.jpeg)  
creare la forma tubolare non è un problema, è l’effetto nella  
foto 2 che mi interessa, quando si cambia il “tipo di linea”  
si adatta in automatico al tipo di linea che gli si imposta  
se sposti i punti della curva segue senza registra storia  
volevo capire quali sono i vari passaggi per ottenere ciò?

---

<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:** [12 Febbraio 2019, 11:24am UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/6 "2019-02-12T11:24:20Z")

</div>

Ciao

non è molto difficile.

1 determini la lunghezza della curva = L;  
2 determini il modulo del tratteggio (esempio 2 unità piene 2 vuota) e la lunghezza M;  
3 determini la suddivisione ottimale in relazione a L / M e i rispettivi punti sulla curva dei tratti pieni;  
4 crei i pipe.

Sergio

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [12 Febbraio 2019, 1:23pm UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/7 "2019-02-12T13:23:13Z")

</div>

ciao Sergio grazie anche te per la risposta  
non so se mi sono spiegato bene quello che intendo fare è ritrovarmi con tanti pipe senza dividere la curva, in pratica la suddivisione della curva in foto è fittizzia nel senso che cambiando il tipo di curva come nascosto tratteggiato etc i pipe si modificano di conseguenza ma la curva in realtà è sempre intera.  
nelle impostazioni si può creare un tipo di curva personale con le lunghezze e spazi voluti e dopo aver eseguito il ApplyCurvePiping controllo se il risultato è quello con ExtractPipedCurve estraggo le mesh.

la questione è, come faccio a ritrovarmi “solo visivamente” i pipe suddivisi come il tipo di linea scelto?

---

<div class="post-metadata">

**Author:** ![lucio\_zadra](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/lucio_zadra/32/16361_2.png) [@lucio\_zadra](https://it.discourse.mcneel.com/u/lucio_zadra)\
**Post date:** [12 Febbraio 2019, 2:30pm UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/8 "2019-02-12T14:30:59Z")

</div>

Scusa Salvio, ma se ApplycurvePiping ti da quello che ti serve (risultato solamente visivo che si aggiorna con la modifica della curva generatrice) e l’ExtractPipedCurve ti genera le mesh per fare eventuali esportazioni o modifiche, te, cosa stai cercando?  
Perchè non riesco a capirlo…  
Non ti vanno bene le mesh e vuoi dei pipe Nurbs?  
Non vuoi utilizzare ApplyCurvePiping perchè non riesci ad utilizzarlo negli script?  
Devi modificare il tratteggio e non vuoi passare per gli stili di curva?  
O stai cercando solo di farci tirare delle testate contro i piloni del ponte Morandi per velocizzare la demolizione?

PS: mi sono dimenticato di darti qualche soluzione:

- Per avere una cosa dinamica, l’unica alternativa credo sia GH
- Per ottenere i pipe nurbs da una curva tratteggiata, devi farti uno script che estrae le mesh, trova i punti di intersezione con la curva, dividi la curva per i punti e, un pezzo si e uno no, generi i pipe.

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [12 Febbraio 2019, 10:52pm UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/9 "2019-02-12T22:52:36Z")

</div>

ahahahah grande Lucio 🙂  
beh si in effetti il motivo è che avrei bisogno di fare la stessa cosa ma non con il pipe  
e quindi mi interessava capire come con quel comando ci si è riusciti per poterlo replicare  
(ovviamente nei limiti del possibile è sottointeso)

> [@lucio\_zadra](#):
>
> Per avere una cosa dinamica, l’unica alternativa credo sia GH

infatti l’ho già fatto tempo fa quando ancora non conoscevo il comando ApplyCurvePiping  
solo che non capisco come fa a funzionare questo comando senza GH oppure senza  
il “registra storia” attivato, com’è possibile che se sposto la linea originale si sposta la mesh,  
o anche cambiando il tipo di linea si adatta ad esso?

> [@lucio\_zadra](#):
>
> - Per ottenere i pipe nurbs da una curva tratteggiata, devi farti uno script che estrae le mesh, trova i punti di intersezione con la curva, dividi la curva per i punti e, un pezzo si e uno no, generi i pipe.

leggendo ciò che hai scritto forse un punto di inizio l’ho trovato:  
può darsi che il pipe viene suddiviso come tipo di linea essendo che si va a prendere le misure  
direttamente nelle impostazioni unità \> annotazioni \> tipo di linea?  
se quanto ipotizzato è valido rimane il fatto di come visualizzare le mesh senza averle fisicamente…

è lo so mai una volta che chiedo che ne so: “non trovo questo comando” 🙂  
però se è servito per farti postare sono contento essendo che ultimamente scrivi poco  
e quindi colgo l’occasione per salutarti è un grazie a tutti 👍

---

<div class="post-metadata">

**Author:** ![lucio\_zadra](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/lucio_zadra/32/16361_2.png) [@lucio\_zadra](https://it.discourse.mcneel.com/u/lucio_zadra)\
**Post date:** [13 Febbraio 2019, 6:42am UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/10 "2019-02-13T06:42:20Z")

</div>

> [@0904](#):
>
> mi interessava capire come con quel comando ci si è riusciti per poterlo replicare

Aaannn… adesso ho capito… non credo ci sia alcuna possibilità se non l’intervento da parte di mcneel; l’applycurvepiping come lo shutlining sono delle features visive, non per la modellazione (un imbroglio solo per ottenere velocemente un effetto grafico senza appesantire il modello; infatti puoi solo estrarre le mesh di visualizzazione).

> [@0904](#):
>
> se è servito per farti postare sono contento essendo che ultimamente scrivi poco  
> e quindi colgo l’occasione per salutarti è un grazie a tutti 👍

Hahaha, era un tranello allora! 😂  
Hai ragione che scrivo poco ultimamente, ma il tempo é poco e cerco di intervenire solo se la risposta non mi imbarca in discussioni chilometriche…  
Un saluto a tutti anche da parte mia  
Ps sto rispondendo dal cell… se ho dimenticato qualcosa aggiungo dopo dal pc… 😉

---

<div class="post-metadata">

**Author:** ![lucio\_zadra](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/lucio_zadra/32/16361_2.png) [@lucio\_zadra](https://it.discourse.mcneel.com/u/lucio_zadra)\
**Post date:** [13 Febbraio 2019, 7:37am UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/11 "2019-02-13T07:37:08Z")

</div>

> [@0904](#):
>
> può darsi che il pipe viene suddiviso come tipo di linea essendo che si va a prendere le misure  
> direttamente nelle impostazioni unità \> annotazioni \> tipo di linea?

Esattamente così.

---

<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:** [13 Febbraio 2019, 7:57am UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/12 "2019-02-13T07:57:16Z")

</div>

Ciao

quel che desideri lo ottieni creando un plugin. Sostanzialmente devi programmare il DisplayPipeline. Se sai programmare in c++ puoi provare. Peraltro Dale ha condiviso in GitHub degli esempi (più semplici) da cui partire.

Sergio

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [13 Febbraio 2019, 9:11am UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/13 "2019-02-13T09:11:25Z")

</div>

Ciao Sergio

> [@Sergio\_Alessi](#):
>
> devi programmare il DisplayPipeline

Scusa, parli del DisplayConduit ?  
Cioe’ di usare il DisplayPipeline all’interno di un DisplayConduit ?

( Perche’ quello si puo’ fare anche in Python, che Salvio sicuramente conosce 🙂 )

---

<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:** [13 Febbraio 2019, 10:33am UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/14 "2019-02-13T10:33:29Z")

</div>

Ciao Emilio

si, intendo proprio questo.

Sergio

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [13 Febbraio 2019, 11:16am UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/15 "2019-02-13T11:16:56Z")

</div>

Grazie per l’info, Sergio !

@0904 , se ti puo’ interessare, posto qui un vecchio script in cui avevo usato il DisplayConduit consigliato da Sergio.

(Come sempre) e’ una cosa scritta in fretta, senza commenti.  
Poi anch’io ho poca esperienza col DisplayCoduit, quindi forse lo ho usato … alla buona, per cui …  
Potrebbe anche essere un pessimo esempio … non so … 😄

Non e’ uno script brevissimo … ma non ho trovato altro …

```python
import Rhino
import scriptcontext
import System

def params():
  tolerance = 0.1
  wirecolor = System.Drawing.Color.FromArgb( 0, 255, 255 )
  textcolor = System.Drawing.Color.FromArgb( 0, 255, 0 )
  wirethickness = 4
  textpoint = Rhino.Geometry.Point2d( 200, 200 )
  textheight = 30
  figures = 1
  return ( 
      tolerance, wirecolor, textcolor, wirethickness, 
      textpoint, textheight, figures )

def getbb( plane, obrefs ):
  bigbox = Rhino.Geometry.BoundingBox.Empty
  for obref in obrefs:
    geom = obref.Geometry()
    box = geom.GetBoundingBox( plane )
    bigbox = Rhino.Geometry.BoundingBox.Union( bigbox, box )
  return bigbox

def getsizes( box ):
  pt = list( box.GetCorners() )
  res = []
  res.append( pt[0].DistanceTo( pt[1] ) )
  res.append( pt[0].DistanceTo( pt[3] ) )
  res.append( pt[0].DistanceTo( pt[4] ) )
  res.sort()
  return res

def getvolume( box ):
  p0 = box.Corner( True, True, True )
  p1 = box.Corner( False, True, True )
  p2 = box.Corner( True, False, True )
  p3 = box.Corner( True, True, False )
  vol = (
      p0.DistanceTo( p1 ) * p0.DistanceTo( p2 ) * p0.DistanceTo( p3 ) )
  return vol

def bblines( box, plane ):
  xform = Rhino.Geometry.Transform.PlaneToPlane( 
      Rhino.Geometry.Plane.WorldXY, plane )
  co = list( box.GetCorners() )
  lis = []
  lis.append( Rhino.Geometry.Line( co[0], co[1] ) )
  lis.append( Rhino.Geometry.Line( co[1], co[2] ) )
  lis.append( Rhino.Geometry.Line( co[2], co[3] ) )
  lis.append( Rhino.Geometry.Line( co[3], co[0] ) )
  lis.append( Rhino.Geometry.Line( co[4], co[5] ) )
  lis.append( Rhino.Geometry.Line( co[5], co[6] ) )
  lis.append( Rhino.Geometry.Line( co[6], co[7] ) )
  lis.append( Rhino.Geometry.Line( co[7], co[4] ) )
  lis.append( Rhino.Geometry.Line( co[0], co[4] ) )
  lis.append( Rhino.Geometry.Line( co[1], co[5] ) )
  lis.append( Rhino.Geometry.Line( co[2], co[6] ) )
  lis.append( Rhino.Geometry.Line( co[3], co[7] ) )
  [li.Transform( xform ) for li in lis]
  return lis

def surplane( su, tolr ):
  ok, pla = su.TryGetPlane( tolr )
  if ok:
    dm0 = su.Domain( 0 )
    dm1 = su.Domain( 1 )
    ok, pla = su.FrameAt( dm0.Mid, dm1.Mid )
    return pla
  ok, cyl = su.TryGetCylinder( tolr )
  if ok:
    cir = cyl.CircleAt( 0.0 )
    return cir.Plane
  ok, con = su.TryGetCone( tolr )
  if ok:
    return con.Plane
  dm0 = su.Domain( 0 )
  dm1 = su.Domain( 1 )
  ok, pla = su.FrameAt( dm0.Mid, dm1.Mid )
  if ok:
    return pla
  else:
    return None

def curplane( cu, tolr ):
  ok, pla = cu.TryGetPlane( tolr )
  if ok:
    return pla
  if cu.IsLinear( tolr ):
    dm = cu.Domain
    pla = Rhino.Geometry.Plane( cu.PointAtStart, cu.TangentAtStart )
    return pla
  else:
    return None

def split( su ):
  sp0 = list( su.GetSpanVector( 0 ) )
  sp1 = list( su.GetSpanVector( 1 ) )
  if len( sp0 ) == 3:
    return list( su.Split( 0, sp0[1] ) )
  elif len( sp0 ) > 3:
    su0, su1 = list( su.Split( 0, sp0[1] ) )
    return [su0] + split( su1 )
  elif len( sp1 ) == 3:
    return list( su.Split( 1, sp1[1] ) )
  elif len( sp1 ) > 3:
    su0, su1 = list( su.Split( 1, sp1[1] ) )
    return [su0] + split( su1 )
  else:
    return [su]

class conduit( Rhino.Display.DisplayConduit ):

  def __init__ ( self, colr, thik, tcolr, texp, thei, figs ):
    Rhino.Display.DisplayConduit. __init__ ( self )
    self.lins = []
    self.colr = colr
    self.thik = thik
    self.tcolr = tcolr
    self.tex = ''
    self.texp = texp
    self.thei = thei
    self.fmt = '%%.%df' % figs

  def addlins( self, lins ):
    self.lins.extend( lins )

  def setsize( self, s0, s1, s2 ):
    vol = s0 * s1 * s2
    format = '%s x %s x %s - volume: %s' % ( 
        self.fmt, self.fmt, self.fmt, self.fmt )
    self.tex = format % ( s0, s1, s2, vol )

  def clear( self ):
    self.lins = []
    self.tex = ''

  def pritex( self ):
    if self.tex:
      print( self.tex )

  def PostDrawObjects( self, eventargs ):
    for lin in self.lins:
      eventargs.Display.DrawLine( lin, self.colr, self.thik )
    if self.tex:
      eventargs.Display.Draw2dText( 
          self.tex, self.tcolr, self.texp, False, self.thei )
      
def main():
  tolr, colr, tcolr, thik, texp, thei, figs = params()
  con = conduit( colr, thik, tcolr, texp, thei, figs )
  con.Enabled = True
  while True:
 
    scriptcontext.escape_test()
    gob = Rhino.Input.Custom.GetObject()
    gob.SetCommandPrompt( '?' )
    gob.AcceptNothing( True )
    gob.Get()
    res = gob.Result()
    if res == Rhino.Input.GetResult.Cancel:
      con.Enabled = False
      return
    elif res == Rhino.Input.GetResult.Nothing:
      break
    elif res == Rhino.Input.GetResult.Object:
      obrefs = gob.Objects()   
      scriptcontext.doc.Objects.UnselectAll()

    scriptcontext.doc.Views.Redraw()
    minpla = Rhino.Geometry.Plane.WorldXY
    box = getbb( minpla, obrefs )
    minbox = box
    minvol = getvolume( minbox )
    for obref in obrefs:
      scriptcontext.escape_test()
      rep = obref.Brep()
      if rep:
        sucnt = 0
        sunum = rep.Faces.Count
        for ix in range( sunum ):
          sucnt += 1
          if ( sucnt % 100 ) == 0:
            pro = '%d / %d' % ( sucnt, sunum )
            Rhino.RhinoApp.SetCommandPrompt( pro )
          scriptcontext.escape_test()
          sur = rep.Faces[ix]
          sus = split( sur.DuplicateSurface() )
          for su in sus:
            pla = surplane( su, tolr )
            if pla:
              box = getbb( pla, obrefs )
              vol = getvolume( box )
              if vol < minvol:
                minbox = box
                minvol = vol
                minpla = pla
          bre = sur.DuplicateFace( False )
          cus = list( bre.DuplicateEdgeCurves() )
          for cu in cus:
            pla = curplane( cu, tolr )
            if pla:
              box = getbb( pla, obrefs )
              vol = getvolume( box )
              if vol < minvol:
                minbox = box
                minvol = vol
                minpla = pla
      cur = obref.Curve()
      if cur:
        flags = Rhino.Geometry.CurveSimplifyOptions.All
        angtol = scriptcontext.doc.ModelAngleToleranceRadians
        ncu = cur.Simplify( flags, tolr, angtol )
        if ncu:
          cus = list( ncu.DuplicateSegments() )
          for cu in cus:
            pla = curplane( cu, tolr )
            if pla:
              box = getbb( pla, obrefs )
              vol = getvolume( box )
              if vol < minvol:
                minbox = box
                minvol = vol
                minpla = pla
    s0, s1, s2 = getsizes( minbox )
    con.clear()
    con.setsize( s0, s1, s2 )
    lins = bblines( minbox, minpla )
    con.addlins( lins )
    scriptcontext.doc.Views.Redraw()
    con.pritex()
  con.Enabled = False
  scriptcontext.doc.Views.Redraw()

main()

```

Per la cronaca, lo script serve per cercare le dimensioni di pezzi tipo questo:

![guessbb](https://discourse-cdn-aws1.com/mcneel/uploads/mcneel_it/original/2X/0/016770b025a90a42a7f0e97de68bc1c9d9248498.png)

Cioe’ profilati per carpenteria con orientamento variabile.

Lo script si limita a mostare temporaneamente una bounding box e le relative misure,  
cercando, quando ci riesce, di orientare la box secondo l’orientamento del pezzo.

Ciao

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [13 Febbraio 2019, 11:42am UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/16 "2019-02-13T11:42:03Z")

</div>

grazie a tutti per i vari suggerimenti, vedrò di analizzare tutti gli elementi dati

per lo meno adesso con “DisplayPipeline” c’è un punto di partenza 👍

---

<div class="post-metadata">

**Author:** ![0904](https://avatars.discourse-cdn.com/v4/letter/0/b3f665/32.png) [@0904](https://it.discourse.mcneel.com/u/0904)\
**Post date:** [16 Febbraio 2019, 9:06pm UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/17 "2019-02-16T21:06:20Z")

</div>

ciao Emilio, e grazie per lo script  
in pratica serve a creare un BoundingBox con le misure giusto?

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [16 Febbraio 2019, 10:27pm UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/18 "2019-02-16T22:27:47Z")

</div>

Ciao Salvio !

Lo script cerca di ricavare le dimensioni del pezzo selezionato.  
Come accennavo, e’ fatto per essere usato su pezzi di profilato, piastre (possibilmante rettangolari), pezzi di tubo tondo … cose del genere con forme molto ‘regolari’.

Per ottenere le misure, lo script cerca una bounding box (la piu’ piccola che trova) che sia ‘allineata’ in qualche modo a una delle superfici che costituiscono il pezzo.

Il DisplayConduit serve appunto per mostare le dimensioni della box trovata,e anche per mostare la box in modo da capire se le misure ottenute corrispondono a quelle del pezzo oppure no.

E’ uno dei casi in cui il conduit puo’ essere utile, cioe’ quando vuoi solo mostare temporaneamente della geometria senza aggiungere niente al documento 3dm.  
Quando disabiilti il conduit, sparisce tutto, e non c’e’ niente da cancellare. 🙂  
Il tutto e’ anche molto piu’ veloce rispetto a disegnare, spostare e cancellare oggetti geometrici salvati nel documento.

---

<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:** [18 Febbraio 2019, 10:17am UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/19 "2019-02-18T10:17:07Z")

</div>

> [@emilio](#):
>
> DisplayConduit

Bravo Emilio

script interessante. Quello che intendo è una cosa molto prossima alla tua soluzione. Si tratterebbe di creare un comando che “risiede costantemente in memoria” e che, associato ad una lista, disegna a video entità non residenti all’interno del documento. Penso sia un processo similare a quello adottato per i blocchi …

Ciao!

Sergio

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/16095_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [18 Febbraio 2019, 10:26am UTC](https://it.discourse.mcneel.com/t/applycurvepiping/2247/20 "2019-02-18T10:26:30Z")

</div>

Ciao Sergio.

Grazie per la spiegazione !  
… Anche se … indovina … non ci ho capito gran che … 😕

Stai parlando di replicare ApplyCurvePiping ? 🙂

( Tra l’altro e’ un comando che non conosco … finora non mi e’ capitato di usarlo … )

[Pagina seguente](https://it.discourse.mcneel.com/t/applycurvepiping/2247.md?page=2)
