def _intersects(self, context, coord, event):
t = time.time()
c0 = self._position_3d_from_coord(context, coord)
c1 = self._position_3d_from_coord(context, (coord[0], event.mouse_region_y))
c2 = self._position_3d_from_coord(context, (event.mouse_region_x, event.mouse_region_y))
c3 = self._position_3d_from_coord(context, (event.mouse_region_x, coord[1]))
poly = ShapelyPolygon([c0, c1, c2, c3])
prepared_poly = shapely.prepared.prep(poly)
count, gids = self.tree.intersects(poly)
if event.ctrl:
selection = [i for i in gids if prepared_poly.contains(self.geoms[i])]
else:
selection = [i for i in gids if prepared_poly.intersects(self.geoms[i])]
print("Selectable._intersects() :%.2f seconds" % (time.time() - t))
if event.shift:
self._unselect(selection)
else:
self._select(selection)
self._draw(context)
评论列表
文章目录