Hello, I am a python novice, trying to find a way to move the axis of hundreds objects to the origin. I found a great script by Arttu Rautio https://aturtur.com/ar_scripts-for-cinema-4d/, specifically this one https://github.com/aturtur/cinema4d-scripts/blob/master/AR_Scripts_1.0.15/AR_AxisToCenter.py which will move the axis on many objects to their center and am wondering if it's possible to modify this to move the axis to the origin instead.
This fuction appears to be doing the axis shifting in that script.
def CenterAxis(obj): # Center object's axis
doc = c4d.documents.GetActiveDocument() # Get active Cinema 4D document
points = [] # Initialize empty list
pointCount = obj.GetPointCount() # Get object's point count
for i in range(0, pointCount): # Loop through points
points.append(obj.GetPoint(i)) # Add point to points list
matrix = obj.GetMg() # Get object's global matrix
center = obj.GetMp() # Get Object's bounding box center in local space
axis = obj.GetAbsPos() # Get object's absolute position
difference = axis - (axis + center) # Calculate difference
if difference != c4d.Vector(0): # If there is a difference
for i in range(pointCount): # Loop through object's points
obj.SetPoint(i, points[i] + difference) # Set new point position
obj.Message(c4d.MSG_UPDATE) # Send update message
obj.SetMg(c4d.Matrix((matrix * center),
matrix.v1, matrix.v2, matrix.v3)) # Set new matrix for the object
I'm wondering if it's as simple as setting the center matrix to a fixed point (0,0,0) but I'm not sure how to format those coordinates as a matrix. (or if it's even this small a change or would need a larger re-write)
I've also tried using the script log while performing the action manually but the cooridinate manager does not produce log entries that I can see unfortunately.
Does anyone have any insight on how this might be achieved?
Thanks