CurveContourPoints

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?

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.

ciao Emilio grazie x la risposta

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

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.

Ciao Salvio

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

divide

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?

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…

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.

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

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.

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:

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 :smile:
(scusate il disturbo per la domanda frivola)

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

Hehe … direi tipica documentazione RMA … :smile:

Dovrebbe essere analogo al comando Contour … credo.

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).

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

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.

:+1:

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

1 Mi Piace