[vtkusers] Polydata cell connectivity list
David.Pont at ForestResearch.co.nz
David.Pont at ForestResearch.co.nz
Mon Feb 7 15:51:11 EST 2005
Wesley Brooks <wesbrooks at gmail.com> wrote on 08/02/2005 04:53:25:
> David,
>
> Thanks for your help. The program doesn't stall any more it just
> doesn't find any cells which share points with each other...
>
> This is the code as it stands now:
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> def SupportCheck(self):
>
> print self.polydata
>
> self.polydata.BuildLinks(0)
I am only familiar with BuildLinks(), what does the 0 parameter signify?
>
> self.polydata.Update()
Try calling Update before BuildLinks, this may be the source of the
problems, causing BuildLinks to have nothing to 'link' ?
>
> print self.polydata
>
> for cellid in self.nobad:
>
> supcell = self.polydata.GetCell(cellid)
>
> pntid1 = supcell.GetPointId(0)
> pntid2 = supcell.GetPointId(1)
>
> coord1 = self.polydata.GetPoint(pntid1)
> coord2 = self.polydata.GetPoint(pntid2)
>
> if coord1[2] == coord2[2]:
> flag1 = self.SelectPoint(coord1[2], pntid1, cellid)
> flag2 = self.SelectPoint(coord2[2], pntid2, cellid)
>
> if coord1[2] > coord2[2]:
> flag = self.SelectPoint(coord2, pntid2, cellid)
>
> if coord1[2] < coord2[2]:
> flag = self.SelectPoint(coord1, pntid1, cellid)
>
> return self.supportlist
>
>
> def SelectPoint(self, z, pntid, cellid):
>
> cells = vtk.vtkIdList()
>
> ncells = 0
>
> self.polydata.GetPointCells(pntid, cells)
>
> numofcells = cells.GetNumberOfIds()
>
> for linkedcell in range(numofcells):
>
> idcell = cells.GetId(linkedcell)
>
> if idcell != self.nobad:
>
> chkcell = self.polydata.GetCell(idcell)
>
> chkpntid1 = chkcell.GetPointId(0)
>
> if chkpntid1 != pntid:
> flag = self.CheckPnt(chkpntid1, z)
>
> elif chkpntid1 == pntid:
> chkpntid2 = chkcell.GetPointId(1)
> flag = self.CheckPnt(chkpntid2, z)
>
> if flag == 1:
> if pntid not in self.supportlist:
> self.supportlist.append(pntid)
>
> def CheckPnt(self, pntid, z):
>
> flag = 1
>
> chkcoord = self.polydata.GetPoint(pntid)
>
> if chkcoord[2] < z:
> flag = 0
>
> return flag
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> I think my problem is something to do with the BuildLinks(0) call.
>
> Briefly the code is supposed to save the ids of points of cells (each
> cell is a line) which are in the list self.nobad and are connected to
> no cells which have a point lower than it's lowest point.
>
> However there's not much reason for you to look past the numofcells =
> line as this is always seems to equal 1 now which it should not. The
> polydata file is fine, I can view it before this opperation.
>
> I've also viewed the polydata before and after the BuildLinks() and
> seen no difference between them.
>
> Thanks again for your help.
>
> Wesley.
More information about the vtkusers
mailing list