# Rhino Fillet e RCommon Fillet

**URL:** <https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188>\
**Category:** Scripting e Programmazione\
**Created:** [15 Maggio 2023, 4:18pm UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188 "2023-05-15T16:18:00Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [16 Maggio 2023, 2:31pm UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/21 "2023-05-16T14:31:33Z")

</div>

> [@0904](#):
>
> sto provando con due rette parallele, non dovrebbe ritornare l’errore?  
> (cioè **Rhino.Geometry.Arc.Unset** )

E’ vero, sembra che l’arco restituito non sia valido, ma non sia nemmeno Arc.Unset  
Strano.  
Allora conviene usare **IsValid**.  
Almeno, a me risulta cosi’ …

```python
import Rhino
import scriptcontext
import System

def Def():
    go = Rhino.Input.Custom.GetObject()
    go.SetCommandPrompt("Select Curve 1")
    go.Get()
    if go.CommandResult() != Rhino.Commands.Result.Success: return go.CommandResult()
    crv0 = go.Object(0).Curve()
    if not crv0: return
    print crv0
    scriptcontext.doc.Objects.UnselectAll()
    go = Rhino.Input.Custom.GetObject()
    go.SetCommandPrompt("Select Curve 2")
    go.Get()
    if go.CommandResult() != Rhino.Commands.Result.Success: return go.CommandResult()
    crv1 = go.Object(0).Curve()
    if not crv1: return
    print crv1
    rcc = Rhino.Geometry.Curve.CreateFillet(crv0, crv1, 12, 0, 0)
    print rcc
    print rcc.IsValid
    print ( rcc == Rhino.Geometry.Arc.Unset )
    gid = scriptcontext.doc.Objects.AddArc(rcc)
    print gid
    print ( gid == System.Guid.Empty )
    return

Def()

```

> [@0904](#):
>
> è quello che ho provato ieri ma nn capisco perché mi dava errore

Prova a postare lo script

---

<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:** [16 Maggio 2023, 3:11pm UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/22 "2023-05-16T15:11:21Z")

</div>

Il risultato di createfillet dipende dai punti in cui si eseguono i click sulle  
due curve.

```auto
rcc = Rhino.Geometry.Curve.CreateFillet(crv0, crv1, 12, 0, 0)

```

I due valori “0” hanno un significato preciso.

---

<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 Maggio 2023, 3:40pm UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/23 "2023-05-16T15:40:32Z")

</div>

ottima osservazione, comunque ho cambiato i valori dei parametri, ma i risultato sembra uguale

> **[Find discontinuities](https://discourse.mcneel.com/t/find-discontinuities/5576/4?u=0904)**
>
> In fact, many basic geometries (in fact all that have struct datatypes) have ‘unset’ values. To name a few: Arc.Unset Circle.Unset Point3d.Unset Vector3d.Unset BoundingBox.Unset etc. etc. They’re very useful in all kinds of algorithms to...

ho trovato soltanto questa risposta contenente la parola **Arc.Unset**  
a quanto sembra, è una prerogativa delle geometrie di base  
come spiega sono geometrie con valori non impostati  
non ho idea a cosa si riferisca e come ottenere ciò.

---

<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 Maggio 2023, 3:49pm UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/24 "2023-05-16T15:49:12Z")

</div>

> [@emilio](#):
>
> > [@0904](#):
> >
> > è quello che ho provato ieri ma nn capisco perché mi dava errore
> 
> Prova a postare lo script

```auto
    print crv1
    
    #rcc = rh.Geometry.Curve.CreateFillet(crv0, crv1, 12, 0, 0)
    #sc.doc.Objects.AddArc(rcc)
    
    rc = rh.Geometry.Intersect.Intersection.LineLine(crv0, crv1, 0.001, False)
    
    return

Def()

```

invece di utilizzare `CreateFillet` ho utilizzato `Intersection.LineLine`  
sia con il parametro True che False, e anche solo le due curve come parametri  
ma in tutti i casi mi torna errore: **Message: expected Line, got PolylineCurve**

---

<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 Maggio 2023, 4:43pm UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/25 "2023-05-16T16:43:43Z")

</div>

da questo post:

> **[RhinoCommon. Intersection between two lines](https://discourse.mcneel.com/t/rhinocommon-intersection-between-two-lines/4777/4?u=0904)**
>
> I have it already solved ptoInt = Rhino.Geometry.Intersect.Intersection.LineLine(linea\_1, linea\_2) linea\_1.PointAt(ptoInt\[1\]) thank David

dovrebbe essere questa la sintassi:

```auto
    
    ln0 = rh.Geometry.Line(rh.Geometry.Point3d(0, 0, 0), rh.Geometry.Point3d(20, 20, 0))
    
    ln1 = rh.Geometry.Line(rh.Geometry.Point3d(0, 100, 0), rh.Geometry.Point3d(20, 80, 0))
    
    rc = rh.Geometry.Intersect.Intersection.LineLine(ln0, ln1)
    
    print rc
    
    print ln0.PointAt(rc[1])
    
    return

Def()

```

e se capito bene, bisogna avere come input oggetti prettamente linea

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [16 Maggio 2023, 5:08pm UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/26 "2023-05-16T17:08:44Z")

</div>

> [@emilio](#):
>
> Ci sara’ un controllo sull’angolo formato dalle curve … non so dove.

> [@emilio](#):
>
> Ci sara’ un controllo sulle tangenti alle curve … non so dove.

Sergio ci ha detto dove. 😀 Grazie !

> [@Sergio\_Alessi](#):
>
> dipende dai punti in cui si eseguono i click sulle  
> due curve.

… Non li avevo proprio guardati i parametri. 😊 😄

> [@0904](#):
>
> dovrebbe essere questa la sintassi:

> [@0904](#):
>
> e se capito bene, bisogna avere come input oggetti prettamente linea

Certo, il tipo dei parametri e’ definito.  
Non e’ rhinoscriptsyntax questo … 😉 😄

Funziona ? 😀

---

<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 Maggio 2023, 5:34pm UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/27 "2023-05-16T17:34:19Z")

</div>

> [@emilio](#):
>
> Funziona ? 😀

in questo modo si:

```auto
    ln0 = rh.Geometry.Line(crv0.PointAtStart, crv0.PointAtEnd)
    
    ln1 = rh.Geometry.Line(crv1.PointAtStart, crv1.PointAtEnd)
    
    rc = rh.Geometry.Intersect.Intersection.LineLine(ln0, ln1)
    
    print rc
    
    print ln0.PointAt(rc[1])
    
    return

```

> [@emilio](#):
>
> Non e’ rhinoscriptsyntax questo … 😉 😄

eeee me ne sto accorgento, RCommon è pignoletto

infatti volevo convertire le polilinee in linee rette ma (per adesso) ho trovato solo il modo indicato sopra,  
mi sembrava di ricordate un **toconvert** o qualcosa di simile, ma forse serviva a tutt’altra situazione.

edit:  
e pure, un giorno riuscirò ad avere come ritorno **Arc.Unset** 😃

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [16 Maggio 2023, 9:41pm UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/28 "2023-05-16T21:41:28Z")

</div>

> [@0904](#):
>
> un giorno riuscirò ad avere come ritorno **Arc.Unset**

Hehe … se scrivi raggio 13 (ad esempio), vedi che restituisce Arc.Unset.  
Cioe’ se il raccordo e’ impossibile, lui restituisce giustamente Arc.Unset

La cosa strana e’ quello che fa con raggio 12  
Ho provato a stampare alcuni valori dell’arco

```python
    print rcc
    print rcc.IsValid
    print rcc.Plane
    print rcc.Radius
    print rcc.StartAngle
    print rcc.Angle
    print ( rcc == Rhino.Geometry.Arc.Unset )

```

e a me risulta che trova l’arco giusto.  
Solo che non lo considera valido, ma non so perche’ …

Arc.Unset come valori nel piano e come raggio ha il valore convenzionale ‘meno infinito’, almeno cosi’ mi sembra.  
Mentre per gli angoli ha zero:

```auto
Origin=-1.23432101234321E+308,-1.23432101234321E+308,-1.23432101234321E+308 XAxis=-1.23432101234321E+308,-1.23432101234321E+308,-1.23432101234321E+308, YAxis=-1.23432101234321E+308,-1.23432101234321E+308,-1.23432101234321E+308, ZAxis=-1.23432101234321E+308,-1.23432101234321E+308,-1.23432101234321E+308
-1.23432101234e+308
0.0
0.0

```

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [16 Maggio 2023, 9:50pm UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/29 "2023-05-16T21:50:49Z")

</div>

No, aspetta.  
Per qualche motivo il piano dell’arco ha i vettori Y e Z nulli.  
E’ quello che impedisce di costruire/disegnare l’arco.  
EDIT :  
Forse usa il CrossProduct delle tangenti …  
( semplice ipotesi, eh )

---

<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 Maggio 2023, 10:33pm UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/30 "2023-05-16T22:33:44Z")

</div>

mi fa piacere che sei riuscito ad approfondire la questione,  
però stavola sono io che senza esempi non riesco a seguire. . .

> [@emilio](#):
>
> Per qualche motivo il piano dell’arco ha i vettori Y e Z nulli.  
> E’ quello che impedisce di costruire/disegnare l’arco.

🤔

> [@emilio](#):
>
> Forse usa il CrossProduct delle tangenti …  
> ( semplice ipotesi, eh )

🤔 🤔

ci penserò sopra.

edit:

> [@emilio](#):
>
> Hehe … se scrivi raggio 13 (ad esempio), vedi che restituisce Arc.Unset.  
> Cioe’ se il raccordo e’ impossibile, lui restituisce giustamente Arc.Unset

ma parli utlizzando le due linee rette parallele? perché a me torna sempre **Rhino.Geometry.Arc**  
ho cambiato vari valori ma non sono mai riuscito ad ottenere **Arc.Unset**

ps forse ho capito quello che intendi è tornare _**True da print ( rcc == Rhino.Geometry.Arc.Unset )**_  
in questo caso **si** , ma adesso mi spiazzi, perché come mi tornava **Rhino.Geometry.Arc**  
sul print di **rcc** io mi aspettavo **Rhino.Geometry.Arc.Unset** sempre sul print di **rcc**  
e vabbè che dire se la verifica è sul True/False allora hai trovato la sintassi corretta 👍

> [@emilio](#):
>
> Arc.Unset come valori nel piano e come raggio ha il valore convenzionale ‘meno infinito’, almeno cosi’ mi sembra.

mi sembra di capire, che i 3 assi del piano cambia da dove si clicca sulle due linee rette

> Returns:  
> The fillet arc on success, or Arc.Unset on failure.

comunque sia con **Arc.Unset** mi aspetterei che il comando fallisca come appunto viene indicato  
e quindi in questo caso richiamare **except del try** mentre invece ciò non accade.

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [16 Maggio 2023, 11:24pm UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/31 "2023-05-16T23:24:43Z")

</div>

> [@0904](#):
>
> io mi aspettavo **Rhino.Geometry.Arc.Unset**

Non pretendere troppo da print.  
Lui si limita a stampare la classe dell’oggetto, non va a esaminare se per caso e’ un valore particolare. Ci vorrebbe una funzione apposita per una cosa del genere.  
Arc.Unset e’ un oggetto della classe Rhino.Geometry.Arc e lui quello ti dice.

Lo avevamo detto anche prima, ma non ci hai fatto caso. 🙂

> [@0904](#):
>
> con **Arc.Unset** mi aspetterei che il comando fallisca come appunto viene indicato  
> e quindi in questo caso richiamare **except del try** mentre invece ciò non accade.

Quello che viene indicato e’ che quando l’operazione geometrica fallisce, il metodo restituisce Arc.Unset.  
Non dice nient’altro.  
Perche’ dovrebbe anche attivare una eccezione ?  
A cosa servirebbe ? 🙂  
C’e’ gia’ il valore resituito che ci dice se funziona o se fallisce.

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [16 Maggio 2023, 11:29pm UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/32 "2023-05-16T23:29:28Z")

</div>

> [@0904](#):
>
> > [@emilio](#):
> >
> > Per qualche motivo il piano dell’arco ha i vettori Y e Z nulli.  
> > E’ quello che impedisce di costruire/disegnare l’arco.
> 
> 🤔

Se stampi il piano (con raggio 12), ottieni una cosa del genere:

```auto
Origin=-50,38,0 XAxis=0,1,0, YAxis=0,0,0, ZAxis=0,0,0

```

Ovviamente l’origine dipende da dove sono disegnate le due linee, ma l’origine e’ al posto giusto.

---

<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 Maggio 2023, 11:33pm UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/33 "2023-05-16T23:33:45Z")

</div>

> [@emilio](#):
>
> Se stampi il piano (con raggio 12), ottieni una cosa del genere:

Emiliooooo. . .

```auto
    rcc = rh.Geometry.Curve.CreateFillet(crv0, crv1, 10, 0.2, 1)
    sc.doc.Objects.AddArc(rcc)

```

con questi parametri mi ha creato l’arco da due rette parallele ahahahah

assurdo 🤯 🤯

![](https://img.youtube.com/vi/qI2LhQryKG4/maxresdefault.jpg)https://www.youtube.com/embed/qI2LhQryKG4?feature=oembed&wmode=opaque

> [@emilio](#):
>
> Se stampi il piano (con raggio 12), ottieni una cosa del genere:
> 
> ```auto
> Origin=-50,38,0 XAxis=0,1,0, YAxis=0,0,0, ZAxis=0,0,0
> 
> ```

a me questo risultato lo da con raggio **10** mah. . .

---

<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:** [17 Maggio 2023, 7:24am UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/34 "2023-05-17T07:24:03Z")

</div>

> [@0904](#):
>
> ottima osservazione, comunque ho cambiato i valori dei parametri, ma i risultato sembra uguale

I parametri, come li chiami tu, sono le coordinate parametriche “corrispondenti” ai punti delle  
rispettive curve dove sono state “virtualmente” selezionate. Questo consente al programma di  
restituire tra tutti i raccordi possibili il raccordo più prossimo alla tua “selezione”.

> [@0904](#):
>
> ho trovato soltanto questa risposta contenente la parola **Arc.Unset**  
> a quanto sembra, è una prerogativa delle geometrie di base  
> come spiega sono geometrie con valori non impostati  
> non ho idea a cosa si riferisca e come ottenere ciò.

E’ una convenzione interna: se la variabile riporta quel preciso valore si considera  
non inizializzata. Il metodo Unset restituisce un arco non inizializzato.

Utilizza il metodo IsValid per verificare se CreateFillet è andato a buon fine.

```auto
if not rcc.IsValid: return

```

> [@0904](#):
>
> invece di utilizzare `CreateFillet` ho utilizzato `Intersection.LineLine`  
> sia con il parametro True che False, e anche solo le due curve come parametri  
> ma in tutti i casi mi torna errore: **Message: expected Line, got PolylineCurve**

Il metodo restituisce errore perché richiede Line e non PolyLineCurve.

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [17 Maggio 2023, 10:44am UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/35 "2023-05-17T10:44:36Z")

</div>

> [@0904](#):
>
> a me questo risultato lo da con raggio **10** mah. . .

Avevo visto che nel tuo script il raggio era 12 …

> [@0904](#):
>
> ` rcc = rh.Geometry.Curve.CreateFillet(crv0, crv1, 12, 0, 0)`

… quindi ho usato due linee a distanza 24.  
Se usi linee distanti 20, il raggio sara’ 10.

> [@0904](#):
>
> con questi parametri mi ha creato l’arco da due rette parallele

👍

---

<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:** [17 Maggio 2023, 11:00am UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/36 "2023-05-17T11:00:59Z")

</div>

> [@Sergio\_Alessi](#):
>
> I parametri, come li chiami tu, sono le coordinate parametriche

esatto, ma col termine parametro mi riferivo a ciò che richiedono i metodi  
che poi in questo caso specifico come dici sono le coordinare parametriche.

> [@Sergio\_Alessi](#):
>
> Il metodo restituisce errore perché richiede Line e non PolyLineCurve.

infatti usavo il pulsante polyline però credevo che cliccando solo due punti mi tornava una line  
e invece se uso il comando polyline, anche con un solo segmento mi specifica che si tratta di polyline  
(mea culpa)  
però adesso ho provato col comando line, e comunque il metodo non va a buon fine  
\<Rhino.Geometry.LineCurve object at 0x000000000000003E [Rhino.Geometry.LineCurve]\>  
anche se come appena indicato sopra riporta proprio **Rhino.Geometry.LineCurve**  
preciso che questa differenza la fa Python/RCommon perché in Rhino  
anche se uso il comando polyline creando un solo segmento  
nei dettagli delle proprietà la vede in entrambi i casi come line

in pratica RCommon differenzia tra **Geometry.LineCurve** e **Geometry.Line**  
mmmm coi comandi Rhino bisognerebbe ottenere una **Geometry.Line** e non **Geometry.LineCurve**

---

<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:** [17 Maggio 2023, 11:01am UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/37 "2023-05-17T11:01:56Z")

</div>

> [@emilio](#):
>
> > [@0904](#):
> >
> > con questi parametri mi ha creato l’arco da due rette parallele
> 
> 👍

eeee Emilio ma non credo sia una cosa buona per quanto si è detto fin’ora, da quello che ho capito. . .

---

<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:** [17 Maggio 2023, 11:13am UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/38 "2023-05-17T11:13:18Z")

</div>

😕 😕

a quanto pare creando una linea, un segmento o qualsiasi altra retta in Rhino  
in Python/RCommon comunque mi ritorna una **LineCurve**  
in pratica per RCommon una **Geometry.Line**  
viene dato soltando indicado i due punti

(per lo meno con le prove da me fatte)

---

<div class="post-metadata">

**Author:** ![emilio](https://sea3.discourse-cdn.com/mcneel/user_avatar/it.discourse.mcneel.com/emilio/32/23060_2.png) [@emilio](https://it.discourse.mcneel.com/u/emilio)\
**Post date:** [17 Maggio 2023, 12:03pm UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/39 "2023-05-17T12:03:37Z")

</div>

> [@0904](#):
>
> in pratica RCommon differenzia tra **Geometry.LineCurve** e **Geometry.Line**

Sono due classi diverse, anzi in C# Line non e’ nemmeno una classe ma una Struct.

> [@0904](#):
>
> coi comandi Rhino bisognerebbe ottenere una **Geometry.Line** e non **Geometry.LineCurve**

Cosi’ poi devi avere due serie di comandi separati, una per le linee e una per le curve.  
No, no … Meglio cosi’. 😄

Semplicememnte, se vuoi una Line, te la costruisci in RhinoCommon.  
Se vuoi la ricavi da una linea (LineCurve) disegnata con i comandi Rhino.  
Puoi usare le proprieta’ PointAtStart e PointAtEnd derivate da Curve.

> [@0904](#):
>
> eeee Emilio ma non credo sia una cosa buona per quanto si è detto fin’ora, da quello che ho capito. . .

Purtroppo non condivido la tua passione per indagare i casi limite. 😊

C’e’ il metodo CreateFillet, c’e’ la proprieta’ IsValid per controllare il risultato.  
A me basta. 🙂

---

<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:** [17 Maggio 2023, 1:48pm UTC](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188/40 "2023-05-17T13:48:11Z")

</div>

> [@emilio](#):
>
> Cosi’ poi devi avere due serie di comandi separati, una per le linee e una per le curve.  
> No, no … Meglio cosi’. 😄

io fino a poche ore fa, non sapevo nemmeno che si facesse questa differenza  
io credevo che una linea o segmento fosse una semplice linea e non una lineacurva

> [@emilio](#):
>
> > [@0904](#):
> >
> > eeee Emilio ma non credo sia una cosa buona per quanto si è detto fin’ora, da quello che ho capito. . .
> 
> Purtroppo non condivido la tua passione per indagare i casi limite. 😊
> 
> C’e’ il metodo CreateFillet, c’e’ la proprieta’ IsValid per controllare il risultato.  
> A me basta. 🙂

Emilio, in verità non sono io che li cerco, ma sono loro che mi trovano sempre ahahahah  
io ne farei proprio a meno, anzi mi piacerebbe tanto che non ci fossero tutti questi dettagli.

giusto per completezza a proposito del metodo CreateFillet, che come dici ha la proprietà IsValid,  
ieri ho detto che con quelle impostazioni di parametri crea una curva su due linee rette parallele,  
questo è vero (adesso ho riprovato) però solo se le due rette hanno una certa lunghezza  
altrimenti l’arco non viene creato, e IsValid riporta True anche con due rette parallele.  
(io rimango del parare che con due rette parallele il raccordo non dovrebbe avvenire)

ps Emilio, per caso hai anche provato ad eseguire il **print ( rcc == rh.Geometry.Arc )**?  
a me qui mi ritorna **False** in entrambi i casi, insieme al **print ( rcc == rh.Geometry.Arc.Unset )**

[Pagina precedente](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188.md?page=1)

[Pagina seguente](https://it.discourse.mcneel.com/t/rhino-fillet-e-rcommon-fillet/5188.md?page=3)
