2016-05-15 1 views
0

Lorsque j'écris des extensions Grasshopper en C#, j'aimerais accéder aux symboles définis dans mon plugin Rhino.Comment référencer un rhino rhp à partir d'un ghop Grasshopper

Un exemple courant est que mon plugin peut attacher des classes UserData personnalisées à des objets, et j'aimerais pouvoir accéder aux membres de ces données plus tard dans Grasshopper.

Dans mon exemple spécifique, j'ai une classe MirrorData qui est ajoutée à un ensemble de Breps. Je peux définir et obtenir ceci de mon plugin de rhinocéros. Le problème est que pour que mon extension Grasshopper connaisse MirrorData, j'ai besoin de référencer le plugin rhino à partir de l'extension sauterelle, mais cela n'est pas autorisé car le plugin rhino produit .rhp qui ne peut pas être utilisé comme un référence valide.

J'ai trouvé une solution de contournement en référençant le MirrorPlugin.dll temporaire dans le dossier obj de mon plugin à partir de l'extension grasshopper. Mais cela ne semble pas être l'approche «correcte».

Des idées?

Répondre

2

L'approche recommandée consiste à créer un assembly, faisant référence à RhinoCommon, partagé entre votre plug-in Rhino et votre composant Grasshopper. Dans cet assembly partagé, ajoutez toutes les fonctionnalités dont vous avez besoin dans les autres projets. Si vous avez besoin d'un exemple qui illustre cela, consultez les rubriques suivantes:

https://github.com/dalefugier/Platonics

À l'avenir, vous pouvez poser votre question de développement de Rhino sur notre forum de discussion Discours:

http://discourse.mcneel.com/

Nous avons tendance à surveiller ce forum avec plus de diligence que les autres. ;-)

- Dale

1

Une chose à noter est que votre plugin Rhino ne doit pas être un fichier RHP. Une DLL fonctionne bien, mais je suppose que vous perdez la fonctionnalité d'installation glisser-déposer. J'utilise un installeur personnalisé pour installer mon plugin dll et grasshopper dll dans le même répertoire. Le plugin de sauterelle est alors capable d'accéder au plugin rhino sans problème. Je pense que je me retrouve avec une seule instance du plugin rhino en mémoire mais je ne l'ai pas vérifié explicitement (dans mon cas je me fiche de plusieurs instances)