Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python vtk中连接两个单独的设置位置值?_Python_Stl_Vtk - Fatal编程技术网

如何在python vtk中连接两个单独的设置位置值?

如何在python vtk中连接两个单独的设置位置值?,python,stl,vtk,Python,Stl,Vtk,我为stl放置了两个单独的滑块,以在X方向和Y方向移动它。 为了将滑块值连接到位置,我编写了下面的代码 #First STL file reader = vtk.vtkSTLReader() reader.SetFileName(filename) self.transform = vtk.vtkTransform() self.transform.Scale(1, 1, 1)

我为stl放置了两个单独的滑块,以在X方向和Y方向移动它。 为了将滑块值连接到位置,我编写了下面的代码

        #First STL file
        reader = vtk.vtkSTLReader()
        reader.SetFileName(filename)

        self.transform = vtk.vtkTransform()
        self.transform.Scale(1, 1, 1)

        
        self.transformFilter = vtk.vtkTransformPolyDataFilter()
        self.transformFilter.SetTransform(self.transform)
        self.transformFilter.SetInputConnection(reader.GetOutputPort())
        self.transformFilter.Update()

        mapper = vtk.vtkPolyDataMapper()
        if vtk.VTK_MAJOR_VERSION <= 5:
            mapper.SetInput(self.transformFilter.GetOutput())
        else:
            mapper.SetInputConnection(self.transformFilter.GetOutputPort())


        self.actor = vtk.vtkActor()

        
        self.vtkwidget = QVTKRenderWindowInteractor(self.centralwidget)
        self.gridLayout.addWidget(self.vtkwidget, 0, 0, 1, 1)

        self.ren = vtk.vtkRenderer()
        self.vtkwidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkwidget.GetRenderWindow().GetInteractor()

        self.actor.SetMapper(mapper)

        self.ren.AddActor(self.actor)

        self.iren.Start()
        
        self.horizontalSlider = QtWidgets.QSlider(self.centralwidget)
        self.horizontalSlider.setGeometry(QtCore.QRect(70, 360, 291, 22))
        self.horizontalSlider.setMinimum(-100)
        self.horizontalSlider.setMaximum(100)
        self.horizontalSlider.setProperty("value", 0)
        self.horizontalSlider.setSliderPosition(0)
        self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider.valueChanged.connect(self.handler)
    

        self.horizontalSlider_2 = QtWidgets.QSlider(self.centralwidget)
        self.horizontalSlider_2.setGeometry(QtCore.QRect(70, 410, 291, 22))
        self.horizontalSlider_2.setMinimum(-100)
        self.horizontalSlider_2.setMaximum(100)
        self.horizontalSlider_2.setProperty("value", 0)
        self.horizontalSlider_2.setSliderPosition(0)
        self.horizontalSlider_2.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider_2.valueChanged.connect(self.handler2)

        def handler(self, value):
            self.positionx = value
            self.actor.SetPosition(value, 0, 0)
            self.iren.GetRenderWindow().Render()

        def handler2(self, value2):
            self.positiony = value2
            self.actor.SetPosition(0, value2, 0)
            self.iren.GetRenderWindow().Render()
#第一个STL文件
reader=vtk.vtkSTLReader()
reader.SetFileName(文件名)
self.transform=vtk.vtkTransform()
自变换比例(1,1,1)
self.transformFilter=vtk.vtkTransformPolyDataFilter()
self.transformFilter.SetTransform(self.transform)
self.transformFilter.SetInputConnection(reader.GetOutputPort())
self.transformFilter.Update()
mapper=vtk.vtkPolyDataMapper()

如果vtk.vtk_MAJOR_VERSION
self.actor.SetPosition(值,0,0)
是您的问题:您显式地将y和z坐标设置为0

您应该使用y和z的当前位置:

pos = self.actor.GetPosition()
self.actor.SetPosition(value, pos[1], pos[2])

第二个处理程序也类似。

请阅读您应用的标记的说明。作为一个新用户,也需要阅读。