1.将pos信息导入cad,删除掉不想要的pos点
2.打开程序,选择剩余pos点,选择原航片文件夹,选择保存文件夹
import win32com.client
import pythoncom
import tkinter as tk
from tkinter import messagebox,filedialog
import os
import shutil
window = tk.Tk()
window.title("航测影像剔除1.0 by: 放放风")
window.geometry('341x100+500+200')
def vtpnt(x, y, z=0):
"""坐标点转化为浮点数"""
return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, (x, y, z))
def vtobj(obj):
"""转化为对象数组"""
return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_DISPATCH, obj)
def vtFloat(list):
"""列表转化为浮点数"""
return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, list)
def vtInt(list):
"""列表转化为整数"""
return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_I2, list)
def vtVariant(list):
"""列表转化为变体"""
return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_VARIANT, list)
def list_format_conversion(old_list, step=2, deduction=None):
new_list = []
for counte in range(0, len(old_list), step):
new_list.append(list(old_list[counte:counte + step])[:deduction])
return new_list
def mkdir(path):
folder = os.path.exists(path)
if not folder:
os.makedirs(path)
class Pic_eliminate:
def __init__(self):
self.cad_text = []
self.file_text = []
def Select_element(self):
acad = win32com.client.Dispatch("AutoCAD.Application")
doc = acad.ActiveDocument
doc.Utility.Prompt("\n醉后不知天在水\n满船清梦压星河\n")
mp = doc.ModelSpace
tk.messagebox.showinfo('提示', "请在屏幕拾取图元,以Enter键结束")
try:
doc.SelectionSets.Item("SS1").Delete()
except:
tk.messagebox.showinfo('警告', "Delete selection failed")
slt = doc.SelectionSets.Add("SS1")
slt.SelectOnScreen()
for x in slt:
if x.ObjectName == "AcDbText":
self.cad_text.append(x.TextString)
def file_open(self):
Save_path = filedialog.askdirectory(title="选择原始影像文件夹")
Save_path2 = filedialog.askdirectory(title="选择保存文件夹")
if not Save_path:
tk.messagebox.showinfo('提示', "请选择文件夹")
return
else:
count = 0
for files in os.walk( Save_path ):
if count ==0:
count +=1
else:
move_path_3 = files[0].split("\\")
move_path_4 = Save_path2 +"/" + move_path_3[-1]
mkdir(move_path_4)
for path in files[2]:
for name in self.cad_text:
if name == path:
p = files[0] + "/" + path
shutil.copy(p,move_path_4)
tk.messagebox.showinfo( '提示', "处理成功" )
pic_object = Pic_eliminate()
tk.Button(window, width=20, height=5, text="拾取POS数据", command=pic_object.Select_element).grid(row=0, column=0)
tk.Label(window, width=5).grid(row=0, column=1)
tk.Button(window, width=20, height=5, text="提取影像", command=pic_object.file_open).grid(row=0, column=2)
window.mainloop()