Mayavi: mlab.axes() рдорд╛рдпрд╛рд╡реА 4.5.0 рдореЗрдВ рдЕрдкрд╡рд╛рдж рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдЬрдире░ 2017  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: enthought/mayavi

рдирдорд╕реНрддреЗ, рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВрдиреЗ рдорд╛рдпрд╛рд╡реА рдХреЛ 4.4.4 рд╕реЗ 4.5.0 рддрдХ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ред рдЕрджреНрдпрддрди рдХреЗ рдмрд╛рдж, рдЬрдм рдореИрдВ mlab рдлрд╝рдВрдХреНрд╢рди axes() рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣рд╛рдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рд╣реИ (рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рд░реЗрдЦрд╛ рдЯрд┐рдкреНрдкрдгреА рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХреА рдЧрдИ рд╣реИ):

from mayavi import mlab
from numpy import pi, sin, cos, mgrid
dphi, dtheta = pi/250.0, pi/250.0
[phi,theta] = mgrid[0:pi+dphi*1.5:dphi,0:2*pi+dtheta*1.5:dtheta]
m0 = 4; m1 = 3; m2 = 2; m3 = 3; m4 = 6; m5 = 2; m6 = 6; m7 = 4;
r = sin(m0*phi)**m1 + cos(m2*phi)**m3 + sin(m4*theta)**m5 + cos(m6*theta)**m7
x = r*sin(phi)*cos(theta)
y = r*cos(phi)
z = r*sin(phi)*sin(theta)
s = mlab.mesh(x, y, z)
mlab.axes(color=(0.9,0.9,0.9))       # LINE CAUSING ERROR
mlab.show()

рдЬрдм рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рдПрдирд╛рдХреЛрдВрдбрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ:

рдкреЙрдк-рдЕрдк рд╕рдВрджреЗрд╢ (рдмреЙрдХреНрд╕):

Exception
In c:\anaconda\lib\site-packages\mayavi-4.5.0-py2.7-win-amd64.egg\tvtk\tvtk_base.py:569
TypeError: SetInputData argument 1:method requires a vtkDataSet, a vtkPolyDataNormals was provided. (in _wrap_call)

рдХрдВрд╕реЛрд▓ рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╕рдВрджреЗрд╢:

No handlers could be found for logger "mayavi.core.common"
Exception occurred in traits notification handler.
Please check the log file for details.
Exception occurred in traits notification handler for object: <mayavi.tools.decorations.Axes object at 0x0000000011AC00A0>, trait: extent, old value: [0 0 0 0 0 0], new value: [-1.53801118  1.53801118 -2.          2.27326963 -1.53801118  1.53801118]
Traceback (most recent call last):
  File "C:\Anaconda\lib\site-packages\traits\trait_notifiers.py", line 340, in __call__
    self.handler( *args )
  File "C:\Anaconda\lib\site-packages\mayavi-4.5.0-py2.7-win-amd64.egg\mayavi\tools\decorations.py", line 373, in _extent_changed
    axes.module_manager.source.outputs[0].bounds
AttributeError: 'PolyDataNormals' object has no attribute 'bounds'

рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА

рдкрд░реНрдпрд╛рд╡рд░рдг рдЬрд┐рд╕рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ
рдУрдПрд╕: рд╡рд┐рдВрдбреЛрдЬ 10
рдкрд╛рдпрдерди рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди: рдПрдирд╛рдХреЛрдВрдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдпрдерди 2.7 рд╕реНрдерд╛рдкрд┐рдд
рдорд╛рдпрд╛рд╡реА рдкреИрдХреЗрдЬ: рдорд╛рдпрд╛рд╡реА 4.5.0 py27_0 рдореЗрдирдкреЛ
рд╡реАрдЯреАрдХреЗ рдкреИрдХреЗрдЬ: рд╡реАрдЯреАрдХреЗ 7.0.0 py27_0 рдореЗрдирдкреЛ
рдкреАрдИрдХреНрдпреВрдЯреА рдкреИрдХреЗрдЬ: pyqt 5.6.0 py27_1

