2017-03-22 3 views
0

J'ai un ensemble de tubes représentant des trous de forage dans un fichier vtp (écrit par vtkXMLPolyDataWriter). Maintenant, pour plus de clarté, je voudrais ajouter des étiquettes de texte pour identifier les trous de forage lors de leur affichage en paraview.Comment écrire un vtkTextActor3D dans un fichier?

Mon idée était de créer des étiquettes avec vtkTextActor3D, pour convertir ces acteurs en polydata, puis de sortir ces étiquettes, divisées en polygones, en un fichier vtp avec le polydatawriter.

Comment est-ce que je peux faire ceci? En paraview, j'ai été capable de créer une source de texte 3D et de l'enregistrer dans un fichier vtp. Cependant, je ne peux pas comprendre comment faire cela en python.

Merci!

+0

Avez-vous essayé d'utiliser la fonction Lancer trace/Stop Trace de ParaView? Je l'ai juste utilisé pour créer un script pour faire les actions que vous avez décrites qui semble fonctionner très bien. –

+0

oui, j'ai essayé la fonction de trace. Malheureusement, la méthode appelée pour exporter les données n'est pas affichée. – mululu

+0

J'ai aussi essayé le filtre Surface d'extraction en paraview, qui subdivise le texte en triangles. mais la classe vtkExtractSurface n'est pas reconnue par ma version vtk (6.2.0) en python. – mululu

Répondre

1

Je pense à faire la façon dont vous avez décrit, vous devriez réellement utiliser vtkVectorText au lieu de vtkTextActor3D, parce accroding au documentation for vtkTextActor3D, cela fonctionne comme ceci: Le texte d'entrée est rendue dans un tampon, qui à son tour est utilisé comme texture appliquée sur un quad (un vtkImageActor est utilisé sous le capot). Donc, vous n'obtenez pas de géométrie pour les caractères individuels de votre texte, à la place, vous devriez enregistrer la texture et l'afficher en paraview. Pendant ce temps, vtkVectorText devrait (je ne l'ai jamais utilisé personnellement ...) produire une géométrie réelle pour vos personnages afin que vous puissiez les enregistrer comme n'importe quelle autre polydata.

+0

Merci, ça a marché! Toujours pas très pratique, car chaque étiquette doit être positionnée en appliquant vtkTransform, mais cela fait l'affaire. 'Importation VTK text = vtk.vtkVectorText() text.SetText (' Bonjour ') écrivain = vtk.vtkXMLPolyDataWriter() writer.SetInputConnection (text.GetOutputPort()) writer.SetFileName (' text.vtp ') writer.Write()' – mululu