一:主要的知识点
1、说明
本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客
2、知识点纪要
本段代码主要涉及的有①字体展示
二:代码及注释
import vtkmodules.vtkRenderingOpenGL2 import vtkmodules.vtkInteractionStyle from collections import Counter import re from vtkmodules.vtkRenderingCore import vtkActor, vtkPolyDataMapper, vtkRenderWindow, vtkRenderWindowInteractor, \ vtkRenderer from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkRenderingFreeType import vtkVectorText from vtkmodules.vtkFiltersModeling import vtkLinearExtrusionFilter def main(): colors = vtkNamedColors() fileName = "Data/Gettysburg.txt" with open(fileName) as f: freq = Counter() for x in f: remove_digits = re.sub('[\d_]', '', x.strip().lower()) freq += Counter(re.findall('\w', remove_digits, re.UNICODE)) maxFreq = max(list(freq.values())) kes = list('ABCDEFGHIJKLMNOPQRSTUVWXYZ'.lower()) ren = vtkRenderer() renWin = vtkRenderWindow() renWin.AddRenderer(ren) iren = vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) letters = list() extrude = list() mappers = list() actors = list() for i, k in enumerate(kes): letters.append(vtkVectorText()) letters[i].SetText(k.upper()) extrude.append(vtkLinearExtrusionFilter()) extrude[i].SetInputConnection(letters[i].GetOutputPort()) extrude[i].SetExtrusionTypeToVectorExtrusion() extrude[i].SetVector(0, 0, 1) extrude[i].SetScaleFactor(float(freq[k]) / maxFreq * 2.50) mappers.append(vtkPolyDataMapper()) mappers[i].SetInputConnection(extrude[i].GetOutputPort()) mappers[i].ScalarVisibilityOff() actors.append(vtkActor()) actors[i].SetMapper(mappers[i]) actors[i].GetProperty().SetColor(colors.GetColor3d('Peacock')) if freq[k] <= 0: actors[i].VisibilityOff() ren.AddActor(actors[i]) y = 0.0 for j in range(0, 2): x = 0.0 for i in range(0, 13): actors[j * 13 + i].SetPosition(x, y, 0.0) x += 1.5 y += -3.0 ren.ResetCamera() ren.SetBackground(colors.GetColor3d('Silver')) ren.GetActiveCamera().Elevation(30.0) ren.GetActiveCamera().Azimuth(-30.0) ren.GetActiveCamera().Dolly(1.25) ren.ResetCameraClippingRange() renWin.SetSize(640, 480) renWin.SetWindowName('AlphaFrequency') # Interact with the data. iren.Start() if __name__ == '__main__': main()