Real from inport to outport

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 24/03/2008 at 09:41, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   10.5 
Platform:      Mac OSX  ; 
Language(s) :     C++  ;

---------
Hi!

I have a big problem with the SDK and the documentation to get the following case. I want to create one inport / one outport (Datatype: Real).

The outport should only forward a number of the inport.

I created 3 functions / classes.

> `

  
\>  GeData GvGetPortGeData(GvNode* node, GvPort* port, GvRun* run)  
\>  {  
\>  //and so on...//  
\>  }  
\>  

`

> `

  
\>  Bool GvSetPortGeData(const GeData& ge_data, GvNode* node, GvPort* port, GvRun* run)  
\>  {  
\>  //and so on...//  
\>  }  
\>  

`

> `

  
\>  class GVIteratorTest : public GvOperatorData  
\>  {  
\>  //and so on...//  
\>    
\>  Bool Calculate(GvNode *bn, GvPort *port, GvRun *run, GvCalc *calc)  
\>  {  
\>    
\>  GvSetPortGeData(GeData(3000),bn, port, run);  
\>      return FALSE;  
\>  }  
\>    
\>  //..blabla//  
\>  }  
\>  

`

Alright. It works. With the line GvSetPortGeData(... I am able to set the Real 3000 from the outport. But how do I get the Real from the inport called inport_LINK.

Thank you very much.

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 25/03/2008 at 10:39, xxxxxxxx wrote:

Hi!

Okay, perhaps I simplify my problem.

> `

  
\>            GvValue* vinport = ports.in_values[inport_LINK];   
\>            GvPort* inport = vinport->GetPort();   
\>            GeData inportdata = GvGetPortGeData(bn, inport, run);  
\>            Real normale = inportdata.GetReal();   
\>            GePrint(RealToString(normale));   
\>  

`

This code I paste before I return the value to "set" the outport data. But in the Console (see GePrint) the value is 0. The inportvalue with a constant is 25. I only have 1 inport.

Whats my mistake?

Thank you very much 🙂

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 26/03/2008 at 08:49, xxxxxxxx wrote:

Sorry for asking again, but did nobody got a node to work, that imports a normal Real number?

Thanks a lot

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 26/03/2008 at 09:06, xxxxxxxx wrote:

I will look into it.

cheers,
Matthias

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 27/03/2008 at 06:56, xxxxxxxx wrote:

Thanks a lot 🙂

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 28/03/2008 at 07:37, xxxxxxxx wrote:

Ok, here is my Calculate function of the node. It outputs the input.

> \> static LONG input_ids[] = { GV_REAL_INPORT, 0 }; // Use this for the input ports! \> \> Bool MyNode::InitCalculation(GvNode \*bn, GvCalc \*calc, GvRun \*run) \> { \>      return GvBuildInValuesTable(bn, ports, calc, run, input_ids); \> } \> \> void MyNode::FreeCalculation(GvNode \*bn, GvCalc \*calc) \> { \>      GvFreeValuesTable(bn, ports); \> } \> \> Bool MyNode::Calculate(GvNode \*bn, GvPort \*port, GvRun \*run, GvCalc \*calc) \> { \>      if(!port) return FALSE; \> \>      GvValue \*vinport = ports.in_values[0]; \>      if(!vinport) return FALSE; \> \>      if(!vinport->Calculate(bn, GV_PORT_INPUT, run, calc, 0)) return FALSE; \> \>      GvPort \*inport = vinport->GetPort(); \> \>      Real value = 0.0; \> \>      inport->GetReal(&value;,run); \> \>      GePrint(RealToString(value)); \> \>      switch(port->GetMainID()) \>      { \>           case GV_REAL_OUTPORT: \>           { \>                return port->SetReal(value,run); \>           } \>      } \>       \>      return FALSE; \> } \>

GV_REAL_INPORT and GV_REAL_OUTPORT are from my ressource file

> \> CONTAINER GVmynode \> { \>      NAME          GVmynode; \>      INCLUDE GVbase; \> \>      GROUP          ID_GVPORTS \>      { \>           REAL     GV_REAL_INPORT \>           { \>                INPORT; \>                STATICPORT; \>                CREATEPORT; \>           } \>           REAL     GV_REAL_OUTPORT \>           { \>                OUTPORT; \>                STATICPORT; \>                CREATEPORT; \>           } \>      } \> } \>

cheers,
Matthias

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 28/03/2008 at 08:28, xxxxxxxx wrote:

Hi!

Amazing. Thanks for great Work. Now, i see my mistake.

May the force be with you 😘

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 28/03/2008 at 12:43, xxxxxxxx wrote:

Hi!

I have a short question again.
I tried to get several inports. I am confused a little bit. If I input some vectors via the attributemanager (about the port-inputs) the node add the two vectors.

But when I connect to vectors via two other nodes, the node adds ValueA with the vector (0;0;0)... Does someone find the mistake?

I am confused a lot. Thanks for help..

GvValue* vinport = ports.in_values[0];
     if (!vinport) return FALSE;   
     if (!vinport->Calculate(bn, GV_PORT_INPUT_OR_GEDATA, run, calc, 0)) return FALSE;
   
        GvValue* vinportA = ports.in_values[1];
     if (!vinportA) return FALSE;   
     if (!vinportA->Calculate(bn, GV_PORT_INPUT_OR_GEDATA, run, calc, 0)) return FALSE;
   
     GvPort* ipt = bn->GetInPort(0);
     GeData iptdata = GvGetPortGeData(bn, ipt, run);
     Vector valueA = iptdata.GetVector();

GvPort* iptA = bn->GetInPort(1);
     GeData iptdataA = GvGetPortGeData(bn, iptA, run);
     Vector valueB = iptdataA.GetVector();
     
     Vector valueC;

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 28/03/2008 at 17:02, xxxxxxxx wrote:

sry, problem solved...thanks