Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    FillPortsMenu

    SDK Help
    0
    15
    1.1k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Helper
      last edited by

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

      On 15/06/2008 at 15:23, xxxxxxxx wrote:

      User Information:
      Cinema 4D Version:   10 demo 
      Platform:   Windows  ;   
      Language(s) :     C++  ;  XPRESSO  ;

      ---------
      Hi,
      I used FillPortsMenu in an (new type) Expresso Node, to list my port names of which the user can select. Works fine.

      1.Now the user selects a port.
      2.Now i want dynamically set the port name, NOT according the preset stringtable in the '.str' file.

      I thougt I could do this in the PortMenuCommand, but that event is not called. Where does the user's selection trigger go ?

      Or can I change the stringlist dynamically? How?
      Jan

      1 Reply Last reply Reply Quote 0
      • H
        Helper
        last edited by

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

        On 15/06/2008 at 17:08, xxxxxxxx wrote:

        Hi!

        I hope this code snippet helps... Catch the Message from the method and check out, which kind of port was added. The address of the GvNode is stored in dataBN. Look for "GvMessage" in the C4DC++ SDK to get more information

        //*---------------------------------------------------------------------------*
                  Bool YourNode::Message(GeListNode *node, LONG type, void *data)
                  //*---------------------------------------------------------------------------*
                  {
                  //*---------------------------------------------------------------------------*
                       BaseContainer* base = (BaseContainer* ) data;

        switch(type)
                       {
                            //When a port was added
                            case GV_MESSAGE_PORT_ADDED:
                                 switch(base->GetLong(GV_MESSAGE_FIRST_DATA_ID+0, 0))
                                 {
                                      case GV_PORT_OUTPUT:
                                           GvPort* addedOutPort = dataBN->GetOutPort(dataBN->GetOutPortCount()-1);
                                           addedOutPort->SetName(addedOutPort->GetName(dataBN) + LongToString(base->GetLong(GV_MESSAGE_FIRST_DATA_ID+3)+1));
                                           
                                      case GV_PORT_INPUT:
                                                [...]

        1 Reply Last reply Reply Quote 0
        • H
          Helper
          last edited by

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

          On 16/06/2008 at 05:01, xxxxxxxx wrote:

          Hi Shawni,

          That's beautiful, it works, thanks a lot really.
          There are some minor changes which I snippet here.
          watch out: this message editor does not seem to know the plus sign, so i replaced it with "plussign"
          I don't know how to change this behaviour.

          Regards,
          Jan

          > \> //{-------------------------------------------------} \> virtual Bool Message(GeListNode \*node, LONG type, void \*data) \> { \> BaseContainer\* bc = (BaseContainer\* ) data; \> GvNode\* mynode = (GvNode\* ) node; \> String S = ""; \>       \> switch (type) //When a port was added \> { \>      case GV_MESSAGE_PORT_ADDED: \>      { \>          switch (bc->GetLong(GV_MESSAGE_FIRST_DATA_ID"plussign"0,0)) \>          { \>            case GV_PORT_OUTPUT: \>            {    \>                      GvPort\* addedOutPort = mynode->GetOutPort(mynode->GetOutPortCount()-1); \> \>                      // get the port id, stored in the data (bc) \>                      // at GV_MESSAGE_FIRST_DATA_ID"plussign"1 \>                      //(see GvMessage in the sdk) \>                      // get the port id \>                      long id = bc->GetLong(GV_MESSAGE_FIRST_DATA_ID"plussign"1); \> \>                      // method to get the old name \>                      S = addedOutPort->GetName((GvNode\* )node) "plussign" LongToString(id); \> \>                      // method to set the new name \>                      addedOutPort->SetName(S); \>      } \> etc, etc \>

          1 Reply Last reply Reply Quote 0
          • H
            Helper
            last edited by

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

            On 16/06/2008 at 06:32, xxxxxxxx wrote:

            Hi!

            correct me if i am wrong...

            base->GetLong(<GV_MESSAGE_FIRST_DATA_ID+0>, 0))

            The part in the angle brackets is a constant....

            1 Reply Last reply Reply Quote 0
            • H
              Helper
              last edited by

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

              On 16/06/2008 at 08:50, xxxxxxxx wrote:

              Yes sure you are right..what's wrong ?
              Jan

              1 Reply Last reply Reply Quote 0
              • H
                Helper
                last edited by

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

                On 16/06/2008 at 14:36, xxxxxxxx wrote:

                What happens?

                When I take your code and change "plussign" to + it works...

                1 Reply Last reply Reply Quote 0
                • H
                  Helper
                  last edited by

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

                  On 17/06/2008 at 06:47, xxxxxxxx wrote:

                  Yes, it may sound ridiculous but you see, in this forum editor i cannot type the "plus".
                  If i do, it disappears from the text in the "Post Preview" like magic, thats why i replaced it with the "plussign", exactly as you said in your last mail.

                  This may be somewhat confusing but the code works fine indeed. The node is ready.

                  Thanks again.

                  1 Reply Last reply Reply Quote 0
                  • H
                    Helper
                    last edited by

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

                    On 18/06/2008 at 11:43, xxxxxxxx wrote:

                    Hi,

                    Well, my node isn't quite ready...
                    Now that i have added a port, how can a user remove it if he/she wants to?
                    Clicking on it with the right mouse shows a disabled 'Delete Port' in the popup.
                    Ok this should be done with GetDEnabling yes?
                    But a GePrint shows that this function is not called at the right time.
                    And if it was, how would i find the id of the 'Delete Port'. Adding a 'Delete Port' in the 'FillPortMenu' adds just another 'Delete Port'.

                    Jan

                    1 Reply Last reply Reply Quote 0
                    • H
                      Helper
                      last edited by

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

                      On 19/06/2008 at 23:49, xxxxxxxx wrote:

                      Hi!

                      I am back 🙂

                      Change the settings in your res file.

                      CONTAINER PythonNode
                      {
                           NAME JanaNode;
                           INCLUDE GVbase;

                      GROUP ID_GVPORTS
                           {
                                LONG in_long {INPORT;}

                      .....
                      Add CREATEPORT, MULTIPLE, etc...depends on what you need.

                      1 Reply Last reply Reply Quote 0
                      • H
                        Helper
                        last edited by

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

                        On 20/06/2008 at 04:33, xxxxxxxx wrote:

                        Mmmm, you're an expert Shawni. Respect.

                        I had defined my ports as {INPORT; STATICPORT;}

                        Thanks a million.

                        Regards,
                        Jan

                        1 Reply Last reply Reply Quote 0
                        • H
                          Helper
                          last edited by

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

                          On 20/06/2008 at 05:38, xxxxxxxx wrote:

                          Hi!

                          nice to see that it works.

                          In your case: Do you mix "Createport" and "Multiple"?

                          bye

                          1 Reply Last reply Reply Quote 0
                          • H
                            Helper
                            last edited by

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

                            On 21/06/2008 at 09:18, xxxxxxxx wrote:

                            Well, eeeeh, i use neither...
                            You mean in the iCreate or in the res file or something?
                            I Just create a node from scratch. And it works.

                            Hey, do yo know a way to find out when an object from the Object manager is dropped into the XPresso Editor, and when   a connection is made (wire)?

                            I need to trace the connection from my node all the way to a (direct or indirect) connected object(s).

                            Jan

                            1 Reply Last reply Reply Quote 0
                            • H
                              Helper
                              last edited by

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

                              On 21/06/2008 at 11:09, xxxxxxxx wrote:

                              hi!

                              Create an object input-port. Use "GVGENERALOBJECT" in your res file.

                              In the calculate file, get the BaseLink2D from the port and cast it to an BaseObject.

                              bye

                              1 Reply Last reply Reply Quote 0
                              • H
                                Helper
                                last edited by

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

                                On 21/06/2008 at 13:27, xxxxxxxx wrote:

                                hi Shawni,

                                You mention a 'BaseLink2D' but you mean a 'BaseList2D'?
                                I know, but that delivers only a directly connected node. Of course you could follow the chain forward to an object, but i think i prefer a message when an object from the manager is dropped. Something like a DRAG_RECEIVE, but then for the XPresso editor.
                                What i need is to get a pointer to the object that is the final target of my node, although several nodes might or might not be in between me and my target.
                                Jan

                                1 Reply Last reply Reply Quote 0
                                • H
                                  Helper
                                  last edited by

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

                                  On 22/06/2008 at 02:04, xxxxxxxx wrote:

                                  Hi!

                                  I'm sorry. I ment a BaseLink, not a BaseLink2D.

                                  You could listen for CoreMessage(). Perhaps you receive your Drag_Receive.
                                  Print out the id and check the constant.

                                  bye.

                                  p.s. if you have information about getting objects, please let me know.

                                  1 Reply Last reply Reply Quote 0
                                  • First post
                                    Last post