pointpicker

本文详细介绍了PointPicker工具的使用方法,包括如何初始化、设置参数、获取选择的点坐标等,适合需要在地图上进行精确点选操作的开发者参考。
摘要由CSDN通过智能技术生成
import os
import vtk
import numpy as np
from tkinter import *
#右键选点,按下中键取消点的选择。按一次取消上一次选点,选取的点坐标和模型文件在同一个文件夹中
from tkinter import filedialog
import threading

def GetstlData(filename):
    stlReader = vtk.vtkSTLReader()
    stlReader.SetFileName(filename+".stl")
    stlReader.Update()
    data = stlReader.GetOutput()
    print("nodes number:", data.GetNumberOfPoints())
    if data.GetNumberOfPoints() == 0:
        raise ValueError("No point data could be loaded from " + filename)
        return None

    return data

class interactor(vtk.vtkInteractorStyleTrackballCamera):

    def __init__(self,parent=None):
        self.AddObserver("RightButtonPressEvent",self.RightButtonPressEvent)
        self.AddObserver("MiddleButtonPressEvent", self.MiddleButtonPressEvent)
        self.i=1
        self.controlpoints={}

        self.actor=[]

    def RightButtonPressEvent(self, obj, event):
        clickPos = self.GetInteractor().GetEventPosition()#得到二维图像点
        #print("Picking pixel: ", clickPos)

        # Pick from this location
        picker = self.GetInteractor().GetPicker()#初始化picker动作
        picker.Pick(clickPos[0], clickPos[1], 0, self.GetDefaultRenderer())#自己定义的渲染函数

        value_list=[]
        for j in range(len(self.controlpoints)):
            value_list.append(self.controlpoints[j + 1])
        value_list_1 = np.array(value_list)
        np.savetxt(filename + ".txt",value_list_1)

        # If CellId = -1, nothing was picked
        if  value_list.count(data.GetPoint(picker.GetPointId()))==0:

            point_position = data.GetPoint(picker.GetPointId())
            # print("Pick position is: ", picker.GetPickPosition())#选点的坐标
            #print("Cell id is:", picker.GetCellId()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值