Creating a Vector attribute in GetDDescription()
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 07/06/2011 at 08:42, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 9.0+
Platform: Windows ; Mac ; Mac OSX ;
Language(s) : C++ ;---------
Howdy,My tag has Add and Delete buttons, so I need to create vector attributes in GetDDescription() according to how many the user has added.
My code looks like this:
BaseContainer subgroup2 = GetCustomDataTypeDefault(DTYPE_GROUP); subgroup2.SetLong(DESC_COLUMNS, 1); if(!description->SetParameter(DescLevel(OFFSET_GROUP+i, DTYPE_GROUP, 0), subgroup2, DescLevel(ID_TARGET_GROUP))) return TRUE; BaseContainer bc4 = GetCustomDataTypeDefault(DTYPE_VECTOR); bc4.SetLong(DESC_CUSTOMGUI,CUSTOMGUI_VECTOR); bc4.SetString(DESC_NAME, GeLoadString(IDS_OFFSET)+"."+LongToString(i)); bc4.SetLong(DESC_UNIT, DESC_UNIT_DEGREE); bc4.SetReal(DESC_STEP,Rad(1.0)); if (!description->SetParameter(DescLevel(OFFSET+i, DTYPE_VECTOR, 0), bc4, DescLevel(OFFSET_GROUP+i))) return TRUE;
This is within a loop and it does create the vector attributes needed with each click of the Add button, but the up/down arrows of each value field aren't working. I can change the values by typing them in, but I can't use the up/down arrows to change the values.
Is there something missing in the above code thats causing the up/down arrows to not work?
Adios,
Cactus Dan -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 08/06/2011 at 08:29, xxxxxxxx wrote:
Looks like the step setting has to be set separatly for each sub-channel of the vector. I will try to put a working example together, having some problems to get it to work properly too.
cheers,
Matthias -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 08/06/2011 at 10:42, xxxxxxxx wrote:
Howdy,
Thanks for looking into it, Matthias.
Adios,
Cactus Dan -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/06/2011 at 02:42, xxxxxxxx wrote:
The solution is to use SetVector instead of SetReal to set the step size and minimum/maximum values.
Example:
Bool LookAtCamera::GetDDescription(GeListNode *node, Description *description, DESCFLAGS_DESC &flags) { if (!description->LoadDescription(1001165)) return FALSE; const DescID *singleid = description->GetSingleDescID(); LONG MY_VECTOR = 6000; DescID cid = DescLevel(MY_VECTOR, DTYPE_VECTOR, 0); if (!singleid || cid.IsPartOf(*singleid, NULL)) // important to check for speedup c4d! { BaseContainer v = GetCustomDataTypeDefault(DTYPE_VECTOR); v.SetLong(DESC_CUSTOMGUI, CUSTOMGUI_VECTOR); v.SetString(DESC_NAME, "My Vector"); // use SetVector, not SetReal v.SetVector(DESC_MIN, Vector(0.0)); v.SetVector(DESC_MAX, Rad(360.0)); v.SetVector(DESC_STEP, Rad(1.0)); v.SetLong(DESC_UNIT, DESC_UNIT_DEGREE); v.SetVector(DESC_DEFAULT, Vector(0.0)); if (!description->SetParameter(cid, v, DescLevel(ID_TAGPROPERTIES))) return TRUE; } flags |= DESCFLAGS_DESC_LOADED; return TRUE; }
cheers,
Matthias -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/06/2011 at 13:19, xxxxxxxx wrote:
Howdy,
Thanks, Matthias.
Adios,
Cactus Dan -
On 30/05/2016 at 22:29, xxxxxxxx wrote:
Thanks!