Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 29/11/2002 at 01:14, xxxxxxxx wrote:
User Information: Cinema 4D Version: 8.012 Platform: Windows ; Mac ; Language(s) : C++ ;
--------- ive got an object BaseObject *x its of type Oselection so I want to restore this selection. I start looking for some ways to do this , but this seems very cloudy. I look in the Oselection.h for some clues and find SELECTIONOBJECT_LIST = 1000, SELECTIONOBJECT_RESTORE = 1001 // virtual ID then I look in the Oselection.res and find BUTTON SELECTIONOBJECT_RESTORE { } IN_EXCLUDE SELECTIONOBJECT_LIST {bla bla} it would be nice if i could send a message to click the button but i soubt this very much. so im left with IN_EXCLUDE data type. I look in SDK help for some clue how top extract the list of object from this data type and there is no clue. so I ask here , how can i get activate an Oselection and its contents , as if i had pressed its restore selection button.or at least get the list of object so i can activate them by hand. cheers Paul
On 29/11/2002 at 07:48, xxxxxxxx wrote:
Shouldn´t it work like this to restore the selection:
BaseContainer \*bc = so->GetDataInstance(); bc->SetBool(1002,1);
On 29/11/2002 at 15:18, xxxxxxxx wrote:
>BaseContainer \*bc = so->GetDataInstance(); >bc->SetBool(1002,1); it would be nice if that worked , but it doesnt :/ Paul
On 29/11/2002 at 19:10, xxxxxxxx wrote:
Hmm, you are right, I just tried it out. I tried to get the GeDataType of it but that didn´t work either. I receive DA_NIL when using SELECTIONOBJECT_RESTORE and the default case appears when using the SELECTIONOBJECT_LIST data:
BaseContainer *bc = so->GetDataInstance(); GeDataType p = bc->GetType(SELECTIONOBJECT_LIST); switch(p) { case DA_NIL: GePrint("NULL"); break; case DA_LONG: GePrint("long"); break; case DA_REAL: GePrint("real"); break; case DA_VECTOR: GePrint("vector"); break; case DA_MATRIX: GePrint("matrix"); break; case DA_BYTEARRAY: GePrint("bytearray"); break; case DA_STRING: GePrint("string"); break; case DA_FILENAME: GePrint("filename"); break; case DA_CONTAINER: GePrint("container"); break; case DA_ALIASLINK: GePrint("aliaslink"); break; case DA_MARKER: GePrint("marker"); break; case DA_MISSINGPLUG: GePrint("missingplug"); break; case DA_CUSTOMDATATYPE: GePrint("customdatatype"); break; default: GePrint("nothing"); break; }
But I guess this is all wrong too. I guess maybe creating an inclusion table and using it to get the objects from the list could work. But I haven´t been useing it yet. InclusionTable *BuildInclusionTable(BaseDocument *doc, LONG hierarchy_bit = NOTOK); I would really like to know too how to use it. Hopefully Mikael will clear this out tommorrow. Best Samir
On 30/11/2002 at 06:11, xxxxxxxx wrote:
ok all sorted. I just needed to extract the custom data type from the container cheers
On 30/11/2002 at 06:50, xxxxxxxx wrote:
could you tell me how you did at last? thx Samir
On 01/12/2002 at 02:42, xxxxxxxx wrote:
Glad you worked it out. Otherwise this is the way to push a button:
BaseObject* obj = doc->GetFirstObject(); if (!obj || obj->GetType() != Oselection) return FALSE; DescriptionCommand dc; dc.id = DescLevel(SELECTIONOBJECT_RESTORE); obj->Message(MSG_DESCRIPTION_COMMAND, &dc); EventAdd();
On 01/12/2002 at 04:29, xxxxxxxx wrote:
hey , great stuff Mikael to extract the selection from the the container i made this little function it assumes that your sending a valid Oselection type to it. void DoMultiSelect(BaseObject *oplink) { BaseContainer *data=oplink->GetDataInstance(); InExcludeData *list=(InExcludeData* )data->GetCustomDataType(SELECTIONOBJECT_LIST,CUSTOMDATATYPE_INEXCLUDE_LIST); LONG list_cnt=list->GetObjectCount(); BaseObject *listop=NULL; if (list_cnt) { oplink->DelBit(BIT_ACTIVE); for (LONG lc=0;lc<list_cnt;lc++) { listop=(BaseObject* )list->ObjectFromIndex(oplink->GetDocument(),lc); listop->SetBit(BIT_ACTIVE); } } else oplink->SetBit(BIT_ACTIVE); EventAdd(EVMSG_BROWSERCHANGE); } the new customdatatype in basecontainer seems to be the key to lots of interesting things!!! cheers Paul
On 01/12/2002 at 04:36, xxxxxxxx wrote:
Great. Thanks for explaining Paul! And thanks to Mikael for the button thing. Best Samir