Differenze tra linee

che differenza tra una “polilinea chiusa” e una “policurva chiusa” e “Curva NURBS chiusa”?

POlilinea: insieme di curve deg1 connesse.
Policurva: insime generico di curve connesse. Se gradi diversi la curva composta prende il grado della più alta delle componenti.
Curva NURBS chiusa… una curva unica chiusa.

ciao Giuseppe :+1:

è possibile tramite script sapere se una geometria chiusa è una curva Nurbs ?

import rhinoscriptsyntax as rs
      obj = rs.GetObject("Select a polycurve")
      if rs.IsPolyCurve(obj):
          print "The object is a polycurve."
      else:
          print "The object is not a polycurve."

Copiato e incollato dall’help… ci aggiungi IsCurveClosed…

Dim crv: crv = Rhino.GetObject
If Rhino.IsPolyCurve(crv) Then
	If Rhino.IsCurveClosed(crv) Then Rhino.Print "Curva NURBS Chiusa"
End If

l’esempio è con RScript non cambia ma purtroppo non va il codice
ho provato anche solo con Rhino.IsPolyCurve ma forse non è il parametro per “Curva NURBS”

Come diciamo dalle mie parti…
Io nun te so che dì… qui funziona

Ciao Salvio

Questo ti trova una policurva chiusa.
Se vuoi escludere le policurve, io scriverei

If Not Rhino.IsPolyCurve(crv) Then 
    If Rhino.IsCurveClosed(crv) Then Rhino.Print "Curva NURBS Chiusa"

… Oppure non ho capito cosa vuoi fare … come sempre :smile:

ciao Emilio,

If Rhino.IsPolyCurve(crv) Then
	Rhino.Print "Curva NURBS"
End If

ho anche provato solo come esempio sopra ma non torna il print

Giuseppe, dalla foto postata lo script rimanda la conferma di una Polycurve
mentre io avevo bisogno che lo script verificasse una “Curva Nurbs”
è possibile?

Salvio dimmi che scherzi… :rofl: se non è una curva composita… è una curva singola…una curva nurbs singola

curva  
  ID: 7b347c2a-969d-4c66-9aad-07b94196d95a (3222)
  Nome del livello: Predefinito
  Materiale di rendering: 
    sorgente = da livello
    indice = -1
  Geometria:
    Curva valida.
    Curva NURBS chiusa
      inizio = (-100,-300,0)
      fine = (-100,-300,0)
      grado = 3
      punti di controllo: non-razionali, numero=23(1 duplicato)
      nodi: non-uniformi, dominio = da 0 a 260
      fissato all'inizio ed alla fine
      La curva non è smussata. Se la si esplode, si otterranno due o più curve.

La ultima riga ti dice tutto: è una policurva.

bisogna esploderla prima e poi unificarla di nuovo quindi
e una curva chiusa uscita dopo aver usato il comando “piega”
fa questo giochetto dice che è una curva nurbs ma se esplosa diventa una poly

ps non so se esiste già ma sarebbe utile che ci fosse nella guida una lista di tutti i comandi con il quale dopo aver usato i comandi elencati, fosse descritto anche come poterli lavorare al meglio (mia opinione)

ps grazie comunque come sempre :+1:

Salvio spiegami esattamente che devi fare. Ripartiamo dall’inizio. Non mi dire cosa ti serve ma solo quello che devi fare.

o varie curve che dopo averle selezionate uso il comando booleana curve

dopo la booleana ho provato con il comando piega per deformarla
e mi sono ritrovato con una “curva nurbs” come postato in precedenza

ora essendo che dovevo verificare di quando si era modificato un segmento
sia dell’originaria “booleana” che della derivata “copia di piega” mi sono scritto uno script

per semplificare dopo vari tentativi che non mi soddisfacevano stavo provando inserendo “EstraiSubCrv”
solo che “EstraiSubCrv” non accetta la copia del comando “piega” mentre l’originale della booleana si

usando il comando “converti in archi” sulla copia di piega ho costatato che mi ritrovavo con una policurva chiusa cosi come la curva dopo la booleana e quindi l’intenzione era di modificare lo script in modo che:
quando selezionavo la curva e nella verifica risultasse una “curva nurbs” lo script mi convertiva in archi e quindi passare direttamente al comando “EstraiSubCrv” per poter fare il confronto con la booleana.

Scusa Salvio, hai provato a eseguirci SimplifyCurve, per vedere se dopo ti estrae la subcurve ?
E’ solo un tentativo …

… Anche se non capisco come intendi usare poi la subcurve per fare il confronto con l’altra curva … :confused:

appena provato Emilio ma nessuna curva semplificata
comunque il problema rimaneva lo stesso essendo che o “SimplifyCurve” o “converti in archi” doveva partire in automatico dopo la verifica se avessi selezionata una “curva nurbs” essendo che in questo caso mi serve

mi serve la lunghezza di un lato di questa curva chiusa, quindi ho provato prima usando Rhino.CurveLength con il subdomain funziona bene anche se avevo dovuto risolvere il problema di inserire prima il dominio minore è poi quello maggiore ma avevo risolto subito.
fino a quando mi ritrovo con una curva chiusa e capita una cosa strana, che anche se seleziono punti ravvicinati mi ritorna la lunghezza no del dominio selezionato ma del dominio “restante”

quindi rimboccandomi le mani avevo pensato di creare una subcurva misurarla e poi cancellarla
anche qui andava quasi bene solo che a volte capita delle intersezioni ravvicinate che fanno prendere una misura non precisa e quindi avevo pensato di aggiungere a questo script la possibilità di misurare la lunghezza dell’intero segmento tramite ausilio di “EstraiSubCrv” estraendo i segmenti per compararli

Hmmm … bel problema (se parliamo di uno script).
Ti serve un modo per individuare questo ‘lato’ … e non ho idea quanto sia complicato in questo caso …

Suppongo che il seam della curva sia esterno al dominio da misurare …

(Scusa, non ho Rhino qui e non posso far delle prove)

appunto stavo usando “EstraiSubCrv” ma come già detto dopo aver usato il comando piega non funziona

per questo domandavo se non c’era già una lista di comandi dove dopo il loro funzionamento spiegava come riportare le curve ad uno stato normale per poterle continuare a lavorarci tranquillamente . . . .

figurati non è una questione impellente anzi grazie a te e Giueseppe disponibili anche di sabato sera :+1: