2016-05-15 1 views
0

referenziert Wenn ich Grasshopper-Erweiterungen in C# schreibe, möchte ich auf Symbole zugreifen, die in meinem Rhino-Plugin definiert sind.Wie man ein Rhino rhp von einem Grasshopper ghe

Ein übliches Beispiel ist, dass mein Plugin benutzerdefinierte UserData-Klassen an Objekte anhängen kann, und ich würde gerne später in Grasshopper auf die Mitglieder dieser Daten zugreifen können.

In meinem speziellen Beispiel habe ich eine Klasse MirrorData, die zu einem Satz von Breps hinzugefügt wird. Ich kann das einstellen und von meinem Rhino-Plugin bekommen.

Das Problem ist, dass für meine Grasshopper-Erweiterung über MirrorData wissen muss, muss ich das Rhino-Plugin von der Grasshopper-Erweiterung verweisen, aber dies ist nicht erlaubt, da das Rhino-Plugin .rhp ausgibt, die nicht als verwendet werden kann gültige Referenz

Ich habe eine Problemumgehung gefunden, indem ich die temporäre MirrorPlugin.dll im Obj-Ordner meines Plugins von der Grasshopper-Erweiterung referenziere. Aber das scheint nicht der "richtige" Ansatz zu sein.

Irgendwelche Ideen?

Antwort

2

Der empfohlene Ansatz besteht darin, eine Assembly zu erstellen, die auf RhinoCommon verweist und die zwischen Ihrem Rhino-Plug-in und Ihrer Grasshopper-Komponente freigegeben ist. Fügen Sie in dieser freigegebenen Assembly alle Funktionen hinzu, die Sie in den anderen Projekten benötigen. Wenn Sie eine Probe benötigen, das dies zeigt, finden Sie im folgenden:

https://github.com/dalefugier/Platonics

In Zukunft könnten Sie Ihre Rhino Entwicklung Frage in unserem Diskurs Diskussionsforum stellen:

http://discourse.mcneel.com/

Wir neigen dazu, dieses Forum fleißiger zu überwachen als andere. ;-)

- Dale

1

Eine Sache zu beachten ist, dass Ihre Nashorn-Plugin nicht eine RHP-Datei sein muss. Eine DLL funktioniert gut, aber ich denke, Sie verlieren die Drag & Drop-Funktion. Ich benutze ein benutzerdefiniertes Installationsprogramm, um meine Plugin DLL und Grasshopper DLL in das gleiche Verzeichnis zu installieren. Das Grasshopper-Plugin kann dann auf das Rhino-Plugin problemlos zugreifen. Ich denke, dass ich nur mit einer Instanz des Rhino-Plugins im Speicher gelandet bin, aber ich habe dies nicht explizit verifiziert (in meinem Fall interessiert mich nicht mehrere Instanzen)

Verwandte Themen