<div dir="ltr">I noticed a mistake in my code as soon as I pressed "Send".  Let me try again:<div><br></div><div><div style="font-size:12.8px">The typical solution is to save the transform.  Make it into a member of your class.  It's convenient to have the transform filter as a member, too.</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">def __init__(self):</div><div style="font-size:12.8px">        self.MeshTransform = vtk.vtkTransform()<br></div><div style="font-size:12.8px">        self.MeshTransformFilter = vtk.<wbr>vtkTransformPolyDataFilter()</div><div style="font-size:12.8px">        self.MeshTransformFilter.<wbr>SetInput( < insert original, untransformed data here> )</div><div style="font-size:12.8px">        self.MeshTransformFilter.<wbr>SetTransform(self.<wbr>MeshTransform)</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"><span class="gmail-im">def Rotate(self, alpha, beta, gamma):</span><div>        self.MeshTransform.RotateX(<wbr>alpha)</div><div>        self.MeshTransform.RotateY(<wbr>beta)</div><div>        self.MeshTransform.RotateZ(<wbr>gamma)</div><div>        self.MeshTransformFilter.<wbr>Update();</div><div>        self.MeshData.ShallowCopy(<wbr>self.MeshTransformFilter.<wbr>GetOutput())</div></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">The idea here is to keep a copy of your original, unmodified data to use as input to vtkTransformPolyData, though depending on what other kinds of editing you are doing, this might be tricky.</div></div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px"> - David</div><div style="font-size:12.8px"><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Aug 18, 2017 at 3:50 PM, David Gobbi <span dir="ltr"><<a href="mailto:david.gobbi@gmail.com" target="_blank">david.gobbi@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Eric,<div><br></div><div>The typical solution is to save the transform.  Make it into a member of your class.  It's convenient to have the transform filter as a member, too.</div><div><br></div><div>def __init__(self):</div><div>        self.MeshTransform = vtk.vtkTransform()<br></div><div>        self.MeshTransformFilter = vtk.<wbr>vtkTransformPolyDataFilter()</div><div>        self.MeshTransformFilter.<wbr>SetInput( < insert original, untransformed data here> )</div><div>        self.MeshTransformFilter.<wbr>SetTransform(self.<wbr>MeshTransform)</div><div><br></div><div><span class=""><div>def Rotate(self, alpha, beta, gamma):</div></span><div>        self.MeshTransform.RotateX(<wbr>alpha)</div><div>        self.MeshTransform.RotateY(<wbr>beta)</div><div>        self.MeshTransform.RotateZ(<wbr>gamma)</div><div>        self.MeshTransformFilter.<wbr>Update();</div><div>        tf.SetInputData(self.MeshData)</div><div>        self.MeshData.ShallowCopy(<wbr>self.MeshTransformFilter.<wbr>GetOutput())</div></div><div><br></div><div>The idea here is to keep a copy of your original, unmodified data to use as input to vtkTransformPolyData, though depending on what other kinds of editing you are doing, this might be tricky.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div> - David</div></font></span><div><div class="h5"><div><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Aug 18, 2017 at 2:50 PM, Eric Petersen <span dir="ltr"><<a href="mailto:peer9802@gmail.com" target="_blank">peer9802@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Thanks David,<div><br></div><div>I've got a class setup for reading/writing STL files along with basic manipulation.  My rotation code is below and called successive times.  I guess the question is does VTK "remember" past transformations on a vtkPolyData object()?  If so, what's the best way of accessing them?<br><div><br></div><div><div>def Rotate(self, alpha, beta, gamma):</div><div>        t = vtk.vtkTransform()</div><div>        t.RotateX(alpha)</div><div>        t.RotateY(beta)</div><div>        t.RotateZ(gamma)</div><div>        tf = vtk.vtkTransformPolyDataFilter<wbr>()</div><div>        tf.SetInputData(self.MeshData)</div><div>        tf.SetTransform(t)</div><div>        tf.Update()</div><div>        self.MeshData.ShallowCopy(tf.G<wbr>etOutput())</div></div></div></div><div class="m_6877768687127412485gmail-HOEnZb"><div class="m_6877768687127412485gmail-h5"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Aug 18, 2017 at 8:33 AM, David E DeMarle <span dir="ltr"><<a href="mailto:dave.demarle@kitware.com" target="_blank">dave.demarle@kitware.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div><div><div>Howdy Eric,</div><div><br></div><div>How are you doing the transform?<br></div>* vtkTransformFIlter?<br></div>* vtkActor::Transform?<br></div>* manually changing the points in the vtkPolyData object?<br><br></div>For either of the first two you can get the current matrix (and its inverse) from the transform object.<br><br></div>hope that helps<br><div><br></div></div><div class="gmail_extra"><br clear="all"><div><div class="m_6877768687127412485gmail-m_5596518085786338169m_-3879586620590395064gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>David E DeMarle<br>Kitware, Inc.<br>Principal Engineer<br>21 Corporate Drive<br>Clifton Park, NY 12065-8662<br>Phone: <a href="tel:(518)%20881-4909" value="+15188814909" target="_blank">518-881-4909</a></div></div></div></div></div></div>
<br><div class="gmail_quote"><span>On Fri, Aug 18, 2017 at 8:11 AM, Eric Petersen <span dir="ltr"><<a href="mailto:peer9802@gmail.com" target="_blank">peer9802@gmail.com</a>></span> wrote:<br></span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span><div dir="ltr">Hello,<div><br></div><div>I currently have a Python script where I am successively translating, and rotating, a vtkPolyData object.  The script currently does not track individual transforms but I would like to know the current 4x4 transform matrix.  Is there any way to directly obtain this information from the vtkPolyData object or am I stuck rewriting the script to track individual transformations?</div></div>
</span></blockquote></div></div></blockquote></div></div></div></div><br></blockquote></div><br></div></div></div></div></div>
</blockquote></div><br></div>