vtk类之vtkOutlineSource:创建边界盒状或者带弧度角度的poly data
vtkOutlineSource 创建一个线框的形状盒子。通过SetBounds()方法可以设置边界盒的长高宽。通过SetCorners()方法可以设置边角的弧度形状。
例子:
#-*- coding: UTF-8 -*- #------------------------------------------------------------------------------- # Name: outlineActorFactory package # Purpose: 通过两个点,创建一条直线 # # Author: ankier # # Created: 08-12-2012 # Copyright: (c) ankier 2012 # Licence: <your licence> #------------------------------------------------------------------------------- from ActorFactory import ActorFactory from vtk import * ## @brief 直线的actor factory class OutlineActorFactory(ActorFactory): def __init__(self): ActorFactory.__init__(self) self.__OutlineSource = vtkOutlineSource() def __del__(self): del self.__OutlineSource ## @brief 更新线的poly data def __UpdateData(self): self.__OutlineSource.SetBounds(-20, 20, -32.5, 32.5, -50, 50) # self.__OutlineSource.SetBoxTypeToOriented() #设置box 的 起点为原点。旋转box 的时候,绕原点旋转。 # self.__OutlineSource.GenerateFacesOn() #设置生产面 # self.__OutlineSource.SetCorners ([2, 6, 7, 8, 9, 10, 15, 20,2, 6, 7, 8, 9, 10, 15, 20,2, 6, 7, 8, 9, 10, 15, 20]) # ## @brief 重写基类方法 # see ActorFactory._MakeActors def _MakeActors(self): self.__UpdateData() polyDataMapper = vtkPolyDataMapper() polyDataMapper.SetInputConnection(self.__OutlineSource.GetOutputPort()) actor = self._NewActor() actor.SetMapper(polyDataMapper) actor.GetProperty().SetColor((1, 0, 0.3)) del polyDataMapper return [actor]
运行结果:
使用方法 GenerateFacesOn()方法,可以开启生产面
效果:
使用方法 SetBoxTypeToOriented()和SetCorners() 可以设置弧度。