enthought / mayavi

3D visualization of scientific data in Python
http://docs.enthought.com/mayavi/mayavi/
Other
1.28k stars 282 forks source link

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

Open homosapien-lcy opened 1 year ago

homosapien-lcy commented 1 year ago

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

homosapien-lcy commented 1 year ago

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