DescLevel, DescID, part 1502

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

On 03/03/2009 at 02:13, xxxxxxxx wrote:

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

---------
Hi 🙂

I am sorry, but whyever, my head don't want to understand how to work with this stuff seriously.

I rewrite the part where to get/set values of BaseList2D objects. For example: To get a segments count of a sphere you can just call

Sphere[1111] => Returns "24" on standard

To return the first userdata element you can call
Sphere[USERDATA_ID, 1]

That looks nice and is easy to understand, but I have a problem to understand how to get a level down in an element ( depends on the element type, yes).

For example, to get the x element of a vector I guess I have to check a new Level. How would you access this. Please note, you don't know the type of it.

I thought I could do this
Cube[1100, 1000] = > 1100 is the vector of the cube size and 1000 is the X element of it. Yes, I could just call Cube[1000] to return the whole vector but maybe just return the X component would be cool too.

How would you access this type in C++?

Thanks

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

On 03/03/2009 at 02:26, xxxxxxxx wrote:

How do you set/get your parameter, with Get/SetParameter()?
If so why don't you use GeData::GetType() to retrieve the type?

This is an example how to access a subchannel of the vector type:

> \> DescID(DescLevel(ID_BASEOBJECT_POSITION,DTYPE_VECTOR,0),DescLevel(VECTOR_X,DTYPE_REAL,0)) \>

cheers,
Matthias

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

On 03/03/2009 at 02:42, xxxxxxxx wrote:

Yes, I can use GeData::GetType() when I already got the element, but I don't mean the type of GeData. In your code you use the types: DTYPE_REAL and DTYPE_VECTOR

That means the user has to call this:

> \> Cube[ (ID_BASEOBJECT_POSITION,DTYPE_VECTOR, 0) (VECTOR_X,DTYPE_REAL,0) ] \>

This is just the python way. I would pass these ids to the DescID. In this case I have to pass the type. Could it be possible just to pass:

> \> ID_BASEOBJECT_POSITION and VECTOR_X without the types? \>

For example:

> \> Cube[ (ID_BASEOBJECT_POSITION) (VECTOR_X) ] \>

which would be much cooler.

Bye.

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

On 03/03/2009 at 03:06, xxxxxxxx wrote:

Ah, ok, now I got it. I have to do a bit research on my own. I guess it must be possible somehow as COFFEE is doing basically the same.

cheers,
Matthias

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

On 04/03/2009 at 03:16, xxxxxxxx wrote:

It seems that you have to get first the typ of each description level.

For instance to change a cube's X length you would do something like this in Python I guess:

> \> Cube[ (PRIM_CUBE_LEN) (VECTOR_X) ] \>

In C++ you have to do something like this:

- get the type of the first level

> \> cube->GetParameter((DescLevel(PRIM_CUBE_LEN), d, 0) \>

- get the type of the second level

> \> cube->GetParameter(DescID(DescLevel(PRIM_CUBE_LEN,DTYPE_VECTOR,0),DescLevel(VECTOR_X)), d, 0) \>

- now you all the necessary types to do something with the parameters

I still have to wait for a final answer of the developers but I think this is how it's done.

cheers,
Matthias

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

On 04/03/2009 at 05:44, xxxxxxxx wrote:

yeap, i guess thats it. works fine 🙂 thx...