рд╡рд╛рддрд╛рд╡рд░рдг рдЬрд┐рд╕рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдЪрд▓рддрд╛ рд╣реИ OK
рдУрдПрд╕: рд╡рд┐рдВрдбреЛрдЬ 7
рдкрд╛рдпрдерди рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди: рдПрдирд╛рдХреЛрдВрдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдпрдерди 2.7 рд╕реНрдерд╛рдкрд┐рдд
рдорд╛рдпрд╛рд╡реА рдкреИрдХреЗрдЬ: рдорд╛рдпрд╛рд╡реА 4.4.4 py27_0 рдореЗрдирдкреЛ
рд╡реАрдЯреАрдХреЗ рдкреИрдХреЗрдЬ: рд╡реАрдЯреАрдХреЗ 7.0.0 py27_0 рдореЗрдирдкреЛ
рдкреАрдИрдХреНрдпреВрдЯреА рдкреИрдХреЗрдЬ: рдкреАрдИрдХреНрдпреВрдЯреА 4.11.4 py27_5

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрджрд┐ рдЕрднреА рднреА рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдЬреАрддрди рдХреЗ рд╕рдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рдмрд╕ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдереА рдФрд░ рдЗрд╕реЗ рдорд╛рдпрд╛рд╡реА \ рдореЙрдбреНрдпреВрд▓ \ axes.py рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдХреЗ, update_pipeline рдореЗрдВ рдмрджрд▓рдХрд░ рд╢рд╛рдВрдд рдХрд░ рджрд┐рдпрд╛:
self.configure_input_data(self.axes, src.outputs[0])
рдкреНрд░рддрд┐:
self.configure_input_data(self.axes, src.outputs[0].output)

(рдкреВрд░реНрд╡ рдкреНрд░рдХрд╛рд░ PolyDataNormals рд╣реИ, рдмрд╛рдж рд╡рд╛рд▓рд╛ PolyData рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛рд╕реЗрдЯ рд╕реЗ рдирд┐рдХрд▓рд╛ рд╣реИред)

рд╕рднреА 9 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдХреНрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд рджреЛрд╣рд░рд╛рдпрд╛ рд╣реИ:

рдУрдПрд╕: рд╡рд┐рдВрдбреЛрдЬ 10
рдкрд╛рдпрдерди рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди: рдПрдирд╛рдХреЛрдВрдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдпрдерди 2.7 рд╕реНрдерд╛рдкрд┐рдд
рдорд╛рдпрд╛рд╡реА рдкреИрдХреЗрдЬ: рдорд╛рдпрд╛рд╡реА 4.5.0 py27_0
рд╡реАрдЯреАрдХреЗ рдкреИрдХреЗрдЬ: рд╡реАрдЯреАрдХреЗ 6.3.0 py27_1
рдкреАрдИрдХреНрдпреВрдЯреА рдкреИрдХреЗрдЬ: рдкреАрдИрдХреНрдпреВрдЯреА 4.11.4 py27_4

рдЕрдЧрд░ рдореИрдВ conda install mayavi=4.4 * рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдХреЛрдб рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдорд╛рдпрд╛рд╡реА -> 4.4.0
рд╡реАрдЯреАрдХреЗ -> 5.10.1

*рдЕрд╕рдВрдмрдВрдзрд┐рдд рдиреЛрдЯ - рдпрд╣ 1.10 рд╕реЗ 1.9.3 рддрдХ рд╕реБрдиреНрди рдХреЛ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реНрдкрд╛рдЗрдбрд░ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдлрд┐рд░ рд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛

рдореБрдЭреЗ рдпрд╣рд╛рдВ рд╡реИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╕реБрд░рд╛рдЧ рдирд╣реАрдВ рд╣реИ?

рдпрджрд┐ рдЕрднреА рднреА рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдЬреАрддрди рдХреЗ рд╕рдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рдмрд╕ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдереА рдФрд░ рдЗрд╕реЗ рдорд╛рдпрд╛рд╡реА \ рдореЙрдбреНрдпреВрд▓ \ axes.py рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдХреЗ, update_pipeline рдореЗрдВ рдмрджрд▓рдХрд░ рд╢рд╛рдВрдд рдХрд░ рджрд┐рдпрд╛:
self.configure_input_data(self.axes, src.outputs[0])
рдкреНрд░рддрд┐:
self.configure_input_data(self.axes, src.outputs[0].output)

