ottima osservazione, comunque ho cambiato i valori dei parametri, ma i risultato sembra uguale
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ò.
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
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
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 )
mi fa piacere che sei riuscito ad approfondire la questione,
però stavola sono io che senza esempi non riesco a seguire. . .
ci penserò sopra.
edit:
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
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.
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.
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.
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”.
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.
if not rcc.IsValid: return
Il metodo restituisce errore perché richiede Line e non PolyLineCurve.
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.
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
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
Sono due classi diverse, anzi in C# Line non e’ nemmeno una classe ma una Struct.
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.
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.
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, 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 )