diff --git a/.gitignore b/.gitignore index 3d7e4ec..1c7a6ef 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,9 @@ release/ # ---- 编译产物 ---- -bin/ +bin/*.exe +bin/*.dll +bin/*.pdb # ---- 大型数据文件 ---- onebot-data/catalog/step/ @@ -45,3 +47,9 @@ catalog-masters/*/dbg_out/ nul .DS_Store Thumbs.db + +# ---- 脚本中间产物 ---- +onebot-data/tools/_scan_cache.json +__pycache__/ +.probe/ +_iconprev/ diff --git a/docs/维护手册.md b/docs/维护手册.md index f844916..d14e4ac 100644 --- a/docs/维护手册.md +++ b/docs/维护手册.md @@ -101,7 +101,17 @@ powershell -NoProfile -ExecutionPolicy Bypass -File tools\publish.ps1 -Opc sampl - 购物车生命周期:网页刷新浏览器 / 桌面重启软件才清空;切系列/搜索/平替等操作不影响清单 - 桌面零新依赖(net48 ZipArchive);网页用开源 JSZip 3.10.1(MIT,web\libs\jszip.min.js)前端打包 -## 11. English Summary +## 11. 网页版系列缩略图(2026-09-14) + +- 首页为**系列缩略图网格**,按大类切换;点左树大类 → 网格切换,点卡片 → 进入选型,点【← 返回系列总览】回首页 +- 缩略图目录:`web\series\<系列码>.webp`(40 个系列各一张) +- **换图/补图**:把你的图按 `web\series\<系列码>.webp` 覆盖同名文件即可,无需改代码。 + 文件名只支持 `.webp .png .jpg .jpeg .svg`(前端按此顺序自动回退探测) +- 生成占位图:`PYTHONUTF8=1 python onebot-data\tools\gen-series-thumbs.py` + (给 `PLACEHOLDER` 列表里的系列画统一风格的"图片待补"占位图) +- 视觉风格参照 `D:\开发\bom-viewer`(青/teal 主色、大圆角、柔和阴影、卡片悬停抬升动画) + +## 12. English Summary - Data source: `onebot-data\catalog\` (catalog.json + per-series meta JSON + CSVs with a `step_file` column + STEP files + manual page PNGs). - Edit: run `bin\维护入口.bat` (password `onebot888`) → Admin → Builder → pick series → save → 【重建全量目录】 (same engine as CLI `--buildfull`). diff --git a/onebot-data/catalog/catalog.json b/onebot-data/catalog/catalog.json index bdf0df4..aa78ed8 100644 --- a/onebot-data/catalog/catalog.json +++ b/onebot-data/catalog/catalog.json @@ -70,7 +70,15 @@ "nameEn": "Pneumatic Retractable Locating Pins", "keywords": "", "series": [ - "ULP" + "ULA", + "ULL", + "ULM", + "ULO", + "ULP", + "ULT", + "ULX", + "ULY", + "ULZ" ] }, { @@ -79,7 +87,11 @@ "nameEn": "Pneumatic Pin Clamp Cylinders", "keywords": "", "series": [ - "USP" + "USP", + "USL", + "USR", + "USS", + "USSL" ] }, { @@ -97,7 +109,8 @@ "nameEn": "Pneumatic Flip Cylinders", "keywords": "", "series": [ - "UAGP" + "UAGP", + "LAGP" ] }, { diff --git a/onebot-data/catalog/crossref.csv b/onebot-data/catalog/crossref.csv index f817495..3a80235 100644 --- a/onebot-data/catalog/crossref.csv +++ b/onebot-data/catalog/crossref.csv @@ -3,11 +3,3 @@ JELPC,SQ32-100,KCS0032-100,基础型平替(待核对) JELPC,SQ32-10,KCS0032-10,基础型平替(待核对) JELPC,SQ32-50,KCS0032-50,基础型平替(待核对) SMC,SQ32-50,KCS0032-50,基础型平替(待核对) -DESTACO,DUP80**,UAGP080_W,"德系对照表: 翻转气缸 (自动映射, 待核对)" -DESTACO,UPU80**,UAGP080_W,"德系对照表: 翻转气缸 (自动映射, 待核对)" -DOTRAN,DF80HA01KLBS12GXXX,UAGP080_W,"德系对照表: 翻转气缸 (自动映射, 待核对)" -DOTRAN,DF80VA03KLBS12GXXX,UAGP080_W,"德系对照表: 翻转气缸 (自动映射, 待核对)" -HITOP,AKF80-VE01W12-XXX,UAGP080_W,"德系对照表: 翻转气缸 (自动映射, 待核对)" -HITOP,AKFK80-VE02W12-XXX,UAGP080_W,"德系对照表: 翻转气缸 (自动映射, 待核对)" -TUENKERS,KS 80.6 SG A01 LH T12 XXX,UAGP080_W,"德系对照表: 翻转气缸 (自动映射, 待核对)" -TUENKERS,KS2 80.6 SG A03 LH T12 XXX,UAGP080_W,"德系对照表: 翻转气缸 (自动映射, 待核对)" diff --git a/onebot-data/catalog/csv/LAE.csv b/onebot-data/catalog/csv/LAE.csv index 657e870..5d58560 100644 --- a/onebot-data/catalog/csv/LAE.csv +++ b/onebot-data/catalog/csv/LAE.csv @@ -1,4 +1,10 @@ -model_code,size,step_file -LAE140,140,LAE140.stp -LAE225,225,LAE225.stp -LAE350,350,LAE350.stp +model_code,size,pos,style,control,step_file +LAE140NN31,140,N,N,31,LAE140NN31.step +LAE140OC31,140,O,C,31,LAE140OC31.step +LAE140VC31,140,V,C,31,LAE140VC31.step +LAE225NN31,225,N,N,31,LAE225NN31.step +LAE225OC31,225,O,C,31,LAE225OC31.step +LAE225VC31,225,V,C,31,LAE225VC31.step +LAE350NN31,350,N,N,31,LAE350NN31.step +LAE350OC31,350,O,C,31,LAE350OC31.step +LAE350VC31,350,V,C,31,LAE350VC31.step diff --git a/onebot-data/catalog/csv/LAGP.csv b/onebot-data/catalog/csv/LAGP.csv new file mode 100644 index 0000000..8aa9585 --- /dev/null +++ b/onebot-data/catalog/csv/LAGP.csv @@ -0,0 +1,501 @@ +model_code,size,table_pos,rotation,brake,conn,sensor,step_file +LAGP063OU045B,63,O,45,B,,U,LAGP063OU045B.step +LAGP063OU060B,63,O,60,B,,U,LAGP063OU060B.step +LAGP063OU090B,63,O,90,B,,U,LAGP063OU090B.step +LAGP063OU120B,63,O,120,B,,U,LAGP063OU120B.step +LAGP063PU045B,63,P,45,B,,U,LAGP063PU045B.step +LAGP063PU060B,63,P,60,B,,U,LAGP063PU060B.step +LAGP063VU045B,63,V,45,B,,U,LAGP063VU045B.step +LAGP063VU060B,63,V,60,B,,U,LAGP063VU060B.step +LAGP063VU090B,63,V,90,B,,U,LAGP063VU090B.step +LAGP063VU120B,63,V,120,B,,U,LAGP063VU120B.step +LAGP063ZU045B,63,Z,45,B,,U,LAGP063ZU045B.step +LAGP063ZU060B,63,Z,60,B,,U,LAGP063ZU060B.step +LAGP063ZU090B,63,Z,90,B,,U,LAGP063ZU090B.step +LAGP063ZU120B,63,Z,120,B,,U,LAGP063ZU120B.step +LAGP075OA045BC,75,O,45,B,C,A,LAGP075OA045BC.step +LAGP075OA060BC,75,O,60,B,C,A,LAGP075OA060BC.step +LAGP075OA090BC,75,O,90,B,C,A,LAGP075OA090BC.step +LAGP075OA120BC,75,O,120,B,C,A,LAGP075OA120BC.step +LAGP075OE045BC,75,O,45,B,C,U,LAGP075OE045BC.step +LAGP075OE045WC,75,O,45,W,C,U,LAGP075OE045WC.step +LAGP075OE060BC,75,O,60,B,C,U,LAGP075OE060BC.step +LAGP075OE060WC,75,O,60,W,C,U,LAGP075OE060WC.step +LAGP075OE090BC,75,O,90,B,C,U,LAGP075OE090BC.step +LAGP075OE090WC,75,O,90,W,C,U,LAGP075OE090WC.step +LAGP075OE120BC,75,O,120,B,C,U,LAGP075OE120BC.step +LAGP075OE120WC,75,O,120,W,C,U,LAGP075OE120WC.step +LAGP075PA045BC,75,P,45,B,C,A,LAGP075PA045BC.step +LAGP075PA060BC,75,P,60,B,C,A,LAGP075PA060BC.step +LAGP075PE045BC,75,P,45,B,C,U,LAGP075PE045BC.step +LAGP075PE045WC,75,P,45,W,C,U,LAGP075PE045WC.step +LAGP075PE060BC,75,P,60,B,C,U,LAGP075PE060BC.step +LAGP075PE060WC,75,P,60,W,C,U,LAGP075PE060WC.step +LAGP075VA045BC,75,V,45,B,C,A,LAGP075VA045BC.step +LAGP075VA060BC,75,V,60,B,C,A,LAGP075VA060BC.step +LAGP075VA090BC,75,V,90,B,C,A,LAGP075VA090BC.step +LAGP075VA120BC,75,V,120,B,C,A,LAGP075VA120BC.step +LAGP075VE045BC,75,V,45,B,C,U,LAGP075VE045BC.step +LAGP075VE045WC,75,V,45,W,C,U,LAGP075VE045WC.step +LAGP075VE060BC,75,V,60,B,C,U,LAGP075VE060BC.step +LAGP075VE060WC,75,V,60,W,C,U,LAGP075VE060WC.step +LAGP075VE090BC,75,V,90,B,C,U,LAGP075VE090BC.step +LAGP075VE090WC,75,V,90,W,C,U,LAGP075VE090WC.step +LAGP075VE120BC,75,V,120,B,C,U,LAGP075VE120BC.step +LAGP075VE120WC,75,V,120,W,C,U,LAGP075VE120WC.step +LAGP075ZA045BC,75,Z,45,B,C,A,LAGP075ZA045BC.step +LAGP075ZA060BC,75,Z,60,B,C,A,LAGP075ZA060BC.step +LAGP075ZA090BC,75,Z,90,B,C,A,LAGP075ZA090BC.step +LAGP075ZA120BC,75,Z,120,B,C,A,LAGP075ZA120BC.step +LAGP075ZE045BC,75,Z,45,B,C,U,LAGP075ZE045BC.step +LAGP075ZE045WC,75,Z,45,W,C,U,LAGP075ZE045WC.step +LAGP075ZE060BC,75,Z,60,B,C,U,LAGP075ZE060BC.step +LAGP075ZE060WC,75,Z,60,W,C,U,LAGP075ZE060WC.step +LAGP075ZE090BC,75,Z,90,B,C,U,LAGP075ZE090BC.step +LAGP075ZE090WC,75,Z,90,W,C,U,LAGP075ZE090WC.step +LAGP075ZE120BC,75,Z,120,B,C,U,LAGP075ZE120BC.step +LAGP075ZE120WC,75,Z,120,W,C,U,LAGP075ZE120WC.step +LAGP080OA045BC,80,O,45,B,C,A,LAGP080OA045BC.step +LAGP080OA060BC,80,O,60,B,C,A,LAGP080OA060BC.step +LAGP080OA090BC,80,O,90,B,C,A,LAGP080OA090BC.step +LAGP080OA120BC,80,O,120,B,C,A,LAGP080OA120BC.step +LAGP080OE045BC,80,O,45,B,C,U,LAGP080OE045BC.step +LAGP080OE045WC,80,O,45,W,C,U,LAGP080OE045WC.step +LAGP080OE060BC,80,O,60,B,C,U,LAGP080OE060BC.step +LAGP080OE060WC,80,O,60,W,C,U,LAGP080OE060WC.step +LAGP080OE090BC,80,O,90,B,C,U,LAGP080OE090BC.step +LAGP080OE090WC,80,O,90,W,C,U,LAGP080OE090WC.step +LAGP080OE120BC,80,O,120,B,C,U,LAGP080OE120BC.step +LAGP080OE120WC,80,O,120,W,C,U,LAGP080OE120WC.step +LAGP080PA045BC,80,P,45,B,C,A,LAGP080PA045BC.step +LAGP080PA060BC,80,P,60,B,C,A,LAGP080PA060BC.step +LAGP080PE045BC,80,P,45,B,C,U,LAGP080PE045BC.step +LAGP080PE045WC,80,P,45,W,C,U,LAGP080PE045WC.step +LAGP080PE060BC,80,P,60,B,C,U,LAGP080PE060BC.step +LAGP080PE060WC,80,P,60,W,C,U,LAGP080PE060WC.step +LAGP080VA045BC,80,V,45,B,C,A,LAGP080VA045BC.step +LAGP080VA060BC,80,V,60,B,C,A,LAGP080VA060BC.step +LAGP080VA090BC,80,V,90,B,C,A,LAGP080VA090BC.step +LAGP080VA120BC,80,V,120,B,C,A,LAGP080VA120BC.step +LAGP080VE045BC,80,V,45,B,C,U,LAGP080VE045BC.step +LAGP080VE045WC,80,V,45,W,C,U,LAGP080VE045WC.step +LAGP080VE060BC,80,V,60,B,C,U,LAGP080VE060BC.step +LAGP080VE060WC,80,V,60,W,C,U,LAGP080VE060WC.step +LAGP080VE090BC,80,V,90,B,C,U,LAGP080VE090BC.step +LAGP080VE090WC,80,V,90,W,C,U,LAGP080VE090WC.step +LAGP080VE120BC,80,V,120,B,C,U,LAGP080VE120BC.step +LAGP080VE120WC,80,V,120,W,C,U,LAGP080VE120WC.step +LAGP080ZA045BC,80,Z,45,B,C,A,LAGP080ZA045BC.step +LAGP080ZA060BC,80,Z,60,B,C,A,LAGP080ZA060BC.step +LAGP080ZA090BC,80,Z,90,B,C,A,LAGP080ZA090BC.step +LAGP080ZA120BC,80,Z,120,B,C,A,LAGP080ZA120BC.step +LAGP080ZE045BC,80,Z,45,B,C,U,LAGP080ZE045BC.step +LAGP080ZE045WC,80,Z,45,W,C,U,LAGP080ZE045WC.step +LAGP080ZE060BC,80,Z,60,B,C,U,LAGP080ZE060BC.step +LAGP080ZE060WC,80,Z,60,W,C,U,LAGP080ZE060WC.step +LAGP080ZE090BC,80,Z,90,B,C,U,LAGP080ZE090BC.step +LAGP080ZE090WC,80,Z,90,W,C,U,LAGP080ZE090WC.step +LAGP080ZE120BC,80,Z,120,B,C,U,LAGP080ZE120BC.step +LAGP080ZE120WC,80,Z,120,W,C,U,LAGP080ZE120WC.step +LAGP120OA045BC,120,O,45,B,C,A,LAGP120OA045BC.step +LAGP120OA060BC,120,O,60,B,C,A,LAGP120OA060BC.step +LAGP120OA090BC,120,O,90,B,C,A,LAGP120OA090BC.step +LAGP120OA120BC,120,O,120,B,C,A,LAGP120OA120BC.step +LAGP120OE045BC,120,O,45,B,C,U,LAGP120OE045BC.step +LAGP120OE045WC,120,O,45,W,C,U,LAGP120OE045WC.step +LAGP120OE060BC,120,O,60,B,C,U,LAGP120OE060BC.step +LAGP120OE060WC,120,O,60,W,C,U,LAGP120OE060WC.step +LAGP120OE090BC,120,O,90,B,C,U,LAGP120OE090BC.step +LAGP120OE090WC,120,O,90,W,C,U,LAGP120OE090WC.step +LAGP120OE120BC,120,O,120,B,C,U,LAGP120OE120BC.step +LAGP120OE120WC,120,O,120,W,C,U,LAGP120OE120WC.step +LAGP120PA045BC,120,P,45,B,C,A,LAGP120PA045BC.step +LAGP120PA060BC,120,P,60,B,C,A,LAGP120PA060BC.step +LAGP120PE045BC,120,P,45,B,C,U,LAGP120PE045BC.step +LAGP120PE045WC,120,P,45,W,C,U,LAGP120PE045WC.step +LAGP120PE060BC,120,P,60,B,C,U,LAGP120PE060BC.step +LAGP120PE060WC,120,P,60,W,C,U,LAGP120PE060WC.step +LAGP120VA045BC,120,V,45,B,C,A,LAGP120VA045BC.step +LAGP120VA060BC,120,V,60,B,C,A,LAGP120VA060BC.step +LAGP120VA090BC,120,V,90,B,C,A,LAGP120VA090BC.step +LAGP120VA120BC,120,V,120,B,C,A,LAGP120VA120BC.step +LAGP120VE045BC,120,V,45,B,C,U,LAGP120VE045BC.step +LAGP120VE045WC,120,V,45,W,C,U,LAGP120VE045WC.step +LAGP120VE060BC,120,V,60,B,C,U,LAGP120VE060BC.step +LAGP120VE060WC,120,V,60,W,C,U,LAGP120VE060WC.step +LAGP120VE090BC,120,V,90,B,C,U,LAGP120VE090BC.step +LAGP120VE090WC,120,V,90,W,C,U,LAGP120VE090WC.step +LAGP120VE120BC,120,V,120,B,C,U,LAGP120VE120BC.step +LAGP120VE120WC,120,V,120,W,C,U,LAGP120VE120WC.step +LAGP120ZA045BC,120,Z,45,B,C,A,LAGP120ZA045BC.step +LAGP120ZA060BC,120,Z,60,B,C,A,LAGP120ZA060BC.step +LAGP120ZA090BC,120,Z,90,B,C,A,LAGP120ZA090BC.step +LAGP120ZA120BC,120,Z,120,B,C,A,LAGP120ZA120BC.step +LAGP120ZE045BC,120,Z,45,B,C,U,LAGP120ZE045BC.step +LAGP120ZE045WC,120,Z,45,W,C,U,LAGP120ZE045WC.step +LAGP120ZE060BC,120,Z,60,B,C,U,LAGP120ZE060BC.step +LAGP120ZE060WC,120,Z,60,W,C,U,LAGP120ZE060WC.step +LAGP120ZE090BC,120,Z,90,B,C,U,LAGP120ZE090BC.step +LAGP120ZE090WC,120,Z,90,W,C,U,LAGP120ZE090WC.step +LAGP120ZE120BC,120,Z,120,B,C,U,LAGP120ZE120BC.step +LAGP120ZE120WC,120,Z,120,W,C,U,LAGP120ZE120WC.step +LAGP150OA045BC,150,O,45,B,C,A,LAGP150OA045BC.step +LAGP150OA060BC,150,O,60,B,C,A,LAGP150OA060BC.step +LAGP150OA090BC,150,O,90,B,C,A,LAGP150OA090BC.step +LAGP150OA120BC,150,O,120,B,C,A,LAGP150OA120BC.step +LAGP150OE045BC,150,O,45,B,C,U,LAGP150OE045BC.step +LAGP150OE045WC,150,O,45,W,C,U,LAGP150OE045WC.step +LAGP150OE060BC,150,O,60,B,C,U,LAGP150OE060BC.step +LAGP150OE060WC,150,O,60,W,C,U,LAGP150OE060WC.step +LAGP150OE090BC,150,O,90,B,C,U,LAGP150OE090BC.step +LAGP150OE090WC,150,O,90,W,C,U,LAGP150OE090WC.step +LAGP150OE120BC,150,O,120,B,C,U,LAGP150OE120BC.step +LAGP150OE120WC,150,O,120,W,C,U,LAGP150OE120WC.step +LAGP150PA045BC,150,P,45,B,C,A,LAGP150PA045BC.step +LAGP150PA060BC,150,P,60,B,C,A,LAGP150PA060BC.step +LAGP150PE045BC,150,P,45,B,C,U,LAGP150PE045BC.step +LAGP150PE045WC,150,P,45,W,C,U,LAGP150PE045WC.step +LAGP150PE060BC,150,P,60,B,C,U,LAGP150PE060BC.step +LAGP150PE060WC,150,P,60,W,C,U,LAGP150PE060WC.step +LAGP150VA045BC,150,V,45,B,C,A,LAGP150VA045BC.step +LAGP150VA060BC,150,V,60,B,C,A,LAGP150VA060BC.step +LAGP150VA090BC,150,V,90,B,C,A,LAGP150VA090BC.step +LAGP150VA120BC,150,V,120,B,C,A,LAGP150VA120BC.step +LAGP150VE045BC,150,V,45,B,C,U,LAGP150VE045BC.step +LAGP150VE045WC,150,V,45,W,C,U,LAGP150VE045WC.step +LAGP150VE060BC,150,V,60,B,C,U,LAGP150VE060BC.step +LAGP150VE060WC,150,V,60,W,C,U,LAGP150VE060WC.step +LAGP150VE090BC,150,V,90,B,C,U,LAGP150VE090BC.step +LAGP150VE090WC,150,V,90,W,C,U,LAGP150VE090WC.step +LAGP150VE120BC,150,V,120,B,C,U,LAGP150VE120BC.step +LAGP150VE120WC,150,V,120,W,C,U,LAGP150VE120WC.step +LAGP150ZA045BC,150,Z,45,B,C,A,LAGP150ZA045BC.step +LAGP150ZA060BC,150,Z,60,B,C,A,LAGP150ZA060BC.step +LAGP150ZA090BC,150,Z,90,B,C,A,LAGP150ZA090BC.step +LAGP150ZA120BC,150,Z,120,B,C,A,LAGP150ZA120BC.step +LAGP150ZE045BC,150,Z,45,B,C,U,LAGP150ZE045BC.step +LAGP150ZE045WC,150,Z,45,W,C,U,LAGP150ZE045WC.step +LAGP150ZE060BC,150,Z,60,B,C,U,LAGP150ZE060BC.step +LAGP150ZE060WC,150,Z,60,W,C,U,LAGP150ZE060WC.step +LAGP150ZE090BC,150,Z,90,B,C,U,LAGP150ZE090BC.step +LAGP150ZE090WC,150,Z,90,W,C,U,LAGP150ZE090WC.step +LAGP150ZE120BC,150,Z,120,B,C,U,LAGP150ZE120BC.step +LAGP150ZE120WC,150,Z,120,W,C,U,LAGP150ZE120WC.step +LAGP155OA045BC,155,O,45,B,C,A,LAGP155OA045BC.step +LAGP155OA060BC,155,O,60,B,C,A,LAGP155OA060BC.step +LAGP155OA090BC,155,O,90,B,C,A,LAGP155OA090BC.step +LAGP155OA120BC,155,O,120,B,C,A,LAGP155OA120BC.step +LAGP155OE045BC,155,O,45,B,C,U,LAGP155OE045BC.step +LAGP155OE045WC,155,O,45,W,C,U,LAGP155OE045WC.step +LAGP155OE060BC,155,O,60,B,C,U,LAGP155OE060BC.step +LAGP155OE060WC,155,O,60,W,C,U,LAGP155OE060WC.step +LAGP155OE090BC,155,O,90,B,C,U,LAGP155OE090BC.step +LAGP155OE090WC,155,O,90,W,C,U,LAGP155OE090WC.step +LAGP155OE120BC,155,O,120,B,C,U,LAGP155OE120BC.step +LAGP155OE120WC,155,O,120,W,C,U,LAGP155OE120WC.step +LAGP155PA045BC,155,P,45,B,C,A,LAGP155PA045BC.step +LAGP155PA060BC,155,P,60,B,C,A,LAGP155PA060BC.step +LAGP155PE045BC,155,P,45,B,C,U,LAGP155PE045BC.step +LAGP155PE045WC,155,P,45,W,C,U,LAGP155PE045WC.step +LAGP155PE060BC,155,P,60,B,C,U,LAGP155PE060BC.step +LAGP155PE060WC,155,P,60,W,C,U,LAGP155PE060WC.step +LAGP155VA045BC,155,V,45,B,C,A,LAGP155VA045BC.step +LAGP155VA060BC,155,V,60,B,C,A,LAGP155VA060BC.step +LAGP155VA090BC,155,V,90,B,C,A,LAGP155VA090BC.step +LAGP155VA120BC,155,V,120,B,C,A,LAGP155VA120BC.step +LAGP155VE045BC,155,V,45,B,C,U,LAGP155VE045BC.step +LAGP155VE045WC,155,V,45,W,C,U,LAGP155VE045WC.step +LAGP155VE060BC,155,V,60,B,C,U,LAGP155VE060BC.step +LAGP155VE060WC,155,V,60,W,C,U,LAGP155VE060WC.step +LAGP155VE090BC,155,V,90,B,C,U,LAGP155VE090BC.step +LAGP155VE090WC,155,V,90,W,C,U,LAGP155VE090WC.step +LAGP155VE120BC,155,V,120,B,C,U,LAGP155VE120BC.step +LAGP155VE120WC,155,V,120,W,C,U,LAGP155VE120WC.step +LAGP155ZA045BC,155,Z,45,B,C,A,LAGP155ZA045BC.step +LAGP155ZA060BC,155,Z,60,B,C,A,LAGP155ZA060BC.step +LAGP155ZA090BC,155,Z,90,B,C,A,LAGP155ZA090BC.step +LAGP155ZA120BC,155,Z,120,B,C,A,LAGP155ZA120BC.step +LAGP155ZE045BC,155,Z,45,B,C,U,LAGP155ZE045BC.step +LAGP155ZE045WC,155,Z,45,W,C,U,LAGP155ZE045WC.step +LAGP155ZE060BC,155,Z,60,B,C,U,LAGP155ZE060BC.step +LAGP155ZE060WC,155,Z,60,W,C,U,LAGP155ZE060WC.step +LAGP155ZE090BC,155,Z,90,B,C,U,LAGP155ZE090BC.step +LAGP155ZE090WC,155,Z,90,W,C,U,LAGP155ZE090WC.step +LAGP155ZE120BC,155,Z,120,B,C,U,LAGP155ZE120BC.step +LAGP155ZE120WC,155,Z,120,W,C,U,LAGP155ZE120WC.step +LAGP170OA045BC,170,O,45,B,C,A,LAGP170OA045BC.step +LAGP170OA060BC,170,O,60,B,C,A,LAGP170OA060BC.step +LAGP170OA090BC,170,O,90,B,C,A,LAGP170OA090BC.step +LAGP170OA120BC,170,O,120,B,C,A,LAGP170OA120BC.step +LAGP170OE045BC,170,O,45,B,C,U,LAGP170OE045BC.step +LAGP170OE045WC,170,O,45,W,C,U,LAGP170OE045WC.step +LAGP170OE060BC,170,O,60,B,C,U,LAGP170OE060BC.step +LAGP170OE060WC,170,O,60,W,C,U,LAGP170OE060WC.step +LAGP170OE090BC,170,O,90,B,C,U,LAGP170OE090BC.step +LAGP170OE090WC,170,O,90,W,C,U,LAGP170OE090WC.step +LAGP170OE120BC,170,O,120,B,C,U,LAGP170OE120BC.step +LAGP170OE120WC,170,O,120,W,C,U,LAGP170OE120WC.step +LAGP170PA045BC,170,P,45,B,C,A,LAGP170PA045BC.step +LAGP170PA060BC,170,P,60,B,C,A,LAGP170PA060BC.step +LAGP170PE045BC,170,P,45,B,C,U,LAGP170PE045BC.step +LAGP170PE045WC,170,P,45,W,C,U,LAGP170PE045WC.step +LAGP170PE060BC,170,P,60,B,C,U,LAGP170PE060BC.step +LAGP170PE060WC,170,P,60,W,C,U,LAGP170PE060WC.step +LAGP170VA045BC,170,V,45,B,C,A,LAGP170VA045BC.step +LAGP170VA060BC,170,V,60,B,C,A,LAGP170VA060BC.step +LAGP170VA090BC,170,V,90,B,C,A,LAGP170VA090BC.step +LAGP170VA120BC,170,V,120,B,C,A,LAGP170VA120BC.step +LAGP170VE045BC,170,V,45,B,C,U,LAGP170VE045BC.step +LAGP170VE045WC,170,V,45,W,C,U,LAGP170VE045WC.step +LAGP170VE060BC,170,V,60,B,C,U,LAGP170VE060BC.step +LAGP170VE060WC,170,V,60,W,C,U,LAGP170VE060WC.step +LAGP170VE090BC,170,V,90,B,C,U,LAGP170VE090BC.step +LAGP170VE090WC,170,V,90,W,C,U,LAGP170VE090WC.step +LAGP170VE120BC,170,V,120,B,C,U,LAGP170VE120BC.step +LAGP170VE120WC,170,V,120,W,C,U,LAGP170VE120WC.step +LAGP170ZA045BC,170,Z,45,B,C,A,LAGP170ZA045BC.step +LAGP170ZA060BC,170,Z,60,B,C,A,LAGP170ZA060BC.step +LAGP170ZA090BC,170,Z,90,B,C,A,LAGP170ZA090BC.step +LAGP170ZA120BC,170,Z,120,B,C,A,LAGP170ZA120BC.step +LAGP170ZE045BC,170,Z,45,B,C,U,LAGP170ZE045BC.step +LAGP170ZE045WC,170,Z,45,W,C,U,LAGP170ZE045WC.step +LAGP170ZE060BC,170,Z,60,B,C,U,LAGP170ZE060BC.step +LAGP170ZE060WC,170,Z,60,W,C,U,LAGP170ZE060WC.step +LAGP170ZE090BC,170,Z,90,B,C,U,LAGP170ZE090BC.step +LAGP170ZE090WC,170,Z,90,W,C,U,LAGP170ZE090WC.step +LAGP170ZE120BC,170,Z,120,B,C,U,LAGP170ZE120BC.step +LAGP170ZE120WC,170,Z,120,W,C,U,LAGP170ZE120WC.step +LAGP210OA045BC,210,O,45,B,C,A,LAGP210OA045BC.step +LAGP210OA060BC,210,O,60,B,C,A,LAGP210OA060BC.step +LAGP210OA090BC,210,O,90,B,C,A,LAGP210OA090BC.step +LAGP210OA120BC,210,O,120,B,C,A,LAGP210OA120BC.step +LAGP210OE045BC,210,O,45,B,C,U,LAGP210OE045BC.step +LAGP210OE045WC,210,O,45,W,C,U,LAGP210OE045WC.step +LAGP210OE060BC,210,O,60,B,C,U,LAGP210OE060BC.step +LAGP210OE060WC,210,O,60,W,C,U,LAGP210OE060WC.step +LAGP210OE090BC,210,O,90,B,C,U,LAGP210OE090BC.step +LAGP210OE090WC,210,O,90,W,C,U,LAGP210OE090WC.step +LAGP210OE120BC,210,O,120,B,C,U,LAGP210OE120BC.step +LAGP210OE120WC,210,O,120,W,C,U,LAGP210OE120WC.step +LAGP210PA045BC,210,P,45,B,C,A,LAGP210PA045BC.step +LAGP210PA060BC,210,P,60,B,C,A,LAGP210PA060BC.step +LAGP210PE045BC,210,P,45,B,C,U,LAGP210PE045BC.step +LAGP210PE045WC,210,P,45,W,C,U,LAGP210PE045WC.step +LAGP210PE060BC,210,P,60,B,C,U,LAGP210PE060BC.step +LAGP210PE060WC,210,P,60,W,C,U,LAGP210PE060WC.step +LAGP210VA045BC,210,V,45,B,C,A,LAGP210VA045BC.step +LAGP210VA060BC,210,V,60,B,C,A,LAGP210VA060BC.step +LAGP210VA090BC,210,V,90,B,C,A,LAGP210VA090BC.step +LAGP210VA120BC,210,V,120,B,C,A,LAGP210VA120BC.step +LAGP210VE045BC,210,V,45,B,C,U,LAGP210VE045BC.step +LAGP210VE045WC,210,V,45,W,C,U,LAGP210VE045WC.step +LAGP210VE060BC,210,V,60,B,C,U,LAGP210VE060BC.step +LAGP210VE060WC,210,V,60,W,C,U,LAGP210VE060WC.step +LAGP210VE090BC,210,V,90,B,C,U,LAGP210VE090BC.step +LAGP210VE090WC,210,V,90,W,C,U,LAGP210VE090WC.step +LAGP210VE120BC,210,V,120,B,C,U,LAGP210VE120BC.step +LAGP210VE120WC,210,V,120,W,C,U,LAGP210VE120WC.step +LAGP210ZA045BC,210,Z,45,B,C,A,LAGP210ZA045BC.step +LAGP210ZA060BC,210,Z,60,B,C,A,LAGP210ZA060BC.step +LAGP210ZA090BC,210,Z,90,B,C,A,LAGP210ZA090BC.step +LAGP210ZA120BC,210,Z,120,B,C,A,LAGP210ZA120BC.step +LAGP210ZE045BC,210,Z,45,B,C,U,LAGP210ZE045BC.step +LAGP210ZE045WC,210,Z,45,W,C,U,LAGP210ZE045WC.step +LAGP210ZE060BC,210,Z,60,B,C,U,LAGP210ZE060BC.step +LAGP210ZE060WC,210,Z,60,W,C,U,LAGP210ZE060WC.step +LAGP210ZE090BC,210,Z,90,B,C,U,LAGP210ZE090BC.step +LAGP210ZE090WC,210,Z,90,W,C,U,LAGP210ZE090WC.step +LAGP210ZE120BC,210,Z,120,B,C,U,LAGP210ZE120BC.step +LAGP210ZE120WC,210,Z,120,W,C,U,LAGP210ZE120WC.step +LAGP210_E045WC,210,,45,W,C,U,LAGP210_E045WC.step +LAGP210_E060WC,210,,60,W,C,U,LAGP210_E060WC.step +LAGP210_E090WC,210,,90,W,C,U,LAGP210_E090WC.step +LAGP210_E120WC,210,,120,W,C,U,LAGP210_E120WC.step +LAGP210__045BC,210,,45,B,C,,LAGP210__045BC.step +LAGP210__060BC,210,,60,B,C,,LAGP210__060BC.step +LAGP210__090BC,210,,90,B,C,,LAGP210__090BC.step +LAGP210__120BC,210,,120,B,C,,LAGP210__120BC.step +LAGP215_E045WC,215,,45,W,C,U,LAGP215_E045WC.step +LAGP215_E060WC,215,,60,W,C,U,LAGP215_E060WC.step +LAGP215_E090WC,215,,90,W,C,U,LAGP215_E090WC.step +LAGP215_E120WC,215,,120,W,C,U,LAGP215_E120WC.step +LAGP215__045BC,215,,45,B,C,,LAGP215__045BC.step +LAGP215__060BC,215,,60,B,C,,LAGP215__060BC.step +LAGP215__090BC,215,,90,B,C,,LAGP215__090BC.step +LAGP215__120BC,215,,120,B,C,,LAGP215__120BC.step +LAGP300OA045BC,300,O,45,B,C,A,LAGP300OA045BC.step +LAGP300OA060BC,300,O,60,B,C,A,LAGP300OA060BC.step +LAGP300OA090BC,300,O,90,B,C,A,LAGP300OA090BC.step +LAGP300OA120BC,300,O,120,B,C,A,LAGP300OA120BC.step +LAGP300OE045BC,300,O,45,B,C,U,LAGP300OE045BC.step +LAGP300OE045WC,300,O,45,W,C,U,LAGP300OE045WC.step +LAGP300OE060BC,300,O,60,B,C,U,LAGP300OE060BC.step +LAGP300OE060WC,300,O,60,W,C,U,LAGP300OE060WC.step +LAGP300OE090BC,300,O,90,B,C,U,LAGP300OE090BC.step +LAGP300OE090WC,300,O,90,W,C,U,LAGP300OE090WC.step +LAGP300OE120BC,300,O,120,B,C,U,LAGP300OE120BC.step +LAGP300OE120WC,300,O,120,W,C,U,LAGP300OE120WC.step +LAGP300PA045BC,300,P,45,B,C,A,LAGP300PA045BC.step +LAGP300PA060BC,300,P,60,B,C,A,LAGP300PA060BC.step +LAGP300PE045BC,300,P,45,B,C,U,LAGP300PE045BC.step +LAGP300PE045WC,300,P,45,W,C,U,LAGP300PE045WC.step +LAGP300PE060BC,300,P,60,B,C,U,LAGP300PE060BC.step +LAGP300PE060WC,300,P,60,W,C,U,LAGP300PE060WC.step +LAGP300VA045BC,300,V,45,B,C,A,LAGP300VA045BC.step +LAGP300VA060BC,300,V,60,B,C,A,LAGP300VA060BC.step +LAGP300VA090BC,300,V,90,B,C,A,LAGP300VA090BC.step +LAGP300VA120BC,300,V,120,B,C,A,LAGP300VA120BC.step +LAGP300VE045BC,300,V,45,B,C,U,LAGP300VE045BC.step +LAGP300VE045WC,300,V,45,W,C,U,LAGP300VE045WC.step +LAGP300VE060BC,300,V,60,B,C,U,LAGP300VE060BC.step +LAGP300VE060WC,300,V,60,W,C,U,LAGP300VE060WC.step +LAGP300VE090BC,300,V,90,B,C,U,LAGP300VE090BC.step +LAGP300VE090WC,300,V,90,W,C,U,LAGP300VE090WC.step +LAGP300VE120BC,300,V,120,B,C,U,LAGP300VE120BC.step +LAGP300VE120WC,300,V,120,W,C,U,LAGP300VE120WC.step +LAGP300ZA045BC,300,Z,45,B,C,A,LAGP300ZA045BC.step +LAGP300ZA060BC,300,Z,60,B,C,A,LAGP300ZA060BC.step +LAGP300ZA090BC,300,Z,90,B,C,A,LAGP300ZA090BC.step +LAGP300ZA120BC,300,Z,120,B,C,A,LAGP300ZA120BC.step +LAGP300ZE045BC,300,Z,45,B,C,U,LAGP300ZE045BC.step +LAGP300ZE045WC,300,Z,45,W,C,U,LAGP300ZE045WC.step +LAGP300ZE060BC,300,Z,60,B,C,U,LAGP300ZE060BC.step +LAGP300ZE060WC,300,Z,60,W,C,U,LAGP300ZE060WC.step +LAGP300ZE090BC,300,Z,90,B,C,U,LAGP300ZE090BC.step +LAGP300ZE090WC,300,Z,90,W,C,U,LAGP300ZE090WC.step +LAGP300ZE120BC,300,Z,120,B,C,U,LAGP300ZE120BC.step +LAGP300ZE120WC,300,Z,120,W,C,U,LAGP300ZE120WC.step +LAGP350OA045BC,350,O,45,B,C,A,LAGP350OA045BC.step +LAGP350OA060BC,350,O,60,B,C,A,LAGP350OA060BC.step +LAGP350OA090BC,350,O,90,B,C,A,LAGP350OA090BC.step +LAGP350OA120BC,350,O,120,B,C,A,LAGP350OA120BC.step +LAGP350OE045BC,350,O,45,B,C,U,LAGP350OE045BC.step +LAGP350OE045WC,350,O,45,W,C,U,LAGP350OE045WC.step +LAGP350OE060BC,350,O,60,B,C,U,LAGP350OE060BC.step +LAGP350OE060WC,350,O,60,W,C,U,LAGP350OE060WC.step +LAGP350OE090BC,350,O,90,B,C,U,LAGP350OE090BC.step +LAGP350OE090WC,350,O,90,W,C,U,LAGP350OE090WC.step +LAGP350OE120BC,350,O,120,B,C,U,LAGP350OE120BC.step +LAGP350OE120WC,350,O,120,W,C,U,LAGP350OE120WC.step +LAGP350PA045BC,350,P,45,B,C,A,LAGP350PA045BC.step +LAGP350PA060BC,350,P,60,B,C,A,LAGP350PA060BC.step +LAGP350PE045BC,350,P,45,B,C,U,LAGP350PE045BC.step +LAGP350PE045WC,350,P,45,W,C,U,LAGP350PE045WC.step +LAGP350PE060BC,350,P,60,B,C,U,LAGP350PE060BC.step +LAGP350PE060WC,350,P,60,W,C,U,LAGP350PE060WC.step +LAGP350VA045BC,350,V,45,B,C,A,LAGP350VA045BC.step +LAGP350VA060BC,350,V,60,B,C,A,LAGP350VA060BC.step +LAGP350VA090BC,350,V,90,B,C,A,LAGP350VA090BC.step +LAGP350VA120BC,350,V,120,B,C,A,LAGP350VA120BC.step +LAGP350VE045BC,350,V,45,B,C,U,LAGP350VE045BC.step +LAGP350VE045WC,350,V,45,W,C,U,LAGP350VE045WC.step +LAGP350VE060BC,350,V,60,B,C,U,LAGP350VE060BC.step +LAGP350VE060WC,350,V,60,W,C,U,LAGP350VE060WC.step +LAGP350VE090BC,350,V,90,B,C,U,LAGP350VE090BC.step +LAGP350VE090WC,350,V,90,W,C,U,LAGP350VE090WC.step +LAGP350VE120BC,350,V,120,B,C,U,LAGP350VE120BC.step +LAGP350VE120WC,350,V,120,W,C,U,LAGP350VE120WC.step +LAGP350ZA045BC,350,Z,45,B,C,A,LAGP350ZA045BC.step +LAGP350ZA060BC,350,Z,60,B,C,A,LAGP350ZA060BC.step +LAGP350ZA090BC,350,Z,90,B,C,A,LAGP350ZA090BC.step +LAGP350ZA120BC,350,Z,120,B,C,A,LAGP350ZA120BC.step +LAGP350ZE045BC,350,Z,45,B,C,U,LAGP350ZE045BC.step +LAGP350ZE045WC,350,Z,45,W,C,U,LAGP350ZE045WC.step +LAGP350ZE060BC,350,Z,60,B,C,U,LAGP350ZE060BC.step +LAGP350ZE060WC,350,Z,60,W,C,U,LAGP350ZE060WC.step +LAGP350ZE090BC,350,Z,90,B,C,U,LAGP350ZE090BC.step +LAGP350ZE090WC,350,Z,90,W,C,U,LAGP350ZE090WC.step +LAGP350ZE120BC,350,Z,120,B,C,U,LAGP350ZE120BC.step +LAGP350ZE120WC,350,Z,120,W,C,U,LAGP350ZE120WC.step +LAGP355_E045WC,355,,45,W,C,U,LAGP355_E045WC.step +LAGP355_E060WC,355,,60,W,C,U,LAGP355_E060WC.step +LAGP355_E090WC,355,,90,W,C,U,LAGP355_E090WC.step +LAGP355_E120WC,355,,120,W,C,U,LAGP355_E120WC.step +LAGP355__045BC,355,,45,B,C,,LAGP355__045BC.step +LAGP355__060BC,355,,60,B,C,,LAGP355__060BC.step +LAGP355__090BC,355,,90,B,C,,LAGP355__090BC.step +LAGP355__120BC,355,,120,B,C,,LAGP355__120BC.step +LAGP600OA045BC,600,O,45,B,C,A,LAGP600OA045BC.step +LAGP600OA060BC,600,O,60,B,C,A,LAGP600OA060BC.step +LAGP600OA090BC,600,O,90,B,C,A,LAGP600OA090BC.step +LAGP600OA120BC,600,O,120,B,C,A,LAGP600OA120BC.step +LAGP600OE045BC,600,O,45,B,C,U,LAGP600OE045BC.step +LAGP600OE045WC,600,O,45,W,C,U,LAGP600OE045WC.step +LAGP600OE060BC,600,O,60,B,C,U,LAGP600OE060BC.step +LAGP600OE060WC,600,O,60,W,C,U,LAGP600OE060WC.step +LAGP600OE090BC,600,O,90,B,C,U,LAGP600OE090BC.step +LAGP600OE090WC,600,O,90,W,C,U,LAGP600OE090WC.step +LAGP600OE120BC,600,O,120,B,C,U,LAGP600OE120BC.step +LAGP600OE120WC,600,O,120,W,C,U,LAGP600OE120WC.step +LAGP600PA045BC,600,P,45,B,C,A,LAGP600PA045BC.step +LAGP600PA060BC,600,P,60,B,C,A,LAGP600PA060BC.step +LAGP600PE045BC,600,P,45,B,C,U,LAGP600PE045BC.step +LAGP600PE045WC,600,P,45,W,C,U,LAGP600PE045WC.step +LAGP600PE060BC,600,P,60,B,C,U,LAGP600PE060BC.step +LAGP600PE060WC,600,P,60,W,C,U,LAGP600PE060WC.step +LAGP600VA045BC,600,V,45,B,C,A,LAGP600VA045BC.step +LAGP600VA060BC,600,V,60,B,C,A,LAGP600VA060BC.step +LAGP600VA090BC,600,V,90,B,C,A,LAGP600VA090BC.step +LAGP600VA120BC,600,V,120,B,C,A,LAGP600VA120BC.step +LAGP600VE045BC,600,V,45,B,C,U,LAGP600VE045BC.step +LAGP600VE045WC,600,V,45,W,C,U,LAGP600VE045WC.step +LAGP600VE060BC,600,V,60,B,C,U,LAGP600VE060BC.step +LAGP600VE060WC,600,V,60,W,C,U,LAGP600VE060WC.step +LAGP600VE090BC,600,V,90,B,C,U,LAGP600VE090BC.step +LAGP600VE090WC,600,V,90,W,C,U,LAGP600VE090WC.step +LAGP600VE120BC,600,V,120,B,C,U,LAGP600VE120BC.step +LAGP600VE120WC,600,V,120,W,C,U,LAGP600VE120WC.step +LAGP600ZA045BC,600,Z,45,B,C,A,LAGP600ZA045BC.step +LAGP600ZA060BC,600,Z,60,B,C,A,LAGP600ZA060BC.step +LAGP600ZA090BC,600,Z,90,B,C,A,LAGP600ZA090BC.step +LAGP600ZA120BC,600,Z,120,B,C,A,LAGP600ZA120BC.step +LAGP600ZE045BC,600,Z,45,B,C,U,LAGP600ZE045BC.step +LAGP600ZE045WC,600,Z,45,W,C,U,LAGP600ZE045WC.step +LAGP600ZE060BC,600,Z,60,B,C,U,LAGP600ZE060BC.step +LAGP600ZE060WC,600,Z,60,W,C,U,LAGP600ZE060WC.step +LAGP600ZE090BC,600,Z,90,B,C,U,LAGP600ZE090BC.step +LAGP600ZE090WC,600,Z,90,W,C,U,LAGP600ZE090WC.step +LAGP600ZE120BC,600,Z,120,B,C,U,LAGP600ZE120BC.step +LAGP600ZE120WC,600,Z,120,W,C,U,LAGP600ZE120WC.step +LAGP605OA045BC,605,O,45,B,C,A,LAGP605OA045BC.step +LAGP605OA060BC,605,O,60,B,C,A,LAGP605OA060BC.step +LAGP605OA090BC,605,O,90,B,C,A,LAGP605OA090BC.step +LAGP605OA120BC,605,O,120,B,C,A,LAGP605OA120BC.step +LAGP605OE045BC,605,O,45,B,C,U,LAGP605OE045BC.step +LAGP605OE045WC,605,O,45,W,C,U,LAGP605OE045WC.step +LAGP605OE060BC,605,O,60,B,C,U,LAGP605OE060BC.step +LAGP605OE060WC,605,O,60,W,C,U,LAGP605OE060WC.step +LAGP605OE090BC,605,O,90,B,C,U,LAGP605OE090BC.step +LAGP605OE090WC,605,O,90,W,C,U,LAGP605OE090WC.step +LAGP605OE120BC,605,O,120,B,C,U,LAGP605OE120BC.step +LAGP605OE120WC,605,O,120,W,C,U,LAGP605OE120WC.step +LAGP605PA045BC,605,P,45,B,C,A,LAGP605PA045BC.step +LAGP605PA060BC,605,P,60,B,C,A,LAGP605PA060BC.step +LAGP605PE045BC,605,P,45,B,C,U,LAGP605PE045BC.step +LAGP605PE045WC,605,P,45,W,C,U,LAGP605PE045WC.step +LAGP605PE060BC,605,P,60,B,C,U,LAGP605PE060BC.step +LAGP605PE060WC,605,P,60,W,C,U,LAGP605PE060WC.step +LAGP605VA045BC,605,V,45,B,C,A,LAGP605VA045BC.step +LAGP605VA060BC,605,V,60,B,C,A,LAGP605VA060BC.step +LAGP605VA090BC,605,V,90,B,C,A,LAGP605VA090BC.step +LAGP605VA120BC,605,V,120,B,C,A,LAGP605VA120BC.step +LAGP605VE045BC,605,V,45,B,C,U,LAGP605VE045BC.step +LAGP605VE045WC,605,V,45,W,C,U,LAGP605VE045WC.step +LAGP605VE060BC,605,V,60,B,C,U,LAGP605VE060BC.step +LAGP605VE060WC,605,V,60,W,C,U,LAGP605VE060WC.step +LAGP605VE090BC,605,V,90,B,C,U,LAGP605VE090BC.step +LAGP605VE090WC,605,V,90,W,C,U,LAGP605VE090WC.step +LAGP605VE120BC,605,V,120,B,C,U,LAGP605VE120BC.step +LAGP605VE120WC,605,V,120,W,C,U,LAGP605VE120WC.step +LAGP605ZA045BC,605,Z,45,B,C,A,LAGP605ZA045BC.step +LAGP605ZA060BC,605,Z,60,B,C,A,LAGP605ZA060BC.step +LAGP605ZA090BC,605,Z,90,B,C,A,LAGP605ZA090BC.step +LAGP605ZA120BC,605,Z,120,B,C,A,LAGP605ZA120BC.step +LAGP605ZE045BC,605,Z,45,B,C,U,LAGP605ZE045BC.step +LAGP605ZE045WC,605,Z,45,W,C,U,LAGP605ZE045WC.step +LAGP605ZE060BC,605,Z,60,B,C,U,LAGP605ZE060BC.step +LAGP605ZE060WC,605,Z,60,W,C,U,LAGP605ZE060WC.step +LAGP605ZE090BC,605,Z,90,B,C,U,LAGP605ZE090BC.step +LAGP605ZE090WC,605,Z,90,W,C,U,LAGP605ZE090WC.step +LAGP605ZE120BC,605,Z,120,B,C,U,LAGP605ZE120BC.step +LAGP605ZE120WC,605,Z,120,W,C,U,LAGP605ZE120WC.step diff --git a/onebot-data/catalog/csv/UAGP.csv b/onebot-data/catalog/csv/UAGP.csv index 05e8f25..99109ed 100644 --- a/onebot-data/catalog/csv/UAGP.csv +++ b/onebot-data/catalog/csv/UAGP.csv @@ -1,23 +1,242 @@ -model_code,size,type,step_file -UAGP080_W,80,W,UAGP080_W.stp -UAGP080_B,80,B,UAGP080_B.stp -UAGP120_W,120,W,UAGP120_W.stp -UAGP120_B,120,B,UAGP120_B.stp -UAGP150_W,150,W,UAGP150_W.stp -UAGP150_B,150,B,UAGP150_B.stp -UAGP155_W,155,W,UAGP155_W.stp -UAGP155_B,155,B,UAGP155_B.stp -UAGP170_W,170,W,UAGP170_W.stp -UAGP170_B,170,B,UAGP170_B.stp -UAGP210_W,210,W,UAGP210_W.stp -UAGP210_B,210,B,UAGP210_B.stp -UAGP215_W,215,W,UAGP215_W.stp -UAGP215_B,215,B,UAGP215_B.stp -UAGP300_W,300,W,UAGP300_W.stp -UAGP300_B,300,B,UAGP300_B.stp -UAGP350_W,350,W,UAGP350_W.stp -UAGP350_B,350,B,UAGP350_B.stp -UAGP355_W,355,W,UAGP355_W.stp -UAGP355_B,355,B,UAGP355_B.stp -UAGP605_W,605,W,UAGP605_W.stp -UAGP605_B,605,B,UAGP605_B.stp +model_code,size,table_pos,rotation,brake,conn,sensor,step_file +UAGP075OK120WS0,75,O,120,W,S,K,UAGP075OK120WS0.step +UAGP075ZK120WS0,75,Z,120,W,S,K,UAGP075ZK120WS0.step +UAGP075_K045WS0,75,,45,W,S,K,UAGP075_K045WS0.step +UAGP075_K060WS0,75,,60,W,S,K,UAGP075_K060WS0.step +UAGP075_K090WS0,75,,90,W,S,K,UAGP075_K090WS0.step +UAGP075_K120WS0,75,,120,W,S,K,UAGP075_K120WS0.step +UAGP075__045BS0,75,,45,B,S,,UAGP075__045BS0.step +UAGP075__060BS0,75,,60,B,S,,UAGP075__060BS0.step +UAGP075__090BS0,75,,90,B,S,,UAGP075__090BS0.step +UAGP075__120BS0,75,,120,B,S,,UAGP075__120BS0.step +UAGP080OA060BS0,80,O,60,B,S,A,UAGP080OA060BS0.step +UAGP080OA120BP0,80,O,120,B,P,A,UAGP080OA120BP0.step +UAGP080OK120WP0,80,O,120,W,P,K,UAGP080OK120WP0.step +UAGP080OK120WS0,80,O,120,W,S,K,UAGP080OK120WS0.step +UAGP080ZA120BP0,80,Z,120,B,P,A,UAGP080ZA120BP0.step +UAGP080ZK030WP0,80,Z,30,W,P,K,UAGP080ZK030WP0.step +UAGP080ZK120WP0,80,Z,120,W,P,K,UAGP080ZK120WP0.step +UAGP080ZK120WS0,80,Z,120,W,S,K,UAGP080ZK120WS0.step +UAGP080_K045WS0,80,,45,W,S,K,UAGP080_K045WS0.step +UAGP080_K060WS0,80,,60,W,S,K,UAGP080_K060WS0.step +UAGP080_K090WS0,80,,90,W,S,K,UAGP080_K090WS0.step +UAGP080_K120WS0,80,,120,W,S,K,UAGP080_K120WS0.step +UAGP080__045BS0,80,,45,B,S,,UAGP080__045BS0.step +UAGP080__060BS0,80,,60,B,S,,UAGP080__060BS0.step +UAGP080__090BS0,80,,90,B,S,,UAGP080__090BS0.step +UAGP080__120BS0,80,,120,B,S,,UAGP080__120BS0.step +UAGP120OA075BS0,120,O,75,B,S,A,UAGP120OA075BS0.step +UAGP120OA090BP0,120,O,90,B,P,A,UAGP120OA090BP0.step +UAGP120OA090BS0,120,O,90,B,S,A,UAGP120OA090BS0.step +UAGP120OK075WS0,120,O,75,W,S,K,UAGP120OK075WS0.step +UAGP120OK090WP0,120,O,90,W,P,K,UAGP120OK090WP0.step +UAGP120OK120WS0,120,O,120,W,S,K,UAGP120OK120WS0.step +UAGP120PA060BF0,120,P,60,B,F,A,UAGP120PA060BF0.step +UAGP120ZA090BP0,120,Z,90,B,P,A,UAGP120ZA090BP0.step +UAGP120ZK045BP0,120,Z,45,B,P,K,UAGP120ZK045BP0.step +UAGP120ZK090WP0,120,Z,90,W,P,K,UAGP120ZK090WP0.step +UAGP120ZK105WP0,120,Z,105,W,P,K,UAGP120ZK105WP0.step +UAGP120ZK120WP0,120,Z,120,W,P,K,UAGP120ZK120WP0.step +UAGP120ZK120WS0,120,Z,120,W,S,K,UAGP120ZK120WS0.step +UAGP120_K045WS0,120,,45,W,S,K,UAGP120_K045WS0.step +UAGP120_K060WS0,120,,60,W,S,K,UAGP120_K060WS0.step +UAGP120_K090WS0,120,,90,W,S,K,UAGP120_K090WS0.step +UAGP120_K120WS0,120,,120,W,S,K,UAGP120_K120WS0.step +UAGP120__045BS0,120,,45,B,S,,UAGP120__045BS0.step +UAGP120__060BS0,120,,60,B,S,,UAGP120__060BS0.step +UAGP120__090BS0,120,,90,B,S,,UAGP120__090BS0.step +UAGP120__120BS0,120,,120,B,S,,UAGP120__120BS0.step +UAGP150__045BS_,150,,45,B,S,,UAGP150__045BS_.step +UAGP150__060BS_,150,,60,B,S,,UAGP150__060BS_.step +UAGP150__090BS_,150,,90,B,S,,UAGP150__090BS_.step +UAGP150__120BS_,150,,120,B,S,,UAGP150__120BS_.step +UAGP155OA045BP0,155,O,45,B,P,A,UAGP155OA045BP0.step +UAGP155OA060BP0,155,O,60,B,P,A,UAGP155OA060BP0.step +UAGP155OA090BP0,155,O,90,B,P,A,UAGP155OA090BP0.step +UAGP155OA120BP0,155,O,120,B,P,A,UAGP155OA120BP0.step +UAGP155OK045WP0,155,O,45,W,P,K,UAGP155OK045WP0.step +UAGP155OK060WP0,155,O,60,W,P,K,UAGP155OK060WP0.step +UAGP155OK090WP0,155,O,90,W,P,K,UAGP155OK090WP0.step +UAGP155OK120WP0,155,O,120,W,P,K,UAGP155OK120WP0.step +UAGP155PA045BP0,155,P,45,B,P,A,UAGP155PA045BP0.step +UAGP155PA060BP0,155,P,60,B,P,A,UAGP155PA060BP0.step +UAGP155PK045WP0,155,P,45,W,P,K,UAGP155PK045WP0.step +UAGP155PK060WP0,155,P,60,W,P,K,UAGP155PK060WP0.step +UAGP155VA045BP0,155,V,45,B,P,A,UAGP155VA045BP0.step +UAGP155VA060BP0,155,V,60,B,P,A,UAGP155VA060BP0.step +UAGP155VA090BP0,155,V,90,B,P,A,UAGP155VA090BP0.step +UAGP155VA120BP0,155,V,120,B,P,A,UAGP155VA120BP0.step +UAGP155VK045WP0,155,V,45,W,P,K,UAGP155VK045WP0.step +UAGP155VK060WP0,155,V,60,W,P,K,UAGP155VK060WP0.step +UAGP155VK090WP0,155,V,90,W,P,K,UAGP155VK090WP0.step +UAGP155VK120WP0,155,V,120,W,P,K,UAGP155VK120WP0.step +UAGP155ZA045BP0,155,Z,45,B,P,A,UAGP155ZA045BP0.step +UAGP155ZA060BP0,155,Z,60,B,P,A,UAGP155ZA060BP0.step +UAGP155ZA090BP0,155,Z,90,B,P,A,UAGP155ZA090BP0.step +UAGP155ZA120BP0,155,Z,120,B,P,A,UAGP155ZA120BP0.step +UAGP155ZK045WP0,155,Z,45,W,P,K,UAGP155ZK045WP0.step +UAGP155ZK060WP0,155,Z,60,W,P,K,UAGP155ZK060WP0.step +UAGP155ZK090WP0,155,Z,90,W,P,K,UAGP155ZK090WP0.step +UAGP155ZK120WP0,155,Z,120,W,P,K,UAGP155ZK120WP0.step +UAGP155_K045WS0,155,,45,W,S,K,UAGP155_K045WS0.step +UAGP155_K060WS0,155,,60,W,S,K,UAGP155_K060WS0.step +UAGP155_K090WS0,155,,90,W,S,K,UAGP155_K090WS0.step +UAGP155_K120WS0,155,,120,W,S,K,UAGP155_K120WS0.step +UAGP155__045BS0,155,,45,B,S,,UAGP155__045BS0.step +UAGP155__060BS0,155,,60,B,S,,UAGP155__060BS0.step +UAGP155__090BS0,155,,90,B,S,,UAGP155__090BS0.step +UAGP155__120BS0,155,,120,B,S,,UAGP155__120BS0.step +UAGP170OA060BP0,170,O,60,B,P,A,UAGP170OA060BP0.step +UAGP170OK060WP0,170,O,60,W,P,K,UAGP170OK060WP0.step +UAGP170ZA060BP0,170,Z,60,B,P,A,UAGP170ZA060BP0.step +UAGP170ZK060WP0,170,Z,60,W,P,K,UAGP170ZK060WP0.step +UAGP170_K045WS0,170,,45,W,S,K,UAGP170_K045WS0.step +UAGP170_K060WS0,170,,60,W,S,K,UAGP170_K060WS0.step +UAGP170_K090WS0,170,,90,W,S,K,UAGP170_K090WS0.step +UAGP170_K120WS0,170,,120,W,S,K,UAGP170_K120WS0.step +UAGP170__045BS0,170,,45,B,S,,UAGP170__045BS0.step +UAGP170__060BS0,170,,60,B,S,,UAGP170__060BS0.step +UAGP170__090BS0,170,,90,B,S,,UAGP170__090BS0.step +UAGP170__120BS0,170,,120,B,S,,UAGP170__120BS0.step +UAGP210OA090BS0,210,O,90,B,S,A,UAGP210OA090BS0.step +UAGP210OK120WS0,210,O,120,W,S,K,UAGP210OK120WS0.step +UAGP210_K045WS0,210,,45,W,S,K,UAGP210_K045WS0.step +UAGP210_K060WS0,210,,60,W,S,K,UAGP210_K060WS0.step +UAGP210_K090WS0,210,,90,W,S,K,UAGP210_K090WS0.step +UAGP210_K120WS0,210,,120,W,S,K,UAGP210_K120WS0.step +UAGP210__045BS0,210,,45,B,S,,UAGP210__045BS0.step +UAGP210__060BS0,210,,60,B,S,,UAGP210__060BS0.step +UAGP210__075BS0,210,,75,B,S,,UAGP210__075BS0.step +UAGP210__090BS0,210,,90,B,S,,UAGP210__090BS0.step +UAGP210__120BS0,210,,120,B,S,,UAGP210__120BS0.step +UAGP215OA045BP0,215,O,45,B,P,A,UAGP215OA045BP0.step +UAGP215OA060BP0,215,O,60,B,P,A,UAGP215OA060BP0.step +UAGP215OA090BP0,215,O,90,B,P,A,UAGP215OA090BP0.step +UAGP215OA120BP0,215,O,120,B,P,A,UAGP215OA120BP0.step +UAGP215OA120BS0,215,O,120,B,S,A,UAGP215OA120BS0.step +UAGP215OK045WP0,215,O,45,W,P,K,UAGP215OK045WP0.step +UAGP215OK060WD0,215,O,60,W,D,K,UAGP215OK060WD0.step +UAGP215OK060WP0,215,O,60,W,P,K,UAGP215OK060WP0.step +UAGP215OK060WS0,215,O,60,W,S,K,UAGP215OK060WS0.step +UAGP215OK090WP0,215,O,90,W,P,K,UAGP215OK090WP0.step +UAGP215OK090WS0,215,O,90,W,S,K,UAGP215OK090WS0.step +UAGP215OK120WP0,215,O,120,W,P,K,UAGP215OK120WP0.step +UAGP215PA045BP0,215,P,45,B,P,A,UAGP215PA045BP0.step +UAGP215PA060BP0,215,P,60,B,P,A,UAGP215PA060BP0.step +UAGP215PK045WP0,215,P,45,W,P,K,UAGP215PK045WP0.step +UAGP215PK060WP0,215,P,60,W,P,K,UAGP215PK060WP0.step +UAGP215VA045BP0,215,V,45,B,P,A,UAGP215VA045BP0.step +UAGP215VA060BP0,215,V,60,B,P,A,UAGP215VA060BP0.step +UAGP215VA090BP0,215,V,90,B,P,A,UAGP215VA090BP0.step +UAGP215VA120BP0,215,V,120,B,P,A,UAGP215VA120BP0.step +UAGP215VK045WP0,215,V,45,W,P,K,UAGP215VK045WP0.step +UAGP215VK060WP0,215,V,60,W,P,K,UAGP215VK060WP0.step +UAGP215VK090WP0,215,V,90,W,P,K,UAGP215VK090WP0.step +UAGP215VK120WP0,215,V,120,W,P,K,UAGP215VK120WP0.step +UAGP215ZA045BP0,215,Z,45,B,P,A,UAGP215ZA045BP0.step +UAGP215ZA060BP0,215,Z,60,B,P,A,UAGP215ZA060BP0.step +UAGP215ZA090BP0,215,Z,90,B,P,A,UAGP215ZA090BP0.step +UAGP215ZA120BP0,215,Z,120,B,P,A,UAGP215ZA120BP0.step +UAGP215ZK045WP0,215,Z,45,W,P,K,UAGP215ZK045WP0.step +UAGP215ZK060WP0,215,Z,60,W,P,K,UAGP215ZK060WP0.step +UAGP215ZK090WP0,215,Z,90,W,P,K,UAGP215ZK090WP0.step +UAGP215ZK120WP0,215,Z,120,W,P,K,UAGP215ZK120WP0.step +UAGP215__045WS_,215,,45,W,S,,UAGP215__045WS_.step +UAGP215__060WS_,215,,60,W,S,,UAGP215__060WS_.step +UAGP215__090WS_,215,,90,W,S,,UAGP215__090WS_.step +UAGP215__120WS_,215,,120,W,S,,UAGP215__120WS_.step +UAGP300_K045WS0,300,,45,W,S,K,UAGP300_K045WS0.step +UAGP300_K060WS0,300,,60,W,S,K,UAGP300_K060WS0.step +UAGP300_K090WS0,300,,90,W,S,K,UAGP300_K090WS0.step +UAGP300_K120WS0,300,,120,W,S,K,UAGP300_K120WS0.step +UAGP300__045BS0,300,,45,B,S,,UAGP300__045BS0.step +UAGP300__060BS0,300,,60,B,S,,UAGP300__060BS0.step +UAGP300__090BS0,300,,90,B,S,,UAGP300__090BS0.step +UAGP300__120BS0,300,,120,B,S,,UAGP300__120BS0.step +UAGP350_K045WS0,350,,45,W,S,K,UAGP350_K045WS0.step +UAGP350_K060WS0,350,,60,W,S,K,UAGP350_K060WS0.step +UAGP350_K090WS0,350,,90,W,S,K,UAGP350_K090WS0.step +UAGP350_K120WS0,350,,120,W,S,K,UAGP350_K120WS0.step +UAGP350__045BS0,350,,45,B,S,,UAGP350__045BS0.step +UAGP350__060BS0,350,,60,B,S,,UAGP350__060BS0.step +UAGP350__090BS0,350,,90,B,S,,UAGP350__090BS0.step +UAGP350__120BS0,350,,120,B,S,,UAGP350__120BS0.step +UAGP355OA045BP0,355,O,45,B,P,A,UAGP355OA045BP0.step +UAGP355OA060BP0,355,O,60,B,P,A,UAGP355OA060BP0.step +UAGP355OA090BP0,355,O,90,B,P,A,UAGP355OA090BP0.step +UAGP355OA120BP0,355,O,120,B,P,A,UAGP355OA120BP0.step +UAGP355OA120BS0,355,O,120,B,S,A,UAGP355OA120BS0.step +UAGP355OK045WP0,355,O,45,W,P,K,UAGP355OK045WP0.step +UAGP355OK060WP0,355,O,60,W,P,K,UAGP355OK060WP0.step +UAGP355OK090WP0,355,O,90,W,P,K,UAGP355OK090WP0.step +UAGP355OK120WP0,355,O,120,W,P,K,UAGP355OK120WP0.step +UAGP355PA045BP0,355,P,45,B,P,A,UAGP355PA045BP0.step +UAGP355PA060BP0,355,P,60,B,P,A,UAGP355PA060BP0.step +UAGP355PK045WP0,355,P,45,W,P,K,UAGP355PK045WP0.step +UAGP355PK060WP0,355,P,60,W,P,K,UAGP355PK060WP0.step +UAGP355VA045BP0,355,V,45,B,P,A,UAGP355VA045BP0.step +UAGP355VA060BP0,355,V,60,B,P,A,UAGP355VA060BP0.step +UAGP355VA090BP0,355,V,90,B,P,A,UAGP355VA090BP0.step +UAGP355VA120BP0,355,V,120,B,P,A,UAGP355VA120BP0.step +UAGP355VK045WP0,355,V,45,W,P,K,UAGP355VK045WP0.step +UAGP355VK060WP0,355,V,60,W,P,K,UAGP355VK060WP0.step +UAGP355VK090WP0,355,V,90,W,P,K,UAGP355VK090WP0.step +UAGP355VK120WP0,355,V,120,W,P,K,UAGP355VK120WP0.step +UAGP355ZA045BP0,355,Z,45,B,P,A,UAGP355ZA045BP0.step +UAGP355ZA060BP0,355,Z,60,B,P,A,UAGP355ZA060BP0.step +UAGP355ZA090BP0,355,Z,90,B,P,A,UAGP355ZA090BP0.step +UAGP355ZA120BP0,355,Z,120,B,P,A,UAGP355ZA120BP0.step +UAGP355ZK045WP0,355,Z,45,W,P,K,UAGP355ZK045WP0.step +UAGP355ZK060WP0,355,Z,60,W,P,K,UAGP355ZK060WP0.step +UAGP355ZK090WP0,355,Z,90,W,P,K,UAGP355ZK090WP0.step +UAGP355ZK120WP0,355,Z,120,W,P,K,UAGP355ZK120WP0.step +UAGP355__045BS0,355,,45,B,S,,UAGP355__045BS0.step +UAGP355__060BS0,355,,60,B,S,,UAGP355__060BS0.step +UAGP355__090BS0,355,,90,B,S,,UAGP355__090BS0.step +UAGP355__120BS0,355,,120,B,S,,UAGP355__120BS0.step +UAGP600OA045BP0,600,O,45,B,P,A,UAGP600OA045BP0.step +UAGP600OA060BP0,600,O,60,B,P,A,UAGP600OA060BP0.step +UAGP600OA090BP0,600,O,90,B,P,A,UAGP600OA090BP0.step +UAGP600OA120BP0,600,O,120,B,P,A,UAGP600OA120BP0.step +UAGP600OK045WP0,600,O,45,W,P,K,UAGP600OK045WP0.step +UAGP600OK060WP0,600,O,60,W,P,K,UAGP600OK060WP0.step +UAGP600OK090WP0,600,O,90,W,P,K,UAGP600OK090WP0.step +UAGP600OK120BS0,600,O,120,B,S,K,UAGP600OK120BS0.step +UAGP600OK120WP0,600,O,120,W,P,K,UAGP600OK120WP0.step +UAGP600OK120WS0,600,O,120,W,S,K,UAGP600OK120WS0.step +UAGP600PA045BP0,600,P,45,B,P,A,UAGP600PA045BP0.step +UAGP600PA060BP0,600,P,60,B,P,A,UAGP600PA060BP0.step +UAGP600PK045WP0,600,P,45,W,P,K,UAGP600PK045WP0.step +UAGP600PK060WP0,600,P,60,W,P,K,UAGP600PK060WP0.step +UAGP600VA045BP0,600,V,45,B,P,A,UAGP600VA045BP0.step +UAGP600VA060BP0,600,V,60,B,P,A,UAGP600VA060BP0.step +UAGP600VA090BP0,600,V,90,B,P,A,UAGP600VA090BP0.step +UAGP600VA120BP0,600,V,120,B,P,A,UAGP600VA120BP0.step +UAGP600VK045WP0,600,V,45,W,P,K,UAGP600VK045WP0.step +UAGP600VK060WP0,600,V,60,W,P,K,UAGP600VK060WP0.step +UAGP600VK090WP0,600,V,90,W,P,K,UAGP600VK090WP0.step +UAGP600VK120WP0,600,V,120,W,P,K,UAGP600VK120WP0.step +UAGP600ZA045BP0,600,Z,45,B,P,A,UAGP600ZA045BP0.step +UAGP600ZA060BP0,600,Z,60,B,P,A,UAGP600ZA060BP0.step +UAGP600ZA090BP0,600,Z,90,B,P,A,UAGP600ZA090BP0.step +UAGP600ZA120BP0,600,Z,120,B,P,A,UAGP600ZA120BP0.step +UAGP600ZK045WP0,600,Z,45,W,P,K,UAGP600ZK045WP0.step +UAGP600ZK060WP0,600,Z,60,W,P,K,UAGP600ZK060WP0.step +UAGP600ZK090WP0,600,Z,90,W,P,K,UAGP600ZK090WP0.step +UAGP600ZK120WP0,600,Z,120,W,P,K,UAGP600ZK120WP0.step +UAGP600_K045WS0,600,,45,W,S,K,UAGP600_K045WS0.step +UAGP600_K060WS0,600,,60,W,S,K,UAGP600_K060WS0.step +UAGP600_K090WS0,600,,90,W,S,K,UAGP600_K090WS0.step +UAGP600_K120WS0,600,,120,W,S,K,UAGP600_K120WS0.step +UAGP600__045BS0,600,,45,B,S,,UAGP600__045BS0.step +UAGP600__060BS0,600,,60,B,S,,UAGP600__060BS0.step +UAGP600__090BS0,600,,90,B,S,,UAGP600__090BS0.step +UAGP600__120BS0,600,,120,B,S,,UAGP600__120BS0.step +UAGP605_K045WS0,605,,45,W,S,K,UAGP605_K045WS0.step +UAGP605_K060WS0,605,,60,W,S,K,UAGP605_K060WS0.step +UAGP605_K090WS0,605,,90,W,S,K,UAGP605_K090WS0.step +UAGP605_K120WS0,605,,120,W,S,K,UAGP605_K120WS0.step +UAGP605__045BS0,605,,45,B,S,,UAGP605__045BS0.step +UAGP605__060BS0,605,,60,B,S,,UAGP605__060BS0.step +UAGP605__090BS0,605,,90,B,S,,UAGP605__090BS0.step +UAGP605__120BS0,605,,120,B,S,,UAGP605__120BS0.step diff --git a/onebot-data/catalog/csv/ULA.csv b/onebot-data/catalog/csv/ULA.csv new file mode 100644 index 0000000..66b2fe5 --- /dev/null +++ b/onebot-data/catalog/csv/ULA.csv @@ -0,0 +1,20 @@ +model_code,size,stroke,rod,mount,sensor,step_file +ULA40020ASD0,40,20,A,S,D,ULA40020ASD0.step +ULA40020ASK0,40,20,A,S,K,ULA40020ASK0.step +ULA40020GSK0,40,20,G,S,K,ULA40020GSK0.step +ULA40020NSK0,40,20,N,S,K,ULA40020NSK0.step +ULA40020PSK0,40,20,P,S,K,ULA40020PSK0.step +ULA40040ASD0,40,40,A,S,D,ULA40040ASD0.step +ULA40040ASK0,40,40,A,S,K,ULA40040ASK0.step +ULA40040GSD0,40,40,G,S,D,ULA40040GSD0.step +ULA40040GSK0,40,40,G,S,K,ULA40040GSK0.step +ULA40040NSD0,40,40,N,S,D,ULA40040NSD0.step +ULA40040NSK0,40,40,N,S,K,ULA40040NSK0.step +ULA40040PSD0,40,40,P,S,D,ULA40040PSD0.step +ULA40040PSK0,40,40,P,S,K,ULA40040PSK0.step +ULA63015AK0,63,15,A,,K,ULA63015AK0.step +ULA63025AK0,63,25,A,,K,ULA63025AK0.step +ULA63040AD0,63,40,A,,D,ULA63040AD0.step +ULA63040AK0,63,40,A,,K,ULA63040AK0.step +ULA63050AK0,63,50,A,,K,ULA63050AK0.step +ULA63060AK0,63,60,A,,K,ULA63060AK0.step diff --git a/onebot-data/catalog/csv/ULL.csv b/onebot-data/catalog/csv/ULL.csv new file mode 100644 index 0000000..17d204e --- /dev/null +++ b/onebot-data/catalog/csv/ULL.csv @@ -0,0 +1,15 @@ +model_code,size,stroke,rod,orient,sensor,step_file +ULL50040AEK0,50,40,A,E,K,ULL50040AEK0.step +ULL50040ANK0,50,40,A,N,K,ULL50040ANK0.step +ULL50040AOK0,50,40,A,O,K,ULL50040AOK0.step +ULL50040ASK0,50,40,A,S,K,ULL50040ASK0.step +ULL50040BXK0,50,40,B,X,K,ULL50040BXK0.step +ULL50040CXK0,50,40,C,X,K,ULL50040CXK0.step +ULL50040DEK0,50,40,D,E,K,ULL50040DEK0.step +ULL50040DNK0,50,40,D,N,K,ULL50040DNK0.step +ULL50040DOK0,50,40,D,O,K,ULL50040DOK0.step +ULL50040DSK0,50,40,D,S,K,ULL50040DSK0.step +ULL50040EXK0,50,40,E,X,K,ULL50040EXK0.step +ULL50040FXK0,50,40,F,X,K,ULL50040FXK0.step +ULL50040HXK0,50,40,H,X,K,ULL50040HXK0.step +ULL50040IXK0,50,40,I,X,K,ULL50040IXK0.step diff --git a/onebot-data/catalog/csv/ULM.csv b/onebot-data/catalog/csv/ULM.csv new file mode 100644 index 0000000..5e2ec68 --- /dev/null +++ b/onebot-data/catalog/csv/ULM.csv @@ -0,0 +1,71 @@ +model_code,size,stroke,rod,orient,sensor,step_file +ULM50015AEK0,50,15,A,E,K,ULM50015AEK0.step +ULM50015ANK0,50,15,A,N,K,ULM50015ANK0.step +ULM50015AOK0,50,15,A,O,K,ULM50015AOK0.step +ULM50015ASK0,50,15,A,S,K,ULM50015ASK0.step +ULM50015BXK0,50,15,B,X,K,ULM50015BXK0.step +ULM50015CXK0,50,15,C,X,K,ULM50015CXK0.step +ULM50015DEK0,50,15,D,E,K,ULM50015DEK0.step +ULM50015DNK0,50,15,D,N,K,ULM50015DNK0.step +ULM50015DOK0,50,15,D,O,K,ULM50015DOK0.step +ULM50015DSK0,50,15,D,S,K,ULM50015DSK0.step +ULM50015EXK0,50,15,E,X,K,ULM50015EXK0.step +ULM50015FXK0,50,15,F,X,K,ULM50015FXK0.step +ULM50015HXK0,50,15,H,X,K,ULM50015HXK0.step +ULM50015IXK0,50,15,I,X,K,ULM50015IXK0.step +ULM50025AEK0,50,25,A,E,K,ULM50025AEK0.step +ULM50025ANK0,50,25,A,N,K,ULM50025ANK0.step +ULM50025AOK0,50,25,A,O,K,ULM50025AOK0.step +ULM50025ASK0,50,25,A,S,K,ULM50025ASK0.step +ULM50025BXK0,50,25,B,X,K,ULM50025BXK0.step +ULM50025CXK0,50,25,C,X,K,ULM50025CXK0.step +ULM50025DEK0,50,25,D,E,K,ULM50025DEK0.step +ULM50025DNK0,50,25,D,N,K,ULM50025DNK0.step +ULM50025DOK0,50,25,D,O,K,ULM50025DOK0.step +ULM50025DSK0,50,25,D,S,K,ULM50025DSK0.step +ULM50025EXK0,50,25,E,X,K,ULM50025EXK0.step +ULM50025FXK0,50,25,F,X,K,ULM50025FXK0.step +ULM50025HXK0,50,25,H,X,K,ULM50025HXK0.step +ULM50025IXK0,50,25,I,X,K,ULM50025IXK0.step +ULM50040AEK0,50,40,A,E,K,ULM50040AEK0.step +ULM50040ANK0,50,40,A,N,K,ULM50040ANK0.step +ULM50040AOK0,50,40,A,O,K,ULM50040AOK0.step +ULM50040ASK0,50,40,A,S,K,ULM50040ASK0.step +ULM50040BXK0,50,40,B,X,K,ULM50040BXK0.step +ULM50040CXK0,50,40,C,X,K,ULM50040CXK0.step +ULM50040DEK0,50,40,D,E,K,ULM50040DEK0.step +ULM50040DNK0,50,40,D,N,K,ULM50040DNK0.step +ULM50040DOK0,50,40,D,O,K,ULM50040DOK0.step +ULM50040DSK0,50,40,D,S,K,ULM50040DSK0.step +ULM50040EXK0,50,40,E,X,K,ULM50040EXK0.step +ULM50040FXK0,50,40,F,X,K,ULM50040FXK0.step +ULM50040HXK0,50,40,H,X,K,ULM50040HXK0.step +ULM50040IXK0,50,40,I,X,K,ULM50040IXK0.step +ULM50050AEK0,50,50,A,E,K,ULM50050AEK0.step +ULM50050ANK0,50,50,A,N,K,ULM50050ANK0.step +ULM50050AOK0,50,50,A,O,K,ULM50050AOK0.step +ULM50050ASK0,50,50,A,S,K,ULM50050ASK0.step +ULM50050BXK0,50,50,B,X,K,ULM50050BXK0.step +ULM50050CXK0,50,50,C,X,K,ULM50050CXK0.step +ULM50050DEK0,50,50,D,E,K,ULM50050DEK0.step +ULM50050DNK0,50,50,D,N,K,ULM50050DNK0.step +ULM50050DOK0,50,50,D,O,K,ULM50050DOK0.step +ULM50050DSK0,50,50,D,S,K,ULM50050DSK0.step +ULM50050EXK0,50,50,E,X,K,ULM50050EXK0.step +ULM50050FXK0,50,50,F,X,K,ULM50050FXK0.step +ULM50050HXK0,50,50,H,X,K,ULM50050HXK0.step +ULM50050IXK0,50,50,I,X,K,ULM50050IXK0.step +ULM50060AEK0,50,60,A,E,K,ULM50060AEK0.step +ULM50060ANK0,50,60,A,N,K,ULM50060ANK0.step +ULM50060AOK0,50,60,A,O,K,ULM50060AOK0.step +ULM50060ASK0,50,60,A,S,K,ULM50060ASK0.step +ULM50060BXK0,50,60,B,X,K,ULM50060BXK0.step +ULM50060CXK0,50,60,C,X,K,ULM50060CXK0.step +ULM50060DEK0,50,60,D,E,K,ULM50060DEK0.step +ULM50060DNK0,50,60,D,N,K,ULM50060DNK0.step +ULM50060DOK0,50,60,D,O,K,ULM50060DOK0.step +ULM50060DSK0,50,60,D,S,K,ULM50060DSK0.step +ULM50060EXK0,50,60,E,X,K,ULM50060EXK0.step +ULM50060FXK0,50,60,F,X,K,ULM50060FXK0.step +ULM50060HXK0,50,60,H,X,K,ULM50060HXK0.step +ULM50060IXK0,50,60,I,X,K,ULM50060IXK0.step diff --git a/onebot-data/catalog/csv/ULO.csv b/onebot-data/catalog/csv/ULO.csv new file mode 100644 index 0000000..effeb54 --- /dev/null +++ b/onebot-data/catalog/csv/ULO.csv @@ -0,0 +1,6 @@ +model_code,size,stroke,rod,sensor,step_file +ULO50015AK0,50,15,A,K,ULO50015AK0.step +ULO50025AK0,50,25,A,K,ULO50025AK0.step +ULO50040AK0,50,40,A,K,ULO50040AK0.step +ULO50050AK0,50,50,A,K,ULO50050AK0.step +ULO50060AK0,50,60,A,K,ULO50060AK0.step diff --git a/onebot-data/catalog/csv/ULP.csv b/onebot-data/catalog/csv/ULP.csv index fbd0f17..262b00a 100644 --- a/onebot-data/catalog/csv/ULP.csv +++ b/onebot-data/catalog/csv/ULP.csv @@ -1,4 +1,169 @@ -model_code,size,step_file -ULP32,32,ULP32.stp -ULP50,50,ULP50.stp -ULP63,63,ULP63.stp +model_code,size,stroke,rod,orient,sensor,step_file +ULP32020AEK0,32,20,A,E,K,ULP32020AEK0.step +ULP32020ANK0,32,20,A,N,K,ULP32020ANK0.step +ULP32020AOK0,32,20,A,O,K,ULP32020AOK0.step +ULP32020ASK0,32,20,A,S,K,ULP32020ASK0.step +ULP32020BXK0,32,20,B,X,K,ULP32020BXK0.step +ULP32020CXK0,32,20,C,X,K,ULP32020CXK0.step +ULP32020EXK0,32,20,E,X,K,ULP32020EXK0.step +ULP32040AEK0,32,40,A,E,K,ULP32040AEK0.step +ULP32040ANK0,32,40,A,N,K,ULP32040ANK0.step +ULP32040AOK0,32,40,A,O,K,ULP32040AOK0.step +ULP32040ASK0,32,40,A,S,K,ULP32040ASK0.step +ULP32040BXK0,32,40,B,X,K,ULP32040BXK0.step +ULP32040CXK0,32,40,C,X,K,ULP32040CXK0.step +ULP32040EXK0,32,40,E,X,K,ULP32040EXK0.step +ULP50015AEK0,50,15,A,E,K,ULP50015AEK0.step +ULP50015ANK0,50,15,A,N,K,ULP50015ANK0.step +ULP50015AOK0,50,15,A,O,K,ULP50015AOK0.step +ULP50015ASK0,50,15,A,S,K,ULP50015ASK0.step +ULP50015BXK0,50,15,B,X,K,ULP50015BXK0.step +ULP50015CXK0,50,15,C,X,K,ULP50015CXK0.step +ULP50015DEK0,50,15,D,E,K,ULP50015DEK0.step +ULP50015DNK0,50,15,D,N,K,ULP50015DNK0.step +ULP50015DOK0,50,15,D,O,K,ULP50015DOK0.step +ULP50015DSK0,50,15,D,S,K,ULP50015DSK0.step +ULP50015EXK0,50,15,E,X,K,ULP50015EXK0.step +ULP50015FXK0,50,15,F,X,K,ULP50015FXK0.step +ULP50015HXK0,50,15,H,X,K,ULP50015HXK0.step +ULP50015IXK0,50,15,I,X,K,ULP50015IXK0.step +ULP50025AEK0,50,25,A,E,K,ULP50025AEK0.step +ULP50025ANK0,50,25,A,N,K,ULP50025ANK0.step +ULP50025AOK0,50,25,A,O,K,ULP50025AOK0.step +ULP50025ASK0,50,25,A,S,K,ULP50025ASK0.step +ULP50025BXK0,50,25,B,X,K,ULP50025BXK0.step +ULP50025CXK0,50,25,C,X,K,ULP50025CXK0.step +ULP50025DEK0,50,25,D,E,K,ULP50025DEK0.step +ULP50025DNK0,50,25,D,N,K,ULP50025DNK0.step +ULP50025DOK0,50,25,D,O,K,ULP50025DOK0.step +ULP50025DSK0,50,25,D,S,K,ULP50025DSK0.step +ULP50025EXK0,50,25,E,X,K,ULP50025EXK0.step +ULP50025FXK0,50,25,F,X,K,ULP50025FXK0.step +ULP50025HXK0,50,25,H,X,K,ULP50025HXK0.step +ULP50025IXK0,50,25,I,X,K,ULP50025IXK0.step +ULP50040AEK0,50,40,A,E,K,ULP50040AEK0.step +ULP50040ANK0,50,40,A,N,K,ULP50040ANK0.step +ULP50040AOK0,50,40,A,O,K,ULP50040AOK0.step +ULP50040ASK0,50,40,A,S,K,ULP50040ASK0.step +ULP50040BXK0,50,40,B,X,K,ULP50040BXK0.step +ULP50040CXD0,50,40,C,X,D,ULP50040CXD0.step +ULP50040CXK0,50,40,C,X,K,ULP50040CXK0.step +ULP50040DEK0,50,40,D,E,K,ULP50040DEK0.step +ULP50040DNK0,50,40,D,N,K,ULP50040DNK0.step +ULP50040DOK0,50,40,D,O,K,ULP50040DOK0.step +ULP50040DSK0,50,40,D,S,K,ULP50040DSK0.step +ULP50040EXK0,50,40,E,X,K,ULP50040EXK0.step +ULP50040FXK0,50,40,F,X,K,ULP50040FXK0.step +ULP50040HXK0,50,40,H,X,K,ULP50040HXK0.step +ULP50040IXK0,50,40,I,X,K,ULP50040IXK0.step +ULP50040LXK0,50,40,L,X,K,ULP50040LXK0.step +ULP50040MXK0,50,40,M,X,K,ULP50040MXK0.step +ULP50040SK0,50,40,,S,K,ULP50040SK0.step +ULP50050AEK0,50,50,A,E,K,ULP50050AEK0.step +ULP50050ANK0,50,50,A,N,K,ULP50050ANK0.step +ULP50050AOK0,50,50,A,O,K,ULP50050AOK0.step +ULP50050ASK0,50,50,A,S,K,ULP50050ASK0.step +ULP50050BXK0,50,50,B,X,K,ULP50050BXK0.step +ULP50050CXK0,50,50,C,X,K,ULP50050CXK0.step +ULP50050DEK0,50,50,D,E,K,ULP50050DEK0.step +ULP50050DNK0,50,50,D,N,K,ULP50050DNK0.step +ULP50050DOK0,50,50,D,O,K,ULP50050DOK0.step +ULP50050DSK0,50,50,D,S,K,ULP50050DSK0.step +ULP50050EXK0,50,50,E,X,K,ULP50050EXK0.step +ULP50050FXK0,50,50,F,X,K,ULP50050FXK0.step +ULP50050HXK0,50,50,H,X,K,ULP50050HXK0.step +ULP50050IXK0,50,50,I,X,K,ULP50050IXK0.step +ULP50060AEK0,50,60,A,E,K,ULP50060AEK0.step +ULP50060ANK0,50,60,A,N,K,ULP50060ANK0.step +ULP50060AOK0,50,60,A,O,K,ULP50060AOK0.step +ULP50060ASK0,50,60,A,S,K,ULP50060ASK0.step +ULP50060BXK0,50,60,B,X,K,ULP50060BXK0.step +ULP50060CXK0,50,60,C,X,K,ULP50060CXK0.step +ULP50060DEK0,50,60,D,E,K,ULP50060DEK0.step +ULP50060DNK0,50,60,D,N,K,ULP50060DNK0.step +ULP50060DOK0,50,60,D,O,K,ULP50060DOK0.step +ULP50060DSK0,50,60,D,S,K,ULP50060DSK0.step +ULP50060EXK0,50,60,E,X,K,ULP50060EXK0.step +ULP50060FXK0,50,60,F,X,K,ULP50060FXK0.step +ULP50060HXK0,50,60,H,X,K,ULP50060HXK0.step +ULP50060IXK0,50,60,I,X,K,ULP50060IXK0.step +ULP50060LXK0,50,60,L,X,K,ULP50060LXK0.step +ULP50060MXK0,50,60,M,X,K,ULP50060MXK0.step +ULP50075CXK0,50,75,C,X,K,ULP50075CXK0.step +ULP50075HXK0,50,75,H,X,K,ULP50075HXK0.step +ULP50100CXK0,50,100,C,X,K,ULP50100CXK0.step +ULP50100HXK0,50,100,H,X,K,ULP50100HXK0.step +ULP50110BXK0,50,110,B,X,K,ULP50110BXK0.step +ULP50110CXK0,50,110,C,X,K,ULP50110CXK0.step +ULP50110HXK0,50,110,H,X,K,ULP50110HXK0.step +ULP63015AEK0,63,15,A,E,K,ULP63015AEK0.step +ULP63015ANK0,63,15,A,N,K,ULP63015ANK0.step +ULP63015AOK0,63,15,A,O,K,ULP63015AOK0.step +ULP63015ASK0,63,15,A,S,K,ULP63015ASK0.step +ULP63015BXK0,63,15,B,X,K,ULP63015BXK0.step +ULP63015CXK0,63,15,C,X,K,ULP63015CXK0.step +ULP63015DEK0,63,15,D,E,K,ULP63015DEK0.step +ULP63015DNK0,63,15,D,N,K,ULP63015DNK0.step +ULP63015DOK0,63,15,D,O,K,ULP63015DOK0.step +ULP63015DSK0,63,15,D,S,K,ULP63015DSK0.step +ULP63015EXK0,63,15,E,X,K,ULP63015EXK0.step +ULP63015FXK0,63,15,F,X,K,ULP63015FXK0.step +ULP63015HXK0,63,15,H,X,K,ULP63015HXK0.step +ULP63015IXK0,63,15,I,X,K,ULP63015IXK0.step +ULP63025AEK0,63,25,A,E,K,ULP63025AEK0.step +ULP63025ANK0,63,25,A,N,K,ULP63025ANK0.step +ULP63025AOK0,63,25,A,O,K,ULP63025AOK0.step +ULP63025ASK0,63,25,A,S,K,ULP63025ASK0.step +ULP63025BXK0,63,25,B,X,K,ULP63025BXK0.step +ULP63025CXK0,63,25,C,X,K,ULP63025CXK0.step +ULP63025DEK0,63,25,D,E,K,ULP63025DEK0.step +ULP63025DNK0,63,25,D,N,K,ULP63025DNK0.step +ULP63025DOK0,63,25,D,O,K,ULP63025DOK0.step +ULP63025DSK0,63,25,D,S,K,ULP63025DSK0.step +ULP63025EXK0,63,25,E,X,K,ULP63025EXK0.step +ULP63025FXK0,63,25,F,X,K,ULP63025FXK0.step +ULP63025HXK0,63,25,H,X,K,ULP63025HXK0.step +ULP63025IXK0,63,25,I,X,K,ULP63025IXK0.step +ULP63040AEK0,63,40,A,E,K,ULP63040AEK0.step +ULP63040ANK0,63,40,A,N,K,ULP63040ANK0.step +ULP63040AOK0,63,40,A,O,K,ULP63040AOK0.step +ULP63040ASK0,63,40,A,S,K,ULP63040ASK0.step +ULP63040BXK0,63,40,B,X,K,ULP63040BXK0.step +ULP63040CXD0,63,40,C,X,D,ULP63040CXD0.step +ULP63040CXK0,63,40,C,X,K,ULP63040CXK0.step +ULP63040DEK0,63,40,D,E,K,ULP63040DEK0.step +ULP63040DNK0,63,40,D,N,K,ULP63040DNK0.step +ULP63040DOK0,63,40,D,O,K,ULP63040DOK0.step +ULP63040DSK0,63,40,D,S,K,ULP63040DSK0.step +ULP63040EXK0,63,40,E,X,K,ULP63040EXK0.step +ULP63040FXK0,63,40,F,X,K,ULP63040FXK0.step +ULP63040HXK0,63,40,H,X,K,ULP63040HXK0.step +ULP63040IXK0,63,40,I,X,K,ULP63040IXK0.step +ULP63050AEK0,63,50,A,E,K,ULP63050AEK0.step +ULP63050ANK0,63,50,A,N,K,ULP63050ANK0.step +ULP63050AOK0,63,50,A,O,K,ULP63050AOK0.step +ULP63050ASK0,63,50,A,S,K,ULP63050ASK0.step +ULP63050BXK0,63,50,B,X,K,ULP63050BXK0.step +ULP63050CXK0,63,50,C,X,K,ULP63050CXK0.step +ULP63050DEK0,63,50,D,E,K,ULP63050DEK0.step +ULP63050DNK0,63,50,D,N,K,ULP63050DNK0.step +ULP63050DOK0,63,50,D,O,K,ULP63050DOK0.step +ULP63050DSK0,63,50,D,S,K,ULP63050DSK0.step +ULP63050EXK0,63,50,E,X,K,ULP63050EXK0.step +ULP63050FXK0,63,50,F,X,K,ULP63050FXK0.step +ULP63050HXK0,63,50,H,X,K,ULP63050HXK0.step +ULP63050IXK0,63,50,I,X,K,ULP63050IXK0.step +ULP63060AEK0,63,60,A,E,K,ULP63060AEK0.step +ULP63060ANK0,63,60,A,N,K,ULP63060ANK0.step +ULP63060AOK0,63,60,A,O,K,ULP63060AOK0.step +ULP63060ASK0,63,60,A,S,K,ULP63060ASK0.step +ULP63060BXK0,63,60,B,X,K,ULP63060BXK0.step +ULP63060CXK0,63,60,C,X,K,ULP63060CXK0.step +ULP63060DEK0,63,60,D,E,K,ULP63060DEK0.step +ULP63060DNK0,63,60,D,N,K,ULP63060DNK0.step +ULP63060DOK0,63,60,D,O,K,ULP63060DOK0.step +ULP63060DSK0,63,60,D,S,K,ULP63060DSK0.step +ULP63060EXK0,63,60,E,X,K,ULP63060EXK0.step +ULP63060FXK0,63,60,F,X,K,ULP63060FXK0.step +ULP63060HXK0,63,60,H,X,K,ULP63060HXK0.step +ULP63060IXK0,63,60,I,X,K,ULP63060IXK0.step diff --git a/onebot-data/catalog/csv/ULT.csv b/onebot-data/catalog/csv/ULT.csv new file mode 100644 index 0000000..e13fd27 --- /dev/null +++ b/onebot-data/catalog/csv/ULT.csv @@ -0,0 +1,4 @@ +model_code,size,stroke,rod,sensor,step_file +ULT50040AK0,50,40,A,K,ULT50040AK0.step +ULT50040GK0,50,40,G,K,ULT50040GK0.step +ULT50040GN0,50,40,G,N,ULT50040GN0.step diff --git a/onebot-data/catalog/csv/ULX.csv b/onebot-data/catalog/csv/ULX.csv new file mode 100644 index 0000000..5d17641 --- /dev/null +++ b/onebot-data/catalog/csv/ULX.csv @@ -0,0 +1,5 @@ +model_code,size,stroke,rod,sensor,step_file +ULX50040AK0,50,40,A,K,ULX50040AK0.step +ULX50040AN0,50,40,A,N,ULX50040AN0.step +ULX50040GK0,50,40,G,K,ULX50040GK0.step +ULX50040GN0,50,40,G,N,ULX50040GN0.step diff --git a/onebot-data/catalog/csv/ULY.csv b/onebot-data/catalog/csv/ULY.csv new file mode 100644 index 0000000..c025081 --- /dev/null +++ b/onebot-data/catalog/csv/ULY.csv @@ -0,0 +1,11 @@ +model_code,size,stroke,rod,orient,sensor,step_file +ULY40040AEK0,40,40,A,E,K,ULY40040AEK0.step +ULY40040ANK0,40,40,A,N,K,ULY40040ANK0.step +ULY40040AOK0,40,40,A,O,K,ULY40040AOK0.step +ULY40040ASK0,40,40,A,S,K,ULY40040ASK0.step +ULY40040BXK0,40,40,B,X,K,ULY40040BXK0.step +ULY40040CXK0,40,40,C,X,K,ULY40040CXK0.step +ULY40040DEK0,40,40,D,E,K,ULY40040DEK0.step +ULY40040DNK0,40,40,D,N,K,ULY40040DNK0.step +ULY40040DOK0,40,40,D,O,K,ULY40040DOK0.step +ULY40040DSK0,40,40,D,S,K,ULY40040DSK0.step diff --git a/onebot-data/catalog/csv/ULZ.csv b/onebot-data/catalog/csv/ULZ.csv new file mode 100644 index 0000000..0c4094a --- /dev/null +++ b/onebot-data/catalog/csv/ULZ.csv @@ -0,0 +1,11 @@ +model_code,size,stroke,rod,orient,sensor,step_file +ULZ40040AEK0,40,40,A,E,K,ULZ40040AEK0.step +ULZ40040ANK0,40,40,A,N,K,ULZ40040ANK0.step +ULZ40040AOK0,40,40,A,O,K,ULZ40040AOK0.step +ULZ40040ASK0,40,40,A,S,K,ULZ40040ASK0.step +ULZ40040BXK0,40,40,B,X,K,ULZ40040BXK0.step +ULZ40040CXK0,40,40,C,X,K,ULZ40040CXK0.step +ULZ40040DEK0,40,40,D,E,K,ULZ40040DEK0.step +ULZ40040DNK0,40,40,D,N,K,ULZ40040DNK0.step +ULZ40040DOK0,40,40,D,O,K,ULZ40040DOK0.step +ULZ40040DSK0,40,40,D,S,K,ULZ40040DSK0.step diff --git a/onebot-data/catalog/csv/USL.csv b/onebot-data/catalog/csv/USL.csv new file mode 100644 index 0000000..26f5e06 --- /dev/null +++ b/onebot-data/catalog/csv/USL.csv @@ -0,0 +1,2 @@ +model_code,size,pcmodel,pin_dia,locating,prog,sensor,step_file +USL50J31007N0,50,J,3,1,007,N,USL50J31007N0.step diff --git a/onebot-data/catalog/csv/USP.csv b/onebot-data/catalog/csv/USP.csv index a809819..c78eba0 100644 --- a/onebot-data/catalog/csv/USP.csv +++ b/onebot-data/catalog/csv/USP.csv @@ -1,4 +1,14 @@ -model_code,size,step_file -USP32,32,USP32.stp -USP50,50,USP50.stp -USP63,63,USP63.stp +model_code,size,pcmodel,pin_dia,locating,prog,sensor,step_file +USP50J11002K1,50,J,1,1,002,K,USP50J11002K1.step +USP50J11003K1P,50,J,1,1,003,K,USP50J11003K1P.step +USP50J11004K0,50,J,1,1,004,K,USP50J11004K0.step +USP50J11005K0,50,J,1,1,005,K,USP50J11005K0.step +USP50J11009K0,50,J,1,1,009,K,USP50J11009K0.step +USP50J21010K0,50,J,2,1,010,K,USP50J21010K0.step +USP50J21013K0,50,J,2,1,013,K,USP50J21013K0.step +USP50J31009K0,50,J,3,1,009,K,USP50J31009K0.step +USP50J31010K0,50,J,3,1,010,K,USP50J31010K0.step +USP50J41005K0,50,J,4,1,005,K,USP50J41005K0.step +USP50J41014K0,50,J,4,1,014,K,USP50J41014K0.step +USP50J41015K0,50,J,4,1,015,K,USP50J41015K0.step +USP50J51001K1,50,J,5,1,001,K,USP50J51001K1.step diff --git a/onebot-data/catalog/csv/USR.csv b/onebot-data/catalog/csv/USR.csv new file mode 100644 index 0000000..b401d56 --- /dev/null +++ b/onebot-data/catalog/csv/USR.csv @@ -0,0 +1,14 @@ +model_code,size,pcmodel,hook,pin_dia,locating,prog,sensor,step_file +USR40F21D001K0,40,F,D,2,1,001,K,USR40F21D001K0.step +USR40F41D001K0,40,F,D,4,1,001,K,USR40F41D001K0.step +USR40F41D002K0,40,F,D,4,1,002,K,USR40F41D002K0.step +USR40F41D003K0,40,F,D,4,1,003,K,USR40F41D003K0.step +USR40F41D004K0,40,F,D,4,1,004,K,USR40F41D004K0.step +USR40F41D005K0,40,F,D,4,1,005,K,USR40F41D005K0.step +USR40F41D006K0,40,F,D,4,1,006,K,USR40F41D006K0.step +USR40F41D007K0,40,F,D,4,1,007,K,USR40F41D007K0.step +USR40F41D008K0,40,F,D,4,1,008,K,USR40F41D008K0.step +USR40J11S005K0,40,J,S,1,1,005,K,USR40J11S005K0.step +USR40J11S013K0,40,J,S,1,1,013,K,USR40J11S013K0.step +USR40J21S003K0,40,J,S,2,1,003,K,USR40J21S003K0.step +USR40J51S002K0,40,J,S,5,1,002,K,USR40J51S002K0.step diff --git a/onebot-data/catalog/csv/USS.csv b/onebot-data/catalog/csv/USS.csv new file mode 100644 index 0000000..92f978d --- /dev/null +++ b/onebot-data/catalog/csv/USS.csv @@ -0,0 +1,34 @@ +model_code,size,pcmodel,hook_pos,pin_dia,locating,prog,sensor,step_file +USS32JB11004K0,32,J,B,1,1,004,K,USS32JB11004K0.step +USS32JB11007K0,32,J,B,1,1,007,K,USS32JB11007K0.step +USS32JB11008K0,32,J,B,1,1,008,K,USS32JB11008K0.step +USS50JB21028K0,50,J,B,2,1,028,K,USS50JB21028K0.step +USS50JB21029K0,50,J,B,2,1,029,K,USS50JB21029K0.step +USS50JB31016K0,50,J,B,3,1,016,K,USS50JB31016K0.step +USS50JB31017K0,50,J,B,3,1,017,K,USS50JB31017K0.step +USS50JB41007K0,50,J,B,4,1,007,K,USS50JB41007K0.step +USS50JB41016K0,50,J,B,4,1,016,K,USS50JB41016K0.step +USS50JB41017K0,50,J,B,4,1,017,K,USS50JB41017K0.step +USS50JB41018K0,50,J,B,4,1,018,K,USS50JB41018K0.step +USS50JB41019K0,50,J,B,4,1,019,K,USS50JB41019K0.step +USS50JB41020K0,50,J,B,4,1,020,K,USS50JB41020K0.step +USS50JB41021K0,50,J,B,4,1,021,K,USS50JB41021K0.step +USS50JB51003K1,50,J,B,5,1,003,K,USS50JB51003K1.step +USS50JB51004K1,50,J,B,5,1,004,K,USS50JB51004K1.step +USS50JB51021K0,50,J,B,5,1,021,K,USS50JB51021K0.step +USS50JB51023K0,50,J,B,5,1,023,K,USS50JB51023K0.step +USS50JC51022K0,50,J,C,5,1,022,K,USS50JC51022K0.step +USS55JB41001K0,55,J,B,4,1,001,K,USS55JB41001K0.step +USS55JC31001K0,55,J,C,3,1,001,K,USS55JC31001K0.step +USS55JC51001K0,55,J,C,5,1,001,K,USS55JC51001K0.step +USS60JC31001K0,60,J,C,3,1,001,K,USS60JC31001K0.step +USS60JC31002K0,60,J,C,3,1,002,K,USS60JC31002K0.step +USS60JC31003K0,60,J,C,3,1,003,K,USS60JC31003K0.step +USS60JC31004K0,60,J,C,3,1,004,K,USS60JC31004K0.step +USSL50JB31001N0,50,J,B,3,1,001,N,USSL50JB31001N0.step +USSL50JB31002N0,50,J,B,3,1,002,N,USSL50JB31002N0.step +USSL50JB41001N0,50,J,B,4,1,001,N,USSL50JB41001N0.step +USSL50JB51001N0,50,J,B,5,1,001,N,USSL50JB51001N0.step +USSL50JC31001N0,50,J,C,3,1,001,N,USSL50JC31001N0.step +USSL50JC31002N0,50,J,C,3,1,002,N,USSL50JC31002N0.step +USSL50JC51001N0,50,J,C,5,1,001,N,USSL50JC51001N0.step diff --git a/onebot-data/catalog/csv/USSL.csv b/onebot-data/catalog/csv/USSL.csv new file mode 100644 index 0000000..58f5182 --- /dev/null +++ b/onebot-data/catalog/csv/USSL.csv @@ -0,0 +1,8 @@ +model_code,size,pcmodel,hook_pos,pin_dia,locating,prog,sensor,step_file +USSL50JB31001N0,50,J,B,3,1,001,N,USSL50JB31001N0.step +USSL50JB31002N0,50,J,B,3,1,002,N,USSL50JB31002N0.step +USSL50JB41001N0,50,J,B,4,1,001,N,USSL50JB41001N0.step +USSL50JB51001N0,50,J,B,5,1,001,N,USSL50JB51001N0.step +USSL50JC31001N0,50,J,C,3,1,001,N,USSL50JC31001N0.step +USSL50JC31002N0,50,J,C,3,1,002,N,USSL50JC31002N0.step +USSL50JC51001N0,50,J,C,5,1,001,N,USSL50JC51001N0.step diff --git a/onebot-data/catalog/manual/KC/p02.png b/onebot-data/catalog/manual/KC/p02.png index d0879aa..6beb74f 100644 Binary files a/onebot-data/catalog/manual/KC/p02.png and b/onebot-data/catalog/manual/KC/p02.png differ diff --git a/onebot-data/catalog/manual/KC/p03.png b/onebot-data/catalog/manual/KC/p03.png index d462402..4d6bda2 100644 Binary files a/onebot-data/catalog/manual/KC/p03.png and b/onebot-data/catalog/manual/KC/p03.png differ diff --git a/onebot-data/catalog/manual/KC/p04.png b/onebot-data/catalog/manual/KC/p04.png index 9150641..bd746dd 100644 Binary files a/onebot-data/catalog/manual/KC/p04.png and b/onebot-data/catalog/manual/KC/p04.png differ diff --git a/onebot-data/catalog/manual/KC/p05.png b/onebot-data/catalog/manual/KC/p05.png index cb90bac..8ee0b7a 100644 Binary files a/onebot-data/catalog/manual/KC/p05.png and b/onebot-data/catalog/manual/KC/p05.png differ diff --git a/onebot-data/catalog/manual/KC/p06.png b/onebot-data/catalog/manual/KC/p06.png index 4270c2d..de672bd 100644 Binary files a/onebot-data/catalog/manual/KC/p06.png and b/onebot-data/catalog/manual/KC/p06.png differ diff --git a/onebot-data/catalog/manual/KC/p11.png b/onebot-data/catalog/manual/KC/p11.png index 5cbc86a..03ef2f5 100644 Binary files a/onebot-data/catalog/manual/KC/p11.png and b/onebot-data/catalog/manual/KC/p11.png differ diff --git a/onebot-data/catalog/manual/KC/p12.png b/onebot-data/catalog/manual/KC/p12.png index ccfc015..3968309 100644 Binary files a/onebot-data/catalog/manual/KC/p12.png and b/onebot-data/catalog/manual/KC/p12.png differ diff --git a/onebot-data/catalog/manual/KCB/p09.png b/onebot-data/catalog/manual/KCB/p09.png index db3a983..254f22c 100644 Binary files a/onebot-data/catalog/manual/KCB/p09.png and b/onebot-data/catalog/manual/KCB/p09.png differ diff --git a/onebot-data/catalog/manual/KCB/p10.png b/onebot-data/catalog/manual/KCB/p10.png index 7a7f1ec..1221881 100644 Binary files a/onebot-data/catalog/manual/KCB/p10.png and b/onebot-data/catalog/manual/KCB/p10.png differ diff --git a/onebot-data/catalog/manual/KCS/p13.png b/onebot-data/catalog/manual/KCS/p13.png index 1333c97..ab59bc5 100644 Binary files a/onebot-data/catalog/manual/KCS/p13.png and b/onebot-data/catalog/manual/KCS/p13.png differ diff --git a/onebot-data/catalog/manual/KS/p14.png b/onebot-data/catalog/manual/KS/p14.png index 9a71e89..99c63aa 100644 Binary files a/onebot-data/catalog/manual/KS/p14.png and b/onebot-data/catalog/manual/KS/p14.png differ diff --git a/onebot-data/catalog/manual/KS/p15.png b/onebot-data/catalog/manual/KS/p15.png index cdbbaa1..97f2481 100644 Binary files a/onebot-data/catalog/manual/KS/p15.png and b/onebot-data/catalog/manual/KS/p15.png differ diff --git a/onebot-data/catalog/manual/KSB/p16.png b/onebot-data/catalog/manual/KSB/p16.png index 8f372b1..9fb0d65 100644 Binary files a/onebot-data/catalog/manual/KSB/p16.png and b/onebot-data/catalog/manual/KSB/p16.png differ diff --git a/onebot-data/catalog/manual/KSB/p17.png b/onebot-data/catalog/manual/KSB/p17.png index 268c69f..5f30090 100644 Binary files a/onebot-data/catalog/manual/KSB/p17.png and b/onebot-data/catalog/manual/KSB/p17.png differ diff --git a/onebot-data/catalog/manual/KSU/p14.png b/onebot-data/catalog/manual/KSU/p14.png index 9a71e89..99c63aa 100644 Binary files a/onebot-data/catalog/manual/KSU/p14.png and b/onebot-data/catalog/manual/KSU/p14.png differ diff --git a/onebot-data/catalog/manual/KSU/p15.png b/onebot-data/catalog/manual/KSU/p15.png index cdbbaa1..97f2481 100644 Binary files a/onebot-data/catalog/manual/KSU/p15.png and b/onebot-data/catalog/manual/KSU/p15.png differ diff --git a/onebot-data/catalog/manual/LAE/LAE_manual.pdf b/onebot-data/catalog/manual/LAE/LAE_manual.pdf index 6bcd62e..b800080 100644 Binary files a/onebot-data/catalog/manual/LAE/LAE_manual.pdf and b/onebot-data/catalog/manual/LAE/LAE_manual.pdf differ diff --git a/onebot-data/catalog/manual/LAE/p01.png b/onebot-data/catalog/manual/LAE/p01.png index 4f821ac..a4194a5 100644 Binary files a/onebot-data/catalog/manual/LAE/p01.png and b/onebot-data/catalog/manual/LAE/p01.png differ diff --git a/onebot-data/catalog/manual/LAE/p02.png b/onebot-data/catalog/manual/LAE/p02.png new file mode 100644 index 0000000..b9ed293 Binary files /dev/null and b/onebot-data/catalog/manual/LAE/p02.png differ diff --git a/onebot-data/catalog/manual/LAE/p03.png b/onebot-data/catalog/manual/LAE/p03.png new file mode 100644 index 0000000..e1bbfdc Binary files /dev/null and b/onebot-data/catalog/manual/LAE/p03.png differ diff --git a/onebot-data/catalog/manual/LAE/p04.png b/onebot-data/catalog/manual/LAE/p04.png new file mode 100644 index 0000000..3ef36bd Binary files /dev/null and b/onebot-data/catalog/manual/LAE/p04.png differ diff --git a/onebot-data/catalog/manual/LAE/p05.png b/onebot-data/catalog/manual/LAE/p05.png new file mode 100644 index 0000000..8b7bc4b Binary files /dev/null and b/onebot-data/catalog/manual/LAE/p05.png differ diff --git a/onebot-data/catalog/manual/LAE/p06.png b/onebot-data/catalog/manual/LAE/p06.png new file mode 100644 index 0000000..23552b6 Binary files /dev/null and b/onebot-data/catalog/manual/LAE/p06.png differ diff --git a/onebot-data/catalog/manual/LAE/p07.png b/onebot-data/catalog/manual/LAE/p07.png new file mode 100644 index 0000000..6036644 Binary files /dev/null and b/onebot-data/catalog/manual/LAE/p07.png differ diff --git a/onebot-data/catalog/manual/LAE/p08.png b/onebot-data/catalog/manual/LAE/p08.png new file mode 100644 index 0000000..fe4c608 Binary files /dev/null and b/onebot-data/catalog/manual/LAE/p08.png differ diff --git a/onebot-data/catalog/manual/LAE/p09.png b/onebot-data/catalog/manual/LAE/p09.png new file mode 100644 index 0000000..1dac550 Binary files /dev/null and b/onebot-data/catalog/manual/LAE/p09.png differ diff --git a/onebot-data/catalog/manual/LAE/p10.png b/onebot-data/catalog/manual/LAE/p10.png new file mode 100644 index 0000000..a3b60f6 Binary files /dev/null and b/onebot-data/catalog/manual/LAE/p10.png differ diff --git a/onebot-data/catalog/manual/LAE/p11.png b/onebot-data/catalog/manual/LAE/p11.png new file mode 100644 index 0000000..45d12cf Binary files /dev/null and b/onebot-data/catalog/manual/LAE/p11.png differ diff --git a/onebot-data/catalog/manual/LAE/p12.png b/onebot-data/catalog/manual/LAE/p12.png new file mode 100644 index 0000000..74e5d97 Binary files /dev/null and b/onebot-data/catalog/manual/LAE/p12.png differ diff --git a/onebot-data/catalog/manual/LAGP/LAGP_manual.pdf b/onebot-data/catalog/manual/LAGP/LAGP_manual.pdf new file mode 100644 index 0000000..95c0bec Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/LAGP_manual.pdf differ diff --git a/onebot-data/catalog/manual/LAGP/p01.png b/onebot-data/catalog/manual/LAGP/p01.png new file mode 100644 index 0000000..a9cc09f Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p01.png differ diff --git a/onebot-data/catalog/manual/LAGP/p02.png b/onebot-data/catalog/manual/LAGP/p02.png new file mode 100644 index 0000000..44f7eb3 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p02.png differ diff --git a/onebot-data/catalog/manual/LAGP/p03.png b/onebot-data/catalog/manual/LAGP/p03.png new file mode 100644 index 0000000..5fe3b20 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p03.png differ diff --git a/onebot-data/catalog/manual/LAGP/p04.png b/onebot-data/catalog/manual/LAGP/p04.png new file mode 100644 index 0000000..d48b251 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p04.png differ diff --git a/onebot-data/catalog/manual/LAGP/p05.png b/onebot-data/catalog/manual/LAGP/p05.png new file mode 100644 index 0000000..e6fd1e3 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p05.png differ diff --git a/onebot-data/catalog/manual/LAGP/p06.png b/onebot-data/catalog/manual/LAGP/p06.png new file mode 100644 index 0000000..5aba8f8 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p06.png differ diff --git a/onebot-data/catalog/manual/LAGP/p07.png b/onebot-data/catalog/manual/LAGP/p07.png new file mode 100644 index 0000000..02d6749 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p07.png differ diff --git a/onebot-data/catalog/manual/LAGP/p08.png b/onebot-data/catalog/manual/LAGP/p08.png new file mode 100644 index 0000000..024aeef Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p08.png differ diff --git a/onebot-data/catalog/manual/LAGP/p09.png b/onebot-data/catalog/manual/LAGP/p09.png new file mode 100644 index 0000000..6ef4be1 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p09.png differ diff --git a/onebot-data/catalog/manual/LAGP/p10.png b/onebot-data/catalog/manual/LAGP/p10.png new file mode 100644 index 0000000..0926be7 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p10.png differ diff --git a/onebot-data/catalog/manual/LAGP/p11.png b/onebot-data/catalog/manual/LAGP/p11.png new file mode 100644 index 0000000..c37fedf Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p11.png differ diff --git a/onebot-data/catalog/manual/LAGP/p12.png b/onebot-data/catalog/manual/LAGP/p12.png new file mode 100644 index 0000000..83819a5 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p12.png differ diff --git a/onebot-data/catalog/manual/LAGP/p13.png b/onebot-data/catalog/manual/LAGP/p13.png new file mode 100644 index 0000000..63139d4 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p13.png differ diff --git a/onebot-data/catalog/manual/LAGP/p14.png b/onebot-data/catalog/manual/LAGP/p14.png new file mode 100644 index 0000000..be289c9 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p14.png differ diff --git a/onebot-data/catalog/manual/LAGP/p15.png b/onebot-data/catalog/manual/LAGP/p15.png new file mode 100644 index 0000000..62cffc7 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p15.png differ diff --git a/onebot-data/catalog/manual/LAGP/p16.png b/onebot-data/catalog/manual/LAGP/p16.png new file mode 100644 index 0000000..ceb0e81 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p16.png differ diff --git a/onebot-data/catalog/manual/LAGP/p17.png b/onebot-data/catalog/manual/LAGP/p17.png new file mode 100644 index 0000000..c1fb79d Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p17.png differ diff --git a/onebot-data/catalog/manual/LAGP/p18.png b/onebot-data/catalog/manual/LAGP/p18.png new file mode 100644 index 0000000..f995750 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p18.png differ diff --git a/onebot-data/catalog/manual/LAGP/p19.png b/onebot-data/catalog/manual/LAGP/p19.png new file mode 100644 index 0000000..bb4187a Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p19.png differ diff --git a/onebot-data/catalog/manual/LAGP/p20.png b/onebot-data/catalog/manual/LAGP/p20.png new file mode 100644 index 0000000..d2fc53c Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p20.png differ diff --git a/onebot-data/catalog/manual/LAGP/p21.png b/onebot-data/catalog/manual/LAGP/p21.png new file mode 100644 index 0000000..6a52e83 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p21.png differ diff --git a/onebot-data/catalog/manual/LAGP/p22.png b/onebot-data/catalog/manual/LAGP/p22.png new file mode 100644 index 0000000..500a928 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p22.png differ diff --git a/onebot-data/catalog/manual/LAGP/p23.png b/onebot-data/catalog/manual/LAGP/p23.png new file mode 100644 index 0000000..62152da Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p23.png differ diff --git a/onebot-data/catalog/manual/LAGP/p24.png b/onebot-data/catalog/manual/LAGP/p24.png new file mode 100644 index 0000000..debeb50 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p24.png differ diff --git a/onebot-data/catalog/manual/LAGP/p25.png b/onebot-data/catalog/manual/LAGP/p25.png new file mode 100644 index 0000000..984b6da Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p25.png differ diff --git a/onebot-data/catalog/manual/LAGP/p26.png b/onebot-data/catalog/manual/LAGP/p26.png new file mode 100644 index 0000000..9e2c93b Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p26.png differ diff --git a/onebot-data/catalog/manual/LAGP/p27.png b/onebot-data/catalog/manual/LAGP/p27.png new file mode 100644 index 0000000..f6a426c Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p27.png differ diff --git a/onebot-data/catalog/manual/LAGP/p28.png b/onebot-data/catalog/manual/LAGP/p28.png new file mode 100644 index 0000000..09487e6 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p28.png differ diff --git a/onebot-data/catalog/manual/LAGP/p29.png b/onebot-data/catalog/manual/LAGP/p29.png new file mode 100644 index 0000000..fc84844 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p29.png differ diff --git a/onebot-data/catalog/manual/LAGP/p30.png b/onebot-data/catalog/manual/LAGP/p30.png new file mode 100644 index 0000000..ab8a270 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p30.png differ diff --git a/onebot-data/catalog/manual/LAGP/p31.png b/onebot-data/catalog/manual/LAGP/p31.png new file mode 100644 index 0000000..5f393ee Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p31.png differ diff --git a/onebot-data/catalog/manual/LAGP/p32.png b/onebot-data/catalog/manual/LAGP/p32.png new file mode 100644 index 0000000..62152da Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p32.png differ diff --git a/onebot-data/catalog/manual/LAGP/p33.png b/onebot-data/catalog/manual/LAGP/p33.png new file mode 100644 index 0000000..b5325aa Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p33.png differ diff --git a/onebot-data/catalog/manual/LAGP/p34.png b/onebot-data/catalog/manual/LAGP/p34.png new file mode 100644 index 0000000..c30bc95 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p34.png differ diff --git a/onebot-data/catalog/manual/LAGP/p35.png b/onebot-data/catalog/manual/LAGP/p35.png new file mode 100644 index 0000000..9e4d295 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p35.png differ diff --git a/onebot-data/catalog/manual/LAGP/p36.png b/onebot-data/catalog/manual/LAGP/p36.png new file mode 100644 index 0000000..6afd847 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p36.png differ diff --git a/onebot-data/catalog/manual/LAGP/p37.png b/onebot-data/catalog/manual/LAGP/p37.png new file mode 100644 index 0000000..3e58e06 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p37.png differ diff --git a/onebot-data/catalog/manual/LAGP/p38.png b/onebot-data/catalog/manual/LAGP/p38.png new file mode 100644 index 0000000..315e537 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p38.png differ diff --git a/onebot-data/catalog/manual/LAGP/p39.png b/onebot-data/catalog/manual/LAGP/p39.png new file mode 100644 index 0000000..e4adf0b Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p39.png differ diff --git a/onebot-data/catalog/manual/LAGP/p40.png b/onebot-data/catalog/manual/LAGP/p40.png new file mode 100644 index 0000000..eeb0c41 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p40.png differ diff --git a/onebot-data/catalog/manual/LAGP/p41.png b/onebot-data/catalog/manual/LAGP/p41.png new file mode 100644 index 0000000..62152da Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p41.png differ diff --git a/onebot-data/catalog/manual/LAGP/p42.png b/onebot-data/catalog/manual/LAGP/p42.png new file mode 100644 index 0000000..ab79b22 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p42.png differ diff --git a/onebot-data/catalog/manual/LAGP/p43.png b/onebot-data/catalog/manual/LAGP/p43.png new file mode 100644 index 0000000..a32d18d Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p43.png differ diff --git a/onebot-data/catalog/manual/LAGP/p44.png b/onebot-data/catalog/manual/LAGP/p44.png new file mode 100644 index 0000000..12f5d2c Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p44.png differ diff --git a/onebot-data/catalog/manual/LAGP/p45.png b/onebot-data/catalog/manual/LAGP/p45.png new file mode 100644 index 0000000..0dd56bf Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p45.png differ diff --git a/onebot-data/catalog/manual/LAGP/p46.png b/onebot-data/catalog/manual/LAGP/p46.png new file mode 100644 index 0000000..0fcb326 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p46.png differ diff --git a/onebot-data/catalog/manual/LAGP/p47.png b/onebot-data/catalog/manual/LAGP/p47.png new file mode 100644 index 0000000..8b62697 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p47.png differ diff --git a/onebot-data/catalog/manual/LAGP/p48.png b/onebot-data/catalog/manual/LAGP/p48.png new file mode 100644 index 0000000..c2862ea Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p48.png differ diff --git a/onebot-data/catalog/manual/LAGP/p49.png b/onebot-data/catalog/manual/LAGP/p49.png new file mode 100644 index 0000000..8b289a1 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p49.png differ diff --git a/onebot-data/catalog/manual/LAGP/p50.png b/onebot-data/catalog/manual/LAGP/p50.png new file mode 100644 index 0000000..3e16994 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p50.png differ diff --git a/onebot-data/catalog/manual/LAGP/p51.png b/onebot-data/catalog/manual/LAGP/p51.png new file mode 100644 index 0000000..0601629 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p51.png differ diff --git a/onebot-data/catalog/manual/LAGP/p52.png b/onebot-data/catalog/manual/LAGP/p52.png new file mode 100644 index 0000000..a177b76 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p52.png differ diff --git a/onebot-data/catalog/manual/LAGP/p53.png b/onebot-data/catalog/manual/LAGP/p53.png new file mode 100644 index 0000000..6d2c52d Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p53.png differ diff --git a/onebot-data/catalog/manual/LAGP/p54.png b/onebot-data/catalog/manual/LAGP/p54.png new file mode 100644 index 0000000..e2f8814 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p54.png differ diff --git a/onebot-data/catalog/manual/LAGP/p55.png b/onebot-data/catalog/manual/LAGP/p55.png new file mode 100644 index 0000000..a18f5c2 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p55.png differ diff --git a/onebot-data/catalog/manual/LAGP/p56.png b/onebot-data/catalog/manual/LAGP/p56.png new file mode 100644 index 0000000..03e7b5c Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p56.png differ diff --git a/onebot-data/catalog/manual/LAGP/p57.png b/onebot-data/catalog/manual/LAGP/p57.png new file mode 100644 index 0000000..adbf118 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p57.png differ diff --git a/onebot-data/catalog/manual/LAGP/p58.png b/onebot-data/catalog/manual/LAGP/p58.png new file mode 100644 index 0000000..44cc3f4 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p58.png differ diff --git a/onebot-data/catalog/manual/LAGP/p59.png b/onebot-data/catalog/manual/LAGP/p59.png new file mode 100644 index 0000000..b2c6376 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p59.png differ diff --git a/onebot-data/catalog/manual/LAGP/p60.png b/onebot-data/catalog/manual/LAGP/p60.png new file mode 100644 index 0000000..e92864e Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p60.png differ diff --git a/onebot-data/catalog/manual/LAGP/p61.png b/onebot-data/catalog/manual/LAGP/p61.png new file mode 100644 index 0000000..83a11d7 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p61.png differ diff --git a/onebot-data/catalog/manual/LAGP/p62.png b/onebot-data/catalog/manual/LAGP/p62.png new file mode 100644 index 0000000..6365b9e Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p62.png differ diff --git a/onebot-data/catalog/manual/LAGP/p63.png b/onebot-data/catalog/manual/LAGP/p63.png new file mode 100644 index 0000000..e2f8814 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p63.png differ diff --git a/onebot-data/catalog/manual/LAGP/p64.png b/onebot-data/catalog/manual/LAGP/p64.png new file mode 100644 index 0000000..e90c800 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p64.png differ diff --git a/onebot-data/catalog/manual/LAGP/p65.png b/onebot-data/catalog/manual/LAGP/p65.png new file mode 100644 index 0000000..475f53b Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p65.png differ diff --git a/onebot-data/catalog/manual/LAGP/p66.png b/onebot-data/catalog/manual/LAGP/p66.png new file mode 100644 index 0000000..18cc80b Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p66.png differ diff --git a/onebot-data/catalog/manual/LAGP/p67.png b/onebot-data/catalog/manual/LAGP/p67.png new file mode 100644 index 0000000..5d35f86 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p67.png differ diff --git a/onebot-data/catalog/manual/LAGP/p68.png b/onebot-data/catalog/manual/LAGP/p68.png new file mode 100644 index 0000000..a92a62d Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p68.png differ diff --git a/onebot-data/catalog/manual/LAGP/p69.png b/onebot-data/catalog/manual/LAGP/p69.png new file mode 100644 index 0000000..4af7382 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p69.png differ diff --git a/onebot-data/catalog/manual/LAGP/p70.png b/onebot-data/catalog/manual/LAGP/p70.png new file mode 100644 index 0000000..6176b32 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p70.png differ diff --git a/onebot-data/catalog/manual/LAGP/p71.png b/onebot-data/catalog/manual/LAGP/p71.png new file mode 100644 index 0000000..8b1864f Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p71.png differ diff --git a/onebot-data/catalog/manual/LAGP/p72.png b/onebot-data/catalog/manual/LAGP/p72.png new file mode 100644 index 0000000..d4a36a3 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p72.png differ diff --git a/onebot-data/catalog/manual/LAGP/p73.png b/onebot-data/catalog/manual/LAGP/p73.png new file mode 100644 index 0000000..5d24a51 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p73.png differ diff --git a/onebot-data/catalog/manual/LAGP/p74.png b/onebot-data/catalog/manual/LAGP/p74.png new file mode 100644 index 0000000..d404849 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p74.png differ diff --git a/onebot-data/catalog/manual/LAGP/p75.png b/onebot-data/catalog/manual/LAGP/p75.png new file mode 100644 index 0000000..ab17a4e Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p75.png differ diff --git a/onebot-data/catalog/manual/LAGP/p76.png b/onebot-data/catalog/manual/LAGP/p76.png new file mode 100644 index 0000000..fce6f28 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p76.png differ diff --git a/onebot-data/catalog/manual/LAGP/p77.png b/onebot-data/catalog/manual/LAGP/p77.png new file mode 100644 index 0000000..0358b73 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p77.png differ diff --git a/onebot-data/catalog/manual/LAGP/p78.png b/onebot-data/catalog/manual/LAGP/p78.png new file mode 100644 index 0000000..81756dc Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p78.png differ diff --git a/onebot-data/catalog/manual/LAGP/p79.png b/onebot-data/catalog/manual/LAGP/p79.png new file mode 100644 index 0000000..0ac5323 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p79.png differ diff --git a/onebot-data/catalog/manual/LAGP/p80.png b/onebot-data/catalog/manual/LAGP/p80.png new file mode 100644 index 0000000..5329d78 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p80.png differ diff --git a/onebot-data/catalog/manual/LAGP/p81.png b/onebot-data/catalog/manual/LAGP/p81.png new file mode 100644 index 0000000..fec6b2c Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p81.png differ diff --git a/onebot-data/catalog/manual/LAGP/p82.png b/onebot-data/catalog/manual/LAGP/p82.png new file mode 100644 index 0000000..2c07197 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p82.png differ diff --git a/onebot-data/catalog/manual/LAGP/p83.png b/onebot-data/catalog/manual/LAGP/p83.png new file mode 100644 index 0000000..5bcb0aa Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p83.png differ diff --git a/onebot-data/catalog/manual/LAGP/p84.png b/onebot-data/catalog/manual/LAGP/p84.png new file mode 100644 index 0000000..88b41e3 Binary files /dev/null and b/onebot-data/catalog/manual/LAGP/p84.png differ diff --git a/onebot-data/catalog/manual/M/p22.png b/onebot-data/catalog/manual/M/p22.png index b19a31d..7fb4145 100644 Binary files a/onebot-data/catalog/manual/M/p22.png and b/onebot-data/catalog/manual/M/p22.png differ diff --git a/onebot-data/catalog/manual/M/p23.png b/onebot-data/catalog/manual/M/p23.png index 84530fe..89a0c5b 100644 Binary files a/onebot-data/catalog/manual/M/p23.png and b/onebot-data/catalog/manual/M/p23.png differ diff --git a/onebot-data/catalog/manual/M/p24.png b/onebot-data/catalog/manual/M/p24.png index 0b5c4c0..888d4a8 100644 Binary files a/onebot-data/catalog/manual/M/p24.png and b/onebot-data/catalog/manual/M/p24.png differ diff --git a/onebot-data/catalog/manual/M/p25.png b/onebot-data/catalog/manual/M/p25.png index 5fd78a9..9b18fe7 100644 Binary files a/onebot-data/catalog/manual/M/p25.png and b/onebot-data/catalog/manual/M/p25.png differ diff --git a/onebot-data/catalog/manual/M/p26.png b/onebot-data/catalog/manual/M/p26.png index 95300ae..23c204e 100644 Binary files a/onebot-data/catalog/manual/M/p26.png and b/onebot-data/catalog/manual/M/p26.png differ diff --git a/onebot-data/catalog/manual/M/p27.png b/onebot-data/catalog/manual/M/p27.png index 7774af2..23d12a1 100644 Binary files a/onebot-data/catalog/manual/M/p27.png and b/onebot-data/catalog/manual/M/p27.png differ diff --git a/onebot-data/catalog/manual/MAL/p36.png b/onebot-data/catalog/manual/MAL/p36.png index 680d953..b8361d4 100644 Binary files a/onebot-data/catalog/manual/MAL/p36.png and b/onebot-data/catalog/manual/MAL/p36.png differ diff --git a/onebot-data/catalog/manual/MAL/p37.png b/onebot-data/catalog/manual/MAL/p37.png index 33e4936..2a9d2aa 100644 Binary files a/onebot-data/catalog/manual/MAL/p37.png and b/onebot-data/catalog/manual/MAL/p37.png differ diff --git a/onebot-data/catalog/manual/MAL/p38.png b/onebot-data/catalog/manual/MAL/p38.png index 1e32a25..02b49e7 100644 Binary files a/onebot-data/catalog/manual/MAL/p38.png and b/onebot-data/catalog/manual/MAL/p38.png differ diff --git a/onebot-data/catalog/manual/MAL/p39.png b/onebot-data/catalog/manual/MAL/p39.png index ba1d970..d690598 100644 Binary files a/onebot-data/catalog/manual/MAL/p39.png and b/onebot-data/catalog/manual/MAL/p39.png differ diff --git a/onebot-data/catalog/manual/MAL/p40.png b/onebot-data/catalog/manual/MAL/p40.png index 2ca27a2..5ef1e82 100644 Binary files a/onebot-data/catalog/manual/MAL/p40.png and b/onebot-data/catalog/manual/MAL/p40.png differ diff --git a/onebot-data/catalog/manual/MALC/p41.png b/onebot-data/catalog/manual/MALC/p41.png index a066f54..d277e41 100644 Binary files a/onebot-data/catalog/manual/MALC/p41.png and b/onebot-data/catalog/manual/MALC/p41.png differ diff --git a/onebot-data/catalog/manual/MALC/p42.png b/onebot-data/catalog/manual/MALC/p42.png index 9256df2..d0d3e68 100644 Binary files a/onebot-data/catalog/manual/MALC/p42.png and b/onebot-data/catalog/manual/MALC/p42.png differ diff --git a/onebot-data/catalog/manual/MALC/p43.png b/onebot-data/catalog/manual/MALC/p43.png index 6b7eba2..157ea84 100644 Binary files a/onebot-data/catalog/manual/MALC/p43.png and b/onebot-data/catalog/manual/MALC/p43.png differ diff --git a/onebot-data/catalog/manual/MS/p28.png b/onebot-data/catalog/manual/MS/p28.png index e33b56a..c37ff43 100644 Binary files a/onebot-data/catalog/manual/MS/p28.png and b/onebot-data/catalog/manual/MS/p28.png differ diff --git a/onebot-data/catalog/manual/MS/p29.png b/onebot-data/catalog/manual/MS/p29.png index 571a77d..a2b8141 100644 Binary files a/onebot-data/catalog/manual/MS/p29.png and b/onebot-data/catalog/manual/MS/p29.png differ diff --git a/onebot-data/catalog/manual/MS/p30.png b/onebot-data/catalog/manual/MS/p30.png index 676c241..c049ab9 100644 Binary files a/onebot-data/catalog/manual/MS/p30.png and b/onebot-data/catalog/manual/MS/p30.png differ diff --git a/onebot-data/catalog/manual/MS/p31.png b/onebot-data/catalog/manual/MS/p31.png index 9940c8a..b97ec18 100644 Binary files a/onebot-data/catalog/manual/MS/p31.png and b/onebot-data/catalog/manual/MS/p31.png differ diff --git a/onebot-data/catalog/manual/MS/p32.png b/onebot-data/catalog/manual/MS/p32.png index ff89418..6a9f515 100644 Binary files a/onebot-data/catalog/manual/MS/p32.png and b/onebot-data/catalog/manual/MS/p32.png differ diff --git a/onebot-data/catalog/manual/MSC/p33.png b/onebot-data/catalog/manual/MSC/p33.png index 0f1d2f1..b558103 100644 Binary files a/onebot-data/catalog/manual/MSC/p33.png and b/onebot-data/catalog/manual/MSC/p33.png differ diff --git a/onebot-data/catalog/manual/MSC/p34.png b/onebot-data/catalog/manual/MSC/p34.png index 26dd77a..5aaab7b 100644 Binary files a/onebot-data/catalog/manual/MSC/p34.png and b/onebot-data/catalog/manual/MSC/p34.png differ diff --git a/onebot-data/catalog/manual/MSC/p35.png b/onebot-data/catalog/manual/MSC/p35.png index 1831502..46b086b 100644 Binary files a/onebot-data/catalog/manual/MSC/p35.png and b/onebot-data/catalog/manual/MSC/p35.png differ diff --git a/onebot-data/catalog/manual/UAGP/UAGP_manual.pdf b/onebot-data/catalog/manual/UAGP/UAGP_manual.pdf index 706eab2..15ed935 100644 Binary files a/onebot-data/catalog/manual/UAGP/UAGP_manual.pdf and b/onebot-data/catalog/manual/UAGP/UAGP_manual.pdf differ diff --git a/onebot-data/catalog/manual/UAGP/p01.png b/onebot-data/catalog/manual/UAGP/p01.png index 5826948..a57f271 100644 Binary files a/onebot-data/catalog/manual/UAGP/p01.png and b/onebot-data/catalog/manual/UAGP/p01.png differ diff --git a/onebot-data/catalog/manual/UAGP/p02.png b/onebot-data/catalog/manual/UAGP/p02.png new file mode 100644 index 0000000..12c21f0 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p02.png differ diff --git a/onebot-data/catalog/manual/UAGP/p03.png b/onebot-data/catalog/manual/UAGP/p03.png new file mode 100644 index 0000000..5ff1e09 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p03.png differ diff --git a/onebot-data/catalog/manual/UAGP/p04.png b/onebot-data/catalog/manual/UAGP/p04.png new file mode 100644 index 0000000..49ae85d Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p04.png differ diff --git a/onebot-data/catalog/manual/UAGP/p05.png b/onebot-data/catalog/manual/UAGP/p05.png new file mode 100644 index 0000000..4e27681 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p05.png differ diff --git a/onebot-data/catalog/manual/UAGP/p06.png b/onebot-data/catalog/manual/UAGP/p06.png new file mode 100644 index 0000000..782f780 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p06.png differ diff --git a/onebot-data/catalog/manual/UAGP/p07.png b/onebot-data/catalog/manual/UAGP/p07.png new file mode 100644 index 0000000..cada083 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p07.png differ diff --git a/onebot-data/catalog/manual/UAGP/p08.png b/onebot-data/catalog/manual/UAGP/p08.png new file mode 100644 index 0000000..72f44a5 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p08.png differ diff --git a/onebot-data/catalog/manual/UAGP/p09.png b/onebot-data/catalog/manual/UAGP/p09.png new file mode 100644 index 0000000..7afb539 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p09.png differ diff --git a/onebot-data/catalog/manual/UAGP/p10.png b/onebot-data/catalog/manual/UAGP/p10.png new file mode 100644 index 0000000..4d7636d Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p10.png differ diff --git a/onebot-data/catalog/manual/UAGP/p11.png b/onebot-data/catalog/manual/UAGP/p11.png new file mode 100644 index 0000000..7d1c7f7 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p11.png differ diff --git a/onebot-data/catalog/manual/UAGP/p12.png b/onebot-data/catalog/manual/UAGP/p12.png new file mode 100644 index 0000000..7dfad0b Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p12.png differ diff --git a/onebot-data/catalog/manual/UAGP/p13.png b/onebot-data/catalog/manual/UAGP/p13.png new file mode 100644 index 0000000..d869584 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p13.png differ diff --git a/onebot-data/catalog/manual/UAGP/p14.png b/onebot-data/catalog/manual/UAGP/p14.png new file mode 100644 index 0000000..5112563 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p14.png differ diff --git a/onebot-data/catalog/manual/UAGP/p15.png b/onebot-data/catalog/manual/UAGP/p15.png new file mode 100644 index 0000000..1735fb2 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p15.png differ diff --git a/onebot-data/catalog/manual/UAGP/p16.png b/onebot-data/catalog/manual/UAGP/p16.png new file mode 100644 index 0000000..d0af199 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p16.png differ diff --git a/onebot-data/catalog/manual/UAGP/p17.png b/onebot-data/catalog/manual/UAGP/p17.png new file mode 100644 index 0000000..c30b8bf Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p17.png differ diff --git a/onebot-data/catalog/manual/UAGP/p18.png b/onebot-data/catalog/manual/UAGP/p18.png new file mode 100644 index 0000000..df65c48 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p18.png differ diff --git a/onebot-data/catalog/manual/UAGP/p19.png b/onebot-data/catalog/manual/UAGP/p19.png new file mode 100644 index 0000000..79595a9 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p19.png differ diff --git a/onebot-data/catalog/manual/UAGP/p20.png b/onebot-data/catalog/manual/UAGP/p20.png new file mode 100644 index 0000000..744dbf0 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p20.png differ diff --git a/onebot-data/catalog/manual/UAGP/p21.png b/onebot-data/catalog/manual/UAGP/p21.png new file mode 100644 index 0000000..add86c4 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p21.png differ diff --git a/onebot-data/catalog/manual/UAGP/p22.png b/onebot-data/catalog/manual/UAGP/p22.png new file mode 100644 index 0000000..eee2522 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p22.png differ diff --git a/onebot-data/catalog/manual/UAGP/p23.png b/onebot-data/catalog/manual/UAGP/p23.png new file mode 100644 index 0000000..0479eea Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p23.png differ diff --git a/onebot-data/catalog/manual/UAGP/p24.png b/onebot-data/catalog/manual/UAGP/p24.png new file mode 100644 index 0000000..e31f77d Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p24.png differ diff --git a/onebot-data/catalog/manual/UAGP/p25.png b/onebot-data/catalog/manual/UAGP/p25.png new file mode 100644 index 0000000..34f27f3 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p25.png differ diff --git a/onebot-data/catalog/manual/UAGP/p26.png b/onebot-data/catalog/manual/UAGP/p26.png new file mode 100644 index 0000000..db65211 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p26.png differ diff --git a/onebot-data/catalog/manual/UAGP/p27.png b/onebot-data/catalog/manual/UAGP/p27.png new file mode 100644 index 0000000..3adc84c Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p27.png differ diff --git a/onebot-data/catalog/manual/UAGP/p28.png b/onebot-data/catalog/manual/UAGP/p28.png new file mode 100644 index 0000000..b3e68e1 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p28.png differ diff --git a/onebot-data/catalog/manual/UAGP/p29.png b/onebot-data/catalog/manual/UAGP/p29.png new file mode 100644 index 0000000..c5607c9 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p29.png differ diff --git a/onebot-data/catalog/manual/UAGP/p30.png b/onebot-data/catalog/manual/UAGP/p30.png new file mode 100644 index 0000000..8e4748e Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p30.png differ diff --git a/onebot-data/catalog/manual/UAGP/p31.png b/onebot-data/catalog/manual/UAGP/p31.png new file mode 100644 index 0000000..3f75c46 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p31.png differ diff --git a/onebot-data/catalog/manual/UAGP/p32.png b/onebot-data/catalog/manual/UAGP/p32.png new file mode 100644 index 0000000..4dd2c2a Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p32.png differ diff --git a/onebot-data/catalog/manual/UAGP/p33.png b/onebot-data/catalog/manual/UAGP/p33.png new file mode 100644 index 0000000..a5f6267 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p33.png differ diff --git a/onebot-data/catalog/manual/UAGP/p34.png b/onebot-data/catalog/manual/UAGP/p34.png new file mode 100644 index 0000000..4ceff3c Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p34.png differ diff --git a/onebot-data/catalog/manual/UAGP/p35.png b/onebot-data/catalog/manual/UAGP/p35.png new file mode 100644 index 0000000..c5c241b Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p35.png differ diff --git a/onebot-data/catalog/manual/UAGP/p36.png b/onebot-data/catalog/manual/UAGP/p36.png new file mode 100644 index 0000000..332e0e6 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p36.png differ diff --git a/onebot-data/catalog/manual/UAGP/p37.png b/onebot-data/catalog/manual/UAGP/p37.png new file mode 100644 index 0000000..cd6ff7b Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p37.png differ diff --git a/onebot-data/catalog/manual/UAGP/p38.png b/onebot-data/catalog/manual/UAGP/p38.png new file mode 100644 index 0000000..21e529c Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p38.png differ diff --git a/onebot-data/catalog/manual/UAGP/p39.png b/onebot-data/catalog/manual/UAGP/p39.png new file mode 100644 index 0000000..62b5911 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p39.png differ diff --git a/onebot-data/catalog/manual/UAGP/p40.png b/onebot-data/catalog/manual/UAGP/p40.png new file mode 100644 index 0000000..f9dd376 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p40.png differ diff --git a/onebot-data/catalog/manual/UAGP/p41.png b/onebot-data/catalog/manual/UAGP/p41.png new file mode 100644 index 0000000..f7cd554 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p41.png differ diff --git a/onebot-data/catalog/manual/UAGP/p42.png b/onebot-data/catalog/manual/UAGP/p42.png new file mode 100644 index 0000000..5e1498c Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p42.png differ diff --git a/onebot-data/catalog/manual/UAGP/p43.png b/onebot-data/catalog/manual/UAGP/p43.png new file mode 100644 index 0000000..589f245 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p43.png differ diff --git a/onebot-data/catalog/manual/UAGP/p44.png b/onebot-data/catalog/manual/UAGP/p44.png new file mode 100644 index 0000000..67d9190 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p44.png differ diff --git a/onebot-data/catalog/manual/UAGP/p45.png b/onebot-data/catalog/manual/UAGP/p45.png new file mode 100644 index 0000000..16a22bd Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p45.png differ diff --git a/onebot-data/catalog/manual/UAGP/p46.png b/onebot-data/catalog/manual/UAGP/p46.png new file mode 100644 index 0000000..be7ffd0 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p46.png differ diff --git a/onebot-data/catalog/manual/UAGP/p47.png b/onebot-data/catalog/manual/UAGP/p47.png new file mode 100644 index 0000000..b5c4a50 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p47.png differ diff --git a/onebot-data/catalog/manual/UAGP/p48.png b/onebot-data/catalog/manual/UAGP/p48.png new file mode 100644 index 0000000..50a3a52 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p48.png differ diff --git a/onebot-data/catalog/manual/UAGP/p49.png b/onebot-data/catalog/manual/UAGP/p49.png new file mode 100644 index 0000000..eefafc0 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p49.png differ diff --git a/onebot-data/catalog/manual/UAGP/p50.png b/onebot-data/catalog/manual/UAGP/p50.png new file mode 100644 index 0000000..c15efd3 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p50.png differ diff --git a/onebot-data/catalog/manual/UAGP/p51.png b/onebot-data/catalog/manual/UAGP/p51.png new file mode 100644 index 0000000..05609e4 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p51.png differ diff --git a/onebot-data/catalog/manual/UAGP/p52.png b/onebot-data/catalog/manual/UAGP/p52.png new file mode 100644 index 0000000..6bfc789 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p52.png differ diff --git a/onebot-data/catalog/manual/UAGP/p53.png b/onebot-data/catalog/manual/UAGP/p53.png new file mode 100644 index 0000000..dba0f9a Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p53.png differ diff --git a/onebot-data/catalog/manual/UAGP/p54.png b/onebot-data/catalog/manual/UAGP/p54.png new file mode 100644 index 0000000..816f6d2 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p54.png differ diff --git a/onebot-data/catalog/manual/UAGP/p55.png b/onebot-data/catalog/manual/UAGP/p55.png new file mode 100644 index 0000000..d7ed8cd Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p55.png differ diff --git a/onebot-data/catalog/manual/UAGP/p56.png b/onebot-data/catalog/manual/UAGP/p56.png new file mode 100644 index 0000000..d2bf394 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p56.png differ diff --git a/onebot-data/catalog/manual/UAGP/p57.png b/onebot-data/catalog/manual/UAGP/p57.png new file mode 100644 index 0000000..3fc4804 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p57.png differ diff --git a/onebot-data/catalog/manual/UAGP/p58.png b/onebot-data/catalog/manual/UAGP/p58.png new file mode 100644 index 0000000..0c8f87e Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p58.png differ diff --git a/onebot-data/catalog/manual/UAGP/p59.png b/onebot-data/catalog/manual/UAGP/p59.png new file mode 100644 index 0000000..958aa46 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p59.png differ diff --git a/onebot-data/catalog/manual/UAGP/p60.png b/onebot-data/catalog/manual/UAGP/p60.png new file mode 100644 index 0000000..d27a79a Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p60.png differ diff --git a/onebot-data/catalog/manual/UAGP/p61.png b/onebot-data/catalog/manual/UAGP/p61.png new file mode 100644 index 0000000..8d1fe03 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p61.png differ diff --git a/onebot-data/catalog/manual/UAGP/p62.png b/onebot-data/catalog/manual/UAGP/p62.png new file mode 100644 index 0000000..ea56a0e Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p62.png differ diff --git a/onebot-data/catalog/manual/UAGP/p63.png b/onebot-data/catalog/manual/UAGP/p63.png new file mode 100644 index 0000000..ba0dd06 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p63.png differ diff --git a/onebot-data/catalog/manual/UAGP/p64.png b/onebot-data/catalog/manual/UAGP/p64.png new file mode 100644 index 0000000..ce69eb1 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p64.png differ diff --git a/onebot-data/catalog/manual/UAGP/p65.png b/onebot-data/catalog/manual/UAGP/p65.png new file mode 100644 index 0000000..adf470f Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p65.png differ diff --git a/onebot-data/catalog/manual/UAGP/p66.png b/onebot-data/catalog/manual/UAGP/p66.png new file mode 100644 index 0000000..8910d7a Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p66.png differ diff --git a/onebot-data/catalog/manual/UAGP/p67.png b/onebot-data/catalog/manual/UAGP/p67.png new file mode 100644 index 0000000..dade978 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p67.png differ diff --git a/onebot-data/catalog/manual/UAGP/p68.png b/onebot-data/catalog/manual/UAGP/p68.png new file mode 100644 index 0000000..b3accd0 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p68.png differ diff --git a/onebot-data/catalog/manual/UAGP/p69.png b/onebot-data/catalog/manual/UAGP/p69.png new file mode 100644 index 0000000..fbbf90e Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p69.png differ diff --git a/onebot-data/catalog/manual/UAGP/p70.png b/onebot-data/catalog/manual/UAGP/p70.png new file mode 100644 index 0000000..566c5f2 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p70.png differ diff --git a/onebot-data/catalog/manual/UAGP/p71.png b/onebot-data/catalog/manual/UAGP/p71.png new file mode 100644 index 0000000..d9b4ce1 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p71.png differ diff --git a/onebot-data/catalog/manual/UAGP/p72.png b/onebot-data/catalog/manual/UAGP/p72.png new file mode 100644 index 0000000..95d699d Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p72.png differ diff --git a/onebot-data/catalog/manual/UAGP/p73.png b/onebot-data/catalog/manual/UAGP/p73.png new file mode 100644 index 0000000..ae27f23 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p73.png differ diff --git a/onebot-data/catalog/manual/UAGP/p74.png b/onebot-data/catalog/manual/UAGP/p74.png new file mode 100644 index 0000000..70eda70 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p74.png differ diff --git a/onebot-data/catalog/manual/UAGP/p75.png b/onebot-data/catalog/manual/UAGP/p75.png new file mode 100644 index 0000000..a2e1b43 Binary files /dev/null and b/onebot-data/catalog/manual/UAGP/p75.png differ diff --git a/onebot-data/catalog/manual/UCBH/UCBH_manual.pdf b/onebot-data/catalog/manual/UCBH/UCBH_manual.pdf index 26aba39..4ee81d2 100644 Binary files a/onebot-data/catalog/manual/UCBH/UCBH_manual.pdf and b/onebot-data/catalog/manual/UCBH/UCBH_manual.pdf differ diff --git a/onebot-data/catalog/manual/UCBH/p01.png b/onebot-data/catalog/manual/UCBH/p01.png index fc40fe0..cc97e8d 100644 Binary files a/onebot-data/catalog/manual/UCBH/p01.png and b/onebot-data/catalog/manual/UCBH/p01.png differ diff --git a/onebot-data/catalog/manual/UCBH/p02.png b/onebot-data/catalog/manual/UCBH/p02.png index 397903f..4fa8ba9 100644 Binary files a/onebot-data/catalog/manual/UCBH/p02.png and b/onebot-data/catalog/manual/UCBH/p02.png differ diff --git a/onebot-data/catalog/manual/UCBH/p03.png b/onebot-data/catalog/manual/UCBH/p03.png index ebdf98c..c3011a9 100644 Binary files a/onebot-data/catalog/manual/UCBH/p03.png and b/onebot-data/catalog/manual/UCBH/p03.png differ diff --git a/onebot-data/catalog/manual/UCBM/UCBM_manual.pdf b/onebot-data/catalog/manual/UCBM/UCBM_manual.pdf index c3eaab9..e9bec61 100644 Binary files a/onebot-data/catalog/manual/UCBM/UCBM_manual.pdf and b/onebot-data/catalog/manual/UCBM/UCBM_manual.pdf differ diff --git a/onebot-data/catalog/manual/UCBM/p01.png b/onebot-data/catalog/manual/UCBM/p01.png index 3e7bf0d..9c62347 100644 Binary files a/onebot-data/catalog/manual/UCBM/p01.png and b/onebot-data/catalog/manual/UCBM/p01.png differ diff --git a/onebot-data/catalog/manual/UCBM/p02.png b/onebot-data/catalog/manual/UCBM/p02.png index 90d3aac..5e37f3a 100644 Binary files a/onebot-data/catalog/manual/UCBM/p02.png and b/onebot-data/catalog/manual/UCBM/p02.png differ diff --git a/onebot-data/catalog/manual/UCBM/p03.png b/onebot-data/catalog/manual/UCBM/p03.png index 968ae28..4466bba 100644 Binary files a/onebot-data/catalog/manual/UCBM/p03.png and b/onebot-data/catalog/manual/UCBM/p03.png differ diff --git a/onebot-data/catalog/manual/UCBM/p04.png b/onebot-data/catalog/manual/UCBM/p04.png index 19e4288..62629e6 100644 Binary files a/onebot-data/catalog/manual/UCBM/p04.png and b/onebot-data/catalog/manual/UCBM/p04.png differ diff --git a/onebot-data/catalog/manual/UCBM/p05.png b/onebot-data/catalog/manual/UCBM/p05.png index d6eec08..cea3a90 100644 Binary files a/onebot-data/catalog/manual/UCBM/p05.png and b/onebot-data/catalog/manual/UCBM/p05.png differ diff --git a/onebot-data/catalog/manual/UCBM/p06.png b/onebot-data/catalog/manual/UCBM/p06.png index c8d94bc..cb3f4a4 100644 Binary files a/onebot-data/catalog/manual/UCBM/p06.png and b/onebot-data/catalog/manual/UCBM/p06.png differ diff --git a/onebot-data/catalog/manual/UCBM/p07.png b/onebot-data/catalog/manual/UCBM/p07.png index c5db404..4ec25e5 100644 Binary files a/onebot-data/catalog/manual/UCBM/p07.png and b/onebot-data/catalog/manual/UCBM/p07.png differ diff --git a/onebot-data/catalog/manual/UCBM/p08.png b/onebot-data/catalog/manual/UCBM/p08.png index 97d5239..777ab78 100644 Binary files a/onebot-data/catalog/manual/UCBM/p08.png and b/onebot-data/catalog/manual/UCBM/p08.png differ diff --git a/onebot-data/catalog/manual/UCBM/p09.png b/onebot-data/catalog/manual/UCBM/p09.png index 4a64149..446e25b 100644 Binary files a/onebot-data/catalog/manual/UCBM/p09.png and b/onebot-data/catalog/manual/UCBM/p09.png differ diff --git a/onebot-data/catalog/manual/UCBM/p10.png b/onebot-data/catalog/manual/UCBM/p10.png index dedd7a3..4904ff2 100644 Binary files a/onebot-data/catalog/manual/UCBM/p10.png and b/onebot-data/catalog/manual/UCBM/p10.png differ diff --git a/onebot-data/catalog/manual/UCBM/p11.png b/onebot-data/catalog/manual/UCBM/p11.png index 60c8971..248db14 100644 Binary files a/onebot-data/catalog/manual/UCBM/p11.png and b/onebot-data/catalog/manual/UCBM/p11.png differ diff --git a/onebot-data/catalog/manual/UCBM/p12.png b/onebot-data/catalog/manual/UCBM/p12.png index 778b6cc..c388f43 100644 Binary files a/onebot-data/catalog/manual/UCBM/p12.png and b/onebot-data/catalog/manual/UCBM/p12.png differ diff --git a/onebot-data/catalog/manual/UCBP/UCBP_manual.pdf b/onebot-data/catalog/manual/UCBP/UCBP_manual.pdf index aaac534..7762175 100644 Binary files a/onebot-data/catalog/manual/UCBP/UCBP_manual.pdf and b/onebot-data/catalog/manual/UCBP/UCBP_manual.pdf differ diff --git a/onebot-data/catalog/manual/UCBP/p01.png b/onebot-data/catalog/manual/UCBP/p01.png index d2b8c9c..726bade 100644 Binary files a/onebot-data/catalog/manual/UCBP/p01.png and b/onebot-data/catalog/manual/UCBP/p01.png differ diff --git a/onebot-data/catalog/manual/UCBP/p02.png b/onebot-data/catalog/manual/UCBP/p02.png index e93d877..5870ac1 100644 Binary files a/onebot-data/catalog/manual/UCBP/p02.png and b/onebot-data/catalog/manual/UCBP/p02.png differ diff --git a/onebot-data/catalog/manual/UCBP/p03.png b/onebot-data/catalog/manual/UCBP/p03.png index faefbdb..4caaac4 100644 Binary files a/onebot-data/catalog/manual/UCBP/p03.png and b/onebot-data/catalog/manual/UCBP/p03.png differ diff --git a/onebot-data/catalog/manual/UCBP/p04.png b/onebot-data/catalog/manual/UCBP/p04.png index e0fba3f..e135268 100644 Binary files a/onebot-data/catalog/manual/UCBP/p04.png and b/onebot-data/catalog/manual/UCBP/p04.png differ diff --git a/onebot-data/catalog/manual/UCBP/p05.png b/onebot-data/catalog/manual/UCBP/p05.png index e480445..6dc0a68 100644 Binary files a/onebot-data/catalog/manual/UCBP/p05.png and b/onebot-data/catalog/manual/UCBP/p05.png differ diff --git a/onebot-data/catalog/manual/UCBP/p06.png b/onebot-data/catalog/manual/UCBP/p06.png index 4718648..29c8cb7 100644 Binary files a/onebot-data/catalog/manual/UCBP/p06.png and b/onebot-data/catalog/manual/UCBP/p06.png differ diff --git a/onebot-data/catalog/manual/UCBP/p07.png b/onebot-data/catalog/manual/UCBP/p07.png index 0a79d2b..522f618 100644 Binary files a/onebot-data/catalog/manual/UCBP/p07.png and b/onebot-data/catalog/manual/UCBP/p07.png differ diff --git a/onebot-data/catalog/manual/UCBP/p08.png b/onebot-data/catalog/manual/UCBP/p08.png index 20595a2..2d5088f 100644 Binary files a/onebot-data/catalog/manual/UCBP/p08.png and b/onebot-data/catalog/manual/UCBP/p08.png differ diff --git a/onebot-data/catalog/manual/UCBP/p09.png b/onebot-data/catalog/manual/UCBP/p09.png index 3f4d269..8f4eded 100644 Binary files a/onebot-data/catalog/manual/UCBP/p09.png and b/onebot-data/catalog/manual/UCBP/p09.png differ diff --git a/onebot-data/catalog/manual/UCBP/p10.png b/onebot-data/catalog/manual/UCBP/p10.png index 9935e4e..fc7d8aa 100644 Binary files a/onebot-data/catalog/manual/UCBP/p10.png and b/onebot-data/catalog/manual/UCBP/p10.png differ diff --git a/onebot-data/catalog/manual/UCBP/p11.png b/onebot-data/catalog/manual/UCBP/p11.png index 51fa41d..a5fe304 100644 Binary files a/onebot-data/catalog/manual/UCBP/p11.png and b/onebot-data/catalog/manual/UCBP/p11.png differ diff --git a/onebot-data/catalog/manual/UCBP/p12.png b/onebot-data/catalog/manual/UCBP/p12.png index 812333c..f0505a3 100644 Binary files a/onebot-data/catalog/manual/UCBP/p12.png and b/onebot-data/catalog/manual/UCBP/p12.png differ diff --git a/onebot-data/catalog/manual/UCBP/p13.png b/onebot-data/catalog/manual/UCBP/p13.png index d29207b..9a9e1ba 100644 Binary files a/onebot-data/catalog/manual/UCBP/p13.png and b/onebot-data/catalog/manual/UCBP/p13.png differ diff --git a/onebot-data/catalog/manual/UCBP/p14.png b/onebot-data/catalog/manual/UCBP/p14.png index 3cfdb76..08a9b2a 100644 Binary files a/onebot-data/catalog/manual/UCBP/p14.png and b/onebot-data/catalog/manual/UCBP/p14.png differ diff --git a/onebot-data/catalog/manual/UCBP/p15.png b/onebot-data/catalog/manual/UCBP/p15.png index 9035f04..1083fd1 100644 Binary files a/onebot-data/catalog/manual/UCBP/p15.png and b/onebot-data/catalog/manual/UCBP/p15.png differ diff --git a/onebot-data/catalog/manual/UCBQ/UCBQ_manual.pdf b/onebot-data/catalog/manual/UCBQ/UCBQ_manual.pdf index 2000160..6d75d64 100644 Binary files a/onebot-data/catalog/manual/UCBQ/UCBQ_manual.pdf and b/onebot-data/catalog/manual/UCBQ/UCBQ_manual.pdf differ diff --git a/onebot-data/catalog/manual/UCBQ/p01.png b/onebot-data/catalog/manual/UCBQ/p01.png index 5ca675a..c714315 100644 Binary files a/onebot-data/catalog/manual/UCBQ/p01.png and b/onebot-data/catalog/manual/UCBQ/p01.png differ diff --git a/onebot-data/catalog/manual/UCBQ/p02.png b/onebot-data/catalog/manual/UCBQ/p02.png index cbe621b..907ac44 100644 Binary files a/onebot-data/catalog/manual/UCBQ/p02.png and b/onebot-data/catalog/manual/UCBQ/p02.png differ diff --git a/onebot-data/catalog/manual/UCBQ/p03.png b/onebot-data/catalog/manual/UCBQ/p03.png index 0d5fd60..4bd2f91 100644 Binary files a/onebot-data/catalog/manual/UCBQ/p03.png and b/onebot-data/catalog/manual/UCBQ/p03.png differ diff --git a/onebot-data/catalog/manual/UCBT/UCBT_manual.pdf b/onebot-data/catalog/manual/UCBT/UCBT_manual.pdf index 373fe10..6cd83dd 100644 Binary files a/onebot-data/catalog/manual/UCBT/UCBT_manual.pdf and b/onebot-data/catalog/manual/UCBT/UCBT_manual.pdf differ diff --git a/onebot-data/catalog/manual/UCBT/p01.png b/onebot-data/catalog/manual/UCBT/p01.png index 4110fcc..ce9640d 100644 Binary files a/onebot-data/catalog/manual/UCBT/p01.png and b/onebot-data/catalog/manual/UCBT/p01.png differ diff --git a/onebot-data/catalog/manual/UCBT/p02.png b/onebot-data/catalog/manual/UCBT/p02.png index a68c9c2..472d28a 100644 Binary files a/onebot-data/catalog/manual/UCBT/p02.png and b/onebot-data/catalog/manual/UCBT/p02.png differ diff --git a/onebot-data/catalog/manual/UCBT/p03.png b/onebot-data/catalog/manual/UCBT/p03.png index 8848f19..cf90e71 100644 Binary files a/onebot-data/catalog/manual/UCBT/p03.png and b/onebot-data/catalog/manual/UCBT/p03.png differ diff --git a/onebot-data/catalog/manual/UCDP/UCDP_manual.pdf b/onebot-data/catalog/manual/UCDP/UCDP_manual.pdf index 34cce78..498b59c 100644 Binary files a/onebot-data/catalog/manual/UCDP/UCDP_manual.pdf and b/onebot-data/catalog/manual/UCDP/UCDP_manual.pdf differ diff --git a/onebot-data/catalog/manual/UCDP/p01.png b/onebot-data/catalog/manual/UCDP/p01.png index 640aabc..3cb22e0 100644 Binary files a/onebot-data/catalog/manual/UCDP/p01.png and b/onebot-data/catalog/manual/UCDP/p01.png differ diff --git a/onebot-data/catalog/manual/UCDP/p02.png b/onebot-data/catalog/manual/UCDP/p02.png index 4f5f375..864a6b5 100644 Binary files a/onebot-data/catalog/manual/UCDP/p02.png and b/onebot-data/catalog/manual/UCDP/p02.png differ diff --git a/onebot-data/catalog/manual/UCDP/p03.png b/onebot-data/catalog/manual/UCDP/p03.png index 40650fa..6c7e9fc 100644 Binary files a/onebot-data/catalog/manual/UCDP/p03.png and b/onebot-data/catalog/manual/UCDP/p03.png differ diff --git a/onebot-data/catalog/manual/UCDP/p04.png b/onebot-data/catalog/manual/UCDP/p04.png index c07103d..71a09ee 100644 Binary files a/onebot-data/catalog/manual/UCDP/p04.png and b/onebot-data/catalog/manual/UCDP/p04.png differ diff --git a/onebot-data/catalog/manual/UCDP/p05.png b/onebot-data/catalog/manual/UCDP/p05.png index 88b5c4a..f2d635c 100644 Binary files a/onebot-data/catalog/manual/UCDP/p05.png and b/onebot-data/catalog/manual/UCDP/p05.png differ diff --git a/onebot-data/catalog/manual/UCDP/p06.png b/onebot-data/catalog/manual/UCDP/p06.png index cf65115..f4d0f76 100644 Binary files a/onebot-data/catalog/manual/UCDP/p06.png and b/onebot-data/catalog/manual/UCDP/p06.png differ diff --git a/onebot-data/catalog/manual/UCIM/UCIM_manual.pdf b/onebot-data/catalog/manual/UCIM/UCIM_manual.pdf index 324361f..7ea198a 100644 Binary files a/onebot-data/catalog/manual/UCIM/UCIM_manual.pdf and b/onebot-data/catalog/manual/UCIM/UCIM_manual.pdf differ diff --git a/onebot-data/catalog/manual/UCIM/p01.png b/onebot-data/catalog/manual/UCIM/p01.png index d64d8af..075fa81 100644 Binary files a/onebot-data/catalog/manual/UCIM/p01.png and b/onebot-data/catalog/manual/UCIM/p01.png differ diff --git a/onebot-data/catalog/manual/UCIM/p02.png b/onebot-data/catalog/manual/UCIM/p02.png index 69c9ded..c4938f8 100644 Binary files a/onebot-data/catalog/manual/UCIM/p02.png and b/onebot-data/catalog/manual/UCIM/p02.png differ diff --git a/onebot-data/catalog/manual/UCIM/p03.png b/onebot-data/catalog/manual/UCIM/p03.png index 9c942c5..330ecb7 100644 Binary files a/onebot-data/catalog/manual/UCIM/p03.png and b/onebot-data/catalog/manual/UCIM/p03.png differ diff --git a/onebot-data/catalog/manual/UCIP/UCIP_manual.pdf b/onebot-data/catalog/manual/UCIP/UCIP_manual.pdf index c1cd27c..3851a2f 100644 Binary files a/onebot-data/catalog/manual/UCIP/UCIP_manual.pdf and b/onebot-data/catalog/manual/UCIP/UCIP_manual.pdf differ diff --git a/onebot-data/catalog/manual/UCIP/p01.png b/onebot-data/catalog/manual/UCIP/p01.png index 14ad01c..844e8b8 100644 Binary files a/onebot-data/catalog/manual/UCIP/p01.png and b/onebot-data/catalog/manual/UCIP/p01.png differ diff --git a/onebot-data/catalog/manual/UCIP/p02.png b/onebot-data/catalog/manual/UCIP/p02.png index 88f2187..c35b881 100644 Binary files a/onebot-data/catalog/manual/UCIP/p02.png and b/onebot-data/catalog/manual/UCIP/p02.png differ diff --git a/onebot-data/catalog/manual/UCIP/p03.png b/onebot-data/catalog/manual/UCIP/p03.png index 58c633b..eb59c20 100644 Binary files a/onebot-data/catalog/manual/UCIP/p03.png and b/onebot-data/catalog/manual/UCIP/p03.png differ diff --git a/onebot-data/catalog/manual/UCNM/UCNM_manual.pdf b/onebot-data/catalog/manual/UCNM/UCNM_manual.pdf index 8611a54..f187ce7 100644 Binary files a/onebot-data/catalog/manual/UCNM/UCNM_manual.pdf and b/onebot-data/catalog/manual/UCNM/UCNM_manual.pdf differ diff --git a/onebot-data/catalog/manual/UCNM/p01.png b/onebot-data/catalog/manual/UCNM/p01.png index f1347ef..bb2a330 100644 Binary files a/onebot-data/catalog/manual/UCNM/p01.png and b/onebot-data/catalog/manual/UCNM/p01.png differ diff --git a/onebot-data/catalog/manual/UCNM/p02.png b/onebot-data/catalog/manual/UCNM/p02.png index 2e60e1e..5d13ecb 100644 Binary files a/onebot-data/catalog/manual/UCNM/p02.png and b/onebot-data/catalog/manual/UCNM/p02.png differ diff --git a/onebot-data/catalog/manual/UCNM/p03.png b/onebot-data/catalog/manual/UCNM/p03.png index 210289a..39ecf21 100644 Binary files a/onebot-data/catalog/manual/UCNM/p03.png and b/onebot-data/catalog/manual/UCNM/p03.png differ diff --git a/onebot-data/catalog/manual/UCNM/p04.png b/onebot-data/catalog/manual/UCNM/p04.png index 06b41a7..edbb91c 100644 Binary files a/onebot-data/catalog/manual/UCNM/p04.png and b/onebot-data/catalog/manual/UCNM/p04.png differ diff --git a/onebot-data/catalog/manual/UCNM/p05.png b/onebot-data/catalog/manual/UCNM/p05.png index 4f834be..29e84ea 100644 Binary files a/onebot-data/catalog/manual/UCNM/p05.png and b/onebot-data/catalog/manual/UCNM/p05.png differ diff --git a/onebot-data/catalog/manual/UCNM/p06.png b/onebot-data/catalog/manual/UCNM/p06.png index 97a90e5..ac0ce90 100644 Binary files a/onebot-data/catalog/manual/UCNM/p06.png and b/onebot-data/catalog/manual/UCNM/p06.png differ diff --git a/onebot-data/catalog/manual/UCNM/p07.png b/onebot-data/catalog/manual/UCNM/p07.png index cb0909f..9a0ff32 100644 Binary files a/onebot-data/catalog/manual/UCNM/p07.png and b/onebot-data/catalog/manual/UCNM/p07.png differ diff --git a/onebot-data/catalog/manual/UCNM/p08.png b/onebot-data/catalog/manual/UCNM/p08.png index 40c3da7..dc47a0d 100644 Binary files a/onebot-data/catalog/manual/UCNM/p08.png and b/onebot-data/catalog/manual/UCNM/p08.png differ diff --git a/onebot-data/catalog/manual/UCNM/p09.png b/onebot-data/catalog/manual/UCNM/p09.png index 8f4d41e..3fbd88d 100644 Binary files a/onebot-data/catalog/manual/UCNM/p09.png and b/onebot-data/catalog/manual/UCNM/p09.png differ diff --git a/onebot-data/catalog/manual/UCNP/UCNP_manual.pdf b/onebot-data/catalog/manual/UCNP/UCNP_manual.pdf index c3df05f..5797f69 100644 Binary files a/onebot-data/catalog/manual/UCNP/UCNP_manual.pdf and b/onebot-data/catalog/manual/UCNP/UCNP_manual.pdf differ diff --git a/onebot-data/catalog/manual/UCNP/p01.png b/onebot-data/catalog/manual/UCNP/p01.png index eb40245..f9fdea6 100644 Binary files a/onebot-data/catalog/manual/UCNP/p01.png and b/onebot-data/catalog/manual/UCNP/p01.png differ diff --git a/onebot-data/catalog/manual/UCNP/p02.png b/onebot-data/catalog/manual/UCNP/p02.png index 673d60e..99f19c0 100644 Binary files a/onebot-data/catalog/manual/UCNP/p02.png and b/onebot-data/catalog/manual/UCNP/p02.png differ diff --git a/onebot-data/catalog/manual/UCNP/p03.png b/onebot-data/catalog/manual/UCNP/p03.png index 36faed6..dea66e7 100644 Binary files a/onebot-data/catalog/manual/UCNP/p03.png and b/onebot-data/catalog/manual/UCNP/p03.png differ diff --git a/onebot-data/catalog/manual/UCNP/p04.png b/onebot-data/catalog/manual/UCNP/p04.png index 98f4da2..51ade19 100644 Binary files a/onebot-data/catalog/manual/UCNP/p04.png and b/onebot-data/catalog/manual/UCNP/p04.png differ diff --git a/onebot-data/catalog/manual/UCNP/p05.png b/onebot-data/catalog/manual/UCNP/p05.png index 432a7b5..289411f 100644 Binary files a/onebot-data/catalog/manual/UCNP/p05.png and b/onebot-data/catalog/manual/UCNP/p05.png differ diff --git a/onebot-data/catalog/manual/UCNP/p06.png b/onebot-data/catalog/manual/UCNP/p06.png index 9eb3093..e492394 100644 Binary files a/onebot-data/catalog/manual/UCNP/p06.png and b/onebot-data/catalog/manual/UCNP/p06.png differ diff --git a/onebot-data/catalog/manual/UCNP/p07.png b/onebot-data/catalog/manual/UCNP/p07.png index c5894c6..65b8a48 100644 Binary files a/onebot-data/catalog/manual/UCNP/p07.png and b/onebot-data/catalog/manual/UCNP/p07.png differ diff --git a/onebot-data/catalog/manual/UCNP/p08.png b/onebot-data/catalog/manual/UCNP/p08.png index f096fdf..c1d651e 100644 Binary files a/onebot-data/catalog/manual/UCNP/p08.png and b/onebot-data/catalog/manual/UCNP/p08.png differ diff --git a/onebot-data/catalog/manual/UCNP/p09.png b/onebot-data/catalog/manual/UCNP/p09.png index be7d971..ed463c9 100644 Binary files a/onebot-data/catalog/manual/UCNP/p09.png and b/onebot-data/catalog/manual/UCNP/p09.png differ diff --git a/onebot-data/catalog/manual/UFL/UFL_manual.pdf b/onebot-data/catalog/manual/UFL/UFL_manual.pdf index 00f678f..274166d 100644 Binary files a/onebot-data/catalog/manual/UFL/UFL_manual.pdf and b/onebot-data/catalog/manual/UFL/UFL_manual.pdf differ diff --git a/onebot-data/catalog/manual/UFL/p01.png b/onebot-data/catalog/manual/UFL/p01.png index 5129433..c1d8edf 100644 Binary files a/onebot-data/catalog/manual/UFL/p01.png and b/onebot-data/catalog/manual/UFL/p01.png differ diff --git a/onebot-data/catalog/manual/UFL/p02.png b/onebot-data/catalog/manual/UFL/p02.png index fa891f1..81b506d 100644 Binary files a/onebot-data/catalog/manual/UFL/p02.png and b/onebot-data/catalog/manual/UFL/p02.png differ diff --git a/onebot-data/catalog/manual/UFL/p03.png b/onebot-data/catalog/manual/UFL/p03.png index 131713f..ee08833 100644 Binary files a/onebot-data/catalog/manual/UFL/p03.png and b/onebot-data/catalog/manual/UFL/p03.png differ diff --git a/onebot-data/catalog/manual/UFL/p04.png b/onebot-data/catalog/manual/UFL/p04.png index 437ad98..a8d0ed5 100644 Binary files a/onebot-data/catalog/manual/UFL/p04.png and b/onebot-data/catalog/manual/UFL/p04.png differ diff --git a/onebot-data/catalog/manual/UFL/p05.png b/onebot-data/catalog/manual/UFL/p05.png index bce38a6..f053cfe 100644 Binary files a/onebot-data/catalog/manual/UFL/p05.png and b/onebot-data/catalog/manual/UFL/p05.png differ diff --git a/onebot-data/catalog/manual/UFL/p06.png b/onebot-data/catalog/manual/UFL/p06.png index 99223f0..32cd4f7 100644 Binary files a/onebot-data/catalog/manual/UFL/p06.png and b/onebot-data/catalog/manual/UFL/p06.png differ diff --git a/onebot-data/catalog/manual/ULA/ULA_manual.pdf b/onebot-data/catalog/manual/ULA/ULA_manual.pdf new file mode 100644 index 0000000..ff5301c Binary files /dev/null and b/onebot-data/catalog/manual/ULA/ULA_manual.pdf differ diff --git a/onebot-data/catalog/manual/ULA/p01.png b/onebot-data/catalog/manual/ULA/p01.png new file mode 100644 index 0000000..8651cc7 Binary files /dev/null and b/onebot-data/catalog/manual/ULA/p01.png differ diff --git a/onebot-data/catalog/manual/ULA/p02.png b/onebot-data/catalog/manual/ULA/p02.png new file mode 100644 index 0000000..487597a Binary files /dev/null and b/onebot-data/catalog/manual/ULA/p02.png differ diff --git a/onebot-data/catalog/manual/ULA/p03.png b/onebot-data/catalog/manual/ULA/p03.png new file mode 100644 index 0000000..7e3c204 Binary files /dev/null and b/onebot-data/catalog/manual/ULA/p03.png differ diff --git a/onebot-data/catalog/manual/ULA/p04.png b/onebot-data/catalog/manual/ULA/p04.png new file mode 100644 index 0000000..5c2419d Binary files /dev/null and b/onebot-data/catalog/manual/ULA/p04.png differ diff --git a/onebot-data/catalog/manual/ULA/p05.png b/onebot-data/catalog/manual/ULA/p05.png new file mode 100644 index 0000000..e9f437a Binary files /dev/null and b/onebot-data/catalog/manual/ULA/p05.png differ diff --git a/onebot-data/catalog/manual/ULB/ULB_manual.pdf b/onebot-data/catalog/manual/ULB/ULB_manual.pdf new file mode 100644 index 0000000..153fe32 Binary files /dev/null and b/onebot-data/catalog/manual/ULB/ULB_manual.pdf differ diff --git a/onebot-data/catalog/manual/ULB/p01.png b/onebot-data/catalog/manual/ULB/p01.png new file mode 100644 index 0000000..5ebb946 Binary files /dev/null and b/onebot-data/catalog/manual/ULB/p01.png differ diff --git a/onebot-data/catalog/manual/ULB/p02.png b/onebot-data/catalog/manual/ULB/p02.png new file mode 100644 index 0000000..d1154ff Binary files /dev/null and b/onebot-data/catalog/manual/ULB/p02.png differ diff --git a/onebot-data/catalog/manual/ULB/p03.png b/onebot-data/catalog/manual/ULB/p03.png new file mode 100644 index 0000000..d4de679 Binary files /dev/null and b/onebot-data/catalog/manual/ULB/p03.png differ diff --git a/onebot-data/catalog/manual/ULL/ULL_manual.pdf b/onebot-data/catalog/manual/ULL/ULL_manual.pdf new file mode 100644 index 0000000..ba17320 Binary files /dev/null and b/onebot-data/catalog/manual/ULL/ULL_manual.pdf differ diff --git a/onebot-data/catalog/manual/ULL/p01.png b/onebot-data/catalog/manual/ULL/p01.png new file mode 100644 index 0000000..6cbf4a2 Binary files /dev/null and b/onebot-data/catalog/manual/ULL/p01.png differ diff --git a/onebot-data/catalog/manual/ULL/p02.png b/onebot-data/catalog/manual/ULL/p02.png new file mode 100644 index 0000000..fe05749 Binary files /dev/null and b/onebot-data/catalog/manual/ULL/p02.png differ diff --git a/onebot-data/catalog/manual/ULL/p03.png b/onebot-data/catalog/manual/ULL/p03.png new file mode 100644 index 0000000..a4f93e4 Binary files /dev/null and b/onebot-data/catalog/manual/ULL/p03.png differ diff --git a/onebot-data/catalog/manual/ULL/p04.png b/onebot-data/catalog/manual/ULL/p04.png new file mode 100644 index 0000000..b6906cc Binary files /dev/null and b/onebot-data/catalog/manual/ULL/p04.png differ diff --git a/onebot-data/catalog/manual/ULL/p05.png b/onebot-data/catalog/manual/ULL/p05.png new file mode 100644 index 0000000..0898d30 Binary files /dev/null and b/onebot-data/catalog/manual/ULL/p05.png differ diff --git a/onebot-data/catalog/manual/ULM/ULM_manual.pdf b/onebot-data/catalog/manual/ULM/ULM_manual.pdf new file mode 100644 index 0000000..a556c7f Binary files /dev/null and b/onebot-data/catalog/manual/ULM/ULM_manual.pdf differ diff --git a/onebot-data/catalog/manual/ULM/p01.png b/onebot-data/catalog/manual/ULM/p01.png new file mode 100644 index 0000000..c147563 Binary files /dev/null and b/onebot-data/catalog/manual/ULM/p01.png differ diff --git a/onebot-data/catalog/manual/ULM/p02.png b/onebot-data/catalog/manual/ULM/p02.png new file mode 100644 index 0000000..ba9c289 Binary files /dev/null and b/onebot-data/catalog/manual/ULM/p02.png differ diff --git a/onebot-data/catalog/manual/ULM/p03.png b/onebot-data/catalog/manual/ULM/p03.png new file mode 100644 index 0000000..20d18d4 Binary files /dev/null and b/onebot-data/catalog/manual/ULM/p03.png differ diff --git a/onebot-data/catalog/manual/ULM/p04.png b/onebot-data/catalog/manual/ULM/p04.png new file mode 100644 index 0000000..b8fdaf8 Binary files /dev/null and b/onebot-data/catalog/manual/ULM/p04.png differ diff --git a/onebot-data/catalog/manual/ULM/p05.png b/onebot-data/catalog/manual/ULM/p05.png new file mode 100644 index 0000000..6c7bbcc Binary files /dev/null and b/onebot-data/catalog/manual/ULM/p05.png differ diff --git a/onebot-data/catalog/manual/ULO/ULO_manual.pdf b/onebot-data/catalog/manual/ULO/ULO_manual.pdf new file mode 100644 index 0000000..39afefd Binary files /dev/null and b/onebot-data/catalog/manual/ULO/ULO_manual.pdf differ diff --git a/onebot-data/catalog/manual/ULO/p01.png b/onebot-data/catalog/manual/ULO/p01.png new file mode 100644 index 0000000..471cbc6 Binary files /dev/null and b/onebot-data/catalog/manual/ULO/p01.png differ diff --git a/onebot-data/catalog/manual/ULO/p02.png b/onebot-data/catalog/manual/ULO/p02.png new file mode 100644 index 0000000..1cc97f6 Binary files /dev/null and b/onebot-data/catalog/manual/ULO/p02.png differ diff --git a/onebot-data/catalog/manual/ULP/ULP_manual.pdf b/onebot-data/catalog/manual/ULP/ULP_manual.pdf index 1bd550c..491991b 100644 Binary files a/onebot-data/catalog/manual/ULP/ULP_manual.pdf and b/onebot-data/catalog/manual/ULP/ULP_manual.pdf differ diff --git a/onebot-data/catalog/manual/ULP/p01.png b/onebot-data/catalog/manual/ULP/p01.png index 8417bc1..60dff45 100644 Binary files a/onebot-data/catalog/manual/ULP/p01.png and b/onebot-data/catalog/manual/ULP/p01.png differ diff --git a/onebot-data/catalog/manual/ULP/p02.png b/onebot-data/catalog/manual/ULP/p02.png new file mode 100644 index 0000000..e402af7 Binary files /dev/null and b/onebot-data/catalog/manual/ULP/p02.png differ diff --git a/onebot-data/catalog/manual/ULP/p03.png b/onebot-data/catalog/manual/ULP/p03.png new file mode 100644 index 0000000..aeec2ad Binary files /dev/null and b/onebot-data/catalog/manual/ULP/p03.png differ diff --git a/onebot-data/catalog/manual/ULP/p04.png b/onebot-data/catalog/manual/ULP/p04.png new file mode 100644 index 0000000..8f4884e Binary files /dev/null and b/onebot-data/catalog/manual/ULP/p04.png differ diff --git a/onebot-data/catalog/manual/ULP/p05.png b/onebot-data/catalog/manual/ULP/p05.png new file mode 100644 index 0000000..b119b4f Binary files /dev/null and b/onebot-data/catalog/manual/ULP/p05.png differ diff --git a/onebot-data/catalog/manual/ULP/p06.png b/onebot-data/catalog/manual/ULP/p06.png new file mode 100644 index 0000000..78335ab Binary files /dev/null and b/onebot-data/catalog/manual/ULP/p06.png differ diff --git a/onebot-data/catalog/manual/ULP/p07.png b/onebot-data/catalog/manual/ULP/p07.png new file mode 100644 index 0000000..1f38990 Binary files /dev/null and b/onebot-data/catalog/manual/ULP/p07.png differ diff --git a/onebot-data/catalog/manual/ULP/p08.png b/onebot-data/catalog/manual/ULP/p08.png new file mode 100644 index 0000000..961f7bd Binary files /dev/null and b/onebot-data/catalog/manual/ULP/p08.png differ diff --git a/onebot-data/catalog/manual/ULP/p09.png b/onebot-data/catalog/manual/ULP/p09.png new file mode 100644 index 0000000..88f9caa Binary files /dev/null and b/onebot-data/catalog/manual/ULP/p09.png differ diff --git a/onebot-data/catalog/manual/ULP/p10.png b/onebot-data/catalog/manual/ULP/p10.png new file mode 100644 index 0000000..4b1968d Binary files /dev/null and b/onebot-data/catalog/manual/ULP/p10.png differ diff --git a/onebot-data/catalog/manual/ULP/p11.png b/onebot-data/catalog/manual/ULP/p11.png new file mode 100644 index 0000000..47be3ca Binary files /dev/null and b/onebot-data/catalog/manual/ULP/p11.png differ diff --git a/onebot-data/catalog/manual/ULP/p12.png b/onebot-data/catalog/manual/ULP/p12.png new file mode 100644 index 0000000..2d5683b Binary files /dev/null and b/onebot-data/catalog/manual/ULP/p12.png differ diff --git a/onebot-data/catalog/manual/ULP/p13.png b/onebot-data/catalog/manual/ULP/p13.png new file mode 100644 index 0000000..efaf212 Binary files /dev/null and b/onebot-data/catalog/manual/ULP/p13.png differ diff --git a/onebot-data/catalog/manual/ULR/ULR_manual.pdf b/onebot-data/catalog/manual/ULR/ULR_manual.pdf new file mode 100644 index 0000000..acf5271 Binary files /dev/null and b/onebot-data/catalog/manual/ULR/ULR_manual.pdf differ diff --git a/onebot-data/catalog/manual/ULR/p01.png b/onebot-data/catalog/manual/ULR/p01.png new file mode 100644 index 0000000..8a5202a Binary files /dev/null and b/onebot-data/catalog/manual/ULR/p01.png differ diff --git a/onebot-data/catalog/manual/ULR/p02.png b/onebot-data/catalog/manual/ULR/p02.png new file mode 100644 index 0000000..5347346 Binary files /dev/null and b/onebot-data/catalog/manual/ULR/p02.png differ diff --git a/onebot-data/catalog/manual/ULR/p03.png b/onebot-data/catalog/manual/ULR/p03.png new file mode 100644 index 0000000..1a9316e Binary files /dev/null and b/onebot-data/catalog/manual/ULR/p03.png differ diff --git a/onebot-data/catalog/manual/ULR/p04.png b/onebot-data/catalog/manual/ULR/p04.png new file mode 100644 index 0000000..a947053 Binary files /dev/null and b/onebot-data/catalog/manual/ULR/p04.png differ diff --git a/onebot-data/catalog/manual/ULR/p05.png b/onebot-data/catalog/manual/ULR/p05.png new file mode 100644 index 0000000..900c7e4 Binary files /dev/null and b/onebot-data/catalog/manual/ULR/p05.png differ diff --git a/onebot-data/catalog/manual/ULR/p06.png b/onebot-data/catalog/manual/ULR/p06.png new file mode 100644 index 0000000..88e7998 Binary files /dev/null and b/onebot-data/catalog/manual/ULR/p06.png differ diff --git a/onebot-data/catalog/manual/ULR/p07.png b/onebot-data/catalog/manual/ULR/p07.png new file mode 100644 index 0000000..9f47b97 Binary files /dev/null and b/onebot-data/catalog/manual/ULR/p07.png differ diff --git a/onebot-data/catalog/manual/ULR/p08.png b/onebot-data/catalog/manual/ULR/p08.png new file mode 100644 index 0000000..5cdd15c Binary files /dev/null and b/onebot-data/catalog/manual/ULR/p08.png differ diff --git a/onebot-data/catalog/manual/ULR/p09.png b/onebot-data/catalog/manual/ULR/p09.png new file mode 100644 index 0000000..e6d616b Binary files /dev/null and b/onebot-data/catalog/manual/ULR/p09.png differ diff --git a/onebot-data/catalog/manual/ULR/p10.png b/onebot-data/catalog/manual/ULR/p10.png new file mode 100644 index 0000000..917292d Binary files /dev/null and b/onebot-data/catalog/manual/ULR/p10.png differ diff --git a/onebot-data/catalog/manual/ULT/ULT_manual.pdf b/onebot-data/catalog/manual/ULT/ULT_manual.pdf new file mode 100644 index 0000000..edc4214 Binary files /dev/null and b/onebot-data/catalog/manual/ULT/ULT_manual.pdf differ diff --git a/onebot-data/catalog/manual/ULT/p01.png b/onebot-data/catalog/manual/ULT/p01.png new file mode 100644 index 0000000..1507c82 Binary files /dev/null and b/onebot-data/catalog/manual/ULT/p01.png differ diff --git a/onebot-data/catalog/manual/ULT/p02.png b/onebot-data/catalog/manual/ULT/p02.png new file mode 100644 index 0000000..f4cf383 Binary files /dev/null and b/onebot-data/catalog/manual/ULT/p02.png differ diff --git a/onebot-data/catalog/manual/ULT/p03.png b/onebot-data/catalog/manual/ULT/p03.png new file mode 100644 index 0000000..a1c7368 Binary files /dev/null and b/onebot-data/catalog/manual/ULT/p03.png differ diff --git a/onebot-data/catalog/manual/ULX/ULX_manual.pdf b/onebot-data/catalog/manual/ULX/ULX_manual.pdf new file mode 100644 index 0000000..11f0ad1 Binary files /dev/null and b/onebot-data/catalog/manual/ULX/ULX_manual.pdf differ diff --git a/onebot-data/catalog/manual/ULX/p01.png b/onebot-data/catalog/manual/ULX/p01.png new file mode 100644 index 0000000..84feeea Binary files /dev/null and b/onebot-data/catalog/manual/ULX/p01.png differ diff --git a/onebot-data/catalog/manual/ULX/p02.png b/onebot-data/catalog/manual/ULX/p02.png new file mode 100644 index 0000000..08c1231 Binary files /dev/null and b/onebot-data/catalog/manual/ULX/p02.png differ diff --git a/onebot-data/catalog/manual/ULX/p03.png b/onebot-data/catalog/manual/ULX/p03.png new file mode 100644 index 0000000..8739ab7 Binary files /dev/null and b/onebot-data/catalog/manual/ULX/p03.png differ diff --git a/onebot-data/catalog/manual/ULY/ULY_manual.pdf b/onebot-data/catalog/manual/ULY/ULY_manual.pdf new file mode 100644 index 0000000..c841958 Binary files /dev/null and b/onebot-data/catalog/manual/ULY/ULY_manual.pdf differ diff --git a/onebot-data/catalog/manual/ULY/p01.png b/onebot-data/catalog/manual/ULY/p01.png new file mode 100644 index 0000000..322fb6f Binary files /dev/null and b/onebot-data/catalog/manual/ULY/p01.png differ diff --git a/onebot-data/catalog/manual/ULY/p02.png b/onebot-data/catalog/manual/ULY/p02.png new file mode 100644 index 0000000..4d99a52 Binary files /dev/null and b/onebot-data/catalog/manual/ULY/p02.png differ diff --git a/onebot-data/catalog/manual/ULY/p03.png b/onebot-data/catalog/manual/ULY/p03.png new file mode 100644 index 0000000..9f6531a Binary files /dev/null and b/onebot-data/catalog/manual/ULY/p03.png differ diff --git a/onebot-data/catalog/manual/ULZ/ULZ_manual.pdf b/onebot-data/catalog/manual/ULZ/ULZ_manual.pdf new file mode 100644 index 0000000..a131a67 Binary files /dev/null and b/onebot-data/catalog/manual/ULZ/ULZ_manual.pdf differ diff --git a/onebot-data/catalog/manual/ULZ/p01.png b/onebot-data/catalog/manual/ULZ/p01.png new file mode 100644 index 0000000..57c99e5 Binary files /dev/null and b/onebot-data/catalog/manual/ULZ/p01.png differ diff --git a/onebot-data/catalog/manual/ULZ/p02.png b/onebot-data/catalog/manual/ULZ/p02.png new file mode 100644 index 0000000..35ccfb6 Binary files /dev/null and b/onebot-data/catalog/manual/ULZ/p02.png differ diff --git a/onebot-data/catalog/manual/ULZ/p03.png b/onebot-data/catalog/manual/ULZ/p03.png new file mode 100644 index 0000000..a42b490 Binary files /dev/null and b/onebot-data/catalog/manual/ULZ/p03.png differ diff --git a/onebot-data/catalog/manual/USL/USL_manual.pdf b/onebot-data/catalog/manual/USL/USL_manual.pdf new file mode 100644 index 0000000..1f61843 Binary files /dev/null and b/onebot-data/catalog/manual/USL/USL_manual.pdf differ diff --git a/onebot-data/catalog/manual/USL/p01.png b/onebot-data/catalog/manual/USL/p01.png new file mode 100644 index 0000000..5d2cfdf Binary files /dev/null and b/onebot-data/catalog/manual/USL/p01.png differ diff --git a/onebot-data/catalog/manual/USL/p02.png b/onebot-data/catalog/manual/USL/p02.png new file mode 100644 index 0000000..df18fee Binary files /dev/null and b/onebot-data/catalog/manual/USL/p02.png differ diff --git a/onebot-data/catalog/manual/USP/USP_manual.pdf b/onebot-data/catalog/manual/USP/USP_manual.pdf index 101cc37..feb37f3 100644 Binary files a/onebot-data/catalog/manual/USP/USP_manual.pdf and b/onebot-data/catalog/manual/USP/USP_manual.pdf differ diff --git a/onebot-data/catalog/manual/USP/p01.png b/onebot-data/catalog/manual/USP/p01.png index a6b605c..d3828e7 100644 Binary files a/onebot-data/catalog/manual/USP/p01.png and b/onebot-data/catalog/manual/USP/p01.png differ diff --git a/onebot-data/catalog/manual/USP/p02.png b/onebot-data/catalog/manual/USP/p02.png new file mode 100644 index 0000000..5b2169a Binary files /dev/null and b/onebot-data/catalog/manual/USP/p02.png differ diff --git a/onebot-data/catalog/manual/USP/p03.png b/onebot-data/catalog/manual/USP/p03.png new file mode 100644 index 0000000..c7136d4 Binary files /dev/null and b/onebot-data/catalog/manual/USP/p03.png differ diff --git a/onebot-data/catalog/manual/USP/p04.png b/onebot-data/catalog/manual/USP/p04.png new file mode 100644 index 0000000..b054eb9 Binary files /dev/null and b/onebot-data/catalog/manual/USP/p04.png differ diff --git a/onebot-data/catalog/manual/USP/p05.png b/onebot-data/catalog/manual/USP/p05.png new file mode 100644 index 0000000..6a83e0b Binary files /dev/null and b/onebot-data/catalog/manual/USP/p05.png differ diff --git a/onebot-data/catalog/manual/USP/p06.png b/onebot-data/catalog/manual/USP/p06.png new file mode 100644 index 0000000..6d41478 Binary files /dev/null and b/onebot-data/catalog/manual/USP/p06.png differ diff --git a/onebot-data/catalog/manual/USP/p07.png b/onebot-data/catalog/manual/USP/p07.png new file mode 100644 index 0000000..6ad9053 Binary files /dev/null and b/onebot-data/catalog/manual/USP/p07.png differ diff --git a/onebot-data/catalog/manual/USP/p08.png b/onebot-data/catalog/manual/USP/p08.png new file mode 100644 index 0000000..9c9d340 Binary files /dev/null and b/onebot-data/catalog/manual/USP/p08.png differ diff --git a/onebot-data/catalog/manual/USR/USR_manual.pdf b/onebot-data/catalog/manual/USR/USR_manual.pdf new file mode 100644 index 0000000..8f96c11 Binary files /dev/null and b/onebot-data/catalog/manual/USR/USR_manual.pdf differ diff --git a/onebot-data/catalog/manual/USR/p01.png b/onebot-data/catalog/manual/USR/p01.png new file mode 100644 index 0000000..8600af6 Binary files /dev/null and b/onebot-data/catalog/manual/USR/p01.png differ diff --git a/onebot-data/catalog/manual/USR/p02.png b/onebot-data/catalog/manual/USR/p02.png new file mode 100644 index 0000000..b44eab8 Binary files /dev/null and b/onebot-data/catalog/manual/USR/p02.png differ diff --git a/onebot-data/catalog/manual/USR/p03.png b/onebot-data/catalog/manual/USR/p03.png new file mode 100644 index 0000000..28e29f1 Binary files /dev/null and b/onebot-data/catalog/manual/USR/p03.png differ diff --git a/onebot-data/catalog/manual/USS/USS_manual.pdf b/onebot-data/catalog/manual/USS/USS_manual.pdf new file mode 100644 index 0000000..4fa5574 Binary files /dev/null and b/onebot-data/catalog/manual/USS/USS_manual.pdf differ diff --git a/onebot-data/catalog/manual/USS/p01.png b/onebot-data/catalog/manual/USS/p01.png new file mode 100644 index 0000000..97381b0 Binary files /dev/null and b/onebot-data/catalog/manual/USS/p01.png differ diff --git a/onebot-data/catalog/manual/USS/p02.png b/onebot-data/catalog/manual/USS/p02.png new file mode 100644 index 0000000..5ccee7a Binary files /dev/null and b/onebot-data/catalog/manual/USS/p02.png differ diff --git a/onebot-data/catalog/manual/USS/p03.png b/onebot-data/catalog/manual/USS/p03.png new file mode 100644 index 0000000..5f98b32 Binary files /dev/null and b/onebot-data/catalog/manual/USS/p03.png differ diff --git a/onebot-data/catalog/manual/USS/p04.png b/onebot-data/catalog/manual/USS/p04.png new file mode 100644 index 0000000..7067d2a Binary files /dev/null and b/onebot-data/catalog/manual/USS/p04.png differ diff --git a/onebot-data/catalog/manual/USS/p05.png b/onebot-data/catalog/manual/USS/p05.png new file mode 100644 index 0000000..f705456 Binary files /dev/null and b/onebot-data/catalog/manual/USS/p05.png differ diff --git a/onebot-data/catalog/manual/USS/p06.png b/onebot-data/catalog/manual/USS/p06.png new file mode 100644 index 0000000..ac02b4d Binary files /dev/null and b/onebot-data/catalog/manual/USS/p06.png differ diff --git a/onebot-data/catalog/manual/USSL/USSL_manual.pdf b/onebot-data/catalog/manual/USSL/USSL_manual.pdf new file mode 100644 index 0000000..c3fec6e Binary files /dev/null and b/onebot-data/catalog/manual/USSL/USSL_manual.pdf differ diff --git a/onebot-data/catalog/manual/USSL/p01.png b/onebot-data/catalog/manual/USSL/p01.png new file mode 100644 index 0000000..5a5e5c0 Binary files /dev/null and b/onebot-data/catalog/manual/USSL/p01.png differ diff --git a/onebot-data/catalog/manual/USSL/p02.png b/onebot-data/catalog/manual/USSL/p02.png new file mode 100644 index 0000000..0b0b203 Binary files /dev/null and b/onebot-data/catalog/manual/USSL/p02.png differ diff --git a/onebot-data/catalog/manual/USSL/p03.png b/onebot-data/catalog/manual/USSL/p03.png new file mode 100644 index 0000000..3f78b48 Binary files /dev/null and b/onebot-data/catalog/manual/USSL/p03.png differ diff --git a/onebot-data/catalog/series/LAE.meta.json b/onebot-data/catalog/series/LAE.meta.json index f6a30cd..5cf24ee 100644 --- a/onebot-data/catalog/series/LAE.meta.json +++ b/onebot-data/catalog/series/LAE.meta.json @@ -1 +1,158 @@ -{"series": {"code": "LAE", "nameZh": "LAE 系列电动气缸", "nameEn": "LAE Series Electric Cylinder", "keywords": "lae diandong electric servo", "parameters": [{"code": "size", "nameZh": "规格", "nameEn": "Size", "keywords": "size guige", "unit": "", "type": "number", "values": [140, 225, 350], "display": {}}], "rules": [], "naming": {"stepNameTemplate": "{model}.step"}, "attachments": [], "variants": []}, "attachments": [{"kind": "manual", "lang": "", "source": "manual/LAE/p01.png", "model": null}, {"kind": "datasheet", "lang": "", "source": "manual/LAE/LAE_manual.pdf", "model": null}]} \ No newline at end of file +{ + "series": { + "code": "LAE", + "nameZh": "LAE 电动夹紧缸", + "nameEn": "LAE Electric Power Clamp", + "keywords": "lae diandong electric clamp", + "parameters": [ + { + "code": "size", + "nameZh": "规格", + "nameEn": "Size", + "keywords": "guige size", + "unit": "mm", + "type": "number", + "values": [ + 140, + 225, + 350 + ], + "display": {} + }, + { + "code": "pos", + "nameZh": "臂位置", + "nameEn": "Arm Position", + "keywords": "biweizhi arm pos", + "unit": "", + "type": "enum", + "values": [ + "N", + "O", + "V" + ], + "display": { + "N": "无臂", + "O": "180°", + "V": "90°" + } + }, + { + "code": "style", + "nameZh": "臂样式", + "nameEn": "Arm Style", + "keywords": "biyangshi arm style", + "unit": "", + "type": "enum", + "values": [ + "C", + "N" + ], + "display": { + "C": "中央 15mm offset", + "N": "无臂" + } + }, + { + "code": "control", + "nameZh": "控制单元", + "nameEn": "Control Unit", + "keywords": "kongzhi control unit", + "unit": "", + "type": "enum", + "values": [ + "31" + ], + "display": { + "31": "31" + } + } + ], + "rules": [], + "naming": { + "stepNameTemplate": "{model}.step" + }, + "attachments": [], + "variants": [] + }, + "attachments": [ + { + "kind": "manual", + "lang": "", + "source": "manual/LAE/p01.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAE/p02.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAE/p03.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAE/p04.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAE/p05.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAE/p06.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAE/p07.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAE/p08.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAE/p09.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAE/p10.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAE/p11.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAE/p12.png", + "model": null + }, + { + "kind": "datasheet", + "lang": "", + "source": "manual/LAE/LAE_manual.pdf", + "model": null + } + ] +} \ No newline at end of file diff --git a/onebot-data/catalog/series/LAGP.meta.json b/onebot-data/catalog/series/LAGP.meta.json new file mode 100644 index 0000000..7bb80c0 --- /dev/null +++ b/onebot-data/catalog/series/LAGP.meta.json @@ -0,0 +1,640 @@ +{ + "series": { + "code": "LAGP", + "nameZh": "LAGP 气动翻转缸(旧型号)", + "nameEn": "LAGP Pneumatic Power Pivot (Legacy)", + "keywords": "lagp fanzhuan power pivot legacy", + "parameters": [ + { + "code": "size", + "nameZh": "规格", + "nameEn": "Size", + "keywords": "guige size", + "unit": "mm", + "type": "number", + "values": [ + 63, + 75, + 80, + 120, + 150, + 155, + 170, + 210, + 215, + 300, + 350, + 355, + 600, + 605 + ], + "display": {} + }, + { + "code": "table_pos", + "nameZh": "工作台位置", + "nameEn": "Table Position", + "keywords": "gongzuotai table pos", + "unit": "", + "type": "enum", + "values": [ + "", + "O", + "P", + "V", + "Z" + ], + "display": { + "": "不适用", + "O": "水平 90°", + "P": "水平 O 镜像", + "V": "垂直 180°", + "Z": "垂直 V 镜像" + } + }, + { + "code": "rotation", + "nameZh": "翻转角度", + "nameEn": "Pivot Rotation", + "keywords": "fanzhuanjiaodu rotation", + "unit": "°", + "type": "number", + "values": [ + 45, + 60, + 90, + 120 + ], + "display": {} + }, + { + "code": "brake", + "nameZh": "制动系统", + "nameEn": "Brake System", + "keywords": "zhidong brake", + "unit": "", + "type": "enum", + "values": [ + "B", + "W" + ], + "display": { + "B": "带制动", + "W": "无制动" + } + }, + { + "code": "conn", + "nameZh": "接口方向", + "nameEn": "Connections", + "keywords": "jiekou connections", + "unit": "", + "type": "enum", + "values": [ + "", + "C" + ], + "display": { + "": "不适用", + "C": "C" + } + }, + { + "code": "sensor", + "nameZh": "传感器", + "nameEn": "Sensor", + "keywords": "chuanganqi sensor", + "unit": "", + "type": "enum", + "values": [ + "", + "A", + "U" + ], + "display": { + "": "不适用", + "A": "电子 PNP 光学 M12 + 制动传感器", + "U": "旧码传感器位" + } + } + ], + "rules": [], + "naming": { + "stepNameTemplate": "{model}.step" + }, + "attachments": [], + "variants": [] + }, + "attachments": [ + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p01.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p02.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p03.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p04.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p05.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p06.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p07.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p08.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p09.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p10.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p11.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p12.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p13.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p14.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p15.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p16.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p17.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p18.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p19.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p20.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p21.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p22.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p23.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p24.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p25.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p26.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p27.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p28.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p29.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p30.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p31.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p32.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p33.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p34.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p35.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p36.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p37.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p38.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p39.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p40.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p41.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p42.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p43.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p44.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p45.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p46.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p47.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p48.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p49.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p50.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p51.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p52.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p53.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p54.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p55.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p56.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p57.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p58.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p59.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p60.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p61.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p62.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p63.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p64.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p65.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p66.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p67.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p68.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p69.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p70.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p71.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p72.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p73.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p74.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p75.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p76.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p77.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p78.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p79.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p80.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p81.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p82.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p83.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/LAGP/p84.png", + "model": null + }, + { + "kind": "datasheet", + "lang": "", + "source": "manual/LAGP/LAGP_manual.pdf", + "model": null + } + ] +} \ No newline at end of file diff --git a/onebot-data/catalog/series/UAGP.meta.json b/onebot-data/catalog/series/UAGP.meta.json index 17955bb..cb2de3c 100644 --- a/onebot-data/catalog/series/UAGP.meta.json +++ b/onebot-data/catalog/series/UAGP.meta.json @@ -1 +1,592 @@ -{"series": {"code": "UAGP", "nameZh": "UAGP 系列气动翻转缸", "nameEn": "UAGP Series Pneumatic Flip Cylinder", "keywords": "uagp fanzhuan flip rotary", "parameters": [{"code": "size", "nameZh": "规格", "nameEn": "Size", "keywords": "size guige", "unit": "", "type": "number", "values": [80, 120, 150, 155, 170, 210, 215, 300, 350, 355, 605], "display": {}}, {"code": "type", "nameZh": "型式", "nameEn": "Type", "keywords": "type xingshi", "unit": "", "type": "enum", "values": ["W", "B"], "display": {"W": "标准型", "B": "带制动"}}], "rules": [], "naming": {"stepNameTemplate": "{model}.step"}, "attachments": [], "variants": []}, "attachments": [{"kind": "manual", "lang": "", "source": "manual/UAGP/p01.png", "model": null}, {"kind": "datasheet", "lang": "", "source": "manual/UAGP/UAGP_manual.pdf", "model": null}]} \ No newline at end of file +{ + "series": { + "code": "UAGP", + "nameZh": "UAGP 气动翻转缸", + "nameEn": "UAGP Pneumatic Power Pivot", + "keywords": "uagp fanzhuan power pivot", + "parameters": [ + { + "code": "size", + "nameZh": "规格", + "nameEn": "Size", + "keywords": "guige size", + "unit": "mm", + "type": "number", + "values": [ + 75, + 80, + 120, + 150, + 155, + 170, + 210, + 215, + 300, + 350, + 355, + 600, + 605 + ], + "display": {} + }, + { + "code": "table_pos", + "nameZh": "工作台位置", + "nameEn": "Table Position", + "keywords": "gongzuotai table pos", + "unit": "", + "type": "enum", + "values": [ + "", + "O", + "P", + "V", + "Z" + ], + "display": { + "": "不适用", + "O": "水平 90°", + "P": "水平 O 镜像", + "V": "垂直 180°", + "Z": "垂直 V 镜像" + } + }, + { + "code": "rotation", + "nameZh": "翻转角度", + "nameEn": "Pivot Rotation", + "keywords": "fanzhuanjiaodu rotation", + "unit": "°", + "type": "number", + "values": [ + 30, + 45, + 60, + 75, + 90, + 105, + 120 + ], + "display": {} + }, + { + "code": "brake", + "nameZh": "制动系统", + "nameEn": "Brake System", + "keywords": "zhidong brake", + "unit": "", + "type": "enum", + "values": [ + "B", + "W" + ], + "display": { + "B": "带制动", + "W": "无制动" + } + }, + { + "code": "conn", + "nameZh": "接口方向", + "nameEn": "Connections", + "keywords": "jiekou connections", + "unit": "", + "type": "enum", + "values": [ + "D", + "F", + "P", + "S" + ], + "display": { + "D": "右侧", + "F": "前侧", + "P": "后侧", + "S": "左侧(标准)" + } + }, + { + "code": "sensor", + "nameZh": "传感器", + "nameEn": "Sensor", + "keywords": "chuanganqi sensor", + "unit": "", + "type": "enum", + "values": [ + "", + "A", + "K" + ], + "display": { + "": "不适用", + "A": "电子 PNP 光学 M12 + 制动传感器", + "K": "电子 PNP M12 (DF-K)" + } + } + ], + "rules": [], + "naming": { + "stepNameTemplate": "{model}.step" + }, + "attachments": [], + "variants": [] + }, + "attachments": [ + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p01.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p02.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p03.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p04.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p05.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p06.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p07.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p08.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p09.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p10.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p11.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p12.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p13.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p14.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p15.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p16.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p17.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p18.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p19.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p20.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p21.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p22.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p23.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p24.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p25.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p26.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p27.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p28.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p29.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p30.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p31.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p32.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p33.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p34.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p35.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p36.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p37.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p38.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p39.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p40.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p41.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p42.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p43.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p44.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p45.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p46.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p47.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p48.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p49.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p50.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p51.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p52.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p53.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p54.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p55.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p56.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p57.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p58.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p59.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p60.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p61.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p62.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p63.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p64.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p65.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p66.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p67.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p68.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p69.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p70.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p71.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p72.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p73.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p74.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/UAGP/p75.png", + "model": null + }, + { + "kind": "datasheet", + "lang": "", + "source": "manual/UAGP/UAGP_manual.pdf", + "model": null + } + ] +} \ No newline at end of file diff --git a/onebot-data/catalog/series/ULA.meta.json b/onebot-data/catalog/series/ULA.meta.json new file mode 100644 index 0000000..1ec09e9 --- /dev/null +++ b/onebot-data/catalog/series/ULA.meta.json @@ -0,0 +1,136 @@ +{ + "series": { + "code": "ULA", + "nameZh": "ULA 气动可伸缩定位销(双杆可调)", + "nameEn": "ULA Pneumatic Retractable Locating Pin Unit, double orientable rod", + "keywords": "ula dingweixiao locating pin", + "parameters": [ + { + "code": "size", + "nameZh": "规格", + "nameEn": "Size", + "keywords": "guige size", + "unit": "mm", + "type": "number", + "values": [ + 40, + 63 + ], + "display": {} + }, + { + "code": "stroke", + "nameZh": "行程", + "nameEn": "Stroke", + "keywords": "xingcheng stroke", + "unit": "mm", + "type": "number", + "values": [ + 15, + 20, + 25, + 40, + 50, + 60 + ], + "display": {} + }, + { + "code": "rod", + "nameZh": "杆端样式", + "nameEn": "Rod End Style", + "keywords": "ganduan rod end", + "unit": "", + "type": "enum", + "values": [ + "A", + "G", + "N", + "P" + ], + "display": { + "A": "偏移销杆(2螺钉1销)", + "G": "偏移销杆 杆面与本体中轴对齐", + "N": "偏移销杆反孔(1螺钉2销)", + "P": "偏移销杆反孔 杆面与中轴对齐" + } + }, + { + "code": "mount", + "nameZh": "侧装方式", + "nameEn": "Side Mounting", + "keywords": "cezhuang mounting", + "unit": "", + "type": "enum", + "values": [ + "", + "S" + ], + "display": { + "": "不适用", + "S": "标准" + } + }, + { + "code": "sensor", + "nameZh": "传感器", + "nameEn": "Sensor", + "keywords": "chuanganqi sensor", + "unit": "", + "type": "enum", + "values": [ + "D", + "K" + ], + "display": { + "D": "气动传感器 (DF-UPNW)", + "K": "电子 PNP M12 (DF-K)" + } + } + ], + "rules": [], + "naming": { + "stepNameTemplate": "{model}.step" + }, + "attachments": [], + "variants": [] + }, + "attachments": [ + { + "kind": "manual", + "lang": "", + "source": "manual/ULA/p01.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULA/p02.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULA/p03.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULA/p04.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULA/p05.png", + "model": null + }, + { + "kind": "datasheet", + "lang": "", + "source": "manual/ULA/ULA_manual.pdf", + "model": null + } + ] +} \ No newline at end of file diff --git a/onebot-data/catalog/series/ULL.meta.json b/onebot-data/catalog/series/ULL.meta.json new file mode 100644 index 0000000..5f78b7d --- /dev/null +++ b/onebot-data/catalog/series/ULL.meta.json @@ -0,0 +1,142 @@ +{ + "series": { + "code": "ULL", + "nameZh": "ULL 手动可伸缩定位销(手杆)", + "nameEn": "ULL Manual Retractable Locating Pin Unit with Hand Lever", + "keywords": "ull dingweixiao shoudong manual", + "parameters": [ + { + "code": "size", + "nameZh": "规格", + "nameEn": "Size", + "keywords": "guige size", + "unit": "mm", + "type": "number", + "values": [ + 50 + ], + "display": {} + }, + { + "code": "stroke", + "nameZh": "行程", + "nameEn": "Stroke", + "keywords": "xingcheng stroke", + "unit": "mm", + "type": "number", + "values": [ + 40 + ], + "display": {} + }, + { + "code": "rod", + "nameZh": "杆端样式", + "nameEn": "Rod End Style", + "keywords": "ganduan rod end", + "unit": "", + "type": "enum", + "values": [ + "A", + "B", + "C", + "D", + "E", + "F", + "H", + "I" + ], + "display": { + "A": "偏移销杆", + "B": "成型端杆", + "C": "十字成型端 内Ø16", + "D": "偏移销杆(加大销孔)", + "E": "十字成型端 内Ø10", + "F": "NAAMS 兼容 内Ø16", + "H": "平端 内Ø10", + "I": "平端 内Ø12" + } + }, + { + "code": "orient", + "nameZh": "杆方向", + "nameEn": "Rod Orientation", + "keywords": "ganfangxiang orientation", + "unit": "", + "type": "enum", + "values": [ + "E", + "N", + "O", + "S", + "X" + ], + "display": { + "E": "东", + "N": "北", + "O": "西", + "S": "南", + "X": "对称" + } + }, + { + "code": "sensor", + "nameZh": "传感器", + "nameEn": "Sensor", + "keywords": "chuanganqi sensor", + "unit": "", + "type": "enum", + "values": [ + "K" + ], + "display": { + "K": "电子 PNP M12 (DF-K)" + } + } + ], + "rules": [], + "naming": { + "stepNameTemplate": "{model}.step" + }, + "attachments": [], + "variants": [] + }, + "attachments": [ + { + "kind": "manual", + "lang": "", + "source": "manual/ULL/p01.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULL/p02.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULL/p03.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULL/p04.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULL/p05.png", + "model": null + }, + { + "kind": "datasheet", + "lang": "", + "source": "manual/ULL/ULL_manual.pdf", + "model": null + } + ] +} \ No newline at end of file diff --git a/onebot-data/catalog/series/ULM.meta.json b/onebot-data/catalog/series/ULM.meta.json new file mode 100644 index 0000000..1362038 --- /dev/null +++ b/onebot-data/catalog/series/ULM.meta.json @@ -0,0 +1,146 @@ +{ + "series": { + "code": "ULM", + "nameZh": "ULM 带手杆气动可伸缩定位销", + "nameEn": "ULM Pneumatic Retractable Locating Pin Unit with Hand Lever", + "keywords": "ulm dingweixiao shougan lever", + "parameters": [ + { + "code": "size", + "nameZh": "规格", + "nameEn": "Size", + "keywords": "guige size", + "unit": "mm", + "type": "number", + "values": [ + 50 + ], + "display": {} + }, + { + "code": "stroke", + "nameZh": "行程", + "nameEn": "Stroke", + "keywords": "xingcheng stroke", + "unit": "mm", + "type": "number", + "values": [ + 15, + 25, + 40, + 50, + 60 + ], + "display": {} + }, + { + "code": "rod", + "nameZh": "杆端样式", + "nameEn": "Rod End Style", + "keywords": "ganduan rod end", + "unit": "", + "type": "enum", + "values": [ + "A", + "B", + "C", + "D", + "E", + "F", + "H", + "I" + ], + "display": { + "A": "偏移销杆", + "B": "成型端杆", + "C": "十字成型端 内Ø16", + "D": "偏移销杆(加大销孔)", + "E": "十字成型端 内Ø10", + "F": "NAAMS 兼容 内Ø16", + "H": "平端 内Ø10", + "I": "平端 内Ø12" + } + }, + { + "code": "orient", + "nameZh": "杆方向", + "nameEn": "Rod Orientation", + "keywords": "ganfangxiang orientation", + "unit": "", + "type": "enum", + "values": [ + "E", + "N", + "O", + "S", + "X" + ], + "display": { + "E": "东", + "N": "北", + "O": "西", + "S": "南", + "X": "对称" + } + }, + { + "code": "sensor", + "nameZh": "传感器", + "nameEn": "Sensor", + "keywords": "chuanganqi sensor", + "unit": "", + "type": "enum", + "values": [ + "K" + ], + "display": { + "K": "电子 PNP M12 (DF-K)" + } + } + ], + "rules": [], + "naming": { + "stepNameTemplate": "{model}.step" + }, + "attachments": [], + "variants": [] + }, + "attachments": [ + { + "kind": "manual", + "lang": "", + "source": "manual/ULM/p01.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULM/p02.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULM/p03.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULM/p04.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULM/p05.png", + "model": null + }, + { + "kind": "datasheet", + "lang": "", + "source": "manual/ULM/ULM_manual.pdf", + "model": null + } + ] +} \ No newline at end of file diff --git a/onebot-data/catalog/series/ULO.meta.json b/onebot-data/catalog/series/ULO.meta.json new file mode 100644 index 0000000..4168f65 --- /dev/null +++ b/onebot-data/catalog/series/ULO.meta.json @@ -0,0 +1,92 @@ +{ + "series": { + "code": "ULO", + "nameZh": "ULO 气动可伸缩定位销(双杆带手杆)", + "nameEn": "ULO Pneumatic Retractable Locating Pin Unit, double rod with hand lever", + "keywords": "ulo dingweixiao double rod", + "parameters": [ + { + "code": "size", + "nameZh": "规格", + "nameEn": "Size", + "keywords": "guige size", + "unit": "mm", + "type": "number", + "values": [ + 50 + ], + "display": {} + }, + { + "code": "stroke", + "nameZh": "行程", + "nameEn": "Stroke", + "keywords": "xingcheng stroke", + "unit": "mm", + "type": "number", + "values": [ + 15, + 25, + 40, + 50, + 60 + ], + "display": {} + }, + { + "code": "rod", + "nameZh": "杆端样式", + "nameEn": "Rod End Style", + "keywords": "ganduan rod end", + "unit": "", + "type": "enum", + "values": [ + "A" + ], + "display": { + "A": "偏移销杆(2螺钉1销)" + } + }, + { + "code": "sensor", + "nameZh": "传感器", + "nameEn": "Sensor", + "keywords": "chuanganqi sensor", + "unit": "", + "type": "enum", + "values": [ + "K" + ], + "display": { + "K": "电子 PNP M12 (DF-K)" + } + } + ], + "rules": [], + "naming": { + "stepNameTemplate": "{model}.step" + }, + "attachments": [], + "variants": [] + }, + "attachments": [ + { + "kind": "manual", + "lang": "", + "source": "manual/ULO/p01.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULO/p02.png", + "model": null + }, + { + "kind": "datasheet", + "lang": "", + "source": "manual/ULO/ULO_manual.pdf", + "model": null + } + ] +} \ No newline at end of file diff --git a/onebot-data/catalog/series/ULP.meta.json b/onebot-data/catalog/series/ULP.meta.json index 4c051c4..94def2f 100644 --- a/onebot-data/catalog/series/ULP.meta.json +++ b/onebot-data/catalog/series/ULP.meta.json @@ -1 +1,208 @@ -{"series": {"code": "ULP", "nameZh": "ULP 系列气动可伸缩定位销", "nameEn": "ULP Series Pneumatic Retractable Locating Pin", "keywords": "ulp shensuo dingweixiao pin", "parameters": [{"code": "size", "nameZh": "规格", "nameEn": "Size", "keywords": "size guige", "unit": "", "type": "number", "values": [32, 50, 63], "display": {}}], "rules": [], "naming": {"stepNameTemplate": "{model}.step"}, "attachments": [], "variants": []}, "attachments": [{"kind": "manual", "lang": "", "source": "manual/ULP/p01.png", "model": null}, {"kind": "datasheet", "lang": "", "source": "manual/ULP/ULP_manual.pdf", "model": null}]} \ No newline at end of file +{ + "series": { + "code": "ULP", + "nameZh": "ULP 气动可伸缩定位销(单杆)", + "nameEn": "ULP Pneumatic Retractable Locating Pin Unit, single rod", + "keywords": "ulp dingweixiao locating pin", + "parameters": [ + { + "code": "size", + "nameZh": "规格", + "nameEn": "Size", + "keywords": "guige size", + "unit": "mm", + "type": "number", + "values": [ + 32, + 50, + 63 + ], + "display": {} + }, + { + "code": "stroke", + "nameZh": "行程", + "nameEn": "Stroke", + "keywords": "xingcheng stroke", + "unit": "mm", + "type": "number", + "values": [ + 15, + 20, + 25, + 40, + 50, + 60, + 75, + 100, + 110 + ], + "display": {} + }, + { + "code": "rod", + "nameZh": "杆端样式", + "nameEn": "Rod End Style", + "keywords": "ganduan rod end", + "unit": "", + "type": "enum", + "values": [ + "", + "A", + "B", + "C", + "D", + "E", + "F", + "H", + "I", + "L", + "M" + ], + "display": { + "": "不适用", + "A": "偏移销杆", + "B": "成型端杆", + "C": "十字成型端 内Ø16", + "D": "偏移销杆(加大销孔)", + "E": "十字成型端 内Ø10", + "F": "NAAMS 兼容 内Ø16", + "H": "平端 内Ø10", + "I": "平端 内Ø12", + "L": "内Ø12", + "M": "内Ø20" + } + }, + { + "code": "orient", + "nameZh": "杆方向", + "nameEn": "Rod Orientation", + "keywords": "ganfangxiang orientation", + "unit": "", + "type": "enum", + "values": [ + "E", + "N", + "O", + "S", + "X" + ], + "display": { + "E": "东", + "N": "北", + "O": "西", + "S": "南", + "X": "对称" + } + }, + { + "code": "sensor", + "nameZh": "传感器", + "nameEn": "Sensor", + "keywords": "chuanganqi sensor", + "unit": "", + "type": "enum", + "values": [ + "D", + "K" + ], + "display": { + "D": "气动传感器 (DF-UPNW)", + "K": "电子 PNP M12 (DF-K)" + } + } + ], + "rules": [], + "naming": { + "stepNameTemplate": "{model}.step" + }, + "attachments": [], + "variants": [] + }, + "attachments": [ + { + "kind": "manual", + "lang": "", + "source": "manual/ULP/p01.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULP/p02.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULP/p03.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULP/p04.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULP/p05.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULP/p06.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULP/p07.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULP/p08.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULP/p09.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULP/p10.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULP/p11.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULP/p12.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULP/p13.png", + "model": null + }, + { + "kind": "datasheet", + "lang": "", + "source": "manual/ULP/ULP_manual.pdf", + "model": null + } + ] +} \ No newline at end of file diff --git a/onebot-data/catalog/series/ULT.meta.json b/onebot-data/catalog/series/ULT.meta.json new file mode 100644 index 0000000..278c4db --- /dev/null +++ b/onebot-data/catalog/series/ULT.meta.json @@ -0,0 +1,98 @@ +{ + "series": { + "code": "ULT", + "nameZh": "ULT 肘节机构气动可伸缩定位销(不可逆)", + "nameEn": "ULT Irreversible Pneumatic Retractable Locating Pin Unit, double rod", + "keywords": "ult dingweixiao toggle", + "parameters": [ + { + "code": "size", + "nameZh": "规格", + "nameEn": "Size", + "keywords": "guige size", + "unit": "mm", + "type": "number", + "values": [ + 50 + ], + "display": {} + }, + { + "code": "stroke", + "nameZh": "行程", + "nameEn": "Stroke", + "keywords": "xingcheng stroke", + "unit": "mm", + "type": "number", + "values": [ + 40 + ], + "display": {} + }, + { + "code": "rod", + "nameZh": "杆端样式", + "nameEn": "Rod End Style", + "keywords": "ganduan rod end", + "unit": "", + "type": "enum", + "values": [ + "A", + "G" + ], + "display": { + "A": "偏移销杆", + "G": "偏移销杆 杆面与本体中轴对齐" + } + }, + { + "code": "sensor", + "nameZh": "传感器", + "nameEn": "Sensor", + "keywords": "chuanganqi sensor", + "unit": "", + "type": "enum", + "values": [ + "K", + "N" + ], + "display": { + "K": "电子 PNP M12 (DF-K)", + "N": "无传感器(带保护板)" + } + } + ], + "rules": [], + "naming": { + "stepNameTemplate": "{model}.step" + }, + "attachments": [], + "variants": [] + }, + "attachments": [ + { + "kind": "manual", + "lang": "", + "source": "manual/ULT/p01.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULT/p02.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULT/p03.png", + "model": null + }, + { + "kind": "datasheet", + "lang": "", + "source": "manual/ULT/ULT_manual.pdf", + "model": null + } + ] +} \ No newline at end of file diff --git a/onebot-data/catalog/series/ULX.meta.json b/onebot-data/catalog/series/ULX.meta.json new file mode 100644 index 0000000..d6056fb --- /dev/null +++ b/onebot-data/catalog/series/ULX.meta.json @@ -0,0 +1,98 @@ +{ + "series": { + "code": "ULX", + "nameZh": "ULX 肘节机构气动可伸缩定位销(带手杆)", + "nameEn": "ULX Irreversible Pneumatic Locating Pin Unit with Hand Lever", + "keywords": "ulx dingweixiao toggle lever", + "parameters": [ + { + "code": "size", + "nameZh": "规格", + "nameEn": "Size", + "keywords": "guige size", + "unit": "mm", + "type": "number", + "values": [ + 50 + ], + "display": {} + }, + { + "code": "stroke", + "nameZh": "行程", + "nameEn": "Stroke", + "keywords": "xingcheng stroke", + "unit": "mm", + "type": "number", + "values": [ + 40 + ], + "display": {} + }, + { + "code": "rod", + "nameZh": "杆端样式", + "nameEn": "Rod End Style", + "keywords": "ganduan rod end", + "unit": "", + "type": "enum", + "values": [ + "A", + "G" + ], + "display": { + "A": "偏移销杆", + "G": "偏移销杆 杆面与本体中轴对齐" + } + }, + { + "code": "sensor", + "nameZh": "传感器", + "nameEn": "Sensor", + "keywords": "chuanganqi sensor", + "unit": "", + "type": "enum", + "values": [ + "K", + "N" + ], + "display": { + "K": "电子 PNP M12 (DF-K)", + "N": "无传感器(带保护板)" + } + } + ], + "rules": [], + "naming": { + "stepNameTemplate": "{model}.step" + }, + "attachments": [], + "variants": [] + }, + "attachments": [ + { + "kind": "manual", + "lang": "", + "source": "manual/ULX/p01.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULX/p02.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULX/p03.png", + "model": null + }, + { + "kind": "datasheet", + "lang": "", + "source": "manual/ULX/ULX_manual.pdf", + "model": null + } + ] +} \ No newline at end of file diff --git a/onebot-data/catalog/series/ULY.meta.json b/onebot-data/catalog/series/ULY.meta.json new file mode 100644 index 0000000..11ff4f6 --- /dev/null +++ b/onebot-data/catalog/series/ULY.meta.json @@ -0,0 +1,122 @@ +{ + "series": { + "code": "ULY", + "nameZh": "ULY 肘节机构气动可伸缩定位销(单杆带手杆)", + "nameEn": "ULY Irreversible Pneumatic Locating Pin Unit, single rod with hand lever", + "keywords": "uly dingweixiao toggle", + "parameters": [ + { + "code": "size", + "nameZh": "规格", + "nameEn": "Size", + "keywords": "guige size", + "unit": "mm", + "type": "number", + "values": [ + 40 + ], + "display": {} + }, + { + "code": "stroke", + "nameZh": "行程", + "nameEn": "Stroke", + "keywords": "xingcheng stroke", + "unit": "mm", + "type": "number", + "values": [ + 40 + ], + "display": {} + }, + { + "code": "rod", + "nameZh": "杆端样式", + "nameEn": "Rod End Style", + "keywords": "ganduan rod end", + "unit": "", + "type": "enum", + "values": [ + "A", + "B", + "C", + "D" + ], + "display": { + "A": "偏移销杆", + "B": "成型端杆", + "C": "十字成型端 内Ø16", + "D": "偏移销杆(加大销孔)" + } + }, + { + "code": "orient", + "nameZh": "杆方向", + "nameEn": "Rod Orientation", + "keywords": "ganfangxiang orientation", + "unit": "", + "type": "enum", + "values": [ + "E", + "N", + "O", + "S", + "X" + ], + "display": { + "E": "东", + "N": "北", + "O": "西", + "S": "南", + "X": "对称" + } + }, + { + "code": "sensor", + "nameZh": "传感器", + "nameEn": "Sensor", + "keywords": "chuanganqi sensor", + "unit": "", + "type": "enum", + "values": [ + "K" + ], + "display": { + "K": "电子 PNP M12 (DF-K)" + } + } + ], + "rules": [], + "naming": { + "stepNameTemplate": "{model}.step" + }, + "attachments": [], + "variants": [] + }, + "attachments": [ + { + "kind": "manual", + "lang": "", + "source": "manual/ULY/p01.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULY/p02.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULY/p03.png", + "model": null + }, + { + "kind": "datasheet", + "lang": "", + "source": "manual/ULY/ULY_manual.pdf", + "model": null + } + ] +} \ No newline at end of file diff --git a/onebot-data/catalog/series/ULZ.meta.json b/onebot-data/catalog/series/ULZ.meta.json new file mode 100644 index 0000000..4ef080f --- /dev/null +++ b/onebot-data/catalog/series/ULZ.meta.json @@ -0,0 +1,122 @@ +{ + "series": { + "code": "ULZ", + "nameZh": "ULZ 肘节机构气动可伸缩定位销(单杆)", + "nameEn": "ULZ Irreversible Pneumatic Retractable Locating Pin Unit, single rod", + "keywords": "ulz dingweixiao toggle", + "parameters": [ + { + "code": "size", + "nameZh": "规格", + "nameEn": "Size", + "keywords": "guige size", + "unit": "mm", + "type": "number", + "values": [ + 40 + ], + "display": {} + }, + { + "code": "stroke", + "nameZh": "行程", + "nameEn": "Stroke", + "keywords": "xingcheng stroke", + "unit": "mm", + "type": "number", + "values": [ + 40 + ], + "display": {} + }, + { + "code": "rod", + "nameZh": "杆端样式", + "nameEn": "Rod End Style", + "keywords": "ganduan rod end", + "unit": "", + "type": "enum", + "values": [ + "A", + "B", + "C", + "D" + ], + "display": { + "A": "偏移销杆", + "B": "成型端杆", + "C": "十字成型端 内Ø16", + "D": "偏移销杆(加大销孔)" + } + }, + { + "code": "orient", + "nameZh": "杆方向", + "nameEn": "Rod Orientation", + "keywords": "ganfangxiang orientation", + "unit": "", + "type": "enum", + "values": [ + "E", + "N", + "O", + "S", + "X" + ], + "display": { + "E": "东", + "N": "北", + "O": "西", + "S": "南", + "X": "对称" + } + }, + { + "code": "sensor", + "nameZh": "传感器", + "nameEn": "Sensor", + "keywords": "chuanganqi sensor", + "unit": "", + "type": "enum", + "values": [ + "K" + ], + "display": { + "K": "电子 PNP M12 (DF-K)" + } + } + ], + "rules": [], + "naming": { + "stepNameTemplate": "{model}.step" + }, + "attachments": [], + "variants": [] + }, + "attachments": [ + { + "kind": "manual", + "lang": "", + "source": "manual/ULZ/p01.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULZ/p02.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/ULZ/p03.png", + "model": null + }, + { + "kind": "datasheet", + "lang": "", + "source": "manual/ULZ/ULZ_manual.pdf", + "model": null + } + ] +} \ No newline at end of file diff --git a/onebot-data/catalog/series/USL.meta.json b/onebot-data/catalog/series/USL.meta.json new file mode 100644 index 0000000..3027745 --- /dev/null +++ b/onebot-data/catalog/series/USL.meta.json @@ -0,0 +1,116 @@ +{ + "series": { + "code": "USL", + "nameZh": "USL 手动勾销缸(手杆)", + "nameEn": "USL Manual Pin Clamp with Hand Lever", + "keywords": "usl gouxiao manual", + "parameters": [ + { + "code": "size", + "nameZh": "规格", + "nameEn": "Size", + "keywords": "guige size", + "unit": "mm", + "type": "number", + "values": [ + 50 + ], + "display": {} + }, + { + "code": "pcmodel", + "nameZh": "型式", + "nameEn": "Model", + "keywords": "xingshi pin clamp model", + "unit": "", + "type": "enum", + "values": [ + "J" + ], + "display": { + "J": "标准" + } + }, + { + "code": "pin_dia", + "nameZh": "销径", + "nameEn": "Pin Diameter", + "keywords": "xiaojing pin dia", + "unit": "mm", + "type": "number", + "values": [ + 3 + ], + "display": {} + }, + { + "code": "locating", + "nameZh": "定位销", + "nameEn": "Locating Pin", + "keywords": "dingweixiao locating pin", + "unit": "", + "type": "enum", + "values": [ + "1" + ], + "display": { + "1": "含定位销" + } + }, + { + "code": "prog", + "nameZh": "流水号", + "nameEn": "Progressive No.", + "keywords": "liushuihao prog special", + "unit": "", + "type": "enum", + "values": [ + "007" + ], + "display": { + "007": "007" + } + }, + { + "code": "sensor", + "nameZh": "传感器", + "nameEn": "Sensor", + "keywords": "chuanganqi sensor", + "unit": "", + "type": "enum", + "values": [ + "N" + ], + "display": { + "N": "无传感器(带保护板)" + } + } + ], + "rules": [], + "naming": { + "stepNameTemplate": "{model}.step" + }, + "attachments": [], + "variants": [] + }, + "attachments": [ + { + "kind": "manual", + "lang": "", + "source": "manual/USL/p01.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/USL/p02.png", + "model": null + }, + { + "kind": "datasheet", + "lang": "", + "source": "manual/USL/USL_manual.pdf", + "model": null + } + ] +} \ No newline at end of file diff --git a/onebot-data/catalog/series/USP.meta.json b/onebot-data/catalog/series/USP.meta.json index c02f90d..4af25c9 100644 --- a/onebot-data/catalog/series/USP.meta.json +++ b/onebot-data/catalog/series/USP.meta.json @@ -1 +1,174 @@ -{"series": {"code": "USP", "nameZh": "USP 系列气动勾销缸", "nameEn": "USP Series Pneumatic Hook Pin Cylinder", "keywords": "usp gouxiao hook pin", "parameters": [{"code": "size", "nameZh": "规格", "nameEn": "Size", "keywords": "size guige", "unit": "", "type": "number", "values": [32, 50, 63], "display": {}}], "rules": [], "naming": {"stepNameTemplate": "{model}.step"}, "attachments": [], "variants": []}, "attachments": [{"kind": "manual", "lang": "", "source": "manual/USP/p01.png", "model": null}, {"kind": "datasheet", "lang": "", "source": "manual/USP/USP_manual.pdf", "model": null}]} \ No newline at end of file +{ + "series": { + "code": "USP", + "nameZh": "USP 气动勾销缸", + "nameEn": "USP Pneumatic Pin Clamp", + "keywords": "usp gouxiao pin clamp", + "parameters": [ + { + "code": "size", + "nameZh": "规格", + "nameEn": "Size", + "keywords": "guige size", + "unit": "mm", + "type": "number", + "values": [ + 50 + ], + "display": {} + }, + { + "code": "pcmodel", + "nameZh": "型式", + "nameEn": "Model", + "keywords": "xingshi pin clamp model", + "unit": "", + "type": "enum", + "values": [ + "J" + ], + "display": { + "J": "标准" + } + }, + { + "code": "pin_dia", + "nameZh": "销径", + "nameEn": "Pin Diameter", + "keywords": "xiaojing pin dia", + "unit": "mm", + "type": "number", + "values": [ + 1, + 2, + 3, + 4, + 5 + ], + "display": {} + }, + { + "code": "locating", + "nameZh": "定位销", + "nameEn": "Locating Pin", + "keywords": "dingweixiao locating pin", + "unit": "", + "type": "enum", + "values": [ + "1" + ], + "display": { + "1": "含定位销" + } + }, + { + "code": "prog", + "nameZh": "流水号", + "nameEn": "Progressive No.", + "keywords": "liushuihao prog special", + "unit": "", + "type": "enum", + "values": [ + "001", + "002", + "003", + "004", + "005", + "009", + "010", + "013", + "014", + "015" + ], + "display": { + "001": "001", + "002": "002", + "003": "003", + "004": "004", + "005": "005", + "009": "009", + "010": "010", + "013": "013", + "014": "014", + "015": "015" + } + }, + { + "code": "sensor", + "nameZh": "传感器", + "nameEn": "Sensor", + "keywords": "chuanganqi sensor", + "unit": "", + "type": "enum", + "values": [ + "K" + ], + "display": { + "K": "电子 PNP M12 (DF-K)" + } + } + ], + "rules": [], + "naming": { + "stepNameTemplate": "{model}.step" + }, + "attachments": [], + "variants": [] + }, + "attachments": [ + { + "kind": "manual", + "lang": "", + "source": "manual/USP/p01.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/USP/p02.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/USP/p03.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/USP/p04.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/USP/p05.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/USP/p06.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/USP/p07.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/USP/p08.png", + "model": null + }, + { + "kind": "datasheet", + "lang": "", + "source": "manual/USP/USP_manual.pdf", + "model": null + } + ] +} \ No newline at end of file diff --git a/onebot-data/catalog/series/USR.meta.json b/onebot-data/catalog/series/USR.meta.json new file mode 100644 index 0000000..ce1b2c5 --- /dev/null +++ b/onebot-data/catalog/series/USR.meta.json @@ -0,0 +1,159 @@ +{ + "series": { + "code": "USR", + "nameZh": "USR 紧凑型气动勾销缸", + "nameEn": "USR Pneumatic Compact Pin Clamp", + "keywords": "usr gouxiao compact", + "parameters": [ + { + "code": "size", + "nameZh": "规格", + "nameEn": "Size", + "keywords": "guige size", + "unit": "mm", + "type": "number", + "values": [ + 40 + ], + "display": {} + }, + { + "code": "pcmodel", + "nameZh": "型式", + "nameEn": "Model", + "keywords": "xingshi pin clamp model", + "unit": "", + "type": "enum", + "values": [ + "F", + "J" + ], + "display": { + "F": "无补偿", + "J": "标准" + } + }, + { + "code": "hook", + "nameZh": "挂钩", + "nameEn": "Hook", + "keywords": "guagou hook", + "unit": "", + "type": "enum", + "values": [ + "D", + "S" + ], + "display": { + "D": "双钩", + "S": "单钩" + } + }, + { + "code": "pin_dia", + "nameZh": "销径", + "nameEn": "Pin Diameter", + "keywords": "xiaojing pin dia", + "unit": "mm", + "type": "number", + "values": [ + 1, + 2, + 4, + 5 + ], + "display": {} + }, + { + "code": "locating", + "nameZh": "定位销", + "nameEn": "Locating Pin", + "keywords": "dingweixiao locating pin", + "unit": "", + "type": "enum", + "values": [ + "1" + ], + "display": { + "1": "含定位销" + } + }, + { + "code": "prog", + "nameZh": "流水号", + "nameEn": "Progressive No.", + "keywords": "liushuihao prog special", + "unit": "", + "type": "enum", + "values": [ + "001", + "002", + "003", + "004", + "005", + "006", + "007", + "008", + "013" + ], + "display": { + "001": "001", + "002": "002", + "003": "003", + "004": "004", + "005": "005", + "006": "006", + "007": "007", + "008": "008", + "013": "013" + } + }, + { + "code": "sensor", + "nameZh": "传感器", + "nameEn": "Sensor", + "keywords": "chuanganqi sensor", + "unit": "", + "type": "enum", + "values": [ + "K" + ], + "display": { + "K": "电子 PNP M12 (DF-K)" + } + } + ], + "rules": [], + "naming": { + "stepNameTemplate": "{model}.step" + }, + "attachments": [], + "variants": [] + }, + "attachments": [ + { + "kind": "manual", + "lang": "", + "source": "manual/USR/p01.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/USR/p02.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/USR/p03.png", + "model": null + }, + { + "kind": "datasheet", + "lang": "", + "source": "manual/USR/USR_manual.pdf", + "model": null + } + ] +} \ No newline at end of file diff --git a/onebot-data/catalog/series/USS.meta.json b/onebot-data/catalog/series/USS.meta.json new file mode 100644 index 0000000..dffa643 --- /dev/null +++ b/onebot-data/catalog/series/USS.meta.json @@ -0,0 +1,195 @@ +{ + "series": { + "code": "USS", + "nameZh": "USS 带补偿气动勾销缸", + "nameEn": "USS Pneumatic Pin Clamp with Compensation", + "keywords": "uss gouxiao compensation", + "parameters": [ + { + "code": "size", + "nameZh": "规格", + "nameEn": "Size", + "keywords": "guige size", + "unit": "mm", + "type": "number", + "values": [ + 32, + 50, + 55, + 60 + ], + "display": {} + }, + { + "code": "pcmodel", + "nameZh": "型式", + "nameEn": "Model", + "keywords": "xingshi pin clamp model", + "unit": "", + "type": "enum", + "values": [ + "J" + ], + "display": { + "J": "标准" + } + }, + { + "code": "hook_pos", + "nameZh": "挂钩位置", + "nameEn": "Hook Position", + "keywords": "guagouweizhi hook pos", + "unit": "", + "type": "enum", + "values": [ + "B", + "C" + ], + "display": { + "B": "标准", + "C": "旋转180°" + } + }, + { + "code": "pin_dia", + "nameZh": "销径", + "nameEn": "Pin Diameter", + "keywords": "xiaojing pin dia", + "unit": "mm", + "type": "number", + "values": [ + 1, + 2, + 3, + 4, + 5 + ], + "display": {} + }, + { + "code": "locating", + "nameZh": "定位销", + "nameEn": "Locating Pin", + "keywords": "dingweixiao locating pin", + "unit": "", + "type": "enum", + "values": [ + "1" + ], + "display": { + "1": "含定位销" + } + }, + { + "code": "prog", + "nameZh": "流水号", + "nameEn": "Progressive No.", + "keywords": "liushuihao prog special", + "unit": "", + "type": "enum", + "values": [ + "001", + "002", + "003", + "004", + "007", + "008", + "016", + "017", + "018", + "019", + "020", + "021", + "022", + "023", + "028", + "029" + ], + "display": { + "001": "001", + "002": "002", + "003": "003", + "004": "004", + "007": "007", + "008": "008", + "016": "016", + "017": "017", + "018": "018", + "019": "019", + "020": "020", + "021": "021", + "022": "022", + "023": "023", + "028": "028", + "029": "029" + } + }, + { + "code": "sensor", + "nameZh": "传感器", + "nameEn": "Sensor", + "keywords": "chuanganqi sensor", + "unit": "", + "type": "enum", + "values": [ + "K", + "N" + ], + "display": { + "K": "电子 PNP M12 (DF-K)", + "N": "无传感器(带保护板)" + } + } + ], + "rules": [], + "naming": { + "stepNameTemplate": "{model}.step" + }, + "attachments": [], + "variants": [] + }, + "attachments": [ + { + "kind": "manual", + "lang": "", + "source": "manual/USS/p01.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/USS/p02.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/USS/p03.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/USS/p04.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/USS/p05.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/USS/p06.png", + "model": null + }, + { + "kind": "datasheet", + "lang": "", + "source": "manual/USS/USS_manual.pdf", + "model": null + } + ] +} \ No newline at end of file diff --git a/onebot-data/catalog/series/USSL.meta.json b/onebot-data/catalog/series/USSL.meta.json new file mode 100644 index 0000000..3412636 --- /dev/null +++ b/onebot-data/catalog/series/USSL.meta.json @@ -0,0 +1,142 @@ +{ + "series": { + "code": "USSL", + "nameZh": "USSL 激光焊用气动勾销缸", + "nameEn": "USSL Pneumatic Pin Clamp for Laser Beam Applications", + "keywords": "ussl gouxiao laser", + "parameters": [ + { + "code": "size", + "nameZh": "规格", + "nameEn": "Size", + "keywords": "guige size", + "unit": "mm", + "type": "number", + "values": [ + 50 + ], + "display": {} + }, + { + "code": "pcmodel", + "nameZh": "型式", + "nameEn": "Model", + "keywords": "xingshi pin clamp model", + "unit": "", + "type": "enum", + "values": [ + "J" + ], + "display": { + "J": "标准" + } + }, + { + "code": "hook_pos", + "nameZh": "挂钩位置", + "nameEn": "Hook Position", + "keywords": "guagouweizhi hook pos", + "unit": "", + "type": "enum", + "values": [ + "B", + "C" + ], + "display": { + "B": "标准", + "C": "旋转180°" + } + }, + { + "code": "pin_dia", + "nameZh": "销径", + "nameEn": "Pin Diameter", + "keywords": "xiaojing pin dia", + "unit": "mm", + "type": "number", + "values": [ + 3, + 4, + 5 + ], + "display": {} + }, + { + "code": "locating", + "nameZh": "定位销", + "nameEn": "Locating Pin", + "keywords": "dingweixiao locating pin", + "unit": "", + "type": "enum", + "values": [ + "1" + ], + "display": { + "1": "含定位销" + } + }, + { + "code": "prog", + "nameZh": "流水号", + "nameEn": "Progressive No.", + "keywords": "liushuihao prog special", + "unit": "", + "type": "enum", + "values": [ + "001", + "002" + ], + "display": { + "001": "001", + "002": "002" + } + }, + { + "code": "sensor", + "nameZh": "传感器", + "nameEn": "Sensor", + "keywords": "chuanganqi sensor", + "unit": "", + "type": "enum", + "values": [ + "N" + ], + "display": { + "N": "无传感器(带保护板)" + } + } + ], + "rules": [], + "naming": { + "stepNameTemplate": "{model}.step" + }, + "attachments": [], + "variants": [] + }, + "attachments": [ + { + "kind": "manual", + "lang": "", + "source": "manual/USSL/p01.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/USSL/p02.png", + "model": null + }, + { + "kind": "manual", + "lang": "", + "source": "manual/USSL/p03.png", + "model": null + }, + { + "kind": "datasheet", + "lang": "", + "source": "manual/USSL/USSL_manual.pdf", + "model": null + } + ] +} \ No newline at end of file diff --git a/onebot-data/tools/__pycache__/gen-clamp-series.cpython-314.pyc b/onebot-data/tools/__pycache__/gen-clamp-series.cpython-314.pyc deleted file mode 100644 index 0bd7ce8..0000000 Binary files a/onebot-data/tools/__pycache__/gen-clamp-series.cpython-314.pyc and /dev/null differ diff --git a/onebot-data/tools/copy-pending-step.py b/onebot-data/tools/copy-pending-step.py new file mode 100644 index 0000000..63ea7a9 --- /dev/null +++ b/onebot-data/tools/copy-pending-step.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +""" +并行复制待补分类的 STEP 数模(X盘网络盘慢,串行不可行)。 +复用 gen-pending-series.py 的扫描缓存 + 解析器。 +用法: PYTHONUTF8=1 python copy-pending-step.py +""" +import os, sys, shutil +from concurrent.futures import ThreadPoolExecutor, as_completed +import importlib.util + +HERE = os.path.dirname(os.path.abspath(__file__)) +spec = importlib.util.spec_from_file_location('gps', os.path.join(HERE, 'gen-pending-series.py')) +gps = importlib.util.module_from_spec(spec) +spec.loader.exec_module(gps) + +DST = os.path.join(gps.DST, 'step') +os.makedirs(DST, exist_ok=True) + +scanned = gps.load_scan() +todo = [] +for sp in gps.SPECS: + records, _ = gps.collect(sp, scanned) + for m in records.values(): + dst = os.path.join(DST, m['model'] + '.step') + if not os.path.exists(dst): + todo.append((m['src'], dst, m['model'])) +print(f'待复制 {len(todo)} 个(已存在则跳过)') + +def cp(item): + src, dst, model = item + for attempt in range(3): + try: + shutil.copy2(src, dst) + return (model, 'ok', None) + except Exception as e: + if attempt == 2: + return (model, 'err', str(e)) + return (model, 'err', 'unknown') + +ok = err = 0 +errors = [] +with ThreadPoolExecutor(max_workers=8) as ex: + futs = [ex.submit(cp, it) for it in todo] + for i, fut in enumerate(as_completed(futs), 1): + model, status, e = fut.result() + if status == 'ok': + ok += 1 + else: + err += 1 + errors.append(f'{model}: {e}') + if i % 100 == 0: + print(f' {i}/{len(todo)} (ok={ok} err={err})') + +print(f'\n完成: 复制 {ok} 个, 失败 {err} 个') +for e in errors[:20]: + print(' !', e) +print(f'step 目录现有 {len(os.listdir(DST))} 个文件') diff --git a/onebot-data/tools/eval-zipbundle.py b/onebot-data/tools/eval-zipbundle.py new file mode 100644 index 0000000..e387921 --- /dev/null +++ b/onebot-data/tools/eval-zipbundle.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +""" +评估"预生成每型号 zip"方案的收益与代价。 +扫描 web 发布目录的 step/,统计原始总体积 vs zip 后体积。 +""" +import os, zipfile, io, random + +WEB = r'D:/开发/OnebotCatalog/release/web_2026.08/step' +if not os.path.isdir(WEB): + raise SystemExit('找不到 ' + WEB) + +files = [f for f in os.listdir(WEB) if f.lower().endswith(('.step', '.stp'))] +print(f'step 文件数: {len(files)}') + +tot = sum(os.path.getsize(os.path.join(WEB, f)) for f in files) +print(f'原始总体积: {tot/1073741824:.2f} GB') + +# 抽样测压缩率(避免全量压缩耗时) +random.seed(42) +sample = random.sample(files, min(40, len(files))) +raw = zipped = 0 +for f in sample: + p = os.path.join(WEB, f) + n = os.path.getsize(p) + buf = io.BytesIO() + with zipfile.ZipFile(buf, 'w', zipfile.ZIP_DEFLATED, compresslevel=6) as z: + z.write(p, f[:-4] + '.step' if f.lower().endswith('.stp') else f) + raw += n + zipped += buf.tell() +print(f'\n抽样 {len(sample)} 个:') +print(f' 原始 {raw/1048576:.1f} MB -> zip {zipped/1048576:.1f} MB (省 {(1-zipped/raw)*100:.1f}%)') +print(f'\n推算全量:') +print(f' stepz 目录约 {(tot*(zipped/raw))/1073741824:.2f} GB') +print(f' 部署总目录 = step {tot/1073741824:.2f}GB + stepz {(tot*(zipped/raw))/1073741824:.2f}GB' + f' = {(tot*(1+zipped/raw))/1073741824:.2f} GB') +print(f'\n购物车场景收益 (选 20 个型号, 平均 {tot/len(files)/1048576:.1f}MB/个):') +per = tot / len(files) +print(f' 现状: 传 {20*per/1048576:.0f} MB 原始文件') +print(f' 改后: 传 {20*per*(zipped/raw)/1048576:.0f} MB 压缩文件') diff --git a/onebot-data/tools/gen-clamp-manual.py b/onebot-data/tools/gen-clamp-manual.py index 3bce4b6..5bf5d4e 100644 --- a/onebot-data/tools/gen-clamp-manual.py +++ b/onebot-data/tools/gen-clamp-manual.py @@ -47,7 +47,8 @@ def render(pages, out_dir, start_no): """pages = [(doc, page_idx), ...] 渲染为 p.png,返回下一个编号""" n = start_no for doc, i in pages: - pix = doc[i].get_pixmap(dpi=DPI, colorspace=fitz.csGRAY) + # 彩色输出 (官方图册本身是彩色的; 早期版本误用 csGRAY 转灰度) + pix = doc[i].get_pixmap(dpi=DPI) pix.save(os.path.join(out_dir, f'p{n:02d}.png')) n += 1 return n @@ -101,11 +102,14 @@ def main(): os.makedirs(d, exist_ok=True) main_pdf = os.path.join(SRC, MAIN_CATALOG) doc = fitz.open(main_pdf) - # 找 UCBT40 相关页(数据页) + # 找 UCBT 相关页(数据页 + 夹臂页) + # 注: 早期版本用 'UCBT40' 精确匹配 + 漏了 CLAMPING ARMS, 3 页只抓到 1 页。 + # 主目录里 UCBT 占连续 3 页 (idx 40/41/42), 前后分别是 UCBM 与新章节, 故按 UCBT 匹配即准确。 idxs = [] for i in range(doc.page_count): t = doc[i].get_text().upper() - if 'UCBT40' in t and any(m in t for m in ('DIMENSIONS', 'CODIFICATION', 'CHARACTERISTICS')): + if 'UCBT' in t and any(m in t for m in ( + 'DIMENSIONS', 'CODIFICATION', 'CHARACTERISTICS', 'CLAMPING ARMS')): idxs.append(i) if idxs: n = render([(doc, i) for i in idxs], d, 1) diff --git a/onebot-data/tools/gen-pending-manual.py b/onebot-data/tools/gen-pending-manual.py new file mode 100644 index 0000000..889bdf0 --- /dev/null +++ b/onebot-data/tools/gen-pending-manual.py @@ -0,0 +1,116 @@ +# -*- coding: utf-8 -*- +""" +为待补分类(定位销/勾销缸/翻转缸/电缸)生成附图。 +来源: Univer 官方图册 PDF(X盘 官方图册 / 选型表/spanner)。 +输出: manual/<系列>/p.png + <系列>_manual.pdf +用法: PYTHONUTF8=1 python gen-pending-manual.py [--clean] +""" +import fitz, os, shutil, sys + +SRC = r'X:/新开发产品-Research and Development/2_产品资料/Univer资料/官方图册' +SPANNER = r'X:/新开发产品-Research and Development/2_产品资料/Univer资料/选型表/spanner' +DST = r'D:/开发/OnebotCatalog/onebot-data/catalog/manual' +DPI = 110 +CLEAN = '--clean' in sys.argv + +# 系列 -> (目录, [pdf 名]);pdf 名不含扩展名 +SPECS = { + # ---- 定位销 ---- + 'ULA': (SRC, ['ula40cten_en419', 'ula63cten_en407']), + 'ULB': (SRC, ['ulb32cten_en423']), + 'ULL': (SRC, ['ull50cten_en411']), + 'ULM': (SRC, ['ulm50cten_en410']), + 'ULO': (SRC, ['ulo50cten_en413']), + 'ULP': (SRC, ['ulp32cten_en404', 'ulp50cten_en405', 'ulp63cten_en406']), + 'ULR': (SRC, ['ulr50nken_en476', 'ulr63cten_en477']), + 'ULT': (SRC, ['ult50cten_en408']), + 'ULX': (SRC, ['ulx50cten_en425']), + 'ULY': (SRC, ['uly40cten_en426']), + 'ULZ': (SRC, ['ulz40cten_en428']), + # ---- 勾销缸 ---- + 'USP': (SRC, ['usp32cten_en355', 'usp50cten_en437', 'usp50ucten_en168']), + 'USL': (SRC, ['usl50cten_en171']), + 'USR': (SRC, ['usr40cten_en436']), + 'USS': (SRC, ['uss50cten_en433', 'uss63cten_en434']), + 'USSL': (SRC, ['ussl50cten_en358']), + # ---- 翻转缸 ---- + 'UAGP': (SRC, ['uagp075wcten_en580', 'uagp075bcten_en181', 'uagp080wcten_en174', + 'uagp080wcten_en573', 'uagp120bcten_en175', 'uagp120wcten_en574', + 'uagp150bcten_en178', 'uagp150wcten_en577', 'uagp155wcten_en583', + 'uagp170bnken_en176', 'uagp170wcten_en575', 'uagp210bcten_en182', + 'uagp210wcten_en581', 'uagp215bcten_en373', 'uagp215wcten_en584', + 'uagp300bcten_en177', 'uagp300wcten_en576', 'uagp350bcten_en183', + 'uagp350wcten_en582', 'uagp355bcten_en374', 'uagp355wcten_en585', + 'uagp600bcten_en179', 'uagp600wcten_en578', 'uagp605bcten_en180', + 'uagp605wcten_en579']), + # LAGP 官方已改名 UAGP,图册在选型表/spanner(老版) + 'LAGP': (SPANNER, ['lagp075_en_c181', 'lagp120_en_c175', 'lagp150_en_c178', + 'lagp155_en_c350', 'lagp170_en_c176', 'lagp210_en_c182', + 'lagp215nwrev-00-0119en_en373', 'lagp300_en_c177']), + # ---- 电缸 ---- + 'LAE': (SRC, ['lae140_en_c220', 'lae225_en_c221', 'lae350_en_c222']), +} + + +def classify(page): + t = page.get_text().upper() + if 'ACCESSORIES' in t or 'CLAMPING ARMS' in t or 'BLADE ARMS' in t: + return 'arm' + if 'DIMENSIONS' in t: + return 'dim' + if 'CHARACTERISTICS' in t or 'CODIFICATION' in t: + return 'char' + return 'other' + + +def main(): + os.makedirs(DST, exist_ok=True) + missing = [] + for series, (srcdir, pdfs) in SPECS.items(): + d = os.path.join(DST, series) + if CLEAN and os.path.isdir(d): + shutil.rmtree(d) + os.makedirs(d, exist_ok=True) + + docs, all_pages = [], [] + for name in pdfs: + p = os.path.join(srcdir, name + '.pdf') + if not os.path.exists(p): + missing.append(f'{series}: {name}') + continue + doc = fitz.open(p) + docs.append((name, doc)) + for i in range(doc.page_count): + all_pages.append((doc, i, classify(doc[i]))) + if not all_pages: + print(f'[{series}] 无可用源 PDF') + continue + + order = {'char': 0, 'dim': 1, 'arm': 2, 'other': 3} + all_pages.sort(key=lambda x: order[x[2]]) + n = 1 + for doc, i, _k in all_pages: + # 彩色输出 (官方图册本身是彩色的; 早期版本误用 csGRAY 转灰度, + # 体积约翻倍但相对整个数据包可忽略) + doc[i].get_pixmap(dpi=DPI).save( + os.path.join(d, f'p{n:02d}.png')) + n += 1 + + out_pdf = fitz.open() + for _name, doc in docs: + out_pdf.insert_pdf(doc) + outp = os.path.join(d, series + '_manual.pdf') + out_pdf.save(outp, garbage=3, deflate=True) + out_pdf.close() + print(f'[{series}] {len(all_pages)} 页 / {len(pdfs)} PDF -> ' + f'{os.path.getsize(outp)/1024:.0f}KB') + + if missing: + print('\n源缺失:') + for m in missing: + print(' ', m) + print('完成') + + +if __name__ == '__main__': + main() diff --git a/onebot-data/tools/gen-pending-series.py b/onebot-data/tools/gen-pending-series.py new file mode 100644 index 0000000..0e6b411 --- /dev/null +++ b/onebot-data/tools/gen-pending-series.py @@ -0,0 +1,524 @@ +# -*- coding: utf-8 -*- +""" +未完成分类真实数据清洗 —— 定位销(PIN)/勾销缸(HOK)/翻转缸(ROT)/电缸(ELEC) + +命名规则来自 Univer 官方图册 CODIFICATION KEY(pdftotext 提取核对)。 +解析采用「官方值域校验 + 左对齐优先」的 DFS 填空,可正确处理省略了空位的型号 +(如 ULP50040SK0 = rod 空 + orient=S + sensor=K)。 + +用法: + PYTHONUTF8=1 python gen-pending-series.py --scan # 只扫 X 盘并缓存 + PYTHONUTF8=1 python gen-pending-series.py --dry-run # 解析统计,不写文件 + PYTHONUTF8=1 python gen-pending-series.py --cat PIN # 只处理某分类 + PYTHONUTF8=1 python gen-pending-series.py # 全部生成 CSV/meta + PYTHONUTF8=1 python gen-pending-series.py --copy # 同时复制 STEP(X盘慢) +""" +import os, re, sys, json, shutil, collections + +BASE = r'X:/新开发产品-Research and Development/1_产品3D数模(发客户仿真)' +DST = r'D:/开发/OnebotCatalog/onebot-data/catalog' +CACHE = r'D:/开发/OnebotCatalog/onebot-data/tools/_scan_cache.json' + +ARGS = sys.argv[1:] +DRY = '--dry-run' in ARGS +DO_COPY = '--copy' in ARGS +DO_SCAN = '--scan' in ARGS +ONLY_CAT = ARGS[ARGS.index('--cat') + 1].upper() if '--cat' in ARGS else None + +# 所有待扫目录(各分类共用,一次扫完缓存) +ALL_DIRS = ['2-伸缩销', '2019 Math Data 铁臂', '2019-NEW product', '2020UNICLAMP数模汇总', + '3-勾销缸', '4-翻转缸', '1-夹紧缸/电缸', '5-夹臂', 'GR8_REV02'] + +# ---------------------------------------------------------------- 官方值域 +D_SENSOR_PIN = set('NKDJY') # 定位销传感器 +D_SENSOR_PIV = set('NKYJA') # 翻转缸传感器 +D_SENSOR_PC = set('NKDJY') # 勾销缸传感器 +D_ORIENT = set('XEONS') +D_MOUNT = set('AS') +D_ROD_ULP = set('ABCDEFHILM') +D_ROD_ULA = set('AGNP') +D_ROD_ULB = set('BCE') +D_ROD_ULT = set('AG') +D_MODEL = set('JRF') +D_PDIA = set('123456') +D_LOC = set('01') +D_HOOK = set('SD') +D_HOOKPOS = set('BC') +D_TPOS = set('OPVZ') +D_BRAKE = set('BMW') +D_CONN = set('SDFPC') +D_LAEPOS = set('NOV') +D_LAESTY = set('CDSN') + +# ---------------------------------------------------------------- 中文显示名 +SENSOR_PIN = {'N': '无传感器(带保护板)', 'K': '电子 PNP M12 (DF-K)', + 'D': '气动传感器 (DF-UPNW)', 'J': '电子 NPN 光学 (DF-J)', + 'Y': '电子 PNP M12 白LED (DF-Y)', '': '不适用'} +SENSOR_PIV = {'N': '无传感器(带保护板)', 'K': '电子 PNP M12 (DF-K)', + 'Y': '电子 PNP M12 白LED (DF-Y)', 'J': '电子 NPN M12 (DF-J)', + 'A': '电子 PNP 光学 M12 + 制动传感器', '': '不适用'} +ORIENT = {'X': '对称', 'E': '东', 'O': '西', 'N': '北', 'S': '南', '': '不适用'} +MOUNT = {'A': '55 mm', 'S': '标准', '': '不适用'} +ROD_ULP = {'A': '偏移销杆', 'B': '成型端杆', 'C': '十字成型端 内Ø16', 'D': '偏移销杆(加大销孔)', + 'E': '十字成型端 内Ø10', 'F': 'NAAMS 兼容 内Ø16', 'H': '平端 内Ø10', + 'I': '平端 内Ø12', 'L': '内Ø12', 'M': '内Ø20', '': '不适用'} +ROD_ULA = {'A': '偏移销杆(2螺钉1销)', 'N': '偏移销杆反孔(1螺钉2销)', + 'G': '偏移销杆 杆面与本体中轴对齐', 'P': '偏移销杆反孔 杆面与中轴对齐', '': '不适用'} +ROD_ULB = {'B': '成型端杆', 'C': '十字成型端 内Ø16', 'E': '十字成型端 内Ø10', '': '不适用'} +ROD_ULT = {'A': '偏移销杆', 'G': '偏移销杆 杆面与本体中轴对齐', '': '不适用'} +MODEL_DISP = {'J': '标准', 'R': '带机械锁紧/解锁装置', 'F': '无补偿', '': '不适用'} +LOCATING = {'0': '不含定位销', '1': '含定位销', '': '不适用'} +HOOK = {'S': '单钩', 'D': '双钩', '': '不适用'} +HOOKPOS = {'B': '标准', 'C': '旋转180°', '': '不适用'} +TABLEPOS = {'O': '水平 90°', 'P': '水平 O 镜像', 'V': '垂直 180°', 'Z': '垂直 V 镜像', '': '不适用'} +BRAKE = {'B': '带制动', 'M': '带制动+手动解锁', 'W': '无制动', '': '不适用'} +CONN = {'S': '左侧(标准)', 'D': '右侧', 'F': '前侧', 'P': '后侧', '': '不适用'} +# LAGP 旧码特有值(官方图册已改名 UAGP,无记载,按数据实际取值标注) +SENSOR_PIV_LEGACY = dict(SENSOR_PIV, U='旧码传感器位') +LAEPOS = {'N': '无臂', 'O': '180°', 'V': '90°', '': '不适用'} +LAESTY = {'C': '中央 15mm offset', 'D': '右侧 15mm offset', 'S': '左侧 15mm offset', + 'N': '无臂', '': '不适用'} + +# 维度元信息: code -> (zh, en, keywords, unit, type) +DIM_META = { + 'size': ('规格', 'Size', 'guige size', 'mm', 'number'), + 'stroke': ('行程', 'Stroke', 'xingcheng stroke', 'mm', 'number'), + 'rod': ('杆端样式', 'Rod End Style', 'ganduan rod end', '', 'enum'), + 'orient': ('杆方向', 'Rod Orientation', 'ganfangxiang orientation', '', 'enum'), + 'mount': ('侧装方式', 'Side Mounting', 'cezhuang mounting', '', 'enum'), + 'sensor': ('传感器', 'Sensor', 'chuanganqi sensor', '', 'enum'), + 'pcmodel': ('型式', 'Model', 'xingshi pin clamp model', '', 'enum'), + 'prog': ('流水号', 'Progressive No.', 'liushuihao prog special', '', 'enum'), + 'pin_dia': ('销径', 'Pin Diameter', 'xiaojing pin dia', 'mm', 'number'), + 'locating': ('定位销', 'Locating Pin', 'dingweixiao locating pin', '', 'enum'), + 'hook': ('挂钩', 'Hook', 'guagou hook', '', 'enum'), + 'hook_pos': ('挂钩位置', 'Hook Position', 'guagouweizhi hook pos', '', 'enum'), + 'table_pos': ('工作台位置', 'Table Position', 'gongzuotai table pos', '', 'enum'), + 'rotation': ('翻转角度', 'Pivot Rotation', 'fanzhuanjiaodu rotation', '°', 'number'), + 'brake': ('制动系统', 'Brake System', 'zhidong brake', '', 'enum'), + 'conn': ('接口方向', 'Connections', 'jiekou connections', '', 'enum'), + 'pos': ('臂位置', 'Arm Position', 'biweizhi arm pos', '', 'enum'), + 'style': ('臂样式', 'Arm Style', 'biyangshi arm style', '', 'enum'), + 'control': ('控制单元', 'Control Unit', 'kongzhi control unit', '', 'enum'), +} + +DIM_DISPLAY = { + 'sensor': None, 'orient': ORIENT, 'mount': MOUNT, 'pcmodel': MODEL_DISP, + 'locating': LOCATING, 'hook': HOOK, 'hook_pos': HOOKPOS, + 'table_pos': TABLEPOS, 'brake': BRAKE, 'conn': CONN, + 'pos': LAEPOS, 'style': LAESTY, +} + + +# ---------------------------------------------------------------- 工具 +def fill_dims(s, dims, domains, prefer_left=True): + """把字符串 s 填进 dims(允许维度为空),左对齐优先。返回 dict 或 None。""" + def dfs(i, j): + if i == len(s): + return {d: '' for d in dims[j:]} + if j >= len(dims): + return None + order = [True, False] if prefer_left else [False, True] + for eat in order: + if eat: + if s[i] in domains.get(dims[j], set()): + r = dfs(i + 1, j + 1) + if r is not None: + return dict(r, **{dims[j]: s[i]}) + else: + # 当前维度为空 + if j + 1 <= len(dims): + r = dfs(i, j + 1) + if r is not None: + return dict(r, **{dims[j]: ''}) + return None + return dfs(0, 0) + + +def norm(raw): + """去全部扩展名 / 大写 / 去空格 / 组合件取 '-' 前主码""" + base = raw.strip() + while True: # 处理 .stp.STP 这类多重扩展名 + stem, ext = os.path.splitext(base) + if ext.lower() in ('.stp', '.step'): + base = stem + else: + break + s = re.sub(r'\s+', '', base.upper()) + if '-' in s: # 与定位销组合的勾销缸:取主码 + s = s.split('-')[0] + return s + + +def dig(s, n): + return s[:n] if len(s) >= n else None + + +# ---------------------------------------------------------------- 解析器 +def parse_pin(stem, ver, rod_dom): + """UL[]""" + m = re.match(r'^UL' + ver + r'(\d{2})(\d{3})(.+)$', stem) + if not m: + return None + size, stroke, rest = m.groups() + if rest.endswith('X') and len(rest) > 4: # ATEX + rest = rest[:-1] + if len(rest) < 2: + return None + if not rest[-1].isdigit(): # product revision + return None + body = rest[:-1] + dims = {'A': ['rod', 'mount', 'sensor'], 'B': ['rod', 'sensor'], + 'L': ['rod', 'orient', 'sensor'], 'M': ['rod', 'orient', 'sensor'], + 'O': ['rod', 'sensor'], 'P': ['rod', 'orient', 'sensor'], + 'R': ['rod', 'orient', 'sensor'], 'T': ['rod', 'sensor'], + 'X': ['rod', 'sensor'], 'Y': ['rod', 'orient', 'sensor'], + 'Z': ['rod', 'orient', 'sensor']}[ver] + domains = {'rod': rod_dom, 'orient': D_ORIENT, 'mount': D_MOUNT, + 'sensor': D_SENSOR_PIN} + got = fill_dims(body, dims, domains) + if got is None: + return None + return dict(got, series='UL' + ver, size=int(size), stroke=int(stroke)) + + +def parse_usp(stem, series): + """US[P|L][] _ = 该位为空""" + m = re.match(r'^US[PL](\d{2})([A-Z_])([0-9_])([0-9_])([0-9_]{3})([A-Z_])([0-9_])[A-Z]*$', stem) + if not m: + return None + size, mdl, pdia, loc, pg, sen, _rev = m.groups() + return {'series': series, 'size': int(size), + 'pcmodel': '' if mdl == '_' else mdl, + 'pin_dia': int(pdia) if pdia.isdigit() else None, + 'locating': '' if loc == '_' else loc, + 'prog': '' if set(pg) == {'_'} else pg, + 'sensor': '' if sen == '_' else sen} + + +def parse_usr(stem): + """USR _ = 该位为空""" + m = re.match(r'^USR(\d{2})([A-Z_])([0-9_])([0-9_])([A-Z_])([0-9_]{3})([A-Z_])([0-9_])$', stem) + if not m: + return None + size, mdl, pdia, loc, hook, pg, sen, _rev = m.groups() + return {'series': 'USR', 'size': int(size), + 'pcmodel': '' if mdl == '_' else mdl, + 'pin_dia': int(pdia) if pdia.isdigit() else None, + 'locating': '' if loc == '_' else loc, + 'hook': '' if hook == '_' else hook, + 'prog': '' if set(pg) == {'_'} else pg, + 'sensor': '' if sen == '_' else sen} + + +def parse_uss(stem, series): + """US[SL|S]""" + m = re.match(r'^US(?:SL|S)(\d{2})([A-Z])([A-Z])(\d)(\d)(\d{3})([A-Z])(\d)$', stem) + if not m: + return None + size, mdl, hpos, pdia, loc, pg, sen, _rev = m.groups() + return {'series': series, 'size': int(size), 'pcmodel': mdl, 'hook_pos': hpos, + 'pin_dia': int(pdia), 'locating': loc, 'prog': pg, 'sensor': sen} + + +def parse_uagp(stem): + """UAGP _ 表示该位为空""" + m = re.match(r'^UAGP(\d{3})([A-Z_])([A-Z_])(\d{3})([A-Z])([A-Z_])[A-Z0-9_]*$', stem) + if not m: + return None + size, tp, sen, rot, brk, cn = m.groups() + return {'series': 'UAGP', 'size': int(size), + 'table_pos': '' if tp == '_' else tp, + 'sensor': '' if sen == '_' else sen, + 'rotation': int(rot), 'brake': brk, + 'conn': '' if cn == '_' else cn} + + +def parse_lagp(stem): + """LAGP[] (旧码,部分无 conn)""" + m = re.match(r'^LAGP(\d{3})([A-Z_])([A-Z_])(\d{3})([A-Z])([A-Z]?)$', stem) + if not m: + return None + size, tp, sen, rot, brk, cn = m.groups() + if sen not in D_SENSOR_PIV and sen != '_': + sen = 'U' # LAGP063 早期码用 U 表示传感器位 + return {'series': 'LAGP', 'size': int(size), + 'table_pos': '' if tp == '_' else tp, + 'sensor': '' if sen == '_' else sen, + 'rotation': int(rot), 'brake': brk, 'conn': cn or ''} + + +def parse_lae(stem): + """LAE""" + m = re.match(r'^LAE(\d{3})([A-Z])([A-Z])(\d+)$', stem) + if not m: + return None + size, pos, sty, ctl = m.groups() + return {'series': 'LAE', 'size': int(size), 'pos': pos, 'style': sty, 'control': ctl} + + +# ---------------------------------------------------------------- 系列配置 +SPECS = [ + dict(cat='PIN', series='ULA', parse=lambda s: parse_pin(s, 'A', D_ROD_ULA), + rod=ROD_ULA, zh='ULA 气动可伸缩定位销(双杆可调)', + en='ULA Pneumatic Retractable Locating Pin Unit, double orientable rod', + kw='ula dingweixiao locating pin'), + dict(cat='PIN', series='ULB', parse=lambda s: parse_pin(s, 'B', D_ROD_ULB), + rod=ROD_ULB, zh='ULB 气动可伸缩定位销(后置传感器)', + en='ULB Pneumatic Retractable Locating Pin Unit, rear sensor, single rod', + kw='ulb dingweixiao locating pin'), + dict(cat='PIN', series='ULL', parse=lambda s: parse_pin(s, 'L', D_ROD_ULP), + rod=ROD_ULP, zh='ULL 手动可伸缩定位销(手杆)', + en='ULL Manual Retractable Locating Pin Unit with Hand Lever', + kw='ull dingweixiao shoudong manual'), + dict(cat='PIN', series='ULM', parse=lambda s: parse_pin(s, 'M', D_ROD_ULP), + rod=ROD_ULP, zh='ULM 带手杆气动可伸缩定位销', + en='ULM Pneumatic Retractable Locating Pin Unit with Hand Lever', + kw='ulm dingweixiao shougan lever'), + dict(cat='PIN', series='ULO', parse=lambda s: parse_pin(s, 'O', D_ROD_ULA), + rod=ROD_ULA, zh='ULO 气动可伸缩定位销(双杆带手杆)', + en='ULO Pneumatic Retractable Locating Pin Unit, double rod with hand lever', + kw='ulo dingweixiao double rod'), + dict(cat='PIN', series='ULP', parse=lambda s: parse_pin(s, 'P', D_ROD_ULP), + rod=ROD_ULP, zh='ULP 气动可伸缩定位销(单杆)', + en='ULP Pneumatic Retractable Locating Pin Unit, single rod', + kw='ulp dingweixiao locating pin'), + dict(cat='PIN', series='ULR', parse=lambda s: parse_pin(s, 'R', D_ROD_ULP), + rod=ROD_ULP, zh='ULR 紧凑型气动可伸缩定位销', + en='ULR Compact Pneumatic Retractable Locating Pin Unit', + kw='ulr dingweixiao compact'), + dict(cat='PIN', series='ULT', parse=lambda s: parse_pin(s, 'T', D_ROD_ULT), + rod=ROD_ULT, zh='ULT 肘节机构气动可伸缩定位销(不可逆)', + en='ULT Irreversible Pneumatic Retractable Locating Pin Unit, double rod', + kw='ult dingweixiao toggle'), + dict(cat='PIN', series='ULX', parse=lambda s: parse_pin(s, 'X', D_ROD_ULT), + rod=ROD_ULT, zh='ULX 肘节机构气动可伸缩定位销(带手杆)', + en='ULX Irreversible Pneumatic Locating Pin Unit with Hand Lever', + kw='ulx dingweixiao toggle lever'), + dict(cat='PIN', series='ULY', parse=lambda s: parse_pin(s, 'Y', D_ROD_ULP), + rod=ROD_ULP, zh='ULY 肘节机构气动可伸缩定位销(单杆带手杆)', + en='ULY Irreversible Pneumatic Locating Pin Unit, single rod with hand lever', + kw='uly dingweixiao toggle'), + dict(cat='PIN', series='ULZ', parse=lambda s: parse_pin(s, 'Z', D_ROD_ULP), + rod=ROD_ULP, zh='ULZ 肘节机构气动可伸缩定位销(单杆)', + en='ULZ Irreversible Pneumatic Retractable Locating Pin Unit, single rod', + kw='ulz dingweixiao toggle'), + + dict(cat='HOK', series='USP', parse=lambda s: parse_usp(s, 'USP'), rod=None, + zh='USP 气动勾销缸', en='USP Pneumatic Pin Clamp', kw='usp gouxiao pin clamp'), + dict(cat='HOK', series='USL', parse=lambda s: parse_usp(s, 'USL'), rod=None, + zh='USL 手动勾销缸(手杆)', en='USL Manual Pin Clamp with Hand Lever', + kw='usl gouxiao manual'), + dict(cat='HOK', series='USR', parse=parse_usr, rod=None, + zh='USR 紧凑型气动勾销缸', en='USR Pneumatic Compact Pin Clamp', + kw='usr gouxiao compact'), + dict(cat='HOK', series='USS', parse=lambda s: parse_uss(s, 'USS'), rod=None, + zh='USS 带补偿气动勾销缸', en='USS Pneumatic Pin Clamp with Compensation', + kw='uss gouxiao compensation'), + dict(cat='HOK', series='USSL', parse=lambda s: parse_uss(s, 'USSL'), rod=None, + zh='USSL 激光焊用气动勾销缸', + en='USSL Pneumatic Pin Clamp for Laser Beam Applications', + kw='ussl gouxiao laser'), + + dict(cat='ROT', series='UAGP', parse=parse_uagp, rod=None, + zh='UAGP 气动翻转缸', en='UAGP Pneumatic Power Pivot', + kw='uagp fanzhuan power pivot'), + dict(cat='ROT', series='LAGP', parse=parse_lagp, rod=None, + zh='LAGP 气动翻转缸(旧型号)', en='LAGP Pneumatic Power Pivot (Legacy)', + kw='lagp fanzhuan power pivot legacy'), + + dict(cat='ELEC', series='LAE', parse=parse_lae, rod=None, + zh='LAE 电动夹紧缸', en='LAE Electric Power Clamp', + kw='lae diandong electric clamp'), +] + + +# ---------------------------------------------------------------- 扫描 / 缓存 +def do_scan(): + found = collections.defaultdict(list) + for d in ALL_DIRS: + root = os.path.join(BASE, d) + if not os.path.isdir(root): + print(f' ! 目录不存在: {d}') + continue + n0 = len(found) + for dirpath, _, files in os.walk(root): + for f in files: + if f.lower().endswith(('.stp', '.step')): + found[f].append(os.path.join(dirpath, f).replace('\\', '/')) + print(f' {d}: +{len(found)-n0} 文件') + with open(CACHE, 'w', encoding='utf-8') as fp: + json.dump(found, fp) + print(f'缓存写入 {CACHE} 共 {len(found)} 个唯一文件名') + + +def load_scan(): + if not os.path.exists(CACHE): + sys.exit(f'缺少扫描缓存,请先运行: --scan ({CACHE})') + with open(CACHE, encoding='utf-8') as fp: + return json.load(fp) + + +# ---------------------------------------------------------------- 生成 +def collect(spec, scanned): + by_model, unresolved = {}, [] + for fname, paths in scanned.items(): + stem = norm(fname) + if not stem.startswith(spec['series']): + continue + try: + rec = spec['parse'](stem) + except Exception as e: + unresolved.append((stem, f'ERR {e}')) + continue + if rec is None or rec.get('series') != spec['series']: + unresolved.append((stem, fname)) + continue + # 占位/测试文件(如 USP50J_0___K0 销径为空)不是真实型号,丢弃 + if any(v is None for k, v in rec.items() if k not in ('series',)): + unresolved.append((stem, fname + ' (关键参数为空, 丢弃)')) + continue + by_model.setdefault(stem, dict(rec, model=stem, src=paths[0])) + return by_model, unresolved + + +def build_meta(spec, records): + order = ['size', 'stroke', 'rod', 'orient', 'mount', 'pos', 'style', 'pcmodel', + 'hook_pos', 'hook', 'pin_dia', 'locating', 'prog', 'table_pos', 'rotation', + 'brake', 'conn', 'control', 'sensor'] + # 主键 model=完整型号,绝不能当维度 + dims = [d for d in order if d != 'model' and any(d in r for r in records)] + + params = [] + for d in dims: + zh, en, kw, unit, typ = DIM_META[d] + vals = sorted({r[d] for r in records if r.get(d) not in (None, '')}) + if typ == 'number': + params.append({"code": d, "nameZh": zh, "nameEn": en, "keywords": kw, + "unit": unit, "type": "number", "values": vals, "display": {}}) + continue + has_empty = any(r.get(d, '') == '' for r in records) + vlist = ([''] if has_empty else []) + [str(v) for v in vals] + if d == 'sensor': + dmap = SENSOR_PIV if spec['cat'] == 'ROT' else SENSOR_PIN + if spec['series'] == 'LAGP': + dmap = SENSOR_PIV_LEGACY + elif d == 'rod': + dmap = spec.get('rod') or ROD_ULP + else: + dmap = DIM_DISPLAY.get(d) or {} + params.append({"code": d, "nameZh": zh, "nameEn": en, "keywords": kw, + "unit": unit, "type": "enum", "values": vlist, + "display": {k: dmap.get(k, k) for k in vlist}}) + # 剔除非信息维度: 值域为空(无可选值), 或枚举维度只有 [空串] 一种取值。 + # 保留"单一真值"维度(如单型号系列的 pcmodel=['J']) —— 否则参数全空导致 + # CSV 表头出现空列名, 构建器报"CSV 行字段不足"。 + params = [p for p in params + if p['values'] and not (p['type'] == 'enum' and p['values'] == [''])] + # 附件按 manual/<系列>/ 实际 png 数量生成 —— 不能硬编码 p01。 + # (曾踩坑: 先跑 gen-pending-manual 生成多页, 再跑本脚本重写 meta 时把附件 + # 覆盖回单页, 导致包内只有 1 张附图。此处扫目录自动对齐。) + atts = [] + mdir = os.path.join(DST, 'manual', spec['series']) + if os.path.isdir(mdir): + for f in sorted(os.listdir(mdir)): + if f.lower().endswith('.png'): + atts.append({"kind": "manual", "lang": "", + "source": f"manual/{spec['series']}/{f}", "model": None}) + for f in sorted(os.listdir(mdir)): + if f.lower().endswith('.pdf'): + atts.append({"kind": "datasheet", "lang": "", + "source": f"manual/{spec['series']}/{f}", "model": None}) + if not atts: + atts = [ + {"kind": "manual", "lang": "", "source": f"manual/{spec['series']}/p01.png", "model": None}, + {"kind": "datasheet", "lang": "", "source": f"manual/{spec['series']}/{spec['series']}_manual.pdf", "model": None}, + ] + return { + "series": { + "code": spec['series'], "nameZh": spec['zh'], "nameEn": spec['en'], + "keywords": spec['kw'], "parameters": params, "rules": [], + "naming": {"stepNameTemplate": "{model}.step"}, + "attachments": [], "variants": [] + }, + "attachments": atts + } + + +def main(): + if DO_SCAN: + do_scan() + return + scanned = load_scan() + print(f'扫描缓存: {len(scanned)} 个唯一文件名') + + csv_dir = os.path.join(DST, 'csv') + series_dir = os.path.join(DST, 'series') + step_dir = os.path.join(DST, 'step') + summary = collections.defaultdict(list) + + for spec in SPECS: + if ONLY_CAT and spec['cat'] != ONLY_CAT: + continue + records, unresolved = collect(spec, scanned) + recs = sorted(records.values(), key=lambda r: r['model']) + print(f"\n{'='*74}\n## {spec['cat']} / {spec['series']} 型号 {len(recs)} 个") + summary[spec['cat']].append((spec['series'], len(recs))) + if not recs: + print(' (X盘无数据 —— 保留原 demo)') + continue + print(' 例:', {k: v for k, v in recs[0].items() if k != 'src'}) + if unresolved: + print(f' 未解析 {len(unresolved)}:', [u[0] for u in unresolved[:8]]) + meta = build_meta(spec, recs) + for p in meta['series']['parameters']: + print(f" {p['code']:10s} {p['type']:6s} {p['values']}") + + # 唯一性门禁: 参数组合必须唯一确定型号,否则选型会静默给错货 + pcs = [p['code'] for p in meta['series']['parameters']] + seen = {} + for r in recs: + seen.setdefault(tuple(str(r.get(d, '')) for d in pcs), []).append(r['model']) + dup = {k: v for k, v in seen.items() if len(v) > 1} + if dup: + print(f' !! 参数组合冲突 {len(dup)} 组 —— 会被静默错配:') + for k, v in list(dup.items())[:5]: + print(' ', dict(zip(pcs, k)), '->', v) + else: + print(f' [OK] 参数组合唯一 ({len(seen)} 组合 / {len(recs)} 型号)') + + if DRY: + continue + + dims = [p['code'] for p in meta['series']['parameters']] + def cv(x): + return '' if x is None else str(x) + rows = ['model_code,' + ','.join(dims) + ',step_file'] + for r in recs: + rows.append(','.join([r['model']] + [cv(r.get(d, '')) for d in dims] + + [r['model'] + '.step'])) + with open(os.path.join(csv_dir, spec['series'] + '.csv'), 'w', + encoding='utf-8-sig', newline='') as fp: + fp.write('\r\n'.join(rows) + '\r\n') + with open(os.path.join(series_dir, spec['series'] + '.meta.json'), 'w', + encoding='utf-8') as fp: + json.dump(meta, fp, ensure_ascii=False, indent=1) + print(f" -> 写入 {spec['series']}.csv / .meta.json") + + if DO_COPY: + n = 0 + for r in recs: + dst = os.path.join(step_dir, r['model'] + '.step') + if not os.path.exists(dst): + shutil.copy2(r['src'], dst) + n += 1 + print(f' -> 复制 STEP {n} 个') + + print(f"\n{'='*74}\n### 汇总") + for cat, lst in summary.items(): + tot = sum(n for _, n in lst) + print(f' {cat:5s} 共 {tot:4d} 型号 ' + ', '.join(f'{s}:{n}' for s, n in lst)) + + +if __name__ == '__main__': + main() diff --git a/onebot-data/tools/gen-series-thumbs.py b/onebot-data/tools/gen-series-thumbs.py new file mode 100644 index 0000000..2033234 --- /dev/null +++ b/onebot-data/tools/gen-series-thumbs.py @@ -0,0 +1,93 @@ +# -*- coding: utf-8 -*- +""" +为没有产品图的系列生成统一风格占位缩略图 (web/series/<系列码>.webp)。 + +背景: 首页系列缩略图网格需要每个系列一张图。bom-viewer 项目已有 27 张真实产品图 + (来自 onebot251231 网站后台), 其余 13 个系列 (KC/M/MS/MAL/KS 等基础气缸 + + UFL/LAGP 老码系列) 暂无 → 生成占位图, 用户后续用真图覆盖同名文件即可。 + +风格对齐卡片: 浅灰底 (--gray-50 #f9fafb) + 青色系列码大字 (--primary-700 #0f766e) + + "图片待补" 小字, 尺寸 500x450 (与 bom-viewer 产品图一致)。 + +用法: PYTHONUTF8=1 python gen-series-thumbs.py +""" +import os +from PIL import Image, ImageDraw, ImageFont + +WEB_SERIES = r'D:/开发/OnebotCatalog/web/series' + +# 需要占位的系列 (bom-viewer 里没有对应的产品图) +PLACEHOLDER = ['KC', 'KCB', 'KSB', 'KCS', 'KS', 'KSU', + 'M', 'MS', 'MSC', 'MAL', 'MALC', 'UFL', 'LAGP'] + +W, H = 500, 450 +BG = (249, 250, 251) # --gray-50 +CODE_COLOR = (15, 118, 110) # --primary-700 +SUB_COLOR = (156, 163, 175) # --gray-400 +BOX = (229, 231, 235) # --gray-200 + +FONT_CANDIDATES = [ + r'C:\Windows\Fonts\consolab.ttf', # Consolas Bold — 与卡片等宽字体一致 + r'C:\Windows\Fonts\consola.ttf', + r'C:\Windows\Fonts\msyhbd.ttc', +] +CN_FONT_CANDIDATES = [ + r'C:\Windows\Fonts\msyh.ttc', + r'C:\Windows\Fonts\msyhl.ttc', +] + + +def load_font(paths, size): + for p in paths: + if os.path.exists(p): + try: + return ImageFont.truetype(p, size) + except Exception: + continue + return ImageFont.load_default() + + +def make_one(code, out_path): + im = Image.new('RGB', (W, H), BG) + d = ImageDraw.Draw(im) + + # 虚线圆角外框 (暗示"这里是图位") + d.rounded_rectangle([26, 26, W - 26, H - 26], radius=18, outline=BOX, width=2) + + # 系列码大字 (居中) + f_code = load_font(FONT_CANDIDATES, 84) + bbox = d.textbbox((0, 0), code, font=f_code) + d.text(((W - (bbox[2] - bbox[0])) / 2 - bbox[0], + H / 2 - 62 - (bbox[3] - bbox[1]) / 2), code, font=f_code, fill=CODE_COLOR) + + # 分隔短线 + d.line([(W / 2 - 34, H / 2 + 8), (W / 2 + 34, H / 2 + 8)], fill=BOX, width=2) + + # "图片待补" (中英各一行, 居中) + f_cn = load_font(CN_FONT_CANDIDATES, 20) + f_en = load_font(FONT_CANDIDATES, 15) + t1 = '图片待补' + b1 = d.textbbox((0, 0), t1, font=f_cn) + d.text(((W - (b1[2] - b1[0])) / 2 - b1[0], H / 2 + 30), t1, font=f_cn, fill=SUB_COLOR) + t2 = 'IMAGE PENDING' + b2 = d.textbbox((0, 0), t2, font=f_en) + d.text(((W - (b2[2] - b2[0])) / 2 - b2[0], H / 2 + 62), t2, font=f_en, fill=SUB_COLOR) + + im.save(out_path, 'WEBP', quality=88, method=6) + return os.path.getsize(out_path) + + +def main(): + os.makedirs(WEB_SERIES, exist_ok=True) + total = 0 + for code in PLACEHOLDER: + p = os.path.join(WEB_SERIES, code + '.webp') + sz = make_one(code, p) + total += sz + print(f' {code:6s} -> {sz/1024:5.1f} KB') + print(f'\n生成 {len(PLACEHOLDER)} 张占位图, 共 {total/1024:.0f} KB') + print('替换方式: 用真图覆盖 web/series/<系列码>.webp 即可 (无需改代码)') + + +if __name__ == '__main__': + main() diff --git a/onebot-data/tools/gen-step-gz.py b/onebot-data/tools/gen-step-gz.py new file mode 100644 index 0000000..66a322b --- /dev/null +++ b/onebot-data/tools/gen-step-gz.py @@ -0,0 +1,85 @@ +# -*- coding: utf-8 -*- +""" +为网页发布目录生成 STEP 压缩副档 (.step.gz),供浏览器端按需解压下载。 + +背景: 网页版购物车打包是逐个 fetch 原始 STEP (翻转缸单个 7-13MB), 选 20 个型号 + 要传 40MB+。预生成 gz 副档后前端优先取 .gz 并在浏览器解压 (DecompressionStream), + 传输量降至约 1/4.5。 + +用法: + PYTHONUTF8=1 python gen-step-gz.py # 全量生成(跳过已存在) + PYTHONUTF8=1 python gen-step-gz.py --force # 强制重建 + PYTHONUTF8=1 python gen-step-gz.py --clean # 删除已有 .gz 后重建 +""" +import os, sys, gzip, shutil, time +from concurrent.futures import ThreadPoolExecutor, as_completed + +args = [a for a in sys.argv[1:] if not a.startswith('--')] +FORCE = '--force' in sys.argv +CLEAN = '--clean' in sys.argv +if not args: + sys.exit('用法: python gen-step-gz.py [--force|--clean]') +WEB = args[0] +STEP = os.path.join(WEB, 'step') +if not os.path.isdir(STEP): + sys.exit('找不到 ' + STEP) + +if CLEAN: + n = 0 + for f in os.listdir(STEP): + if f.lower().endswith('.gz'): + os.remove(os.path.join(STEP, f)) + n += 1 + print(f'已清理 {n} 个 .gz') + +files = [f for f in os.listdir(STEP) + if f.lower().endswith(('.step', '.stp'))] +todo = [] +for f in files: + src = os.path.join(STEP, f) + dst = src + '.gz' + if FORCE or not os.path.exists(dst): + todo.append((src, dst, f)) +print(f'step 文件 {len(files)} 个, 待压缩 {len(todo)} 个') + + +def gz_one(item): + src, dst, name = item + tmp = dst + '.part' + try: + with open(src, 'rb') as fi, gzip.open(tmp, 'wb', compresslevel=6) as fo: + shutil.copyfileobj(fi, fo, 1024 * 1024) + os.replace(tmp, dst) + return (name, os.path.getsize(src), os.path.getsize(dst), None) + except Exception as e: + try: + os.remove(tmp) + except OSError: + pass + return (name, 0, 0, str(e)) + + +t0 = time.time() +raw = comp = done = err = 0 +errors = [] +with ThreadPoolExecutor(max_workers=4) as ex: + futs = [ex.submit(gz_one, it) for it in todo] + for i, fut in enumerate(as_completed(futs), 1): + name, r, c, e = fut.result() + if e: + err += 1 + errors.append(f'{name}: {e}') + else: + done += 1 + raw += r + comp += c + if i % 200 == 0: + print(f' {i}/{len(todo)} ({time.time()-t0:.0f}s)') + +print(f'\n完成: {done} 个, 失败 {err} 个, 用时 {time.time()-t0:.0f}s') +if raw: + print(f' 原始 {raw/1073741824:.2f} GB -> gz {comp/1073741824:.2f} GB ' + f'(省 {(1-comp/raw)*100:.1f}%)') +for e in errors[:10]: + print(' !', e) +print(f'step 目录现有 .gz {sum(1 for f in os.listdir(STEP) if f.endswith(".gz"))} 个') diff --git a/onebot-data/tools/render-manual-pages.py b/onebot-data/tools/render-manual-pages.py index 286bb41..fed4bd3 100644 --- a/onebot-data/tools/render-manual-pages.py +++ b/onebot-data/tools/render-manual-pages.py @@ -6,8 +6,10 @@ # 输出: OnebotCatalog\onebot-data\catalog\manual\<系列>\p<物理页码>.png (灰度 PNG 110dpi, 源目录布局) import fitz, os, sys -PDF = r"OnebotCatalog\ONEBOT - 直线气缸 - 中文.pdf" -OUT = r"OnebotCatalog\onebot-data\catalog\manual" +# 脚本位于 onebot-data/tools/,项目根即上两级 +_ROOT = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +PDF = os.path.join(_ROOT, "ONEBOT - 直线气缸 - 中文.pdf") +OUT = os.path.join(_ROOT, "onebot-data", "catalog", "manual") DPI = 110 # 系列 → 手册物理页码 (1-based, 含首尾); 依据: 手册印刷页码 = 物理页码 - 1 @@ -38,7 +40,7 @@ def main(): os.makedirs(d, exist_ok=True) for p in pages: out = os.path.join(d, f"p{p:02d}.png") - pix = doc[p - 1].get_pixmap(dpi=DPI, colorspace=fitz.csGRAY) + pix = doc[p - 1].get_pixmap(dpi=DPI) pix.save(out) kb = os.path.getsize(out) // 1024 total += kb diff --git a/onebot-data/tools/scan-pending-series.py b/onebot-data/tools/scan-pending-series.py new file mode 100644 index 0000000..3dd2477 --- /dev/null +++ b/onebot-data/tools/scan-pending-series.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +""" +勘察未完成分类的真实数模(定位销/勾销缸/翻转缸/夹爪缸/电缸) +用法: PYTHONUTF8=1 python scan-pending-series.py +""" +import os, re, collections, sys + +BASE = r'X:/新开发产品-Research and Development/1_产品3D数模(发客户仿真)' + +# 各分类的数据源目录 +ROOTS = { + 'PIN': ['2-伸缩销', '2019 Math Data 铁臂', '2019-NEW product', '2020UNICLAMP数模汇总'], + 'HOK': ['3-勾销缸'], + 'ROT': ['4-翻转缸'], + 'GRP': ['5-夹臂', 'GR8_REV02'], + 'ELEC': ['1-夹紧缸/电缸'], +} + +# 关注的系列前缀(新码 UL* / US* / UAGP / UGP / LAE) +FOCUS = re.compile(r'^(UL[A-Z]|US[A-Z]?|UAGP|UGP|LAE|LAGP|UAG)') + + +def scan(dirs): + found = collections.defaultdict(list) + for d in dirs: + root = os.path.join(BASE, d) + if not os.path.isdir(root): + continue + for dirpath, _, files in os.walk(root): + for f in files: + if f.lower().endswith(('.stp', '.step')): + found[f].append(os.path.join(dirpath, f)) + return found + + +def main(): + for cat, dirs in ROOTS.items(): + print(f'\n{"="*70}\n### {cat} (源: {", ".join(dirs)})\n{"="*70}') + files = scan(dirs) + buckets = collections.defaultdict(set) + for fname in files: + stem = os.path.splitext(fname)[0].upper().strip() + m = FOCUS.match(stem) + if not m: + continue + pfx = m.group(1) + buckets[pfx].add(stem) + for pfx in sorted(buckets): + names = sorted(buckets[pfx]) + print(f'\n -- {pfx} ({len(names)} 个)') + for n in names[:200]: + print(f' {n}') + if len(names) > 200: + print(f' ... 还有 {len(names)-200} 个') + + +if __name__ == '__main__': + main() diff --git a/onebot-data/tools/test-zip-ratio.py b/onebot-data/tools/test-zip-ratio.py new file mode 100644 index 0000000..2c5d7ff --- /dev/null +++ b/onebot-data/tools/test-zip-ratio.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +"""测试 STEP 文件的 zip 压缩率 —— 判断"下载时压缩"能省多少。""" +import zipfile, os, tempfile + +FILES = [ + r'D:/开发/OnebotCatalog/onebot-data/catalog/step/UAGP155__045BS0.step', + r'D:/开发/OnebotCatalog/onebot-data/catalog/step/LAGP210OA045BC.step', + r'D:/开发/OnebotCatalog/onebot-data/catalog/step/ULP50040AEK0.step', + r'D:/开发/OnebotCatalog/onebot-data/catalog/step/UCBP40OESK0.step', +] + +tmp = tempfile.mkdtemp() +tot_raw = tot_def = tot_sto = 0 +print(f'{"文件":30s} {"原始":>9s} {"deflate":>9s} {"压缩率":>7s}') +for f in FILES: + if not os.path.exists(f): + print(f' 缺失: {f}') + continue + raw = os.path.getsize(f) + tot_raw += raw + sizes = {} + for lvl, tag in ((zipfile.ZIP_DEFLATED, 'def'), (zipfile.ZIP_STORED, 'sto')): + p = os.path.join(tmp, tag + '.zip') + with zipfile.ZipFile(p, 'w', lvl) as z: + z.write(f, os.path.basename(f)) + sizes[tag] = os.path.getsize(p) + tot_def += sizes['def'] + tot_sto += sizes['sto'] + print(f'{os.path.basename(f):30s} {raw/1048576:8.2f}M {sizes["def"]/1048576:8.2f}M ' + f'{(1-sizes["def"]/raw)*100:6.1f}%') + +if tot_raw: + print(f'\n合计 {len(FILES)} 个: 原始 {tot_raw/1048576:.2f}MB') + print(f' deflate {tot_def/1048576:.2f}MB (省 {(1-tot_def/tot_raw)*100:.1f}%)') + print(f' 不压缩 {tot_sto/1048576:.2f}MB') + +# 同时测 .opc 整包压缩率(判断主包还有多少水分) +opc = r'D:/开发/OnebotCatalog/sample/OnebotCatalog_2026.08.opc' +if os.path.exists(opc): + print(f'\n.opc 主包: {os.path.getsize(opc)/1073741824:.2f}GB') + try: + with zipfile.ZipFile(opc) as z: + infos = z.infolist() + c = sum(i.compress_size for i in infos) + u = sum(i.file_size for i in infos) + print(f' 内部 {len(infos)} 条目: 未压缩 {u/1073741824:.2f}GB -> 已压缩 {c/1073741824:.2f}GB ' + f'(当前压缩率 {(1-c/u)*100:.1f}%)') + except Exception as e: + print(' 读取失败:', e) diff --git a/onebot-data/tools/update-pending-meta-attach.py b/onebot-data/tools/update-pending-meta-attach.py new file mode 100644 index 0000000..e1d83ac --- /dev/null +++ b/onebot-data/tools/update-pending-meta-attach.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +""" +按 manual/<系列>/ 实际 png 数量重写 meta 的 attachments(多页附图)。 +用法: PYTHONUTF8=1 python update-pending-meta-attach.py +""" +import json, os, glob + +CAT = r'D:/开发/OnebotCatalog/onebot-data/catalog' +SERIES = ['ULA','ULB','ULL','ULM','ULO','ULP','ULR','ULT','ULX','ULY','ULZ', + 'USP','USL','USR','USS','USSL', 'UAGP','LAGP', 'LAE'] + +for s in SERIES: + mp = os.path.join(CAT, 'series', s + '.meta.json') + if not os.path.exists(mp): + print(f'[{s}] meta 不存在,跳过') + continue + meta = json.load(open(mp, encoding='utf-8')) + d = os.path.join(CAT, 'manual', s) + pngs = sorted(glob.glob(os.path.join(d, 'p*.png'))) + if not pngs: + print(f'[{s}] 无 png,保留原 attachments') + continue + atts = [{"kind": "manual", "lang": "", "source": f"manual/{s}/{os.path.basename(p)}", + "model": None} for p in pngs] + pdf = os.path.join(d, s + '_manual.pdf') + if os.path.exists(pdf): + atts.append({"kind": "datasheet", "lang": "", + "source": f"manual/{s}/{s}_manual.pdf", "model": None}) + meta['attachments'] = atts + with open(mp, 'w', encoding='utf-8') as fp: + json.dump(meta, fp, ensure_ascii=False, indent=1) + print(f'[{s}] {len(pngs)} 页附图' + (' + datasheet' if os.path.exists(pdf) else '')) + +# catalog.json 的 GRP 分类:UGP 无 X 盘数据,保留 demo —— 提示用户 +print('\n注: GRP/UGP 无 X 盘真实数模,保留原 demo 数据') diff --git a/src/CatalogCore/OpcPackage.cs b/src/CatalogCore/OpcPackage.cs index 64d6d71..7c3fb37 100644 --- a/src/CatalogCore/OpcPackage.cs +++ b/src/CatalogCore/OpcPackage.cs @@ -21,19 +21,38 @@ namespace Ounibo.Catalog.Core private ZipArchive _zip; private Stream _stream; + private string _tempCopy; // 超大包走临时文件副本时的路径 (Dispose 时删除) + + /// 内存直读上限: 超过则改走临时文件副本 (MemoryStream 上限 2GB, 见 Open)。 + const long InMemoryLimit = 1500L * 1024 * 1024; public static OpcPackage Open(string path) { var p = new OpcPackage { Path = path }; - // 整包读入内存, 立即释放文件句柄: 软件运行中仍可重建/覆盖同一 .opc (踩坑 #19) - byte[] bytes; - using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) + // 立即释放源文件句柄: 软件运行中仍可重建/覆盖同一 .opc (踩坑 #19)。 + // 小包读入内存; 超大包(含全部数模可超 2GB)改用临时文件副本 — + // MemoryStream 受 int.MaxValue 限制会抛"流太长"。 + var fi = new FileInfo(path); + if (fi.Length <= InMemoryLimit) { - var ms = new MemoryStream(); - fs.CopyTo(ms); - bytes = ms.ToArray(); + byte[] bytes; + using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) + { + var ms = new MemoryStream((int)fi.Length); + fs.CopyTo(ms); + bytes = ms.ToArray(); + } + p._stream = new MemoryStream(bytes); + } + else + { + // 复制到临时文件后打开, 同样不占用源文件句柄 + p._tempCopy = System.IO.Path.Combine( + System.IO.Path.GetTempPath(), "opc_" + Guid.NewGuid().ToString("N") + ".tmp"); + File.Copy(path, p._tempCopy, true); + p._stream = new FileStream(p._tempCopy, FileMode.Open, FileAccess.Read, + FileShare.ReadWrite); } - p._stream = new MemoryStream(bytes); p._zip = new ZipArchive(p._stream, ZipArchiveMode.Read); p.LoadCatalog(); return p; @@ -140,6 +159,11 @@ namespace Ounibo.Catalog.Core _stream.Dispose(); _stream = null; } + if (_tempCopy != null) + { + try { File.Delete(_tempCopy); } catch { /* 临时文件删除失败不影响退出 */ } + _tempCopy = null; + } } } } diff --git a/tools/publish.ps1 b/tools/publish.ps1 index 78c78d7..f42cf16 100644 --- a/tools/publish.ps1 +++ b/tools/publish.ps1 @@ -73,6 +73,20 @@ if (Test-Path $webDir) { Write-Output "站点目录删除失败 (被占用), 请 New-Item -ItemType Directory -Force -Path $webDir | Out-Null [System.IO.Compression.ZipFile]::ExtractToDirectory($Opc, $webDir) Copy-Item (Join-Path $root 'web\*') $webDir -Recurse -Force + +# 5.5) 生成 STEP 压缩副档 (.step.gz): 网页购物车打包改为下载 gz + 浏览器解压, +# 传输量降至约 1/4.5 (翻转缸等大件尤为明显)。前端在无 gz 时自动回退原始文件。 +$gzTool = Join-Path $root 'onebot-data\tools\gen-step-gz.py' +if (Test-Path $gzTool) { + $py = (Get-Command python -ErrorAction SilentlyContinue) + if ($py) { + Write-Output "[5.5/6] 生成 STEP 压缩副档 (较慢, 视数模总量而定)..." + $env:PYTHONUTF8 = '1' + & $py.Source $gzTool $webDir + $gzCount = (Get-ChildItem (Join-Path $webDir 'step') -Filter '*.gz' -ErrorAction SilentlyContinue).Count + Write-Output " .step.gz 副档: $gzCount 个" + } else { Write-Output " [警告] 未找到 python, 跳过 gz 副档生成 (网页将取原始 STEP, 功能不受影响)" } +} Write-Output "[5/5] 在线站点: $webDir (整目录上传到网站根目录即上线; 本地预览: tools\serve-web.ps1)" # 6) 网格预览侧车 (窗口内 3D 开源 Helix 渲染用): 源 onebot-data\catalog\mesh → 开发包旁 sample\mesh + 客户目录 mesh\ diff --git a/web/app.js b/web/app.js index 6a34d8e..e551cc8 100644 --- a/web/app.js +++ b/web/app.js @@ -14,7 +14,10 @@ cart: [], // 购物车 (2026-08-24; 刷新页面才清空, 与选型状态解耦) ranges: {}, // 数值参数范围 {code: [min|null, max|null]} searchIndex: [], // [{series, variant, code, text}] - searchResult: [] + searchResult: [], + onHome: true, // 是否停留在首页缩略图 (false = 选型页) + treeCollapsed: false, // 左树侧边栏默认展开 (底部箭头按钮可收起/展开) + expandedCat: null // 左树当前展开的大类 (手风琴: 同时只展开一个) }; // ---------- 工具 ---------- @@ -234,11 +237,14 @@ .then(function (r) { if (!r.ok) throw new Error('HTTP ' + r.status); return r.json(); }) .then(function (cat) { state.catalog = cat; - $('ver').textContent = cat.catalogName + ' v' + cat.catalogVersion; + if ($('ver')) $('ver').textContent = ''; // 版本标签不显示 buildSearchIndex(); renderTree(); + renderHome(); // 首屏: 全部大类的系列缩略图铺在一页 renderCrossRef(); - setStatus(t('目录加载完成,请选择产品系列', 'Catalog loaded, select a series')); + applyTreeCollapsed(state.treeCollapsed); // 左树默认折叠, 底部按钮可见 + setStatus(t('目录加载完成,点击缩略图或左侧系列开始选型', + 'Catalog loaded - click a thumbnail or pick a series')); if (location.search.indexOf('selftest=1') >= 0) runSelfTest(); }) .catch(function (e) { @@ -248,29 +254,252 @@ } // ---------- 目录树 ---------- + // 大类图标 (内联 SVG, 24x24 线性, stroke=currentColor → 随主题色/选中态自动变色) + var CAT_ICONS = { + AUT: '', + MIN: '', + ALU: '', + CLM: '', + PIN: '', + HOK: '', + GRP: '', + ROT: '', + ELEC: '', + }; + + function catIcon(code) { + var svg = '' + + (CAT_ICONS[code] || CAT_ICONS.AUT) + ''; + var sp = document.createElement('span'); + sp.className = 'cat-ico'; + sp.innerHTML = svg; // 常量字符串, 无注入风险 + return sp; + } + function renderTree() { var tree = $('tree'); tree.innerHTML = ''; + tree.classList.toggle('rail', !!state.treeCollapsed); // 收起态: 只显示图标 + // 内层容器: 撑满侧栏高度并 space-evenly 均匀留白 (按钮本身不被拉伸) + var inner = document.createElement('div'); + inner.className = 'tree-inner'; + tree.appendChild(inner); state.catalog.categories.forEach(function (cat) { + var isOpen = state.expandedCat === cat.code; + + // 父级标题行: 图标 + 文字 (+ 展开箭头); 收起态只留图标 var catDiv = document.createElement('div'); - catDiv.className = 'cat'; - catDiv.textContent = t(cat.nameZh, cat.nameEn); - tree.appendChild(catDiv); + catDiv.className = 'cat' + (isOpen ? ' open' : ''); + catDiv.title = t(cat.nameZh, cat.nameEn); + catDiv.appendChild(catIcon(cat.code)); + var tspan = document.createElement('span'); + tspan.className = 'cat-name'; + tspan.textContent = t(cat.nameZh, cat.nameEn); + catDiv.appendChild(tspan); + var arrow = document.createElement('span'); + arrow.className = 'cat-arrow'; + arrow.textContent = isOpen ? '▾' : '▸'; + catDiv.appendChild(arrow); + + // 点父级: 展开本类 + 自动收起其他 (手风琴), 右侧同步只显示该大类 + catDiv.onclick = function () { + if (state.expandedCat === cat.code) { + state.expandedCat = null; + if (state.onHome) renderHome(); + } else { + state.expandedCat = cat.code; + if (!state.onHome) showHome(); + renderHome(cat.code); + } + renderTree(); // 图标窄条模式下只切右侧, 不改变宽度 (由底部按钮控制) + }; + inner.appendChild(catDiv); + + // 子级 (系列); 默认收起, 仅展开当前父级 + var kids = document.createElement('div'); + kids.className = 'cat-kids' + (isOpen ? '' : ' hidden'); cat.series.forEach(function (code) { var s = state.catalog.series.filter(function (x) { return x.code === code; })[0]; if (!s) return; var div = document.createElement('div'); div.className = 'series'; div.textContent = t(s.nameZh, s.nameEn); - div.onclick = function () { + if (state.series === s) div.classList.add('active'); + div.onclick = function (ev) { + ev.stopPropagation(); var all = tree.querySelectorAll('.series'); for (var i = 0; i < all.length; i++) all[i].classList.remove('active'); div.classList.add('active'); selectSeries(s); }; - tree.appendChild(div); + kids.appendChild(div); + }); + inner.appendChild(kids); + }); + } + + // ---------- 首页:系列缩略图网格 ---------- + // 图放在 web/series/<系列码>.webp (真图覆盖同名文件即可, 无需改代码); + // 后补的图若是 png/jpg, 由 onerror 依次回退。 + var THUMB_EXTS = ['webp', 'png', 'jpg', 'jpeg', 'svg']; + + function thumbImg(code) { + var img = document.createElement('img'); + img.alt = code; + img.loading = 'lazy'; + img.decoding = 'async'; + var idx = 0; + img.onerror = function () { + idx++; + // 依次尝试其他扩展名; 全失败则撤掉 img (留白色图位, 不显示裂图) + if (idx < THUMB_EXTS.length) img.src = 'series/' + code + '.' + THUMB_EXTS[idx]; + else if (img.parentNode) img.parentNode.removeChild(img); + }; + img.src = 'series/' + code + '.' + THUMB_EXTS[0]; + return img; + } + + // 渲染一张系列卡片 (首页所有大类共用) + function makeSeriesCard(code) { + var s = state.catalog.series.filter(function (x) { return x.code === code; })[0]; + if (!s) return null; + var card = document.createElement('div'); + card.className = 'sf-card' + (state.series === s ? ' on' : ''); + + var fig = document.createElement('div'); + fig.className = 'sf-fig'; + fig.appendChild(thumbImg(code)); + card.appendChild(fig); + + var codeEl = document.createElement('div'); + codeEl.className = 'sf-code'; + codeEl.textContent = code; + card.appendChild(codeEl); + + var nameEl = document.createElement('div'); + nameEl.className = 'sf-name'; + nameEl.textContent = t(s.nameZh, s.nameEn); + nameEl.title = t(s.nameZh, s.nameEn); + card.appendChild(nameEl); + + card.onclick = function () { + // selectSeries 不负责树高亮与视图切换 (既有契约), 由这里补齐 + var all = $('tree').querySelectorAll('.series'); + for (var i = 0; i < all.length; i++) all[i].classList.remove('active'); + var nm = t(s.nameZh, s.nameEn); + for (var j = 0; j < all.length; j++) { + if (all[j].textContent === nm) { all[j].classList.add('active'); break; } + } + selectSeries(s); + }; + return card; + } + + // 首页: 系列缩略图。catCode 为空 → 全部大类分组铺开; 指定大类 → 只显示该大类 + function renderHome(catCode) { + if (!state.catalog) return; + var all = state.catalog.categories; + var cats = catCode + ? all.filter(function (c) { return c.code === catCode; }) + : all; + if (!cats.length) cats = all; + + var nSeries = 0, nModels = 0; + cats.forEach(function (c) { + c.series.forEach(function (code) { + var s = state.catalog.series.filter(function (x) { return x.code === code; })[0]; + if (!s) return; + nSeries++; + nModels += (s.variants || []).length; }); }); + if (catCode && cats.length) { + $('homeTitle').textContent = t(cats[0].nameZh, cats[0].nameEn); + $('homeCount').textContent = nSeries + t(' 系列 · ', ' series · ') + + nModels + t(' 型号', ' models'); + } else { + $('homeTitle').textContent = t('全部产品', 'All Products'); + $('homeCount').textContent = cats.length + t(' 大类 · ', ' categories · ') + + nSeries + t(' 系列 · ', ' series · ') + nModels + t(' 型号', ' models'); + } + $('homeHint').textContent = t('点击缩略图进入选型', 'Click a thumbnail to configure'); + + var box = $('matrix'); + box.innerHTML = ''; + cats.forEach(function (cat) { + var cards = []; + cat.series.forEach(function (code) { + var c = makeSeriesCard(code); + if (c) cards.push(c); + }); + if (!cards.length) return; + + var sec = document.createElement('div'); + sec.className = 'home-sec'; + + // 只显示单个大类时不再重复标题 (顶栏已有), 多类分组时保留分组标题 + if (!catCode) { + var head = document.createElement('div'); + head.className = 'home-sec-head'; + var h3 = document.createElement('h3'); + h3.textContent = t(cat.nameZh, cat.nameEn); + head.appendChild(h3); + var cnt = document.createElement('span'); + cnt.className = 'n'; + cnt.textContent = cards.length + t(' 个系列', ' series'); + head.appendChild(cnt); + sec.appendChild(head); + } + + var grid = document.createElement('div'); + grid.className = 'sf-grid'; + cards.forEach(function (c) { grid.appendChild(c); }); + sec.appendChild(grid); + box.appendChild(sec); + }); + } + + // 首页 ↔ 选型页 切换。左树的显隐只由折叠状态决定 (首页也能展开浏览), 与视图无关。 + function showHome() { + state.onHome = true; + $('home').classList.remove('hidden'); + $('params').classList.add('hidden'); + $('content').classList.add('hidden'); + $('split2').classList.add('hidden'); + applyTreeCollapsed(state.treeCollapsed); + } + function hideHome() { + state.onHome = false; + $('home').classList.add('hidden'); + $('params').classList.remove('hidden'); + $('content').classList.remove('hidden'); + $('split2').classList.remove('hidden'); + applyTreeCollapsed(state.treeCollapsed); + } + + // 侧边栏折叠/展开 (默认折叠; 底部按钮切换) + // 侧边栏收起/展开。收起 = 窄条只留图标 (rail); 展开 = 图标 + 文字 + function applyTreeCollapsed(collapsed) { + state.treeCollapsed = collapsed; + var tree = $('tree'); + if (collapsed) { + tree.classList.add('rail'); // 不隐藏, 变成图标窄条 (点图标仍可切大类) + $('split1').classList.add('hidden'); + } else { + tree.classList.remove('rail'); + $('split1').classList.remove('hidden'); + } + var b = $('btnTreeToggle'); + if (!b) return; + b.classList.remove('hidden'); + // 展开时显示左箭头 (点了往左收起); 收起时显示右箭头 (点了往右展开) + b.textContent = collapsed + ? t('▶ 展开', '▶ Show') + : t('◀ 收起', '◀ Hide'); + b.title = collapsed + ? t('展开系列栏 (显示文字)', 'Expand series panel') + : t('收起为图标栏', 'Collapse to icon rail'); } // ---------- 选型 ---------- @@ -279,6 +508,7 @@ state.sel = {}; state.ranges = {}; state.tableFilter = {}; // 换系列重置参数表列筛选 + hideHome(); // 离开首页缩略图, 显示选型面板 var panel = $('paramPanel'); panel.innerHTML = ''; s.parameters.forEach(function (p) { @@ -356,6 +586,7 @@ im.className = 'manual-img'; im.src = a.path; im.alt = a.path; + im.draggable = false; // 阻止原生图片拖拽 (见下方全局 dragstart 拦截) mw.appendChild(cap); mw.appendChild(im); }); @@ -735,7 +966,7 @@ state.sel = {}; it.series.parameters.forEach(function (p) { state.sel[p.code] = it.variant.params[p.code]; }); refreshOptions(); - switchTab('dim'); + switchTab('3d'); // 尺寸图已并入 3D 页 (原为 'dim', 会导致四个面板全被隐藏) }; tbody.appendChild(tr); }); @@ -909,6 +1140,34 @@ return (window.GEN_CONFIG && window.GEN_CONFIG.api) ? window.GEN_CONFIG.api.replace(/\/+$/, '') : ''; } + // 数模取用: 优先取 .step.gz 压缩副档 (发布时预生成), 浏览器端解压 — + // 购物车打包从"逐个下载原始大文件"变为约 1/4.5 传输量。 + // 无 gz 副档时回退原始文件, 老部署目录不受影响。 + // 浏览器不支持 DecompressionStream (旧 Edge/Safari) 时同样回退原始文件。 + function canGunzip() { + return typeof DecompressionStream === 'function'; + } + + async function fetchStepAsset(stepPath) { + if (canGunzip()) { + try { + var gzResp = await fetch(stepPath + '.gz'); + if (gzResp.ok && gzResp.body) { + // 防"gz 请求被 SPA 回退成 index.html": 校验 gzip 魔数 0x1f 0x8b + var head = new Uint8Array(await gzResp.clone().arrayBuffer()); + if (head.length > 2 && head[0] === 0x1f && head[1] === 0x8b) { + var ds = new DecompressionStream('gzip'); + var stream = gzResp.body.pipeThrough(ds); + return await new Response(stream).blob(); + } + } + } catch (e) { /* 回退原始文件 */ } + } + var resp = await fetch(stepPath); + if (!resp.ok) throw new Error('HTTP ' + resp.status); + return await resp.blob(); + } + function triggerDownload(url, name) { var a = document.createElement('a'); a.href = url; @@ -1087,9 +1346,7 @@ if (used[name]) name = it.modelCode + '_' + it.seriesCode + ext; // 重名冲突加系列码 used[name] = true; try { - var resp = await fetch(it.stepPath); - if (!resp.ok) throw new Error('HTTP ' + resp.status); - zip.file(name, await resp.blob()); + zip.file(name, await fetchStepAsset(it.stepPath)); } catch (e) { missing.push(it.modelCode); } csv += [i + 1, it.modelCode, it.seriesCode, it.seriesName, it.qty, it.paramsSummary, name].map(csvEscape).join(',') + '\r\n'; } @@ -1114,6 +1371,22 @@ } } + // 返回系列总览 (首页缩略图): 清除系列选中与展开的大类, 回到全部产品 + $('btnBackHome').onclick = function () { + var all = $('tree').querySelectorAll('.series'); + for (var i = 0; i < all.length; i++) all[i].classList.remove('active'); + state.series = null; + state.expandedCat = null; + state.sel = {}; + showHome(); + renderHome(); + renderTree(); + setStatus(t('已返回系列总览', 'Back to series overview')); + }; + + // 侧边栏折叠/展开 + $('btnTreeToggle').onclick = function () { applyTreeCollapsed(!state.treeCollapsed); }; + $('btnCart').onclick = openCart; $('cartClose').onclick = closeCart; $('cartOverlay').onclick = closeCart; @@ -1141,7 +1414,10 @@ tabs[2].textContent = t('搜索结果', 'Search'); tabs[3].textContent = t('平替对照', 'Cross-Reference'); renderTree(); - if (state.series) selectSeries(state.series); + if (state.onHome) renderHome(state.expandedCat); // 保持当前大类筛选 + else if (state.series) selectSeries(state.series); + if ($('btnTreeToggle')) applyTreeCollapsed(state.treeCollapsed); + if ($('btnBackHome')) $('btnBackHome').textContent = t('← 返回系列总览', '← Back to overview'); } // ---------- 自测 (与离线版 --selftest 对齐的关键场景) ---------- @@ -1333,30 +1609,94 @@ })(); // ---------- 面板拖拽调宽 (目录树/参数面板, 与桌面版一致) ---------- - function makeSplitter(id, prevSel, minW, maxW) { + // 全局阻止图片被原生拖拽: 手册页/尺寸图都是扫描大图, 一旦触发浏览器原生拖拽 + // 会浮出半透明拖影、松手可能在新标签打开图片, 且拖拽期间 mousemove/mouseup 被浏览器 + // 接管 → 分隔条卡死 (用户反馈"点击拖动就弹出来, 缩不回去")。 + document.addEventListener('dragstart', function (e) { + var t = e.target; + if (t && t.tagName === 'IMG') e.preventDefault(); + }); + + // 分隔条拖拽: 用 pointer 事件 + setPointerCapture (指针移出窗口/经过图片也不丢 pointerup)。 + // 另有两道护栏, 否则分隔条会被拖出容器: + // 1) 夹取上限取 min(静态 maxW, 容器可用宽 - 分隔条 - 右侧最小宽) —— 固定 maxW(900) 在窄屏 + // 会超过容器宽, 一旦写进 inline width 就把分隔条挤出 #tab-3d (overflow:hidden), + // 既看不见也点不到 → "缩不回去/没法自定义拖拽" (实测 ≤1512px 必然发生)。 + // 2) 窗口 resize 时把已拖出的宽重新夹回容器可用宽。 + function makeSplitter(id, prevSel, minW, maxW, minRight) { var el = $(id); var prev = document.querySelector(prevSel); - el.addEventListener('mousedown', function (e) { + if (!el || !prev) return; + minRight = minRight || 0; + // 可视上限 = min(静态 maxW, 容器可用宽 - 分隔条 - 右侧最小宽) + function liveLimit() { + var box = el.parentElement; + var avail = (box ? box.clientWidth : 0) - el.offsetWidth - minRight; + return Math.max(minW, Math.min(maxW, avail)); + } + // 双击复位为默认宽度 (CSS 里的初始比例) + el.addEventListener('dblclick', function () { prev.style.width = ''; prev.style.flex = ''; }); + + el.addEventListener('pointerdown', function (e) { + if (e.button !== 0) return; // 只响应左键 e.preventDefault(); el.classList.add('dragging'); - var startX = e.clientX, startW = prev.offsetWidth; + var startW = Math.min(prev.offsetWidth, liveLimit()); + var startX = e.clientX; + var pid = e.pointerId; + try { el.setPointerCapture(pid); } catch (err) { /* 个别环境不支持, 退化为普通监听 */ } + + function apply(w) { prev.style.width = w + 'px'; prev.style.flex = 'none'; } function move(ev) { - var w = Math.max(minW, Math.min(maxW, startW + ev.clientX - startX)); - prev.style.width = w + 'px'; - prev.style.flex = 'none'; + if (ev.pointerId !== pid) return; + apply(Math.max(minW, Math.min(liveLimit(), startW + ev.clientX - startX))); } - function up() { + function up(ev) { + if (ev && ev.pointerId !== pid) return; el.classList.remove('dragging'); - document.removeEventListener('mousemove', move); - document.removeEventListener('mouseup', up); + try { el.releasePointerCapture(pid); } catch (err) { } + el.removeEventListener('pointermove', move); + el.removeEventListener('pointerup', up); + el.removeEventListener('pointercancel', up); + window.removeEventListener('blur', up); // 切窗口/失焦也要收尾 } - document.addEventListener('mousemove', move); - document.addEventListener('mouseup', up); + el.addEventListener('pointermove', move); + el.addEventListener('pointerup', up); + el.addEventListener('pointercancel', up); + window.addEventListener('blur', up); + // 兜底: 指针已松开却仍在拖拽态 (事件丢失) → 下次移动即纠正 + document.addEventListener('pointermove', function watchdog(ev) { + if (ev.buttons === 0 && el.classList.contains('dragging')) up({ pointerId: pid }); + else if (!el.classList.contains('dragging')) document.removeEventListener('pointermove', watchdog); + }); }); } makeSplitter('split1', '.tree', 150, 420); makeSplitter('split2', '.params', 220, 520); - makeSplitter('split3', '.hsplit-left', 260, 900); // 3D/尺寸图 分栏分隔条 (同页内拖拽) + // minW 260→220 让窄屏 3D 区仍可用; minRight=180 防止尺寸图/手册页被压成细条 + makeSplitter('split3', '.hsplit-left', 220, 900, 180); // 3D/尺寸图 分栏分隔条 (同页内拖拽) + + // 窗口尺寸变化时, 把已拖出的像素宽重新夹回容器可用宽 —— + // 1920px 下拉出的 900px 在缩到 1366px 后仍会挤走分隔条, 仅靠拖拽时的夹取防不住。 + (function () { + var PREV = { split1: '.tree', split2: '.params', split3: '.hsplit-left' }; + var MINW = { split1: 150, split2: 220, split3: 220 }; + var MINR = { split1: 0, split2: 0, split3: 180 }; + var t = null; + window.addEventListener('resize', function () { + if (t) clearTimeout(t); + t = setTimeout(function () { + Object.keys(PREV).forEach(function (id) { + var el = $(id), prev = document.querySelector(PREV[id]); + if (!el || !prev || !prev.style.width) return; + if (!el.offsetWidth) return; // 分隔条被隐藏 (左树 rail) 时不干预 + var avail = el.parentElement.clientWidth - el.offsetWidth - MINR[id]; + var w = Math.max(MINW[id], Math.min(parseFloat(prev.style.width), avail)); + prev.style.width = w + 'px'; + }); + }, 120); + }); + })(); // ---------- 初始化 ---------- // 下载点击反馈: 立即提示 + 3 秒内防重复点击 (此前无反馈, 用户多次点击导致重复下载) diff --git a/web/index.html b/web/index.html index ec2a978..8dc70f7 100644 --- a/web/index.html +++ b/web/index.html @@ -3,13 +3,12 @@ -欧霓博气动目录 ONEBOT Catalog - +OneBot数模下载 +
-
欧霓博气动目录 ONEBOT Catalog - +
OneBot数模下载 ONEBOT Catalog
@@ -23,7 +22,18 @@
-
+ +
+
+

+ + + +
+
+
+ + -
+ -
+ - +