# CurveContourPoints

**URL:** <https://it.discourse.mcneel.com/t/curvecontourpoints/2379>\
**Category:** Scripting e Programmazione\
**Created:** [10 Aprile 2019, 2:05pm UTC](https://it.discourse.mcneel.com/t/curvecontourpoints/2379 "2019-04-10T14:05:53Z")\
**Posts on this page:** 14\
**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:** [10 Aprile 2019, 2:05pm UTC](https://it.discourse.mcneel.com/t/curvecontourpoints/2379/1 "2019-04-10T14:05:53Z")

</div>

buonasera a tutti,

> # CurveContourPoints
> 
> Returns the 3-D point locations calculated by contouring a curve object.

ho fatto delle prove con questo comando ma non ho capito in che modo imposta la distanza dei vari punti?

---

<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:** [10 Aprile 2019, 2:34pm UTC](https://it.discourse.mcneel.com/t/curvecontourpoints/2379/2 "2019-04-10T14:34:39Z")

</div>

C’e’ il quarto parametro opzionale

> interval Optional. Number. The distance between contour curves. If omitted, the interval will be equal to the diagonal distance of the object’s bounding box divided by 50.

---

<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:** [10 Aprile 2019, 3:11pm UTC](https://it.discourse.mcneel.com/t/curvecontourpoints/2379/3 "2019-04-10T15:11:00Z")

</div>

ciao Emilio grazie x la risposta

ma per quanto riguarda Rhino.DivideCurveLength che differenza c’è con Rhino.DivideCurve?

---

<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:** [10 Aprile 2019, 8:00pm UTC](https://it.discourse.mcneel.com/t/curvecontourpoints/2379/4 "2019-04-10T20:00:24Z")

</div>

DivideCurveLength divide la curva in tratti della misura impostata e l’ultimo tratto sarà di lunghezza diversa a meno che la lunghezza sia un multiplo esatto del valore impostato.

---

<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:** [11 Aprile 2019, 5:56am UTC](https://it.discourse.mcneel.com/t/curvecontourpoints/2379/5 "2019-04-11T05:56:40Z")

</div>

Ciao Salvio

Come dice Vittorio, la differenza e’ esattamente quella che c’e’ anche tra le due opzioni del comando **Divide**

![divide](https://discourse-cdn-aws1.com/mcneel/uploads/mcneel_it/original/2X/c/c052b05639005d05bcb035fffb558d0295d9f695.png)

---

<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 Aprile 2019, 9:37am UTC](https://it.discourse.mcneel.com/t/curvecontourpoints/2379/6 "2019-04-11T09:37:10Z")

</div>

grazie Vittorio e grazie Emilio per le risposte

leggendo la guida sono daccordo con voi,  
ma tengo a precisare che ho provato i due comandi e si comportano nello stesso identico modo. preciso che io ho inserito in entrambi i casi solo i due parametri obbligatori.

ora provo anche combinando i paramentri opzionali può darsi che cambia qualcosa?

---

<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 Aprile 2019, 9:52am UTC](https://it.discourse.mcneel.com/t/curvecontourpoints/2379/7 "2019-04-11T09:52:05Z")

</div>

> ora provo anche combinando i paramentri opzionali può darsi che cambia qualcosa?

mi sa mi sa che è cosi, ho provato usando solo la stringa del comando inserendo True prima opzione

la cosa non mi torna con l’esempio della guida aggiungendo i punti tramite Rhino.AddPoint in for each…

---

<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:** [11 Aprile 2019, 11:05am UTC](https://it.discourse.mcneel.com/t/curvecontourpoints/2379/8 "2019-04-11T11:05:50Z")

</div>

A me sembra che funzioni tutto.  
Se vuoi, disegna due curve uguali lunghe 50  
e poi esegui questo.  
Clicca prima una curva e poi l’altra.

```python
import rhinoscriptsyntax as rs
obj = rs.GetObject("Select a curve")
if rs.IsCurve(obj):
    points = rs.DivideCurveLength(obj, 15.0)
    for point in points: rs.AddPoint(point)
obj = rs.GetObject("Select another curve")
if rs.IsCurve(obj):  
    points = rs.DivideCurve(obj, 15)
    for point in points: rs.AddPoint(point)

```

![divide2](https://discourse-cdn-aws1.com/mcneel/uploads/mcneel_it/original/2X/f/fcaab963c10a8228a769ae1cfc49a64a1f15bb37.png)

Forse dovresti prima impratichirti col comando **Divide**.  
(Il pulsantino mostrato sopra. Prova i comandi tasto Dx e tasto SX)  
Una volta capito come funzionano le due varianti del comando, vedrai che **rhinoscriptsyntax** fa la stessa cosa.

---

<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 Aprile 2019, 2:29pm UTC](https://it.discourse.mcneel.com/t/curvecontourpoints/2379/9 "2019-04-11T14:29:49Z")

</div>

grazie per lo script Emilio ma credo che chi ha scritto la guida abbia fatto uno scherzzetto da prete ahahahah

non so se avevi dato un’occhiata alla guida ma per impostare la lunghezza usa questa sintassi:

```auto
dblLength = Rhino.CurveLength(strObject) / 4
arrPoints = Rhino.DivideCurveLength(strObject, dblLength)

```

quindi ovviamente con le due stringhe insieme si ottiene lo stesso risultato di  
`arrPoints = Rhino.DivideCurve(strObject, 4)`

e vabbè di sicuro stare tante ore vicino al pc a programmare già cose semplici come faccio io non è facile  
figuriamoci per chi lo fa tutto il giorno ogni giorno si debbono pure divertire un pochino ogni tanto 😄  
(scusate il disturbo per la domanda frivola)

ps ma il comando CurveContourPoints è un bel pò contorto eeee

---

<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:** [12 Aprile 2019, 3:24am UTC](https://it.discourse.mcneel.com/t/curvecontourpoints/2379/10 "2019-04-12T03:24:18Z")

</div>

> [@0904](#):
>
> credo che chi ha scritto la guida abbia fatto uno scherzzetto da prete

Hehe … direi tipica documentazione RMA … 😄

> [@0904](#):
>
> ma il comando CurveContourPoints è un bel pò contorto

Dovrebbe essere analogo al comando **Contour** … credo.

---

<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 Aprile 2019, 5:44am UTC](https://it.discourse.mcneel.com/t/curvecontourpoints/2379/11 "2019-04-12T05:44:28Z")

</div>

Credo che il problema sia “quanto”, chi programma, conosca i comandi di Rhino.  
Alla fine gli script replicano quello che faresti “a mano” con i comandi classici e, quindi, ci si aspetta che la funzione richieda e restituisca gli stessi parametri del comando (entro la sfera del possibile).  
Se il programmatore ha scarsa dimestichezza con il comando rhino e parte direttamente dalla funzione script, allora si che diventa un’impresa…  
Poi esistono le eccezioni dove (e qui non ho idea quale sia il motivo) un comando viene replicato con funzioni che lavorano in maniera abbastanza diversa (e li smadonni un sacco per trovare lo stesso risultato del comando).

---

<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:** [12 Aprile 2019, 5:48pm UTC](https://it.discourse.mcneel.com/t/curvecontourpoints/2379/12 "2019-04-12T17:48:14Z")

</div>

> [@lucio\_zadra](#):
>
> Credo che il problema sia “quanto”, chi programma, conosca i comandi di Rhino.

Concordo.  
Anche perche’ i comandi sono documentati meglio.  
E’ piu’ semplice imparare da zero un comando.

> [@lucio\_zadra](#):
>
> Poi esistono le eccezioni dove (e qui non ho idea quale sia il motivo) un comando viene replicato con funzioni che lavorano in maniera abbastanza diversa

A volte i comandi sono piuttosto ‘intelligenti’, quindi piu’ semplici da usare.  
Mentre i metodi/funzioni per gli script sono piu’ ‘rozzi’ e richiedono, come dice Lucio, del lavoro aggiuntivo per ottenere quanto si ottiene dal comando.

---

<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 Aprile 2019, 8:01pm UTC](https://it.discourse.mcneel.com/t/curvecontourpoints/2379/13 "2019-04-12T20:01:52Z")

</div>

👍

---

<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:** [13 Aprile 2019, 8:52am UTC](https://it.discourse.mcneel.com/t/curvecontourpoints/2379/14 "2019-04-13T08:52:21Z")

</div>

A volte conviene scrivere una macro direttamente sul pulsante. L’esempio qui sotto disegna un tronco di cono impostando l’angolo di inclinazione. Nel comando normale non esiste questa opzione  
\_circle \_pause \_r \_pause \_sellast  
\_ExtrudeCrvTapered \_cap=\_yes \_r \_s \_y \_pause \_pause \_delete  
\_SelNone
