【Open-AutoGLM报价单生成实战指南】:手把手教你高效构建智能报价系统
2025/12/21 15:55:44
1、说明
本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客
2、知识点纪要
本段代码主要涉及的有①几何模型的变形vtkWarpTo
import vtkmodules.vtkRenderingOpenGL2 import vtkmodules.vtkInteractionStyle from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkFiltersCore import vtkTubeFilter from vtkmodules.vtkFiltersSources import vtkLineSource from vtkmodules.vtkFiltersGeneral import vtkWarpTo from vtkmodules.vtkRenderingCore import ( vtkActor, vtkDataSetMapper, vtkRenderWindow, vtkRenderWindowInteractor, vtkRenderer ) def main(): colors = vtkNamedColors() lineSource = vtkLineSource() lineSource.SetPoint1(0, 0, 0) lineSource.SetPoint2(0, 1, 0) lineSource.SetResolution(20) lineSource.Update() tubeFilter = vtkTubeFilter() tubeFilter.SetInputConnection(lineSource.GetOutputPort()) tubeFilter.SetRadius(0.01) # 设置生成的圆柱体/管子的横截面半径是0.01个单位长度 tubeFilter.SetNumberOfSides(50) tubeFilter.Update() """ vtkWarpTo 是vtk中一个几何变换的过滤器 它可以把输入的点云或模型**“拉向”一个指定的点或方向**,相当于对整个几何体做收缩、伸展或弯曲形变 它可以模拟一种“磁性吸引”或“拉伸到目标点”的效果 主要有两种模式: ①它可以模拟一种“磁性吸引”或“拉伸到目标点”的效果 ②沿着指定方向移动(DirectionMode) """ warpTo = vtkWarpTo() warpTo.SetInputConnection(tubeFilter.GetOutputPort()) warpTo.SetPosition(10, 1, 0) # 指定“目标点”的坐标(即你要拉向的点) warpTo.SetScaleFactor(5) # 设置形变强度,值越大,拉得越“狠” warpTo.AbsoluteOn() # 位移相对于数据集的原点进行,所有的点都会向同一个方向偏移 #warpTo.AbsoluteOff() # 位移相对于该点的当前位置进行计算,会导致每个点偏移到不同的方向 mapper = vtkDataSetMapper() mapper.SetInputConnection(warpTo.GetOutputPort()) mapper.ScalarVisibilityOff() actor = vtkActor() actor.SetMapper(mapper) actor.GetProperty().SetColor(colors.GetColor3d('Gold')) renderer = vtkRenderer() renderWindow = vtkRenderWindow() renderWindow.AddRenderer(renderer) renderWindowInteractor = vtkRenderWindowInteractor() renderWindowInteractor.SetRenderWindow(renderWindow) renderer.SetBackground(colors.GetColor3d('Green')) renderer.AddActor(actor) renderWindow.SetWindowName('WarpTo') renderWindow.Render() renderWindowInteractor.Initialize() renderWindowInteractor.Start() if __name__ == '__main__': main()