Modify Axis

On 30/12/2016 at 20:56, xxxxxxxx wrote:

Hello there,

How I can modify the Y Axis to -100% using python as shown in the screenshot below:

Thanks

On 31/12/2016 at 11:59, xxxxxxxx wrote:

Hi,

I found the solution below :

import c4d  
  
def main() :      
  world_pos  = op.GetMg().off  
  bBox_pos  = op.GetMp()  
  bBox_size = op.GetRad()  
  local_bottom = c4d.Vector(0,bBox_pos.y - bBox_size.y,0)  
  world_bottom = local_bottom + world_pos  
  
  yPos = c4d.Vector(0,world_bottom.y,0)  
  
  oldm = op.GetMg()  
  points = op.GetAllPoints()  
  pcount = op.GetPointCount()  
    
  op.SetAbsPos(yPos)  
  
  newm = op.GetMg()  
  for p in xrange(pcount) :  
      op.SetPoint(p,~newm*oldm*points[p])      
      op.Message(c4d.MSG_UPDATE)  
  
  c4d.EventAdd()  
  
if __name__=='__main__':  
  main()

On 01/01/2017 at 08:23, xxxxxxxx wrote:

Take care of this and using child objects ! Since you modify the original axis and since children use relative position this will affect the position of their.
A good way is to store gobal position/scale/rotation (or simply get the global matrix of it) change the axis and then reasign those data

On 02/01/2017 at 03:12, xxxxxxxx wrote:

Hi,

You can find a nice solution inside this post.

On 02/01/2017 at 11:23, xxxxxxxx wrote:

Hi,

At the outset I wanted to find a solution to dropping an object to a floor, so I wanted to modify the y axis and put it at the bottom of my object then I set the y position to zero.

But I find a new solution and it works with all type of object.

script :

import c4d  
  
def main() :  
  if not op:  
      return  
  world_pos  = op.GetMg().off  
  bBox_pos  = op.GetMp()  
  bBox_size = op.GetRad()  
  local_bottom = c4d.Vector(0,bBox_pos.y - bBox_size.y,0)  
  world_bottom = local_bottom + world_pos  
  
  op[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_Y] += -world_bottom.y  
  c4d.EventAdd()  
if __name__=='__main__':  
  main()

I don't know if can do that differently, and thank you guys for your replies.

On 07/08/2017 at 01:52, xxxxxxxx wrote:

Thank you for for the nice code example! But it works incorrectly with scaled objects.