Grasshopper

algorithmic modeling for Rhino

Using Custom Classes as Input Parameters to a GH Component

Hi

 

has anyone managed to use thir own custom class as an output parameter to a GH component?

 

I cant seem to do it and GH hangs after the pManage.Regsiter.Param method is called. Im running

0.6.0059.

 

Some psuedo code to get the ball rolling;

 

Namespace MyLibrary

Class MyClass

Inherits Grasshopper.Kernel.Types.GH_Goo

End Class

End Namespace

 

Now in the RegisterOutputParams sub.......................

 

Protected Overrides Sub RegisterOutputParams(ByVal pManager As GH_OutputParamManager)

Dim ghMyClassParameter As Grasshopper.Kernel.GH_Param(Of MyLibrary.MyClass)

pManager.RegisterParam(ghMyClassParameter, "MyClasses", "MC_P", "MyClass Output Parameters")

End Sub

 

It fails after execution of the regsiterparam method, i note that ghMyClassParameter has a value of null and have unsuccessfully tried casting from a new instance, say:

 

Dim myClass As New MyLibrary.MyClass

myClass.CastTo(ghMyClassParameter)

 

I still get a null instance for ghMyClassParameter

 

Cheers

 

 

 

 

 

 

 

 

Views: 2548

Replies to This Discussion

Thanks, David. I'm excited to see the new help file. My current work-around is placing the surfaces in a data tree whose paths contain other information (all integers, of course). It's functional for the moment, but limited and hardly elegant.... a good data type will be much, much better.

David et al.,

Just following up on this now.  Quick question:  I've made a data type, and now I'm trying to make a parameter for it.  After deriving from GH_Param(Of MyType), what is the constructor supposed to look like?

Public Class MyParam
    Inherits GH_Param(Of MyType)

    ' Constructor
    Public Sub New()
        MyBase.New(argument???)
    End Sub

    ....

End Class

(The SDK shows an example deriving from GH_PersistentParam, but my type is not serializable.)

Thanks,

Jon

The constructor for a class that derives from GH_Param(Of T) needs to call the base class constructor with a GH_InstanceDescription. Like so:

Public Sub New()

  MyBase.New(New GH_InstanceDescription("MyType", "MT", "A parameter for MyType", "Params", "Primitive")

End Sub

Basically it defines what your parameter is called when you create a standalone version of it and where on the tabs it appears.

--

David Rutten

david@mcneel.com

Poprad, Slovakia

RSS

About

Translate

Search

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service