dovrei ritrovarmi con una linea perpendicolare tra due rette:
le rette vengono selezionate e la retta di partenza viene divisa e da un punto
della divisione inizia la linea che deve finire perpendicolarmente alla retta finale
c’è un bel comando in Rhino “Perpendicolare 2Curve” solo che
dovrebbe già sapere da quale punto partire dalla prima linea…
riflettendo sul comando sopra citato sono giunto a questa conclusione:
dopo aver selezionato le due rette ed indicato il punto sulla prima retta
dal punto si crea un cerchio (che viene generato perpendicolarmente)
all’intersezione del cerchio con la seconda retta quello è il punto finale.
chiedo un vostro parere sapete finisce che esiste già un comando
o un modo migliore è più semplice mi risparmio di complicarmi la vita
esatto emilio il punto viene impostato dalla divisione della retta
esempio: sel1crv “partenza” - dividi1crv in 3 - sel2crv "destinazione"
e dal punto 1 della divisione parte la perpendicolare per la 2crv
le rette sono parallele forse non l’ho specificato sorry
in teoria dovrebbero avere una perpendicolare
per tutta la loro lunghezza
Emilio visto che a volte anche parlarne soltanto ci accende la lampadina…
inizialmente le prove le avevo fatte con CurveClosestPoint e GetPointOnCurve
poi ho postato la domanda e dopo la il tuo esempio con LineMinDistanceTo
mi è venuto in mente di fare una prova con _ClosestPt e credo che è proprio lui
infatti chiede una destinazione “curva (tutta)” e un "punto (partenza)"
ti faccio sapere come è andata
ok perfetto Emilio li ho provati in tutti i modi:
in Rhino il comando “_ClosestPt” e anche in VBScript e Python con “CurveClosestPoint”
EDIT: sto facendo prove
mi si era spento il PC senza salvare e mi ricordavo del comando "CurveClosestPoint"
EDIT: correzione
il comando è “PointClosestObject” quindi:
in Rhino il comando “_ClosestPt” e anche in VBScript e Python con “PointClosestObject”
PS nel frattempo cercando di nuovo il comando giusto: "PointClosestObject"
ho trovato un esempio anche un’altro comando "LineBetweenCurves"
ma se non erro in Pyton non c’è nella guida . . . .
a ecco in grasshopper il componente che stavo provato era "CurveClosestPoint"
per questo dopo che ho perso i dati ero andato a cercare quel comando
fatto sta che il coponente sopra citato funziona, solo che mi servirebbe
tramite script Python e come sempre ecco li problema del messaggio:
“Runtime error (NotImplementedException): The method or operation is not implemented.”
infatti avevo pensato in GhPython di importare il componente è gestirlo in GhPython
ho visto sul web questo esempio : “from Grasshopper import DataTree"
in teoria si potrebbe usare anche per tutti i componenti e quindi per
"CurveClosestPoint” giusto? qualche esempio in merito? grazie…
ciao Emilio
il comando è “PointClosestObject” e il codice è esattamente quello della guida F1
come spiegavo nel post il comando fa già quello che mi interessa sia in VBScript che in Python
inserisco il codice dalla guida nel componente in GhPython è mi da quel messaggio di errore
esatto Emilio sto cercando fin quanto è possibile fare, gestire tutto in un solo componente GhPython
quindi attualmente faccio prima le prove e passo il codice in GhPython cosi faccio anche un pò di pratica
Come noiosamente ho gia’ avuto modo di ripetere …
Io sono stupido, se discutiamo in astratto ho dei seri problemi …
( E comunque credo sia una regola generele del forum:
quando posti un problema, lo devi mostrare chiaramente.
In caso di script, perlomeno postare il codice … POSTARE …
non raccontarlo … )
Tra l’altro in non trovo il comando PointClosestObject
ne’ come funzione rhinoscriptsyntax, ne’ come comando Rhino …
forse mi e’ sfuggito, comunque non ho ancora capito di cosa stiamo parlando …
Stando cosi’ le cose … sara’ meglio che aspetti risposte su questo
problema da qualcuno piu’ sveglio del sottoscritto.
E in effetti sarebbe meglio anche per te avere una risposta piu’ veloce … cosi’ non facciamo la solita
sequenza di una dozzina di domande e risposte prima di individuare il problema.
Mi ricordi una professoressa, forse alle medie …mah, che diceva piu’ o meno:
"Le cose le sai, ma bisogna tirartele fuori con le pinze ! "
Hehe … anche tu non scherzi come pazienza visto che non mi hai ancora mandato … a usare Autocad …
Hai ragione a dire che la funzione rhinoscriptsyntax c’e’ … io purtroppo qui non la vedo …
mi tocca usare una vecchia SR di Rhino 5 …
Suppongo che tu stia usando il 6, con una versione di rhinoscriptsyntax aggiornata
Forse il problema e’ sempre li’ … probabilmente GHPython usa una versione di rhinoscriptsyntax diversa,
che non e’ ancora stata aggiornata …
Sono solo supposizioni … ma per ora non ho altre idee …
P.S.
Dall’esempio che hai postato, mi sembra che PointClosestObject() serva a trovare l’oggetto piu’ vicino ad un punto dato.
Se non sbaglio per il tuo problema basterebbe usare LineClosestPoint()
( Invece LineMinDistanceTo(), a cui avevo accennato in precedenza … non serve … ho finalmente capito cosa fa … e cosa non fa … sorry )
Oppure hai un motivo particolare per usare PointClosestObject() ?
la versione di Rhino è la V5 mentre per Grasshopper è 0.9.0076
ritornando ai codici adesso sei tu che dovrai esere più dettagliato
essendo che sia LineMinDistanceTo() che LineClosestPoint()
io li ho provati e nessuno dei due fanno ciò che mi serve
non so se lo hai provato il codice che ti ho postato prima ma se lo fai
vedrai come funziona e la differenza con quelli che mi hai suggerito
PS comunque non ho nessuna preferenza se funziona in GhPython per me va bene
Tu hai due rette, vero ?
Ma sono rette ‘teoriche’, cioe’ hai un punto e una direzione (o due punti) ?
O hai degli oggetti Rhino, con i suoi bravi Guid ?
Perche’ LineClosestPoint() serve nel primo caso
Nel secondo invece CurveClosestPoint()
A seconda dei dati di partenza, vediamo come procedere … (almeno spero … )
Sai già come farlo manualmente? Se sei in grado di farlo manualmente il problema è già risolto . Nello script devi ripetere le operazioni che hai fatto manualmente.
Vittorio
inizialmente avevo provato con “CurveClosestPoint” ma mi dava un risultato parametrico, essendo
che l’ho usato sempre insieme ad “GetPointOnCurve” non mi era mai capitato questa cosa e non
sapevo come trasformarlo in un Array punto ma avevo subito rimediato con “PointClosestObject”
nel frattempo Emilio mi aveva anche lui consigliato “CurveClosestPoint” ma io ormai optavo per la
seconda scelta rivelatasi non idonea per GhPython. dopo le mie numerose spiegazioni per ciò che
mi serviva fare notando che Emilio insisteva sempre con “CurveClosestPoint” e quindi poco fa sono
andato ad approfondire il discorso ed è bastato abbinarlo con “EvaluateCurve” è funziona anche in GH
PS in pratica “PointClosestObject” sarebbe la combinazione di “CurveClosestPoint” e “EvaluateCurve”
grazie a Vittorio per il suo intervento e grazie ad Emilio per la pazienza e per avermi anche spronato
eeee Emilio sta volta ti ho preceduto ahahahah infatti questo prima avevo pensato:
ma se alla fine Emilio aveva capito quello che mi serviva fare e sapeva quale istruzione utilizzare
come mai non ha postato uno script come esempio? anche dopo anni bisogna tirartele con le pinze
ahahahah
PS interessante l’esempio che hai posto, in pratica la linea che ti crei è equiparabile alla direzione di un vettore
e anche se il punto non capita sulla linea viene prolungata la direzione e quindi aggiunto il punto
mi credi sto riscontrando una cosa da non sottovalutare:
si impara più sbagliando che facendo la cosa giusta
di sicuro mi potrà servire questo metodo in futuro
Thanks Big Emilio
Circa vent’anni fa in un manuale di una ditta giapponese SMC si diceva che un metodo efficacie per imparare era : PROVA SBAGLIA E IMPARA e lo ho trasmesso a miei studenti.
Vittorio
Giusto.
… Comunque la parte difficile resta la terza …
Per quanto riguarda il problema delle linee:
… Mi sembra di ricordare, dai tuoi primi post sul forum, che non amavi gli esempi gia’ pronti, ma volevi solo indicazioni sulla via da prendere … ma forse la mia povera memoria e’ peggiorata oltre quanto supponevo …
Hehe … inoltre a volte sto facendo un lavoro e mi riesce difficile imbastire uno scriptino di esempio … molto piu’ veloce sparare i nomi di due o tre metodi rs … e poi se la vede Salvio.
Credo che pochi siano in grado di imparare senza sbaglire (o sbagliando raramente).
Ma anche imparare dagli sbagli puo’ non essere semplicissimo.
Sul forum vedi a volte cose come:
“lo script non funziona, sono ore che lo guardo ma non trovo la soluzione”
… E cosa credi di ottenere guardando ?
Controlla i valori delle variabili, prima e dopo le istruzioni, cerca cosa c’e’ di diverso da quello che ti aspetti … muoviti !
Analogamente abbiamo “Il metodo non mi restituisce questo valore… come mai ?”
Magari … basta leggere la documentazione per capire che il metodo non restituisce quel valore semplicemente perche’ non e’ cosi’ che funziona … deve restituire un’altra cosa ed e’ quello che fa …
A volte il forum e’ piuttosto divertente …
( Parlo soprattutto del forum USA … qui c’e’ poco movimento … )