Salve
Ho riscontrato problemi nell’utilizzo delle librerie di RhinoCommon per l’apertura dei file .3dm al di fuori dell’ambiente di Rhino 5.
Il problema riguarda la lettura delle “Notes” (http://docs.mcneel.com/rhino/5/help/en-us/commands/notes.htm) dei file 3dm
Per ottenere una versione delle librerie compilate utilizzabili fuori dall’ambiente Rhino 5 ho seguito le direttive di questa guida
nella sua versione per windows
abbiamo effettuato banali test di lettura su file noti riscontrando però un comportamento diverso:
Vogliamo raggiungere il solito risultato ottenuto tramite l’utilizzo delle librerie all’interno dell’ambiente Rhino 5 attraverso uno script python. Come mostra l’esempio :
L’ambiente su cui abbiamo eseguito le Rhino3dmIO è una macchina windows 10 con architettura a 64 bit (la stessa macchina su cui le abbiamo compilate utilizzando VisualStudio 2017)
Importando le librerie da noi compilate e usando la solita procedura, su una nuova installazione di IronPython 2.7.7, per estrapolare le note dal file otteniamo però un risultato diverso:
Viene infatti mostrata soltanto l’ultima riga delle note.
Per quanto riguarda l’uso della libreria di Rhino su sistemi linux (nello specifico Ubuntu 16/04 LTS), abbiamo testato due strade diverse.
La prima riguarda l’interprete nativo di python.
La seconda l’uso di IronPython.
Per quanto riguarda la prima strada, per prima cosa abbiamo creato lo Shared Object librhino3dmio_native.so per la libreria Rhino3dmIO.dll usando il repo https://github.com/arendvw/rhinocommon/tree/rhino3dmio-linux
(come da pull request non ancora revisionata https://github.com/mcneel/rhinocommon/pull/171 )
Successivamente abbiamo effettuato i test usando python 2.7.12 e python 3.5.2 coadiuvate dalla libreria pythonnet ( https://github.com/pythonnet/pythonnet ).
Per fare la build di pythonnet abbiamo usato mono 4.8 e dotnet 2.0.0
nel virtuaenv di python, il comando “pip freeze” generava il seguente output:
pkg-resources==0.0.0
pycparser==2.18
PyICU==1.9.7
pythonnet==2.3.0
six==1.11.0
Il risultato dello script di lettura delle note era sempre il solito, ossia una serie di caratteri illeggibili che cambiava ad ogni esecuzione dello script.
Abbiamo provato a cambiare l’interprete di python ed ad effettuare dei downgrade di pythonnet, ma il risultato era sempre lo stesso.
La seconda strada, quella riguardante l’uso di IronPython 2.7.7.
Qui il problema si è dimostrato più a monte. Dopo aver fatto la build di IrnoPython e lanciato lo script con Mono ( sempre versione 4.8), IronPython presentava un errore nelle PosixPath, il che rendeva praticamente impossibile il caricamente dinamico delle path di sistema.
Come possiamo procedere per ottenere una libreria stabile aggiornata per Linux?
Il comportamento diverso della libreria all’interno dell’ambiente può dipendere da componenti che non sono stati inclusi nella compilazione delle Rhino3dmIO?
Cordiali saluti
Federico Della Rovere