Componenti python che si comportano stranamente

Ciao a tutti, non so se capita solo a me ma ultimamente i componenti in python all’interno di GH non si comportano come al solito.
Per esempio se alcuni riportano all’interno a=rs.AddPoint(x) mi aggiungono i punti sul documento, mentre una volta non lo facevano, si limitavano a comunicare con il componente GH successivo.
Ancora rs.IsBrep(x) mi da sempre False perchè non riesce a riconoscere l’id, devo cambiare il tipo della variabile in ingresso come in immagine.


Le “stranezze” comunque non finiscono qui.
Qualcuno riscontra cose simili?
Versione Rhino Version 6 SR12 (6.12.19008.18501, 01/08/2019)

Comunque tante volte si chiude rhino e si riapre e tutto funziona come al solito…almeno per un po’.

Faccio una domanda, non avendo ottenuto risposta provo a sparare a caso: che sia perchè ho ancora nella cartella Components Folder il vecchio plug-in di Python per grasshopper?

Mi rispondo da solo, visto che averlo eliminato dalla cartella non ha cambiato granchè.
Sono un po’ disperato…

manda un esempio Federico. Non ho avuto tempo di fare prove e temo di non averlo per un paio di settimane ancora…

Ciao Giuseppe, la cosa è andata risolvendosi con l’ultima candidate. L’unica cosa che ancora riscontro è che i componenti python non si aggiornano in automatico come qualche SR scorsa appena si modifica qualcosa nel modello o in GH. Ma basta dare un F5 in GH e tutto funziona.

Come non detto, ci sono ancora cose strane… Ho provato a riprodurre l’errore in un file pulito di GH con solo quello che mi interessa, ma l’errore non si presenta. Non so se a questo punto l’errore dipenda dalla complessità del file GH, che comunque funziona se ricalcolo con F5. Comunque la parte che mi da dei problemi per adesso è questa:


E’ una cavolata. Se metto nel componente Geo una Brep mi dovrebbe stampare True e se aggiungo una riga (if rs.isBrep(x)==True: a=x) in uscita, in a, dovrei trovarmi la Brep giusto? In realtà nella mia definizione GH non succede, mi stampa False e con la riga aggiunta in uscita a mi da Null e solo dopo un ricalcolo (F5) allora il componente python si sblocca e fa il suo dovere.

Ciao Federico

Puoi postare una definizione da testare ? :slight_smile:

( Io qui ho ancora la 6.11, tu stai usando la 6.12 ? )

Ciao Emilio, ho provato a rimpicciolire la definizione di GH e sembra che il problema non si ripete, neanche lavorando sullo stesso file di rhino. :thinking:
Condividerei anche, solo che dovrei condividere un file di rhino, la definizione di GH e dovrei anche spiegare come usarla, perchè dipende anche dalla camera di rhino ecc… E’ un po lungo ma nel caso lo faccio quando sono preso un po’ meglio.

Si’, scusa, lo avevi spiegato sopra che estrapolare non serve … sono io che ho fatto confusione. :confused:

Hmmm, se togli la condizione e scrivi solo a=x , ti da’ sempre Null ?

O magari verificare con un Panel il valore dell’input ‘x’ ?

Scusa, eh. Sto cercando di capire se si blocca nel componente Python o prima ancora …
Forse sono tutte prove che hai gia’ fatto anche tu …

E’ proprio il componente python che mi da problemi. Mi da problemi anche con rs.AddLine(x,y) dove su x e y sono collegati due componenti di GH che forniscono come uscita due punti. Lì mi segna che non riesce a convertire l’id in punti. Comunque ecco un altro screen,

in entrata ho assegnato 2 brep.
Secondo me fa confusione con l’id, non lii riconosce come geometrie…non so spiegarlo meglio.

Ecco un altro esempio, ho provato a internalizzare gli ingressi e isolare il problema.
Ecco il file GH esempio.gh (12,6 KB)
Quando l’ho creato e usato all’interno della definizione GH questo era quello che vedevo:


Ma quando l’ho riaperto in un nuovo documento rhino come fareste voi tutto funziona

Dipende. Se sono due Point3d OK, se invece sono due oggetti punto, credo che tu debba ricavare il Point3d, per esempio con rs.PointCoordinates().

In questi casi, lo hint dell’input corrisponde ?

Ah, ho visto che hai postato la definizione, cerco di provarla, grazie.

Ah, la mia versione rhino è questa Version 6 SR13 (6.13.19035.17431, 02/04/2019).
Anche se il problema si trascina da qualche SR.
Purtroppo per vedere se risolvono qualche problema scarico sempre la candidate…ma non sempre va bene.:sob:

Penso che Emilio abbia proprio ragione: bravo. Nel messaggio di errore c’è scritto la causa: non può convertire l’id dell’oggetto in un point3d.

Ciao

Vedo che in input ci sono dei punti 3d
mentre i Type hint sono su ghdoc Object
Io proverei a settarli su Point3d

Eh, il problema è che è da rhino5 che quel coso funzionava e faceva sempre il suo sporco lavoro.

Già provato, facendo così nella SR scorsa mi ritrovavo le linee nel documento di rhino (e anche in questa). Cosa che non volevo proprio e non dovrebbe fare. E’ comunque una soluzione tampone che ho adottato pur di andare avanti.

Haha …:smile:

Capita a volte che ci abituiamo a sfruttare delle capacita’ del programma … non previste/non volute.
E quando il programma torna a fuzionare come deve … ci pianta il nostro bello script. :slight_smile:

Poi forse non e’ questo il caso, pero’ sono cose che capitano regolarmente … :slight_smile:

Per il fatto dell’output su Rhino … mah.
Credo sia un problema di ghdoc … se non ricordo male.
Dovrebbe essere settato in un certo modo … che ora non ricordo.

@Sergio_Alessi ti ricordi come funziona ?

( Io, per quel poco che scrivo nei componenti Python, cerco sempre di evitare rhinoscriptsyntax … appunto per non impelagarmi in queste cose … :smile: )

Però devi ammettere che qualche cosa non va. Quantomeno non dovrei trovarmi cose di uno script ghpython sul documento rhino a meno che non gli scriva:
import Rhino
import scriptcontext
scriptcontext.doc=Rhino.RhinoDoc.ActiveDoc
Giusto?