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
    • Recent
    • Tags
    • Users
    • Login

    how to use SplineData

    Scheduled Pinned Locked Moved SDK Help
    7 Posts 0 Posters 505 Views
    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 Offline
      Helper
      last edited by

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

      On 03/05/2009 at 14:37, xxxxxxxx wrote:

      User Information:
      Cinema 4D Version:   r11 
      Platform:      
      Language(s) :     C++  ;

      ---------
      hi there,

      i am struggling while using the SplineData from my GUI and passing it directly to a sweepnurbs' SWEEPOBJECT_SPLINESCALE

      i cannot find any examples showing how to use a Spline GUI Element

      thanks for your help

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

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

        On 05/05/2009 at 02:27, xxxxxxxx wrote:

        Hi!

        Take a look at this thread:click

        With this stuff you have access to the internal GeData element of your BaseList2D object. The GeData is of type: CUSTOMDATATYPE_SPLINE and contains the SplineData Pointer. Just use GeData::GetCustomDataType(CUSTOMDATATYPE_SPLINE) and cast it to SplineData. Thats the way to get it. From this point the way to set it should be no problem.

        GeData has a constructor GeData(LONG type, const CustomDataType& data); so you just have to call

        > \> GeData d(CUSTOMDATATYPE_SPLINE, \*your_spline_data) \>

        to create GeData which you have to pass via BaseLink::SetParameter(...)

        Hope that helps.

        EDIT: changed the thread link, wrong copy and paste 🙂

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

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

          On 05/05/2009 at 14:03, xxxxxxxx wrote:

          ?? i guess i have not enough c++ knowledge to understand exactly what you told me there 😞

          i have this to get the SplineData of my GUI:

          > `

            
          \>  SplineData *spdata=(SplineData* ) bc->GetCustomDataType(VIRAL_SPLINE, CUSTOMDATATYPE_SPLINE);  
          \>  
          

          `

          and this is where i try to pass it to the Spline Scale (Detail)
          > `

            
          \>  GeData d ( CUSTOMDATATYPE_SPLINE, spdata ); //this is the error line  
          \>  bc->SetData(SWEEPOBJECT_SPLINESCALE, d);  
          \>  
          

          `

          i get this error:
          c:\programme\maxon\cinema 4d r11\plugins\plugello\source\viral.cpp(172) : error C2664: 'GeData::GeData(void *,VOIDVALUETYPE)': Konvertierung des Parameters 1 von 'int' in 'void *' nicht möglich

          what exactly am i doing wrong?

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

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

            On 05/05/2009 at 14:26, xxxxxxxx wrote:

            You need to pass an instance not a pointer. *spdata would dereference the pointer to the instance. So:

            GeData d (CUSTOMDATATYPE_SPLINE, *spdata);

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

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

              On 05/05/2009 at 14:28, xxxxxxxx wrote:

              thank you, gonna try that, too..

              but just a second ago i got it working like this:

              first:

              GeData spl = bc->GetData(VIRAL_SPLINE);

              and later..

              bc->SetData(SWEEPOBJECT_SPLINESCALE, spl);

              is there any benefit using one or the other? or doesnt it really matter which way to go?

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

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

                On 05/05/2009 at 15:12, xxxxxxxx wrote:

                If it works, then it shouldn't matter.

                The difference is that 'spl' is a GeData instance applied to SetData() whereas spldata is a SplineData pointer applied to the construction of GeData 'd'. But it must be a SplineData instance in that case.

                When you see something like "Object* obj" in an argument list, you need to pass a pointer to the instance (if it is an instance, you use '&obj;' which means 'take the memory address of the instance' which is all a pointer is - the memory address). When you see something like "Object obj", "Object& obj", or "const Object& obj", you need to send the instance (or a reference which works similarly to an instance). If what is being passed is already a pointer, you need to get at the instance/reference using *obj.

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

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

                  On 05/05/2009 at 15:40, xxxxxxxx wrote:

                  thank you very much for the explanation!

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