nella foto “b” invece è il risultato che mi servirebbe ottenere
tramite “calcolo” che si possa replicare in GhPython
oppure tramite un “componente” Gh che lo possa fare…
in pratica mi servirebbe che dalle prime due “TAN” alla base tramite un calcolo trovare il punto “o”
e da quel punto riuscire a calcolare l’angolo preciso per creare la seconda retta con le seconde “TAN”
lo so che è una cosa più scolastica ho cercato in rete ma ho trovato solo “tangeti esterne due cerchi”
ma non credo che sia idoneo in questo caso. come punto a favore c’è che in questa situazione
abbiamo già indicate le due TAN della prima retta. (non saprei se questo possa bastare . . . .)
preciso che fino adesso usavo il comando “linea tang 2 curve” con un po di fatica riuscivo a trovare le tangenze della seconda linea ma adesso come in questo caso avrei la necessità di farlo come descritto.
un grazie anticipatamente e non “ditemene” tante mi raccomando
Sapendo che il disegno è simmetrico… avendo l’arco di destra dei punti snappabili facilmente identificabili (Centro e punto Mediano) puoi utilizzarli per identificare l’asse di specchiaggio.
Vedi immagine allegata.
ciao Lucio eeee non so come sia capitato ma in effetti se è simmetrico mi sembra strano perchè non
dovrebbe esserlo anche se “a volte” differisce di poco. per questo mi serve quel’equazione.
ovviamente non voglio lo script o cose simili (magari) ma anche indicazioni cosa cercare e su cosa lavorare
sto provando anche il gh che ha postato Nicola1 farò sapere
Mmmmh… e facendo una retta con l’osnap tangent from e poi cliccando il punto della fine del.secondo arco?
O le forme sono molto diverse da quella che hai postato?
Credo che, prima di fare script o altro, bisognerebbe almeno delimitare la casistica o trovare una procedura funzionante da replicare in gh… altrimenti é come giocare a freccette bendati…
il fatto e che con rhino vorrei non fare operazioni essendo che quella linea alla base che indica i primi due TAN è il risultato del codice di Thomas che avevi postato giorni fa è mi trovo bene perchè mi risolve dei problemi:
uno e che funziona anche su superfici e mi evita di estrarre la curva di contorno “evitando 1000 punti”
due fin’ora usavo “linea TAN 2 curve” ma spesso dovevo ricostruire la curva perchè il comando funzionasse
es. tempo fa avevo “due” lunghezze di un triangolo e dovevo calcolare la terza cercando c’è l’ho fatta.
qui invece mi ritrovo con un “oggetto” la direzione della base con 2 TAN e dovrei trovare altre 2 TAN
e il punto “o”. se con calcoli “un po sopra la norma” bastino oppure bisogna lavorare con i SEN e COS?
EDIT: comunque non tutte le forme hanno archi per questo cercavo una formula matematica/geometrica
PS per Nicola1: mi dici come tornare alle impostazioni di prima
scusami Vittorio ma io ho provato il tuo script sia in RPython che GhPython
ma mi torna un errore alla riga 2 dove c’è: “import utility as rhutil”
(Runtime error (ImportException): No module named utility)
come si risolve?
EDIT
ho provato ad installarlo adesso il messaggio è questo:
(Message: No module named utility)
Hehe … hai ragione. Ho buttato giu’ il messaggio un po’ in fretta.
Dire che fa lo stesso.
Basta che tu usi sempre lo stesso punto, in modo che la retta ‘superiore’ torni poi al posto giusto.
Oppure se vogliamo, non spostiamo niente, ma lavoriamo con delle boundingbox incilnate.
Ho visto che rs.BoundingBox() permette di usare un piano a scelta e di ottenere la box allineata al piano ruotato, volendo.
In questo caso,nel loop variamo l’inclinazione del piano di riferimento, e chiediamo di ottenere le box in coordinate del piano ruotato.
Quando le boundingbox dei due ‘pezzi’ di curva hanno la stessa Y massima, abbaimo trovato il nostro angolo.
Sono due modi per ottenere lo stesso risultato:
l’idea e’ semplicemente questa:
in un riferimento parallelo alla retta cercata, le due curve hanno la stessa Y massima.
Poi il modo in cui troviamo l’angolo e disegniamo la retta puo’ variare …
Ah … forse te ne sei gia’ accorto … Vittorio ha postato il testo di rs.LIneLIneIntersection()
Penso volesse ricordarti che, per l’intersezione delle rette, puoi usare quella funzione nel tuo script.
questa cosa me ne ero accorto pure io infatti il problema iniziale era come trovare il piano giusto per entrambi i lati e questo come ho già spiegato usavo “linea TAN 2 curve" e da li mettevo in piano prima un lato e lanciavo il comando BoundingBox poi facevo la stessa cosa per l’altro lato tutto questo in rhino.
adesso con il codice di Thomas avevo il vantaggio che comunque vada un piano e 2 TAN lo trovavo sicuro
ma non sapevo come poi trovare il piano “perfetto” per l’altro lato.
mentre tu invece dici di far ruotare il BoundingBox in Python ed a ogni rotazione lui ricostruisce il box
in effetti pensandoci dimmi se ho capito bene essendo potrebbe salvarmi dal tradurre il codice di Thomas
se uso questo metodo della rotazione rs.BoundingBox() in Python con qualsiasi forma simile o facsimile
a quella da me postata dovrei ottenere un TAN per 3 lati e 2 TAN per il lato che mi serve e la stessa cosa ruotando di circa 180° anche dall’altro lato e potrei anche filtrare i TAN che hanno la stessa coordinata Y
spero di aver capito bene quello che dici e chiedo conferma di ciò che ho spiegato
perchè in prati comunque giri il box gli unici due versi che possono avere la stessa Y è quando sono
Tangenti è tutto questo lo posso fare anche senza aver trovato i primi due TAN con l’asse di base giusto?
adesso mi metto a lavoro e di sicuro farò sapere presto come vanno i lavori nel frattempo se ci sono errori nel mio ragionamento correggimi prima possibile se no mi troverò la testa rotta a furia di sbatterla contro il muro
ahahahah
PS l’ho provata la funzione di Vittorio ma infatti gli ho risposto mi da un errore di modulo “utility”
ho continuato a cercare in rete ne ho scaricati due dal sito ma non mi funziona comunque non so come fare.
… Non mi sono spiegato.
Vittorio ha semplicemente postato il codice di rhinoscriptsyntax.LineLineIntersection().
Se la vuoi usare basta che scrivi nel tuo script, ad esempio …
import rhinoscripsyntax as rs
# . . .
punti = rs.LineLineIntersection( retta_1, retta_2 )
# . . .
… come hai sempre fatto.
Non c’e’ niente di nuovo. e’ solo una delle tante funzioni rhinoscriptsyntax che possiamo usare ogni volta che vogliamo …
E in effetti a me quello di Vittorio sembra un ottimo suggerimento: dato che a LineLineIntersection() puoi passare due punti per rappresentare la linea, se tu trovi le buondingbox di cui si diceva prima, puoi usare direttamente i vertici della boundingbox per calcolare il punto di intersezione delle rette.
Passiamo da queste parti (virtuali) non solo per chiedere consigil, ma anche per divertimento …
… Ed e’ proprio quello che facciamo.
Almeno per questioni riguardanti script & GH (ma direi spesso anche per i normail comandi Rhino) di solito chi ci si cimenta si diverte anche.
… Prova a obbilgare qualcuno non interessato a scrivere uno script o una definizione … se scappi in fretta e’ meglio.
Ad esempio, ti linko un messaggio che ho letto oggi sul forum USA … e ci ho fatto una sonora risata …
Tra l’altro, l’impressione e’ che in quella discussione si siano divertiti un sacco tutti quanti.
Parlando in generale, credo che Grasshopper sia fondamentale nell’aumentare il ivello di divertimento in ambiente Rhino … ( e quindi il successo di Rhino, almeno in ambienti dove al piacere di fare le cose si da’ ancora il giusto peso )
Poi per capirsi bisogna essere in due …
Se tu a volte dai poche informazioni …
io, sempre, sono piuttosto ‘di coccio’ … … e troppo abituato a fare le cose a modo mio, per cui fatico
a capire il problema se e’ stato impostato in un modo un po’ diverso da come lo vedrei io …
Non importa, se non ci capiamo al primo o al secondo messaggio … ci sono sempre il terzo, il quarto, ecc.
Spesso per fortuna, a un certo punto arriva Lucio a … metter ordine nel casino che abbiamo combinato …
Ciao !
EDIT:
Se parli di elementi di array / liste: si chiamano sempre ‘indici’ ( come in tutti i linguaggi in cui ho ficcato il naso )
EDIT_2:
Hai provato la definizione di Nicola ? ( E’ l’unico che ha postato uno strumento gia’ pronto )
si ho letto delle liste e ho letto anche delle stringhe non so se c’è anche in VbScript questa differenza
però mi credi da quando sto usando GhPython è un casino, quando ho dei dubbi su come funziona un comando vado a vedere cosa ho reaizzato in VbScript per portarlo in Python e poi lo trasporto in GhPython
quindi un pochino ti sto capendo quando chiedevo le cose su VbScript e tu da Python dovevi convertirle
PS non sei solo, anche io tendo a vedere e fare le cose dal mio punto di vista ed è vero che poi è faticoso comprendere un’altra prospettiva alla quale non si è abituati a ragionare e questo mio thread è un esempio grazie al tuo ragionamento su come risolverlo. l’importante è non essere chiusi mentalmente giusto
CIT: per questo sono sempre più convinto che il dialogo è confrontarsi con gli altri sia la cosa migliore.
comunque sto lavorando su come impostare la rotazione del piano e mi è venuto un dubbio:
ma se ruoto di 1° per volta ci possono essere dei decimali centesimali ecc che possono dare un risultato diverso, nel caso come impostare la rotazione? è un dubbio giustificato o non implica nulla?