(рдкреВрд░реНрд╡ рдкреНрд░рдХрд╛рд░ PolyDataNormals рд╣реИ, рдмрд╛рдж рд╡рд╛рд▓рд╛ PolyData рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛рд╕реЗрдЯ рд╕реЗ рдирд┐рдХрд▓рд╛ рд╣реИред)

рдореБрдЭреЗ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

@jdonegan рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡реЛрдВ рдиреЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛: +1:ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рдлрд┐рдХреНрд╕ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ

рдореБрдЭреЗ рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рдереА рдФрд░ @jdonegan рдХреЗ рдлрд┐рдХреНрд╕ рдиреЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред рдПрдХ рдкреАрдЖрд░ рдЬрдорд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @prabhuramaрдЪрдВрджреНрд░рди рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдПрдХ
self.configure_input(self.axes, src.outputs[0])

рд╢рд╛рдпрдж рднреНрд░рдо рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдЗрд╕реА рддрд░рд╣, рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдФрд░ рд╕рдорд╛рди рд╕реБрдзрд╛рд░ рдХреЛ рдбреЗрдХреЛрд░реЗрд╢рди.py рдореЗрдВ рд▓рд╛рдЗрди 373 рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
axes.axes.ranges = \
axes.module_manager.source.outputs[0].output.bounds

рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП
"рд╡рд┐рд╢реЗрд╖рддрд╛ рддреНрд░реБрдЯрд┐: 'PolyDataNormals' рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИ 'рд╕реАрдорд╛'"

рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдХрдорд┐рдЯрдореЗрдВрдЯ 996fb25 рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ @TinghuiWang рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕реЗ рдХрдИ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдкрдХреЗ рдкреНрд▓реЙрдЯ рдХреЙрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ (рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдкреНрд▓реЙрдЯ 3 рдбреА рдмрдирд╛рдо рдкреЙрдЗрдВрдЯ 3 рдбреА рдерд╛), рдЖрдкрдХреЛ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рддрдп рдХрд┐рдпрд╛:

mayavi\modules\axes.py рд▓рд╛рдЗрди 173 рдкрд░, рдореИрдВ рдмрджрд▓ рдЧрдпрд╛

self.configure_input_data(self.axes, src.outputs[0])

рдкреНрд░рддрд┐

data = src.outputs[0] if not hasattr(src.outputs[0], 'output') else src.outputs[0].output
self.configure_input_data(self.axes, data)

рдЗрд╕реА рддрд░рд╣ \mayavi\tools\decorations.py рд▓рд╛рдЗрди 372 рдкрд░ рдореИрдВ canged

axes.axes.ranges = axes.module_manager.source.outputs[0].bounds

рдкреНрд░рддрд┐

src = axes.module_manager.source
data = src.outputs[0] if not hasattr(src.outputs[0], 'output') else src.outputs[0].output
axes.axes.ranges = data.bounds

рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВ рджреЛрд╕реНрддреЛрдВред рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд░реВрд░рдд рд╣реИред

рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рдзрд┐ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдЕрдкрд╡рд╛рдж рд╣реИ:
Exception occurred in traits notification handler for object: <mayavi.tools.decorations.Axes object at 0x11a41ce60>, trait: extent, old value: [0 0 0 0 0 0], new value: [ -2. 17. -2. 17. -4.85316642 6.54683358] NoneType: None

рдФрд░ рдЫрд╡рд┐ рдкрд░ рдХреЛрдИ рдЕрдХреНрд╖ рд▓реЗрдмрд▓ рдирд╣реАрдВ рд╣реИред

рдХреЛрдИ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

jan-janssen picture jan-janssen  ┬╖  21рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Make42 picture Make42  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rambalachandran picture rambalachandran  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

yassersouri picture yassersouri  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

GaelVaroquaux picture GaelVaroquaux  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