calculation - handle move on line [SOLVED]

On 06/07/2015 at 10:25, xxxxxxxx wrote:


I like to use handle in my own object and but i struggle in the calculation. the source for the handle is a position offset from the center - now by moving the handle i like to change the position within the direction.

I found thin in the examples but don`t get the right way how transform this into my vector.

mg = op.GetUpMg()*undo.GetMl()
pos = bd.ProjectPointOnLine(info.position*mg, info.direction^mg, mouse_pos.x, mouse_pos.y)
val = (pos[0]*~mg)*info.direction


On 09/07/2015 at 06:49, xxxxxxxx wrote:

Hi Michael,

sorry, it took so long to get to your thread.
I think, by far the nicest example is the Py-RoundedTube example. But you probably already know that.

Unfortunately I don't understand your problem. And as you only post code from the Py-SpherifyModifier example, it's a bit difficult to help. Can you please post either some code or perhaps an image of what you are trying to achieve?

On 09/07/2015 at 10:52, xxxxxxxx wrote:

Hey Andreas,

it`s hard for me to describe. but i will try it.

I like to generate a Handle that give control over a position (offset from the center of the Object)

i struggle in the calculation - to the correct position by moving the handle.

A) move the handle free in 3d space and generate a ne position 
b) move the handle in to extend the given direction - but this can be more than on axis -

Hope you can get my problem

On 10/07/2015 at 07:45, xxxxxxxx wrote:

Hi Michael,

I'm still not sure, I understood your request completely. In the following I assume, you are familiar with the Py-RoundedTube example and its code.
I'll describe the steps to add a free handle to this example, which delivers a Vector offset from object center.
For A) :
In function GetHandle() :
- for the new handle set info.type to c4d.HANDLECONSTRAINTTYPE_FREE
- for info.postion simply set your offset value (most likely from your offset description)
- info.direction can be set to c4d.Vector(0.0, 0.0, 0.0), it's not needed

In function SetHandle() :
Here you get the new position on handle movements. Simply store the given new position p in your object description.

In Draw() :
Actually nothing to do, assuming you want your handle drawn as a simple dot.

And that's already it.

Now, for b) : This one I still don't understand. Do you describe a second handle here? Or is it another mode for the first handle (not sure how one would achieve this)? And maybe it's a translation issue, but "move the handle in to extend direction"... I have no idea, what you mean. Sorry. I think, a screenshot with a few quick brushstrokes, showing who you want to move where, could help me. If you have problems adding such to a forum post, you could still mail it to sdk_support.

On 26/08/2015 at 09:30, xxxxxxxx wrote:

Have you been able to solve your problem?

On 26/08/2015 at 13:14, xxxxxxxx wrote:

yes thanks