# How to keep the point coordinates of a polygonObject up to date in Python code

• Hello, I try to manipulate a polygon point in Python with the SetPoint() command.
So for instance I want to double the Values for X,Y en Z of point = testPnt (for instance Vector(1,1,1))
I use the values of the point to double them. (I used the '×' to indicate multiplication the '*' messes up the post)
op.SetPoint(0,c4d.Vector(testPnt.x×2,testPnt.y×2,testPnt.z×2))
If later somewhere else in my code I change these values again, say I triple them
op.SetPoint(0,c4d.Vector(testPnt.x×3,testPnt.y×3,testPnt.z×3))
and print the values I still get the unchanged values. i.e. Vector(1,1,1)
I want to get (6,6,6) at the end.

Here my testing code:

``````def main():
op = doc.GetActiveObject() #select a polygon object with Point at (1,1,1) as example
puntenLijst = op.GetAllPoints()
testPnt = puntenLijst
print 'pnt0 at start: ' ,testPnt     # check the coordinates before manipulation
*#prints: pnt0 at start: Vector(1,1,1) ok*
op.SetPoint(0,c4d.Vector(testPnt.x*2,testPnt.y*2,testPnt.z*2))
print 'pnt0 after SetPoint:' ,testPnt
*#prints: pnt0 after SetPoint: Vector(1,1,1) not ok, got to send Message(c4d.MSG_UPDATE)*
op.Message (c4d.MSG_UPDATE)
print 'pnt0 after MSG_UPDATE' ,testPnt
*#prints: pnt0 after MSG_UPDATE: Vector(1,1,1) not ok, got to do the c4d.EventAdd()*
*#prints: pnt0 after c4d.EventAdd(): Vector(1,1,1) not ok, got to do ??*
op.SetPoint(0,c4d.Vector(testPnt.x*3,testPnt.y*3,testPnt.z*3))
print testPnt
# hoping for Vector(6,6,6) but nope got Vector(1,1,1)
``````

finaly in the Structure Manager after running this code the point has coordinates (3,3,3) and not (6,6,6) the last SetPoint used the startingpoint(1,1,1) and I want to continue with the changed values i.e. (2,2,2)

• I figured out how to do it.

It's fairly simple. I just have to reassing the pointvalues after the Update

so if I insert a new

``````puntenLijst = op.GetAllPoints()
testPnt = puntenLijst
``````

the 'testPnt' has updated values.

• I figured out how to do it.

It's fairly simple. I just have to reassing the pointvalues after the Update

so if I insert a new

``````puntenLijst = op.GetAllPoints()
testPnt = puntenLijst
``````

the 'testPnt' has updated values.

• Hi @SteveJLV welcome in the plugincafe community,

I would like to point you to some rules:

As you already figured it out, you never assign a new value to the variable. In Python, everything is passed by value by default in 90% of the time.
Meaning when you do x = y will actually copy y to x, so afterward if you do x + 10 it will not affect y value.

If you have more questions, don't hesitate.
Cheers,
Maxime.