Componenti python che si comportano stranamente


#1

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)


#2

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


#3

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?


#4

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


#5

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


#6

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.


#7

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.


#8

Ciao Federico

Puoi postare una definizione da testare ? :slight_smile:

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


#9

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.


#10

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 …


#11

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.


#12

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


#13

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.


#14

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:


#15

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


#16

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


#17

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


#18

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.


#19

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: )


#20

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?