Rhino3dmIO errore lettura notes

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

Federico ciao
Ti conviene contattare direttamente il responsabile dell’integrazione Python che è Steve Baer steve@mcneel.com
Se hai voglia di condividere i risultati qui sarà apprezzato sicuramente.