// ==UserScript== // @name 骨骼标注 // @namespace https://bbs.tampermonkey.net.cn/ // @version 1.0 // @description 骨骼标注 // @author You // @match http://117.172.186.240:8081/* // @icon http://117.172.186.240:8081/w/customer_config/images/feilisen-logo.png // @grant GM_xmlhttpRequest // @license MIT // ==/UserScript== (function() { function createToastContainer() { const container = document.createElement('div'); container.id = 'toast-container'; container.style.cssText = ` position: fixed; top: 20px; right: 20px; z-index: 9999; display: flex; flex-direction: column; gap: 10px; max-width: 350px; pointer-events: none; `; document.body.appendChild(container); return container; } const container = createToastContainer(); // 显示消息 function showCustomToast(type, message, duration = 3000) { const toast = document.createElement('div'); // 根据类型设置颜色 const colors = { success: '#52c41a', error: '#ff4d4f', warning: '#faad14', info: '#1890ff' }; toast.style.cssText = ` background: white; padding: 12px 20px; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); border-left: 4px solid ${colors[type] || '#1890ff'}; animation: slideIn 0.3s ease; pointer-events: auto; font-size: 14px; color: #333; `; const icons = { success: '✅', error: '❌', warning: '⚠️', info: 'ℹ️' }; toast.innerHTML = `${icons[type] || ''} ${message}`; container.appendChild(toast); // 自动移除 setTimeout(() => { toast.style.animation = 'slideOut 0.3s ease'; setTimeout(() => toast.remove(), 300); }, duration); } // 添加动画样式 const style = document.createElement('style'); style.textContent = ` @keyframes slideIn { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } @keyframes slideOut { from { transform: translateX(0); opacity: 1; } to { transform: translateX(100%); opacity: 0; } } `; document.head.appendChild(style); const list = ["骨盆","右髋","左髋","脊柱1","右膝","左膝","脊柱2","右踝","左踝","脊柱3","右脚","左脚","颈部","右锁骨","左锁骨","头部","右肩","左肩","右肘","左肘","右腕","左腕","右手","左手","右脚跟","左脚跟"] document.querySelector("body").insertAdjacentHTML("beforeend","
未标注:
") const element = document.querySelector("#canvasBackground") element.addEventListener('click', function() { function lable(num){ document.querySelector("#optionsRadios"+num+"-1").click() document.querySelector("#class-submit").click() showCustomToast("success","标注"+list[num]) document.querySelector("#not > ul").remove() document.querySelector("#not").insertAdjacentHTML("beforeend","") for(let i=(num+1);i<26;i++){ document.querySelector("#not > ul").insertAdjacentHTML("beforeend","
  • "+(list.indexOf(list[i])+1)+"."+list[i]+"
  • ") } } if(document.querySelector("#toolBarList").innerText !== ""){ const len = document.querySelector("#toolBarList").children.length switch(document.querySelector("#toolBarList > li:nth-child("+len+") > div.toolBarNumAddListEditor.clearFix > span.toolBarNumAddListShow").innerText){ //"骨盆" case list[0]: lable(1) break //"右髋" case list[1]: lable(2) break //"左髋" case list[2]: lable(3) break //"脊柱1" case list[3]: lable(4) break //"右膝" case list[4]: lable(5) break //"左膝" case list[5]: lable(6) break //"脊柱2" case list[6]: lable(7) break //"右踝" case list[7]: lable(8) break //"左踝" case list[8]: lable(9) break //"脊柱3" case list[9]: lable(10) break //"右脚" case list[10]: lable(11) break //"左脚" case list[11]: lable(12) break //"颈部" case list[12]: lable(13) break //"右锁骨" case list[13]: lable(14) break //"左锁骨" case list[14]: lable(15) break //"头部" case list[15]: lable(16) break //"右肩" case list[16]: lable(17) break //"左肩" case list[17]: lable(18) break //"右肘" case list[18]: lable(19) break //"左肘" case list[19]: lable(20) break //"右腕" case list[20]: lable(21) break //"左腕" case list[21]: lable(22) break //"右手" case list[22]: lable(23) break //"左手" case list[23]: lable(24) break //"右脚跟" case list[24]: lable(25) break //"左脚跟" case list[25]: document.querySelector("#class-cancel").click() showCustomToast("success","标注完成") break } }else{ //没有 lable(0) } }); function run(){ for(let i=0;i<26;i++){ const name = document.querySelector("#toolBarList > li:nth-child("+(i+1)+") > div.toolBarNumAddListEditor.clearFix > span.toolBarNumAddListShow").innerText if(name !== list[i]){ showCustomToast("error",list[i]+"位置错误") } } showCustomToast("success","顺序检查完成") } document.addEventListener('keydown', (e) => { switch(e.key){ case "p": run() break } }); })();