// ==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
}
});
})();