@@ -62,16 +62,17 @@ def triangulateMesh(
6262 Returns:
6363 vtkUnstructuredGrid: Triangulated mesh
6464 """
65+ vtkErrorLogger : Logger
6566 if logger is None :
66- logger = getLogger ( "Triangulate" , True )
67- # Creation of a child logger to deal with VTKErrors without polluting parent logger
68- vtkErrorLogger : Logger = getLogger ( f"{ logger .name } .vtkErrorLogger" , True )
69- vtkErrorLogger .propagate = False
67+ vtkErrorLogger = getLogger ( "Triangulate Mesh vtkError Logger" , True )
68+ else :
69+ vtkErrorLogger = logging .getLogger ( f"{ logger .name } vtkError Logger" )
70+ vtkErrorLogger .setLevel ( logging .INFO )
71+ vtkErrorLogger .addHandler ( logger .handlers [ 0 ] )
72+ vtkErrorLogger .propagate = False
7073
7174 vtkLogger .SetStderrVerbosity ( vtkLogger .VERBOSITY_ERROR )
72-
7375 vtkErrorLogger .addFilter ( RegexExceptionFilter () ) # will raise VTKError if captured VTK Error
74- vtkErrorLogger .setLevel ( logging .DEBUG )
7576
7677 with VTKCaptureLog () as capturedLog :
7778 triangulateMeshFilter : vtkDataSetTriangleFilter = vtkDataSetTriangleFilter ()
@@ -81,7 +82,8 @@ def triangulateMesh(
8182 capturedLog .seek ( 0 )
8283 captured = capturedLog .read ().decode ()
8384
84- vtkErrorLogger .debug ( captured .strip () )
85+ if captured != "" :
86+ vtkErrorLogger .error ( captured .strip () )
8587
8688 triangulatedMesh : vtkUnstructuredGrid = triangulateMeshFilter .GetOutput ()
8789
@@ -107,16 +109,17 @@ def convertUnstructuredGridToPolyData(
107109 Returns:
108110 vtkPolyData: Extracted surface
109111 """
112+ vtkErrorLogger : Logger
110113 if logger is None :
111- logger = getLogger ( "ConvertVtkUnstructuredGridToVtkPolyData." , True )
112- # Creation of a child logger to deal with VTKErrors without polluting parent logger
113- vtkErrorLogger : Logger = getLogger ( f"{ logger .name } .vtkErrorLogger" , True )
114- vtkErrorLogger .propagate = False
114+ vtkErrorLogger = getLogger ( "Convert vtkUnstructuredGrid To vtkPolyData vtkError Logger" , True )
115+ else :
116+ vtkErrorLogger = logging .getLogger ( f"{ logger .name } vtkError Logger" )
117+ vtkErrorLogger .setLevel ( logging .INFO )
118+ vtkErrorLogger .addHandler ( logger .handlers [ 0 ] )
119+ vtkErrorLogger .propagate = False
115120
116121 vtkLogger .SetStderrVerbosity ( vtkLogger .VERBOSITY_ERROR )
117-
118122 vtkErrorLogger .addFilter ( RegexExceptionFilter () ) # will raise VTKError if captured VTK Error
119- vtkErrorLogger .setLevel ( logging .DEBUG )
120123
121124 with VTKCaptureLog () as capturedLog :
122125 extractSurfaceFilter : vtkDataSetSurfaceFilter = vtkDataSetSurfaceFilter ()
@@ -131,7 +134,8 @@ def convertUnstructuredGridToPolyData(
131134 capturedLog .seek ( 0 )
132135 captured = capturedLog .read ().decode ()
133136
134- vtkErrorLogger .debug ( captured .strip () )
137+ if captured != "" :
138+ vtkErrorLogger .error ( captured .strip () )
135139
136140 extractedSurface : vtkPolyData = extractSurfaceFilter .GetOutput ()
137141
@@ -460,8 +464,8 @@ def getTangentsVectors( surface: vtkPolyData ) -> Tuple[ npt.NDArray[ np.float64
460464 try :
461465 tangents1 = vtk_to_numpy ( vtkTangents )
462466 except AttributeError as err :
463- print ( "No tangential attribute found in the mesh. Use the computeTangents function beforehand." )
464- raise VTKError ( err ) from err
467+ context : str = f "No tangential attribute found in the mesh. Use the computeTangents function beforehand.\n { err } "
468+ raise VTKError ( context ) from err
465469 else :
466470 # Compute second tangential component
467471 normals : npt .NDArray [ np .float64 ] = getNormalVectors ( surface )
@@ -471,22 +475,30 @@ def getTangentsVectors( surface: vtkPolyData ) -> Tuple[ npt.NDArray[ np.float64
471475 return ( tangents1 , tangents2 )
472476
473477
474- def getLocalBasisVectors ( surface : vtkPolyData ) -> npt .NDArray [ np .float64 ]:
478+ def getLocalBasisVectors (
479+ surface : vtkPolyData ,
480+ logger : Union [ Logger , None ] = None ,
481+ ) -> npt .NDArray [ np .float64 ]:
475482 """Return the local basis vectors for all cells of the input surface.
476483
477484 Args:
478485 surface(vtkPolydata): The input surface.
486+ logger (Union[Logger, None], optional): A logger to manage the output messages.
487+ Defaults to None, an internal logger is used.
479488
480489 Returns:
481490 npt.NDArray[np.float64]: Array with normal, tangential 1 and tangential 2 vectors.
482491 """
492+ if logger is None :
493+ logger = getLogger ( "getLocalBasisVectors" , True )
494+
483495 try :
484496 normals : npt .NDArray [ np .float64 ] = getNormalVectors ( surface )
485497 surfaceWithNormals : vtkPolyData = surface
486498 # ValueError raised if no normals found in the mesh
487499 except ValueError :
488500 # In that case, the normals are computed.
489- surfaceWithNormals = computeNormals ( surface )
501+ surfaceWithNormals = computeNormals ( surface , logger )
490502 normals = getNormalVectors ( surfaceWithNormals )
491503
492504 # Tangents require normals to be present in the mesh
@@ -495,7 +507,7 @@ def getLocalBasisVectors( surface: vtkPolyData ) -> npt.NDArray[ np.float64 ]:
495507 npt .NDArray [ np .float64 ] ] = getTangentsVectors ( surfaceWithNormals )
496508 # If no tangents is present in the mesh, they are computed on that surface
497509 except VTKError :
498- surfaceWithTangents : vtkPolyData = computeTangents ( surfaceWithNormals )
510+ surfaceWithTangents : vtkPolyData = computeTangents ( surfaceWithNormals , logger )
499511 tangents = getTangentsVectors ( surfaceWithTangents )
500512
501513 return np .array ( ( normals , * tangents ) )
@@ -515,16 +527,17 @@ def computeNormals(
515527 Returns:
516528 vtkPolyData: The surface with normal attribute.
517529 """
530+ vtkErrorLogger : Logger
518531 if logger is None :
519- logger = getLogger ( "computeSurfaceNormals" )
520- # Creation of a child logger to deal with VTKErrors without polluting parent logger
521- vtkErrorLogger : Logger = getLogger ( f"{ logger .name } .vtkErrorLogger" )
522- vtkErrorLogger .propagate = False
532+ vtkErrorLogger = getLogger ( "Compute Surface Normals vtkError Logger" , True )
533+ else :
534+ vtkErrorLogger = logging .getLogger ( f"{ logger .name } vtkError Logger" )
535+ vtkErrorLogger .setLevel ( logging .INFO )
536+ vtkErrorLogger .addHandler ( logger .handlers [ 0 ] )
537+ vtkErrorLogger .propagate = False
523538
524539 vtkLogger .SetStderrVerbosity ( vtkLogger .VERBOSITY_ERROR )
525-
526540 vtkErrorLogger .addFilter ( RegexExceptionFilter () ) # will raise VTKError if captured VTK Error
527- vtkErrorLogger .setLevel ( logging .DEBUG )
528541
529542 with VTKCaptureLog () as capturedLog :
530543 normalFilter : vtkPolyDataNormals = vtkPolyDataNormals ()
@@ -536,7 +549,8 @@ def computeNormals(
536549 capturedLog .seek ( 0 )
537550 captured = capturedLog .read ().decode ()
538551
539- vtkErrorLogger .debug ( captured .strip () )
552+ if captured != "" :
553+ vtkErrorLogger .error ( captured .strip () )
540554
541555 outputSurface = normalFilter .GetOutput ()
542556
@@ -562,22 +576,23 @@ def computeTangents(
562576 Returns:
563577 vtkPolyData: The surface with tangent attribute
564578 """
565- # need to compute texture coordinates required for tangent calculation
566- surface1 : vtkPolyData = computeSurfaceTextureCoordinates ( triangulatedSurface )
579+ # Need to compute texture coordinates required for tangent calculation
580+ surface1 : vtkPolyData = computeSurfaceTextureCoordinates ( triangulatedSurface , logger )
567581
568582 # TODO: triangulate the surface before computation of the tangents if needed.
569583
570- # compute tangents
584+ # Compute tangents
585+ vtkErrorLogger : Logger
571586 if logger is None :
572- logger = getLogger ( "computeSurfaceTangents" )
573- # Creation of a child logger to deal with VTKErrors without polluting parent logger
574- vtkErrorLogger : Logger = getLogger ( f"{ logger .name } .vtkErrorLogger" )
575- vtkErrorLogger .propagate = False
587+ vtkErrorLogger = getLogger ( "Compute Surface Tangents vtkError Logger" , True )
588+ else :
589+ vtkErrorLogger = logging .getLogger ( f"{ logger .name } vtkError Logger" )
590+ vtkErrorLogger .setLevel ( logging .INFO )
591+ vtkErrorLogger .addHandler ( logger .handlers [ 0 ] )
592+ vtkErrorLogger .propagate = False
576593
577594 vtkLogger .SetStderrVerbosity ( vtkLogger .VERBOSITY_ERROR )
578-
579595 vtkErrorLogger .addFilter ( RegexExceptionFilter () ) # will raise VTKError if captured VTK Error
580- vtkErrorLogger .setLevel ( logging .DEBUG )
581596
582597 with VTKCaptureLog () as capturedLog :
583598
@@ -591,7 +606,8 @@ def computeTangents(
591606 capturedLog .seek ( 0 )
592607 captured = capturedLog .read ().decode ()
593608
594- vtkErrorLogger .debug ( captured .strip () )
609+ if captured != "" :
610+ vtkErrorLogger .error ( captured .strip () )
595611
596612 if surfaceOut is None :
597613 raise VTKError ( "Something went wrong in VTK calculation." )
@@ -623,16 +639,17 @@ def computeSurfaceTextureCoordinates(
623639 vtkPolyData: The input surface with generated texture map.
624640 """
625641 # Need to compute texture coordinates required for tangent calculation
642+ vtkErrorLogger : Logger
626643 if logger is None :
627- logger = getLogger ( "computeSurfaceTextureCoordinates" )
628- # Creation of a child logger to deal with VTKErrors without polluting parent logger
629- vtkErrorLogger : Logger = getLogger ( f"{ logger .name } .vtkErrorLogger" )
630- vtkErrorLogger .propagate = False
644+ vtkErrorLogger = getLogger ( "Compute Surface Texture Coordinates vtkError Logger" , True )
645+ else :
646+ vtkErrorLogger = logging .getLogger ( f"{ logger .name } vtkError Logger" )
647+ vtkErrorLogger .setLevel ( logging .INFO )
648+ vtkErrorLogger .addHandler ( logger .handlers [ 0 ] )
649+ vtkErrorLogger .propagate = False
631650
632651 vtkLogger .SetStderrVerbosity ( vtkLogger .VERBOSITY_ERROR )
633-
634652 vtkErrorLogger .addFilter ( RegexExceptionFilter () ) # will raise VTKError if captured VTK Error
635- vtkErrorLogger .setLevel ( logging .DEBUG )
636653
637654 with VTKCaptureLog () as capturedLog :
638655
@@ -644,6 +661,7 @@ def computeSurfaceTextureCoordinates(
644661 capturedLog .seek ( 0 )
645662 captured = capturedLog .read ().decode ()
646663
647- vtkErrorLogger .debug ( captured .strip () )
664+ if captured != "" :
665+ vtkErrorLogger .error ( captured .strip () )
648666
649667 return textureFilter .GetOutput ()
0 commit comments