setting ALIGNTOSPLINETAG_LINK ?



  • On 11/04/2016 at 12:39, xxxxxxxx wrote:

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

    ---------
    Hi there, after some absence from coding i am struggling setting the ALIGNTOSPLINETAG_LINK of tag.

    this is the code (where step is just some other BaseObject created in a loop) :

    BaseObject* splineLink = static_cast<BaseObject*>((BaseObject* )bc->GetObjectLink(USERSPLINE, doc)->GetClone(COPYFLAGS_0, NULL));
    splineLink->InsertUnder(main);
      
    BaseTag* alignToSpline = step->MakeTag(Taligntospline);
    alignToSpline -> SetParameter(DescID(ALIGNTOSPLINETAG_LINK),GeData(splineLink),DESCFLAGS_SET_0);
    alignToSpline -> SetParameter(DescID(ALIGNTOSPLINETAG_TANGENTIAL),GeData(useTangent),DESCFLAGS_SET_0);
    alignToSpline -> SetParameter(DescID(ALIGNTOSPLINETAG_POSITION),GeData((1.0/(max-1))*current),DESCFLAGS_SET_0);
    

    this results in that the tangent rotation is working, but the positioning only works after converting the object to an editable one.

    any ideas what i may be missing?

    thanks,
    Ello



  • On 12/04/2016 at 02:40, xxxxxxxx wrote:

    Hi Ello,
    welcome back!

    I quickly tried tested your code in a simple Python script and it worked out of the box.
    So I guess, your issue must have something to do with wither surrounding code or the place you are using this code in. Can you give us some more details?

    A quick note on the first two lines (even if I assume, that you probably shortened the code for posting it here) :
    You are directly dereferencing the link you pull out of the BaseContainer. This is quite dangerous, the result may be a nullptr.
    Then you clone the referenced object and again dereference it directly in order to insert it into the document. As cloning involves memory allocations, this can fail as well and a nullptr check is needed, too.
    Of course this has nothing to do with your actual problem, just wanted to mention it.



  • On 12/04/2016 at 05:06, xxxxxxxx wrote:

    hm, i guess posting the whole code would be a bit too much lines.
    i have however tried disabeling fragments whereever the spline was referenced or added to the dependency list, etc. maybe i need to create a fresh object to sort things out step by step. i was trying to change/add something to an existing older plugin.

    btw, you are right about the referenced object. it is checked previously.


Log in to reply