fbx_slcer.py 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import os
  2. import time
  3. import pyautogui
  4. import pywinauto
  5. from selenium import webdriver
  6. from selenium.webdriver.common.by import By
  7. def slcer_3Dtiles(root, file, enu=None):
  8. browser = webdriver.Chrome()
  9. browser.maximize_window()
  10. browser.get('http://localhost:9003/index.html#/data/model')
  11. # 选择 通用模型切片
  12. time.sleep(2)
  13. browser.find_element(By.XPATH, '//*[@id="right_box"]/div/div[1]/ul/a[8]/li/button').click()
  14. time.sleep(2)
  15. # 选择输入文件 fbx
  16. browser.find_element(By.XPATH, '//*[@id="input_button"]/button[2]').click()
  17. time.sleep(1)
  18. # 使用pywinauto来选择文件
  19. app = pywinauto.Desktop()
  20. # 选择文件上传的窗口
  21. dlg = app["打开"]
  22. # 选择文件地址输入框,点击激活
  23. # dlg["Toolbar3"].click()
  24. # 键盘输入上传文件的路径
  25. # send_keys(r"D:\osg\wenxingyuan\test\tyzzkcc001.obj")
  26. # 键盘输入回车,打开该路径
  27. # send_keys("{VK_RETURN}")
  28. # 选中文件名输入框,输入文件名
  29. dlg["文件名(&N):Edit"].type_keys(os.path.join(root, file))
  30. # dlg["文件名(&N):Edit"].type_keys(r'D:\osg\wenxingyuan\test\tyzzkcc001.obj')
  31. # 点击打开
  32. dlg["打开(&O)"].click()
  33. time.sleep(2)
  34. # fbx设置空间参考范围
  35. if enu:
  36. browser.find_element(By.XPATH, '//*[@id="setting_general"]').click()
  37. input_box = browser.find_element(By.XPATH,
  38. '//*[@id="all_right"]/div[3]/div/div/div[2]/div/div/div[1]/div[1]/div[1]/textarea')
  39. input_box.clear()
  40. time.sleep(1)
  41. input_box.send_keys('ENU:%s' % enu)
  42. time.sleep(1)
  43. browser.find_element(By.XPATH, '//*[@id="all_right"]/div[3]/div/div/div[3]/button[2]').click()
  44. time.sleep(20)
  45. # 操作鼠标选择存储类型
  46. # 获取鼠标位置(x,y)
  47. # pyautogui.position()
  48. time.sleep(2)
  49. pyautogui.moveTo(3552, 667)
  50. pyautogui.click()
  51. time.sleep(2)
  52. pyautogui.moveTo(3553, 732)
  53. pyautogui.click()
  54. time.sleep(2)
  55. # 数据存储
  56. browser.find_element(By.XPATH,
  57. '//*[@id="all_right"]/div[1]/div/div[16]/div/div[3]/div[4]/div[1]/button').click()
  58. app = pywinauto.Desktop()
  59. # 选择文件上传的窗口
  60. dlg = app["选择文件夹"]
  61. # print(dlg.print_control_identifiers())
  62. # 选择文件地址输入框,点击激活
  63. dlg["Toolbar3"].click()
  64. # 键盘输入上传文件的路径
  65. # send_keys(r"D:\osg\wenxingyuan\test\111")
  66. # 键盘输入回车,打开该路径
  67. # send_keys("{VK_RETURN}")
  68. # 选中文件名输入框,输入文件名
  69. if not os.path.exists(os.path.join(root, file.split('.')[0])):
  70. os.makedirs(os.path.join(root, file.split('.')[0]))
  71. time.sleep(3)
  72. dlg["文件夹:Edit"].type_keys(os.path.join(root, file.split('.')[0]))
  73. # 点击打开
  74. dlg["选择文件夹2"].click()
  75. time.sleep(1)
  76. # 提交处理
  77. browser.find_element(By.XPATH, '//*[@id="newfile_button"]/button').click()
  78. if __name__ == '__main__':
  79. input_path = r'D:\FBX\ojk_small\1'
  80. eun = '27.9262613,120.9439152'
  81. for root, dirs, files in os.walk(input_path):
  82. for file in files:
  83. if os.path.splitext(file)[-1] in ['.FBX']:
  84. if file.split('.')[0] not in os.listdir(os.path.join(root)):
  85. if isinstance(eun, str):
  86. slcer_3Dtiles(root, file, eun)
  87. elif isinstance(eun, dict):
  88. slcer_3Dtiles(root, file, eun.get(file))
  89. else:
  90. slcer_3Dtiles(root, file)