ModelingCommandData in R9
- 
 THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED On 19/11/2004 at 12:20, xxxxxxxx wrote: User Information: 
 Cinema 4D Version: 8.5+
 Platform: Windows ; Mac ; Mac OSX ;
 Language(s) : C++ ;--------- 
 Howdy,I noticed that the ModelingCommandData in R9 has changed from what it was in R8.5: struct ModelingCommandData 
 {
 public:
 BaseDocument* doc;
 BaseObject* op;
 BaseContainer* bc;
 LONG mode;
 LONG flags;
 BaseObject* result1;
 void* result2;
 };Now in R9 it is: 
 struct ModelingCommandData
 {
 ModelingCommandData() { doc=NULL; op=NULL; bc=NULL; mode=0; flags=0; result_ex=NULL; result=NULL; version=1; arr=NULL; }
 ~ModelingCommandData();BaseDocument* doc; 
 BaseObject* op;
 BaseContainer* bc;
 LONG mode;
 LONG flags;BaseObject* result_ex; // don't use 
 LONG version;
 AtomArray* arr;
 AtomArray* result;
 };The R8.5 documentation says this: 
 ----------------------------------
 BaseObject* result1Resulting object for commands that create a new object. Not used if MODELINGCOMMANDFLAG_CREATEUNDO is set inflags. Note: You need to free this object yourself afterwards, or insert it into a document. void* result2 Not used currently. 
 -------------------------------------In R8.5 if using MCOMMAND_CURRENTSTATETOOBJECT the mcd.result1 is the resulting object, but the R9 struct says "BaseObject* result_ex; // don't use " and the only other result is an AtomArray. So, I reckon my question is how do I use this in R9? Adios, 
 Cactus DanP.S. Any idea when the R9 SDK documentation will be released? 
- 
 THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED On 19/11/2004 at 12:32, xxxxxxxx wrote: Hi, yes, this was necessary due to Multiselection I think. If the user selects several objects and you call this modeling command, result_ex couldn´t take it, so everything is now passed to the Atomarray. If you are sure there is only one object selected you could get the resulting object just like this: BaseObject* res = static_cast<BaseObject*>(result->GetIndex(0));//I assume result is used and not arr If there are several files, just loop through the indices. something like this: for(LONG i=0;i<result->GetCount();i++) { res = static_cast<BaseObject*>(result->GetIndex(i)); //Do something with this object... }Well, that´s how I would handle it  And no, there were no announcements yet when the docs are ready. Katachi 
- 
 THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED On 19/11/2004 at 13:03, xxxxxxxx wrote: Howdy, Ah, OK. There will only be one object from an object link in the tag, so I reckon the first example should work. Thanks, Samir. Adios, 
 Cactus Dan
- 
 THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED On 19/11/2004 at 16:44, xxxxxxxx wrote: Howdy, OK, it works, but it's returning the object in it's "undeformed" state (probably because the deformation is on it's parent Null object). Is there a way to return just the object in it's deformed state without using MCOMMAND_CURRENTSTATETOOBJECT on it's parent? I looked in the SDK documentation and found this: 
 -----------------------------------
 MCOMMAND_CURRENTSTATETOOBJECTCurrent state to object (returns object) Container ID Type Description MDATA_CURRENTSTATETOOBJECT_INHERITANCE Bool Use inheritance. MDATA_CURRENTSTATETOOBJECT_KEEPANIMATION Bool Keep animation. 
 -------------------------------------
 MCOMMAND_CURRENTSTATETOOBJECT has a container called MDATA_CURRENTSTATETOOBJECT_INHERITANCE but I don't understand what this is used for or exactly how to set it. I did a search here and in the archives but found nothing indicating it's usage.Adios, 
 Cactus Dan
- 
 THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED On 15/06/2006 at 12:25, xxxxxxxx wrote: I'll like to know too how to set MDATA_CURRENTSTATETOOBJECT_INHERITANCE and MDATA_CURRENTSTATETOOBJECT_KEEPANIMATION in 9.1 Sdk. ModelingCommandData cd; 
 cd.doc = op->GetDocument();
 cd.op = geo;
 if (!SendModelingCommand(MCOMMAND_CURRENTSTATETOOBJECT, cd)) return FALSE;
 AtomArray* result=cd.result;
 BaseObject *Temp_Obj=NULL;
 GePrint("Atoms Number:" + LongToString(result->GetCount() ) );
 for (LONG k=0; TRUE; k++) {
 Temp_Obj=(BaseObject* ) result->GetIndex(k);
 if (Temp_Obj) GePrint("Index:" + LongToString(k) + " Name:" +Temp_Obj->GetName()); else return FALSE;
 }i see a post where suggest to use 
 cd.mode = MDATA_CURRENTSTATETOOBJECT_INHERITANCE | MDATA_CURRENTSTATETOOBJECT_KEEPANIMATION;but if i start from null object that contain several objects, deformer.. GetCount return always 1. At last.. i need to know from a deformed object the Undeformed geometry and the deformed geometry. (vertex position) With CurrentStateToObject i always get the deformed geoemtry. Thanks in advance 
 Renato T.
- 
 THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED On 15/06/2006 at 16:16, xxxxxxxx wrote: ModelingCommandData cd; 
 cd.doc = op->GetDocument();
 cd.arr = (AtomArray* ) geo;
 BaseContainer bc;
 cd.mode=MODIFY_ALL; //????
 bc.SetBool(MDATA_CURRENTSTATETOOBJECT_INHERITANCE,TRUE);
 bc.SetBool(MDATA_CURRENTSTATETOOBJECT_KEEPANIMATION,TRUE);
 cd.bc=&bc;
 if (!SendModelingCommand(MCOMMAND_CURRENTSTATETOOBJECT, cd))
 return FALSE;is not working.. always 1 element in array. What's i'm wrong? cheers 
 Renato