<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"MS Mincho";
        panose-1:2 2 6 9 4 2 5 8 3 4;}
@font-face
        {font-family:"MS Mincho";
        panose-1:2 2 6 9 4 2 5 8 3 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@MS Mincho";
        panose-1:2 2 6 9 4 2 5 8 3 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>Hi all,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I’ve recently updated my VTK from 5.4 to 5.10.1, and some old vtkCellPicker code isn’t doing what I want anymore. This ‘simple’ example works fine in 5.4 (both the blue and red actor highlight when you mouse-over them), but in 5.10.1 only the blue (quad) actor works. The only difference between the two actors (aside from coordinates and colors) is the cellType of vtk.VTK_POLY_LINE vs vtk.VTK_QUAD.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I’ve tried looking for changes in the pick routine, but vtkCellPicker.cxx has undergone substantial changes and I was unable to locate the cause. Any suggestions for getting the picker to pick the polyline?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks in advance,<o:p></o:p></p><p class=MsoNormal>Dave<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>import wx<o:p></o:p></p><p class=MsoNormal>import vtk<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>from vtk.wx.wxVTKRenderWindowInteractor import wxVTKRenderWindowInteractor<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>class myVTKInteractor(wxVTKRenderWindowInteractor):<o:p></o:p></p><p class=MsoNormal> def __init__(self, parent):<o:p></o:p></p><p class=MsoNormal> wxVTKRenderWindowInteractor.__init__(self, parent, -1)<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> self.Enable(1)<o:p></o:p></p><p class=MsoNormal> self.AddObserver("ExitEvent", lambda o,e,f=self: f.Close())<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> self.ren = vtk.vtkRenderer()<o:p></o:p></p><p class=MsoNormal> self.GetRenderWindow().AddRenderer(self.ren)<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> # simple point coords used by both actors<o:p></o:p></p><p class=MsoNormal> coords = [(0.0, 0.0),<o:p></o:p></p><p class=MsoNormal> (1.0, 0.0),<o:p></o:p></p><p class=MsoNormal> (1.0, 1.0),<o:p></o:p></p><p class=MsoNormal> (0.0, 1.0)]<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> self.actorData = [(1.0, vtk.VTK_POLY_LINE, (0.5,0.0,0.0), (1.0, 0.0, 0.0)),<o:p></o:p></p><p class=MsoNormal> (0.0, vtk.VTK_QUAD, (0.0, 0.0, 0.5), (0.0, 0.0, 1.0))]<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> self.actorList = []<o:p></o:p></p><p class=MsoNormal> for data in self.actorData:<o:p></o:p></p><p class=MsoNormal> (zValue, cellType, dimColor, brightColor) = data<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> points = vtk.vtkPoints()<o:p></o:p></p><p class=MsoNormal> for (pointIndex, coord) in enumerate(coords):<o:p></o:p></p><p class=MsoNormal> points.InsertPoint(pointIndex, coord[0], coord[1], zValue)<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> idList = vtk.vtkIdList()<o:p></o:p></p><p class=MsoNormal> idList.SetNumberOfIds(len(coords))<o:p></o:p></p><p class=MsoNormal> for pointIndex in range(len(coords)):<o:p></o:p></p><p class=MsoNormal> idList.SetId(pointIndex, pointIndex)<o:p></o:p></p><p class=MsoNormal> cells = vtk.vtkCellArray()<o:p></o:p></p><p class=MsoNormal> cells.InsertNextCell(idList)<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> grid = vtk.vtkUnstructuredGrid()<o:p></o:p></p><p class=MsoNormal> grid.SetPoints(points)<o:p></o:p></p><p class=MsoNormal> grid.SetCells(cellType, cells)<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> mapper = vtk.vtkDataSetMapper()<o:p></o:p></p><p class=MsoNormal> mapper.SetInput(grid)<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> actor = vtk.vtkActor()<o:p></o:p></p><p class=MsoNormal> actor.SetMapper(mapper)<o:p></o:p></p><p class=MsoNormal> actor.GetProperty().SetRepresentation(1)<o:p></o:p></p><p class=MsoNormal> actor.GetProperty().SetLineWidth(5.0)<o:p></o:p></p><p class=MsoNormal> actor.GetProperty().SetDiffuseColor(*dimColor)<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> self.ren.AddActor(actor)<o:p></o:p></p><p class=MsoNormal> self.actorList.append(actor)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> self.cellPicker = vtk.vtkCellPicker()<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> def OnMotion(self, event):<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> # invert Y value<o:p></o:p></p><p class=MsoNormal> actualY = self.ren.GetSize()[1] - event.GetY()<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> # dim all actors<o:p></o:p></p><p class=MsoNormal> for (index, actor) in enumerate(self.actorList):<o:p></o:p></p><p class=MsoNormal> (zValue, cellType, dimColor, brightColor) = self.actorData[index]<o:p></o:p></p><p class=MsoNormal> actor.GetProperty().SetDiffuseColor(*dimColor)<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> self.cellPicker.Pick(event.GetX(), actualY, 0, self.ren)<o:p></o:p></p><p class=MsoNormal> dataSet = self.cellPicker.GetDataSet()<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> if dataSet is not None:<o:p></o:p></p><p class=MsoNormal> # highlight picked actor<o:p></o:p></p><p class=MsoNormal> for (index, actor) in enumerate(self.actorList):<o:p></o:p></p><p class=MsoNormal> if actor.GetMapper().GetInput() == dataSet:<o:p></o:p></p><p class=MsoNormal> (zOffset, cellType, dimColor, brightColor) = self.actorData[index]<o:p></o:p></p><p class=MsoNormal> actor.GetProperty().SetDiffuseColor(*brightColor)<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> self.Render()<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>def wxVTKRenderWindowInteractorExample():<o:p></o:p></p><p class=MsoNormal> app = wx.PySimpleApp()<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> frame = wx.Frame(None, -1, "wxVTKRenderWindowInteractor", size=(400,400))<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> widget = myVTKInteractor(frame)<o:p></o:p></p><p class=MsoNormal> sizer = wx.BoxSizer(wx.VERTICAL)<o:p></o:p></p><p class=MsoNormal> sizer.Add(widget, 1, wx.EXPAND)<o:p></o:p></p><p class=MsoNormal> frame.SetSizer(sizer)<o:p></o:p></p><p class=MsoNormal> frame.Layout()<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> frame.Show()<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> app.MainLoop()<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>if __name__ == "__main__":<o:p></o:p></p><p class=MsoNormal> wxVTKRenderWindowInteractorExample()<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>--<o:p></o:p></p><p class=MsoNormal>David A. Van Ee, BASc, EIT<o:p></o:p></p><p class=MsoNormal>Convergent Manufacturing Technologies Inc.<o:p></o:p></p><p class=MsoNormal>6190 Agronomy Rd, Suite 403<o:p></o:p></p><p class=MsoNormal>Vancouver BC Canada V6T 1Z3<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Email: <a href="mailto:david.vanee@convergent.ca"><span style='color:blue'>david.vanee@convergent.ca</span></a> | Tel: 604-822-9682 x103<o:p></o:p></p><p class=MsoNormal>WWW: <a href="http://www.convergent.ca/"><span style='color:blue'>http://www.convergent.ca</span></a> | Fax: 604-822-9659 <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>CONFIDENTIALITY NOTICE<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>This e-mail contains privileged and confidential information which is the property of Convergent, intended only for the use of the intended recipient(s).<o:p></o:p></p><p class=MsoNormal>Unauthorized use or disclosure of this information is prohibited. If you are not an intended recipient, please immediately notify Convergent and destroy any copies of this email. Receipt of this e-mail shall not be deemed a waiver by Convergent of any privilege or the confidential nature of the information. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>