enthought/mayavi

AttributeError: 'NoneType' object has no attribute 'to_array' when running mayavi/examples/mayavi/data_interaction/normal_flipping_stl.py

homosapien-lcy opened this issue · 1 comments

When running mayavi/examples/mayavi/data_interaction/normal_flipping_stl.py, an AttributeError: 'NoneType' object has no attribute 'to_array' will rise

Replication: python3.11 mayavi/examples/mayavi/data_interaction/normal_flipping_stl.py

trace:

(py311) (base) cyliu@aus552cyliu mayavi % python3.11 examples/mayavi/data_interaction/normal_flipping_stl.py
2023-05-11 15:32:59.308 (   2.607s) [           2A8EB]       vtkSTLReader.cxx:106    ERR| vtkSTLReader (0x6000010cb400): File ../data/cube.stl not found
2023-05-11 15:32:59.308 (   2.607s) [           2A8EB]       vtkExecutive.cxx:741    ERR| vtkCompositeDataPipeline (0x6000017edc00): Algorithm vtkSTLReader (0x6000010cb400) returned failure for request: vtkInformation (0x600000faf120)
  Debug: Off
  Modified Time: 237
  Reference Count: 1
  Registered Events: (none)
  Request: REQUEST_DATA
  FROM_OUTPUT_PORT: 0
  ALGORITHM_AFTER_FORWARD: 1
  FORWARD_DIRECTION: 0


Traceback (most recent call last):
  File "/Users/cyliu/Documents/3.11_test/mayavi/examples/mayavi/data_interaction/normal_flipping_stl.py", line 90, in <module>
    flip_normals(stl_fname)
  File "/Users/cyliu/Documents/3.11_test/mayavi/examples/mayavi/data_interaction/normal_flipping_stl.py", line 20, in flip_normals
    points = polydata.points.to_array()
             ^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'to_array'

env:
MacOS, python3.11

\Package Version Editable project location


apptools 5.2.0
attrdict 2.0.1
attrdict3 2.0.2
blosc2 2.0.0
celiagg 2.1.3
certifi 2022.12.7
chaco 5.1.0 /Users/cyliu/Documents/3.11_test/chaco
charset-normalizer 3.1.0
configobj 5.0.8
contourpy 1.0.7
cPython 0.0.6
cycler 0.11.0
Cython 0.29.34
dnspython 2.3.0
enable 5.4.0.dev38 /Users/cyliu/Documents/3.11_test/enable
envisage 7.0.3
fonttools 4.39.2
h5py 3.8.0
idna 3.4
joblib 1.2.0
kiwisolver 1.4.4
matplotlib 3.7.1
mayavi 4.8.2.dev0 /Users/cyliu/Documents/3.11_test/mayavi
msgpack 1.0.5
numexpr 2.8.4
numpy 1.24.2
packaging 23.1
pandas 1.5.3
Pillow 9.4.0
pip 23.1
py-cpuinfo 9.0.0
PyAudio 0.2.13
pyface 8.0.0 /Users/cyliu/Documents/3.11_test/pyface
pygarrayimage 1.0
pyglet 2.0.5 /Users/cyliu/Documents/3.11_test/pyglet
Pygments 2.14.0
pymongo 4.3.3
pyparsing 3.0.9
PySide6 6.4.3
PySide6-Addons 6.4.3
PySide6-Essentials 6.4.3
python-dateutil 2.8.2
pythonw 3.0.3
pytz 2023.2
reportlab 3.6.12
requests 2.28.2
scikit-learn 1.2.2
scipy 1.10.1
setuptools 65.6.3
shiboken6 6.4.3
six 1.16.0
tables 3.8.0
threadpoolctl 3.1.0
traits 6.4.1
traitsui 8.0.0.dev0 /Users/cyliu/Documents/3.11_test/traitsui
urllib3 1.26.15
vtk 9.2.6
wxPython 4.2.0

It seems that the source of the error is this line (https://github.com/enthought/mayavi/blob/master/examples/mayavi/data_interaction/normal_flipping_stl.py#L86):

    if len(sys.argv) == 1:
        stl_fname = "../data/cube.stl"
    else:
        stl_fname = sys.argv[1]
    flip_normals(stl_fname)

somehow the STLReader reads in the file but the polydata.points stays none