首次提交: OnebotCatalog 项目代码与文档(含 NX 按需生成服务二期、后台、一键启动)
This commit is contained in:
50
.gitignore
vendored
Normal file
50
.gitignore
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# ============================================================
|
||||||
|
# OnebotCatalog .gitignore — 版本管理只存代码+文档,排除大文件/数据/产物
|
||||||
|
# ============================================================
|
||||||
|
|
||||||
|
# ---- 数据与手册(大文件,不入 git)----
|
||||||
|
*.pdf
|
||||||
|
*.xlsx
|
||||||
|
*.xls
|
||||||
|
*.step
|
||||||
|
*.stp
|
||||||
|
*.igs
|
||||||
|
*.stl
|
||||||
|
*.glb
|
||||||
|
*.gltf
|
||||||
|
*.wasm
|
||||||
|
*.prt
|
||||||
|
|
||||||
|
# ---- 编译产物 / 数据包 ----
|
||||||
|
*.exe
|
||||||
|
*.dll
|
||||||
|
*.opc
|
||||||
|
*.o
|
||||||
|
*.obj
|
||||||
|
*.pdb
|
||||||
|
|
||||||
|
# ---- 图片(手册页/预览,量大,不入 git)----
|
||||||
|
*.png
|
||||||
|
*.jpg
|
||||||
|
*.jpeg
|
||||||
|
*.gif
|
||||||
|
|
||||||
|
# ---- 生成/运行时目录 ----
|
||||||
|
bin/
|
||||||
|
release/
|
||||||
|
sample/
|
||||||
|
genserver-local/output/
|
||||||
|
genserver-local/jobs/
|
||||||
|
genserver-local/work/
|
||||||
|
catalog-masters/*/dbg_out/
|
||||||
|
catalog-masters/*/E*.stp
|
||||||
|
catalog-masters/*/E*.igs
|
||||||
|
catalog-masters/*/*.log
|
||||||
|
|
||||||
|
# ---- 备份/临时 ----
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
|
*~
|
||||||
|
*.log
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
BIN
ONEBOT目录-客户版.lnk
Normal file
BIN
ONEBOT目录-客户版.lnk
Normal file
Binary file not shown.
BIN
ONEBOT目录-维护版.lnk
Normal file
BIN
ONEBOT目录-维护版.lnk
Normal file
Binary file not shown.
80
OnebotCatalog升级改制开发说明书.md
Normal file
80
OnebotCatalog升级改制开发说明书.md
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
# OnebotCatalog 升级改制开发说明书
|
||||||
|
|
||||||
|
> 定位:在现有 OnebotCatalog 基础上**继续优化,不推翻重做**。
|
||||||
|
> 核心原则:保留「NX 母模 + 预生成 STEP」主线(用户的强项),新增「服务器轻量化 + TC 集成」两块。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 一、升级项目清单(按优先级)
|
||||||
|
|
||||||
|
| # | 升级项目 | 现状 | 升级目标 | 优先级 |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| 1 | 网页 3D 轻量化 | 新迪查看器直渲 STEP(体积大、依赖 wasm) | 服务器 OCCT 转 **glTF** + Three.js 渲染 | ⭐ P0 |
|
||||||
|
| 2 | 服务器去 NX 化 | 非标按需生成需服务器装 NX(重、贵) | 服务器**不装 NX**,OCCT 当转换器 | ⭐ P0 |
|
||||||
|
| 3 | TC 母模数据源 | 母模存文件系统 + 人工 robocopy | 母模入 TC,管版本 / 发布状态 | P1 |
|
||||||
|
| 4 | 客户 TC 检入 | 无 | 客户选型后一键检入客户 TC | P2(有需求再做)|
|
||||||
|
| 5 | 增强功能 | 尺寸图用手册 PNG | 3D 标注 / 2D 尺寸 SVG / 工程图导出 | P3(可选)|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 二、各升级项目开发步骤
|
||||||
|
|
||||||
|
### 升级 1:网页 3D 轻量化(OCCT 转换器)
|
||||||
|
|
||||||
|
```
|
||||||
|
NX 导出 STEP → 服务器 OCCT 服务 → 转 glTF → Three.js 网页秒开
|
||||||
|
```
|
||||||
|
|
||||||
|
1. 搭 OCCT 转换服务(Python + OCP,**已验证跑通**,见 `d:\source_code\occt_demo\`)
|
||||||
|
2. 提供接口:`POST /convert`(传 STEP → 返回 glTF/GLB)
|
||||||
|
3. 前端 Three.js 加载 glTF,替代/降级新迪查看器
|
||||||
|
4. 构建期**预生成** glTF(批量转,服务器存静态文件,网页直接读)
|
||||||
|
|
||||||
|
### 升级 2:服务器去 NX 化
|
||||||
|
|
||||||
|
1. **标准档位**:继续 NX 本机批量导出 STEP → 服务器只存文件(Nginx 即可)
|
||||||
|
2. **转换**:OCCT 服务负责 STEP→glTF(同升级 1,写一次通用)
|
||||||
|
3. **非标/任意参数**:分两条路
|
||||||
|
- 规则件(气缸等)→ OCCT 程序化建模(可实时生成)
|
||||||
|
- 复杂件 → NX 本机离线算好再传,服务器仍不装 NX
|
||||||
|
|
||||||
|
### 升级 3:TC 母模数据源
|
||||||
|
|
||||||
|
1. 母模检入 TC(Item + ItemRevision)
|
||||||
|
2. 定义「已发布」状态工作流(只有已发布母模才进目录)
|
||||||
|
3. 目录系统从 TC 拉「已发布」母模,替代人工 robocopy
|
||||||
|
|
||||||
|
### 升级 4:客户 TC 检入(CADENAS 级卖点,M4)
|
||||||
|
|
||||||
|
1. 用自有 TC 当测试环境,跑通 TC SOA API
|
||||||
|
2. 配置映射:ItemType / 属性映射 / 目标文件夹 / ID 回写
|
||||||
|
3. 实现选型 → 检入(单个 + 批量 + 失败重试 + 日志)
|
||||||
|
|
||||||
|
### 升级 5:增强功能(可选,按需)
|
||||||
|
|
||||||
|
- 3D 标注:Three.js + CSS2DRenderer + Raycaster(标签 / 面高亮)
|
||||||
|
- 2D 尺寸:参数化 SVG(替代手册 PNG)
|
||||||
|
- 工程图导出:OCCT HLR 投影 → PDF/SVG(DWG/DXF 需 ODA 商业库,单独评估)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 三、建议实施顺序
|
||||||
|
|
||||||
|
```
|
||||||
|
第一步:升级 1+2(服务器轻量化)—— 收益最大、成本最低、已验证
|
||||||
|
第二步:升级 3(TC 母模)—— 规范数据管理,你已有 TC
|
||||||
|
第三步:升级 4(客户 TC 检入)—— 有 TC 大客户需求时再做
|
||||||
|
第四步:升级 5(增强功能)—— 按客户反馈挑着做
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 四、技术栈不变清单(不用动)
|
||||||
|
|
||||||
|
- 桌面版 C#/net48 WPF + 客户版单文件 exe ✅
|
||||||
|
- 参数化选型引擎(规则 JSON + 双端解释器)✅
|
||||||
|
- NX 母模 + journal 批量导出 ✅
|
||||||
|
- .opc 数据包 + 一键发布流水线 ✅
|
||||||
|
- 平替对照 / 购物车 / 搜索 ✅
|
||||||
|
|
||||||
|
**升级只动 3 处新增**:① OCCT 转换服务 ② Three.js 前端 ③ TC 集成模块
|
||||||
79
README.md
Normal file
79
README.md
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
# OnebotCatalog —— 欧霓博气动元件电子目录软件(自研)
|
||||||
|
|
||||||
|
对标 CADENAS PARTdataManager 目录光盘,但不依赖任何 CADENAS 组件。目标:普通客户通过软件选型并**下载 STEP 文件**,导入自己的 CAD 使用。
|
||||||
|
|
||||||
|
> 📌 项目全景/架构/踩坑/待办见同目录 **项目总览.md**(继续开发的入口);本文件夹各目录用途见 **文件夹说明.md**;改数据看 **onebot-data\数据维护说明书.md**;NX 母模建模看 **sample-data\tools\NX母模建模操作说明书.md**。
|
||||||
|
|
||||||
|
## 现状(2026-08-22)
|
||||||
|
|
||||||
|
- **M1/M2/M3 全部完成**:桌面版(含维护入口)+ 网页版(纯静态)+ 一键发布三份产物 + 真实数据入库(17 系列 52,193 型号;含 2026-08-23 新增的 6 个 UNIVER 系分类样板系列 UCBM/ULP/USP/UGP/UAGP/LAE)
|
||||||
|
- 数据源:`onebot-data\catalog\`(catalog.json + series\*.meta.json + csv\ + step\ + manual\ + crossref.csv 平替对照)
|
||||||
|
- 特色功能:平替对照(竞品型号↔我方型号,搜索/标签页双入口)、手册页对照、新迪 3D(menu=min 精简)、.stp/.step 后缀兼容
|
||||||
|
- 自测:ONEBOT 包 25 项 / 样例包 40 项(`--selftest`,结果 `sample\selftest.log`)
|
||||||
|
- 品牌:ONEBOT;维护密码:onebot888
|
||||||
|
|
||||||
|
## 目录结构(自包含布局,整体拷贝不断链)
|
||||||
|
|
||||||
|
```
|
||||||
|
OnebotCatalog/
|
||||||
|
├── 项目总览.md / 文件夹说明.md / 设计文档 / 开发提示词 ← 文档都在根
|
||||||
|
├── src/ # 源代码: App(WPF界面) + CatalogCore(数据包/规则引擎/构建器) + Viewer3D(自绘3D)
|
||||||
|
├── bin/ # 编译产物: OnebotCatalog.exe(开发版) + OnebotCatalog-Customer.exe(客户版) + 维护入口.bat
|
||||||
|
├── sample/ # 数据包 .opc + selftest.log + SC-meta.json(单系列配置样例)
|
||||||
|
├── release/ # 交付产物: OnebotCatalog_2026.08\(客户版目录) + update_2026.08\(增量包) + web_2026.08\(网页站)
|
||||||
|
├── web/ # 网页版前端源码 (纯静态: index.html/app.js/style.css)
|
||||||
|
├── viewer/ # 新迪 3D 查看器本地副本 (桌面浏览器预览/网页 3D; 原项目 Z 盘只读)
|
||||||
|
├── tools/ # build.ps1 编译 / publish.ps1 一键发布 / serve-web.ps1 本地预览(16并发) / fix-bom.ps1 等
|
||||||
|
├── assets/ # OneBot 图标 (编译进 exe)
|
||||||
|
├── docs/ # 用户手册 / 维护手册
|
||||||
|
├── onebot-data/ # ★唯一数据源★ catalog\ + 生成工具 + 数据维护说明书.md
|
||||||
|
└── sample-data/ # 样例数据 + NX 工具 (nx-batch-export.vb 批量导出 / nx-batch-export-glb.vb / 母模说明书)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 常用命令
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
# 编译开发版
|
||||||
|
powershell -NoProfile -ExecutionPolicy Bypass -File tools\build.ps1
|
||||||
|
|
||||||
|
# 自测 (结果看 sample\selftest.log)
|
||||||
|
bin\OnebotCatalog.exe --selftest sample\OnebotCatalog_2026.08.opc
|
||||||
|
|
||||||
|
# 全量构建 (统一路线: 源目录 → .opc; 维护窗口【重建全量目录】同内核)
|
||||||
|
bin\OnebotCatalog.exe --buildfull onebot-data\catalog sample\OnebotCatalog_2026.08.opc
|
||||||
|
|
||||||
|
# 一键发布 (自测门禁 → 客户版 exe(数据内置) → 光盘目录+增量包+网页站; ★先停 serve-web 和运行中的 exe★)
|
||||||
|
powershell -NoProfile -ExecutionPolicy Bypass -File tools\publish.ps1
|
||||||
|
|
||||||
|
# 本地网页预览 (localhost:8080, 关掉即停)
|
||||||
|
powershell -NoProfile -ExecutionPolicy Bypass -File tools\serve-web.ps1
|
||||||
|
|
||||||
|
# 运行 (客户模式 / 维护模式)
|
||||||
|
bin\OnebotCatalog.exe sample\OnebotCatalog_2026.08.opc
|
||||||
|
bin\OnebotCatalog.exe sample\OnebotCatalog_2026.08.opc --admin # 或双击 维护入口.bat (密码 onebot888)
|
||||||
|
```
|
||||||
|
|
||||||
|
**注意**: 编辑任何含中文的 .ps1/.cs/.vb 后必须运行 `sample-data\tools\fix-bom.ps1` 再编译/运行(PowerShell 5.1/csc 对无 BOM 文件按 GBK 读取)。
|
||||||
|
|
||||||
|
## 与设计文档的偏差(环境适配)
|
||||||
|
|
||||||
|
| 设计文档 (M1) | 实际实现 | 原因 |
|
||||||
|
|---|---|---|
|
||||||
|
| C# / .NET 8 (WPF+MVVM) | C# / .NET Framework 4.8 (代码式 WPF) | 本机无 .NET SDK;net48 内置于 Win10/11,客户机免装运行时 |
|
||||||
|
| SQLite + FTS5 | catalog.json (zip 内) + 内存查询 | 避免外部依赖;10 万级变体内存 LINQ 足够 |
|
||||||
|
| Helix Toolkit 渲染 | WPF 内置 Viewport3D + 自绘解析器 | 零依赖;真实 B-rep 走浏览器+新迪查看器(内嵌本机服务器) |
|
||||||
|
| 预生成预览网格 | 占位几何直接解析;真实数模浏览器预览 | 真实 CAD 通用 STEP 由 NX 母模批量导出(预生成变体) |
|
||||||
|
| MVVM | 代码式事件驱动 | 保持模块分层(Core 不依赖 UI) |
|
||||||
|
|
||||||
|
## 已知简化(诚实清单)
|
||||||
|
|
||||||
|
- 维护密码硬编码 `onebot888`(在 App.cs,未移配置)
|
||||||
|
- 桌面 3D:真实 B-rep **窗口内直渲、不弹浏览器**——有 STL 网格走开源 Helix Toolkit(MIT),无网格走 **WebView2 内嵌新迪查看器**(真实 STEP 直接渲染,Win11 自带运行时);两者都不可用才回退外部浏览器;网页轻量化(glTF)待办 9
|
||||||
|
- 行程为离散标准档位(10/20/30/50/75/100);"任意行程"待参数化二期(NX 运行时生成,待办 7)
|
||||||
|
- 网页 3D 对占位 STEP 走 Canvas 回退;真实 NX STEP 走新迪渲染(已验证)
|
||||||
|
- 发布站 app.js 的 `VIEWER_BASE` 需按生产部署改前缀(见项目总览 §12)
|
||||||
|
|
||||||
|
## 待办(见项目总览 §9 完整清单)
|
||||||
|
|
||||||
|
- NX 母模批量导出真实 STEP(KC-00-32x10 已试点;母模说明书见 sample-data\tools\)
|
||||||
|
- 代码签名证书 / 虚拟机验收 / 检查更新 / 参数化二期 / TC 集成(可选)
|
||||||
124
SMELA_CRA询证清单_英文.html
Normal file
124
SMELA_CRA询证清单_英文.html
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>SMELA CRA 合规询证清单(英文 · 可直接发送)</title>
|
||||||
|
<style>
|
||||||
|
:root{ --bg:#f6f7f9; --card:#fff; --ink:#1a1d24; --sub:#5b6472; --brand:#00437a; --accent:#c0392b; --good:#0a7a3d; --line:#e3e6ea; }
|
||||||
|
*{box-sizing:border-box;}
|
||||||
|
body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,"Segoe UI","Microsoft YaHei",sans-serif;line-height:1.7;}
|
||||||
|
.wrap{max-width:1000px;margin:0 auto;padding:32px 20px 90px;}
|
||||||
|
h1{font-size:25px;color:var(--brand);border-left:6px solid var(--accent);padding-left:14px;margin:0 0 6px;}
|
||||||
|
.sub{color:var(--sub);margin:0 0 8px;font-size:14px;}
|
||||||
|
.alert{background:#fdf0ef;border:1px solid #f0c9c4;border-left:5px solid var(--accent);border-radius:8px;padding:14px 18px;margin:18px 0;}
|
||||||
|
h2{font-size:20px;color:var(--brand);margin:36px 0 12px;padding-bottom:6px;border-bottom:2px solid var(--line);}
|
||||||
|
h3{font-size:16px;color:var(--brand);margin:22px 0 8px;}
|
||||||
|
table{width:100%;border-collapse:collapse;background:#fff;font-size:13.5px;margin:10px 0;}
|
||||||
|
th,td{border:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top;}
|
||||||
|
th{background:#eef3f8;color:var(--brand);font-weight:600;}
|
||||||
|
tr:nth-child(even) td{background:#fafbfc;}
|
||||||
|
.en{color:#5b6472;font-size:12.5px;}
|
||||||
|
.zh{font-weight:500;}
|
||||||
|
.tag{display:inline-block;background:#eef3f8;color:var(--brand);border-radius:4px;padding:0 7px;font-size:11.5px;margin-right:5px;}
|
||||||
|
.box{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px 20px;margin:12px 0;}
|
||||||
|
.box.green{background:#eef9f2;border-color:#cde8d8;}
|
||||||
|
.box.gold{background:#fbf7ec;border-color:#eadfbf;}
|
||||||
|
.email{background:#fbfbfc;border:1px dashed #b9c2cc;border-radius:10px;padding:20px 22px;margin:14px 0;font-size:13.5px;white-space:pre-wrap;line-height:1.75;font-family:"Segoe UI",-apple-system,sans-serif;}
|
||||||
|
.email .field{color:var(--brand);font-weight:600;}
|
||||||
|
code{background:#f0f2f5;padding:1px 6px;border-radius:4px;font-size:12.5px;}
|
||||||
|
.copy-hint{background:#eef3f8;border-radius:8px;padding:10px 14px;font-size:12.5px;color:var(--sub);margin:8px 0;}
|
||||||
|
footer{color:var(--sub);font-size:12px;margin-top:40px;}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="wrap">
|
||||||
|
|
||||||
|
<h1>给 SMELA 的 CRA 合规询证清单(英文 · 可直接发送)</h1>
|
||||||
|
<p class="sub">针对德国大众 CRA 问卷 | 电缸型号:liteECO® INTEGRATED series | 用于 Magswitch 夹紧缸</p>
|
||||||
|
|
||||||
|
<div class="alert">
|
||||||
|
<b>为什么必须找 SMELA:</b>CRA(欧盟《网络弹性法案》(EU) 2024/2847)的合规证据源头在<b>含数字元素产品的制造商</b>。
|
||||||
|
你们(Magswitch)把 SMELA 电缸集成进夹紧缸,但固件、通信协议栈、漏洞管理、安全更新等证据都在 SMELA 手里。
|
||||||
|
大众要的 CRA 答案,最终需要 SMELA 出具以下文件。
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2>一、可直接发送的英文询证邮件</h2>
|
||||||
|
<p class="sub">复制下面整段,填入你的公司信息、联系人、采购型号后发送到 <code>sales@smela.com</code> 与 <code>info@smela.com</code>。</p>
|
||||||
|
|
||||||
|
<div class="email"><span class="field">Subject:</span> Request for EU Cyber Resilience Act (CRA) Compliance Documentation — liteECO® INTEGRATED Series
|
||||||
|
|
||||||
|
<span class="field">Dear SMELA Sales / Technical Support Team,</span>
|
||||||
|
|
||||||
|
We are a supplier to Volkswagen Group and currently use your <b>liteECO® INTEGRATED series linear actuators</b> (integrated motion controller, EtherCAT / CANopen / digital IO variants) in our clamping cylinders for automotive body-in-white applications.
|
||||||
|
|
||||||
|
Volkswagen has issued a component compliance questionnaire under the <b>EU Cyber Resilience Act (CRA) (EU) 2024/2847</b> and the <b>EU Machinery Regulation (MVO) (EU) 2023/1230</b>, together with <b>IEC 62443-4</b> security levels. To complete this declaration for our integrated product, we kindly request the following documentation and information for the liteECO® INTEGRATED series:
|
||||||
|
|
||||||
|
<span class="field">1. CRA applicability & classification</span>
|
||||||
|
– Confirmation whether the liteECO® INTEGRATED actuator is a "product with digital elements" under CRA Article 3.
|
||||||
|
– Its CRA classification (default / important / critical) per CRA Annex and Articles 7 & 8.
|
||||||
|
|
||||||
|
<span class="field">2. Software Bill of Materials (SBOM)</span>
|
||||||
|
– SBOM listing firmware and software components (incl. EtherCAT CoE / CiA402 / IEC 61800-7-301 and CANopen CiA 301/305/402 stacks) as required under CRA Annex I.
|
||||||
|
|
||||||
|
<span class="field">3. Vulnerability management & security updates</span>
|
||||||
|
– Confirmation of a vulnerability handling process (e.g., ISO/IEC 30111 / 29147).
|
||||||
|
– Security update support period (e.g., "security updates provided until 20XX-XX") and how updates are distributed to customers.
|
||||||
|
|
||||||
|
<span class="field">4. IEC 62443-4 security level</span>
|
||||||
|
– The applicable Security Level (SL 1–4) under IEC 62443-4-2 for the actuator, if assessed.
|
||||||
|
|
||||||
|
<span class="field">5. EU Declaration of Conformity</span>
|
||||||
|
– EU Declaration of Conformity for the Machinery Regulation (EU) 2023/1230 and, once available, for the CRA (EU) 2024/2847.
|
||||||
|
– CE marking status and conformity assessment procedure used (self-assessment or notified body).
|
||||||
|
|
||||||
|
<span class="field">6. Technical documentation</span>
|
||||||
|
– Assembly/incorporation instructions (Einbauerklärung / assembly declaration) for integrating the actuator into our clamping cylinder.
|
||||||
|
– Any product security guidance or hardening recommendations.
|
||||||
|
|
||||||
|
Since Volkswagen requires a response with a defined timeline, we would appreciate receiving the available documents, or a written statement of planned availability dates, by <b>[INSERT DATE]</b>.
|
||||||
|
|
||||||
|
Thank you very much for your support. Please let us know if you need our specific part numbers or purchase records.
|
||||||
|
|
||||||
|
<span class="field">Best regards,</span>
|
||||||
|
[Your Name]
|
||||||
|
[Your Company — Magswitch Technology Europe]
|
||||||
|
[Your Email / Phone]
|
||||||
|
[Relevant part numbers / order references]</div>
|
||||||
|
|
||||||
|
<h2>二、所需文件逐项清单(中文说明 + 英文术语)</h2>
|
||||||
|
<table>
|
||||||
|
<tr><th>#</th><th>所需文件/信息</th><th>英文术语</th><th>对应 CRA 问卷哪一列</th><th>优先级</th></tr>
|
||||||
|
<tr><td>1</td><td>CRA 适用性 & 分级确认</td><td class="en">CRA applicability & classification (default/important/critical)</td><td>J / M</td><td><b>最高</b></td></tr>
|
||||||
|
<tr><td>2</td><td>软件物料清单 SBOM</td><td class="en">Software Bill of Materials (SBOM)</td><td>Q(交付时 CRA 能力)</td><td><b>最高</b></td></tr>
|
||||||
|
<tr><td>3</td><td>漏洞管理流程 + 安全更新期限</td><td class="en">Vulnerability handling + security update period</td><td>O(安全更新至…)</td><td><b>最高</b></td></tr>
|
||||||
|
<tr><td>4</td><td>IEC 62443-4 安全等级</td><td class="en">IEC 62443-4-2 Security Level (SL1–4)</td><td>N(等级1–4)</td><td>高</td></tr>
|
||||||
|
<tr><td>5</td><td>欧盟符合性声明(MVO + CRA)</td><td class="en">EU Declaration of Conformity (MVO & CRA)</td><td>K(已满足?)</td><td><b>最高</b></td></tr>
|
||||||
|
<tr><td>6</td><td>CE 标志状态 + 评估程序</td><td class="en">CE marking & conformity assessment procedure</td><td>K / L</td><td>高</td></tr>
|
||||||
|
<tr><td>7</td><td>半成品机械组装说明</td><td class="en">Assembly declaration (Einbauerklärung)</td><td>K(MVO 合规)</td><td>高</td></tr>
|
||||||
|
<tr><td>8</td><td>产品安全指南/加固建议</td><td class="en">Product security guidance / hardening</td><td>备注</td><td>中</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h2>三、内部提示(给 Magswitch 自己看,不发给 SMELA)</h2>
|
||||||
|
<div class="box gold">
|
||||||
|
<ul>
|
||||||
|
<li><b>时间线要紧</b>:大众要"带时间承诺"的答复,邮件里务必写 <code>by [DATE]</code>,别发开放式问题。</li>
|
||||||
|
<li><b>准备好采购证据</b>:SMELA 可能只对正式客户出具 SBOM/合规文件,附上你们的型号、采购订单号可加快。</li>
|
||||||
|
<li><b>CRA 生效时间</b>:CRA (EU) 2024/2847 已于 2024 年 12 月生效,义务从 2027 年起分阶段适用(重要/关键产品更早)。确认 SMELA 的合规路线图与大众要求的时间是否匹配。</li>
|
||||||
|
<li><b>MVO 已强制</b>:欧盟机械法规 (EU) 2023/1230 已适用,CE 声明是硬性要求,优先要。</li>
|
||||||
|
<li><b>分级是关键变量</b>:若 SMELA 说产品是"default(一般)"级,CRA 义务较轻(自我评估为主);若是"important(重要)"级,需更严的评估程序。先问清分级,再决定应答强度。</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2>四、跟进话术(SMELA 迟迟不回时)</h2>
|
||||||
|
<div class="email"><span class="field">Follow-up:</span>
|
||||||
|
Dear SMELA Team, following up on our previous request regarding CRA documentation for the liteECO® INTEGRATED series. Our Volkswagen deadline is approaching and any partial information — such as the CRA classification or the planned SBOM availability date — would already help us complete our declaration. Thank you.</div>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
说明:本清单基于欧盟 CRA (EU) 2024/2847、MVO (EU) 2023/1230、IEC 62443-4 的通用要求整理,供商务/合规沟通使用,非法律意见。
|
||||||
|
具体法规义务与时间线请以官方文本及贵司法律顾问意见为准。
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
167
SMELA电机手册_中文对照.html
Normal file
167
SMELA电机手册_中文对照.html
Normal file
@@ -0,0 +1,167 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>SMELA liteECO® INTEGRATED 电机手册 · 中文对照</title>
|
||||||
|
<style>
|
||||||
|
:root{ --bg:#f6f7f9; --card:#fff; --ink:#1a1d24; --sub:#5b6472; --brand:#00437a; --accent:#c0392b; --good:#0a7a3d; --line:#e3e6ea; }
|
||||||
|
*{box-sizing:border-box;}
|
||||||
|
body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,"Segoe UI","Microsoft YaHei",sans-serif;line-height:1.7;}
|
||||||
|
.wrap{max-width:1000px;margin:0 auto;padding:32px 20px 90px;}
|
||||||
|
h1{font-size:25px;color:var(--brand);border-left:6px solid var(--accent);padding-left:14px;margin:0 0 6px;}
|
||||||
|
.sub{color:var(--sub);margin:0 0 8px;font-size:14px;}
|
||||||
|
.alert{background:#fdf0ef;border:1px solid #f0c9c4;border-left:5px solid var(--accent);border-radius:8px;padding:14px 18px;margin:18px 0;}
|
||||||
|
h2{font-size:20px;color:var(--brand);margin:36px 0 12px;padding-bottom:6px;border-bottom:2px solid var(--line);}
|
||||||
|
h3{font-size:16px;color:var(--brand);margin:22px 0 8px;}
|
||||||
|
table{width:100%;border-collapse:collapse;background:#fff;font-size:13.5px;margin:10px 0;}
|
||||||
|
th,td{border:1px solid var(--line);padding:7px 10px;text-align:left;vertical-align:top;}
|
||||||
|
th{background:#eef3f8;color:var(--brand);font-weight:600;}
|
||||||
|
tr:nth-child(even) td{background:#fafbfc;}
|
||||||
|
.en{color:#5b6472;font-size:12.5px;}
|
||||||
|
.zh{font-weight:500;}
|
||||||
|
.tag{display:inline-block;background:#eef3f8;color:var(--brand);border-radius:4px;padding:0 7px;font-size:11.5px;margin-right:5px;}
|
||||||
|
.box{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px 20px;margin:12px 0;}
|
||||||
|
.box.green{background:#eef9f2;border-color:#cde8d8;}
|
||||||
|
.box.gold{background:#fbf7ec;border-color:#eadfbf;}
|
||||||
|
code{background:#f0f2f5;padding:1px 6px;border-radius:4px;font-size:12.5px;}
|
||||||
|
footer{color:var(--sub);font-size:12px;margin-top:40px;}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="wrap">
|
||||||
|
|
||||||
|
<h1>SMELA liteECO® INTEGRATED 系列 · 中文对照手册</h1>
|
||||||
|
<p class="sub">线性执行器(电缸)数据手册 | 文件号 DS-LE-INTEGRATED-EN,版本 002,2024-10-29 | 用于 Magswitch 夹紧缸</p>
|
||||||
|
|
||||||
|
<div class="alert">
|
||||||
|
<b>用途提醒:</b>本电机内置<b>运动控制器 + EtherCAT/CANopen 通信 + 定位传感器</b>,属于"含数字元素"产品,
|
||||||
|
因此 Magswitch 夹紧缸在德国大众 CRA 问卷中<b>明确适用《网络弹性法案》(CRA)</b>。本对照表同时服务于 CRA 合规证据准备。
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2>一、产品概述(Overview)</h2>
|
||||||
|
<table>
|
||||||
|
<tr><th>英文原文</th><th>中文翻译</th></tr>
|
||||||
|
<tr><td class="en">liteECO® INTEGRATED series — Linear actuators for short stroke movements up to 115 mm stroke and 750 N force (static) with integrated motion controller</td><td class="zh">liteECO® INTEGRATED 系列 — 短行程直线运动执行器,行程最高 115 mm、静态力 750 N,内置运动控制器</td></tr>
|
||||||
|
<tr><td class="en">SMELA liteECO® series are the most compact electromechanical alternative to pneumatic short-stroke cylinders due to their patented telescopic concept of motor and mechanics.</td><td class="zh">SMELA liteECO® 系列凭借其专利的"电机+机械"伸缩式结构,是气动短行程气缸最紧凑的电动机械替代方案。</td></tr>
|
||||||
|
<tr><td class="en">A servo motor incl. positioning sensor enables the movement of simple to complex profiles: for fixing, adjusting, locking and following any motion profile.</td><td class="zh">内置伺服电机及定位传感器,可实现从简单到复杂的运动曲线:用于夹紧、调节、锁紧及跟随任意运动轨迹。</td></tr>
|
||||||
|
<tr><td class="en">The highly efficient motor not only saves up to 90% of the energy compared to pneumatic systems. It saves up to 80% of installation space compared to existing electrical solutions.</td><td class="zh">高效电机相比气动系统最高省电 90%;相比现有电动方案最高节省 80% 安装空间。</td></tr>
|
||||||
|
<tr><td class="en">the liteECO® series offers the possibility of a simple refurbishment. Replacing worn mechanics is very easy and helps the drives to achieve several life cycles: sustainable, cost- and resource-saving.</td><td class="zh">liteECO® 系列支持简易翻新:更换磨损机械件非常容易,使驱动器可实现多个生命周期,可持续、节省成本与资源。</td></tr>
|
||||||
|
<tr><td class="en">the LE-INTEGRATED actuators have an integrated motion controller based on 24 volts and optionally on 48 volts. The actuators are controlled via EtherCAT, CANopen or digital IOs.</td><td class="zh">LE-INTEGRATED 执行器内置运动控制器(24V,可选 48V),通过 EtherCAT、CANopen 或数字 IO 进行控制。</td></tr>
|
||||||
|
<tr><td class="en">In addition to sealing to the degree of protection IP65, conventional M8 and M12 circular connectors have been integrated in the codings A, B, L and Y.</td><td class="zh">除 IP65 防护等级外,还集成了常规 M8/M12 圆形连接器,编码类型 A、B、L、Y。</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h3>优势(Advantages)</h3>
|
||||||
|
<table>
|
||||||
|
<tr><th>英文</th><th>中文</th></tr>
|
||||||
|
<tr><td class="en">High power and dynamics in a compact design</td><td class="zh">紧凑设计下高功率与高动态性能</td></tr>
|
||||||
|
<tr><td class="en">High utilization of the installation length for the stroke</td><td class="zh">安装长度对行程的高利用率</td></tr>
|
||||||
|
<tr><td class="en">Up to 90% energy savings compared to pneumatics</td><td class="zh">相比气动最高省电 90%</td></tr>
|
||||||
|
<tr><td class="en">Up to 80% installation space savings compared to electrical alternatives</td><td class="zh">相比电动方案最高节省安装空间 80%</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h3>特性(Features)</h3>
|
||||||
|
<table>
|
||||||
|
<tr><th>英文</th><th>中文</th></tr>
|
||||||
|
<tr><td class="en">Integrated motion controller</td><td class="zh">集成运动控制器</td></tr>
|
||||||
|
<tr><td class="en">EtherCAT, CANopen and/or digital IO interfaces</td><td class="zh">EtherCAT、CANopen 和/或数字 IO 接口</td></tr>
|
||||||
|
<tr><td class="en">Robust M8 and M12 circular connectors</td><td class="zh">坚固的 M8/M12 圆形连接器</td></tr>
|
||||||
|
<tr><td class="en">Degree of protection IP65</td><td class="zh">防护等级 IP65</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h2>二、产品配置(Product Configuration)</h2>
|
||||||
|
<table>
|
||||||
|
<tr><th>英文</th><th>中文</th></tr>
|
||||||
|
<tr><td class="en">Stroke length: 085 = 85 mm, 115 = 115 mm</td><td class="zh">行程:085 = 85 mm,115 = 115 mm</td></tr>
|
||||||
|
<tr><td class="en">Lead screw type and pitch (mm/revolution): Pitch / High helix / Trapezoidal</td><td class="zh">丝杠类型与导程(mm/转):普通导程 / 大导程 / 梯形丝杠</td></tr>
|
||||||
|
<tr><td class="en">Size | Flange width 50, Load capacity up to 750 N</td><td class="zh">规格|法兰宽 50,负载能力最高 750 N</td></tr>
|
||||||
|
<tr><td class="en">IDIO.A — Digital IO, M12 Connector variant (A - Automotive)</td><td class="zh">IDIO.A — 数字 IO,M12 连接器(A 型,汽车规格)</td></tr>
|
||||||
|
<tr><td class="en">ICAT.A* — EtherCAT, M12 Connector variant (A - Automotive)</td><td class="zh">ICAT.A* — EtherCAT,M12 连接器(A 型,汽车规格)</td></tr>
|
||||||
|
<tr><td class="en">ICAN.S* — CANopen incl. digital IOs, M8 Connector variant (S - Standard)</td><td class="zh">ICAN.S* — CANopen(含数字 IO),M8 连接器(S 型,标准规格)</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h2>三、技术数据 — 尺寸(Technical data, dimensions)</h2>
|
||||||
|
<table>
|
||||||
|
<tr><th>参数</th><th>英文</th><th>085(85mm 行程)</th><th>115(115mm 行程)</th></tr>
|
||||||
|
<tr><td>行程 Stroke S</td><td class="en">Stroke S [mm]</td><td>85</td><td>115</td></tr>
|
||||||
|
<tr><td>长度 Length L</td><td class="en">Length L [mm]</td><td>118.7</td><td>148.7</td></tr>
|
||||||
|
<tr><td>宽度 Width B</td><td class="en">Width B [mm]</td><td colspan="2">50</td></tr>
|
||||||
|
<tr><td>高度 Height H1</td><td class="en">Height H1 [mm]</td><td colspan="2">68.5</td></tr>
|
||||||
|
<tr><td>高度 Height H2</td><td class="en">Height H2 [mm]</td><td colspan="2">85.5</td></tr>
|
||||||
|
<tr><td>定心凸台 Centering collar D2</td><td class="en">Centering collar D2 [mm]</td><td colspan="2">Ø 20g6 × 2.5</td></tr>
|
||||||
|
<tr><td>顶杆直径 Diameter plunger D1</td><td class="en">Diameter plunger D1 [mm]</td><td colspan="2">Ø 11</td></tr>
|
||||||
|
<tr><td>顶杆螺纹 Thread on plunger</td><td class="en">Thread on plunger</td><td colspan="2">M6×16(外螺纹)</td></tr>
|
||||||
|
<tr><td>重量 Weight</td><td class="en">Weight [g]</td><td>800</td><td>850</td></tr>
|
||||||
|
<tr><td>横向力 My, Mz</td><td class="en">My, Mz (Transverse forces) [Nm]</td><td colspan="2">< 1</td></tr>
|
||||||
|
<tr><td>安装螺栓</td><td class="en">M4, tightening torque (8.8级) [Nm]</td><td colspan="2">4× M4 通孔(4.3mm),拧紧扭矩 3.0 Nm</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h3>材料(Materials of external components)</h3>
|
||||||
|
<table>
|
||||||
|
<tr><th>英文</th><th>中文</th></tr>
|
||||||
|
<tr><td class="en">Plunger — Stainless steel (1.4305)</td><td class="zh">顶杆 — 不锈钢 (1.4305)</td></tr>
|
||||||
|
<tr><td class="en">Flange — Aluminium</td><td class="zh">法兰 — 铝合金</td></tr>
|
||||||
|
<tr><td class="en">Cover — Stainless steel (1.4301 or 1.4304)</td><td class="zh">盖板 — 不锈钢 (1.4301 / 1.4304)</td></tr>
|
||||||
|
<tr><td class="en">Wiper ring (optional) — HPU (Hydrolysis-resistant Polyurethan)</td><td class="zh">防尘圈(可选)— HPU(耐水解聚氨酯)</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h2>四、机械性能数据(Performance data — mechanical)</h2>
|
||||||
|
<p class="sub">丝杠配置对应的极限载荷、回程间隙、峰值力/电流、额定力/电流、最大速度、最大加速度、定位时间。</p>
|
||||||
|
<table>
|
||||||
|
<tr><th>丝杠配置</th><th>极限载荷1)</th><th>回程间隙2)</th><th>峰值力3)/峰值电流</th><th>额定力4)/额定电流</th><th>最大速度5)</th><th>最大加速度6)</th><th>定位时间7)</th></tr>
|
||||||
|
<tr><td>大导程 S100</td><td>370 N</td><td rowspan="3">约 ±0.1 mm</td><td>300 N / 12 A</td><td>125 N / 5 A</td><td>500 mm/s</td><td>25 m/s²</td><td>120 ms</td></tr>
|
||||||
|
<tr><td>大导程 S150</td><td>370 N</td><td>200 N / 12 A</td><td>83 N / 5 A</td><td>750 mm/s</td><td>37.5 m/s²</td><td>85 ms</td></tr>
|
||||||
|
<tr><td>大导程 S240</td><td>315 N</td><td>125 N / 12 A</td><td>52 N / 5 A</td><td>1200 mm/s</td><td>60 m/s²</td><td>65 ms</td></tr>
|
||||||
|
<tr><td>梯形 T020</td><td>750 N</td><td rowspan="2">约 ±0.1 mm</td><td>750 N / 6 A</td><td>625 N / 5 A</td><td>50 mm/s</td><td>2.5 m/s²</td><td>900 ms</td></tr>
|
||||||
|
<tr><td>梯形 T040</td><td>750 N</td><td>750 N / 12 A</td><td>313 N / 5 A</td><td>100 mm/s</td><td>5 m/s²</td><td>450 ms</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h2>五、电气性能数据(Performance data — electrical)</h2>
|
||||||
|
<table>
|
||||||
|
<tr><th>参数</th><th>英文</th><th>数值</th></tr>
|
||||||
|
<tr><td>逻辑供电电压</td><td class="en">Power supply logic Ulogic</td><td>19–30 VDC(额定 24)</td></tr>
|
||||||
|
<tr><td>电机供电电压</td><td class="en">Power supply motor Umotor</td><td>19–30 VDC(额定 24)</td></tr>
|
||||||
|
<tr><td>逻辑电流</td><td class="en">Current consumption logic Ilogic</td><td>100–310 mA</td></tr>
|
||||||
|
<tr><td>电机电流</td><td class="en">Current consumption motor Imotor</td><td>0–15 A(额定 3 A)</td></tr>
|
||||||
|
<tr><td>工作温度</td><td class="en">Operating temperature Tamb</td><td>+5 ~ +40 °C</td></tr>
|
||||||
|
<tr><td>内部温度限值</td><td class="en">Internal temperature limit Tint,max</td><td>+90 °C</td></tr>
|
||||||
|
<tr><td>数字 IO 逻辑</td><td class="en">Digital IO logic</td><td>PNP 24 V</td></tr>
|
||||||
|
<tr><td>CANopen 协议</td><td class="en">CANopen protocol</td><td>CiA 301 v4.2、CiA 305 v2.2.13、CiA 402 v3.0</td></tr>
|
||||||
|
<tr><td>EtherCAT 协议</td><td class="en">EtherCAT protocol</td><td>CoE、CiA402、IEC 61800-7-301</td></tr>
|
||||||
|
<tr><td>最大允许转速</td><td class="en">Max. permissible speed nmax</td><td>13,025 min⁻¹</td></tr>
|
||||||
|
<tr><td>最大电机相电流</td><td class="en">Max. motor phase current Imax</td><td>12 A</td></tr>
|
||||||
|
<tr><td>额定电流(差/好热连接)</td><td class="en">Nom. current IN,wc / IN,nc</td><td>3 A / 5 A</td></tr>
|
||||||
|
<tr><td>最大扭矩</td><td class="en">Max. torque Mmax</td><td>750 mNm</td></tr>
|
||||||
|
<tr><td>扭矩常数</td><td class="en">Torque constant kM</td><td>62.5 mNm/A</td></tr>
|
||||||
|
<tr><td>转速常数</td><td class="en">Speed constant kn</td><td>126 min⁻¹/V</td></tr>
|
||||||
|
<tr><td>端子电阻 / 电感</td><td class="en">Terminal resistance RS / inductance LS</td><td>585 mΩ / 300 µH</td></tr>
|
||||||
|
<tr><td>极对数</td><td class="en">Number of pole pairs</td><td>7</td></tr>
|
||||||
|
<tr><td>转子惯量</td><td class="en">Rotor inertia J</td><td>455 g·cm²</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h2>六、连接变体与引脚定义(Connections / Pin assignment)</h2>
|
||||||
|
<table>
|
||||||
|
<tr><th>接口</th><th>英文</th><th>连接器</th><th>说明</th></tr>
|
||||||
|
<tr><td>供电 24VDC</td><td class="en">Power supply 24 VDC</td><td>M12, L-coded, 5针, 公头</td><td>引脚:2=0V电机,4=24V电机,5=FE</td></tr>
|
||||||
|
<tr><td>数字输入(控制)</td><td class="en">Digital IN, control (IDIO)</td><td>M12, A-coded, 4/5针, 公头</td><td>2=收回命令,4=伸出命令,3=0V</td></tr>
|
||||||
|
<tr><td>数字输出(反馈)</td><td class="en">Digital OUT, feedback (IDIO)</td><td>M12, A-coded, 5针, 公头</td><td>2=已收回反馈,4=已伸出反馈</td></tr>
|
||||||
|
<tr><td>EtherCAT</td><td class="en">EtherCAT (ICAT)</td><td>M12, Y-coded, 8针, 母头(进/出)</td><td>1=TX+,2=TX-,3=RX+,4=RX-</td></tr>
|
||||||
|
<tr><td>CANopen</td><td class="en">CANopen</td><td>M8, B-coded, 5针(进公/出母)</td><td>1=CAN V+,3=CAN H,4=CAN L,5=CAN GND</td></tr>
|
||||||
|
<tr><td>IO 连接器</td><td class="en">IO Connector</td><td>M12, A-coded, 12针, 母头</td><td>3–5=DIN1–3,6–7=LIMIT1–2,8=DOUT,9–10=AIN±</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<h2>七、制造商信息</h2>
|
||||||
|
<table>
|
||||||
|
<tr><th>英文</th><th>中文</th></tr>
|
||||||
|
<tr><td class="en">SMELA GmbH, Liebknechtstraße 55, DE-39108 Magdeburg</td><td class="zh">SMELA GmbH,Liebknechtstraße 55,DE-39108 马格德堡(德国)</td></tr>
|
||||||
|
<tr><td class="en">www.smela.com | info@smela.com | sales@smela.com</td><td class="zh">官网 www.smela.com | 邮箱 info@smela.com / sales@smela.com</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
说明:本对照基于 DS-LE-INTEGRATED-EN 版本 002(2024-10-29)数据手册全文提取翻译,供内部评审与 CRA 合规准备使用。
|
||||||
|
技术参数以 SMELA 官方原文为准;标注 * 表示"按需/计划中"。CRA = 欧盟《网络弹性法案》(EU) 2024/2847。
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
35
_dump_xlsx.py
Normal file
35
_dump_xlsx.py
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
import sys, io, json
|
||||||
|
|
||||||
|
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
||||||
|
|
||||||
|
path = r"C:\Users\ruigu\Downloads\文档说明.html\20260826德国大众的要求文件\MAGSWITCH TECHNOLOGY EUROPE_CRA_Abfrage.xlsx"
|
||||||
|
|
||||||
|
try:
|
||||||
|
import openpyxl
|
||||||
|
except ImportError:
|
||||||
|
print("NO_OPENPYXL")
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
wb = openpyxl.load_workbook(path, data_only=False)
|
||||||
|
print("SHEETS:", wb.sheetnames)
|
||||||
|
|
||||||
|
out = {}
|
||||||
|
for ws in wb.worksheets:
|
||||||
|
rows = []
|
||||||
|
for row in ws.iter_rows():
|
||||||
|
r = []
|
||||||
|
for c in row:
|
||||||
|
v = c.value
|
||||||
|
if v is None:
|
||||||
|
v = ""
|
||||||
|
r.append(str(v))
|
||||||
|
rows.append(r)
|
||||||
|
out[ws.title] = rows
|
||||||
|
print("==== SHEET:", ws.title, "dims:", ws.dimensions, "max_row:", ws.max_row, "max_col:", ws.max_column)
|
||||||
|
|
||||||
|
# dump full JSON to a file for reliable re-read
|
||||||
|
with open(r"d:\开发\OnebotCatalog\_xlsx_dump.json", "w", encoding="utf-8") as f:
|
||||||
|
json.dump(out, f, ensure_ascii=False, indent=1)
|
||||||
|
|
||||||
|
print("DUMP_DONE")
|
||||||
51
_start_all.bat
Normal file
51
_start_all.bat
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
@echo off
|
||||||
|
setlocal
|
||||||
|
cd /d "%~dp0"
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ============================================================
|
||||||
|
echo ONEBOT one-click start: web + GenServer + NX worker
|
||||||
|
echo ============================================================
|
||||||
|
echo.
|
||||||
|
|
||||||
|
echo [1/6] stop old processes ...
|
||||||
|
taskkill /F /IM GenServer.exe >nul 2>nul
|
||||||
|
taskkill /F /IM run_journal.exe >nul 2>nul
|
||||||
|
ping -n 2 127.0.0.1 >nul
|
||||||
|
|
||||||
|
echo [2/6] build GenServer ...
|
||||||
|
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0tools\build-genserver.ps1"
|
||||||
|
if not %errorlevel%==0 (
|
||||||
|
echo.
|
||||||
|
echo [FAIL] GenServer build failed. Check error above.
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
echo [3/6] start GenServer ...
|
||||||
|
start "GenServer" /min "%~dp0bin\GenServer.exe" "%~dp0genserver-local\genserver-config.json"
|
||||||
|
ping -n 3 127.0.0.1 >nul
|
||||||
|
|
||||||
|
echo [4/6] start NX worker ...
|
||||||
|
start "NXworker" /min "C:\Program Files\Siemens\NX2506\NXBIN\run_journal.exe" "%~dp0sample-data\tools\worker_journal.vb"
|
||||||
|
ping -n 3 127.0.0.1 >nul
|
||||||
|
|
||||||
|
echo [5/6] start web server (port 8080) ...
|
||||||
|
start "OnebotWeb" /min powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0tools\serve-web.ps1"
|
||||||
|
ping -n 4 127.0.0.1 >nul
|
||||||
|
|
||||||
|
echo [6/6] health check ...
|
||||||
|
curl.exe -s http://localhost:8899/health
|
||||||
|
echo.
|
||||||
|
curl.exe -s -o nul -w "web 8080 : %%{http_code}" http://localhost:8080/index.html
|
||||||
|
echo.
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ============================================================
|
||||||
|
echo done. Open browser: http://localhost:8080
|
||||||
|
echo admin: http://localhost:8899/admin (password: onebot888)
|
||||||
|
echo keep the GenServer / NXworker / OnebotWeb windows open
|
||||||
|
echo ============================================================
|
||||||
|
echo.
|
||||||
|
pause
|
||||||
|
endlocal
|
||||||
17
_start_web.bat
Normal file
17
_start_web.bat
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
@echo off
|
||||||
|
setlocal
|
||||||
|
cd /d "%~dp0"
|
||||||
|
|
||||||
|
echo ==== start web server (default root = release\web_2026.08, port 8080) ====
|
||||||
|
start "OnebotWeb" powershell -NoProfile -ExecutionPolicy Bypass -File "tools\serve-web.ps1"
|
||||||
|
|
||||||
|
timeout /t 4 /nobreak >nul
|
||||||
|
|
||||||
|
echo ==== check web (8080) + genserver (8899) ====
|
||||||
|
curl.exe -s -o nul -w "web : %%{http_code}\n" http://localhost:8080/index.html
|
||||||
|
curl.exe -s http://localhost:8899/health
|
||||||
|
echo.
|
||||||
|
|
||||||
|
echo ==== done. browser: http://localhost:8080 ====
|
||||||
|
echo (keep the OnebotWeb window open; close it to stop the server)
|
||||||
|
endlocal
|
||||||
BIN
assets/OneBot-logo.ico
Normal file
BIN
assets/OneBot-logo.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.4 KiB |
BIN
assets/icon.ico
Normal file
BIN
assets/icon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 822 B |
21
blog_mirror/crawl_log.txt
Normal file
21
blog_mirror/crawl_log.txt
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
=== 开始镜像 http://171.80.3.206:39897 @ 2026-08-27 21:46:18 ===
|
||||||
|
队列 1 个页面待处理
|
||||||
|
[FAIL] page http://171.80.3.206/ : <urlopen error [WinError 10061] 由于目标计算机积极拒绝,无法连接。>
|
||||||
|
============================================================
|
||||||
|
完成。页面 0 个,manifest 条目 1 个
|
||||||
|
类型统计: {'page': 1}
|
||||||
|
失败 1 个:
|
||||||
|
http://171.80.3.206/ | <urlopen error [WinError 10061] 由于目标计算机积极拒绝,无法连接。>
|
||||||
|
=== 开始镜像 http://171.80.3.206:39897 @ 2026-08-27 23:07:26 ===
|
||||||
|
队列 1 个页面待处理
|
||||||
|
[FAIL] page http://171.80.3.206/ : <urlopen error [WinError 10061] 由于目标计算机积极拒绝,无法连接。>
|
||||||
|
============================================================
|
||||||
|
完成。页面 0 个,manifest 条目 1 个
|
||||||
|
类型统计: {'page': 1}
|
||||||
|
失败 1 个:
|
||||||
|
http://171.80.3.206/ | <urlopen error [WinError 10061] 由于目标计算机积极拒绝,无法连接。>
|
||||||
|
=== 开始镜像 http://171.80.3.206:39897 @ 2026-08-27 23:12:02 ===
|
||||||
|
队列 1 个页面待处理
|
||||||
|
============================================================
|
||||||
|
完成。页面 1 个,manifest 条目 8 个
|
||||||
|
类型统计: {'page': 6, 'asset': 2}
|
||||||
47
blog_mirror/crawl_manifest.json
Normal file
47
blog_mirror/crawl_manifest.json
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
{
|
||||||
|
"http://171.80.3.206:39897/": {
|
||||||
|
"path": "index.html",
|
||||||
|
"type": "page",
|
||||||
|
"status": "ok",
|
||||||
|
"size": 5016
|
||||||
|
},
|
||||||
|
"http://171.80.3.206:39897/logo.svg": {
|
||||||
|
"path": "logo.svg",
|
||||||
|
"type": "asset",
|
||||||
|
"status": "ok",
|
||||||
|
"size": 2042,
|
||||||
|
"ct": "image/svg+xml"
|
||||||
|
},
|
||||||
|
"http://171.80.3.206:39897/assets/index-DTlSLaLS.js": {
|
||||||
|
"path": "assets\\index-DTlSLaLS.js",
|
||||||
|
"type": "asset",
|
||||||
|
"status": "ok",
|
||||||
|
"size": 183464,
|
||||||
|
"ct": "text/javascript; charset=utf-8"
|
||||||
|
},
|
||||||
|
"http://171.80.3.206:39897/assets/vendor-vue-DiG09V7Q.js": {
|
||||||
|
"type": "page",
|
||||||
|
"status": "dead",
|
||||||
|
"err": "junk"
|
||||||
|
},
|
||||||
|
"http://171.80.3.206:39897/assets/vendor-i18n-F92pr2wT.js": {
|
||||||
|
"type": "page",
|
||||||
|
"status": "dead",
|
||||||
|
"err": "junk"
|
||||||
|
},
|
||||||
|
"http://171.80.3.206:39897/assets/vendor-misc-CbSuWkr5.js": {
|
||||||
|
"type": "page",
|
||||||
|
"status": "dead",
|
||||||
|
"err": "junk"
|
||||||
|
},
|
||||||
|
"http://171.80.3.206:39897/assets/vendor-misc-DB0Q8XAf.css": {
|
||||||
|
"type": "page",
|
||||||
|
"status": "dead",
|
||||||
|
"err": "junk"
|
||||||
|
},
|
||||||
|
"http://171.80.3.206:39897/assets/index-Dk4t2Wci.css": {
|
||||||
|
"type": "page",
|
||||||
|
"status": "dead",
|
||||||
|
"err": "junk"
|
||||||
|
}
|
||||||
|
}
|
||||||
554
blog_mirror/mirror.py
Normal file
554
blog_mirror/mirror.py
Normal file
@@ -0,0 +1,554 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""通用网站离线镜像爬虫(skill: website-mirror)
|
||||||
|
用法:
|
||||||
|
python mirror.py <起始URL> [额外页面域,逗号分隔] [最大页数]
|
||||||
|
示例:
|
||||||
|
python mirror.py https://zh.example.com/
|
||||||
|
python mirror.py https://www.example.com/ "media.example.com,static.example.com" 5000
|
||||||
|
|
||||||
|
行为:
|
||||||
|
- 页面 BFS 爬取(仅目标域 + 额外域),统一存为 .html 便于 file:// 浏览
|
||||||
|
- 附件(pdf/zip/CAD 等)任何域名都下载
|
||||||
|
- CSS/JS/图片/字体等页面资源下载并把 HTML/CSS 内链接改写为本地相对路径
|
||||||
|
- 断点续传(crawl_manifest.json),可重复运行补漏
|
||||||
|
- 每请求间隔 0.3s,单线程,礼貌抓取
|
||||||
|
输出:
|
||||||
|
mirror/<域名>/... 可离线浏览的站点副本
|
||||||
|
crawl_manifest.json 全部 URL 的下载记录
|
||||||
|
crawl_log.txt 日志与失败清单
|
||||||
|
"""
|
||||||
|
import os, re, sys, json, time, hashlib, warnings, threading
|
||||||
|
from urllib.parse import urlparse, urljoin, urldefrag, unquote, quote
|
||||||
|
from collections import deque
|
||||||
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
|
import requests
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
|
|
||||||
|
warnings.filterwarnings("ignore")
|
||||||
|
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
print(__doc__)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
TARGET = sys.argv[1].rstrip("/")
|
||||||
|
EXTRA_HOSTS = {h.strip().lower() for h in sys.argv[2].split(",") if h.strip()} if len(sys.argv) > 2 else set()
|
||||||
|
MAX_PAGES = int(sys.argv[3]) if len(sys.argv) > 3 else 3000
|
||||||
|
|
||||||
|
ROOT = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
HOST = urlparse(TARGET).netloc
|
||||||
|
HOST_DIR = re.sub(r'[<>:"\\|?*]', "_", HOST) # Windows 目录名非法字符替换(端口冒号等)
|
||||||
|
OUT = os.path.join(ROOT, "mirror", HOST_DIR)
|
||||||
|
MANIFEST = os.path.join(ROOT, "crawl_manifest.json")
|
||||||
|
QUEUE_FILE = os.path.join(ROOT, "queue.json")
|
||||||
|
LOG = open(os.path.join(ROOT, "crawl_log.txt"), "a", encoding="utf-8")
|
||||||
|
|
||||||
|
PAGE_HOSTS = {HOST.lower()} | EXTRA_HOSTS
|
||||||
|
START_URLS = [TARGET]
|
||||||
|
ATT_EXT = {
|
||||||
|
".pdf", ".zip", ".rar", ".7z", ".stp", ".step", ".dwg", ".dxf", ".igs", ".iges",
|
||||||
|
".stl", ".easm", ".eprt", ".sldprt", ".sldasm", ".slddrw", ".xls", ".xlsx",
|
||||||
|
".csv", ".doc", ".docx", ".ppt", ".pptx", ".catpart", ".catproduct", ".3mf", ".jt",
|
||||||
|
".ifc", ".rfa", ".dgn", ".prt", ".asm", ".sdp", ".sat", ".stpz",
|
||||||
|
}
|
||||||
|
# 跳过的查询参数(表单/会话/语言切换等爬虫陷阱)
|
||||||
|
SKIP_QUERY_KEYS = {"cmsfkt", "print", "lang", "language", "sprache", "session", "cfid", "cftoken", "search", "q"}
|
||||||
|
SKIP_QUERY_VALS = {"watchlist", "nl_add", "logout", "login", "cart", "basket"}
|
||||||
|
DELAY = 0.3
|
||||||
|
UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
|
||||||
|
# 统计探针/广告等注定失败的域名,直接跳过
|
||||||
|
SKIP_ASSET_HOSTS = {"etracker.com", "google-analytics.com", "googletagmanager.com",
|
||||||
|
"doubleclick.net", "hotjar.com", "statcounter.com", "matomo.org"}
|
||||||
|
failed_logged = set()
|
||||||
|
LOCK = threading.RLock() # 可重入:持锁代码内还会调用 save_manifest/log
|
||||||
|
POOL = ThreadPoolExecutor(max_workers=4) # 文件下载并发线程池
|
||||||
|
|
||||||
|
sess = requests.Session()
|
||||||
|
sess.headers.update({"User-Agent": UA, "Accept-Language": "zh-CN,zh;q=0.9"})
|
||||||
|
|
||||||
|
manifest = {}
|
||||||
|
if os.path.exists(MANIFEST):
|
||||||
|
try:
|
||||||
|
manifest = json.load(open(MANIFEST, encoding="utf-8"))
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
visited = {u for u, v in manifest.items() if v.get("status") == "ok"}
|
||||||
|
failed = []
|
||||||
|
ext_html_seen = set()
|
||||||
|
|
||||||
|
def log(*a):
|
||||||
|
s = " ".join(str(x) for x in a)
|
||||||
|
print(s, flush=True)
|
||||||
|
with LOCK:
|
||||||
|
LOG.write(s + "\n"); LOG.flush()
|
||||||
|
|
||||||
|
def save_manifest():
|
||||||
|
with LOCK:
|
||||||
|
with open(MANIFEST, "w", encoding="utf-8") as f:
|
||||||
|
json.dump(manifest, f, ensure_ascii=False, indent=1)
|
||||||
|
|
||||||
|
def load_q():
|
||||||
|
"""恢复上次未处理完的页面队列。"""
|
||||||
|
try:
|
||||||
|
return json.load(open(QUEUE_FILE, encoding="utf-8"))
|
||||||
|
except Exception:
|
||||||
|
return []
|
||||||
|
|
||||||
|
def save_q(q):
|
||||||
|
with LOCK:
|
||||||
|
json.dump(list(q), open(QUEUE_FILE, "w", encoding="utf-8"))
|
||||||
|
|
||||||
|
def recover_queue():
|
||||||
|
"""从已保存页面的本地链接反向恢复站内页面 URL(弥补崩溃丢失的队列)。"""
|
||||||
|
out = set()
|
||||||
|
for u, v in manifest.items():
|
||||||
|
if v.get("type") != "page" or v.get("status") != "ok":
|
||||||
|
continue
|
||||||
|
fp = os.path.join(OUT, v.get("path", ""))
|
||||||
|
if not os.path.exists(fp):
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
html = open(fp, encoding="utf-8", errors="replace").read()
|
||||||
|
except Exception:
|
||||||
|
continue
|
||||||
|
for m in re.finditer(r'(?:href|src|data-link|data-href)\s*=\s*["\']([^"\']+)["\']', html, re.I):
|
||||||
|
h = m.group(1).strip()
|
||||||
|
if h.startswith(("#", "javascript:", "mailto:", "tel:", "data:")):
|
||||||
|
continue
|
||||||
|
cand = urljoin(u, h)
|
||||||
|
p = urlparse(cand)
|
||||||
|
if p.netloc.lower().split(":")[0] not in PAGE_HOSTS:
|
||||||
|
continue
|
||||||
|
if p.path.lower().endswith((".jpg", ".jpeg", ".png", ".gif", ".css", ".js",
|
||||||
|
".ico", ".svg", ".woff", ".woff2", ".ttf", ".webp")):
|
||||||
|
continue
|
||||||
|
path = p.path
|
||||||
|
if path.endswith(".html"):
|
||||||
|
path = path[:-5]
|
||||||
|
if path in ("/index", "/index.html"): # 首页别名归一
|
||||||
|
path = "/"
|
||||||
|
path, _, qs = path.partition("@@") # 反向还原查询参数编码(改写过的链接)
|
||||||
|
if qs:
|
||||||
|
path = path + "?" + qs
|
||||||
|
elif p.query: # 未改写的原始链接:保留 query
|
||||||
|
path = path + "?" + p.query
|
||||||
|
cand = norm_url(f"{p.scheme}://{p.netloc}{path}")
|
||||||
|
if cand and not is_attachment(cand) and not is_junk_page(cand):
|
||||||
|
out.add(cand)
|
||||||
|
return out
|
||||||
|
|
||||||
|
def norm_url(u):
|
||||||
|
u = u.strip()
|
||||||
|
if not u or u.startswith(("javascript:", "mailto:", "tel:", "data:", "sms:", "#")):
|
||||||
|
return None
|
||||||
|
u, frag = urldefrag(u)
|
||||||
|
p = urlparse(u)
|
||||||
|
if p.scheme not in ("http", "https"):
|
||||||
|
return None
|
||||||
|
host = p.netloc.lower().split(":")[0]
|
||||||
|
path = p.path or "/"
|
||||||
|
qs = []
|
||||||
|
if p.query:
|
||||||
|
for kv in p.query.split("&"):
|
||||||
|
k = kv.split("=", 1)[0].lower()
|
||||||
|
v = kv.split("=", 1)[1].lower() if "=" in kv else ""
|
||||||
|
if k in SKIP_QUERY_KEYS or v in SKIP_QUERY_VALS:
|
||||||
|
continue
|
||||||
|
qs.append(kv)
|
||||||
|
query = "&".join(qs)
|
||||||
|
return f"{p.scheme}://{host}{path}" + (f"?{query}" if query else "")
|
||||||
|
|
||||||
|
def is_attachment(u):
|
||||||
|
p = urlparse(u)
|
||||||
|
path = unquote(p.path).lower()
|
||||||
|
if path.endswith(tuple(ATT_EXT)):
|
||||||
|
return True
|
||||||
|
if "/d3/" in path and p.query: # 下载中心类动态链接
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
STATIC_EXT = (".jpg", ".jpeg", ".png", ".gif", ".ico", ".svg", ".bmp", ".webp", ".tif", ".tiff")
|
||||||
|
|
||||||
|
def is_static(u):
|
||||||
|
"""<a href> 直接指向图片等静态文件时按资源处理(不追加 .html)。"""
|
||||||
|
return urlparse(u).path.lower().endswith(STATIC_EXT)
|
||||||
|
|
||||||
|
def skip_asset(u):
|
||||||
|
p = urlparse(u)
|
||||||
|
h = p.netloc.lower().split(":")[0]
|
||||||
|
for bad in SKIP_ASSET_HOSTS: # 含子域名匹配
|
||||||
|
if h == bad or h.endswith("." + bad):
|
||||||
|
return True
|
||||||
|
if not p.path or p.path == "/":
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def is_junk_page(u):
|
||||||
|
"""解析噪声/静态资源伪装成的页面 URL。"""
|
||||||
|
p = urlparse(u)
|
||||||
|
path = p.path.lower()
|
||||||
|
if path.endswith((".css", ".js", ".png", ".jpg", ".jpeg", ".gif", ".ico", ".svg",
|
||||||
|
".woff", ".woff2", ".ttf", ".webp", ".bin")):
|
||||||
|
return True
|
||||||
|
if any(s in ("http", "https") for s in [x for x in p.path.split("/") if x]):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def sanitize_seg(seg):
|
||||||
|
seg = re.sub(r'[<>:"\\|?*]', "_", seg)
|
||||||
|
seg = seg.strip(" .")
|
||||||
|
if not seg:
|
||||||
|
seg = "_"
|
||||||
|
if len(seg) > 90:
|
||||||
|
seg = seg[:80] + "_" + hashlib.md5(seg.encode()).hexdigest()[:8]
|
||||||
|
return seg
|
||||||
|
|
||||||
|
def local_path(u, is_page):
|
||||||
|
"""URL → 本地相对路径。文件名使用真实 Unicode。"""
|
||||||
|
p = urlparse(u)
|
||||||
|
path = unquote(p.path)
|
||||||
|
if path.endswith("/"):
|
||||||
|
path += "index"
|
||||||
|
segs = [sanitize_seg(s) for s in path.split("/") if s]
|
||||||
|
if not segs:
|
||||||
|
segs = ["index"]
|
||||||
|
name = segs.pop()
|
||||||
|
if is_page:
|
||||||
|
name += ".html"
|
||||||
|
else:
|
||||||
|
if "." not in name or not re.search(r"\.[A-Za-z0-9]{1,6}$", name):
|
||||||
|
name += ".bin"
|
||||||
|
if p.query:
|
||||||
|
qs = sanitize_seg(unquote(p.query).replace("/", "_").replace("\\", "_"))[:120]
|
||||||
|
name = name.rsplit(".", 1)[0] + "@@" + qs + "." + name.rsplit(".", 1)[1]
|
||||||
|
return os.path.join(*segs, name)
|
||||||
|
|
||||||
|
def fetch(u, timeout=(15, 60)):
|
||||||
|
for attempt in range(3):
|
||||||
|
try:
|
||||||
|
r = sess.get(u, timeout=timeout)
|
||||||
|
r.raise_for_status()
|
||||||
|
return r
|
||||||
|
except requests.exceptions.HTTPError as e:
|
||||||
|
if e.response is not None and e.response.status_code in (400, 401, 403, 404, 410):
|
||||||
|
raise
|
||||||
|
if attempt == 2:
|
||||||
|
raise
|
||||||
|
time.sleep(2 * (attempt + 1))
|
||||||
|
except Exception:
|
||||||
|
if attempt == 2:
|
||||||
|
raise
|
||||||
|
time.sleep(2 * (attempt + 1))
|
||||||
|
|
||||||
|
def download_file(u, kind):
|
||||||
|
"""下载二进制资源/附件(流式+硬时限+并发安全),返回相对路径。"""
|
||||||
|
if skip_asset(u):
|
||||||
|
return None
|
||||||
|
rel = local_path(u, is_page=False)
|
||||||
|
fp = os.path.join(OUT, rel)
|
||||||
|
with LOCK:
|
||||||
|
if u in manifest and manifest[u].get("status") == "ok" and os.path.exists(fp):
|
||||||
|
return rel
|
||||||
|
manifest[u] = {"path": rel, "type": kind, "status": "pending"}
|
||||||
|
save_manifest()
|
||||||
|
try:
|
||||||
|
with requests.get(u, timeout=(15, 60), stream=True,
|
||||||
|
headers={"User-Agent": UA}) as r:
|
||||||
|
r.raise_for_status()
|
||||||
|
os.makedirs(os.path.dirname(fp), exist_ok=True)
|
||||||
|
deadline = time.time() + 600 # 单文件总时限 10 分钟,防慢速滴流卡死
|
||||||
|
total = 0
|
||||||
|
with open(fp, "wb") as f:
|
||||||
|
for chunk in r.iter_content(65536):
|
||||||
|
if time.time() > deadline:
|
||||||
|
raise TimeoutError("总时限到")
|
||||||
|
f.write(chunk)
|
||||||
|
total += len(chunk)
|
||||||
|
ct = r.headers.get("Content-Type", "")
|
||||||
|
# CSS: 下载其 url() 引用并改写为本地路径
|
||||||
|
if kind == "asset" and (rel.lower().endswith(".css") or "css" in ct):
|
||||||
|
try:
|
||||||
|
with open(fp, "rb") as f:
|
||||||
|
data = f.read()
|
||||||
|
new_css = css_urls(data.decode("utf-8", "replace"), u)
|
||||||
|
with open(fp, "w", encoding="utf-8") as f:
|
||||||
|
f.write(new_css)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
with LOCK:
|
||||||
|
manifest[u] = {"path": rel, "type": kind, "status": "ok",
|
||||||
|
"size": total, "ct": ct}
|
||||||
|
save_manifest()
|
||||||
|
return rel
|
||||||
|
except Exception as e:
|
||||||
|
with LOCK:
|
||||||
|
failed.append((u, str(e)))
|
||||||
|
dead = isinstance(e, requests.exceptions.HTTPError) and \
|
||||||
|
e.response is not None and e.response.status_code in (404, 410)
|
||||||
|
manifest[u] = {"path": rel, "type": kind,
|
||||||
|
"status": "dead" if dead else "failed", "err": str(e)[:200]}
|
||||||
|
save_manifest()
|
||||||
|
if u not in failed_logged:
|
||||||
|
failed_logged.add(u)
|
||||||
|
log(f" [FAIL] {kind} {u} : {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def css_urls(css, css_url):
|
||||||
|
def rep(m):
|
||||||
|
raw = m.group(1).strip().strip("'\"")
|
||||||
|
if raw.startswith(("data:", "http://", "https://", "//")):
|
||||||
|
absu = raw if raw.startswith(("http://", "https://")) else "https:" + raw
|
||||||
|
else:
|
||||||
|
absu = urljoin(css_url, raw)
|
||||||
|
if absu.startswith(("data:", "javascript:")):
|
||||||
|
return m.group(0)
|
||||||
|
rel = download_file(absu, "asset")
|
||||||
|
if rel:
|
||||||
|
from_dir = os.path.dirname(local_path(css_url, is_page=False))
|
||||||
|
rr = os.path.relpath(rel, from_dir).replace("\\", "/")
|
||||||
|
return f"url({rr})"
|
||||||
|
return m.group(0)
|
||||||
|
return re.sub(r"url\(\s*(.*?)\s*\)", rep, css, flags=re.I | re.S)
|
||||||
|
|
||||||
|
def process_page(u, r):
|
||||||
|
soup = BeautifulSoup(r.content, "html.parser")
|
||||||
|
base = u
|
||||||
|
b = soup.find("base", href=True)
|
||||||
|
if b:
|
||||||
|
base = urljoin(u, b["href"])
|
||||||
|
|
||||||
|
rel_page = local_path(u, is_page=True)
|
||||||
|
page_dir = os.path.dirname(rel_page)
|
||||||
|
|
||||||
|
def to_local(absu, kind="page"):
|
||||||
|
"""绝对 URL → 相对当前页面的本地路径。"""
|
||||||
|
if absu is None:
|
||||||
|
return None
|
||||||
|
rel = local_path(absu, is_page=(kind == "page"))
|
||||||
|
rp = os.path.relpath(rel, page_dir).replace("\\", "/")
|
||||||
|
return rp
|
||||||
|
|
||||||
|
new_pages, atts, assets = [], [], []
|
||||||
|
|
||||||
|
for a in soup.find_all("a", href=True):
|
||||||
|
h = a["href"].strip()
|
||||||
|
if h.startswith("#"):
|
||||||
|
continue
|
||||||
|
absu = norm_url(urljoin(base, h))
|
||||||
|
if absu is None:
|
||||||
|
continue
|
||||||
|
host = urlparse(absu).netloc.lower().split(":")[0]
|
||||||
|
if is_attachment(absu):
|
||||||
|
atts.append(absu)
|
||||||
|
elif is_static(absu):
|
||||||
|
assets.append(absu) # 图片直链按资源下载
|
||||||
|
elif host in PAGE_HOSTS:
|
||||||
|
new_pages.append(absu)
|
||||||
|
else:
|
||||||
|
ext_html_seen.add(absu)
|
||||||
|
|
||||||
|
# JS 跳转类链接:遍历全部 data-* 属性,值像 URL 的(以 / 开头、含 pid=/documentId= 等)都按链接处理
|
||||||
|
for tag in soup.find_all(True):
|
||||||
|
for attr, val in list(tag.attrs.items()):
|
||||||
|
if not (attr.startswith("data-") and isinstance(val, str)):
|
||||||
|
continue
|
||||||
|
v = val.strip()
|
||||||
|
if not (v.startswith("/") or v.startswith("http") or re.search(r"\.(cfm|html|php|aspx)\b|pid=|documentId=", v)):
|
||||||
|
continue
|
||||||
|
absu = norm_url(urljoin(base, v))
|
||||||
|
if absu is None:
|
||||||
|
continue
|
||||||
|
host = urlparse(absu).netloc.lower().split(":")[0]
|
||||||
|
if is_attachment(absu):
|
||||||
|
atts.append(absu)
|
||||||
|
elif is_static(absu):
|
||||||
|
assets.append(absu)
|
||||||
|
elif host in PAGE_HOSTS:
|
||||||
|
new_pages.append(absu)
|
||||||
|
|
||||||
|
for tag in soup.find_all(["img", "script", "source", "embed", "video", "audio", "iframe"]):
|
||||||
|
for attr in ("src", "data", "poster"):
|
||||||
|
if tag.has_attr(attr):
|
||||||
|
absu = norm_url(urljoin(base, tag[attr].strip()))
|
||||||
|
if absu:
|
||||||
|
assets.append(absu)
|
||||||
|
if tag.has_attr("srcset"):
|
||||||
|
for part in tag["srcset"].split(","):
|
||||||
|
part = part.strip()
|
||||||
|
if part:
|
||||||
|
su = part.split()[0]
|
||||||
|
absu = norm_url(urljoin(base, su))
|
||||||
|
if absu:
|
||||||
|
assets.append(absu)
|
||||||
|
if tag.name == "iframe" and tag.has_attr("src"):
|
||||||
|
absu = norm_url(urljoin(base, tag["src"].strip()))
|
||||||
|
if absu and urlparse(absu).netloc.lower().split(":")[0] in PAGE_HOSTS and not is_attachment(absu):
|
||||||
|
new_pages.append(absu)
|
||||||
|
|
||||||
|
for l in soup.find_all("link", href=True):
|
||||||
|
rels = " ".join(l.get("rel", [])).lower()
|
||||||
|
if any(r in rels for r in ("preconnect", "dns-prefetch", "canonical", "alternate")):
|
||||||
|
continue # 预连接/SEO 标签不是真实资源
|
||||||
|
absu = norm_url(urljoin(base, l["href"].strip()))
|
||||||
|
if absu:
|
||||||
|
assets.append(absu)
|
||||||
|
|
||||||
|
# ---- 改写链接为本地路径 ----
|
||||||
|
for a in soup.find_all("a", href=True):
|
||||||
|
h = a["href"].strip()
|
||||||
|
if h.startswith(("#", "javascript:", "mailto:", "tel:")):
|
||||||
|
continue
|
||||||
|
absu = norm_url(urljoin(base, h))
|
||||||
|
if absu is None:
|
||||||
|
continue
|
||||||
|
frag = ""
|
||||||
|
if "#" in h:
|
||||||
|
frag = "#" + h.split("#", 1)[1]
|
||||||
|
host = urlparse(absu).netloc.lower().split(":")[0]
|
||||||
|
if is_attachment(absu) or is_static(absu):
|
||||||
|
a["href"] = (to_local(absu, "asset") or absu) + frag
|
||||||
|
elif host in PAGE_HOSTS:
|
||||||
|
a["href"] = to_local(absu, "page") + frag
|
||||||
|
|
||||||
|
for tag in soup.find_all(["img", "script", "source", "embed", "video", "audio"]):
|
||||||
|
for attr in ("src", "data", "poster"):
|
||||||
|
if tag.has_attr(attr):
|
||||||
|
absu = norm_url(urljoin(base, tag[attr].strip()))
|
||||||
|
if absu:
|
||||||
|
tag[attr] = to_local(absu, "asset") or absu
|
||||||
|
if tag.has_attr("srcset"):
|
||||||
|
parts = []
|
||||||
|
for part in tag["srcset"].split(","):
|
||||||
|
part = part.strip()
|
||||||
|
if not part:
|
||||||
|
continue
|
||||||
|
su, *rest = part.split()
|
||||||
|
absu = norm_url(urljoin(base, su))
|
||||||
|
parts.append((to_local(absu, "asset") or absu) + (" " + " ".join(rest) if rest else ""))
|
||||||
|
tag["srcset"] = ", ".join(parts)
|
||||||
|
|
||||||
|
for l in soup.find_all("link", href=True):
|
||||||
|
rels = " ".join(l.get("rel", [])).lower()
|
||||||
|
if any(r in rels for r in ("preconnect", "dns-prefetch", "canonical", "alternate")):
|
||||||
|
continue
|
||||||
|
absu = norm_url(urljoin(base, l["href"].strip()))
|
||||||
|
if absu:
|
||||||
|
l["href"] = to_local(absu, "asset") or absu
|
||||||
|
|
||||||
|
for tag in soup.find_all(True):
|
||||||
|
for attr, val in list(tag.attrs.items()):
|
||||||
|
if not (attr.startswith("data-") and isinstance(val, str)):
|
||||||
|
continue
|
||||||
|
v = val.strip()
|
||||||
|
if not (v.startswith("/") or v.startswith("http") or re.search(r"\.(cfm|html|php|aspx)\b|pid=|documentId=", v)):
|
||||||
|
continue
|
||||||
|
absu = norm_url(urljoin(base, v))
|
||||||
|
if absu:
|
||||||
|
tag[attr] = to_local(absu, "page") or absu
|
||||||
|
|
||||||
|
for f in soup.find_all("iframe", src=True):
|
||||||
|
absu = norm_url(urljoin(base, f["src"].strip()))
|
||||||
|
if absu:
|
||||||
|
host = urlparse(absu).netloc.lower().split(":")[0]
|
||||||
|
f["src"] = to_local(absu, "page" if host in PAGE_HOSTS else "asset") or absu
|
||||||
|
|
||||||
|
if not soup.find("meta", attrs={"charset": True}):
|
||||||
|
hd = soup.find("head")
|
||||||
|
if hd:
|
||||||
|
hd.insert(0, BeautifulSoup('<meta charset="utf-8">', "html.parser").find("meta"))
|
||||||
|
|
||||||
|
# 删除 <base> 标签:改写后的相对链接按页面自身目录解析,base 会劫持解析基准导致离线浏览全部 404
|
||||||
|
for btag in soup.find_all("base"):
|
||||||
|
btag.decompose()
|
||||||
|
|
||||||
|
fp = os.path.join(OUT, rel_page)
|
||||||
|
os.makedirs(os.path.dirname(fp), exist_ok=True)
|
||||||
|
with open(fp, "w", encoding="utf-8") as f:
|
||||||
|
f.write(str(soup))
|
||||||
|
manifest[u] = {"path": rel_page, "type": "page", "status": "ok", "size": len(r.content)}
|
||||||
|
save_manifest()
|
||||||
|
return new_pages, atts, assets
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# 恢复队列:上次未处理的 + 种子 + 失败页面 + 从已存页面反推的链接(断点续传)
|
||||||
|
q = deque()
|
||||||
|
for u in load_q() + [norm_url(u) for u in START_URLS] + \
|
||||||
|
[u for u, v in manifest.items() if v.get("type") == "page" and v.get("status") in ("failed", "pending")] + \
|
||||||
|
sorted(recover_queue()):
|
||||||
|
u = norm_url(u)
|
||||||
|
if u and u not in q and not is_junk_page(u):
|
||||||
|
q.append(u)
|
||||||
|
log(f"队列恢复 {len(q)} 个页面待处理")
|
||||||
|
pages_done = 0
|
||||||
|
# 先续传上次中断未完成的文件 + 重试网络错误失败的附件(死链除外)
|
||||||
|
pend = [(u, manifest[u].get("type", "asset")) for u, v in manifest.items()
|
||||||
|
if v.get("type") in ("asset", "attachment") and v.get("status") in ("pending", "failed")]
|
||||||
|
if pend:
|
||||||
|
log(f"续传未完成文件 {len(pend)} 个")
|
||||||
|
for u, k in pend:
|
||||||
|
POOL.submit(download_file, u, k)
|
||||||
|
while q:
|
||||||
|
u = q.popleft()
|
||||||
|
if u in visited:
|
||||||
|
continue
|
||||||
|
visited.add(u)
|
||||||
|
if is_junk_page(u):
|
||||||
|
manifest[u] = {"type": "page", "status": "dead", "err": "junk"}
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
r = fetch(u)
|
||||||
|
except Exception as e:
|
||||||
|
failed.append((u, str(e)))
|
||||||
|
# 404/410 为永久死链,标记 dead 不再重试;其它错误下次续传时重试
|
||||||
|
dead = isinstance(e, requests.exceptions.HTTPError) and \
|
||||||
|
e.response is not None and e.response.status_code in (404, 410)
|
||||||
|
manifest[u] = {"type": "page", "status": "dead" if dead else "failed", "err": str(e)[:200]}
|
||||||
|
save_manifest()
|
||||||
|
if not dead or u not in failed_logged:
|
||||||
|
failed_logged.add(u)
|
||||||
|
log(f"[FAIL] page {u} : {e}")
|
||||||
|
time.sleep(DELAY)
|
||||||
|
continue
|
||||||
|
ct = r.headers.get("Content-Type", "")
|
||||||
|
pth = urlparse(u).path.lower()
|
||||||
|
if "html" in ct.lower() or pth.endswith((".cfm", ".html", ".htm")):
|
||||||
|
try:
|
||||||
|
new_pages, atts, assets = process_page(u, r)
|
||||||
|
pages_done += 1
|
||||||
|
for a in atts:
|
||||||
|
POOL.submit(download_file, a, "attachment")
|
||||||
|
for a in assets:
|
||||||
|
POOL.submit(download_file, a, "asset")
|
||||||
|
for p in new_pages:
|
||||||
|
if p not in visited and p not in q:
|
||||||
|
q.append(p)
|
||||||
|
save_q(q) # 队列持久化,中断后可续爬
|
||||||
|
if pages_done % 25 == 0:
|
||||||
|
log(f"... 已处理 {pages_done} 页, 队列 {len(q)}, 文件总数 {len(manifest)}")
|
||||||
|
except Exception as e:
|
||||||
|
log(f"[ERR] parse {u}: {e}")
|
||||||
|
else:
|
||||||
|
download_file(u, "attachment" if is_attachment(u) else "asset")
|
||||||
|
if pages_done > MAX_PAGES:
|
||||||
|
log("达到页面数上限,停止")
|
||||||
|
break
|
||||||
|
time.sleep(DELAY)
|
||||||
|
|
||||||
|
POOL.shutdown(wait=True) # 等待所有文件下载完成
|
||||||
|
log("=" * 60)
|
||||||
|
log(f"完成。页面 {pages_done} 个,manifest 条目 {len(manifest)} 个")
|
||||||
|
types = {}
|
||||||
|
for v in manifest.values():
|
||||||
|
types[v.get("type", "?")] = types.get(v.get("type", "?"), 0) + 1
|
||||||
|
log("类型统计:", types)
|
||||||
|
if failed:
|
||||||
|
log(f"失败 {len(failed)} 个:")
|
||||||
|
for u, e in failed:
|
||||||
|
log(" ", u, "|", e)
|
||||||
|
if ext_html_seen:
|
||||||
|
log(f"未跟进的站外 HTML 链接 {len(ext_html_seen)} 个 (示例):")
|
||||||
|
for u in list(ext_html_seen)[:10]:
|
||||||
|
log(" ", u)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
log(f"=== 开始镜像 {TARGET} @ {time.strftime('%Y-%m-%d %H:%M:%S')} ===")
|
||||||
|
main()
|
||||||
100
blog_mirror/mirror/171.80.3.206_39897/assets/index-DTlSLaLS.js
Normal file
100
blog_mirror/mirror/171.80.3.206_39897/assets/index-DTlSLaLS.js
Normal file
File diff suppressed because one or more lines are too long
18
blog_mirror/mirror/171.80.3.206_39897/index.html
Normal file
18
blog_mirror/mirror/171.80.3.206_39897/index.html
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<!doctype html>
|
||||||
|
|
||||||
|
<html lang="zh-CN">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
|
||||||
|
<link rel="icon" type="image/svg+xml" href="logo.svg" />
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<title>Forestapi - AI API Gateway</title>
|
||||||
|
|
||||||
|
<script type="module" crossorigin src="assets/index-DTlSLaLS.js"></script>
|
||||||
|
<link rel="modulepreload" crossorigin href="assets/vendor-vue-DiG09V7Q.js.html">
|
||||||
|
<link rel="modulepreload" crossorigin href="assets/vendor-i18n-F92pr2wT.js.html">
|
||||||
|
<link rel="modulepreload" crossorigin href="assets/vendor-misc-CbSuWkr5.js.html">
|
||||||
32
blog_mirror/mirror/171.80.3.206_39897/logo.svg
Normal file
32
blog_mirror/mirror/171.80.3.206_39897/logo.svg
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" role="img" aria-labelledby="title desc">
|
||||||
|
<title id="title">Sub2API</title>
|
||||||
|
<desc id="desc">An interlocking S symbol representing subscription routing into APIs.</desc>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="s2a-bg" x1="72" y1="44" x2="442" y2="478" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#142B56"/>
|
||||||
|
<stop offset=".52" stop-color="#0A1A39"/>
|
||||||
|
<stop offset="1" stop-color="#061127"/>
|
||||||
|
</linearGradient>
|
||||||
|
<radialGradient id="s2a-ambient" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(168 92) rotate(51) scale(342 382)">
|
||||||
|
<stop stop-color="#3E68B0" stop-opacity=".28"/>
|
||||||
|
<stop offset="1" stop-color="#3E68B0" stop-opacity="0"/>
|
||||||
|
</radialGradient>
|
||||||
|
<linearGradient id="s2a-brand" x1="4" y1="4" x2="20" y2="20" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#79F4BD"/>
|
||||||
|
<stop offset=".48" stop-color="#39D9E7"/>
|
||||||
|
<stop offset="1" stop-color="#3875F6"/>
|
||||||
|
</linearGradient>
|
||||||
|
<filter id="s2a-shadow" x="-25%" y="-25%" width="150%" height="165%" color-interpolation-filters="sRGB">
|
||||||
|
<feDropShadow dx="0" dy=".55" stdDeviation=".65" flood-color="#020817" flood-opacity=".34"/>
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
|
||||||
|
<rect x="16" y="16" width="480" height="480" rx="120" fill="url(#s2a-bg)"/>
|
||||||
|
<rect x="16" y="16" width="480" height="480" rx="120" fill="url(#s2a-ambient)"/>
|
||||||
|
<rect x="16.75" y="16.75" width="478.5" height="478.5" rx="119.25" fill="none" stroke="#A5BFFF" stroke-opacity=".16" stroke-width="1.5"/>
|
||||||
|
|
||||||
|
<g transform="translate(52 52) scale(17)" fill="none" stroke="url(#s2a-brand)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.7" filter="url(#s2a-shadow)">
|
||||||
|
<path d="m19.25 7.65-2.55-3.2a1.33 1.33 0 0 0-1.03-.5H8.58c-.34 0-.67.13-.91.37L4.15 7.65c-.93.88-.6 1.52.65 2.3l9.55 5.97"/>
|
||||||
|
<path d="m4.75 16.35 2.55 3.2c.25.31.63.5 1.03.5h7.09c.34 0 .67-.13.91-.37l3.52-3.33c.93-.88.6-1.52-.65-2.3L9.65 8.08"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
477
blog_mirror/mirror_stdlib.py
Normal file
477
blog_mirror/mirror_stdlib.py
Normal file
@@ -0,0 +1,477 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""网站离线镜像爬虫(纯标准库版,无需 requests / beautifulsoup4)
|
||||||
|
用法:
|
||||||
|
python mirror_stdlib.py <起始URL> [最大页数]
|
||||||
|
示例:
|
||||||
|
python mirror_stdlib.py http://171.80.3.206:39897/
|
||||||
|
python mirror_stdlib.py https://example.com/ 5000
|
||||||
|
|
||||||
|
行为:
|
||||||
|
- 页面 BFS 爬取(仅目标域),统一存为 .html 便于 file:// 浏览
|
||||||
|
- 附件(pdf/zip 等)任何域名都下载
|
||||||
|
- CSS/JS/图片/字体等资源下载并把 HTML/CSS 内链接改写为本地相对路径
|
||||||
|
- 断点续传(crawl_manifest.json),可重复运行补漏
|
||||||
|
- 每请求间隔 0.3s,礼貌抓取
|
||||||
|
"""
|
||||||
|
import os, re, sys, json, time, hashlib, threading, gzip, zlib
|
||||||
|
from urllib.parse import urlparse, urljoin, urldefrag, unquote
|
||||||
|
from urllib.request import Request, urlopen
|
||||||
|
from urllib.error import HTTPError, URLError
|
||||||
|
from collections import deque
|
||||||
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
|
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
print(__doc__)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
TARGET = sys.argv[1].rstrip("/")
|
||||||
|
MAX_PAGES = int(sys.argv[2]) if len(sys.argv) > 2 else 3000
|
||||||
|
|
||||||
|
ROOT = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
HOST = urlparse(TARGET).netloc
|
||||||
|
HOST_DIR = re.sub(r'[<>:"\\|?*]', "_", HOST) # Windows 目录名非法字符替换(端口冒号)
|
||||||
|
OUT = os.path.join(ROOT, "mirror", HOST_DIR)
|
||||||
|
MANIFEST = os.path.join(ROOT, "crawl_manifest.json")
|
||||||
|
QUEUE_FILE = os.path.join(ROOT, "queue.json")
|
||||||
|
LOG = open(os.path.join(ROOT, "crawl_log.txt"), "a", encoding="utf-8")
|
||||||
|
|
||||||
|
PAGE_HOSTS = {HOST.lower()}
|
||||||
|
START_URLS = [TARGET]
|
||||||
|
ATT_EXT = {
|
||||||
|
".pdf", ".zip", ".rar", ".7z", ".stp", ".step", ".dwg", ".dxf", ".igs", ".iges",
|
||||||
|
".stl", ".xls", ".xlsx", ".csv", ".doc", ".docx", ".ppt", ".pptx", ".tar", ".gz",
|
||||||
|
}
|
||||||
|
SKIP_QUERY_KEYS = {"cmsfkt", "print", "lang", "language", "sprache", "session", "cfid", "cftoken", "search", "q"}
|
||||||
|
SKIP_QUERY_VALS = {"watchlist", "nl_add", "logout", "login", "cart", "basket"}
|
||||||
|
DELAY = 0.3
|
||||||
|
UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
|
||||||
|
SKIP_ASSET_HOSTS = {"etracker.com", "google-analytics.com", "googletagmanager.com",
|
||||||
|
"doubleclick.net", "hotjar.com", "statcounter.com", "matomo.org",
|
||||||
|
"google.com", "facebook.com", "twitter.com", "linkedin.com"}
|
||||||
|
failed_logged = set()
|
||||||
|
LOCK = threading.RLock()
|
||||||
|
POOL = ThreadPoolExecutor(max_workers=4)
|
||||||
|
|
||||||
|
manifest = {}
|
||||||
|
if os.path.exists(MANIFEST):
|
||||||
|
try:
|
||||||
|
manifest = json.load(open(MANIFEST, encoding="utf-8"))
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
visited = {u for u, v in manifest.items() if v.get("status") == "ok"}
|
||||||
|
failed = []
|
||||||
|
ext_html_seen = set()
|
||||||
|
|
||||||
|
def log(*a):
|
||||||
|
s = " ".join(str(x) for x in a)
|
||||||
|
print(s, flush=True)
|
||||||
|
with LOCK:
|
||||||
|
LOG.write(s + "\n"); LOG.flush()
|
||||||
|
|
||||||
|
def save_manifest():
|
||||||
|
with LOCK:
|
||||||
|
with open(MANIFEST, "w", encoding="utf-8") as f:
|
||||||
|
json.dump(manifest, f, ensure_ascii=False, indent=1)
|
||||||
|
|
||||||
|
def load_q():
|
||||||
|
try:
|
||||||
|
return json.load(open(QUEUE_FILE, encoding="utf-8"))
|
||||||
|
except Exception:
|
||||||
|
return []
|
||||||
|
|
||||||
|
def save_q(q):
|
||||||
|
with LOCK:
|
||||||
|
json.dump(list(q), open(QUEUE_FILE, "w", encoding="utf-8"))
|
||||||
|
|
||||||
|
def norm_url(u):
|
||||||
|
u = u.strip()
|
||||||
|
if not u or u.startswith(("javascript:", "mailto:", "tel:", "data:", "sms:", "about:", "#")):
|
||||||
|
return None
|
||||||
|
u, frag = urldefrag(u)
|
||||||
|
p = urlparse(u)
|
||||||
|
if p.scheme not in ("http", "https"):
|
||||||
|
return None
|
||||||
|
netloc = (p.netloc or "").lower() # 保留端口,不能 split(":") 去端口
|
||||||
|
path = p.path or "/"
|
||||||
|
qs = []
|
||||||
|
if p.query:
|
||||||
|
for kv in p.query.split("&"):
|
||||||
|
k = kv.split("=", 1)[0].lower()
|
||||||
|
v = kv.split("=", 1)[1].lower() if "=" in kv else ""
|
||||||
|
if k in SKIP_QUERY_KEYS or v in SKIP_QUERY_VALS:
|
||||||
|
continue
|
||||||
|
qs.append(kv)
|
||||||
|
query = "&".join(qs)
|
||||||
|
return f"{p.scheme}://{netloc}{path}" + (f"?{query}" if query else "")
|
||||||
|
|
||||||
|
def is_attachment(u):
|
||||||
|
p = urlparse(u)
|
||||||
|
path = unquote(p.path).lower()
|
||||||
|
return path.endswith(tuple(ATT_EXT))
|
||||||
|
|
||||||
|
STATIC_EXT = (".jpg", ".jpeg", ".png", ".gif", ".ico", ".svg", ".bmp", ".webp", ".tif", ".tiff")
|
||||||
|
|
||||||
|
def is_static(u):
|
||||||
|
return urlparse(u).path.lower().endswith(STATIC_EXT)
|
||||||
|
|
||||||
|
def skip_asset(u):
|
||||||
|
p = urlparse(u)
|
||||||
|
h = (p.netloc or "").lower().split(":")[0]
|
||||||
|
for bad in SKIP_ASSET_HOSTS:
|
||||||
|
if h == bad or h.endswith("." + bad):
|
||||||
|
return True
|
||||||
|
if not p.path or p.path == "/":
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def is_junk_page(u):
|
||||||
|
p = urlparse(u)
|
||||||
|
path = p.path.lower()
|
||||||
|
return path.endswith((".css", ".js", ".png", ".jpg", ".jpeg", ".gif", ".ico", ".svg",
|
||||||
|
".woff", ".woff2", ".ttf", ".webp", ".bin", ".map"))
|
||||||
|
|
||||||
|
def sanitize_seg(seg):
|
||||||
|
seg = re.sub(r'[<>:"\\|?*]', "_", seg)
|
||||||
|
seg = seg.strip(" .")
|
||||||
|
if not seg:
|
||||||
|
seg = "_"
|
||||||
|
if len(seg) > 90:
|
||||||
|
seg = seg[:80] + "_" + hashlib.md5(seg.encode()).hexdigest()[:8]
|
||||||
|
return seg
|
||||||
|
|
||||||
|
def local_path(u, is_page):
|
||||||
|
p = urlparse(u)
|
||||||
|
path = unquote(p.path)
|
||||||
|
if path.endswith("/"):
|
||||||
|
path += "index"
|
||||||
|
segs = [sanitize_seg(s) for s in path.split("/") if s]
|
||||||
|
if not segs:
|
||||||
|
segs = ["index"]
|
||||||
|
name = segs.pop()
|
||||||
|
if is_page:
|
||||||
|
name += ".html"
|
||||||
|
else:
|
||||||
|
if "." not in name or not re.search(r"\.[A-Za-z0-9]{1,6}$", name):
|
||||||
|
name += ".bin"
|
||||||
|
if p.query:
|
||||||
|
qs = sanitize_seg(unquote(p.query).replace("/", "_").replace("\\", "_"))[:120]
|
||||||
|
name = name.rsplit(".", 1)[0] + "@@" + qs + "." + name.rsplit(".", 1)[1]
|
||||||
|
return os.path.join(*segs, name)
|
||||||
|
|
||||||
|
def http_get(u, timeout=30):
|
||||||
|
"""urllib GET,返回 (bytes, content_type)。处理 gzip/deflate。"""
|
||||||
|
req = Request(u, headers={"User-Agent": UA, "Accept-Encoding": "identity"})
|
||||||
|
resp = urlopen(req, timeout=timeout)
|
||||||
|
data = resp.read()
|
||||||
|
headers = resp.headers
|
||||||
|
enc = (headers.get("Content-Encoding", "") or "").lower()
|
||||||
|
if enc == "gzip":
|
||||||
|
try:
|
||||||
|
data = gzip.decompress(data)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
elif enc == "deflate":
|
||||||
|
try:
|
||||||
|
data = zlib.decompress(data)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
ct = headers.get("Content-Type", "") or ""
|
||||||
|
return data, ct
|
||||||
|
|
||||||
|
def fetch(u, timeout=(15, 60)):
|
||||||
|
for attempt in range(3):
|
||||||
|
try:
|
||||||
|
return http_get(u, timeout=timeout[1])
|
||||||
|
except HTTPError as e:
|
||||||
|
if e.code in (400, 401, 403, 404, 410):
|
||||||
|
raise
|
||||||
|
if attempt == 2:
|
||||||
|
raise
|
||||||
|
time.sleep(2 * (attempt + 1))
|
||||||
|
except Exception:
|
||||||
|
if attempt == 2:
|
||||||
|
raise
|
||||||
|
time.sleep(2 * (attempt + 1))
|
||||||
|
|
||||||
|
def decode(data, ct):
|
||||||
|
"""字节 -> 文本,尽力识别编码。"""
|
||||||
|
enc = None
|
||||||
|
m = re.search(r'charset=["\']?([\w\-]+)', ct, re.I)
|
||||||
|
if m:
|
||||||
|
enc = m.group(1)
|
||||||
|
if not enc:
|
||||||
|
head = data[:4096]
|
||||||
|
m = re.search(br'<meta[^>]+charset=["\']?([\w\-]+)', head, re.I)
|
||||||
|
if m:
|
||||||
|
enc = m.group(1).decode("ascii", "ignore")
|
||||||
|
if not enc and data.startswith(b"\xef\xbb\xbf"):
|
||||||
|
enc = "utf-8-sig"
|
||||||
|
if not enc:
|
||||||
|
enc = "utf-8"
|
||||||
|
for e in (enc, "utf-8", "gbk", "gb18030", "latin-1"):
|
||||||
|
try:
|
||||||
|
return data.decode(e)
|
||||||
|
except Exception:
|
||||||
|
continue
|
||||||
|
return data.decode("latin-1", "replace")
|
||||||
|
|
||||||
|
def download_file(u, kind):
|
||||||
|
"""下载二进制资源/附件,返回相对路径。"""
|
||||||
|
if skip_asset(u):
|
||||||
|
return None
|
||||||
|
rel = local_path(u, is_page=False)
|
||||||
|
fp = os.path.join(OUT, rel)
|
||||||
|
with LOCK:
|
||||||
|
if u in manifest and manifest[u].get("status") == "ok" and os.path.exists(fp):
|
||||||
|
return rel
|
||||||
|
manifest[u] = {"path": rel, "type": kind, "status": "pending"}
|
||||||
|
save_manifest()
|
||||||
|
try:
|
||||||
|
data, ct = http_get(u)
|
||||||
|
os.makedirs(os.path.dirname(fp), exist_ok=True)
|
||||||
|
with open(fp, "wb") as f:
|
||||||
|
f.write(data)
|
||||||
|
# CSS: 改写 url() 引用为本地路径
|
||||||
|
if kind == "asset" and (rel.lower().endswith(".css") or "css" in ct):
|
||||||
|
try:
|
||||||
|
new_css = css_urls(data.decode("utf-8", "replace"), u)
|
||||||
|
with open(fp, "w", encoding="utf-8") as f:
|
||||||
|
f.write(new_css)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
with LOCK:
|
||||||
|
manifest[u] = {"path": rel, "type": kind, "status": "ok",
|
||||||
|
"size": len(data), "ct": ct}
|
||||||
|
save_manifest()
|
||||||
|
return rel
|
||||||
|
except HTTPError as e:
|
||||||
|
with LOCK:
|
||||||
|
failed.append((u, str(e)))
|
||||||
|
manifest[u] = {"path": rel, "type": kind,
|
||||||
|
"status": "dead" if e.code in (404, 410) else "failed", "err": str(e)[:200]}
|
||||||
|
save_manifest()
|
||||||
|
if u not in failed_logged:
|
||||||
|
failed_logged.add(u)
|
||||||
|
log(f" [FAIL] {kind} {u} : {e}")
|
||||||
|
return None
|
||||||
|
except Exception as e:
|
||||||
|
with LOCK:
|
||||||
|
failed.append((u, str(e)))
|
||||||
|
manifest[u] = {"path": rel, "type": kind, "status": "failed", "err": str(e)[:200]}
|
||||||
|
save_manifest()
|
||||||
|
if u not in failed_logged:
|
||||||
|
failed_logged.add(u)
|
||||||
|
log(f" [FAIL] {kind} {u} : {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def css_urls(css, css_url):
|
||||||
|
def rep(m):
|
||||||
|
raw = m.group(1).strip().strip("'\"")
|
||||||
|
if raw.startswith(("data:", "javascript:", "#")):
|
||||||
|
return m.group(0)
|
||||||
|
if raw.startswith("//"):
|
||||||
|
absu = "http:" + raw
|
||||||
|
else:
|
||||||
|
absu = urljoin(css_url, raw)
|
||||||
|
rel = download_file(absu, "asset")
|
||||||
|
if rel:
|
||||||
|
from_dir = os.path.dirname(local_path(css_url, is_page=False))
|
||||||
|
rr = os.path.relpath(rel, from_dir).replace("\\", "/")
|
||||||
|
return f"url({rr})"
|
||||||
|
return m.group(0)
|
||||||
|
return re.sub(r"url\(\s*(.*?)\s*\)", rep, css, flags=re.I | re.S)
|
||||||
|
|
||||||
|
def process_page(u, data, ct):
|
||||||
|
html = decode(data, ct)
|
||||||
|
page_rel = local_path(u, is_page=True)
|
||||||
|
page_dir = os.path.dirname(page_rel)
|
||||||
|
|
||||||
|
# base 标签:用于解析相对链接,随后删除
|
||||||
|
base_for_resolve = u
|
||||||
|
m = re.search(r'<base\b[^>]*href\s*=\s*(["\'])(.*?)\1', html, re.I | re.S)
|
||||||
|
if m:
|
||||||
|
base_for_resolve = urljoin(u, m.group(2).strip())
|
||||||
|
html = re.sub(r'<base\b[^>]*/?>', '', html, flags=re.I)
|
||||||
|
|
||||||
|
new_pages, atts, assets = [], [], []
|
||||||
|
|
||||||
|
def to_local(absu, is_page):
|
||||||
|
rel = local_path(absu, is_page=is_page)
|
||||||
|
return os.path.relpath(rel, page_dir).replace("\\", "/")
|
||||||
|
|
||||||
|
def handle_href(raw):
|
||||||
|
v = raw.strip()
|
||||||
|
if not v or v.startswith(("#", "javascript:", "mailto:", "tel:", "data:", "about:")):
|
||||||
|
return raw
|
||||||
|
frag = ""
|
||||||
|
if "#" in v:
|
||||||
|
v, _, fr = v.partition("#")
|
||||||
|
frag = "#" + fr
|
||||||
|
absu = norm_url(urljoin(base_for_resolve, v))
|
||||||
|
if not absu:
|
||||||
|
return raw
|
||||||
|
host = (urlparse(absu).netloc or "").lower()
|
||||||
|
if is_attachment(absu):
|
||||||
|
atts.append(absu); rel = local_path(absu, False)
|
||||||
|
elif is_static(absu):
|
||||||
|
assets.append(absu); rel = local_path(absu, False)
|
||||||
|
elif host in PAGE_HOSTS:
|
||||||
|
new_pages.append(absu); rel = local_path(absu, True)
|
||||||
|
else:
|
||||||
|
ext_html_seen.add(absu); return raw
|
||||||
|
return to_local(absu, is_page=not (is_attachment(absu) or is_static(absu))) + frag
|
||||||
|
|
||||||
|
def handle_src(raw):
|
||||||
|
v = raw.strip()
|
||||||
|
if not v or v.startswith(("data:", "javascript:", "about:")):
|
||||||
|
return raw
|
||||||
|
absu = norm_url(urljoin(base_for_resolve, v))
|
||||||
|
if not absu:
|
||||||
|
return raw
|
||||||
|
assets.append(absu)
|
||||||
|
return to_local(absu, False)
|
||||||
|
|
||||||
|
# href / src / data / poster 属性
|
||||||
|
def sub_attr(html, attr, handler):
|
||||||
|
pat = re.compile(r'\b(' + attr + r')\s*=\s*(["\'])(.*?)\2', re.I | re.S)
|
||||||
|
return pat.sub(lambda m: m.group(1) + "=" + m.group(2) + handler(m.group(3)) + m.group(2), html)
|
||||||
|
|
||||||
|
html = sub_attr(html, r'href', handle_href)
|
||||||
|
html = sub_attr(html, r'src', handle_src)
|
||||||
|
html = sub_attr(html, r'data', handle_src)
|
||||||
|
html = sub_attr(html, r'poster', handle_src)
|
||||||
|
|
||||||
|
# srcset(逗号分隔的 URL + 描述符列表)
|
||||||
|
def sub_srcset(html):
|
||||||
|
def rep(m):
|
||||||
|
parts = []
|
||||||
|
for part in m.group(3).split(","):
|
||||||
|
part = part.strip()
|
||||||
|
if not part:
|
||||||
|
continue
|
||||||
|
toks = part.split()
|
||||||
|
su = toks[0]
|
||||||
|
rest = " ".join(toks[1:])
|
||||||
|
newu = handle_src(su)
|
||||||
|
parts.append(newu + (" " + rest if rest else ""))
|
||||||
|
return m.group(1) + "=" + m.group(2) + ", ".join(parts) + m.group(2)
|
||||||
|
pat = re.compile(r'\b(srcset)\s*=\s*(["\'])(.*?)\2', re.I | re.S)
|
||||||
|
return pat.sub(rep, html)
|
||||||
|
html = sub_srcset(html)
|
||||||
|
|
||||||
|
# data-* 属性:仅提取 URL 用于发现页面,不改写(避免破坏 JS)
|
||||||
|
for m in re.finditer(r'\b(data-[a-z0-9_-]+)\s*=\s*(["\'])(.*?)\2', html, re.I | re.S):
|
||||||
|
v = m.group(3).strip()
|
||||||
|
if not (v.startswith("/") or v.startswith("http") or re.search(r"\.(html?|php|cfm|aspx|jsp)\b", v)):
|
||||||
|
continue
|
||||||
|
absu = norm_url(urljoin(base_for_resolve, v))
|
||||||
|
if not absu:
|
||||||
|
continue
|
||||||
|
host = (urlparse(absu).netloc or "").lower()
|
||||||
|
if host in PAGE_HOSTS and not is_attachment(absu) and not is_junk_page(absu):
|
||||||
|
new_pages.append(absu)
|
||||||
|
|
||||||
|
# 确保有 charset meta
|
||||||
|
if not re.search(r'<meta[^>]+charset', html, re.I):
|
||||||
|
m = re.search(r'<head\b[^>]*>', html, re.I)
|
||||||
|
if m:
|
||||||
|
html = html[:m.end()] + '<meta charset="utf-8">' + html[m.end():]
|
||||||
|
|
||||||
|
fp = os.path.join(OUT, page_rel)
|
||||||
|
os.makedirs(os.path.dirname(fp), exist_ok=True)
|
||||||
|
with open(fp, "w", encoding="utf-8") as f:
|
||||||
|
f.write(html)
|
||||||
|
manifest[u] = {"path": page_rel, "type": "page", "status": "ok", "size": len(data)}
|
||||||
|
save_manifest()
|
||||||
|
return new_pages, atts, assets
|
||||||
|
|
||||||
|
def main():
|
||||||
|
q = deque()
|
||||||
|
for u in load_q() + [norm_url(u) for u in START_URLS] + \
|
||||||
|
[u for u, v in manifest.items() if v.get("type") == "page" and v.get("status") in ("failed", "pending")]:
|
||||||
|
u = norm_url(u)
|
||||||
|
if u and u not in q and not is_junk_page(u):
|
||||||
|
q.append(u)
|
||||||
|
log(f"队列 {len(q)} 个页面待处理")
|
||||||
|
pages_done = 0
|
||||||
|
|
||||||
|
pend = [(u, manifest[u].get("type", "asset")) for u, v in manifest.items()
|
||||||
|
if v.get("type") in ("asset", "attachment") and v.get("status") in ("pending", "failed")]
|
||||||
|
if pend:
|
||||||
|
log(f"续传未完成文件 {len(pend)} 个")
|
||||||
|
for u, k in pend:
|
||||||
|
POOL.submit(download_file, u, k)
|
||||||
|
|
||||||
|
while q:
|
||||||
|
u = q.popleft()
|
||||||
|
if u in visited:
|
||||||
|
continue
|
||||||
|
visited.add(u)
|
||||||
|
if is_junk_page(u):
|
||||||
|
manifest[u] = {"type": "page", "status": "dead", "err": "junk"}
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
data, ct = fetch(u)
|
||||||
|
except HTTPError as e:
|
||||||
|
failed.append((u, str(e)))
|
||||||
|
manifest[u] = {"type": "page", "status": "dead" if e.code in (404, 410) else "failed", "err": str(e)[:200]}
|
||||||
|
save_manifest()
|
||||||
|
if u not in failed_logged:
|
||||||
|
failed_logged.add(u)
|
||||||
|
log(f"[FAIL] page {u} : {e}")
|
||||||
|
time.sleep(DELAY)
|
||||||
|
continue
|
||||||
|
except Exception as e:
|
||||||
|
failed.append((u, str(e)))
|
||||||
|
manifest[u] = {"type": "page", "status": "failed", "err": str(e)[:200]}
|
||||||
|
save_manifest()
|
||||||
|
if u not in failed_logged:
|
||||||
|
failed_logged.add(u)
|
||||||
|
log(f"[FAIL] page {u} : {e}")
|
||||||
|
time.sleep(DELAY)
|
||||||
|
continue
|
||||||
|
|
||||||
|
pth = urlparse(u).path.lower()
|
||||||
|
if "html" in ct.lower() or pth.endswith((".htm", ".html", ".cfm", ".php", ".aspx", ".jsp")):
|
||||||
|
try:
|
||||||
|
new_pages, atts, assets = process_page(u, data, ct)
|
||||||
|
pages_done += 1
|
||||||
|
for a in atts:
|
||||||
|
POOL.submit(download_file, a, "attachment")
|
||||||
|
for a in assets:
|
||||||
|
POOL.submit(download_file, a, "asset")
|
||||||
|
for p in new_pages:
|
||||||
|
if p not in visited and p not in q:
|
||||||
|
q.append(p)
|
||||||
|
save_q(q)
|
||||||
|
if pages_done % 25 == 0:
|
||||||
|
log(f"... 已处理 {pages_done} 页, 队列 {len(q)}, 文件 {len(manifest)}")
|
||||||
|
except Exception as e:
|
||||||
|
log(f"[ERR] parse {u}: {e}")
|
||||||
|
else:
|
||||||
|
download_file(u, "attachment" if is_attachment(u) else "asset")
|
||||||
|
|
||||||
|
if pages_done > MAX_PAGES:
|
||||||
|
log("达到页面数上限,停止")
|
||||||
|
break
|
||||||
|
time.sleep(DELAY)
|
||||||
|
|
||||||
|
POOL.shutdown(wait=True)
|
||||||
|
log("=" * 60)
|
||||||
|
log(f"完成。页面 {pages_done} 个,manifest 条目 {len(manifest)} 个")
|
||||||
|
types = {}
|
||||||
|
for v in manifest.values():
|
||||||
|
types[v.get("type", "?")] = types.get(v.get("type", "?"), 0) + 1
|
||||||
|
log("类型统计:", types)
|
||||||
|
if failed:
|
||||||
|
log(f"失败 {len(failed)} 个:")
|
||||||
|
for u, e in failed:
|
||||||
|
log(" ", u, "|", e)
|
||||||
|
if ext_html_seen:
|
||||||
|
log(f"未跟进的站外 HTML 链接 {len(ext_html_seen)} 个 (示例):")
|
||||||
|
for u in list(ext_html_seen)[:10]:
|
||||||
|
log(" ", u)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
log(f"=== 开始镜像 {TARGET} @ {time.strftime('%Y-%m-%d %H:%M:%S')} ===")
|
||||||
|
main()
|
||||||
1
blog_mirror/queue.json
Normal file
1
blog_mirror/queue.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
["http://171.80.3.206:39897/assets/vendor-vue-DiG09V7Q.js", "http://171.80.3.206:39897/assets/vendor-i18n-F92pr2wT.js", "http://171.80.3.206:39897/assets/vendor-misc-CbSuWkr5.js", "http://171.80.3.206:39897/assets/vendor-misc-DB0Q8XAf.css", "http://171.80.3.206:39897/assets/index-Dk4t2Wci.css"]
|
||||||
68
blog_mirror/run.bat
Normal file
68
blog_mirror/run.bat
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
@echo off
|
||||||
|
setlocal
|
||||||
|
chcp 65001 >nul
|
||||||
|
set PYTHONIOENCODING=utf-8
|
||||||
|
cd /d "%~dp0"
|
||||||
|
|
||||||
|
echo ============================================
|
||||||
|
echo Website Mirror Crawler
|
||||||
|
echo Target: http://171.80.3.206:39897/
|
||||||
|
echo ============================================
|
||||||
|
echo.
|
||||||
|
|
||||||
|
set "PY="
|
||||||
|
|
||||||
|
python --version >nul 2>nul
|
||||||
|
if not errorlevel 1 (
|
||||||
|
set "PY=python"
|
||||||
|
goto :found
|
||||||
|
)
|
||||||
|
|
||||||
|
py -3 --version >nul 2>nul
|
||||||
|
if not errorlevel 1 (
|
||||||
|
set "PY=py -3"
|
||||||
|
goto :found
|
||||||
|
)
|
||||||
|
|
||||||
|
python3 --version >nul 2>nul
|
||||||
|
if not errorlevel 1 (
|
||||||
|
set "PY=python3"
|
||||||
|
goto :found
|
||||||
|
)
|
||||||
|
|
||||||
|
if exist "C:\Users\ruigu\AppData\Local\Programs\Python\Python310\python.exe" (
|
||||||
|
set "PY=C:\Users\ruigu\AppData\Local\Programs\Python\Python310\python.exe"
|
||||||
|
goto :found
|
||||||
|
)
|
||||||
|
|
||||||
|
echo [ERROR] No Python found.
|
||||||
|
echo Install Python 3.8+ from https://www.python.org/downloads/
|
||||||
|
echo During install, check the box "Add Python to PATH".
|
||||||
|
echo Then double-click this file again.
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
|
||||||
|
:found
|
||||||
|
echo Using Python: %PY%
|
||||||
|
echo.
|
||||||
|
|
||||||
|
echo [1/3] Checking dependencies...
|
||||||
|
%PY% -c "import requests, bs4" >nul 2>nul
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo [1/3] Installing requests and beautifulsoup4 ...
|
||||||
|
%PY% -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests beautifulsoup4
|
||||||
|
) else (
|
||||||
|
echo [1/3] Dependencies OK
|
||||||
|
)
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo [2/3] Crawling site ... this may take minutes. Do NOT close this window.
|
||||||
|
echo.
|
||||||
|
%PY% -u mirror.py http://171.80.3.206:39897/
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo [3/3] Done! Offline copy is here:
|
||||||
|
echo %~dp0mirror\171.80.3.206_39897\
|
||||||
|
echo Open index.html inside that folder with your browser.
|
||||||
|
echo.
|
||||||
|
pause
|
||||||
37
blog_mirror/一键抓取.bat
Normal file
37
blog_mirror/一键抓取.bat
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
@echo off
|
||||||
|
chcp 65001 >nul
|
||||||
|
cd /d "%~dp0"
|
||||||
|
|
||||||
|
echo ============================================
|
||||||
|
echo 网站镜像抓取脚本
|
||||||
|
echo 目标: http://171.80.3.206:39897/
|
||||||
|
echo ============================================
|
||||||
|
echo.
|
||||||
|
|
||||||
|
where python >nul 2>nul
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo [错误] 没找到 python,请先安装 Python 3.8+
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
echo [1/3] 检查依赖...
|
||||||
|
python -c "import requests, bs4" >nul 2>nul
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo [1/3] 缺少依赖,正在安装 requests beautifulsoup4 ...
|
||||||
|
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests beautifulsoup4
|
||||||
|
) else (
|
||||||
|
echo [1/3] 依赖已就绪
|
||||||
|
)
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo [2/3] 开始抓取(会持续几分钟到几十分钟,请勿关闭窗口)...
|
||||||
|
echo.
|
||||||
|
python -u mirror.py http://171.80.3.206:39897/
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo [3/3] 完成!离线站点在 mirror 目录下:
|
||||||
|
echo %~dp0mirror\171.80.3.206_39897\
|
||||||
|
echo 入口文件:用浏览器打开上面的 index.html
|
||||||
|
echo.
|
||||||
|
pause
|
||||||
3
catalog-masters/KC/_probe_display_api.bat
Normal file
3
catalog-masters/KC/_probe_display_api.bat
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
@echo off
|
||||||
|
cd /d "%~dp0"
|
||||||
|
"C:\Program Files\Siemens\NX2506\NXBIN\run_journal.exe" "%~dp0..\..\sample-data\tools\probe-display-api.vb"
|
||||||
3
catalog-masters/KC/_probe_selection.bat
Normal file
3
catalog-masters/KC/_probe_selection.bat
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
@echo off
|
||||||
|
cd /d "%~dp0"
|
||||||
|
"C:\Program Files\Siemens\NX2506\NXBIN\run_journal.exe" "%~dp0..\..\sample-data\tools\probe-selection.vb"
|
||||||
13
catalog-masters/KC/_probe_ugconvert.bat
Normal file
13
catalog-masters/KC/_probe_ugconvert.bat
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
@echo off
|
||||||
|
cd /d "%~dp0"
|
||||||
|
echo ==== ug_convert_part.exe -help ====
|
||||||
|
"C:\Program Files\Siemens\NX2506\NXBIN\ug_convert_part.exe" -help 2>&1
|
||||||
|
echo.
|
||||||
|
echo ==== ug_convert_part.exe (no args) ====
|
||||||
|
"C:\Program Files\Siemens\NX2506\NXBIN\ug_convert_part.exe" 2>&1
|
||||||
|
echo.
|
||||||
|
echo ==== ugtopv.exe (no args) ====
|
||||||
|
"C:\Program Files\Siemens\NX2506\NXBIN\ugtopv.exe" 2>&1
|
||||||
|
echo.
|
||||||
|
echo ==== step214ug.exe (no args) ====
|
||||||
|
"C:\Program Files\Siemens\NX2506\NXBIN\step214ug.exe" 2>&1
|
||||||
3
catalog-masters/KC/_run_rebuild.bat
Normal file
3
catalog-masters/KC/_run_rebuild.bat
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
@echo off
|
||||||
|
cd /d "%~dp0"
|
||||||
|
"C:\Program Files\Siemens\NX2506\NXBIN\run_journal.exe" "%~dp0..\..\sample-data\tools\rebuild-verify-master.vb"
|
||||||
3
catalog-masters/KC/_test_display_part.bat
Normal file
3
catalog-masters/KC/_test_display_part.bat
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
@echo off
|
||||||
|
cd /d "%~dp0"
|
||||||
|
"C:\Program Files\Siemens\NX2506\NXBIN\run_journal.exe" "%~dp0..\..\sample-data\tools\test-display-part.vb"
|
||||||
3
catalog-masters/KC/_test_display_state.bat
Normal file
3
catalog-masters/KC/_test_display_state.bat
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
@echo off
|
||||||
|
cd /d "%~dp0"
|
||||||
|
"C:\Program Files\Siemens\NX2506\NXBIN\run_journal.exe" "%~dp0..\..\sample-data\tools\test-display-state.vb"
|
||||||
3
catalog-masters/KC/_test_existingpart.bat
Normal file
3
catalog-masters/KC/_test_existingpart.bat
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
@echo off
|
||||||
|
cd /d "%~dp0"
|
||||||
|
"C:\Program Files\Siemens\NX2506\NXBIN\run_journal.exe" "%~dp0..\..\sample-data\tools\test-existingpart.vb"
|
||||||
3
catalog-masters/KC/_test_fix_flags.bat
Normal file
3
catalog-masters/KC/_test_fix_flags.bat
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
@echo off
|
||||||
|
cd /d "%~dp0"
|
||||||
|
"C:\Program Files\Siemens\NX2506\NXBIN\run_journal.exe" "%~dp0..\..\sample-data\tools\test-fix-flags.vb"
|
||||||
20
catalog-masters/KC/_test_iges_export.bat
Normal file
20
catalog-masters/KC/_test_iges_export.bat
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
@echo off
|
||||||
|
cd /d "%~dp0"
|
||||||
|
echo ==== iges.exe (no args) usage ====
|
||||||
|
"C:\Program Files\Siemens\NX2506\NXBIN\iges.exe" 2>&1
|
||||||
|
echo.
|
||||||
|
echo ==== iges.exe: export KC_master.prt to IGES ====
|
||||||
|
"C:\Program Files\Siemens\NX2506\NXBIN\iges.exe" "KC_master.prt" o="E3_export.igs" l="E3_export.log"
|
||||||
|
echo exit code = %ERRORLEVEL%
|
||||||
|
echo.
|
||||||
|
if exist "E3_export.igs" (
|
||||||
|
dir "E3_export.igs"
|
||||||
|
) else (
|
||||||
|
echo E3_export.igs NOT created
|
||||||
|
)
|
||||||
|
echo.
|
||||||
|
if exist "E3_export.log" (
|
||||||
|
findstr /C:"solid" /C:"Total" /C:"Body" "E3_export.log"
|
||||||
|
) else (
|
||||||
|
echo no log file
|
||||||
|
)
|
||||||
19
catalog-masters/KC/_test_step214ug_export.bat
Normal file
19
catalog-masters/KC/_test_step214ug_export.bat
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
@echo off
|
||||||
|
cd /d "%~dp0"
|
||||||
|
echo ==== step214ug.exe: export KC_master.prt to STEP ====
|
||||||
|
"C:\Program Files\Siemens\NX2506\NXBIN\step214ug.exe" "KC_master.prt" o="E2_export.stp" l="E2_export.log"
|
||||||
|
echo exit code = %ERRORLEVEL%
|
||||||
|
echo.
|
||||||
|
echo ==== output file ====
|
||||||
|
if exist "E2_export.stp" (
|
||||||
|
dir "E2_export.stp"
|
||||||
|
) else (
|
||||||
|
echo E2_export.stp NOT created
|
||||||
|
)
|
||||||
|
echo.
|
||||||
|
echo ==== log tail (solid count) ====
|
||||||
|
if exist "E2_export.log" (
|
||||||
|
findstr /C:"solid" /C:"Total" "E2_export.log"
|
||||||
|
) else (
|
||||||
|
echo no log file
|
||||||
|
)
|
||||||
7
catalog-masters/KC/check-master.txt
Normal file
7
catalog-masters/KC/check-master.txt
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
特征数=1
|
||||||
|
实体数=0
|
||||||
|
表达式 bore=32
|
||||||
|
表达式 stroke=10
|
||||||
|
表达式 magOn=0
|
||||||
|
表达式 mountIdx=0
|
||||||
|
IsModified=False
|
||||||
6
catalog-masters/KC/debug-export.txt
Normal file
6
catalog-masters/KC/debug-export.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
CWD=W:\团队文件-TeamCenter\airtac_0602_2026_v11sp5_world_version\airtac_0602_2026_v11sp5_world_version\OnebotCatalog\catalog-masters\KC masterExists=True
|
||||||
|
Work=W:\团队文件-TeamCenter\airtac_0602_2026_v11sp5_world_version\airtac_0602_2026_v11sp5_world_version\OnebotCatalog\catalog-masters\KC\KC_master.prt
|
||||||
|
EditExp+Update OK
|
||||||
|
实体数=2
|
||||||
|
引用集: MODEL
|
||||||
|
STEP 导出失败: FileNotFoundException / 未能找到文件“W:\团队文件-TeamCenter\airtac_0602_2026_v11sp5_world_version\airtac_0602_2026_v11sp5_world_version\OnebotCatalog\catalog-masters\KC\dbg_out\DBG.stp”。
|
||||||
4
catalog-masters/KC/debug-save.txt
Normal file
4
catalog-masters/KC/debug-save.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
CWD=W:\团队文件-TeamCenter\airtac_0602_2026_v11sp5_world_version\airtac_0602_2026_v11sp5_world_version\OnebotCatalog\catalog-masters\KC
|
||||||
|
exists=True
|
||||||
|
basePart1=W:\团队文件-TeamCenter\airtac_0602_2026_v11sp5_world_version\airtac_0602_2026_v11sp5_world_version\OnebotCatalog\catalog-masters\KC\KC_master.prt
|
||||||
|
Work=NULL
|
||||||
384
catalog-masters/KC/probe-selection.txt
Normal file
384
catalog-masters/KC/probe-selection.txt
Normal file
@@ -0,0 +1,384 @@
|
|||||||
|
StepCreator.ExportSelectionBlock type = NXOpen.ObjectSelector
|
||||||
|
=== NXOpen.ObjectSelector ===
|
||||||
|
ESB: 8 get_SelectionComp
|
||||||
|
ESB: 8 get_SelectionScope
|
||||||
|
ESB: 8 set_SelectionScope
|
||||||
|
ESB: 8 Commit
|
||||||
|
ESB: 8 Destroy
|
||||||
|
ESB: 8 GetCommittedObjects
|
||||||
|
ESB: 8 GetObject
|
||||||
|
ESB: 8 ShowResults
|
||||||
|
ESB: 8 get_PreviewBuilder
|
||||||
|
ESB: 8 Validate
|
||||||
|
ESB: 8 get_Tag
|
||||||
|
ESB: 8 ToString
|
||||||
|
ESB: 8 PrintTestData
|
||||||
|
ESB: 8 PrintTestData
|
||||||
|
ESB: 8 get_NextSink
|
||||||
|
ESB: 8 SyncProcessMessage
|
||||||
|
ESB: 8 AsyncProcessMessage
|
||||||
|
ESB: 8 GetLifetimeService
|
||||||
|
ESB: 8 InitializeLifetimeService
|
||||||
|
ESB: 8 CreateObjRef
|
||||||
|
ESB: 8 Equals
|
||||||
|
ESB: 8 GetHashCode
|
||||||
|
ESB: 8 GetType
|
||||||
|
ESB: 16 SelectionComp
|
||||||
|
ESB: 16 SelectionScope
|
||||||
|
ESB: 16 PreviewBuilder
|
||||||
|
ESB: 16 Tag
|
||||||
|
ESB: 16 NextSink
|
||||||
|
SELB [NULL]
|
||||||
|
=== NXOpen.ScCollector ===
|
||||||
|
SCCO: 8 GetCustomRule
|
||||||
|
SCCO: 8 AddRules
|
||||||
|
SCCO: 8 AskRulesAndCollectedEntities
|
||||||
|
SCCO: 8 SetInterpartNonFeatureReferenceMode
|
||||||
|
SCCO: 8 ReplaceRules
|
||||||
|
SCCO: 8 ReplaceRules
|
||||||
|
SCCO: 8 Destroy
|
||||||
|
SCCO: 8 GetObjects
|
||||||
|
SCCO: 8 GetRules
|
||||||
|
SCCO: 8 SetInterpart
|
||||||
|
SCCO: 8 RemoveRule
|
||||||
|
SCCO: 8 RemoveRules
|
||||||
|
SCCO: 8 CopyCollector
|
||||||
|
SCCO: 8 GetMultiComponent
|
||||||
|
SCCO: 8 SetMultiComponent
|
||||||
|
SCCO: 8 GetNonFeatureMode
|
||||||
|
SCCO: 8 SetNonFeatureMode
|
||||||
|
SCCO: 8 GetObjectsSortedById
|
||||||
|
SCCO: 8 AddEvaluationFilter
|
||||||
|
SCCO: 8 RemoveEvaluationFilter
|
||||||
|
SCCO: 8 IsEvaluationFilterEnabled
|
||||||
|
SCCO: 8 SetAllowRefCurves
|
||||||
|
SCCO: 8 GetAllowedWireframeType
|
||||||
|
SCCO: 8 SetAllowedWireframeType
|
||||||
|
SCCO: 8 RemoveMissingParents
|
||||||
|
SCCO: 8 Blank
|
||||||
|
SCCO: 8 Unblank
|
||||||
|
SCCO: 8 Highlight
|
||||||
|
SCCO: 8 Unhighlight
|
||||||
|
SCCO: 8 SetNameLocation
|
||||||
|
SCCO: 8 RedisplayObject
|
||||||
|
SCCO: 8 RemoveViewDependency
|
||||||
|
SCCO: 8 get_Color
|
||||||
|
SCCO: 8 set_Color
|
||||||
|
SCCO: 8 get_IsBlanked
|
||||||
|
SCCO: 8 get_Layer
|
||||||
|
SCCO: 8 set_Layer
|
||||||
|
SCCO: 8 get_LineFont
|
||||||
|
SCCO: 8 set_LineFont
|
||||||
|
SCCO: 8 get_LineWidth
|
||||||
|
SCCO: 8 set_LineWidth
|
||||||
|
SCCO: 8 get_NameLocation
|
||||||
|
SCCO: 8 SetAttribute
|
||||||
|
SCCO: 8 SetAttribute
|
||||||
|
SCCO: 8 SetTimeAttribute
|
||||||
|
SCCO: 8 SetTimeAttribute
|
||||||
|
SCCO: 8 GetIntegerAttribute
|
||||||
|
SCCO: 8 GetRealAttribute
|
||||||
|
SCCO: 8 GetStringAttribute
|
||||||
|
SCCO: 8 GetTimeAttribute
|
||||||
|
SCCO: 8 GetReferenceAttribute
|
||||||
|
SCCO: 8 DeleteAttributeByTypeAndTitle
|
||||||
|
SCCO: 8 DeleteAttributeByTypeAndTitle
|
||||||
|
SCCO: 8 SetReferenceAttribute
|
||||||
|
SCCO: 8 SetReferenceAttribute
|
||||||
|
SCCO: 8 GetAttributeTitlesByType
|
||||||
|
SCCO: 8 GetUserAttributesAsStrings
|
||||||
|
SCCO: 8 FindObject
|
||||||
|
SCCO: 8 Print
|
||||||
|
SCCO: 8 SetName
|
||||||
|
SCCO: 8 get_IsOccurrence
|
||||||
|
SCCO: 8 get_JournalIdentifier
|
||||||
|
SCCO: 8 get_Name
|
||||||
|
SCCO: 8 get_OwningComponent
|
||||||
|
SCCO: 8 get_OwningPart
|
||||||
|
SCCO: 8 get_Prototype
|
||||||
|
SCCO: 8 GetTimeUserAttribute
|
||||||
|
SCCO: 8 GetComputationalTimeUserAttribute
|
||||||
|
SCCO: 8 GetUserAttributes
|
||||||
|
SCCO: 8 GetUserAttributes
|
||||||
|
SCCO: 8 GetUserAttributes
|
||||||
|
SCCO: 8 GetUserAttributeAsString
|
||||||
|
SCCO: 8 DeleteUserAttributes
|
||||||
|
SCCO: 8 DeleteUserAttribute
|
||||||
|
SCCO: 8 DeleteUserAttributes
|
||||||
|
SCCO: 8 SetUserAttributeLock
|
||||||
|
SCCO: 8 GetUserAttributeLock
|
||||||
|
SCCO: 8 GetUserAttributeSourceObjects
|
||||||
|
SCCO: 8 SetPdmReferenceAttribute
|
||||||
|
SCCO: 8 GetPdmReferenceAttributeValue
|
||||||
|
SCCO: 8 GetUserAttribute
|
||||||
|
SCCO: 8 GetUserAttributes
|
||||||
|
SCCO: 8 DeleteAllAttributesByType
|
||||||
|
SCCO: 8 DeleteAllAttributesByType
|
||||||
|
SCCO: 8 SetAttribute
|
||||||
|
SCCO: 8 SetAttribute
|
||||||
|
SCCO: 8 SetAttribute
|
||||||
|
SCCO: 8 SetAttribute
|
||||||
|
SCCO: 8 SetAttribute
|
||||||
|
SCCO: 8 SetAttribute
|
||||||
|
SCCO: 8 SetUserAttribute
|
||||||
|
SCCO: 8 SetUserAttribute
|
||||||
|
SCCO: 8 SetUserAttribute
|
||||||
|
SCCO: 8 SetUserAttribute
|
||||||
|
SCCO: 8 SetUserAttribute
|
||||||
|
SCCO: 8 SetTimeUserAttribute
|
||||||
|
SCCO: 8 SetTimeUserAttribute
|
||||||
|
SCCO: 8 SetBooleanUserAttribute
|
||||||
|
SCCO: 8 CreateAttributeIterator
|
||||||
|
SCCO: 8 HasUserAttribute
|
||||||
|
SCCO: 8 HasUserAttribute
|
||||||
|
SCCO: 8 GetUserAttributeCount
|
||||||
|
SCCO: 8 GetUserAttributeCount
|
||||||
|
SCCO: 8 GetUserAttributeCount
|
||||||
|
SCCO: 8 GetUserAttributeCount
|
||||||
|
SCCO: 8 GetUserAttributeSize
|
||||||
|
SCCO: 8 GetNextUserAttribute
|
||||||
|
SCCO: 8 GetUserAttribute
|
||||||
|
SCCO: 8 GetBooleanUserAttribute
|
||||||
|
SCCO: 8 GetIntegerUserAttribute
|
||||||
|
SCCO: 8 GetRealUserAttribute
|
||||||
|
SCCO: 8 GetStringUserAttribute
|
||||||
|
SCCO: 8 get_Tag
|
||||||
|
SCCO: 8 ToString
|
||||||
|
SCCO: 8 PrintTestData
|
||||||
|
SCCO: 8 PrintTestData
|
||||||
|
SCCO: 8 get_NextSink
|
||||||
|
SCCO: 8 SyncProcessMessage
|
||||||
|
SCCO: 8 AsyncProcessMessage
|
||||||
|
SCCO: 8 GetLifetimeService
|
||||||
|
SCCO: 8 InitializeLifetimeService
|
||||||
|
SCCO: 8 CreateObjRef
|
||||||
|
SCCO: 8 Equals
|
||||||
|
SCCO: 8 GetHashCode
|
||||||
|
SCCO: 8 GetType
|
||||||
|
SCCO: 16 Color
|
||||||
|
SCCO: 16 IsBlanked
|
||||||
|
SCCO: 16 Layer
|
||||||
|
SCCO: 16 LineFont
|
||||||
|
SCCO: 16 LineWidth
|
||||||
|
SCCO: 16 NameLocation
|
||||||
|
SCCO: 16 IsOccurrence
|
||||||
|
SCCO: 16 JournalIdentifier
|
||||||
|
SCCO: 16 Name
|
||||||
|
SCCO: 16 OwningComponent
|
||||||
|
SCCO: 16 OwningPart
|
||||||
|
SCCO: 16 Prototype
|
||||||
|
SCCO: 16 Tag
|
||||||
|
SCCO: 16 NextSink
|
||||||
|
SEL [NULL]
|
||||||
|
=== types containing Selection/Collector ===
|
||||||
|
T: NXOpen.ComponentReferenceCollector
|
||||||
|
T: NXOpen.ExpressionCollectorSet
|
||||||
|
T: NXOpen.ExpressionCollectorSetList
|
||||||
|
T: NXOpen.FacetCollector
|
||||||
|
T: NXOpen.FacetCollectorCollection
|
||||||
|
T: NXOpen.FacetSelectionRule
|
||||||
|
T: NXOpen.FacetSelectionRuleFactory
|
||||||
|
T: NXOpen.ScCollectorAllowTypes
|
||||||
|
T: NXOpen.ScCollector
|
||||||
|
T: NXOpen.ScCollectorCollection
|
||||||
|
T: NXOpen.ScCollectorList
|
||||||
|
T: NXOpen.ApparentChainingRuleSelection
|
||||||
|
T: NXOpen.SelectionIntentRule
|
||||||
|
T: NXOpen.SelectionIntentRuleOptions
|
||||||
|
T: NXOpen.SelectionMethod
|
||||||
|
T: NXOpen.Weld.WeldSelectionType
|
||||||
|
T: NXOpen.Weld.CharacteristicsSelectionBuilder
|
||||||
|
T: NXOpen.Validate.SelectionAndPlacementBuilder
|
||||||
|
T: NXOpen.SIM.NcChannelSelectionData
|
||||||
|
T: NXOpen.Routing.RouteObjectCollector
|
||||||
|
T: NXOpen.Routing.RouteObjectCollectorList
|
||||||
|
T: NXOpen.PartFamily.InstanceSelectionCriteria
|
||||||
|
T: NXOpen.Motion.GlobalSelectionBuilder
|
||||||
|
T: NXOpen.GeometricUtilities.CollectorPairBuilder
|
||||||
|
T: NXOpen.GeometricUtilities.CollectorPairBuilderList
|
||||||
|
T: NXOpen.GeometricUtilities.CollectorPairListBuilder
|
||||||
|
T: NXOpen.GeometricUtilities.CrayonSelectionData
|
||||||
|
T: NXOpen.GeometricUtilities.FacePlaneSelectionBuilder
|
||||||
|
T: NXOpen.GeometricUtilities.FacePlaneSelectionBuilderCollection
|
||||||
|
T: NXOpen.GeometricUtilities.PointFacePlaneSelectionBuilder
|
||||||
|
T: NXOpen.GeometricUtilities.PointFacePlaneSelectionBuilderList
|
||||||
|
T: NXOpen.GeometricUtilities.SelectionList
|
||||||
|
T: NXOpen.GeometricUtilities.SelectionListList
|
||||||
|
T: NXOpen.GeometricUtilities.TwoExpressionsCollectorSet
|
||||||
|
T: NXOpen.GeometricUtilities.TwoExpressionsCollectorSetList
|
||||||
|
T: NXOpen.Features.CustomFeatureSelectionFilter
|
||||||
|
T: NXOpen.Features.SelectionProgramAdjacentBuilder
|
||||||
|
T: NXOpen.Features.SelectionProgramBetweenBuilder
|
||||||
|
T: NXOpen.Features.SelectionProgramClosestBuilder
|
||||||
|
T: NXOpen.Features.SelectionProgramCollection
|
||||||
|
T: NXOpen.Features.SelectionProgramDirectionFromBuilder
|
||||||
|
T: NXOpen.Features.SelectionProgramFarthestBuilder
|
||||||
|
T: NXOpen.Features.SelectionProgramFeatureBuilder
|
||||||
|
T: NXOpen.Features.SelectionProgramInsideBodyBuilder
|
||||||
|
T: NXOpen.Features.SelectionProgramIntersectedByBuilder
|
||||||
|
T: NXOpen.Features.SelectionProgramListItemBuilder
|
||||||
|
T: NXOpen.Features.SelectionProgramListItemBuilderList
|
||||||
|
T: NXOpen.Features.SelectionProgramMainBuilder
|
||||||
|
T: NXOpen.Features.SelectionProgramObjectTypeBuilder
|
||||||
|
T: NXOpen.Features.SelectionProgramPiercedByBuilder
|
||||||
|
T: NXOpen.Features.SelectionProgramRegionFacesBuilder
|
||||||
|
T: NXOpen.Features.ShipDesign.NodeSelectionBuilder
|
||||||
|
T: NXOpen.Drawings.DraftingComponentSelectionBuilder
|
||||||
|
T: NXOpen.Display.EntitySelectionPlane
|
||||||
|
T: NXOpen.DesignSimulation.ConstructionBodyCollector
|
||||||
|
T: NXOpen.CAE.SelectionRecipeCollection
|
||||||
|
T: NXOpen.CAE.AcousticsAndVibrationMeshSelectionComponentAccessor
|
||||||
|
T: NXOpen.CAE.AcousticsAndVibrationTransientMeshSelectionAccessor
|
||||||
|
T: NXOpen.CAE.AcousticsAndVibrationVatvSelectionComponent
|
||||||
|
T: NXOpen.CAE.AcousticsAndVibrationVatvSelectionComponentAccessor
|
||||||
|
T: NXOpen.CAE.AlternateFemRepSelectionRecipe
|
||||||
|
T: NXOpen.CAE.AttributeSelectionRecipe
|
||||||
|
T: NXOpen.CAE.BCSelectionDisplayBuilder
|
||||||
|
T: NXOpen.CAE.BoundingVolumeSelectionRecipe
|
||||||
|
T: NXOpen.CAE.CadGroupFeatureSelectionRecipe
|
||||||
|
T: NXOpen.CAE.CoordinateSelectionRecipe
|
||||||
|
T: NXOpen.CAE.DestinationCollectorBuilder
|
||||||
|
T: NXOpen.CAE.IMeshCollector
|
||||||
|
T: NXOpen.CAE.LabelRangeSelectionRecipe
|
||||||
|
T: NXOpen.CAE.MeshCollector
|
||||||
|
T: NXOpen.CAE.MeshCollectorBuilder
|
||||||
|
T: NXOpen.CAE.MeshCollectorDisplayDefaults
|
||||||
|
T: NXOpen.CAE.MeshCollectorDisplayDefaults0d
|
||||||
|
T: NXOpen.CAE.MeshCollectorDisplayDefaults1d
|
||||||
|
T: NXOpen.CAE.MeshCollectorDisplayDefaults2d
|
||||||
|
T: NXOpen.CAE.MeshCollectorDisplayDefaults3d
|
||||||
|
T: NXOpen.CAE.MeshCollectorOccurrence
|
||||||
|
T: NXOpen.CAE.MeshCollectorOccurrenceBuilder
|
||||||
|
T: NXOpen.CAE.MeshManualSweepBetweenListItemSelection
|
||||||
|
T: NXOpen.CAE.MeshManualSweepBetweenListItemSelectionList
|
||||||
|
T: NXOpen.CAE.OrderedSelection
|
||||||
|
T: NXOpen.CAE.PointSelectionRecipe
|
||||||
|
T: NXOpen.CAE.PostEntitiesSelection
|
||||||
|
T: NXOpen.CAE.PostMeshCollector
|
||||||
|
T: NXOpen.CAE.PostScenarioMessageCollector
|
||||||
|
T: NXOpen.CAE.PostScenarioMessageCollectorTable
|
||||||
|
T: NXOpen.CAE.PostScenarioSelectionCallbackContext
|
||||||
|
T: NXOpen.CAE.PostScenarioSelectionParameters
|
||||||
|
T: NXOpen.CAE.PostScenarioValueCollector
|
||||||
|
T: NXOpen.CAE.PostSelectionBuilder
|
||||||
|
T: NXOpen.CAE.PostSelectionEntity
|
||||||
|
T: NXOpen.CAE.PostSelectionEntityList
|
||||||
|
T: NXOpen.CAE.PostSelectionPreference
|
||||||
|
T: NXOpen.CAE.PostSmartSelectionManager
|
||||||
|
T: NXOpen.CAE.PreTestExciterSelectionControl
|
||||||
|
T: NXOpen.CAE.PreTestExciterSelectionDofSetCollection
|
||||||
|
T: NXOpen.CAE.PreTestSensorSelectionControl
|
||||||
|
T: NXOpen.CAE.PreTestSensorSelectionDofSetCollection
|
||||||
|
T: NXOpen.CAE.SelectionRecipe
|
||||||
|
T: NXOpen.CAE.SelectionRecipeDisplay
|
||||||
|
T: NXOpen.CAE.SingleLabelSelectionRecipe
|
||||||
|
T: NXOpen.CAE.SmartSelectionManager
|
||||||
|
T: NXOpen.CAE.ModelCheck.ISelectionBuilder
|
||||||
|
T: NXOpen.CAE.Magnet.GlobalSelectionBuilder
|
||||||
|
T: NXOpen.CAE.Connections.LMIERegionSelection
|
||||||
|
T: NXOpen.CAE.Connections.LMIESelectionRecipe
|
||||||
|
T: NXOpen.CAE.Connections.SelectionRecipeLocation
|
||||||
|
T: NXOpen.CAE.Connections.SeamWeldNodeSelectionMethod
|
||||||
|
T: NXOpen.CableRouter.CableRouterVisibilityFrameSelectionstate
|
||||||
|
T: NXOpen.CableRouter.Managed.CableRouterManagedVisibilityFrameSelectionstate
|
||||||
|
T: NXOpen.CableRouter.Managed.CableRouterManagedStructuralItemSelectionstate
|
||||||
|
T: NXOpen.Annotations.PmiInterpartSelectionBuilder
|
||||||
|
T: NXOpen.JtCreator+SelectionScope
|
||||||
|
T: NXOpen.SelectionIntentRule+RuleType
|
||||||
|
T: NXOpen.UserDefinedObjects.UserDefinedClass+AllowOwnedObjectSelection
|
||||||
|
T: NXOpen.UserDefinedObjects.UserDefinedClass+Selection
|
||||||
|
T: NXOpen.Tooling.ClearanceManagementBuilder+Selection
|
||||||
|
T: NXOpen.Tooling.CompDrawingBuilder+FilterSelection
|
||||||
|
T: NXOpen.Tooling.CompDrawingBuilder+ComponentTypeSelection
|
||||||
|
T: NXOpen.Tooling.FastenerAssy+SelectionTypeMethod
|
||||||
|
T: NXOpen.Tooling.FastenerAssy+SelectionObjectMethod
|
||||||
|
T: NXOpen.Tooling.HoleReportBuilder+EnumSelectionType
|
||||||
|
T: NXOpen.Tooling.RemoveHolesBuilder+SelectionTypes
|
||||||
|
T: NXOpen.Routing.CustomManager+SelectionType
|
||||||
|
T: NXOpen.Routing.StockBlockBuilder+StockSelectionSource
|
||||||
|
T: NXOpen.Routing.StockBlockBuilder+SpaceReservationSelectionSource
|
||||||
|
T: NXOpen.Preferences.PartObject+ColorSelection
|
||||||
|
T: NXOpen.GeometricUtilities.CrayonSelectionData+EntityData
|
||||||
|
T: NXOpen.GeometricUtilities.CrayonSelectionData+_EntityData
|
||||||
|
T: NXOpen.GeometricUtilities.FacePlaneSelectionBuilder+TrimObjectType
|
||||||
|
T: NXOpen.GeometricUtilities.PointFacePlaneSelectionBuilder+TrimObjectType
|
||||||
|
T: NXOpen.GeometricUtilities.ReduceSurfaceRadiusBuilder+FaceSelectionSpecification
|
||||||
|
T: NXOpen.GeometricUtilities.UVMapping.UVMeshManipulatorData+ObjectSelectionData
|
||||||
|
T: NXOpen.GeometricUtilities.UVMapping.UVMeshManipulatorData+_ObjectSelectionData
|
||||||
|
T: NXOpen.Features.ConvertToNxLatticeBuilder+SelectionTypes
|
||||||
|
T: NXOpen.Features.GridTargetBuilder+GridPointSelectionType
|
||||||
|
T: NXOpen.Features.SelectionProgramAdjacentBuilder+AdjacentTypes
|
||||||
|
T: NXOpen.Features.SelectionProgramListItemBuilder+ProximityTypes
|
||||||
|
T: NXOpen.Features.SelectionProgramListItemBuilder+InstructionTypes
|
||||||
|
T: NXOpen.Features.SelectionProgramMainBuilder+CollectionTypes
|
||||||
|
T: NXOpen.Features.SelectionProgramMainBuilder+SelectionIntentTypes
|
||||||
|
T: NXOpen.Features.SelectionProgramObjectTypeBuilder+ObjectTypes
|
||||||
|
T: NXOpen.Features.SelectionProgramObjectTypeBuilder+FindTypes
|
||||||
|
T: NXOpen.Features.VDVEnvironmentBuilder+OcularPointSelectionType
|
||||||
|
T: NXOpen.Features.Subdivision.CageManipulatorData+ObjectSelectionData
|
||||||
|
T: NXOpen.Features.Subdivision.CageManipulatorData+_ObjectSelectionData
|
||||||
|
T: NXOpen.Features.Subdivision.DrawCageData+SelectionData
|
||||||
|
T: NXOpen.Features.Subdivision.DrawCageData+_SelectionData
|
||||||
|
T: NXOpen.Features.Subdivision.SectionTubeData+SelectionData
|
||||||
|
T: NXOpen.Features.Subdivision.SectionTubeData+_SelectionData
|
||||||
|
T: NXOpen.Features.StructureDesign.EditStockBuilder+AlignMemberSelectionType
|
||||||
|
T: NXOpen.Features.StructureDesign.MemberBuilder+AlignMemberSelectionType
|
||||||
|
T: NXOpen.Features.ShipDesign.ConfigurableReportBuilder+SelectionMethods
|
||||||
|
T: NXOpen.Features.ShipDesign.EndCutBuilder+SelectionTypes
|
||||||
|
T: NXOpen.Features.ShipDesign.MaterialEstimationBuilder+SelectionMethods
|
||||||
|
T: NXOpen.Features.ShipDesign.ShipCoordinatesBuilder+Selection
|
||||||
|
T: NXOpen.Features.ShipDesign.VerifyPenetrationBuilder+SelectionDialogType
|
||||||
|
T: NXOpen.Features.ShipDesign.WeightAndCGBuilder+SelectionMethods
|
||||||
|
T: NXOpen.Drawings.DraftingComponentSelectionBuilder+Geometry
|
||||||
|
T: NXOpen.Display.SelPref+SelectionRule
|
||||||
|
T: NXOpen.Display.SelPref+SelectionRadius
|
||||||
|
T: NXOpen.Diagramming.FillBuilder+SelectionType
|
||||||
|
T: NXOpen.CAM.DPMItpBuilder+SelectionMethodOption
|
||||||
|
T: NXOpen.CAM.InspectionOperationBuilder+SelectionMethodType
|
||||||
|
T: NXOpen.CAM.OnMachineProbingBuilder+SelectionMethodType
|
||||||
|
T: NXOpen.CAM.Preferences+PartSelectionTypes
|
||||||
|
T: NXOpen.CAM.Preferences+BlankSelectionTypes
|
||||||
|
T: NXOpen.CAM.Preferences+CheckSelectionTypes
|
||||||
|
T: NXOpen.CAM.Preferences+CutAreaSelectionTypes
|
||||||
|
T: NXOpen.CAM.Preferences+WallSelectionTypes
|
||||||
|
T: NXOpen.CAM.Preferences+AuxiliaryFloorColorSelectionTypes
|
||||||
|
T: NXOpen.CAM.Preferences+SelectionTypes
|
||||||
|
T: NXOpen.CAM.RoughFinishTurningBuilder+RegionSelectionTypes
|
||||||
|
T: NXOpen.CAM.TurnFeatureGeomBuilder+CutRegionSelectionModes
|
||||||
|
T: NXOpen.CAE.AcousticsAndVibrationTransientMeshSelectionAccessor+IntermediateEntity
|
||||||
|
T: NXOpen.CAE.AcousticsAndVibrationVatvSelectionComponentAccessor+SelectionChoiceEnum
|
||||||
|
T: NXOpen.CAE.BoltBuilder+Selection
|
||||||
|
T: NXOpen.CAE.DirectionalityFieldBuilder+SubcaseSelectionType
|
||||||
|
T: NXOpen.CAE.DirectionalityFieldBuilder+SelectionType
|
||||||
|
T: NXOpen.CAE.DurSpecialistEvent+SelectionCriterionType
|
||||||
|
T: NXOpen.CAE.LoadCaseIterationSelectorBuilder+LoadCaseSelection
|
||||||
|
T: NXOpen.CAE.LoadCaseIterationSelectorBuilder+IterationSelection
|
||||||
|
T: NXOpen.CAE.MeshCollectorBuilder+ElementDimensionOption
|
||||||
|
T: NXOpen.CAE.MeshCollectorOccurrenceBuilder+CreateOverrideOption
|
||||||
|
T: NXOpen.CAE.ModelAndLoadPreProcessLoadExtrusionBuilder+SelectionTypeEnum
|
||||||
|
T: NXOpen.CAE.ModelAndLoadPreProcessMeshMappingDataBuilder+TargetSelectionTypeEnum
|
||||||
|
T: NXOpen.CAE.ModelAndLoadPreProcessMeshMappingDataBuilder+SourceSelectionTypeEnum
|
||||||
|
T: NXOpen.CAE.NodalForceReportBuilder+LoadcaseSelection
|
||||||
|
T: NXOpen.CAE.PostEntitiesSelection+Type
|
||||||
|
T: NXOpen.CAE.PostEntitiesSelection+ResultModelType
|
||||||
|
T: NXOpen.CAE.PostMeshCollector+CollectorType
|
||||||
|
T: NXOpen.CAE.PostScenarioDescriptorBuilder+OverrideDefaultSelectionCallback
|
||||||
|
T: NXOpen.CAE.PostScenarioDescriptorBuilder+_OverrideDefaultSelectionCallback
|
||||||
|
T: NXOpen.CAE.PostScenarioDescriptorBuilder+_PostScenarioDescriptorBuilderOverrideDefaultSelectionCallbackAdapter
|
||||||
|
T: NXOpen.CAE.PostSmartSelectionManager+EntityType
|
||||||
|
T: NXOpen.CAE.PostSmartSelectionManager+NMaxMinParameters
|
||||||
|
T: NXOpen.CAE.PostSmartSelectionManager+ResultRangeParameters
|
||||||
|
T: NXOpen.CAE.Result+InitialDeformationSelection
|
||||||
|
T: NXOpen.CAE.ResultMeasure+SubsetSelection
|
||||||
|
T: NXOpen.CAE.ResultProbeBuilder+LoadcaseSelection
|
||||||
|
T: NXOpen.CAE.ResultProbeBuilder+IterationSelection
|
||||||
|
T: NXOpen.CAE.ResultProbeBuilder+SelectionType
|
||||||
|
T: NXOpen.CAE.SMTDiagramsBuilder+Nodeselectionplanetype
|
||||||
|
T: NXOpen.CAE.SMTDiagramsBuilder+Restrictnodeselectionplaneoptions
|
||||||
|
T: NXOpen.CAE.StressLinearization+LcaseSelection
|
||||||
|
T: NXOpen.CAE.StressLinearization+ResultSelection
|
||||||
|
T: NXOpen.CAE.SurfaceCoatBuilder+SelectionMethod
|
||||||
|
T: NXOpen.CAE.PenetrationCheck.AddSetBuilder+SelectionTypeOptions
|
||||||
|
T: NXOpen.CAE.ModelCheck.AlignShellElementFirstEdgeBuilder+ElemSelectionMode
|
||||||
|
T: NXOpen.Assemblies.LoadInterpartDataBuilder+SelectionScopeType
|
||||||
|
T: NXOpen.Annotations.BoundaryBuilder+SelectionMethod
|
||||||
23
catalog-masters/KC/probe4.txt
Normal file
23
catalog-masters/KC/probe4.txt
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
Work=W:\团队文件-TeamCenter\airtac_0602_2026_v11sp5_world_version\airtac_0602_2026_v11sp5_world_version\OnebotCatalog\catalog-masters\KC\KC_master.prt
|
||||||
|
ExpressionCollection type: NXOpen.ExpressionCollection
|
||||||
|
EC: NXOpen.SuppressByExpressionBuilder CreateSuppressByExpressionBuilder()
|
||||||
|
EC: NXOpen.Expression CreateSystemExpressionFromReferenceString(System.String)
|
||||||
|
EC: NXOpen.InterpartExpressionsBuilder CreateInterpartExpressionsBuilder()
|
||||||
|
EC: NXOpen.ReplaceExpressionsBuilder CreateReplaceExpressionsBuilder()
|
||||||
|
EC: System.String CreateSystemName(System.String, System.String)
|
||||||
|
EC: NXOpen.Expression CreateWithUnits(System.String, NXOpen.Unit)
|
||||||
|
EC: NXOpen.Expression CreateSystemExpressionWithUnits(System.String, NXOpen.Unit)
|
||||||
|
EC: Void Edit(NXOpen.Expression, System.String)
|
||||||
|
EC: Void EditWithUnits(NXOpen.Expression, NXOpen.Unit, System.String)
|
||||||
|
EC: NXOpen.Expression Create(System.String)
|
||||||
|
EC: NXOpen.Expression CreateNumberExpression(System.String, NXOpen.Unit)
|
||||||
|
EC: NXOpen.Expression CreateSystemExpression(System.String)
|
||||||
|
EC: NXOpen.Expression CreateSystemNumberExpression(System.String, NXOpen.Unit)
|
||||||
|
EC: NXOpen.Expression CreateExpression(System.String, System.String)
|
||||||
|
EC: NXOpen.Expression CreateExpressionWithUnit(System.String, System.String, NXOpen.Unit)
|
||||||
|
EC: NXOpen.Expression CreateSystemExpression(System.String, System.String)
|
||||||
|
EC: NXOpen.Expression CreateSystemExpressionWithUnit(System.String, System.String, NXOpen.Unit)
|
||||||
|
EC: Void EditExpression(NXOpen.Expression, System.String)
|
||||||
|
EC: Void EditExpressionWithUnits(NXOpen.Expression, NXOpen.Unit, System.String)
|
||||||
|
EC: System.Runtime.Remoting.ObjRef CreateObjRef(System.Type)
|
||||||
|
UC: NXOpen.Unit FindObject(System.String)
|
||||||
49
catalog-masters/KC/probe5.txt
Normal file
49
catalog-masters/KC/probe5.txt
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
=== 含 ReferenceSet 的类型 ===
|
||||||
|
T: NXOpen.ReferenceSet
|
||||||
|
T: NXOpen.Tooling.FeatureReferenceSetBuilder
|
||||||
|
T: NXOpen.Preferences.ReferenceSetBehavior
|
||||||
|
T: NXOpen.Tooling.CompDrawingBuilder+ReferenceSet
|
||||||
|
T: NXOpen.RoutingCommon.ElbowCornerOptionBuilder+ReferenceSetType
|
||||||
|
T: NXOpen.MechanicalRouting.PlaceElbowsBuilder+ReferenceSetType
|
||||||
|
T: NXOpen.Assemblies.CreateNewComponentBuilder+ComponentReferenceSetType
|
||||||
|
T: NXOpen.Assemblies.DesignElementBuilder+ReferenceSetType
|
||||||
|
T: NXOpen.Assemblies.ReplaceComponentBuilder+ComponentReferenceSet
|
||||||
|
=== Part 成员 (Reference) ===
|
||||||
|
P: 8 get_ViewPreferences
|
||||||
|
P: 8 CreateReferenceSet
|
||||||
|
P: 8 DeleteReferenceSet
|
||||||
|
P: 8 GetAllReferenceSets
|
||||||
|
P: 8 get_Preferences
|
||||||
|
P: 8 get_ExternalFileReferenceManager
|
||||||
|
P: 8 get_LayoutStatePreferences
|
||||||
|
P: 8 GetReferenceAttribute
|
||||||
|
P: 8 SetReferenceAttribute
|
||||||
|
P: 8 SetReferenceAttribute
|
||||||
|
P: 8 SetPdmReferenceAttribute
|
||||||
|
P: 8 GetPdmReferenceAttributeValue
|
||||||
|
P: 16 ViewPreferences
|
||||||
|
P: 16 Preferences
|
||||||
|
P: 16 ExternalFileReferenceManager
|
||||||
|
P: 16 LayoutStatePreferences
|
||||||
|
=== BasePart 成员 (Reference) ===
|
||||||
|
B: 8 CreateReferenceSet
|
||||||
|
B: 8 DeleteReferenceSet
|
||||||
|
B: 8 GetAllReferenceSets
|
||||||
|
B: 8 get_Preferences
|
||||||
|
B: 8 get_ExternalFileReferenceManager
|
||||||
|
B: 8 get_LayoutStatePreferences
|
||||||
|
B: 8 GetReferenceAttribute
|
||||||
|
B: 8 SetReferenceAttribute
|
||||||
|
B: 8 SetReferenceAttribute
|
||||||
|
B: 8 SetPdmReferenceAttribute
|
||||||
|
B: 8 GetPdmReferenceAttributeValue
|
||||||
|
B: 16 Preferences
|
||||||
|
B: 16 ExternalFileReferenceManager
|
||||||
|
B: 16 LayoutStatePreferences
|
||||||
|
=== NXOpen.ReferenceSet 方法 ===
|
||||||
|
RS: AddObjectsToReferenceSet
|
||||||
|
RS: RemoveObjectsFromReferenceSet
|
||||||
|
RS: AskMembersInReferenceSet
|
||||||
|
RS: AskAllDirectMembers
|
||||||
|
RS: SetAddComponentsAutomatically
|
||||||
|
RS: GetAddComponentsAutomatically
|
||||||
70
catalog-masters/KC/probe6.txt
Normal file
70
catalog-masters/KC/probe6.txt
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
SI: 8 SaveSettings
|
||||||
|
SI: 8 get_FileOpenFlag
|
||||||
|
SI: 8 set_FileOpenFlag
|
||||||
|
SI: 8 get_FlattenAssembly
|
||||||
|
SI: 8 set_FlattenAssembly
|
||||||
|
SI: 8 get_ImportTo
|
||||||
|
SI: 8 set_ImportTo
|
||||||
|
SI: 8 get_ImportToTeamcenter
|
||||||
|
SI: 8 set_ImportToTeamcenter
|
||||||
|
SI: 8 get_LayerDefault
|
||||||
|
SI: 8 set_LayerDefault
|
||||||
|
SI: 8 get_ObjectTypes
|
||||||
|
SI: 8 get_Optimize
|
||||||
|
SI: 8 set_Optimize
|
||||||
|
SI: 8 get_SettingsFile
|
||||||
|
SI: 8 set_SettingsFile
|
||||||
|
SI: 8 get_SewSurfaces
|
||||||
|
SI: 8 set_SewSurfaces
|
||||||
|
SI: 8 get_SimplifyGeometry
|
||||||
|
SI: 8 set_SimplifyGeometry
|
||||||
|
SI: 8 get_SmoothBSurfaces
|
||||||
|
SI: 8 set_SmoothBSurfaces
|
||||||
|
SI: 8 GetMode
|
||||||
|
SI: 8 SetMode
|
||||||
|
SI: 8 get_InputFile
|
||||||
|
SI: 8 set_InputFile
|
||||||
|
SI: 8 get_OutputFile
|
||||||
|
SI: 8 set_OutputFile
|
||||||
|
SI: 8 get_ProcessHoldFlag
|
||||||
|
SI: 8 set_ProcessHoldFlag
|
||||||
|
SI: 8 Commit
|
||||||
|
SI: 8 Destroy
|
||||||
|
SI: 8 GetCommittedObjects
|
||||||
|
SI: 8 GetObject
|
||||||
|
SI: 8 ShowResults
|
||||||
|
SI: 8 get_PreviewBuilder
|
||||||
|
SI: 8 Validate
|
||||||
|
SI: 8 get_Tag
|
||||||
|
SI: 8 ToString
|
||||||
|
SI: 8 PrintTestData
|
||||||
|
SI: 8 PrintTestData
|
||||||
|
SI: 8 get_NextSink
|
||||||
|
SI: 8 SyncProcessMessage
|
||||||
|
SI: 8 AsyncProcessMessage
|
||||||
|
SI: 8 GetLifetimeService
|
||||||
|
SI: 8 InitializeLifetimeService
|
||||||
|
SI: 8 CreateObjRef
|
||||||
|
SI: 8 Equals
|
||||||
|
SI: 8 GetHashCode
|
||||||
|
SI: 8 GetType
|
||||||
|
SI: 16 FileOpenFlag
|
||||||
|
SI: 16 FlattenAssembly
|
||||||
|
SI: 16 ImportTo
|
||||||
|
SI: 16 ImportToTeamcenter
|
||||||
|
SI: 16 LayerDefault
|
||||||
|
SI: 16 ObjectTypes
|
||||||
|
SI: 16 Optimize
|
||||||
|
SI: 16 SettingsFile
|
||||||
|
SI: 16 SewSurfaces
|
||||||
|
SI: 16 SimplifyGeometry
|
||||||
|
SI: 16 SmoothBSurfaces
|
||||||
|
SI: 16 InputFile
|
||||||
|
SI: 16 OutputFile
|
||||||
|
SI: 16 ProcessHoldFlag
|
||||||
|
SI: 16 PreviewBuilder
|
||||||
|
SI: 16 Tag
|
||||||
|
SI: 16 NextSink
|
||||||
|
SI NESTED: ImportToOption
|
||||||
|
= WorkPart
|
||||||
|
= NewPart
|
||||||
16
catalog-masters/KC/rebuild-verify-master.txt
Normal file
16
catalog-masters/KC/rebuild-verify-master.txt
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
CWD=D:\开发\OnebotCatalog\catalog-masters\KC
|
||||||
|
masterExists=True
|
||||||
|
Work=D:\开发\OnebotCatalog\catalog-masters\KC\KC_master.prt
|
||||||
|
bodiesBefore=2
|
||||||
|
unit mm=Unit 38735
|
||||||
|
expr bore=32 stroke=10 magOn=0 mountIdx=0
|
||||||
|
solids already exist, skip creation
|
||||||
|
afterUpdate bodies=2
|
||||||
|
body1 faces=3
|
||||||
|
body2 faces=3
|
||||||
|
added 2 bodies to refset 'MODEL'
|
||||||
|
afterRefset bodies=2
|
||||||
|
A_display.stp size=2186 bytes
|
||||||
|
save OK
|
||||||
|
B_existing.stp size=MISSING
|
||||||
|
DONE
|
||||||
9
catalog-masters/KC/test-display-state.txt
Normal file
9
catalog-masters/KC/test-display-state.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
masterExists=True
|
||||||
|
Work=D:\开发\OnebotCatalog\catalog-masters\KC\KC_master.prt
|
||||||
|
Work.bodies=2
|
||||||
|
Display=D:\开发\OnebotCatalog\catalog-masters\KC\KC_master.prt
|
||||||
|
Display.bodies=2
|
||||||
|
Display Is Work? True
|
||||||
|
refset added
|
||||||
|
S_display.stp size=2186 bytes
|
||||||
|
DONE
|
||||||
5
catalog-masters/KC/test-existingpart.txt
Normal file
5
catalog-masters/KC/test-existingpart.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
CWD=D:\开发\OnebotCatalog\catalog-masters\KC
|
||||||
|
masterExists=True
|
||||||
|
E1_existing.stp size=MISSING
|
||||||
|
E1_existing.igs size=MISSING
|
||||||
|
DONE
|
||||||
13
catalog-masters/KC/test-fix-flags.txt
Normal file
13
catalog-masters/KC/test-fix-flags.txt
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
masterExists=True
|
||||||
|
bodies=2
|
||||||
|
--- StepCreator defaults ---
|
||||||
|
ProcessHoldFlag=False
|
||||||
|
FileSaveFlag=False
|
||||||
|
ColorAndLayers=False
|
||||||
|
ExportFrom=DisplayPart
|
||||||
|
ExportAs=Ap214
|
||||||
|
ExportSolidsAndSurfacesAs=Precise
|
||||||
|
ReferenceType=Absolute
|
||||||
|
F1_display_precise.stp size=MISSING
|
||||||
|
F2_display_tess.stp size=MISSING
|
||||||
|
DONE
|
||||||
208
cra_dump.txt
Normal file
208
cra_dump.txt
Normal file
@@ -0,0 +1,208 @@
|
|||||||
|
FILE: C:\Users\ruigu\Downloads\文档说明.html\20260826德国大众的要求文件\MAGSWITCH TECHNOLOGY EUROPE_CRA_Abfrage.xlsx
|
||||||
|
SHEETS: V7_Karobau_CU | V6_Karobau_CU | V6_Karobau_POF | V7_Lack | V6_Lack | V7_Montage | V6_Montage | V7_FT_Karobau | V6_FT_Karobau | V7_FT_Montage | V6_FT_Montage
|
||||||
|
================================================================================
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## SHEET: V7_Karobau_CU (max_row=8, max_col=19)
|
||||||
|
################################################################################
|
||||||
|
MERGED: B1:E1, C5:E5, J2:O2, C8:E8, P2:Q2, R2:S2, B4:G4, B2:E2, C7:E7, F1:G1, C6:E6
|
||||||
|
B1=MgU-IV-B03-03-VW_Teil_1 | F1=Pr.-Komponentenliste Planung Automatisierung (VASS V7)
|
||||||
|
B2=Volkswagen\nKarosseriebau (Cu) | F2=VWxxx - Standort | G2=Stand 29.05.2026 | J2=Cyber Resilience Act (CRA) -Komponente | P2=CRA Parametrierung | R2=MVO und CRA Konformes Produkt
|
||||||
|
A3=Nummer | B3=Projekt-freigabe | C3=ABB | D3=Fanuc | E3=Kuka | F3=Artikelbezeichnung | G3=Artikelnummer | H3=Bemerkung | I3=Freigabestufe | J3=CRA Relevant | K3=erfüllt CRA bereits heute? | L3=Alternativprodukt nach CRA bis? | M3=Einstufungsklasse im CRA\nu. A. CRA Artikel 7 u. 8 | N3=Stufe (1 bis 4)\nnach Norm IEC 62443-4 | O3=Verfügbarkeit Security Updates\n geplant bis… (Datum) | P3=Name der Parametriersoftware | Q3=Zum Zeitpunkt der Komponentenauslieferung CRA Fähig? | R3=Bestellbar ab… | S3=Auslieferung ab…
|
||||||
|
B4=Änderungen
|
||||||
|
B5=Pos. | C5=Hersteller | F5=Änderungen | G5=Datum
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## SHEET: V6_Karobau_CU (max_row=20, max_col=21)
|
||||||
|
################################################################################
|
||||||
|
MERGED: N2:S2, B17:G17, B8:G8, J2:M2, B13:G13, B10:G10, B9:G9, C7:E7, B15:G15, T2:U2, B4:G4, B2:E2, C6:E6, B16:G16, B1:E1, C5:E5, B18:G18, B12:G12, F1:G1, B11:G11
|
||||||
|
B1=MgU-IV-B03-03-VW_Teil_1 | F1=Pr.-Komponentenliste Planung Automatisierung (VASS V6)
|
||||||
|
B2=Volkswagen\nKarosseriebau (Cu) | F2=VWxxx - Standort | G2=Stand 04.07.2025 | J2=EU-Maschinenverordnung (MVO) | N2=Cyber Resilience Act (CRA) | T2=MVO und CRA Konformes Produkt
|
||||||
|
A3=Nummer | B3=Projekt-freigabe | C3=ABB | D3=Fanuc | E3=Kuka | F3=Artikelbezeichnung | G3=Artikelnummer | H3=Bemerkung | I3=Freigabestufe | J3=MVO Relevant? | K3=erfüllt MVO bereits heute? | L3=CE nach MVO bis? | M3=Alternativprodukt nach MVO bis? | N3=CRA Relevant | O3=erfüllt CRA bereits heute? | P3=Alternativprodukt nach CRA bis? | Q3=Einstufungsklasse im CRA\nu. A. CRA Artikel 7 u. 8 | R3=Stufe (1 bis 4)\nnach Norm IEC 62443-4 | S3=Verfügbarkeit Security Updates\n geplant bis… (Datum) | T3=Bestellbar ab… | U3=Auslieferung ab…
|
||||||
|
B4=Änderungen
|
||||||
|
B5=Pos. | C5=Hersteller | F5=Änderungen | G5=Datum
|
||||||
|
B8=002a-MKZB-Schweißzange (KE)
|
||||||
|
B10=003b-Gesamt-Leitungspakete | J10=Kapitel nicht MVO-relevant
|
||||||
|
B12=004-Spanntechnik im Karosseriebau
|
||||||
|
B13=MAGSWITCH TECHNOLOGY EUROPE - Spanntechnik
|
||||||
|
A14=K-ID-00235 | B14=X | F14=Siehe detailierte Freigabeliste | H14=Siehe detaillierte Freigabeliste und Datenzusammenstellung im KVS unter 11-14D 300168. Empfehlung: Erstellung separate Projektliste. | I14=TAS Markenfreigabe | J14=ja | K14=in Abfrage
|
||||||
|
B15=017a-EURO-Greifer nach VW-Spezifikation | J15=Kapitel nicht MVO-relevant
|
||||||
|
B17=103b-ID-Reader
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## SHEET: V6_Karobau_POF (max_row=83, max_col=21)
|
||||||
|
################################################################################
|
||||||
|
MERGED: B8:G8, B73:G73, B10:G10, B65:G65, B74:G74, C7:E7, B68:G68, B36:G36, B76:G76, B45:G45, B47:G47, B1:E1, B59:G59, B22:G22, B31:G31, B12:G12, B21:G21, B39:G39, B14:G14, B23:G23, B13:G13, B78:G78, B49:G49, B64:G64, B33:G33, B51:G51, T2:U2, B63:G63, B41:G41, B35:G35, B50:G50, B25:G25, B66:G66, B27:G27, B77:G77, B11:G11, N2:S2, B67:G67, B61:G61, B29:G29, B69:G69, B38:G38, B40:G40, B15:G15, B55:G55, B24:G24, B80:G80, B79:G79, B32:G32, B26:G26, B2:E2, B72:G72, C6:E6, B16:G16, B81:G81, B71:G71, B43:G43, B58:G58, B18:G18, B52:G52, F1:G1, B42:G42, B60:G60, B17:G17, B57:G57, J2:M2, B53:G53, B44:G44, B19:G19, B34:G34, B28:G28, B37:G37, B9:G9, B30:G30, B20:G20, B4:G4, B75:G75, B62:G62, B54:G54, B46:G46, C5:E5, B56:G56, B70:G70, B48:G48
|
||||||
|
B1=MgU-IV-B03-03-VW_Teil_1 | F1=Pr.-Komponentenliste Planung Automatisierung (VASS V6)
|
||||||
|
B2=Volkswagen\nKarosseriebau (POF) | F2=VWxxx - Standort | G2=Stand 04.07.2025 | J2=EU-Maschinenverordnung (MVO) | N2=Cyber Resilience Act (CRA) | T2=MVO und CRA Konformes Produkt
|
||||||
|
A3=Nummer | B3=Projekt-freigabe | C3=ABB | D3=Fanuc | E3=Kuka | F3=Artikelbezeichnung | G3=Artikelnummer | H3=Bemerkung | I3=Freigabestufe | J3=MVO Relevant? | K3=erfüllt MVO bereits heute? | L3=CE nach MVO bis? | M3=Alternativprodukt nach MVO bis? | N3=CRA Relevant | O3=erfüllt CRA bereits heute? | P3=Alternativprodukt nach CRA bis? | Q3=Einstufungsklasse im CRA\nu. A. CRA Artikel 7 u. 8 | R3=Stufe (1 bis 4)\nnach Norm IEC 62443-4 | S3=Verfügbarkeit Security Updates\n geplant bis… (Datum) | T3=Bestellbar ab… | U3=Auslieferung ab…
|
||||||
|
B4=Änderungen
|
||||||
|
B5=Pos. | C5=Hersteller | F5=Änderungen | G5=Datum
|
||||||
|
B8=001d-Schweißsteuerung für Handschweißzangen
|
||||||
|
B10=002a-MKZB-Schweißzange (KE)
|
||||||
|
B12=002b-Schweißzangenantrieb (RZ/KE)
|
||||||
|
B14=002c-Roboterschweißzangen Trafo
|
||||||
|
B16=002d-Schweißzange roboterintegriert (RZ)
|
||||||
|
B18=002e-Schweißzange servopneumatisch (SPZ)
|
||||||
|
B20=002g-Stoßpunkten
|
||||||
|
B22=003a-Rückzugsysteme für Leitungspakete
|
||||||
|
B24=003b-Gesamt-Leitungspakete
|
||||||
|
B26=004-Spanntechnik im Karosseriebau
|
||||||
|
B28=009a-RP (WPS) Handpunkttrafozangen
|
||||||
|
B30=010b-Reinigungsgeräte
|
||||||
|
B32=013c-Setzköpfe für Buckel-Normteile inkl. Vereinzelung u. Zuführtechnik
|
||||||
|
B34=016a-Schutzfenster, Rolltore
|
||||||
|
B36=016b-LASER-Schutzfenster, -rolltore
|
||||||
|
B38=017a-EURO-Greifer nach VW-Spezifikation
|
||||||
|
B40=017b-Lieferanten EGT & VGT- Teile
|
||||||
|
B42=019a-Prägezangen
|
||||||
|
B44=020c-Roboter-Mechaniken
|
||||||
|
B46=022f-Vereinzelung und Zuführtechnik für Einzelteile / Kleinteile als Schüttgut
|
||||||
|
B48=023a-Laserstrahlquellen
|
||||||
|
B50=023b-Schweißoptik
|
||||||
|
B52=024-Drehtische
|
||||||
|
B54=025-Verfahreinheit für Roboter
|
||||||
|
B56=026-Schutzzäune
|
||||||
|
B58=033-Stau-/Taktbänder
|
||||||
|
B60=100-Schmiersysteme
|
||||||
|
B62=102-Federbeinlochen
|
||||||
|
B64=103b-ID-Reader
|
||||||
|
B66=103c-Vision-Sensor
|
||||||
|
B68=107a-Anlageninterne Skidfördertechnik (KB)
|
||||||
|
B70=109-Werkermitfahrbänder
|
||||||
|
B72=115a-Manipulator
|
||||||
|
B74=115b-Laufschiene
|
||||||
|
B76=115c-Balancer
|
||||||
|
B78=115e-Gleitleisten / Lager
|
||||||
|
B80=115f-Stoßdämpfer
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## SHEET: V7_Lack (max_row=11, max_col=19)
|
||||||
|
################################################################################
|
||||||
|
MERGED: B1:E1, B10:G10, C5:E5, J2:O2, B9:G9, R2:S2, B8:G8, P2:Q2, B4:G4, C6:E6, B2:E2, C7:E7, F1:G1, B11:G11
|
||||||
|
B1=MgU-IV-B04-03-VW_Teil_1 | F1=Pr.-Komponentenliste Planung Automatisierung (VASS V7)
|
||||||
|
B2=Volkswagen\nLackiererei | F2=VWxxx - Standort | G2=Stand 29.05.2026 | J2=Cyber Resilience Act (CRA) -Komponente | P2=CRA Parametrierung | R2=MVO und CRA Konformes Produkt
|
||||||
|
A3=Nummer | B3=Projekt-freigabe | C3=ABB | D3=Fanuc | E3=Kuka | F3=Artikelbezeichnung | G3=Artikelnummer | H3=Bemerkung | I3=Freigabestufe | J3=CRA Relevant | K3=erfüllt CRA bereits heute? | L3=Alternativprodukt nach CRA bis? | M3=Einstufungsklasse im CRA\nu. A. CRA Artikel 7 u. 8 | N3=Stufe (1 bis 4)\nnach Norm IEC 62443-4 | O3=Verfügbarkeit Security Updates\n geplant bis… (Datum) | P3=Name der Parametriersoftware | Q3=Zum Zeitpunkt der Komponentenauslieferung CRA Fähig? | R3=Bestellbar ab… | S3=Auslieferung ab…
|
||||||
|
B4=Änderungen
|
||||||
|
B5=Pos. | C5=Hersteller | F5=Änderungen | G5=Datum
|
||||||
|
B8=016a-Schutzfenster, Rolltore
|
||||||
|
B10=103a-ID-Reader
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## SHEET: V6_Lack (max_row=15, max_col=21)
|
||||||
|
################################################################################
|
||||||
|
MERGED: N2:S2, B1:E1, B10:G10, T2:U2, C5:E5, B11:G11, B9:G9, B8:G8, B4:G4, B12:G12, B13:G13, B2:E2, C7:E7, J2:M2, F1:G1, C6:E6
|
||||||
|
B1=MgU-IV-B04-03-VW_Teil_1 | F1=Pr.-Komponentenliste Planung Automatisierung (VASS V6)
|
||||||
|
B2=Volkswagen\nLackiererei | F2=VWxxx - Standort | G2=Stand 04.07.2025 | J2=EU-Maschinenverordnung (MVO) | N2=Cyber Resilience Act (CRA) | T2=MVO und CRA Konformes Produkt
|
||||||
|
A3=Nummer | B3=Projekt-freigabe | C3=ABB | D3=Fanuc | E3=Kuka | F3=Artikelbezeichnung | G3=Artikelnummer | H3=Bemerkung | I3=Freigabestufe | J3=MVO Relevant? | K3=erfüllt MVO bereits heute? | L3=CE nach MVO bis? | M3=Alternativprodukt nach MVO bis? | N3=CRA Relevant | O3=erfüllt CRA bereits heute? | P3=Alternativprodukt nach CRA bis? | Q3=Einstufungsklasse im CRA\nu. A. CRA Artikel 7 u. 8 | R3=Stufe (1 bis 4)\nnach Norm IEC 62443-4 | S3=Verfügbarkeit Security Updates\n geplant bis… (Datum) | T3=Bestellbar ab… | U3=Auslieferung ab…
|
||||||
|
B4=Änderungen
|
||||||
|
B5=Pos. | C5=Hersteller | F5=Änderungen | G5=Datum
|
||||||
|
B8=016a-Schutzfenster, Rolltore
|
||||||
|
B10=103b-ID-Reader
|
||||||
|
B12=103c-Vision-Sensor
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## SHEET: V7_Montage (max_row=37, max_col=19)
|
||||||
|
################################################################################
|
||||||
|
MERGED: B14:G14, B23:G23, B17:G17, B8:G8, B13:G13, B29:G29, B19:G19, B34:G34, B10:G10, B28:G28, B37:G37, B9:G9, P2:Q2, C7:E7, B30:G30, B15:G15, B33:G33, B24:G24, B20:G20, B36:G36, J2:O2, B35:G35, B32:G32, B4:G4, B26:G26, B2:E2, B25:G25, C6:E6, B16:G16, B1:E1, C5:E5, B22:G22, B31:G31, B27:G27, R2:S2, B18:G18, B12:G12, B21:G21, F1:G1, B11:G11
|
||||||
|
B1=MgU-IV-B05-03-VW_Teil_1 | F1=Pr.-Komponentenliste Planung Automatisierung (VASS V7)
|
||||||
|
B2=Volkswagen\nMontage | F2=VWxxx - Standort | G2=Stand 29.05.2026 | J2=Cyber Resilience Act (CRA) -Komponente | P2=CRA Parametrierung | R2=MVO und CRA Konformes Produkt
|
||||||
|
A3=Nummer | B3=Projekt-freigabe | C3=ABB | D3=Fanuc | E3=Kuka | F3=Artikelbezeichnung | G3=Artikelnummer | H3=Bemerkung | I3=Freigabestufe | J3=CRA Relevant | K3=erfüllt CRA bereits heute? | L3=Alternativprodukt nach CRA bis? | M3=Einstufungsklasse im CRA\nu. A. CRA Artikel 7 u. 8 | N3=Stufe (1 bis 4)\nnach Norm IEC 62443-4 | O3=Verfügbarkeit Security Updates\n geplant bis… (Datum) | P3=Name der Parametriersoftware | Q3=Zum Zeitpunkt der Komponentenauslieferung CRA Fähig? | R3=Bestellbar ab… | S3=Auslieferung ab…
|
||||||
|
B4=Änderungen
|
||||||
|
B5=Pos. | C5=Hersteller | F5=Änderungen | G5=Datum
|
||||||
|
B8=003a-Rückzugsysteme für Leitungspakete
|
||||||
|
B10=003b-Gesamt-Leitungspakete
|
||||||
|
B12=012a-Multikupplung
|
||||||
|
B14=016a-Schutzfenster, Rolltore
|
||||||
|
B16=016c-Schutzbereichsabgrenzung mit hoher Schutzfunktion
|
||||||
|
B18=017a-EURO-Greifer nach VW-Spezifikation
|
||||||
|
B20=017b-Lieferanten EGT & VGT- Teile
|
||||||
|
B22=020a-Roboter-Steuerungen
|
||||||
|
B24=020c-Roboter-Mechaniken
|
||||||
|
B26=024-Drehtische
|
||||||
|
B28=025-Verfahreinheit für Roboter
|
||||||
|
B30=026-Schutzzäune
|
||||||
|
B32=100-Schmiersysteme
|
||||||
|
B34=103a-ID-Reader
|
||||||
|
B36=106-HIP/RIP
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## SHEET: V6_Montage (max_row=47, max_col=21)
|
||||||
|
################################################################################
|
||||||
|
MERGED: N2:S2, B42:G42, B14:G14, B17:G17, B23:G23, B8:G8, B13:G13, J2:M2, B44:G44, B29:G29, B38:G38, B19:G19, B34:G34, B10:G10, B28:G28, B37:G37, B9:G9, B40:G40, C7:E7, B30:G30, B15:G15, B33:G33, B24:G24, B20:G20, T2:U2, B36:G36, B45:G45, B41:G41, B35:G35, B32:G32, B4:G4, B26:G26, B2:E2, B25:G25, C6:E6, B16:G16, B1:E1, C5:E5, B22:G22, B31:G31, B27:G27, B43:G43, B18:G18, B12:G12, B21:G21, F1:G1, B39:G39, B11:G11
|
||||||
|
B1=MgU-IV-B05-03-VW_Teil_1 | F1=Pr.-Komponentenliste Planung Automatisierung (VASS V6)
|
||||||
|
B2=Volkswagen\nMontage | F2=VWxxx - Standort | G2=Stand 04.07.2025 | J2=EU-Maschinenverordnung (MVO) | N2=Cyber Resilience Act (CRA) | T2=MVO und CRA Konformes Produkt
|
||||||
|
A3=Nummer | B3=Projekt-freigabe | C3=ABB | D3=Fanuc | E3=Kuka | F3=Artikelbezeichnung | G3=Artikelnummer | H3=Bemerkung | I3=Freigabestufe | J3=MVO Relevant? | K3=erfüllt MVO bereits heute? | L3=CE nach MVO bis? | M3=Alternativprodukt nach MVO bis? | N3=CRA Relevant | O3=erfüllt CRA bereits heute? | P3=Alternativprodukt nach CRA bis? | Q3=Einstufungsklasse im CRA\nu. A. CRA Artikel 7 u. 8 | R3=Stufe (1 bis 4)\nnach Norm IEC 62443-4 | S3=Verfügbarkeit Security Updates\n geplant bis… (Datum) | T3=Bestellbar ab… | U3=Auslieferung ab…
|
||||||
|
B4=Änderungen
|
||||||
|
B5=Pos. | C5=Hersteller | F5=Änderungen | G5=Datum
|
||||||
|
B8=003a-Rückzugsysteme für Leitungspakete
|
||||||
|
B10=003b-Gesamt-Leitungspakete
|
||||||
|
B12=012a-Multikupplung
|
||||||
|
B14=016a-Schutzfenster, Rolltore
|
||||||
|
B16=016c-Schutzbereichsabgrenzung mit hoher Schutzfunktion
|
||||||
|
B18=017a-EURO-Greifer nach VW-Spezifikation
|
||||||
|
B20=017b-Lieferanten EGT & VGT- Teile
|
||||||
|
B22=020a-Roboter-Steuerungen
|
||||||
|
B24=020c-Roboter-Mechaniken
|
||||||
|
B26=022f-Vereinzelung und Zuführtechnik für Einzelteile / Kleinteile als Schüttgut
|
||||||
|
B28=025-Verfahreinheit für Roboter
|
||||||
|
B30=026-Schutzzäune
|
||||||
|
B32=100-Schmiersysteme
|
||||||
|
B34=103b-ID-Reader
|
||||||
|
B36=103c-Vision-Sensor
|
||||||
|
B38=103d-Vision-System
|
||||||
|
B40=103e-PC-Kamera-Systeme
|
||||||
|
B42=106-HIP/RIP
|
||||||
|
B44=109-Werkermitfahrbänder
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## SHEET: V7_FT_Karobau (max_row=13, max_col=19)
|
||||||
|
################################################################################
|
||||||
|
MERGED: B1:E1, B10:G10, C5:E5, J2:O2, B11:G11, B9:G9, R2:S2, B8:G8, P2:Q2, B4:G4, B12:G12, B13:G13, B2:E2, C7:E7, F1:G1, C6:E6
|
||||||
|
B1=MgU-IV-B06-03-VW_Teil_1 | F1=Pr.-Komponentenliste Planung Automatisierung (VASS V7)
|
||||||
|
B2=Volkswagen\nFördertechnik Karosseriebau | F2=VWxxx - Standort | G2=Stand 29.05.2026 | J2=Cyber Resilience Act (CRA) -Komponente | P2=CRA Parametrierung | R2=MVO und CRA Konformes Produkt
|
||||||
|
A3=Nummer | B3=Projekt-freigabe | C3=ABB | D3=Fanuc | E3=Kuka | F3=Artikelbezeichnung | G3=Artikelnummer | H3=Bemerkung | I3=Freigabestufe | J3=CRA Relevant | K3=erfüllt CRA bereits heute? | L3=Alternativprodukt nach CRA bis? | M3=Einstufungsklasse im CRA\nu. A. CRA Artikel 7 u. 8 | N3=Stufe (1 bis 4)\nnach Norm IEC 62443-4 | O3=Verfügbarkeit Security Updates\n geplant bis… (Datum) | P3=Name der Parametriersoftware | Q3=Zum Zeitpunkt der Komponentenauslieferung CRA Fähig? | R3=Bestellbar ab… | S3=Auslieferung ab…
|
||||||
|
B4=Änderungen
|
||||||
|
B5=Pos. | C5=Hersteller | F5=Änderungen | G5=Datum
|
||||||
|
B8=016a-Schutzfenster, Rolltore
|
||||||
|
B10=103a-ID-Reader
|
||||||
|
B12=103b-Vision-Sensor
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## SHEET: V6_FT_Karobau (max_row=15, max_col=21)
|
||||||
|
################################################################################
|
||||||
|
MERGED: N2:S2, B1:E1, B10:G10, T2:U2, C5:E5, B11:G11, B9:G9, B8:G8, B4:G4, B12:G12, B13:G13, B2:E2, C7:E7, J2:M2, F1:G1, C6:E6
|
||||||
|
B1=MgU-IV-B06-03-VW_Teil_1 | F1=Pr.-Komponentenliste Planung Automatisierung (VASS V6)
|
||||||
|
B2=Volkswagen\nFördertechnik Karosseriebau | F2=VWxxx - Standort | G2=Stand 04.07.2025 | J2=EU-Maschinenverordnung (MVO) | N2=Cyber Resilience Act (CRA) | T2=MVO und CRA Konformes Produkt
|
||||||
|
A3=Nummer | B3=Projekt-freigabe | C3=ABB | D3=Fanuc | E3=Kuka | F3=Artikelbezeichnung | G3=Artikelnummer | H3=Bemerkung | I3=Freigabestufe | J3=MVO Relevant? | K3=erfüllt MVO bereits heute? | L3=CE nach MVO bis? | M3=Alternativprodukt nach MVO bis? | N3=CRA Relevant | O3=erfüllt CRA bereits heute? | P3=Alternativprodukt nach CRA bis? | Q3=Einstufungsklasse im CRA\nu. A. CRA Artikel 7 u. 8 | R3=Stufe (1 bis 4)\nnach Norm IEC 62443-4 | S3=Verfügbarkeit Security Updates\n geplant bis… (Datum) | T3=Bestellbar ab… | U3=Auslieferung ab…
|
||||||
|
B4=Änderungen
|
||||||
|
B5=Pos. | C5=Hersteller | F5=Änderungen | G5=Datum
|
||||||
|
B8=016a-Schutzfenster, Rolltore
|
||||||
|
B10=103b-ID-Reader
|
||||||
|
B12=103c-Vision-Sensor
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## SHEET: V7_FT_Montage (max_row=13, max_col=19)
|
||||||
|
################################################################################
|
||||||
|
MERGED: B1:E1, B10:G10, C5:E5, J2:O2, B11:G11, B9:G9, R2:S2, B8:G8, P2:Q2, B4:G4, B12:G12, B13:G13, B2:E2, C7:E7, F1:G1, C6:E6
|
||||||
|
B1=MgU-IV-B06-03-VW_Teil_1 | F1=Pr.-Komponentenliste Planung Automatisierung (VASS V7)
|
||||||
|
B2=Volkswagen\nFördertechnik Montage | F2=VWxxx - Standort | G2=Stand 29.05.2026 | J2=Cyber Resilience Act (CRA) -Komponente | P2=CRA Parametrierung | R2=MVO und CRA Konformes Produkt
|
||||||
|
A3=Nummer | B3=Projekt-freigabe | C3=ABB | D3=Fanuc | E3=Kuka | F3=Artikelbezeichnung | G3=Artikelnummer | H3=Bemerkung | I3=Freigabestufe | J3=CRA Relevant | K3=erfüllt CRA bereits heute? | L3=Alternativprodukt nach CRA bis? | M3=Einstufungsklasse im CRA\nu. A. CRA Artikel 7 u. 8 | N3=Stufe (1 bis 4)\nnach Norm IEC 62443-4 | O3=Verfügbarkeit Security Updates\n geplant bis… (Datum) | P3=Name der Parametriersoftware | Q3=Zum Zeitpunkt der Komponentenauslieferung CRA Fähig? | R3=Bestellbar ab… | S3=Auslieferung ab…
|
||||||
|
B4=Änderungen
|
||||||
|
B5=Pos. | C5=Hersteller | F5=Änderungen | G5=Datum
|
||||||
|
B8=016a-Schutzfenster, Rolltore
|
||||||
|
B10=103a-ID-Reader
|
||||||
|
B12=103b-Vision-Sensor
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
## SHEET: V6_FT_Montage (max_row=15, max_col=21)
|
||||||
|
################################################################################
|
||||||
|
MERGED: N2:S2, B1:E1, B10:G10, T2:U2, C5:E5, B11:G11, B9:G9, B8:G8, B4:G4, B12:G12, B13:G13, B2:E2, C7:E7, J2:M2, F1:G1, C6:E6
|
||||||
|
B1=MgU-IV-B06-03-VW_Teil_1 | F1=Pr.-Komponentenliste Planung Automatisierung (VASS V6)
|
||||||
|
B2=Volkswagen\nFördertechnik Montage | F2=VWxxx - Standort | G2=Stand 04.07.2025 | J2=EU-Maschinenverordnung (MVO) | N2=Cyber Resilience Act (CRA) | T2=MVO und CRA Konformes Produkt
|
||||||
|
A3=Nummer | B3=Projekt-freigabe | C3=ABB | D3=Fanuc | E3=Kuka | F3=Artikelbezeichnung | G3=Artikelnummer | H3=Bemerkung | I3=Freigabestufe | J3=MVO Relevant? | K3=erfüllt MVO bereits heute? | L3=CE nach MVO bis? | M3=Alternativprodukt nach MVO bis? | N3=CRA Relevant | O3=erfüllt CRA bereits heute? | P3=Alternativprodukt nach CRA bis? | Q3=Einstufungsklasse im CRA\nu. A. CRA Artikel 7 u. 8 | R3=Stufe (1 bis 4)\nnach Norm IEC 62443-4 | S3=Verfügbarkeit Security Updates\n geplant bis… (Datum) | T3=Bestellbar ab… | U3=Auslieferung ab…
|
||||||
|
B4=Änderungen
|
||||||
|
B5=Pos. | C5=Hersteller | F5=Änderungen | G5=Datum
|
||||||
|
B8=016a-Schutzfenster, Rolltore
|
||||||
|
B10=103b-ID-Reader
|
||||||
|
B12=103c-Vision-Sensor
|
||||||
92
docs/工作交接.md
Normal file
92
docs/工作交接.md
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
# 工作交接:NX 按需生成服务(二期 A 版)
|
||||||
|
|
||||||
|
> 给接手的同事/新会话。读完这份 + `项目总览.md` + `开发记录-NX2506批处理攻坚.md` 即可快速跑起来。
|
||||||
|
> 更新:2026-08-27
|
||||||
|
|
||||||
|
## 一、一句话现状
|
||||||
|
|
||||||
|
**软件侧全部打通,两天卡点(NX 批处理导出 0 solid)已解决,全链路实测通过。现在只等真实母模(母版)就位。**
|
||||||
|
|
||||||
|
## 二、系统由 3 个进程组成
|
||||||
|
|
||||||
|
| 进程 | 端口 | 作用 | 怎么启动 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| **网页端** serve-web.ps1 | 8080 | 选型界面(客户看到的就是这个)| `_start_all.bat` 不含它,需单独起,或见 §五 |
|
||||||
|
| **GenServer.exe** | 8899 | 生成服务后端(队列/校验/下载/预览)| `_start_all.bat` 第 3 步 |
|
||||||
|
| **NX worker** run_journal | — | 常驻轮询任务,调 NX 生成数模 | `_start_all.bat` 第 4 步 |
|
||||||
|
|
||||||
|
## 三、一键启动(最关键的一条命令)
|
||||||
|
|
||||||
|
```
|
||||||
|
d:\开发\OnebotCatalog\_start_all.bat
|
||||||
|
```
|
||||||
|
|
||||||
|
它会:停旧进程 → 编译 GenServer → 启动 GenServer → 启动 NX worker → health 自检。
|
||||||
|
浏览器开 `http://localhost:8080`,底部信息栏右侧有状态圆球:**绿=就绪,橙=等 worker,红=故障**。
|
||||||
|
|
||||||
|
## 四、UG(NX)配置后台怎么进
|
||||||
|
|
||||||
|
浏览器开:**`http://localhost:8899/admin`**
|
||||||
|
|
||||||
|
**密码登录**:默认密码 `onebot888`。打开 `/admin` 先弹登录页 → 输密码 → 进后台。
|
||||||
|
|
||||||
|
后台是**顶部三个 tab**(点击切换):
|
||||||
|
1. **UG 配置**:NX 版本目录(自动探测 2506/2512,可手动选)、数据源/母模/输出/任务/工作各目录、端口、API Key、管理页密码、队列上限、批量上限、限流
|
||||||
|
2. **参数配置**:直接编辑 `masters.json`(expressionMap / switchRules / exports),保存后即时热重载,无需重启
|
||||||
|
3. **模型管理**:手动清理(一键清空 output 目录)+ 定时清理(设置留存时长 outputTtlHours,0=永不清空)
|
||||||
|
|
||||||
|
- 密码改法:`genserver-local\genserver-config.json` 里 `adminKey` 字段(默认 `onebot888`)
|
||||||
|
|
||||||
|
## 五、网页端单独启动
|
||||||
|
|
||||||
|
`_start_all.bat` 没包含网页端(它是独立的 serve-web)。单独起:
|
||||||
|
|
||||||
|
```
|
||||||
|
d:\开发\OnebotCatalog\_start_web.bat
|
||||||
|
```
|
||||||
|
|
||||||
|
(站点在 `release\web_2026.08\`,`config.js` 里 `api` 已指向 `http://localhost:8899`)
|
||||||
|
|
||||||
|
## 六、母模 ↔ 参数的对应关系(建模工程师必读)
|
||||||
|
|
||||||
|
对应靠 `onebot-data\masters.json` 这张翻译字典:
|
||||||
|
|
||||||
|
```json
|
||||||
|
"KC": {
|
||||||
|
"masterPart": "KC_master.prt",
|
||||||
|
"expressionMap": { "bore": "bore", "stroke": "stroke" }, // 尺寸参数 → NX表达式名
|
||||||
|
"switchRules": [
|
||||||
|
["magnet", "", "magOn", "0"], ["magnet", "M", "magOn", "1"],
|
||||||
|
["mount", "", "mountIdx", "0"], ["mount", "FA", "mountIdx", "1"], ...
|
||||||
|
], // 枚举开关 → NX表达式
|
||||||
|
"exports": { "step": "214", "iges": true, "prt": true }
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**铁律**:母模里的表达式名必须和 `masters.json` 写的**一字不差**(`bore`/`stroke`/`magOn`/`mountIdx`);`bore`/`stroke` 带 mm 单位,`magOn`/`mountIdx` 是纯数字开关;磁石/固定形式用「按表达式抑制」切换。
|
||||||
|
|
||||||
|
**待确认**:`type`(00/02/03)是否影响几何?影响则补映射,不影响则忽略。
|
||||||
|
|
||||||
|
## 七、真实母模就位后做什么
|
||||||
|
|
||||||
|
1. 把交互式建模的真实气缸母模命名 `KC_master.prt`,放到 `catalog-masters\KC\` 覆盖占位母模
|
||||||
|
2. 重跑 `_start_all.bat`
|
||||||
|
3. 网页选 KC + stroke=87(非标)→ 在线生成 → 预览 → 下载
|
||||||
|
4. NX 打开生成的 `.stp` 核对缸径/行程与请求一致
|
||||||
|
|
||||||
|
## 八、关键踩坑(接手前必看)
|
||||||
|
|
||||||
|
1. **`.bat` 必须纯 ASCII 无中文**——cmd 按 GBK 读,中文会拆坏命令报"XX不是内部或外部命令"(见记忆 `bat-ascii-no-chinese`)
|
||||||
|
2. **编译前先停 GenServer**——exe 被运行中进程锁住会 `error CS2012`
|
||||||
|
3. **批处理里别用 DexManager 导出**——NX 2506 的 ST-DEVELOPER 翻译器在 run_journal 里判 0 solid,正解是独立命令行翻译器 `step214ug.exe`(.prt→.step)/`iges.exe`(.prt→.igs)
|
||||||
|
4. **配置以 D 盘为准**——W 盘是旧 TeamCenter 映射已废弃
|
||||||
|
5. **前端 dev 源 `web/` 与发布产物 `release\web_2026.08\` 要同时改**——serve-web 服务的是 release 目录
|
||||||
|
|
||||||
|
## 九、待办(剩余)
|
||||||
|
|
||||||
|
1. ⭐ **真母模**:建模工程师做真实气缸母模(等用户)—— 唯一真正卡进度的
|
||||||
|
2. **NX 2512 实测**:换机后先验证 journal API + step214ug.exe 在 2512 下可用
|
||||||
|
3. **生产部署**:netsh urlacl 授权、网页 config.js 填生产地址、桌面端 genApi 字段
|
||||||
|
4. **待确认**:`type`(00/02/03)是否影响几何,影响则补 masters.json 映射(后台「参数配置」tab 可直接改)
|
||||||
|
|
||||||
|
> 注:参数映射网页后台编辑、密码登录、模型管理(手动/定时清理)均已在 `/admin` 后台实现。
|
||||||
52
docs/用户手册.md
Normal file
52
docs/用户手册.md
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
# 欧霓博气动元件电子目录 —— 用户手册 / User Manual
|
||||||
|
|
||||||
|
## 1. 安装与运行 / Install & Run
|
||||||
|
|
||||||
|
- 本软件为绿色程序,**无需安装**,双击 `OnebotCatalog.exe` 即可运行(Windows 10/11,不需要额外安装 .NET 运行时)。
|
||||||
|
- 光盘/U 盘自动播放默认被系统禁用,请直接双击 exe。
|
||||||
|
- 首次运行若杀毒软件提示拦截(程序未做代码签名),请选择"允许"或加入白名单。
|
||||||
|
|
||||||
|
## 2. 选型 / Configure a Part
|
||||||
|
|
||||||
|
1. 左侧目录树选择产品系列(如:汽车行业气缸 → KC 系列标准气缸)。
|
||||||
|
2. 中间面板依次选择参数:型号 → 缸径 → 行程 → 磁石 → 固定形式。灰色下拉即已按选型规则过滤,不可能的组合不会出现。
|
||||||
|
3. 选满后上方显示型号(如 `KC0032-100MLB`),3D 预览自动显示该型号外形。
|
||||||
|
4. 3D 预览操作:鼠标左键拖拽旋转、滚轮缩放;真实数模会提示【在浏览器中打开 3D 预览】按钮(本机运行,不联网)。
|
||||||
|
5. 三个区域(目录树/参数面板/3D 视图)之间的分隔条可拖拽调宽。
|
||||||
|
|
||||||
|
## 3. 下载 STEP 文件 / Download STEP
|
||||||
|
|
||||||
|
- 完成选型后点击顶部 **「下载 STEP」**,选择保存位置,文件按 `型号.step` 命名(如 `KC0032-100MLB.step`)。
|
||||||
|
- STEP 为通用交换格式,SolidWorks / NX / CATIA / Creo / Inventor 等主流 CAD 均可直接打开(打开时选择"零件/实体"模板)。
|
||||||
|
- **批量下载**:切换到「参数表」标签页,Ctrl/Shift 多选型号行,点击上方「批量导出所选」,得到 zip(内含各型号 STEP + BOM.csv 清单)。
|
||||||
|
|
||||||
|
## 4. 搜索与筛选 / Search & Filter
|
||||||
|
|
||||||
|
- 顶部搜索框支持:型号编码(如 `KC0032`、`32x50`)、中文名(缸径)、英文名(Bore)、拼音关键词(gangjing)。
|
||||||
|
- 多个词用空格分隔;双击搜索结果直接定位到该型号。
|
||||||
|
- 「参数表」标签页上方可对数值参数做范围筛选(如缸径 32 ~ 63),点「应用」生效、「重置」清除。
|
||||||
|
|
||||||
|
## 5. 尺寸图与数据表 / Drawings & Datasheet
|
||||||
|
|
||||||
|
- 「尺寸图」标签页:2D 尺寸图 + **产品手册对照页**(选中系列即显示,滚动翻看规格参数/外形尺寸)
|
||||||
|
- 「数据表」标签页:打开 PDF 数据表
|
||||||
|
- 顶栏按钮可在 中文 / EN 之间切换界面语言
|
||||||
|
|
||||||
|
## 6. 常见问题 / FAQ
|
||||||
|
|
||||||
|
| 问题 | 处理 |
|
||||||
|
|---|---|
|
||||||
|
| 双击无反应 / 被杀软拦截 | 加入杀软白名单;确认系统为 Win10/11 |
|
||||||
|
| 提示"数据包格式版本高于软件支持" | 目录数据比软件新,请联系欧霓博获取新版软件 |
|
||||||
|
| 提示"数据包格式版本不兼容" | 数据包损坏或过旧,请重新获取 catalog.opc |
|
||||||
|
| 下载的 STEP 打开报错 | 换一种"打开"方式(文件→打开,模板选零件);或反馈该型号给欧霓博 |
|
||||||
|
| 3D 标签页显示提示按钮而非模型 | 该型号是真实 CAD 数模,点按钮在浏览器中查看 3D(本机运行) |
|
||||||
|
| 目录内容更新 | 用新 catalog.opc 替换程序旁的旧文件(目录版);单文件版需更换整个 exe |
|
||||||
|
|
||||||
|
## 7. English Quick Guide
|
||||||
|
|
||||||
|
1. Double-click `OnebotCatalog.exe` (no installation, Windows 10/11).
|
||||||
|
2. Pick a series in the left tree, then set parameters (type / bore / stroke / magnet / mounting) — invalid combinations are filtered automatically.
|
||||||
|
3. Click **Download STEP** to save the 3D model (e.g. `KC0032-100MLB.step`), or export many in the **Parameters** tab (Ctrl/Shift multi-select → Export selected).
|
||||||
|
4. Search by model code, Chinese/English names or pinyin keywords in the top search box.
|
||||||
|
5. Use **EN/中** button to switch language.
|
||||||
109
docs/维护手册.md
Normal file
109
docs/维护手册.md
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
# 欧霓博气动元件电子目录 —— 维护手册 / Maintenance Manual
|
||||||
|
|
||||||
|
> 面向欧霓博目录维护人员。开发环境要求:Windows 10/11 + Visual Studio 2022 Build Tools(仅需其自带 csc 编译器)。
|
||||||
|
> 更完整的团队操作指南(数模替换/新增系列/打包/排查)见 `onebot-data\数据维护说明书.md`。
|
||||||
|
|
||||||
|
## 1. 数据源(统一路线)
|
||||||
|
|
||||||
|
**唯一数据源 = `onebot-data\catalog\`**:
|
||||||
|
|
||||||
|
| 文件 | 要求 |
|
||||||
|
|---|---|
|
||||||
|
| catalog.json | 目录级定义(版本/分类/系列列表),手工编辑系列列表 |
|
||||||
|
| series\*.meta.json | 每系列定义(参数/规则/显示名/附件),**由维护向导编辑** |
|
||||||
|
| csv\*.csv | 参数表:首列=型号编码(唯一),参数列名=参数代码(bore/stroke/magnet/mount...),**必须含 `step_file` 列**;UTF-8 |
|
||||||
|
| step\*.step | STEP 文件,文件名与 `step_file` 列一致(NX 母模批量导出后放这里;**.stp 后缀自动兼容**,同名即可无需改名) |
|
||||||
|
| crossref.csv | 平替对照表(可选):brand,foreign_model,our_model,note;our_model 必须存在,构建自动校验 |
|
||||||
|
| manual\<系列>\ | 手册页 PNG(render-manual-pages.py 生成) |
|
||||||
|
|
||||||
|
## 2. 日常编辑与重建
|
||||||
|
|
||||||
|
1. 双击 `bin\维护入口.bat`(密码 `onebot888`)→ 顶栏【维护入口】按钮
|
||||||
|
2. 维护窗口:当前包系列清单 + 校验
|
||||||
|
3. 【目录制作器】:Step1 顶部【数据源目录】(默认已填 `onebot-data\catalog`)→ 下拉选系列 → 编辑参数/规则/显示名/附件 →【保存配置】(写回 series\*.meta.json)→ 点 **【重建全量目录】** → 全量 .opc 生成,可一键加载验证
|
||||||
|
- 新系列:手动导入 CSV → 填系列信息 → 保存配置 → 把系列代码加进 catalog.json 的分类列表 → 放 STEP → 重建
|
||||||
|
- 等价 CLI:`bin\OnebotCatalog.exe --buildfull onebot-data\catalog sample\OnebotCatalog_2026.08.opc`(结果看 `sample\build.log`)
|
||||||
|
|
||||||
|
## 3. 校验 / Validate
|
||||||
|
|
||||||
|
维护入口 →「校验 / Validate」检查:STEP 缺失、编码重复、规则引用/冲突、附件缺失。**有 ERROR 不允许发布**(发布门禁会拦)。
|
||||||
|
|
||||||
|
## 4. 一键编译发布 / Publish
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
# 前提: 先关闭正在运行的目录软件 exe 和本地预览服务器 (占用文件会导致失败)
|
||||||
|
powershell -NoProfile -ExecutionPolicy Bypass -File tools\publish.ps1 -Opc sample\OnebotCatalog_2026.08.opc -Version 2026.08
|
||||||
|
```
|
||||||
|
|
||||||
|
自动执行:自测门禁(31 项)→ 编译客户版(数据内置、维护入口剔除、图标)→ 发布目录(含本机 3D 查看器组件 ~8MB)→ 增量包 → 网页站。
|
||||||
|
|
||||||
|
产出:
|
||||||
|
- `release\OnebotCatalog_2026.08\` —— 客户交付目录,压缩成 zip 即发(工作区根有现成 zip 示例)
|
||||||
|
- `release\update_2026.08\catalog.opc` —— 增量更新包,客户替换同名文件即升级
|
||||||
|
- `release\web_2026.08\` —— 网页站,整目录上传即上线
|
||||||
|
|
||||||
|
发布前建议在**纯净 Win10/11 虚拟机(断网)**上验收:双击运行、选型、下载 STEP 并在 CAD 中打开核对。
|
||||||
|
|
||||||
|
## 5. 日常命令 / Daily Commands
|
||||||
|
|
||||||
|
| 操作 | 命令 |
|
||||||
|
|---|---|
|
||||||
|
| 编译开发版 | `powershell -NoProfile -ExecutionPolicy Bypass -File tools\build.ps1` |
|
||||||
|
| 自测 | `bin\OnebotCatalog.exe --selftest sample\OnebotCatalog_2026.08.opc`(结果 `sample\selftest.log`) |
|
||||||
|
| 全量构建 | `bin\OnebotCatalog.exe --buildfull onebot-data\catalog sample\OnebotCatalog_2026.08.opc` |
|
||||||
|
| 本地网页预览 | `powershell -NoProfile -ExecutionPolicy Bypass -File tools\serve-web.ps1`(localhost:8080,16 并发) |
|
||||||
|
| 刷新源数据(占位几何) | `powershell -NoProfile -ExecutionPolicy Bypass -File onebot-data\tools\gen-onebot-source.ps1`(NX 真实 STEP 直接替换 catalog\step\ 同名文件即可,无需跑这个) |
|
||||||
|
|
||||||
|
**注意**:编辑任何含中文的 `.ps1`/`.cs`/`.vb` 后必须先运行 `sample-data\tools\fix-bom.ps1` 再编译/运行(PowerShell 5.1/csc 对无 BOM 文件按 GBK 读取会乱码报错)。
|
||||||
|
|
||||||
|
## 6. 修改维护密码 / Change Admin Password
|
||||||
|
|
||||||
|
编辑 `src\App\App.cs` 中 `PromptPassword()` 的 `"onebot888"`,重新编译开发版即可(客户版不含维护入口,无需处理)。
|
||||||
|
|
||||||
|
## 7. 桌面 3D 预览说明
|
||||||
|
|
||||||
|
- 占位简化几何 → 桌面内置 3D 直接渲染
|
||||||
|
- **真实 NX 数模 → 窗口内直渲,不弹浏览器**(2026-08-24 起),四级优先级:
|
||||||
|
1. 有 STL 网格(`mesh\` 侧车目录,与 STEP 同名)→ 开源 Helix Toolkit 窗口内直渲
|
||||||
|
2. 无网格 → **WebView2 内嵌新迪查看器**(窗口内嵌浏览器控件,真实 STEP 直接渲染;Win11 自带运行时,Win10 装 Edge 即有)
|
||||||
|
3. WebView2 不可用 → 外部浏览器回退(程序内嵌本机微型服务器,完全离线;客户版发布目录已附带查看器组件)
|
||||||
|
4. 占位几何 → 内置自绘
|
||||||
|
- 网格生成:NX journal 导出 STEP 时同步导出(`exportStl` 开关);已有真实 STEP 用 `python onebot-data\tools\step-to-stl.py` + `simplify-stl.py` 批量转换压缩
|
||||||
|
- 网页端轻量化(glTF)待办 9,`nx-batch-export-glb.vb` 模板已备
|
||||||
|
|
||||||
|
## 8. 参数化选型引擎(一期,2026-08-25,两端一致)
|
||||||
|
|
||||||
|
- **模式开关**:series.meta.json 的 series 块加 `"mode": "parametric"` + `"modelCodeTemplate"`(语法 `{field}` 或 `{field:padN}` 前补零),参数可定义 range 域:`"type": "range", "min": 10, "max": 200, "step": 1, "gridValues": [10, 20, 30, 50, 75, 100]`。缺失字段 = 枚举模式,老系列零影响
|
||||||
|
- **语义**:CSV 仍是"标准档位网格"(搜索/平替/参数表/下载的数据源);选型面板可输入网格外的**非标组合**(range 自由输入),引擎按模板实时生成型号编码
|
||||||
|
- **非标档位行为**:标题带徽标;STEP 下载按钮置灰(请联系销售或选择标准档位);3D 展示最近标准档位近似几何 + 提示条;可加入清单但打包时跳过并注明
|
||||||
|
- **对拍门禁**:构建期强制校验——参数化系列的**全部 CSV 编码必须能被模板重新生成且一一对应**,任何一个不一致构建失败(build.log 显示"参数化对拍门禁通过: N 个编码全部一致")
|
||||||
|
- **双端一致性**:一份规则 JSON + C#/JS 各一个解释器 + 同一份测试向量 `catalog\parametric-vectors.json`(随 .opc 发布):桌面 selftest 自动对拍;网页无头 `node tools\e2e-parametric.js`(16 项)+ 购物车回归 `node tools\e2e-cart.js`
|
||||||
|
- **联动语义(重要)**:参数合法性按"域+规则"判定,**不按网格行存在性**;规则 Then 参数未选不判违背(避免选一半清空其他选项)
|
||||||
|
- **试点 KC** 已上线;推广新系列时:确认型号编码模板补零规则(对拍门禁会兜底)、按产品手册补规则、range 参数列出 gridValues
|
||||||
|
|
||||||
|
## 9. NX 按需生成服务(二期 A 版,2026-08-25,开发完成待 NX 联调/部署)
|
||||||
|
|
||||||
|
- **架构**:`bin\GenServer.exe`(csc 编译轻量后端:服务端二次校验(复用目录端同一规则引擎)→ 检索先行 → 文件任务队列 → 输出留存 → 限流/CORS)+ 常驻 NX worker(`sample-data\tools\worker_journal.vb`,每席位一个 `run_journal.exe` 进程:认领任务 → 拷母模副本 → 设表达式 → 更新 → 导出多格式 → 写结果;批量任务单会话顺序处理)
|
||||||
|
- **配置(服务器侧,`onebot-data\`)**:`genserver-config.json`(端口/API key/目录;apiKey 留空=匿名模式仅限流)、`masters.json`(母模+表达式映射+switchRules+exports)、`catalog-masters\<系列>\<母模>.prt`
|
||||||
|
- **部署三步**:① 管理员执行 `netsh http add urlacl url=http://+:8899/ user=Everyone`(否则仅本机)② 启动 GenServer ③ 每席位一个:`run_journal.exe worker_journal.vb <worker号> <genserver-config.json 路径>`(NXBIN 下,计划任务守护)
|
||||||
|
- **两端接入**:网页 `web\config.js` 的 api(空=非标下载维持置灰过渡态);桌面 = 源目录 `catalog.json` 的 `genApi` 字段(重建+发布生效)
|
||||||
|
- **检索先行**:`output\<系列>\<型号编码>\` 留存不删(全格式齐全即命中复用,不再触发 NX);任务私有工作副本任务后即删
|
||||||
|
- **多格式导出**:STEP(214)/Parasolid/IGES/STL,下载为全格式 zip;购物车含非标时打包前自动批量生成(型号子文件夹)
|
||||||
|
- **本地联调(无 NX)**:模拟 worker 的 PS 脚本 + 网页端 `tools\e2e-gen.js`(8 项)
|
||||||
|
- **NX 2506 实测 API(2026-08-26,反射探针核对,详见 `开发记录-NX2506批处理攻坚.md`)**:批处理打开部件用 **OpenBaseDisplay**(OpenBase 后 Work=NULL);CloseAll 两参数;建表达式 `Expressions.CreateExpression("Number","名=值")`;改表达式 UF `EditExp`(只改已存在);更新 `ufs.Modl.Update()`;导出器在 **Session.DexManager**(CreateStepCreator/CreateIgesCreator/CreateParasolidExporter/CreateStlCreator);journal 环境无 JSON 库 → 任务文件为行式键值;母模/worker 副本**必须清只读属性**(否则保存被拒)
|
||||||
|
- **待用户确认(上线前)**:① `masters.json` 表达式名按 NX 母模实际命名填写 ② KC 母模放入 `catalog-masters\KC\` ③ run_journal 路径(随 NX 版本)④ **卡点**:批处理模式翻译器导出空几何——需交互式 NX 录制导出宏修正 worker 导出函数,或用真母模直接实测(开发记录 §5 两方案)⑤ 部署时 `netsh http add urlacl url=http://+:8899/ user=Everyone`
|
||||||
|
|
||||||
|
## 10. 购物车批量导出(2026-08-24,两端一致)
|
||||||
|
|
||||||
|
- 加入:参数面板【加入清单】(选型完成后)/ 参数表行尾"+"或勾选行【加入清单】;顶栏【清单 (N)】角标实时计数
|
||||||
|
- 清单面板:桌面独立窗口 / 网页右侧抽屉;数量可改(只在 BOM 数量列体现,zip 每型号一份);支持删除/清空
|
||||||
|
- 一键打包:【下载全部 (zip + BOM)】→ `ONEBOT_清单_<时间戳>.zip` = 全部 STEP(型号命名)+ BOM.csv(UTF-8 BOM,Excel 直开)+ 清单.txt
|
||||||
|
- 购物车生命周期:网页刷新浏览器 / 桌面重启软件才清空;切系列/搜索/平替等操作不影响清单
|
||||||
|
- 桌面零新依赖(net48 ZipArchive);网页用开源 JSZip 3.10.1(MIT,web\libs\jszip.min.js)前端打包
|
||||||
|
|
||||||
|
## 11. 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`).
|
||||||
|
- Publish: `tools\publish.ps1` runs the selftest gate first, then compiles the customer exe (data embedded, no admin entry), assembles the release folder + incremental update package + static web site.
|
||||||
|
- Always run `sample-data\tools\fix-bom.ps1` after editing Chinese-containing .ps1/.cs/.vb files.
|
||||||
58
docs/部署清单.md
Normal file
58
docs/部署清单.md
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
# NX 按需生成服务 · 迁移到不加密服务器验证清单
|
||||||
|
|
||||||
|
> 目标:把整套「选型网页 + 生成服务 + NX worker」搬到一台不加密服务器(装 NX 2512)跑通验证。
|
||||||
|
> 更新:2026-08-27
|
||||||
|
|
||||||
|
## 1. 要拷贝的最小集合
|
||||||
|
|
||||||
|
服务器只需这 6 项(其余源码/工具可带可不带):
|
||||||
|
|
||||||
|
| 目录/文件 | 作用 | 必带 |
|
||||||
|
|---|---|---|
|
||||||
|
| `bin\GenServer.exe` | 生成服务后端(已编译,net48,Windows 自带运行时,无需装 VS)| ✅ |
|
||||||
|
| `genserver-local\` | 配置 + jobs/output/work 目录 | ✅ |
|
||||||
|
| `catalog-masters\` | 母模 `KC_master.prt` | ✅ |
|
||||||
|
| `onebot-data\catalog\` + `onebot-data\masters.json` | 数据源(GenServer 校验规则用)+ 母模映射表 | ✅ |
|
||||||
|
| `sample-data\tools\worker_journal.vb` | NX worker 脚本 | ✅ |
|
||||||
|
| `release\web_2026.08\` | 选型网页站(含 config.js)| ✅ |
|
||||||
|
| `viewer\` | 新迪 3D 查看器(网页 3D 预览用,可选)| ⚠️ 可选 |
|
||||||
|
|
||||||
|
## 2. 服务器前置条件
|
||||||
|
|
||||||
|
- **Windows 10/11**(net48 内置)
|
||||||
|
- **NX 2512**(跑 run_journal + worker + step214ug.exe/iges.exe)
|
||||||
|
- 不需要装 VS Build Tools(GenServer.exe 已编译好;只有改 GenServer 代码才要重编译)
|
||||||
|
|
||||||
|
## 3. 必须改的 3 处(按服务器实际路径/版本改)
|
||||||
|
|
||||||
|
### ① `genserver-local\genserver-config.json` —— 改绝对路径
|
||||||
|
|
||||||
|
当前是 `d:\开发\OnebotCatalog\...`,改成服务器实际路径。`nxBin` 留空即可(GenServer 自动探测 `C:\Program Files\Siemens\NX*\NXBIN`,能覆盖 2512)。
|
||||||
|
|
||||||
|
### ② `_start_all.bat` —— 改 run_journal 路径
|
||||||
|
|
||||||
|
第 4 步写死了 `C:\Program Files\Siemens\NX2506\NXBIN\run_journal.exe`,**要改成 NX2512**(或改成自动探测)。
|
||||||
|
|
||||||
|
### ③ `release\web_2026.08\config.js` —— 改生成服务地址
|
||||||
|
|
||||||
|
```js
|
||||||
|
window.GEN_CONFIG = { api: "http://localhost:8899" };
|
||||||
|
```
|
||||||
|
- 网页与生成服务**同机** → 保持 `localhost:8899` 不用改
|
||||||
|
- 不同机 → 改成服务器 IP,如 `http://192.168.x.x:8899`
|
||||||
|
|
||||||
|
## 4. 验证步骤
|
||||||
|
|
||||||
|
1. 启动:`_start_all.bat`(会自动 编译→启动 GenServer→启动 worker→health 自检)
|
||||||
|
2. 浏览器开 `http://<服务器>:8080`,看底部信息栏圆球变**绿**(服务就绪)
|
||||||
|
3. 选 KC 系列,stroke 填 87(非标),点【在线生成数模】
|
||||||
|
4. 生成完 → 网页内 3D 预览 → 选格式 → 下载
|
||||||
|
5. 打开 `output\KC\KC0032-87\KC0032-87.stp` 确认含实体(几十 KB,非 2KB 空壳)
|
||||||
|
|
||||||
|
## 5. 注意点
|
||||||
|
|
||||||
|
- **NX 2512 的 journal API 需实测**:worker 的反射探针结论基于 2506,2512 的 `OpenBaseDisplay/EditExp/CloseAll` 是否一致,换机后第一次跑要盯日志。
|
||||||
|
- **`step214ug.exe`/`iges.exe` 是独立命令行工具**,跨版本大概率稳定,不依赖 NX 会话。
|
||||||
|
- **license 席位**:跑 worker 前确认交互式 NX 已关(批处理需独立席位)。
|
||||||
|
- 若 nxBin 自动探测不到(NX 装自定义路径),用 `/admin` 页手动选 NX 目录。
|
||||||
|
- **后台 `/admin` 密码登录**:默认密码 `onebot888`(在 `genserver-local\genserver-config.json` 的 `adminKey` 字段改)。后台三 tab:UG 配置 / 参数配置 / 模型管理。
|
||||||
72
dump_cra.py
Normal file
72
dump_cra.py
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
德国大众 CRA 问卷导出脚本
|
||||||
|
作用:把 xlsx 全部内容(所有 sheet / 单元格 / 合并区域)导出为纯文本,
|
||||||
|
存到 d:\开发\OnebotCatalog\cra_dump.txt,方便 AI 直接读取并翻译。
|
||||||
|
"""
|
||||||
|
import sys, io, os
|
||||||
|
|
||||||
|
# 强制 UTF-8 输出,避免中文/德语乱码
|
||||||
|
try:
|
||||||
|
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8")
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
SRC = r"C:\Users\ruigu\Downloads\文档说明.html\20260826德国大众的要求文件\MAGSWITCH TECHNOLOGY EUROPE_CRA_Abfrage.xlsx"
|
||||||
|
OUT = r"d:\开发\OnebotCatalog\cra_dump.txt"
|
||||||
|
|
||||||
|
def main():
|
||||||
|
if not os.path.exists(SRC):
|
||||||
|
print("!! 找不到源文件:", SRC)
|
||||||
|
return
|
||||||
|
|
||||||
|
try:
|
||||||
|
import openpyxl
|
||||||
|
except ImportError:
|
||||||
|
print("!! 缺少 openpyxl,正在尝试安装...")
|
||||||
|
import subprocess
|
||||||
|
subprocess.check_call([sys.executable, "-m", "pip", "install", "openpyxl", "-q"])
|
||||||
|
import openpyxl
|
||||||
|
|
||||||
|
wb = openpyxl.load_workbook(SRC, data_only=False)
|
||||||
|
|
||||||
|
lines = []
|
||||||
|
lines.append("FILE: " + SRC)
|
||||||
|
lines.append("SHEETS: " + " | ".join(wb.sheetnames))
|
||||||
|
lines.append("=" * 80)
|
||||||
|
|
||||||
|
for ws in wb.worksheets:
|
||||||
|
lines.append("")
|
||||||
|
lines.append("#" * 80)
|
||||||
|
lines.append(f"## SHEET: {ws.title} (max_row={ws.max_row}, max_col={ws.max_column})")
|
||||||
|
lines.append("#" * 80)
|
||||||
|
|
||||||
|
# 合并单元格信息
|
||||||
|
if ws.merged_cells.ranges:
|
||||||
|
lines.append("MERGED: " + ", ".join(str(r) for r in ws.merged_cells.ranges))
|
||||||
|
|
||||||
|
for row in ws.iter_rows():
|
||||||
|
cells = []
|
||||||
|
for c in row:
|
||||||
|
v = c.value
|
||||||
|
if v is None:
|
||||||
|
v = ""
|
||||||
|
v = str(v).replace("\n", "\\n")
|
||||||
|
if v != "":
|
||||||
|
cells.append(f"{c.coordinate}={v}")
|
||||||
|
if cells:
|
||||||
|
lines.append(" | ".join(cells))
|
||||||
|
|
||||||
|
text = "\n".join(lines)
|
||||||
|
with open(OUT, "w", encoding="utf-8") as f:
|
||||||
|
f.write(text)
|
||||||
|
|
||||||
|
print("DONE")
|
||||||
|
print("已导出到:", OUT)
|
||||||
|
print("总行数:", len(lines))
|
||||||
|
print("---- 内容预览(前 60 行)----")
|
||||||
|
for l in lines[:60]:
|
||||||
|
print(l)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
85
dump_motor_pdf.py
Normal file
85
dump_motor_pdf.py
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""提取电机 PDF 数据手册的文字内容,输出到 motor_pdf_dump.txt"""
|
||||||
|
import sys, io, os
|
||||||
|
|
||||||
|
try:
|
||||||
|
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8")
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
SRC = r"C:\Users\ruigu\Downloads\DS-LE-INTEGRATED-EN(002) (1).pdf"
|
||||||
|
OUT = r"d:\开发\OnebotCatalog\motor_pdf_dump.txt"
|
||||||
|
|
||||||
|
def try_extract():
|
||||||
|
joined = ""
|
||||||
|
|
||||||
|
# 1) pypdf
|
||||||
|
try:
|
||||||
|
from pypdf import PdfReader
|
||||||
|
r = PdfReader(SRC)
|
||||||
|
parts = []
|
||||||
|
for i, p in enumerate(r.pages):
|
||||||
|
parts.append(f"--- PAGE {i+1} ---\n" + (p.extract_text() or ""))
|
||||||
|
joined = "\n".join(parts)
|
||||||
|
if len(joined.strip()) > 50:
|
||||||
|
return "pypdf", len(r.pages), joined
|
||||||
|
except Exception as e:
|
||||||
|
print("[pypdf fail]", repr(e))
|
||||||
|
|
||||||
|
# 2) PyPDF2
|
||||||
|
try:
|
||||||
|
import PyPDF2
|
||||||
|
r = PyPDF2.PdfReader(SRC)
|
||||||
|
parts = []
|
||||||
|
for i, p in enumerate(r.pages):
|
||||||
|
parts.append(f"--- PAGE {i+1} ---\n" + (p.extract_text() or ""))
|
||||||
|
joined = "\n".join(parts)
|
||||||
|
if len(joined.strip()) > 50:
|
||||||
|
return "PyPDF2", len(r.pages), joined
|
||||||
|
except Exception as e:
|
||||||
|
print("[PyPDF2 fail]", repr(e))
|
||||||
|
|
||||||
|
# 3) pdfplumber
|
||||||
|
try:
|
||||||
|
import pdfplumber
|
||||||
|
parts = []
|
||||||
|
with pdfplumber.open(SRC) as pdf:
|
||||||
|
for i, p in enumerate(pdf.pages):
|
||||||
|
parts.append(f"--- PAGE {i+1} ---\n" + (p.extract_text() or ""))
|
||||||
|
joined = "\n".join(parts)
|
||||||
|
if len(joined.strip()) > 50:
|
||||||
|
return "pdfplumber", len(parts), joined
|
||||||
|
except Exception as e:
|
||||||
|
print("[pdfplumber fail]", repr(e))
|
||||||
|
|
||||||
|
# 4) pdfminer.six
|
||||||
|
try:
|
||||||
|
from pdfminer.high_level import extract_text
|
||||||
|
joined = extract_text(SRC)
|
||||||
|
if len(joined.strip()) > 50:
|
||||||
|
return "pdfminer", "?", joined
|
||||||
|
except Exception as e:
|
||||||
|
print("[pdfminer fail]", repr(e))
|
||||||
|
|
||||||
|
return None, 0, ""
|
||||||
|
|
||||||
|
def main():
|
||||||
|
if not os.path.exists(SRC):
|
||||||
|
print("MISSING:", SRC)
|
||||||
|
return
|
||||||
|
|
||||||
|
lib, pages, text = try_extract()
|
||||||
|
if not lib:
|
||||||
|
print("NO_TEXT_EXTRACTED(可能是扫描/图片型 PDF)")
|
||||||
|
return
|
||||||
|
|
||||||
|
with open(OUT, "w", encoding="utf-8") as f:
|
||||||
|
f.write(text)
|
||||||
|
print("DONE")
|
||||||
|
print("库:", lib, "| 页数:", pages, "| 字符数:", len(text))
|
||||||
|
print("输出:", OUT)
|
||||||
|
print("=" * 60)
|
||||||
|
print(text[:4000])
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
24
genserver-local/_clear_jobs.bat
Normal file
24
genserver-local/_clear_jobs.bat
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
@echo off
|
||||||
|
setlocal
|
||||||
|
cd /d "%~dp0"
|
||||||
|
|
||||||
|
echo ==== clear queued jobs in jobs dir ====
|
||||||
|
echo files to delete:
|
||||||
|
dir /b "jobs\job_*.json" 2>nul
|
||||||
|
dir /b "jobs\job_*.running" 2>nul
|
||||||
|
dir /b "jobs\job_*.done" 2>nul
|
||||||
|
dir /b "jobs\job_*.prog" 2>nul
|
||||||
|
dir /b "jobs\job_*.tok" 2>nul
|
||||||
|
|
||||||
|
del /Q "jobs\job_*.json" 2>nul
|
||||||
|
del /Q "jobs\job_*.running" 2>nul
|
||||||
|
del /Q "jobs\job_*.done" 2>nul
|
||||||
|
del /Q "jobs\job_*.prog" 2>nul
|
||||||
|
del /Q "jobs\job_*.tok" 2>nul
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ==== done. remaining in jobs dir: ====
|
||||||
|
dir /b "jobs" 2>nul
|
||||||
|
echo.
|
||||||
|
echo Note: output dir is NOT cleared. Re-request same code will hit cached files.
|
||||||
|
endlocal
|
||||||
27
genserver-local/_fulltest.bat
Normal file
27
genserver-local/_fulltest.bat
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
@echo off
|
||||||
|
setlocal
|
||||||
|
cd /d "%~dp0"
|
||||||
|
|
||||||
|
echo ==== 1. Stop old GenServer (if any), then start new ====
|
||||||
|
taskkill /F /IM GenServer.exe >nul 2>nul
|
||||||
|
timeout /t 1 /nobreak >nul
|
||||||
|
start "GenServer" /min "%~dp0..\bin\GenServer.exe" "%~dp0genserver-config.json"
|
||||||
|
timeout /t 2 /nobreak >nul
|
||||||
|
|
||||||
|
echo ==== 2. Health check ====
|
||||||
|
powershell -NoProfile -Command "try { (Invoke-RestMethod -Uri 'http://localhost:8899/health' -TimeoutSec 5) | ConvertTo-Json } catch { Write-Host 'health FAIL: ' $_.Exception.Message }"
|
||||||
|
|
||||||
|
echo ==== 3. Trigger non-standard gen (KC0032-87) ====
|
||||||
|
powershell -NoProfile -Command "try { (Invoke-RestMethod -Method Post -Uri 'http://localhost:8899/gen' -Body '{\"series\":\"KC\",\"params\":{\"type\":\"00\",\"bore\":32,\"stroke\":87,\"magnet\":\"\",\"mount\":\"\"},\"code\":\"KC0032-87\"}' -ContentType 'application/json' -TimeoutSec 5) | ConvertTo-Json } catch { Write-Host 'gen FAIL: ' $_.Exception.Message }"
|
||||||
|
|
||||||
|
echo ==== 4. Latest job file (newest first) ====
|
||||||
|
dir /b /o-d "jobs\job_*.json" 2>nul
|
||||||
|
|
||||||
|
echo ==== 5. worker-config.txt (check nxBin line present) ====
|
||||||
|
type "worker-config.txt"
|
||||||
|
|
||||||
|
echo ==== 6. Output dir (generated models land here) ====
|
||||||
|
dir /b /s "output" 2>nul
|
||||||
|
|
||||||
|
echo ==== done ====
|
||||||
|
endlocal
|
||||||
28
genserver-local/_restart_test.bat
Normal file
28
genserver-local/_restart_test.bat
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
@echo off
|
||||||
|
setlocal
|
||||||
|
cd /d "%~dp0"
|
||||||
|
|
||||||
|
echo ==== 1. stop old GenServer ====
|
||||||
|
taskkill /F /IM GenServer.exe >nul 2>nul
|
||||||
|
timeout /t 1 /nobreak >nul
|
||||||
|
|
||||||
|
echo ==== 2. start GenServer (D-disk config) ====
|
||||||
|
start "GenServer" /min "%~dp0..\bin\GenServer.exe" "%~dp0genserver-config.json"
|
||||||
|
timeout /t 2 /nobreak >nul
|
||||||
|
|
||||||
|
echo ==== 3. health check ====
|
||||||
|
curl.exe -s http://localhost:8899/health
|
||||||
|
echo.
|
||||||
|
|
||||||
|
echo ==== 4. trigger /gen (KC0032-87) ====
|
||||||
|
curl.exe -s -X POST http://localhost:8899/gen -H "Content-Type: application/json" -d "{\"series\":\"KC\",\"params\":{\"type\":\"00\",\"bore\":32,\"stroke\":87,\"magnet\":\"\",\"mount\":\"\"},\"code\":\"KC0032-87\"}"
|
||||||
|
echo.
|
||||||
|
|
||||||
|
echo ==== 5. worker-config.txt (expect D-disk paths + nxBin) ====
|
||||||
|
type "worker-config.txt"
|
||||||
|
|
||||||
|
echo ==== 6. newest job files in D-disk jobs dir ====
|
||||||
|
dir /b /o-d "jobs\job_*.json" 2>nul
|
||||||
|
|
||||||
|
echo ==== done ====
|
||||||
|
endlocal
|
||||||
11
genserver-local/_trigger.bat
Normal file
11
genserver-local/_trigger.bat
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
@echo off
|
||||||
|
setlocal
|
||||||
|
cd /d "%~dp0"
|
||||||
|
echo ==== trigger /gen (KC0032-87, non-standard stroke) ====
|
||||||
|
curl.exe -s -X POST http://localhost:8899/gen -H "Content-Type: application/json" -d "{\"series\":\"KC\",\"params\":{\"type\":\"00\",\"bore\":32,\"stroke\":87,\"magnet\":\"\",\"mount\":\"\"},\"code\":\"KC0032-87\"}"
|
||||||
|
echo.
|
||||||
|
echo exit = %ERRORLEVEL%
|
||||||
|
echo.
|
||||||
|
echo ==== newest job files ====
|
||||||
|
dir /b /o-d "jobs\job_*.json" 2>nul
|
||||||
|
endlocal
|
||||||
27
genserver-local/_worker_check.bat
Normal file
27
genserver-local/_worker_check.bat
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
@echo off
|
||||||
|
setlocal
|
||||||
|
cd /d "%~dp0"
|
||||||
|
|
||||||
|
echo ==== 1. worker and NX processes ====
|
||||||
|
tasklist /FI "IMAGENAME eq run_journal.exe" | find /I "run_journal" >nul
|
||||||
|
if %errorlevel%==0 (echo worker RUNNING) else (echo worker NOT running)
|
||||||
|
tasklist /FI "IMAGENAME eq ugraf.exe" | find /I "ugraf.exe" >nul
|
||||||
|
if %errorlevel%==0 (echo NX ugraf RUNNING) else (echo NX ugraf not running)
|
||||||
|
|
||||||
|
echo ==== 2. job state files newest first ====
|
||||||
|
dir /b /o-d "jobs" 2>nul
|
||||||
|
|
||||||
|
echo ==== 3. output dir generated models ====
|
||||||
|
dir /b /s "output" 2>nul
|
||||||
|
|
||||||
|
echo ==== 4. latest done file content ====
|
||||||
|
set "doned="
|
||||||
|
for /f "delims=" %%f in ('dir /b /o-d "jobs\job_*.done" 2^>nul') do if not defined doned set "doned=%%f"
|
||||||
|
if defined doned (
|
||||||
|
echo --- %doned% ---
|
||||||
|
type "jobs\%doned%"
|
||||||
|
) else (
|
||||||
|
echo no .done file yet
|
||||||
|
)
|
||||||
|
|
||||||
|
endlocal
|
||||||
28
genserver-local/_worker_start.bat
Normal file
28
genserver-local/_worker_start.bat
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
@echo off
|
||||||
|
setlocal
|
||||||
|
cd /d "%~dp0"
|
||||||
|
|
||||||
|
echo ==== 1. check GenServer running ====
|
||||||
|
tasklist /FI "IMAGENAME eq GenServer.exe" | find /I "GenServer.exe" >nul
|
||||||
|
if not %errorlevel%==0 echo WARNING GenServer NOT running. Run _restart_test.bat first.
|
||||||
|
|
||||||
|
echo ==== 2. check interactive NX ugraf ====
|
||||||
|
tasklist /FI "IMAGENAME eq ugraf.exe" | find /I "ugraf.exe" >nul
|
||||||
|
if %errorlevel%==0 goto nx_running
|
||||||
|
|
||||||
|
echo ==== 3. start NX worker ====
|
||||||
|
start "NXworker" /min "C:\Program Files\Siemens\NX2506\NXBIN\run_journal.exe" "%~dp0..\sample-data\tools\worker_journal.vb"
|
||||||
|
echo.
|
||||||
|
echo worker started in background. NX cold start 30-90s.
|
||||||
|
echo Then run _worker_check.bat to see generated STEP.
|
||||||
|
echo.
|
||||||
|
goto :eof
|
||||||
|
|
||||||
|
:nx_running
|
||||||
|
echo.
|
||||||
|
echo !!! interactive NX ugraf is RUNNING.
|
||||||
|
echo worker competes for the NX license seat.
|
||||||
|
echo Close NX, then re-run this script.
|
||||||
|
echo.
|
||||||
|
pause
|
||||||
|
endlocal
|
||||||
19
genserver-local/genserver-config.json
Normal file
19
genserver-local/genserver-config.json
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"note": "本机联调配置 (绝对路径; 生产部署用 onebot-data\\genserver-config.json 模板并改 apiKey)。apiKey 留空 = 匿名模式 (仅限流保护), 仅限本机/内网联调。",
|
||||||
|
"port": 8899,
|
||||||
|
"apiKey": "",
|
||||||
|
"adminKey": "onebot888",
|
||||||
|
"dataDir": "d:\\开发\\OnebotCatalog\\onebot-data\\catalog",
|
||||||
|
"mastersJson": "d:\\开发\\OnebotCatalog\\onebot-data\\masters.json",
|
||||||
|
"mastersDir": "d:\\开发\\OnebotCatalog\\catalog-masters",
|
||||||
|
"outputDir": "d:\\开发\\OnebotCatalog\\genserver-local\\output",
|
||||||
|
"jobsDir": "d:\\开发\\OnebotCatalog\\genserver-local\\jobs",
|
||||||
|
"workDir": "d:\\开发\\OnebotCatalog\\genserver-local\\work",
|
||||||
|
"queueLimit": 200,
|
||||||
|
"batchLimit": 50,
|
||||||
|
"ratePerMin": 100,
|
||||||
|
"workTtlHours": 2,
|
||||||
|
"jobArchiveHours": 24,
|
||||||
|
"outputTtlHours": 0,
|
||||||
|
"sweepIntervalMin": 10
|
||||||
|
}
|
||||||
246
genserver-local/probe.txt
Normal file
246
genserver-local/probe.txt
Normal file
@@ -0,0 +1,246 @@
|
|||||||
|
=== 类型 (Dex/Stl/Update/Translator/Step/Iges) ===
|
||||||
|
T: NXOpen.DexBuilder
|
||||||
|
T: NXOpen.DexManager
|
||||||
|
T: NXOpen.ParasolidExporter
|
||||||
|
T: NXOpen.PartDelayedUpdateStatus
|
||||||
|
T: NXOpen.STLCreator
|
||||||
|
T: NXOpen.STLImporter
|
||||||
|
T: NXOpen.Update
|
||||||
|
T: NXOpen.Weld.WeldRootUpdate
|
||||||
|
T: NXOpen.Weld.WeldFacesetIndex
|
||||||
|
T: NXOpen.Tooling.DieDesTrmStlFeatBuilder
|
||||||
|
T: NXOpen.Tooling.DieEngProcessUpdateManagerBuilder
|
||||||
|
T: NXOpen.Tooling.GuidedExtensionBuilder
|
||||||
|
T: NXOpen.Tooling.GuidedExtensionManager
|
||||||
|
T: NXOpen.Tooling.MoldExplosionBuilder
|
||||||
|
T: NXOpen.Tooling.MoldExplosionCollection
|
||||||
|
T: NXOpen.Tooling.RenameAndExportComponentBuilder
|
||||||
|
T: NXOpen.Tooling.RenameAndExportComponentTeamcenterBuilder
|
||||||
|
T: NXOpen.Tooling.SmartScrewUpdateBuilder
|
||||||
|
T: NXOpen.SIM.PostConfigurator.UpdatePostprocessorBuilder
|
||||||
|
T: NXOpen.PcbExchange.CompareAndUpdateBuilder
|
||||||
|
T: NXOpen.PcbExchange.EcadExportBuilder
|
||||||
|
T: NXOpen.ModlUtils.ResolveUpdateStatusBuilder
|
||||||
|
T: NXOpen.Mechatronics.ECADExportBuilder
|
||||||
|
T: NXOpen.MechanicalRouting.UpdateRunBuilder
|
||||||
|
T: NXOpen.GeometricUtilities.InstanceEditedExpressionItem
|
||||||
|
T: NXOpen.GeometricUtilities.InstanceEditedExpressionItemList
|
||||||
|
T: NXOpen.GeometricUtilities.InstanceEditedExpressionsList
|
||||||
|
T: NXOpen.GeometricUtilities.SelectionListList
|
||||||
|
T: NXOpen.Formboard.UpdateDiscrepancy
|
||||||
|
T: NXOpen.Formboard.UpdateFormboardBuilder
|
||||||
|
T: NXOpen.Fields.FieldExpression
|
||||||
|
T: NXOpen.Features.CustomFeatureInternalFeaturePreUpdateEvent
|
||||||
|
T: NXOpen.Features.CustomFeaturePostUpdateEvent
|
||||||
|
T: NXOpen.Features.CustomFeaturePreUpdateEvent
|
||||||
|
T: NXOpen.Features.GuidedExtensionBuilderEx
|
||||||
|
T: NXOpen.Features.GuidedExtensionEx
|
||||||
|
T: NXOpen.Features.TrimAndExtend
|
||||||
|
T: NXOpen.Features.TrimAndExtendBuilder
|
||||||
|
T: NXOpen.Features.UserDefinedFeatureUpdateEvent
|
||||||
|
T: NXOpen.Features.ShipDesign.UpdateProjectBuilder
|
||||||
|
T: NXOpen.Features.ShipDesign.UpdateShipLibrary
|
||||||
|
T: NXOpen.Features.ShipDesign.UpdateShipLibraryBuilder
|
||||||
|
T: NXOpen.Facet.STLImportBuilder
|
||||||
|
T: NXOpen.Drawings.UpdateViewsBuilder
|
||||||
|
T: NXOpen.CAE.CorrelModelUpdateDesignVariable
|
||||||
|
T: NXOpen.CAE.CorrelModelUpdateDesignVariableCollection
|
||||||
|
T: NXOpen.CAE.DurSpecialistLoadEventListBuilder
|
||||||
|
T: NXOpen.CAE.DurSpecialistLoadLength
|
||||||
|
T: NXOpen.CAE.DurSpecialistLoadLengthBuilder
|
||||||
|
T: NXOpen.CAE.DurSpecialistLocalDefinition
|
||||||
|
T: NXOpen.CAE.DurSpecialistLocalDefinitionBuilder
|
||||||
|
T: NXOpen.CAE.DurSpecialistLocalDefinitionCollection
|
||||||
|
T: NXOpen.CAE.ModelAndLoadPreProcessLoadExtrusion
|
||||||
|
T: NXOpen.CAE.ModelAndLoadPreProcessLoadExtrusionBuilder
|
||||||
|
T: NXOpen.CAE.ModelUpdateConstraint
|
||||||
|
T: NXOpen.CAE.ModelUpdateConstraintBuilder
|
||||||
|
T: NXOpen.CAE.ModelUpdateConstraintCollection
|
||||||
|
T: NXOpen.CAE.ModelUpdateCorrelMethodBuilder
|
||||||
|
T: NXOpen.CAE.ModelUpdateDesignVariable
|
||||||
|
T: NXOpen.CAE.ModelUpdateDesignVariableBuilder
|
||||||
|
T: NXOpen.CAE.ModelUpdateDesignVariablesCollection
|
||||||
|
T: NXOpen.CAE.ModelUpdateDesignVariablesRapidCreateBuilder
|
||||||
|
T: NXOpen.CAE.ModelUpdateDiscreteVariableValueBuilder
|
||||||
|
T: NXOpen.CAE.ModelUpdateDiscreteVariableValueBuilderList
|
||||||
|
T: NXOpen.CAE.ModelUpdateObjective
|
||||||
|
T: NXOpen.CAE.ModelUpdateObjectiveCollection
|
||||||
|
T: NXOpen.CAE.ModelUpdateOptimizeSettingsBuilder
|
||||||
|
T: NXOpen.CAE.ModelUpdateOptimOptionsBuilder
|
||||||
|
T: NXOpen.CAE.ModelUpdateOptionsBuilder
|
||||||
|
T: NXOpen.CAE.ModelUpdateOverallWeightsBuilder
|
||||||
|
T: NXOpen.CAE.ModelUpdatePlusSolution
|
||||||
|
T: NXOpen.CAE.ModelUpdateResponseType
|
||||||
|
T: NXOpen.CAE.ModelUpdateResponseOptions
|
||||||
|
T: NXOpen.CAE.ModelUpdateResponse
|
||||||
|
T: NXOpen.CAE.ModelUpdateResponseCollection
|
||||||
|
T: NXOpen.CAE.ModelUpdateSensitivityViewerBuilder
|
||||||
|
T: NXOpen.CAE.ModelUpdateShapeSolution
|
||||||
|
T: NXOpen.CAE.ModelUpdateSolution
|
||||||
|
T: NXOpen.CAE.ModelUpdateSolutionBuilder
|
||||||
|
T: NXOpen.CAE.ModelUpdateSolutionCollection
|
||||||
|
T: NXOpen.CAE.ModelUpdateSolutionSet
|
||||||
|
T: NXOpen.CAE.ModelUpdateSolutionSetCollection
|
||||||
|
T: NXOpen.CAE.ModelUpdateSolutionSetDesignVariableCollection
|
||||||
|
T: NXOpen.CAE.PostLegend
|
||||||
|
T: NXOpen.CAE.PostLegendPreference
|
||||||
|
T: NXOpen.CAE.StlImportBuilder
|
||||||
|
T: NXOpen.CAE.ResponseSimulation.CSDExcitation
|
||||||
|
T: NXOpen.CAE.ResponseSimulation.CSDExcitationBuilder
|
||||||
|
T: NXOpen.CAE.ResponseSimulation.DistributedLoadExcitation
|
||||||
|
T: NXOpen.CAE.ResponseSimulation.DistributedLoadExcitationBuilder
|
||||||
|
T: NXOpen.CAE.ResponseSimulation.StaticLoadExcitation
|
||||||
|
T: NXOpen.CAE.ResponseSimulation.StaticLoadExcitationBuilder
|
||||||
|
T: NXOpen.CAE.AeroStructures.FreeBodyLoadExtraction
|
||||||
|
T: NXOpen.CAE.AeroStructures.LoadExtractionStrategy
|
||||||
|
T: NXOpen.CAE.AeroStructures.LoadExtractionValue
|
||||||
|
T: NXOpen.CAE.AeroStructures.ManualLoadExtraction
|
||||||
|
T: NXOpen.CAE.AeroStructures.UserLoadExtraction
|
||||||
|
T: NXOpen.Assemblies.UpdateDesignElementPositionBuilder
|
||||||
|
T: NXOpen.Assemblies.UpdateStructureBuilder
|
||||||
|
T: NXOpen.AECDesign.LevelSymbolIndex
|
||||||
|
T: NXOpen.LoadOptions+UpdateSubsetOnLoad
|
||||||
|
T: NXOpen.MassPropertiesBuilder+UpdateOptions
|
||||||
|
T: NXOpen.ParasolidExporter+ExportFromOption
|
||||||
|
T: NXOpen.ParasolidExporter+ParasolidVersionOption
|
||||||
|
T: NXOpen.Part+FeatureUpdateStatus
|
||||||
|
T: NXOpen.Part+_FeatureUpdateStatus
|
||||||
|
T: NXOpen.Part+UpdateFromJtFileOptions
|
||||||
|
T: NXOpen.PartDelayedUpdateStatus+DelayStatusInfo
|
||||||
|
T: NXOpen.Sketch+UpdateLevel
|
||||||
|
T: NXOpen.SmartObject+UpdateOption
|
||||||
|
T: NXOpen.STLCreator+OutputTypeEnum
|
||||||
|
T: NXOpen.STLCreator+SheetBodyExportOptionEnum
|
||||||
|
T: NXOpen.STLImporter+AngularToleranceType
|
||||||
|
T: NXOpen.STLImporter+FileUnitsType
|
||||||
|
T: NXOpen.STLImporter+FileFormatType
|
||||||
|
T: NXOpen.Update+Option
|
||||||
|
T: NXOpen.Update+FailureOption
|
||||||
|
T: NXOpen.Validation+UpdateTime
|
||||||
|
T: NXOpen.Validate.PartOrientationAnalysisResult+CheckerIndex
|
||||||
|
T: NXOpen.UserDefinedTemplate.ConfigurableObject+UpdateType
|
||||||
|
T: NXOpen.Tooling.ConcurrentDesignManagementBuilder+UpdateTypes
|
||||||
|
T: NXOpen.Tooling.CopySolidBuilder+PartItemUpdateType
|
||||||
|
T: NXOpen.Tooling.DieDesTrmStlFeatBuilder+ScrapCutterDesTypes
|
||||||
|
T: NXOpen.Tooling.DieEngProcessUpdateManagerBuilder+Types
|
||||||
|
T: NXOpen.Tooling.GuidedExtensionBuilder+SegmentType
|
||||||
|
T: NXOpen.Tooling.HoleManufacturingNoteBuilder+HoleIndexType
|
||||||
|
T: NXOpen.Tooling.MoldDirectionBuilder+SlopeUpdateItem
|
||||||
|
T: NXOpen.Tooling.MoldDirectionBuilder+RadiusUpdateItem
|
||||||
|
T: NXOpen.Tooling.MoldExplosionBuilder+MotionTypes
|
||||||
|
T: NXOpen.Tooling.MoldExplosionBuilder+MoldProcessTypes
|
||||||
|
T: NXOpen.Tooling.MoldExplosionBuilder+MoldPlateStyle
|
||||||
|
T: NXOpen.Tooling.MoldExplosionBuilder+EjectProductType
|
||||||
|
T: NXOpen.Tooling.MWDesignPartingSurfaceBuilder+TrimAndExtendFromRegionType
|
||||||
|
T: NXOpen.Tooling.RenameAndExportComponentBuilder+NamingRuleType
|
||||||
|
T: NXOpen.Tooling.RenameAndExportComponentBuilder+NameRuleType
|
||||||
|
T: NXOpen.Tooling.RenameAndExportComponentBuilder+Types
|
||||||
|
T: NXOpen.Tooling.RenameAndExportComponentBuilder+DefinitionType
|
||||||
|
T: NXOpen.Tooling.RenameAndExportComponentBuilder+LoadOptionType
|
||||||
|
T: NXOpen.Tooling.SmartScrewUpdateBuilder+Types
|
||||||
|
T: NXOpen.Tooling.SmartScrewUpdateBuilder+ParentOption
|
||||||
|
T: NXOpen.StructureDesign.Frame3DManager+UpdateLevel
|
||||||
|
T: NXOpen.SIM.PostConfigurator.UpdatePostprocessorBuilder+UpdatePostprocessorType
|
||||||
|
T: NXOpen.Routing.ControlPointCollection+FoundExisting
|
||||||
|
T: NXOpen.Preferences.ModelingPreferencesBuilder+ModelDelayAndUpdateGranularity
|
||||||
|
T: NXOpen.Preferences.ModelingPreferencesBuilder+DynamicUpdateMode
|
||||||
|
T: NXOpen.Preferences.ModelingPreferencesBuilder+DynamicsUpdateLevel
|
||||||
|
T: NXOpen.Preferences.PartDrafting+UpdateViewWithoutLwDataOption
|
||||||
|
T: NXOpen.Preferences.PartVisualizationShade+ViewUpdateModeType
|
||||||
|
T: NXOpen.Preferences.SessionModeling+LinkedAndExtractedGeometryPropertiesInheritance
|
||||||
|
T: NXOpen.Preferences.SessionModeling+DynamicUpdateType
|
||||||
|
T: NXOpen.Preferences.SessionModeling+ModelDelayUpdateGranilarityType
|
||||||
|
T: NXOpen.Preferences.SessionPdm+JtUpdateFromSourceType
|
||||||
|
T: NXOpen.PcbExchange.CompareAndUpdateBuilder+EcadLocationEnum
|
||||||
|
T: NXOpen.PcbExchange.CompareAndUpdateBuilder+CompareEnum
|
||||||
|
T: NXOpen.PcbExchange.CompareAndUpdateBuilder+BoardUpdateEnum
|
||||||
|
T: NXOpen.PcbExchange.CompareAndUpdateBuilder+AssemblyUpdateEnum
|
||||||
|
T: NXOpen.PcbExchange.EcadExportBuilder+FileFormatEnum
|
||||||
|
T: NXOpen.PcbExchange.EcadExportBuilder+EcadLocationEnum
|
||||||
|
T: NXOpen.PcbExchange.EcadExportBuilder+ExportUnitsEnum
|
||||||
|
T: NXOpen.PcbExchange.StructuralSolutionBuilder+UpdateOption
|
||||||
|
T: NXOpen.PcbExchange.ThermalSolutionBuilder+UpdateOption
|
||||||
|
T: NXOpen.PcbExchange.VariantManagerBuilder+UpdateOptionEnum
|
||||||
|
T: NXOpen.PcbExchange.VariantManagerBuilder+UpdateTargetEnum
|
||||||
|
T: NXOpen.Motion.MotionSolutionBuilder+NextGenSolverEvaluationUpdate
|
||||||
|
T: NXOpen.Mechatronics.OPCClientBuilder+UpdateMethod
|
||||||
|
T: NXOpen.Mechatronics.WebBuilder+NodeListUpdateTypes
|
||||||
|
T: NXOpen.MechanicalRouting.UpdateRunBuilder+Status
|
||||||
|
T: NXOpen.Layout2d.AssociativeAssemblyBuilder+UpdateDirection
|
||||||
|
T: NXOpen.GeometricUtilities.OnPathDimensionBuilder+UpdateReason
|
||||||
|
T: NXOpen.Formboard.UpdateDiscrepancy+Type
|
||||||
|
T: NXOpen.Formboard.UpdateDiscrepancy+ObjectType
|
||||||
|
T: NXOpen.Fields.FieldExpression+CombineTableOption
|
||||||
|
T: NXOpen.Features.AdmBaseBuilder+UpdateMethodType
|
||||||
|
T: NXOpen.Features.BodyByEquationBuilder+StlFileUnitTypes
|
||||||
|
T: NXOpen.Features.CustomFeatureClass+InternalFeaturePreUpdateCallback
|
||||||
|
T: NXOpen.Features.CustomFeatureClass+_InternalFeaturePreUpdateCallback
|
||||||
|
T: NXOpen.Features.CustomFeatureClass+_CustomFeatureClassInternalFeaturePreUpdateCallbackAdapter
|
||||||
|
T: NXOpen.Features.CustomFeatureClass+PreUpdateCallback
|
||||||
|
T: NXOpen.Features.CustomFeatureClass+_PreUpdateCallback
|
||||||
|
T: NXOpen.Features.CustomFeatureClass+_CustomFeatureClassPreUpdateCallbackAdapter
|
||||||
|
T: NXOpen.Features.CustomFeatureClass+PostUpdateCallback
|
||||||
|
T: NXOpen.Features.CustomFeatureClass+_PostUpdateCallback
|
||||||
|
T: NXOpen.Features.CustomFeatureClass+_CustomFeatureClassPostUpdateCallbackAdapter
|
||||||
|
T: NXOpen.Features.GuidedExtensionBuilderEx+Types
|
||||||
|
T: NXOpen.Features.GuidedExtensionBuilderEx+SegmentType
|
||||||
|
T: NXOpen.Features.TrimAndExtendBuilder+OperationType
|
||||||
|
T: NXOpen.Features.TrimAndExtendBuilder+ArrowSideType
|
||||||
|
T: NXOpen.Features.UserDefinedFeatureClass+UpdateCallback
|
||||||
|
T: NXOpen.Features.UserDefinedFeatureClass+_UpdateCallback
|
||||||
|
T: NXOpen.Features.UserDefinedFeatureClass+_UserDefinedFeatureClassUpdateCallbackAdapter
|
||||||
|
T: NXOpen.Features.ShipDesign.UpdateShipLibraryBuilder+ShipLibOptionType
|
||||||
|
T: NXOpen.Features.ShipDesign.UpdateShipLibraryBuilder+ShipLibAssemblyOption
|
||||||
|
T: NXOpen.Facet.SewFacetBodyBuilder+VertexIndex
|
||||||
|
T: NXOpen.Facet.STLImportBuilder+AngularToleranceTypes
|
||||||
|
T: NXOpen.Facet.STLImportBuilder+STLFileUnitsTypes
|
||||||
|
T: NXOpen.Facet.STLImportBuilder+FacetBodyTypes
|
||||||
|
T: NXOpen.Drawings.DraftingViewCollection+ViewUpdateOption
|
||||||
|
T: NXOpen.Drawings.ViewCommonViewLabelBuilder+SecondaryIndexingType
|
||||||
|
T: NXOpen.Display.FacetSettingsBuilder+FacetUpdate
|
||||||
|
T: NXOpen.CAM.InspectionAlignmentBuilder+RotateTablePcsUpdateOptions
|
||||||
|
T: NXOpen.CAM.InspectionMeasDataBuilder+StlFileUnitsType
|
||||||
|
T: NXOpen.CAM.InspectionPathBuilder+FirstLastType
|
||||||
|
T: NXOpen.CAM.SimulationOptionsBuilder+IpwUpdateMode
|
||||||
|
T: NXOpen.CAE.CorrelModelUpdateDesignVariable+DvType
|
||||||
|
T: NXOpen.CAE.DurSpecialistEvent+UpdateCriterionType
|
||||||
|
T: NXOpen.CAE.DurSpecialistLoadLengthBuilder+Definition
|
||||||
|
T: NXOpen.CAE.DurSpecialistLocalDefinitionBuilder+LocationType
|
||||||
|
T: NXOpen.CAE.DurSpecialistLocalDefinitionBuilder+PlotMaterialType
|
||||||
|
T: NXOpen.CAE.MeshingPreferencesBuilder+MeshUpdateOrder
|
||||||
|
T: NXOpen.CAE.ModelAndLoadPreProcessLoadExtrusionBuilder+SelectionTypeEnum
|
||||||
|
T: NXOpen.CAE.ModelAndLoadPreProcessLoadExtrusionBuilder+ExtrusionMethodEnum
|
||||||
|
T: NXOpen.CAE.ModelAndLoadPreProcessLoadExtrusionBuilder+DistanceCriterionEnum
|
||||||
|
T: NXOpen.CAE.ModelAndLoadPreProcessLoadExtrusionBuilder+HeightCriterionEnum
|
||||||
|
T: NXOpen.CAE.ModelUpdateConstraintBuilder+Type
|
||||||
|
T: NXOpen.CAE.ModelUpdateConstraintBuilder+NormalizationType
|
||||||
|
T: NXOpen.CAE.ModelUpdateCorrelMethodBuilder+Method
|
||||||
|
T: NXOpen.CAE.ModelUpdateDesignVariableBuilder+EditOptions
|
||||||
|
T: NXOpen.CAE.ModelUpdateDesignVariablesRapidCreateBuilder+DesignVariableTypeEnum
|
||||||
|
T: NXOpen.CAE.ModelUpdateDesignVariablesRapidCreateBuilder+MaterialTypesEnum
|
||||||
|
T: NXOpen.CAE.ModelUpdateDesignVariablesRapidCreateBuilder+PhysicalTypesEnum
|
||||||
|
T: NXOpen.CAE.ModelUpdateObjective+RuleType
|
||||||
|
T: NXOpen.CAE.ModelUpdateOptimizeSettingsBuilder+SaveDesignsOption
|
||||||
|
T: NXOpen.CAE.ModelUpdateOptimOptionsBuilder+MethodChoice
|
||||||
|
T: NXOpen.CAE.ModelUpdateOptimOptionsBuilder+SteepestDescMethodChoice
|
||||||
|
T: NXOpen.CAE.ModelUpdateSolution+TargetType
|
||||||
|
T: NXOpen.CAE.PolygonGeometryPreferencesBuilder+UpdateStrategyType
|
||||||
|
T: NXOpen.CAE.StlImportBuilder+StlFileUnitType
|
||||||
|
T: NXOpen.CAE.ResponseSimulation.CSDExcitation+CorrelationType
|
||||||
|
T: NXOpen.CAE.AeroStructures.FreeBodyLoadExtraction+Result
|
||||||
|
T: NXOpen.CAE.AeroStructures.FreeBodyLoadExtraction+Component
|
||||||
|
T: NXOpen.CAE.AeroStructures.LoadExtractionValue+ActiveStrategy
|
||||||
|
T: NXOpen.CAE.AeroStructures.UserLoadExtraction+TargetEntity
|
||||||
|
T: NXOpen.CAE.AeroStructures.UserLoadExtraction+PickMethod
|
||||||
|
T: NXOpen.Annotations.HoleTableSettingsLabelBuilder+IndexType
|
||||||
|
=== Session 成员 (Dex/Update/Export/Create) ===
|
||||||
|
S: 8 get_DexManager
|
||||||
|
S: 8 get_UpdateManager
|
||||||
|
S: 16 DexManager
|
||||||
|
S: 16 UpdateManager
|
||||||
|
=== Part 成员 (Dex/Stl/Export) ===
|
||||||
|
=== PartCollection.CloseAll 重载 ===
|
||||||
|
CA: Void CloseAll(CloseModified, NXOpen.PartCloseResponses)
|
||||||
|
=== Part.Save 重载 ===
|
||||||
|
SV: NXOpen.PartSaveStatus Save(SaveComponents, CloseAfterSave)
|
||||||
|
SV: NXOpen.PartSaveStatus SaveAs(System.String)
|
||||||
352
genserver-local/probe2.txt
Normal file
352
genserver-local/probe2.txt
Normal file
@@ -0,0 +1,352 @@
|
|||||||
|
=== NXOpen.DexManager 成员 ===
|
||||||
|
DM: CreateWavefrontObjImporter
|
||||||
|
DM: CreateWavefrontObjCreator
|
||||||
|
DM: CreateIfcImporter
|
||||||
|
DM: CreateIfcCreator
|
||||||
|
DM: CreateRevitImporter
|
||||||
|
DM: CreateParasolidImporter
|
||||||
|
DM: CreateParasolidExporter
|
||||||
|
DM: CreateValidator
|
||||||
|
DM: CreateExtendedRealityFileCreator
|
||||||
|
DM: CreateGeospatialDataImporter
|
||||||
|
DM: CreateQuickUsdzCreator
|
||||||
|
DM: CreateG3dImporter
|
||||||
|
DM: CreateRhinoImporter
|
||||||
|
DM: CreateThreedxmlImporter
|
||||||
|
DM: CreateInventorImporter
|
||||||
|
DM: get_Tag
|
||||||
|
DM: CreateCatiav4Importer
|
||||||
|
DM: CreateStep214Importer
|
||||||
|
DM: CreateStep242Importer
|
||||||
|
DM: CreateCatiav5Importer
|
||||||
|
DM: CreateIgesImporter
|
||||||
|
DM: CreateStep203Importer
|
||||||
|
DM: CreateDxfdwgImporter
|
||||||
|
DM: CreateIgesCreator
|
||||||
|
DM: CreateStepCreator
|
||||||
|
DM: CreateCatiav4Creator
|
||||||
|
DM: CreateCatiav5Creator
|
||||||
|
DM: CreateDxfdwgCreator
|
||||||
|
DM: CreateNxto2dCreator
|
||||||
|
DM: CreateProeImporter
|
||||||
|
DM: CreateCreoImporter
|
||||||
|
DM: CreateAscImporter
|
||||||
|
DM: CreateAcisImporter
|
||||||
|
DM: CreateAcisExporter
|
||||||
|
DM: CreateStlCreator
|
||||||
|
DM: CreateVirtuallabImporter
|
||||||
|
DM: CreateCreator3mf
|
||||||
|
DM: CreateImporter3mf
|
||||||
|
DM: get_NextSink
|
||||||
|
DM: SyncProcessMessage
|
||||||
|
DM: AsyncProcessMessage
|
||||||
|
DM: GetLifetimeService
|
||||||
|
DM: InitializeLifetimeService
|
||||||
|
DM: CreateObjRef
|
||||||
|
DM: Equals
|
||||||
|
DM: GetHashCode
|
||||||
|
DM: GetType
|
||||||
|
DM: ToString
|
||||||
|
DM: Tag
|
||||||
|
DM: NextSink
|
||||||
|
=== NXOpen.DexBuilder 成员 ===
|
||||||
|
DB: get_ProcessHoldFlag
|
||||||
|
DB: set_ProcessHoldFlag
|
||||||
|
DB: Commit
|
||||||
|
DB: Destroy
|
||||||
|
DB: GetCommittedObjects
|
||||||
|
DB: GetObject
|
||||||
|
DB: ShowResults
|
||||||
|
DB: get_PreviewBuilder
|
||||||
|
DB: Validate
|
||||||
|
DB: get_Tag
|
||||||
|
DB: ToString
|
||||||
|
DB: PrintTestData
|
||||||
|
DB: PrintTestData
|
||||||
|
DB: get_NextSink
|
||||||
|
DB: SyncProcessMessage
|
||||||
|
DB: AsyncProcessMessage
|
||||||
|
DB: GetLifetimeService
|
||||||
|
DB: InitializeLifetimeService
|
||||||
|
DB: CreateObjRef
|
||||||
|
DB: Equals
|
||||||
|
DB: GetHashCode
|
||||||
|
DB: GetType
|
||||||
|
DB: ProcessHoldFlag
|
||||||
|
DB: PreviewBuilder
|
||||||
|
DB: Tag
|
||||||
|
DB: NextSink
|
||||||
|
=== NXOpen.STLCreator 成员 ===
|
||||||
|
ST: get_SheetBodyExportOption
|
||||||
|
ST: set_SheetBodyExportOption
|
||||||
|
ST: get_TriangleDisplay
|
||||||
|
ST: set_TriangleDisplay
|
||||||
|
ST: get_AdjacencyTol
|
||||||
|
ST: set_AdjacencyTol
|
||||||
|
ST: get_AngularTol
|
||||||
|
ST: set_AngularTol
|
||||||
|
ST: get_AutoNormalGen
|
||||||
|
ST: set_AutoNormalGen
|
||||||
|
ST: get_ChordalTol
|
||||||
|
ST: set_ChordalTol
|
||||||
|
ST: get_ErrorMessageDisplay
|
||||||
|
ST: set_ErrorMessageDisplay
|
||||||
|
ST: get_ExportSelectionBlock
|
||||||
|
ST: get_HeaderInfo
|
||||||
|
ST: set_HeaderInfo
|
||||||
|
ST: get_NormalDirectionIndicator
|
||||||
|
ST: set_NormalDirectionIndicator
|
||||||
|
ST: get_NormalDisplay
|
||||||
|
ST: set_NormalDisplay
|
||||||
|
ST: get_OutputType
|
||||||
|
ST: set_OutputType
|
||||||
|
ST: get_ReferenceSurfaceSelectionBlock
|
||||||
|
ST: get_ReverseNormalDirection
|
||||||
|
ST: set_ReverseNormalDirection
|
||||||
|
ST: get_DatasetName
|
||||||
|
ST: set_DatasetName
|
||||||
|
ST: get_ExportDestination
|
||||||
|
ST: set_ExportDestination
|
||||||
|
ST: get_OutputFile
|
||||||
|
ST: set_OutputFile
|
||||||
|
ST: get_OutputFileExtension
|
||||||
|
ST: set_OutputFileExtension
|
||||||
|
ST: get_ProcessHoldFlag
|
||||||
|
ST: set_ProcessHoldFlag
|
||||||
|
ST: Commit
|
||||||
|
ST: Destroy
|
||||||
|
ST: GetCommittedObjects
|
||||||
|
ST: GetObject
|
||||||
|
ST: ShowResults
|
||||||
|
ST: get_PreviewBuilder
|
||||||
|
ST: Validate
|
||||||
|
ST: get_Tag
|
||||||
|
ST: ToString
|
||||||
|
ST: PrintTestData
|
||||||
|
ST: PrintTestData
|
||||||
|
ST: get_NextSink
|
||||||
|
ST: SyncProcessMessage
|
||||||
|
ST: AsyncProcessMessage
|
||||||
|
ST: GetLifetimeService
|
||||||
|
ST: InitializeLifetimeService
|
||||||
|
ST: CreateObjRef
|
||||||
|
ST: Equals
|
||||||
|
ST: GetHashCode
|
||||||
|
ST: GetType
|
||||||
|
ST: AdjacencyTol
|
||||||
|
ST: AngularTol
|
||||||
|
ST: AutoNormalGen
|
||||||
|
ST: ChordalTol
|
||||||
|
ST: ErrorMessageDisplay
|
||||||
|
ST: ExportSelectionBlock
|
||||||
|
ST: HeaderInfo
|
||||||
|
ST: NormalDirectionIndicator
|
||||||
|
ST: NormalDisplay
|
||||||
|
ST: OutputType
|
||||||
|
ST: ReferenceSurfaceSelectionBlock
|
||||||
|
ST: ReverseNormalDirection
|
||||||
|
ST: SheetBodyExportOption
|
||||||
|
ST: TriangleDisplay
|
||||||
|
ST: DatasetName
|
||||||
|
ST: ExportDestination
|
||||||
|
ST: OutputFile
|
||||||
|
ST: OutputFileExtension
|
||||||
|
ST: ProcessHoldFlag
|
||||||
|
ST: PreviewBuilder
|
||||||
|
ST: Tag
|
||||||
|
ST: NextSink
|
||||||
|
ST NESTED: OutputTypeEnum
|
||||||
|
ST = Binary
|
||||||
|
ST = Text
|
||||||
|
ST NESTED: SheetBodyExportOptionEnum
|
||||||
|
ST = IndividualSheets
|
||||||
|
ST = JoinSheets
|
||||||
|
=== NXOpen.ParasolidExporter 成员 ===
|
||||||
|
PS: get_ExportFrom
|
||||||
|
PS: set_ExportFrom
|
||||||
|
PS: get_ExportSelectionBlock
|
||||||
|
PS: get_FlattenAssembly
|
||||||
|
PS: set_FlattenAssembly
|
||||||
|
PS: get_HeaderInformation
|
||||||
|
PS: set_HeaderInformation
|
||||||
|
PS: get_InputFile
|
||||||
|
PS: set_InputFile
|
||||||
|
PS: get_ObjectTypes
|
||||||
|
PS: get_ParasolidVersion
|
||||||
|
PS: set_ParasolidVersion
|
||||||
|
PS: get_DatasetName
|
||||||
|
PS: set_DatasetName
|
||||||
|
PS: get_ExportDestination
|
||||||
|
PS: set_ExportDestination
|
||||||
|
PS: get_OutputFile
|
||||||
|
PS: set_OutputFile
|
||||||
|
PS: get_OutputFileExtension
|
||||||
|
PS: set_OutputFileExtension
|
||||||
|
PS: get_ProcessHoldFlag
|
||||||
|
PS: set_ProcessHoldFlag
|
||||||
|
PS: Commit
|
||||||
|
PS: Destroy
|
||||||
|
PS: GetCommittedObjects
|
||||||
|
PS: GetObject
|
||||||
|
PS: ShowResults
|
||||||
|
PS: get_PreviewBuilder
|
||||||
|
PS: Validate
|
||||||
|
PS: get_Tag
|
||||||
|
PS: ToString
|
||||||
|
PS: PrintTestData
|
||||||
|
PS: PrintTestData
|
||||||
|
PS: get_NextSink
|
||||||
|
PS: SyncProcessMessage
|
||||||
|
PS: AsyncProcessMessage
|
||||||
|
PS: GetLifetimeService
|
||||||
|
PS: InitializeLifetimeService
|
||||||
|
PS: CreateObjRef
|
||||||
|
PS: Equals
|
||||||
|
PS: GetHashCode
|
||||||
|
PS: GetType
|
||||||
|
PS: ExportFrom
|
||||||
|
PS: ExportSelectionBlock
|
||||||
|
PS: FlattenAssembly
|
||||||
|
PS: HeaderInformation
|
||||||
|
PS: InputFile
|
||||||
|
PS: ObjectTypes
|
||||||
|
PS: ParasolidVersion
|
||||||
|
PS: DatasetName
|
||||||
|
PS: ExportDestination
|
||||||
|
PS: OutputFile
|
||||||
|
PS: OutputFileExtension
|
||||||
|
PS: ProcessHoldFlag
|
||||||
|
PS: PreviewBuilder
|
||||||
|
PS: Tag
|
||||||
|
PS: NextSink
|
||||||
|
PS NESTED: ExportFromOption
|
||||||
|
PS = DisplayedPart
|
||||||
|
PS = ExistingPart
|
||||||
|
PS NESTED: ParasolidVersionOption
|
||||||
|
PS = Current
|
||||||
|
PS = Ps370Nx2412
|
||||||
|
PS = Ps361Nx2406
|
||||||
|
PS = Ps360Nx2312
|
||||||
|
PS = Ps351Nx2306
|
||||||
|
PS = Ps350Nx2212
|
||||||
|
PS = Ps341Nx2206
|
||||||
|
PS = Ps340Nx2007
|
||||||
|
PS = Ps331Nx1980
|
||||||
|
PS = Ps330Nx1953
|
||||||
|
PS = Ps320Nx1899
|
||||||
|
PS = Ps310Nx1847
|
||||||
|
PS = Ps301Nx120
|
||||||
|
PS = Ps280Nx110
|
||||||
|
PS = Ps270Nx100
|
||||||
|
PS = Ps260Nx90
|
||||||
|
PS = Ps250Nx85
|
||||||
|
PS = Ps240Nx80
|
||||||
|
PS = Ps221Nx75
|
||||||
|
PS = Ps220Nx70
|
||||||
|
PS = Ps190Nx60
|
||||||
|
PS = Ps180Nx50
|
||||||
|
PS = Ps170Nx40
|
||||||
|
PS = Ps160Nx30
|
||||||
|
PS = Ps150Nx20
|
||||||
|
PS = Ps140Nx10
|
||||||
|
PS = Ps130Ug180
|
||||||
|
PS = Ps120Ug170
|
||||||
|
PS = Ps110Ug160
|
||||||
|
PS = Ps100Ug150
|
||||||
|
PS = Ps91Ug140
|
||||||
|
PS = Ps90Ug130
|
||||||
|
PS = Ps80Ug120
|
||||||
|
PS = Ps71Ug111
|
||||||
|
PS = Ps70Ug110
|
||||||
|
UM [类型未找到: NXOpen.UpdateManager]
|
||||||
|
=== NXOpen.Update 成员 ===
|
||||||
|
UP: UpdateAllLinkedPartModulesInPart
|
||||||
|
UP: AddObjectsToDeleteList
|
||||||
|
UP: RemoveObjectsFromDeleteList
|
||||||
|
UP: GetObjectsOnDeleteList
|
||||||
|
UP: UpdateAllProductInterfaceInPart
|
||||||
|
UP: UpdateModel
|
||||||
|
UP: SetPropagateDelete
|
||||||
|
UP: LogObjectsToMakeUpToDate
|
||||||
|
UP: DoPhasedInterpartUpdate
|
||||||
|
UP: DoAssemblyInterpartUpdate
|
||||||
|
UP: get_AssemblyConstraintsDelay
|
||||||
|
UP: set_AssemblyConstraintsDelay
|
||||||
|
UP: get_ErrorList
|
||||||
|
UP: get_InterpartDelay
|
||||||
|
UP: set_InterpartDelay
|
||||||
|
UP: get_IntrapartPartModuleDelay
|
||||||
|
UP: set_IntrapartPartModuleDelay
|
||||||
|
UP: get_ModelUpdateDelay
|
||||||
|
UP: set_ModelUpdateDelay
|
||||||
|
UP: get_ProductInterfaceDelay
|
||||||
|
UP: set_ProductInterfaceDelay
|
||||||
|
UP: get_Tag
|
||||||
|
UP: AddToDeleteList
|
||||||
|
UP: AddToDeleteList
|
||||||
|
UP: RemoveFromDeleteList
|
||||||
|
UP: GetDeleteList
|
||||||
|
UP: ClearDeleteList
|
||||||
|
UP: DoUpdate
|
||||||
|
UP: ClearErrorList
|
||||||
|
UP: DoInterpartUpdate
|
||||||
|
UP: SetDefaultUpdateFailureAction
|
||||||
|
UP: GetDefaultUpdateFailureAction
|
||||||
|
UP: SetUpdateFailureAction
|
||||||
|
UP: RemoveUpdateFailureAction
|
||||||
|
UP: DoAssemblyConstraintsUpdateInPart
|
||||||
|
UP: DoAssemblyConstraintsUpdate
|
||||||
|
UP: StartLocalUpdate
|
||||||
|
UP: EndLocalUpdate
|
||||||
|
UP: UndelayObjectUpdate
|
||||||
|
UP: LogForUpdate
|
||||||
|
UP: SetUpdateLock
|
||||||
|
UP: GetUpdateLock
|
||||||
|
UP: UpdateAllIntrapartPartModulesInPart
|
||||||
|
UP: MakeUpToDate
|
||||||
|
UP: get_NextSink
|
||||||
|
UP: SyncProcessMessage
|
||||||
|
UP: AsyncProcessMessage
|
||||||
|
UP: GetLifetimeService
|
||||||
|
UP: InitializeLifetimeService
|
||||||
|
UP: CreateObjRef
|
||||||
|
UP: Equals
|
||||||
|
UP: GetHashCode
|
||||||
|
UP: GetType
|
||||||
|
UP: ToString
|
||||||
|
UP: Tag
|
||||||
|
UP: AssemblyConstraintsDelay
|
||||||
|
UP: ErrorList
|
||||||
|
UP: InterpartDelay
|
||||||
|
UP: IntrapartPartModuleDelay
|
||||||
|
UP: ModelUpdateDelay
|
||||||
|
UP: ProductInterfaceDelay
|
||||||
|
UP: NextSink
|
||||||
|
UP NESTED: Option
|
||||||
|
UP = Now
|
||||||
|
UP = Later
|
||||||
|
UP NESTED: FailureOption
|
||||||
|
UP = NoOption
|
||||||
|
UP = Undo
|
||||||
|
UP = Suppress
|
||||||
|
UP = SuppressAll
|
||||||
|
UP = Accept
|
||||||
|
UP = AcceptAll
|
||||||
|
UP = Delete
|
||||||
|
UP = DeleteDependents
|
||||||
|
UP = Interrupt
|
||||||
|
=== 全部已加载程序集 ===
|
||||||
|
ASM: mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
|
||||||
|
ASM: ManagedLoader, Version=2506.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
ASM: System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
|
||||||
|
ASM: System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
|
||||||
|
ASM: System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
|
||||||
|
ASM: System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
|
||||||
|
ASM: NXOpen.Utilities, Version=2506.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
ASM: System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
|
||||||
|
ASM: System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
|
||||||
|
ASM: journal0, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
ASM: Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
|
||||||
|
ASM: NXOpen, Version=2506.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
|
=== Session 所在程序集 ===
|
||||||
|
SES: NXOpen, Version=2506.0.0.0, Culture=neutral, PublicKeyToken=null
|
||||||
361
genserver-local/probe3.txt
Normal file
361
genserver-local/probe3.txt
Normal file
@@ -0,0 +1,361 @@
|
|||||||
|
=== NXOpen.StepCreator ===
|
||||||
|
SC: get_ObjectTypes
|
||||||
|
SC: get_PMIValidationProperties
|
||||||
|
SC: set_PMIValidationProperties
|
||||||
|
SC: get_ReferenceType
|
||||||
|
SC: set_ReferenceType
|
||||||
|
SC: get_SettingsFile
|
||||||
|
SC: set_SettingsFile
|
||||||
|
SC: get_SystemAttributes
|
||||||
|
SC: set_SystemAttributes
|
||||||
|
SC: get_UserDefinedAttributes
|
||||||
|
SC: set_UserDefinedAttributes
|
||||||
|
SC: get_ValidationProperties
|
||||||
|
SC: set_ValidationProperties
|
||||||
|
SC: set_ExportAs
|
||||||
|
SC: get_ExportConvergentAs
|
||||||
|
SC: set_ExportConvergentAs
|
||||||
|
SC: get_ExportExtRef
|
||||||
|
SC: set_ExportExtRef
|
||||||
|
SC: get_ExportExtRefStructureAs
|
||||||
|
SC: set_ExportExtRefStructureAs
|
||||||
|
SC: get_ExportFrom
|
||||||
|
SC: set_ExportFrom
|
||||||
|
SC: get_ExportSelectionBlock
|
||||||
|
SC: get_ExportSolidsAndSurfacesAs
|
||||||
|
SC: set_ExportSolidsAndSurfacesAs
|
||||||
|
SC: get_FileSaveFlag
|
||||||
|
SC: set_FileSaveFlag
|
||||||
|
SC: get_GeometricValidationProperties
|
||||||
|
SC: set_GeometricValidationProperties
|
||||||
|
SC: get_InputFile
|
||||||
|
SC: set_InputFile
|
||||||
|
SC: get_KinematicApp
|
||||||
|
SC: set_KinematicApp
|
||||||
|
SC: get_LayerMask
|
||||||
|
SC: set_LayerMask
|
||||||
|
SC: get_Material
|
||||||
|
SC: set_Material
|
||||||
|
SC: SaveSettings
|
||||||
|
SC: get_AssemblyValidationProperties
|
||||||
|
SC: set_AssemblyValidationProperties
|
||||||
|
SC: get_Author
|
||||||
|
SC: set_Author
|
||||||
|
SC: get_Authorization
|
||||||
|
SC: set_Authorization
|
||||||
|
SC: get_BsplineTol
|
||||||
|
SC: set_BsplineTol
|
||||||
|
SC: get_CloudOfPointsProperties
|
||||||
|
SC: set_CloudOfPointsProperties
|
||||||
|
SC: get_ColorAndLayers
|
||||||
|
SC: set_ColorAndLayers
|
||||||
|
SC: get_Company
|
||||||
|
SC: set_Company
|
||||||
|
SC: get_Csys
|
||||||
|
SC: set_Csys
|
||||||
|
SC: get_Description
|
||||||
|
SC: set_Description
|
||||||
|
SC: get_EntityNames
|
||||||
|
SC: set_EntityNames
|
||||||
|
SC: get_ExportAs
|
||||||
|
SC: get_DatasetName
|
||||||
|
SC: set_DatasetName
|
||||||
|
SC: get_ExportDestination
|
||||||
|
SC: set_ExportDestination
|
||||||
|
SC: get_OutputFile
|
||||||
|
SC: set_OutputFile
|
||||||
|
SC: get_OutputFileExtension
|
||||||
|
SC: set_OutputFileExtension
|
||||||
|
SC: get_ProcessHoldFlag
|
||||||
|
SC: set_ProcessHoldFlag
|
||||||
|
SC: Commit
|
||||||
|
SC: Destroy
|
||||||
|
SC: GetCommittedObjects
|
||||||
|
SC: GetObject
|
||||||
|
SC: ShowResults
|
||||||
|
SC: get_PreviewBuilder
|
||||||
|
SC: Validate
|
||||||
|
SC: get_Tag
|
||||||
|
SC: ToString
|
||||||
|
SC: PrintTestData
|
||||||
|
SC: PrintTestData
|
||||||
|
SC: get_NextSink
|
||||||
|
SC: SyncProcessMessage
|
||||||
|
SC: AsyncProcessMessage
|
||||||
|
SC: GetLifetimeService
|
||||||
|
SC: InitializeLifetimeService
|
||||||
|
SC: CreateObjRef
|
||||||
|
SC: Equals
|
||||||
|
SC: GetHashCode
|
||||||
|
SC: GetType
|
||||||
|
SC: AssemblyValidationProperties
|
||||||
|
SC: Author
|
||||||
|
SC: Authorization
|
||||||
|
SC: BsplineTol
|
||||||
|
SC: CloudOfPointsProperties
|
||||||
|
SC: ColorAndLayers
|
||||||
|
SC: Company
|
||||||
|
SC: Csys
|
||||||
|
SC: Description
|
||||||
|
SC: EntityNames
|
||||||
|
SC: ExportAs
|
||||||
|
SC: ExportConvergentAs
|
||||||
|
SC: ExportExtRef
|
||||||
|
SC: ExportExtRefStructureAs
|
||||||
|
SC: ExportFrom
|
||||||
|
SC: ExportSelectionBlock
|
||||||
|
SC: ExportSolidsAndSurfacesAs
|
||||||
|
SC: FileSaveFlag
|
||||||
|
SC: GeometricValidationProperties
|
||||||
|
SC: InputFile
|
||||||
|
SC: KinematicApp
|
||||||
|
SC: LayerMask
|
||||||
|
SC: Material
|
||||||
|
SC: ObjectTypes
|
||||||
|
SC: PMIValidationProperties
|
||||||
|
SC: ReferenceType
|
||||||
|
SC: SettingsFile
|
||||||
|
SC: SystemAttributes
|
||||||
|
SC: UserDefinedAttributes
|
||||||
|
SC: ValidationProperties
|
||||||
|
SC: DatasetName
|
||||||
|
SC: ExportDestination
|
||||||
|
SC: OutputFile
|
||||||
|
SC: OutputFileExtension
|
||||||
|
SC: ProcessHoldFlag
|
||||||
|
SC: PreviewBuilder
|
||||||
|
SC: Tag
|
||||||
|
SC: NextSink
|
||||||
|
SC NESTED: ExportFromOption
|
||||||
|
SC = DisplayPart
|
||||||
|
SC = ExistingPart
|
||||||
|
SC NESTED: EntityNameOption
|
||||||
|
SC = LongName
|
||||||
|
SC = ShortName
|
||||||
|
SC NESTED: ExternalReferenceStructureOption
|
||||||
|
SC = Basic
|
||||||
|
SC = Nested
|
||||||
|
SC NESTED: ExportAsOption
|
||||||
|
SC = Ap203
|
||||||
|
SC = Ap214
|
||||||
|
SC = Ap242
|
||||||
|
SC = Ap242ED2
|
||||||
|
SC NESTED: ExportSolidsAndSurfacesAsOption
|
||||||
|
SC = Precise
|
||||||
|
SC = Tessellated
|
||||||
|
SC NESTED: ExportConvergentAsOption
|
||||||
|
SC = SplitPreciseAndTessellated
|
||||||
|
SC = Tessellated
|
||||||
|
SC NESTED: CsysrefEnum
|
||||||
|
SC = Absolute
|
||||||
|
SC = Wcs
|
||||||
|
SC = SpecifiedCsys
|
||||||
|
=== NXOpen.IgesCreator ===
|
||||||
|
IC: get_SettingsFile
|
||||||
|
IC: set_SettingsFile
|
||||||
|
IC: get_StartSectionFile
|
||||||
|
IC: set_StartSectionFile
|
||||||
|
IC: get_SysDefidenticalPointResolution
|
||||||
|
IC: set_SysDefidenticalPointResolution
|
||||||
|
IC: get_SysDefmaxThreeDMdlSpace
|
||||||
|
IC: set_SysDefmaxThreeDMdlSpace
|
||||||
|
IC: get_UseStartSectionFile
|
||||||
|
IC: set_UseStartSectionFile
|
||||||
|
IC: get_ViewList
|
||||||
|
IC: set_ViewList
|
||||||
|
IC: set_FlattenAssembly
|
||||||
|
IC: get_IdenticalPointResolution
|
||||||
|
IC: set_IdenticalPointResolution
|
||||||
|
IC: get_InputFile
|
||||||
|
IC: set_InputFile
|
||||||
|
IC: get_Jama
|
||||||
|
IC: set_Jama
|
||||||
|
IC: get_LayerMask
|
||||||
|
IC: set_LayerMask
|
||||||
|
IC: get_MapCrossHatchTo
|
||||||
|
IC: set_MapCrossHatchTo
|
||||||
|
IC: get_MapRevolvedFacesTo
|
||||||
|
IC: set_MapRevolvedFacesTo
|
||||||
|
IC: get_MapTabCylToBSurf
|
||||||
|
IC: set_MapTabCylToBSurf
|
||||||
|
IC: get_MaxLineThickness
|
||||||
|
IC: set_MaxLineThickness
|
||||||
|
IC: get_MaxThreeDMdlSpace
|
||||||
|
IC: set_MaxThreeDMdlSpace
|
||||||
|
IC: get_ObjectTypes
|
||||||
|
IC: get_ReceiverID
|
||||||
|
IC: set_ReceiverID
|
||||||
|
IC: get_ReferenceType
|
||||||
|
IC: set_ReferenceType
|
||||||
|
IC: SaveSettings
|
||||||
|
IC: SetDrawingArray
|
||||||
|
IC: get_Author
|
||||||
|
IC: set_Author
|
||||||
|
IC: get_BcurveTol
|
||||||
|
IC: set_BcurveTol
|
||||||
|
IC: get_Company
|
||||||
|
IC: set_Company
|
||||||
|
IC: get_Csys
|
||||||
|
IC: set_Csys
|
||||||
|
IC: get_DrawingList
|
||||||
|
IC: set_DrawingList
|
||||||
|
IC: get_ExportDrawings
|
||||||
|
IC: set_ExportDrawings
|
||||||
|
IC: get_ExportFrom
|
||||||
|
IC: set_ExportFrom
|
||||||
|
IC: get_ExportModelData
|
||||||
|
IC: set_ExportModelData
|
||||||
|
IC: get_ExportSelectionBlock
|
||||||
|
IC: get_FileSaveFlag
|
||||||
|
IC: set_FileSaveFlag
|
||||||
|
IC: get_FlattenAssembly
|
||||||
|
IC: get_DatasetName
|
||||||
|
IC: set_DatasetName
|
||||||
|
IC: get_ExportDestination
|
||||||
|
IC: set_ExportDestination
|
||||||
|
IC: get_OutputFile
|
||||||
|
IC: set_OutputFile
|
||||||
|
IC: get_OutputFileExtension
|
||||||
|
IC: set_OutputFileExtension
|
||||||
|
IC: get_ProcessHoldFlag
|
||||||
|
IC: set_ProcessHoldFlag
|
||||||
|
IC: Commit
|
||||||
|
IC: Destroy
|
||||||
|
IC: GetCommittedObjects
|
||||||
|
IC: GetObject
|
||||||
|
IC: ShowResults
|
||||||
|
IC: get_PreviewBuilder
|
||||||
|
IC: Validate
|
||||||
|
IC: get_Tag
|
||||||
|
IC: ToString
|
||||||
|
IC: PrintTestData
|
||||||
|
IC: PrintTestData
|
||||||
|
IC: get_NextSink
|
||||||
|
IC: SyncProcessMessage
|
||||||
|
IC: AsyncProcessMessage
|
||||||
|
IC: GetLifetimeService
|
||||||
|
IC: InitializeLifetimeService
|
||||||
|
IC: CreateObjRef
|
||||||
|
IC: Equals
|
||||||
|
IC: GetHashCode
|
||||||
|
IC: GetType
|
||||||
|
IC: Author
|
||||||
|
IC: BcurveTol
|
||||||
|
IC: Company
|
||||||
|
IC: Csys
|
||||||
|
IC: DrawingList
|
||||||
|
IC: ExportDrawings
|
||||||
|
IC: ExportFrom
|
||||||
|
IC: ExportModelData
|
||||||
|
IC: ExportSelectionBlock
|
||||||
|
IC: FileSaveFlag
|
||||||
|
IC: FlattenAssembly
|
||||||
|
IC: IdenticalPointResolution
|
||||||
|
IC: InputFile
|
||||||
|
IC: Jama
|
||||||
|
IC: LayerMask
|
||||||
|
IC: MapCrossHatchTo
|
||||||
|
IC: MapRevolvedFacesTo
|
||||||
|
IC: MapTabCylToBSurf
|
||||||
|
IC: MaxLineThickness
|
||||||
|
IC: MaxThreeDMdlSpace
|
||||||
|
IC: ObjectTypes
|
||||||
|
IC: ReceiverID
|
||||||
|
IC: ReferenceType
|
||||||
|
IC: SettingsFile
|
||||||
|
IC: StartSectionFile
|
||||||
|
IC: SysDefidenticalPointResolution
|
||||||
|
IC: SysDefmaxThreeDMdlSpace
|
||||||
|
IC: UseStartSectionFile
|
||||||
|
IC: ViewList
|
||||||
|
IC: DatasetName
|
||||||
|
IC: ExportDestination
|
||||||
|
IC: OutputFile
|
||||||
|
IC: OutputFileExtension
|
||||||
|
IC: ProcessHoldFlag
|
||||||
|
IC: PreviewBuilder
|
||||||
|
IC: Tag
|
||||||
|
IC: NextSink
|
||||||
|
IC NESTED: ExportFromOption
|
||||||
|
IC = DisplayPart
|
||||||
|
IC = ExistingPart
|
||||||
|
IC NESTED: CsysrefEnum
|
||||||
|
IC = Absolute
|
||||||
|
IC = Wcs
|
||||||
|
IC = SpecifiedCsys
|
||||||
|
IC NESTED: MapRevolvedFacesOption
|
||||||
|
IC = BSurfaces
|
||||||
|
IC = SurfaceOfRevolution
|
||||||
|
IC NESTED: CrossHatchMapEnum
|
||||||
|
IC = SectionArea
|
||||||
|
IC = CopiousData
|
||||||
|
EX [类型未找到: NXOpen.UpdateSession]
|
||||||
|
=== Part 成员 (Update/Create) ===
|
||||||
|
PT: 8 CreateSelectionList
|
||||||
|
PT: 8 CreateEmptySelectionList
|
||||||
|
PT: 8 CreatePointsFromFileBuilder
|
||||||
|
PT: 8 CreateEmptyBlendSetbackBuilder
|
||||||
|
PT: 8 CreateEmptyTransitionCurveBuilder
|
||||||
|
PT: 8 CreateEmptySpinePlaneBuilder
|
||||||
|
PT: 8 CreateImportTemplatePartBuilder
|
||||||
|
PT: 8 UpdateFromJtFile
|
||||||
|
PT: 8 CreateEmptyExpressionSectionSet
|
||||||
|
PT: 8 CreateEmptyTwoExpressionsSectionSet
|
||||||
|
PT: 8 CreateExpressionCollectorSet
|
||||||
|
PT: 8 CreateTwoExpressionsCollectorSet
|
||||||
|
PT: 8 CreateEmptyExpressionCollectorSet
|
||||||
|
PT: 8 CreateEmptyTwoExpressionsCollectorSet
|
||||||
|
PT: 8 CreateCamSetup
|
||||||
|
PT: 8 CreateInspectionSetup
|
||||||
|
PT: 8 CreateRegionPoint
|
||||||
|
PT: 8 CreateEmptyRegionPoint
|
||||||
|
PT: 8 CreatePartFamily
|
||||||
|
PT: 8 CreateWavelinkRepository
|
||||||
|
PT: 8 CreateEmptyBoundaryDefinitionBuilder
|
||||||
|
PT: 8 CreatePointSetAlignmentBuilder
|
||||||
|
PT: 8 CreateKinematicConfigurator
|
||||||
|
PT: 8 CreateBoundingObjectBuilder
|
||||||
|
PT: 8 GetUpdateStatusReport
|
||||||
|
PT: 8 CreateObjectList
|
||||||
|
PT: 8 CreateExpressionSectionSet
|
||||||
|
PT: 8 CreateTwoExpressionsSectionSet
|
||||||
|
PT: 8 CreateReferenceSet
|
||||||
|
PT: 8 CreateEffectivityConditionBuilder
|
||||||
|
PT: 8 CreateEffectivityConditionBuilder
|
||||||
|
PT: 8 CreateDynamicSectionBuilder
|
||||||
|
PT: 8 CreateGatewayGroupBuilder
|
||||||
|
PT: 8 CreatePerspectiveOptionsBuilder
|
||||||
|
PT: 8 CreateFacetSettingsBuilder
|
||||||
|
PT: 8 CreateAttributeIterator
|
||||||
|
PT: 8 CreateObjRef
|
||||||
|
PT: 128 FeatureUpdateStatus
|
||||||
|
PT: 128 UpdateFromJtFileOptions
|
||||||
|
=== PartCollection 成员 (Update/Create/New) ===
|
||||||
|
PC: 8 CreateCloudDMNewPartBuilder
|
||||||
|
PC: 8 CreateGenericFileNewBuilder
|
||||||
|
PC: 8 NewPartCloseResponses
|
||||||
|
PC: 8 FileNew
|
||||||
|
PC: 8 NewDisplay
|
||||||
|
PC: 8 NewBaseDisplay
|
||||||
|
PC: 8 NewBase
|
||||||
|
=== UFModl 成员 (Update/Cyl) ===
|
||||||
|
UF: 8 Update
|
||||||
|
UF: 8 UpdateAllFeatures
|
||||||
|
UF: 8 UpdateForAnimation
|
||||||
|
UF: 8 SetUpdateFailOption
|
||||||
|
UF: 8 SetDynamicUpdate
|
||||||
|
UF: 8 RecordFeatureUpdateWarnings
|
||||||
|
UF: 8 EditSmbendCylinder
|
||||||
|
UF: 8 CreateSmbendCylinder
|
||||||
|
UF: 8 CreateCyl1
|
||||||
|
UF: 8 CreateCylPocket
|
||||||
|
UF: 8 CreateCylinder
|
||||||
|
UF: 8 AskUpdateErrorMessage
|
||||||
|
UF: 8 AskUpdateFailOption
|
||||||
|
UF: 8 AskUpdateUndoFeat
|
||||||
|
UF: 8 AskSmbendCylinder
|
||||||
|
UF: 8 AskCylPocketParms
|
||||||
|
UF: 8 AskCylinderParms
|
||||||
|
UF: 8 AskDynamicUpdate
|
||||||
|
UF: 128 SmbendCylinderData
|
||||||
|
UF: 128 UpdateOption
|
||||||
0
genserver-local/server.err
Normal file
0
genserver-local/server.err
Normal file
5
genserver-local/worker-config.txt
Normal file
5
genserver-local/worker-config.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
jobsDir=d:\开发\OnebotCatalog\genserver-local\jobs
|
||||||
|
outputDir=d:\开发\OnebotCatalog\genserver-local\output
|
||||||
|
mastersDir=d:\开发\OnebotCatalog\catalog-masters
|
||||||
|
workDir=d:\开发\OnebotCatalog\genserver-local\work
|
||||||
|
nxBin=C:\Program Files\Siemens\NX2506\NXBIN
|
||||||
1
genserver-local/worker-no.txt
Normal file
1
genserver-local/worker-no.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
1
|
||||||
347
motor_pdf_dump.txt
Normal file
347
motor_pdf_dump.txt
Normal file
@@ -0,0 +1,347 @@
|
|||||||
|
--- PAGE 1 ---
|
||||||
|
liteECO® INTEGRATED series
|
||||||
|
Linear actuators for short stroke movements
|
||||||
|
up to 115 mm stroke and 750 N force (static)
|
||||||
|
with integrated motion controller
|
||||||
|
|
||||||
|
--- PAGE 2 ---
|
||||||
|
Document No.: DS-LE-INTEGRATED-EN
|
||||||
|
Version 002 | 29.10.2024Page 2
|
||||||
|
liteECO® linear actuators, INTEGRATED series Subject to change as a result
|
||||||
|
of technical improvements or new findings
|
||||||
|
LINEAR TELESCOPABLE ELECTROMECHANICAL CONCEPTliteECO® INTEGRATED linear actuators
|
||||||
|
SMELA liteECO® series are the most compact electromechanical alternative to pneumatic short-stroke cylinders due
|
||||||
|
to their patented telescopic concept of motor and mechanics. This makes them ideal for linear movements often
|
||||||
|
required in production lines, machine tools or packaging systems.
|
||||||
|
A servo motor incl. positioning sensor enables the movement of simple to complex profiles: for fixing, adjusting,
|
||||||
|
locking and following any motion profile. The highly efficient motor not only saves up to 90 % of the energy
|
||||||
|
compared to pneumatic systems. Together with the smart arrangement of the mechanics, it saves up to 80 % of
|
||||||
|
installation space compared to existing electrical solutions. In addition, the liteECO® series offers the possibility of
|
||||||
|
a simple refurbishment. Replacing worn mechanics is very easy and helps the drives to achieve several life cycles:
|
||||||
|
sustainable, cost- and resource-saving.
|
||||||
|
In addition to the servomotor and the linear mechanics, the LE-INTEGRATED actuators have an integrated motion
|
||||||
|
controller based on 24 volts and optionally on 48 volts. The actuators are controlled via EtherCAT, CANopen or
|
||||||
|
digital IOs. As with the BASE series, many advantages of electric drives are combined with essential features for high
|
||||||
|
industrial requirements and packed into the smallest possible installation space. In addition to sealing to the degree
|
||||||
|
of protection IP65, conventional M8 and M12 circular connectors have been integrated in the codings A, B, L and
|
||||||
|
Y. The maximum stroke is 85 or 115 millimetres, whereby any positioning within the maximum stroke is possible.Most compact pneumatic alternative for short stroke movements1 Overview
|
||||||
|
Advantages
|
||||||
|
High power and dynamics in a compact design
|
||||||
|
High utilization of the installation length for the stroke
|
||||||
|
Up to 90 % energy savings compared to pneumatics
|
||||||
|
Up to 80 % installation space savings compared to electrical alternatives
|
||||||
|
Features
|
||||||
|
Integrated motion controller
|
||||||
|
EtherCAT, CANopen and/or digital IO interfaces
|
||||||
|
Robust M8 and M12 circular connectors
|
||||||
|
Degree of protection IP65
|
||||||
|
--- PAGE 3 ---
|
||||||
|
Document No.: DS-LE-INTEGRATED-EN
|
||||||
|
Version 002 | 29.10.2024Page 3
|
||||||
|
liteECO® linear actuators, INTEGRATED series Subject to change as a result
|
||||||
|
of technical improvements or new findings
|
||||||
|
Product configuration2 Product configuration
|
||||||
|
* on request/plannedLE-----.-.--.----.---
|
||||||
|
liteECO® INTEGRATED Interface configurationStroke length
|
||||||
|
|
||||||
|
085 85 mm
|
||||||
|
115 115 mm
|
||||||
|
Lead screaw type and pitch (mm/revolution)
|
||||||
|
Pitch High helix Trapezoidal
|
||||||
|
2 - T020
|
||||||
|
4 - T040
|
||||||
|
10 S100 -
|
||||||
|
15 S150 -
|
||||||
|
24 S240 -
|
||||||
|
Size | Flange width
|
||||||
|
50 Load capacity up to 750 N (depending on lead screw type)
|
||||||
|
.... Further sizes to followother thread configurations on request
|
||||||
|
IDIO.A Digital IO, M12 Connector variant (A - Automotive)
|
||||||
|
ICAT.A* EtherCAT, M12 Connector variant (A - Automotive)
|
||||||
|
ICAN.S* CANopen incl. digital IOs, M8 Connector variant (S - Standard)
|
||||||
|
|
||||||
|
--- PAGE 4 ---
|
||||||
|
Document No.: DS-LE-INTEGRATED-EN
|
||||||
|
Version 002 | 29.10.2024Page 4
|
||||||
|
liteECO® linear actuators, INTEGRATED series Subject to change as a result
|
||||||
|
of technical improvements or new findingsCharacteristics (depending on stroke length) 085 115
|
||||||
|
Stroke S [mm] 85 115
|
||||||
|
Length L [mm] 118.7 148.7
|
||||||
|
Width B [mm] 50
|
||||||
|
Height H1 [mm] 68.5
|
||||||
|
Height H2 [mm] 85.5
|
||||||
|
Centering collar D2 [mm] Ø 20g6 x 2.5
|
||||||
|
Diameter plunger D1 [mm] Ø 11
|
||||||
|
Thread on plunger M6x16 (external thread)
|
||||||
|
others on request
|
||||||
|
Weight [g] 800 850
|
||||||
|
My, Mz (Transverse forces on the plunger) [Nm] < 1
|
||||||
|
Coupling / bolting on the flange
|
||||||
|
Hole distance [mm]
|
||||||
|
Mounting options
|
||||||
|
M4 Tightenning torque (strength class 8.8) [Nm]42 x 42
|
||||||
|
4 x M4 through hole (4.3 mm)
|
||||||
|
3.0
|
||||||
|
Connections / Interfaces
|
||||||
|
Power supply
|
||||||
|
Digital IOs
|
||||||
|
EtherCAT
|
||||||
|
CANopenM12 L-coded
|
||||||
|
M12 A-coded
|
||||||
|
M12 Y-coded
|
||||||
|
M8 B-coded
|
||||||
|
Degree of protection IP65*
|
||||||
|
Materials (of the external components)
|
||||||
|
Plunger
|
||||||
|
Flange
|
||||||
|
Cover
|
||||||
|
Wiper ring (optional)Stainless steel (1.4305)
|
||||||
|
Aluminium
|
||||||
|
Stainless steel (1.4301 oder 1.4304)
|
||||||
|
HPU (Hydrolysis-resistant Polyurethan)
|
||||||
|
Deviations from standard configuration are possible on request.
|
||||||
|
* in test phase
|
||||||
|
SMELA GmbH reserves the right to make changes as a result of technical improvements or new findings.3 Technical data - dimensions, mechanical connection
|
||||||
|
Technical data, dimensions
|
||||||
|
Size | Flange width 50
|
||||||
|
|
||||||
|
--- PAGE 5 ---
|
||||||
|
Document No.: DS-LE-INTEGRATED-EN
|
||||||
|
Version 002 | 29.10.2024Page 5
|
||||||
|
liteECO® linear actuators, INTEGRATED series Subject to change as a result
|
||||||
|
of technical improvements or new findings
|
||||||
|
50
|
||||||
|
68.5 (H1)42
|
||||||
|
42Ø20g6
|
||||||
|
10 16116.2 M6x1Ø11
|
||||||
|
118.7 (L)76.24x Ø4.3
|
||||||
|
85.5 (H2)Dimensions, mechanical connection
|
||||||
|
Size | Flange width 50 | Stroke 85 mm3 Technical data - dimensions, mechanical connection
|
||||||
|
My
|
||||||
|
Mz
|
||||||
|
Plan the actuators directly into your design!
|
||||||
|
|
||||||
|
|
||||||
|
Latest data sheets and CAD models are available on request via sales@smela.com
|
||||||
|
or at: www.smela.comXD1
|
||||||
|
X1
|
||||||
|
X0EXT
|
||||||
|
Illustration shows interface configuration IDIO.A
|
||||||
|
--- PAGE 6 ---
|
||||||
|
Document No.: DS-LE-INTEGRATED-EN
|
||||||
|
Version 002 | 29.10.2024Page 6
|
||||||
|
liteECO® linear actuators, INTEGRATED series Subject to change as a result
|
||||||
|
of technical improvements or new findings3 Technical data - dimensions, mechanical connection
|
||||||
|
50
|
||||||
|
68.5 (H1)42
|
||||||
|
42Ø20g6
|
||||||
|
10 16116.2 M6x1Ø11
|
||||||
|
148.7 (L)76.24x Ø4.3
|
||||||
|
85.5 (H2)Dimensions, mechanical connection
|
||||||
|
Size | Flange width 50 | Stroke 115 mm
|
||||||
|
My
|
||||||
|
Mz
|
||||||
|
Illustration shows interface configuration IDIO.AXD1
|
||||||
|
X1
|
||||||
|
X0EXT
|
||||||
|
--- PAGE 7 ---
|
||||||
|
Document No.: DS-LE-INTEGRATED-EN
|
||||||
|
Version 002 | 29.10.2024Page 7
|
||||||
|
liteECO® linear actuators, INTEGRATED series Subject to change as a result
|
||||||
|
of technical improvements or new findings
|
||||||
|
4 Performance data - mechanical
|
||||||
|
Plan the actuators directly into your design!
|
||||||
|
|
||||||
|
|
||||||
|
Latest data sheets and CAD models are available on request via sales@smela.com
|
||||||
|
or at: www.smela.comSMELA GmbH reserves the right to make changes as a result of technical improvements or new findings.
|
||||||
|
Explanatory footnotes:
|
||||||
|
1) Limit load capacity: max. static force and axial load capacity of the internal mechanics;
|
||||||
|
exceeding loads are not permissible and must be absorbed by external mechanics or brakes
|
||||||
|
2) The backlash is wear-dependent, the wear is dependent on load and dynamics
|
||||||
|
3) Maximum permissible force and the corresponding proportional phase current must not be exceed in order to protect the internal mechanics.
|
||||||
|
The max. phase current of the rotary motor Imax may furthermore be applied for max. 20 seconds in order not to exceed
|
||||||
|
the internal limit temperature starting from an initial temperature of the actuator of 20°C
|
||||||
|
4) Permissible permanent nom. force / permissible nom. phase current not to exceed the internal limit temperature at an embient temperature of 20 °C
|
||||||
|
Determined by a slow and permanent movement under load (quasi-static method) for the normal case, i.e. the connection of the actuator
|
||||||
|
to a metal body with a thermal contact resistance to air of 1.7 K/W. In case of a worse thermal coupling, limit to the nom. current of the worst
|
||||||
|
case (3 A, see chart on page 8 and footnote 11)
|
||||||
|
5) The max. speed depends on voltage. The characteristics shown refer to a nom. voltage of 24 V (at the actuator);
|
||||||
|
6) During braking (negative acceleration), energy is generated and fed back into the DC link; if the DC link is not capable or regenerative braking,
|
||||||
|
care must be taken to ensure that the DC link capacitance is adequately dimensioned and that an additional braking resitor is used
|
||||||
|
7) Over the stroke of 45 mm with a rated voltage of min. 24 V (at the actuator), without loadMechanical performance data
|
||||||
|
Size | Flange width 50
|
||||||
|
The following maximum achievable performance data are based on the permissible load capacity for the thread
|
||||||
|
pairs used and the motor. Limiting parameters are, among others, the static load capacity of the nut configuration,
|
||||||
|
the permissible sliding speed and the permissible peak and nominal currents of the integrated servomotor (see fol -
|
||||||
|
lowing page). In practice, due to the reciprocal effects of influences, it may not always be possible to reach the limit
|
||||||
|
values, in particular peak force and maximum speed cannot occur simultaneously. Any increase in the load leads to
|
||||||
|
a reduction in the permissible sliding speeds and vice versa. Please do not hesitate to ask us about the technical
|
||||||
|
feasibility of your motion profiles.
|
||||||
|
Lead screw
|
||||||
|
configurationLimit load
|
||||||
|
capacity1)Backlash2)Peak force3) /
|
||||||
|
Peak current3)Nom. force4) /
|
||||||
|
Nom. current4)Max. speed5)Max.
|
||||||
|
acceleration6)Positioning
|
||||||
|
time7)
|
||||||
|
N mm N / A N / A mm/s m/s² ms
|
||||||
|
High helix
|
||||||
|
S100 370
|
||||||
|
approx.
|
||||||
|
±0.1300 / 12 125 / 5 500 25 120
|
||||||
|
S150 370 200 / 12 83 / 5 750 37.5 85
|
||||||
|
S240 315 125 / 12 52 / 5 1.200 60 65
|
||||||
|
Trapezoidal thread
|
||||||
|
T020 750 approx.
|
||||||
|
±0.1750 / 6 625 / 5 50 2,5 900
|
||||||
|
T040 750 750 / 12 313 / 5 100 5 450
|
||||||
|
--- PAGE 8 ---
|
||||||
|
Document No.: DS-LE-INTEGRATED-EN
|
||||||
|
Version 002 | 29.10.2024Page 8
|
||||||
|
liteECO® linear actuators, INTEGRATED series Subject to change as a result
|
||||||
|
of technical improvements or new findings4 Performance data - electrical
|
||||||
|
Symbol Unit
|
||||||
|
Power supplies, general Min. Typ. Max.
|
||||||
|
Power supply logic UlogicVdc19 24 30
|
||||||
|
Power supply motor UmotorVdc19 24 30
|
||||||
|
Current consumption logic IlogicmA 100 110 310
|
||||||
|
Current consumption motor ImotorA 0 3 15
|
||||||
|
Operating temperature9)Tamb°C +5 +20 +40
|
||||||
|
Internal temperature limit9) Tint,max °C +90
|
||||||
|
Digital IO logic PNP 24 V
|
||||||
|
CANopen protocol CiA 301 v4.2, CiA 305 v.2.2.13 and CiA 402 v3.0
|
||||||
|
EtherCAT protocol - - CoE, CiA402, IEC61800-7-301
|
||||||
|
Motor parameters (for parameterization and profile calculation)
|
||||||
|
Max. permissible speed
|
||||||
|
(equal to no-load speed at 24 V) 8) nmax = n0min-13,025
|
||||||
|
Max. acceleration 6)αmaxrad/s² 16,610
|
||||||
|
Max. motor phase current 3)ImaxA 12
|
||||||
|
Thermal time constant (winding) 10)τth,ws 20
|
||||||
|
Nom. current 4)
|
||||||
|
poor thermal connection 11)
|
||||||
|
good thermal connection12)IN,wc
|
||||||
|
IN,ncA
|
||||||
|
A3
|
||||||
|
5
|
||||||
|
Max. torque (at Imax) MmaxmNm 750
|
||||||
|
Torque constant kMmNm/A 62.5
|
||||||
|
Speed constant 13)knmin-1/V 126
|
||||||
|
Terminal resistance RSmΩ 585
|
||||||
|
Terminal inductance 14)LSµH 300
|
||||||
|
Electrical time constant 14)τelms 0.512
|
||||||
|
Number of pole pairs zP- 7
|
||||||
|
Rotor inertia 15)J g ∙ cm² 455
|
||||||
|
SMELA GmbH reserves the right to make changes as a result of technical improvements or new findings.
|
||||||
|
|
||||||
|
Explanatory footnotes:
|
||||||
|
8) The characteristic data refer to a nominal voltage of 24 V (at the actuator);
|
||||||
|
9) Max. permissible ambient temperature; The internal temperature limit must not be exceeded
|
||||||
|
10) The max. phase current Imax is to be applied for a duration of max. τth,w in order not to exceed the internal temperature limit of Tint,max
|
||||||
|
starting from an initial temperature of the actuator Tint = Tamb = 20°C
|
||||||
|
11) With thermal insulation (actuator horizontal in static air at 20°C, 80% humidity, thermal contact resistance to air = 5 K/W)
|
||||||
|
12) When connected to a metal body with a thermal transfer resistance to air of 1.7 K/W
|
||||||
|
13) Related to measured peak voltage, no RMS value, phase to phase
|
||||||
|
14) Phase to phase; measured at 1 kHz, 1V rms
|
||||||
|
15) Calculated value without linear unitElectrical performance data
|
||||||
|
Size | Flange width 50
|
||||||
|
--- PAGE 9 ---
|
||||||
|
Document No.: DS-LE-INTEGRATED-EN
|
||||||
|
Version 002 | 29.10.2024Page 9
|
||||||
|
liteECO® linear actuators, INTEGRATED series Subject to change as a result
|
||||||
|
of technical improvements or new findings5 Connection variants | Pin assignment
|
||||||
|
Power supply 24 VDC
|
||||||
|
M12, L-coded, 5 pin, male
|
||||||
|
Pin Function
|
||||||
|
1 not used
|
||||||
|
2 0 VDC (Power supply motor)
|
||||||
|
3 not used
|
||||||
|
4 24 VDC (Power supply motor)
|
||||||
|
5 FE
|
||||||
|
Digital IN, control (IDIO variant)
|
||||||
|
M12, A-coded, 4/5 pin, male
|
||||||
|
Pin Function
|
||||||
|
1 not used
|
||||||
|
2 Control command „Retract“
|
||||||
|
3 0 VDC
|
||||||
|
4 Control command „Extend“
|
||||||
|
5 not usedConnectors, interfaces
|
||||||
|
Automotive variants (A) with M12 connectors
|
||||||
|
Digital OUT, feedback (IDIO variant)
|
||||||
|
M12, A-coded, 5 pin, male
|
||||||
|
Pin Function
|
||||||
|
1 24 VDC (Power supply logic)
|
||||||
|
2 Feedback „Retracted“
|
||||||
|
3 0 VDC (Power supply logic)
|
||||||
|
4 Feedback „Extended“
|
||||||
|
5 FE (optional)
|
||||||
|
EtherCAT (ICAT variant)
|
||||||
|
M12, Y-coded, 8 pin, female for in & out
|
||||||
|
Pin Function
|
||||||
|
1 TX+
|
||||||
|
2 TX-
|
||||||
|
3 RX+
|
||||||
|
4 RX-
|
||||||
|
5 0 VDC (Power supply logic)
|
||||||
|
6 24 VDC (Power supply logic)
|
||||||
|
7 24 VDC (Power supply logic)
|
||||||
|
8 0 VDC (Power supply logic)XD1
|
||||||
|
X0
|
||||||
|
X1
|
||||||
|
Y0, Y1
|
||||||
|
--- PAGE 10 ---
|
||||||
|
Document No.: DS-LE-INTEGRATED-EN
|
||||||
|
Version 002 | 29.10.2024Page 10
|
||||||
|
liteECO® linear actuators, INTEGRATED series Subject to change as a result
|
||||||
|
of technical improvements or new findings5 Connection variants | Pin assignment
|
||||||
|
CANopen
|
||||||
|
M8, B-coded, 5 pin, male for in, female for out
|
||||||
|
Pin Function
|
||||||
|
1 CAN V+
|
||||||
|
2 CAN SHIELD
|
||||||
|
3 CAN H
|
||||||
|
4 CAN L
|
||||||
|
5 CAN GND
|
||||||
|
IO Connector
|
||||||
|
M12, A-coded, 12 pin, female
|
||||||
|
Pin Function
|
||||||
|
1 DIO V+
|
||||||
|
2 DIO GND
|
||||||
|
3 DIN 1
|
||||||
|
4 DIN 2
|
||||||
|
5 DIN 3
|
||||||
|
6 LIMIT 1
|
||||||
|
7 LIMIT 2
|
||||||
|
8 DOUT
|
||||||
|
9 AIN+
|
||||||
|
10 AIN-
|
||||||
|
11 not used
|
||||||
|
12 not usedPower supply 24 VDC
|
||||||
|
M12, L-coded, 5 pin, male
|
||||||
|
Pin Function
|
||||||
|
1 0 VDC (Power supply logic)
|
||||||
|
2 0 VDC (Power supply motor)
|
||||||
|
3 24 VDC (Power supply logic )
|
||||||
|
4 24 VDC (Power supply motor )
|
||||||
|
5 FEConnectors, interfaces
|
||||||
|
Standard Variants (S) with M8 & M12 connectors
|
||||||
|
XD1
|
||||||
|
C0 C1
|
||||||
|
IO
|
||||||
|
--- PAGE 11 ---
|
||||||
|
Document No.: DS-LE-INTEGRATED-EN
|
||||||
|
Version 002 | 29.10.2024Page 11
|
||||||
|
liteECO® linear actuators, INTEGRATED series Subject to change as a result
|
||||||
|
of technical improvements or new findingsNotes
|
||||||
|
Notes
|
||||||
|
|
||||||
|
--- PAGE 12 ---
|
||||||
|
Document No.: DS-LE-INTEGRATED-EN
|
||||||
|
Version 002 | 29.10.2024Page 12
|
||||||
|
liteECO® linear actuators, INTEGRATED series Subject to change as a result
|
||||||
|
of technical improvements or new findings
|
||||||
|
SMELA GmbH
|
||||||
|
Liebknechtstraße 55
|
||||||
|
DE-39108 Magdeburg
|
||||||
|
www.smela.com
|
||||||
|
info@smela.com | sales@smela.com
|
||||||
1
onebot-data/catalog/catalog.json
Normal file
1
onebot-data/catalog/catalog.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"schemaVersion":"1.0","genApi":"","catalogName":"ONEBOT 气动元件目录","catalogNameEn":"ONEBOT Pneumatic Catalog","catalogVersion":"2026.08","defaultLang":"zh","langs":["zh","en"],"categories":[{"code":"AUT","nameZh":"汽车行业气缸 Automotive","nameEn":"Automotive Cylinders","keywords":"","series":["KC","KCB","KSB","KCS","KS","KSU"]},{"code":"MIN","nameZh":"不锈钢迷你缸 (ISO6432)","nameEn":"Stainless Mini Cylinders (ISO6432)","keywords":"","series":["M","MS","MSC"]},{"code":"ALU","nameZh":"铝合金迷你缸","nameEn":"Aluminium Mini Cylinders","keywords":"","series":["MAL","MALC"]},{"code":"CLM","nameZh":"气动夹紧缸","nameEn":"Pneumatic Clamping Cylinders","keywords":"","series":["UCBM"]},{"code":"PIN","nameZh":"气动可伸缩定位销","nameEn":"Pneumatic Retractable Locating Pins","keywords":"","series":["ULP"]},{"code":"HOK","nameZh":"气动勾销缸","nameEn":"Pneumatic Pin Clamp Cylinders","keywords":"","series":["USP"]},{"code":"GRP","nameZh":"气动夹爪缸","nameEn":"Pneumatic Gripper Cylinders","keywords":"","series":["UGP"]},{"code":"ROT","nameZh":"气动翻转缸","nameEn":"Pneumatic Flip Cylinders","keywords":"","series":["UAGP"]},{"code":"ELEC","nameZh":"电动气缸","nameEn":"Electric Cylinders","keywords":"","series":["LAE"]}],"series":[]}
|
||||||
504
onebot-data/catalog/crossref.csv
Normal file
504
onebot-data/catalog/crossref.csv
Normal file
@@ -0,0 +1,504 @@
|
|||||||
|
brand,foreign_model,our_model,note
|
||||||
|
JELPC,SQ32-100,KCS0032-100,基础型平替(待核对)
|
||||||
|
JELPC,SQ32-10,KCS0032-10,基础型平替(待核对)
|
||||||
|
JELPC,SQ32-50,KCS0032-50,基础型平替(待核对)
|
||||||
|
SMC,SQ32-50,KCS0032-50,基础型平替(待核对)
|
||||||
|
AIRTAC,JSCK50XXXXAM1CHLK,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSCK50XXXXAM3CHLK,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSCK50XXXXAM3LHLK,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSCK50XXXXAM3RHLK,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSCK63XXXXAM1CHL,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSCK63XXXXAM1CHLK,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSCK63XXXXAM3CHL,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSCK63XXXXAM3CHLK,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSCK63XXXXAM3LHLK,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSCKV50XXXXAM1CHLK,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSCKV50XXXXAM3CHLK,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSCKV50XXXXAM3LHLK,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSCKV50XXXXAM3RHLK,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSCKV63XXXXAM1CHL,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSCKV63XXXXAM1CHLK,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSCKV63XXXXAM3CHL,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSCKV63XXXXAM3CHLK,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSCKV63XXXXAM3LHLK,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSCKV63XXXXAM3RHLK,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK40AM1CKNXXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK40AM1CKXXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK40AM1LKXXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK40AM1RKXXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK40AM3CKNXXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK40AM3CKXXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK40AM3LKXXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK40AM3RKXXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK50AM1CKNXXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK50AM1CKXXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK50AM1LKXXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK50AM1RKXXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK50AM3CKNXXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK50AM3CKXXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK50AM3LKXXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK50AM3RKXXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK63AM1CKNXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK63AM1CKXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK63AM1CXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK63AM1LKXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK63AM1RKXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK63AM3CKNXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK63AM3CKXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK63AM3CXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK63AM3LKXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK63AM3LXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK63AM3RKXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK63AM3RXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK80AM3CKXXXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK80AM3LKXXXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSK80AM3RKXXXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV40AM1CKNXXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV40AM1CKXXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV40AM1LKXXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV40AM1RKXXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV40AM3CKNXXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV40AM3CKXXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV40AM3LKXXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV40AM3RKXXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV50AM1CKNXXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV50AM1LKXXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV50AM1RKXXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV50AM3CKNXXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV50AM3CKXXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV50AM3LKXXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV50AM3RKXXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV63AM1CKNXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV63AM1CKXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV63AM1CXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV63AM1LKXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV63AM1RKXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV63AM3CKNXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV63AM3CKXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV63AM3CXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV63AM3LKXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV63AM3LXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV63AM3RKXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV63AM3RXXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV80AM3CKXXXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV80AM3LKXXXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
AIRTAC,JSKV80AM3RKXXXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-3E230080L8ULR45-XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-3E230080L8ULS45-XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-3E230080L8UMR45-XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-3E230080L8UMS45-XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-3E230080L8URR45-XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-3E230080L8URS45-XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030040L8ULR15-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030040L8ULR45-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030040L8ULS15-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030040L8ULS45-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030040L8UMR15-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030040L8UMR45-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030040L8UMS15-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030040L8UMS45-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030040L8URR15-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030040L8URR45-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030040L8URS15-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030040L8URS45-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030040N8UMR15-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030040N8UMR45-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030040N8UMS15-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030040N8UMS45-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030050L8ULR15-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030050L8ULR45-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030050L8ULS15-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030050L8ULS45-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030050L8UMR15-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030050L8UMR45-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030050L8UMS15-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030050L8UMS45-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030050L8URR15-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030050L8URR45-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030050L8URS15-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030050L8URS45-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030050N8UMR15-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030050N8UMR45-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030050N8UMS15-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030050N8UMS45-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03006300ULR45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03006300ULS45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03006300UMR15-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03006300UMR45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03006300UMS15-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03006300UMS45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03006300URR45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03006300URS45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030063L8ULR15-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030063L8ULR45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030063L8ULS15-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030063L8ULS45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030063L8UMR15-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030063L8UMR45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030063L8UMS15-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030063L8UMS45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030063L8URR15-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030063L8URR45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030063L8URS15-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030063L8URS45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030063N8UMR15-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030063N8UMR45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030063N8UMS15-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C030063N8UMS45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03H050L8ULR45-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03H050L8ULS45-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03H050L8UMR15-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03H050L8UMR45-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03H050L8UMS15-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03H050L8UMS45-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03H050L8URR45-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03H050L8URS45-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03H06300UMR15-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03H06300UMR45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03H06300UMS15-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03H06300UMS45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03H063L8ULR45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03H063L8ULS45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03H063L8UMR15-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03H063L8UMR45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03H063L8UMS15-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03H063L8UMS45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,82M-4C03H063L8URS45-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,DUP80**,UAGP080_W,"德系对照表: 翻转气缸 (自动映射, 待核对)"
|
||||||
|
DESTACO,UPU80**,UAGP080_W,"德系对照表: 翻转气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC40HA10S12GXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC40HA10S14GXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC40HA11S12GXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC40HA12S12GXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC40HA50S12GXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC40HA50S14GXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC40HA51S12GXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC40HA52S12GXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC40VA10S12GXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC40VA10S14GXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC40VA11S12GXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC40VA12S12GXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC40VA50S12GXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC40VA50S14GXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC40VA51S12GXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC40VA52S12GXXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC50HA10S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC50HA10S14GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC50HA11S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC50HA12S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC50HA40S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC50HA40S14GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC50HA41S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC50HA42S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC50VA10S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC50VA10S14GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC50VA11S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC50VA12S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC50VA40S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC50VA40S14GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC50VA41S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC50VA42S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63HA10S00GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63HA10S12GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63HA10S14GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63HA11S12GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63HA12S12GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63HA40S00GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63HA40S12GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63HA40S14GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63HA41S00GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63HA41S12GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63HA42S00GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63HA42S12GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63VA10S00GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63VA10S12GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63VA10S14GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63VA11S12GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63VA12S12GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63VA40S00GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63VA40S12GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63VA40S14GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63VA41S00GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63VA41S12GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63VA42S00GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC63VA42S12GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC80HA40S12GXXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC80HA41S12GXXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC80HA42S12GXXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC80VA40S12GXXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC80VA41S12GXXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DC80VA42S12GXXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DCM50HA10S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DCM50HA40S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DCM50HA41S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DCM50HA42S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DCM50VA10S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DCM50VA40S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DCM50VA41S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DCM50VA42S12GXXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DCM63HA10S00GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DCM63HA10S12GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DCM63HA40S00GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DCM63HA40S12GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DCM63HA42S12GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DCM63VA10S00GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DCM63VA10S12GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DCM63VA40S00GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DCM63VA40S12GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DCM63VA41S12GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DCM63VA42S12GXXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DF80HA01KLBS12GXXX,UAGP080_W,"德系对照表: 翻转气缸 (自动映射, 待核对)"
|
||||||
|
DOTRAN,DF80VA03KLBS12GXXX,UAGP080_W,"德系对照表: 翻转气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKF80-VE01W12-XXX,UAGP080_W,"德系对照表: 翻转气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKFK80-VE02W12-XXX,UAGP080_W,"德系对照表: 翻转气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUH50-L02W12-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUH50-R02W12-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUH50-Z01W12-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUH50-Z02W12-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUH63-L02W12-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUH63-Z01W00-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUH63-Z01W12-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUH63-Z02W00-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUH63-Z02W12-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUHV50-L02W12-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUHV50-R02W12-105,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUHV50-Z01W12-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUHV50-Z02W12-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUHV63-L02W12-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUHV63-R02W12-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUHV63-Z01W00-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUHV63-Z01W12-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUHV63-Z02W00-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUHV63-Z02W12-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS40-L01W12-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS40-L02W12-105,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS40-R01W12-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS40-R02W12-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS40-Z01W12-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS40-Z01W12N-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS40-Z02W12-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS40-Z02W12N-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS50-L01W12-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS50-L02W12-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS50-R01W12-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS50-R02W12-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS50-Z01W12-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS50-Z01W12N-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS50-Z02W12-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS50-Z02W12N-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS63-L01W12-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS63-L02W00-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS63-L02W12-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS63-R01W12-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS63-R02W00-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS63-R02W12-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS63-Z01W00-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS63-Z01W12-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS63-Z01W12N-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS63-Z02W00-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS63-Z02W12-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS63-Z02W12N-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS80-L02W12-XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS80-R02W12-XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUS80-Z02W12-XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV40-L01W12-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV40-L05W12-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV40-R01W12-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV40-R05W12-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV40-Z01W12-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV40-Z01W12N-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV40-Z05W12-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV40-Z05W12N-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV50-L01W12-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV50-L02W12-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV50-R01W12-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV50-R02W12-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV50-Z01W12-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV50-Z01W12N-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV50-Z02W12-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV50-Z02W12N-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV63-L01W12-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV63-L02W00-105,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV63-L02W12-105,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV63-R01W12-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV63-R02W00-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV63-R02W12-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV63-Z01W00-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV63-Z01W12-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV63-Z01W12N-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV63-Z02W00-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV63-Z02W12-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV63-Z02W12N-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV80-L02W12-XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV80-R02W12-XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
HITOP,AKUSV80-Z02W12-XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
SMC,CKZ5T40-XXXT+CKZT40-A045LS,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
SMC,CKZ5T50-XXXT+CKZT50-A045CS,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
SMC,CKZ5T50-XXXT+CKZT50-A045LS,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
SMC,CKZ5T50-XXXT+CKZT50-A045RS,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
SMC,CKZ5T50-XXXT-X2568L+CKZT50-A045CS,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
SMC,CKZ5T50-XXXT-X2568L+CKZT50-A045LS,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
SMC,CKZ5T50-XXXT-X2568L+CKZT50-A045RS,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
SMC,CKZ5T63-XXXT+CKZT63-A045CS,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
SMC,CKZ5T63-XXXT+CKZT63-A045LS,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
SMC,CKZ5T63-XXXT+CKZT63-A045RS,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
SMC,CKZ5T63-XXXT-X2568L+CKZT63-A045CS,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
SMC,CKZ5T63-XXXT-X2568L+CKZT63-A045LS,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
SMC,CKZ5T63-XXXT-X2568L+CKZT63-A045RS,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
SMC,CKZ5T63-XXXW+CKZT63-A045CS,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
SMC,CKZ5T63-XXXW+CKZT63-A045LS,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
SMC,CKZ5T63-XXXW+CKZT63-A045RS,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
SMC,CKZ5T63-XXXW-X2568L+CKZT63-A045CS,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
SMC,CKZ5T80-XXXT+CKZT80-A045LS,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,KS 80.6 SG A01 LH T12 XXX,UAGP080_W,"德系对照表: 翻转气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,KS2 80.6 SG A03 LH T12 XXX,UAGP080_W,"德系对照表: 翻转气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 40 BR2 A10 T12 XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 40 BR2 A10 T12N XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 40 BR2 A11 T12 XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 40 BR2 A12 T12 XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 40 BR2 A50 T12 XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 40 BR2 A50 T12N XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 40 BR2 A51 T12 XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 40 BR2 A52 T12 XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 50.1 BR2 Z A10 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 50.1 BR2 Z A40 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 50.1 BR2 Z A41 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 50.1 BR2 Z A42 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 50.1 BR3 A10 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 50.1 BR3 A10 T12N XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 50.1 BR3 A11 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 50.1 BR3 A12 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 50.1 BR3 A40 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 50.1 BR3 A40 T12N XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 50.1 BR3 A41 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 50.1 BR3 A42 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 63.1 BR2 Z A10 T00 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 63.1 BR2 Z A10 T12 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 63.1 BR2 Z A40 T00 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 63.1 BR2 Z A40 T12 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 63.1 BR2 Z A42 T12 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 63.1 BR3 A10 T00 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 63.1 BR3 A10 T12 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 63.1 BR3 A10 T12N XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 63.1 BR3 A11 T12 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 63.1 BR3 A12 T12 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 63.1 BR3 A40 T00 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 63.1 BR3 A40 T12 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 63.1 BR3 A40 T12N XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 63.1 BR3 A41 T00 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 63.1 BR3 A41 T12 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 63.1 BR3 A42 T00 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 63.1 BR3 A42 T12 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 80.1 BR2 A40 T12 XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 80.1 BR2 A41 T12 XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V 80.1 BR2 A42 T12 XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 40 BR2 A10 T12 XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 40 BR2 A10 T12N XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 40 BR2 A11 T12 XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 40 BR2 A12 T12 XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 40 BR2 A50 T12 XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 40 BR2 A50 T12N XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 40 BR2 A51 T12 XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 40 BR2 A52 T12 XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 50.1 BR2 Z A10 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 50.1 BR2 Z A40 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 50.1 BR2 Z A41 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 50.1 BR2 Z A42 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 50.1 BR3 A10 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 50.1 BR3 A10 T12N XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 50.1 BR3 A11 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 50.1 BR3 A12 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 50.1 BR3 A40 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 50.1 BR3 A40 T12N XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 50.1 BR3 A41 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 50.1 BR3 A42 T12 XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 63.1 BR2 Z A10 T00 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 63.1 BR2 Z A10 T12 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 63.1 BR2 Z A40 T00 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 63.1 BR2 Z A40 T12 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 63.1 BR2 Z A41 T12 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 63.1 BR2 Z A42 T12 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 63.1 BR3 A10 T00 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 63.1 BR3 A10 T12 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 63.1 BR3 A10 T12N XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 63.1 BR3 A11 T12 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 63.1 BR3 A12 T12 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 63.1 BR3 A40 T00 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 63.1 BR3 A40 T12 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 63.1 BR3 A40 T12N XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 63.1 BR3 A41 T00 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 63.1 BR3 A41 T12 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 63.1 BR3 A42 T00 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 63.1 BR3 A42 T12 XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 80.1 BR2 A40 T12 XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 80.1 BR2 A41 T12 XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
TUENKERS,V2 80.1 BR2 A42 T12 XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBM50OCSKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBM50OESKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBM50OFSKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBM50OLSKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBM50VCSKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBM50VESKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBM50VFSKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBM50VLSKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBM63OCSKO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBM63OCSNO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBM63OESKO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBM63OESNO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBM63OFSKO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBM63OLSKO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBM63VCSKO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBM63VCSNO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBM63VESKO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBM63VESNO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBM63VLSKO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP40OCSK0-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP40ODSK0--XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP40OESK0-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP40OFSK0-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP40OLSK0-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP40OSSK0-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP40VCSK0-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP40VDSK0-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP40VESK0-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP40VFSK0-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP40VLSK0-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP40VSSK0-XXX,UCBM40,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP50OCSKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP50ODSKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP50OESKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP50OFSKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP50OLSKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP50OSSKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP50VCSKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP50VDSKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP50VESKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP50VFSKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP50VLSKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP50VSSKO-XXX,UCBM50,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63OCSKO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63OCSNO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63ODSKO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63OESKO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63OESNO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63OFSKO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63OFSNO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63OLSKO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63OLSNO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63OSSKO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63VCSKO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63VCSNO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63VDSKO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63VESKO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63VESNO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63VFSKO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63VFSNO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63VLSKO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63VLSNO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP63VSSKO-XXX,UCBM63,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP80OESKO-XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP80OFSKO-XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP80OLSKO-XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP80VESKO-XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP80VFSKO-XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
UNIVER,UCBP80VLSKO-XXX,UCBM80,"德系对照表: 夹紧气缸 (自动映射, 待核对)"
|
||||||
|
5
onebot-data/catalog/crossref.csv.bak_20260825_131113
Normal file
5
onebot-data/catalog/crossref.csv.bak_20260825_131113
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
brand,foreign_model,our_model,note
|
||||||
|
JELPC,SQ32-100,KCS0032-100,基础型平替(待核对)
|
||||||
|
JELPC,SQ32-10,KCS0032-10,基础型平替(待核对)
|
||||||
|
JELPC,SQ32-50,KCS0032-50,基础型平替(待核对)
|
||||||
|
SMC,SQ32-50,KCS0032-50,基础型平替(待核对)
|
||||||
2629
onebot-data/catalog/csv/KC.csv
Normal file
2629
onebot-data/catalog/csv/KC.csv
Normal file
File diff suppressed because it is too large
Load Diff
589
onebot-data/catalog/csv/KCB.csv
Normal file
589
onebot-data/catalog/csv/KCB.csv
Normal file
@@ -0,0 +1,589 @@
|
|||||||
|
model_code,bore,stroke,magnet,mount,step_file
|
||||||
|
KCB32-10,32,10,,,KCB--32x10.step
|
||||||
|
KCB32-10FA,32,10,,FA,KCB--32x10.step
|
||||||
|
KCB32-10FB,32,10,,FB,KCB--32x10.step
|
||||||
|
KCB32-10CA,32,10,,CA,KCB--32x10.step
|
||||||
|
KCB32-10CB,32,10,,CB,KCB--32x10.step
|
||||||
|
KCB32-10LB,32,10,,LB,KCB--32x10.step
|
||||||
|
KCB32-10YB,32,10,,YB,KCB--32x10.step
|
||||||
|
KCB32-10M,32,10,M,,KCB--32x10.step
|
||||||
|
KCB32-10MFA,32,10,M,FA,KCB--32x10.step
|
||||||
|
KCB32-10MFB,32,10,M,FB,KCB--32x10.step
|
||||||
|
KCB32-10MCA,32,10,M,CA,KCB--32x10.step
|
||||||
|
KCB32-10MCB,32,10,M,CB,KCB--32x10.step
|
||||||
|
KCB32-10MLB,32,10,M,LB,KCB--32x10.step
|
||||||
|
KCB32-10MYB,32,10,M,YB,KCB--32x10.step
|
||||||
|
KCB32-20,32,20,,,KCB--32x20.step
|
||||||
|
KCB32-20FA,32,20,,FA,KCB--32x20.step
|
||||||
|
KCB32-20FB,32,20,,FB,KCB--32x20.step
|
||||||
|
KCB32-20CA,32,20,,CA,KCB--32x20.step
|
||||||
|
KCB32-20CB,32,20,,CB,KCB--32x20.step
|
||||||
|
KCB32-20LB,32,20,,LB,KCB--32x20.step
|
||||||
|
KCB32-20YB,32,20,,YB,KCB--32x20.step
|
||||||
|
KCB32-20M,32,20,M,,KCB--32x20.step
|
||||||
|
KCB32-20MFA,32,20,M,FA,KCB--32x20.step
|
||||||
|
KCB32-20MFB,32,20,M,FB,KCB--32x20.step
|
||||||
|
KCB32-20MCA,32,20,M,CA,KCB--32x20.step
|
||||||
|
KCB32-20MCB,32,20,M,CB,KCB--32x20.step
|
||||||
|
KCB32-20MLB,32,20,M,LB,KCB--32x20.step
|
||||||
|
KCB32-20MYB,32,20,M,YB,KCB--32x20.step
|
||||||
|
KCB32-30,32,30,,,KCB--32x30.step
|
||||||
|
KCB32-30FA,32,30,,FA,KCB--32x30.step
|
||||||
|
KCB32-30FB,32,30,,FB,KCB--32x30.step
|
||||||
|
KCB32-30CA,32,30,,CA,KCB--32x30.step
|
||||||
|
KCB32-30CB,32,30,,CB,KCB--32x30.step
|
||||||
|
KCB32-30LB,32,30,,LB,KCB--32x30.step
|
||||||
|
KCB32-30YB,32,30,,YB,KCB--32x30.step
|
||||||
|
KCB32-30M,32,30,M,,KCB--32x30.step
|
||||||
|
KCB32-30MFA,32,30,M,FA,KCB--32x30.step
|
||||||
|
KCB32-30MFB,32,30,M,FB,KCB--32x30.step
|
||||||
|
KCB32-30MCA,32,30,M,CA,KCB--32x30.step
|
||||||
|
KCB32-30MCB,32,30,M,CB,KCB--32x30.step
|
||||||
|
KCB32-30MLB,32,30,M,LB,KCB--32x30.step
|
||||||
|
KCB32-30MYB,32,30,M,YB,KCB--32x30.step
|
||||||
|
KCB32-50,32,50,,,KCB--32x50.step
|
||||||
|
KCB32-50FA,32,50,,FA,KCB--32x50.step
|
||||||
|
KCB32-50FB,32,50,,FB,KCB--32x50.step
|
||||||
|
KCB32-50CA,32,50,,CA,KCB--32x50.step
|
||||||
|
KCB32-50CB,32,50,,CB,KCB--32x50.step
|
||||||
|
KCB32-50LB,32,50,,LB,KCB--32x50.step
|
||||||
|
KCB32-50YB,32,50,,YB,KCB--32x50.step
|
||||||
|
KCB32-50M,32,50,M,,KCB--32x50.step
|
||||||
|
KCB32-50MFA,32,50,M,FA,KCB--32x50.step
|
||||||
|
KCB32-50MFB,32,50,M,FB,KCB--32x50.step
|
||||||
|
KCB32-50MCA,32,50,M,CA,KCB--32x50.step
|
||||||
|
KCB32-50MCB,32,50,M,CB,KCB--32x50.step
|
||||||
|
KCB32-50MLB,32,50,M,LB,KCB--32x50.step
|
||||||
|
KCB32-50MYB,32,50,M,YB,KCB--32x50.step
|
||||||
|
KCB32-75,32,75,,,KCB--32x75.step
|
||||||
|
KCB32-75FA,32,75,,FA,KCB--32x75.step
|
||||||
|
KCB32-75FB,32,75,,FB,KCB--32x75.step
|
||||||
|
KCB32-75CA,32,75,,CA,KCB--32x75.step
|
||||||
|
KCB32-75CB,32,75,,CB,KCB--32x75.step
|
||||||
|
KCB32-75LB,32,75,,LB,KCB--32x75.step
|
||||||
|
KCB32-75YB,32,75,,YB,KCB--32x75.step
|
||||||
|
KCB32-75M,32,75,M,,KCB--32x75.step
|
||||||
|
KCB32-75MFA,32,75,M,FA,KCB--32x75.step
|
||||||
|
KCB32-75MFB,32,75,M,FB,KCB--32x75.step
|
||||||
|
KCB32-75MCA,32,75,M,CA,KCB--32x75.step
|
||||||
|
KCB32-75MCB,32,75,M,CB,KCB--32x75.step
|
||||||
|
KCB32-75MLB,32,75,M,LB,KCB--32x75.step
|
||||||
|
KCB32-75MYB,32,75,M,YB,KCB--32x75.step
|
||||||
|
KCB32-100,32,100,,,KCB--32x100.step
|
||||||
|
KCB32-100FA,32,100,,FA,KCB--32x100.step
|
||||||
|
KCB32-100FB,32,100,,FB,KCB--32x100.step
|
||||||
|
KCB32-100CA,32,100,,CA,KCB--32x100.step
|
||||||
|
KCB32-100CB,32,100,,CB,KCB--32x100.step
|
||||||
|
KCB32-100LB,32,100,,LB,KCB--32x100.step
|
||||||
|
KCB32-100YB,32,100,,YB,KCB--32x100.step
|
||||||
|
KCB32-100M,32,100,M,,KCB--32x100.step
|
||||||
|
KCB32-100MFA,32,100,M,FA,KCB--32x100.step
|
||||||
|
KCB32-100MFB,32,100,M,FB,KCB--32x100.step
|
||||||
|
KCB32-100MCA,32,100,M,CA,KCB--32x100.step
|
||||||
|
KCB32-100MCB,32,100,M,CB,KCB--32x100.step
|
||||||
|
KCB32-100MLB,32,100,M,LB,KCB--32x100.step
|
||||||
|
KCB32-100MYB,32,100,M,YB,KCB--32x100.step
|
||||||
|
KCB40-10,40,10,,,KCB--40x10.step
|
||||||
|
KCB40-10FA,40,10,,FA,KCB--40x10.step
|
||||||
|
KCB40-10FB,40,10,,FB,KCB--40x10.step
|
||||||
|
KCB40-10CA,40,10,,CA,KCB--40x10.step
|
||||||
|
KCB40-10CB,40,10,,CB,KCB--40x10.step
|
||||||
|
KCB40-10LB,40,10,,LB,KCB--40x10.step
|
||||||
|
KCB40-10YB,40,10,,YB,KCB--40x10.step
|
||||||
|
KCB40-10M,40,10,M,,KCB--40x10.step
|
||||||
|
KCB40-10MFA,40,10,M,FA,KCB--40x10.step
|
||||||
|
KCB40-10MFB,40,10,M,FB,KCB--40x10.step
|
||||||
|
KCB40-10MCA,40,10,M,CA,KCB--40x10.step
|
||||||
|
KCB40-10MCB,40,10,M,CB,KCB--40x10.step
|
||||||
|
KCB40-10MLB,40,10,M,LB,KCB--40x10.step
|
||||||
|
KCB40-10MYB,40,10,M,YB,KCB--40x10.step
|
||||||
|
KCB40-20,40,20,,,KCB--40x20.step
|
||||||
|
KCB40-20FA,40,20,,FA,KCB--40x20.step
|
||||||
|
KCB40-20FB,40,20,,FB,KCB--40x20.step
|
||||||
|
KCB40-20CA,40,20,,CA,KCB--40x20.step
|
||||||
|
KCB40-20CB,40,20,,CB,KCB--40x20.step
|
||||||
|
KCB40-20LB,40,20,,LB,KCB--40x20.step
|
||||||
|
KCB40-20YB,40,20,,YB,KCB--40x20.step
|
||||||
|
KCB40-20M,40,20,M,,KCB--40x20.step
|
||||||
|
KCB40-20MFA,40,20,M,FA,KCB--40x20.step
|
||||||
|
KCB40-20MFB,40,20,M,FB,KCB--40x20.step
|
||||||
|
KCB40-20MCA,40,20,M,CA,KCB--40x20.step
|
||||||
|
KCB40-20MCB,40,20,M,CB,KCB--40x20.step
|
||||||
|
KCB40-20MLB,40,20,M,LB,KCB--40x20.step
|
||||||
|
KCB40-20MYB,40,20,M,YB,KCB--40x20.step
|
||||||
|
KCB40-30,40,30,,,KCB--40x30.step
|
||||||
|
KCB40-30FA,40,30,,FA,KCB--40x30.step
|
||||||
|
KCB40-30FB,40,30,,FB,KCB--40x30.step
|
||||||
|
KCB40-30CA,40,30,,CA,KCB--40x30.step
|
||||||
|
KCB40-30CB,40,30,,CB,KCB--40x30.step
|
||||||
|
KCB40-30LB,40,30,,LB,KCB--40x30.step
|
||||||
|
KCB40-30YB,40,30,,YB,KCB--40x30.step
|
||||||
|
KCB40-30M,40,30,M,,KCB--40x30.step
|
||||||
|
KCB40-30MFA,40,30,M,FA,KCB--40x30.step
|
||||||
|
KCB40-30MFB,40,30,M,FB,KCB--40x30.step
|
||||||
|
KCB40-30MCA,40,30,M,CA,KCB--40x30.step
|
||||||
|
KCB40-30MCB,40,30,M,CB,KCB--40x30.step
|
||||||
|
KCB40-30MLB,40,30,M,LB,KCB--40x30.step
|
||||||
|
KCB40-30MYB,40,30,M,YB,KCB--40x30.step
|
||||||
|
KCB40-50,40,50,,,KCB--40x50.step
|
||||||
|
KCB40-50FA,40,50,,FA,KCB--40x50.step
|
||||||
|
KCB40-50FB,40,50,,FB,KCB--40x50.step
|
||||||
|
KCB40-50CA,40,50,,CA,KCB--40x50.step
|
||||||
|
KCB40-50CB,40,50,,CB,KCB--40x50.step
|
||||||
|
KCB40-50LB,40,50,,LB,KCB--40x50.step
|
||||||
|
KCB40-50YB,40,50,,YB,KCB--40x50.step
|
||||||
|
KCB40-50M,40,50,M,,KCB--40x50.step
|
||||||
|
KCB40-50MFA,40,50,M,FA,KCB--40x50.step
|
||||||
|
KCB40-50MFB,40,50,M,FB,KCB--40x50.step
|
||||||
|
KCB40-50MCA,40,50,M,CA,KCB--40x50.step
|
||||||
|
KCB40-50MCB,40,50,M,CB,KCB--40x50.step
|
||||||
|
KCB40-50MLB,40,50,M,LB,KCB--40x50.step
|
||||||
|
KCB40-50MYB,40,50,M,YB,KCB--40x50.step
|
||||||
|
KCB40-75,40,75,,,KCB--40x75.step
|
||||||
|
KCB40-75FA,40,75,,FA,KCB--40x75.step
|
||||||
|
KCB40-75FB,40,75,,FB,KCB--40x75.step
|
||||||
|
KCB40-75CA,40,75,,CA,KCB--40x75.step
|
||||||
|
KCB40-75CB,40,75,,CB,KCB--40x75.step
|
||||||
|
KCB40-75LB,40,75,,LB,KCB--40x75.step
|
||||||
|
KCB40-75YB,40,75,,YB,KCB--40x75.step
|
||||||
|
KCB40-75M,40,75,M,,KCB--40x75.step
|
||||||
|
KCB40-75MFA,40,75,M,FA,KCB--40x75.step
|
||||||
|
KCB40-75MFB,40,75,M,FB,KCB--40x75.step
|
||||||
|
KCB40-75MCA,40,75,M,CA,KCB--40x75.step
|
||||||
|
KCB40-75MCB,40,75,M,CB,KCB--40x75.step
|
||||||
|
KCB40-75MLB,40,75,M,LB,KCB--40x75.step
|
||||||
|
KCB40-75MYB,40,75,M,YB,KCB--40x75.step
|
||||||
|
KCB40-100,40,100,,,KCB--40x100.step
|
||||||
|
KCB40-100FA,40,100,,FA,KCB--40x100.step
|
||||||
|
KCB40-100FB,40,100,,FB,KCB--40x100.step
|
||||||
|
KCB40-100CA,40,100,,CA,KCB--40x100.step
|
||||||
|
KCB40-100CB,40,100,,CB,KCB--40x100.step
|
||||||
|
KCB40-100LB,40,100,,LB,KCB--40x100.step
|
||||||
|
KCB40-100YB,40,100,,YB,KCB--40x100.step
|
||||||
|
KCB40-100M,40,100,M,,KCB--40x100.step
|
||||||
|
KCB40-100MFA,40,100,M,FA,KCB--40x100.step
|
||||||
|
KCB40-100MFB,40,100,M,FB,KCB--40x100.step
|
||||||
|
KCB40-100MCA,40,100,M,CA,KCB--40x100.step
|
||||||
|
KCB40-100MCB,40,100,M,CB,KCB--40x100.step
|
||||||
|
KCB40-100MLB,40,100,M,LB,KCB--40x100.step
|
||||||
|
KCB40-100MYB,40,100,M,YB,KCB--40x100.step
|
||||||
|
KCB50-10,50,10,,,KCB--50x10.step
|
||||||
|
KCB50-10FA,50,10,,FA,KCB--50x10.step
|
||||||
|
KCB50-10FB,50,10,,FB,KCB--50x10.step
|
||||||
|
KCB50-10CA,50,10,,CA,KCB--50x10.step
|
||||||
|
KCB50-10CB,50,10,,CB,KCB--50x10.step
|
||||||
|
KCB50-10LB,50,10,,LB,KCB--50x10.step
|
||||||
|
KCB50-10YB,50,10,,YB,KCB--50x10.step
|
||||||
|
KCB50-10M,50,10,M,,KCB--50x10.step
|
||||||
|
KCB50-10MFA,50,10,M,FA,KCB--50x10.step
|
||||||
|
KCB50-10MFB,50,10,M,FB,KCB--50x10.step
|
||||||
|
KCB50-10MCA,50,10,M,CA,KCB--50x10.step
|
||||||
|
KCB50-10MCB,50,10,M,CB,KCB--50x10.step
|
||||||
|
KCB50-10MLB,50,10,M,LB,KCB--50x10.step
|
||||||
|
KCB50-10MYB,50,10,M,YB,KCB--50x10.step
|
||||||
|
KCB50-20,50,20,,,KCB--50x20.step
|
||||||
|
KCB50-20FA,50,20,,FA,KCB--50x20.step
|
||||||
|
KCB50-20FB,50,20,,FB,KCB--50x20.step
|
||||||
|
KCB50-20CA,50,20,,CA,KCB--50x20.step
|
||||||
|
KCB50-20CB,50,20,,CB,KCB--50x20.step
|
||||||
|
KCB50-20LB,50,20,,LB,KCB--50x20.step
|
||||||
|
KCB50-20YB,50,20,,YB,KCB--50x20.step
|
||||||
|
KCB50-20M,50,20,M,,KCB--50x20.step
|
||||||
|
KCB50-20MFA,50,20,M,FA,KCB--50x20.step
|
||||||
|
KCB50-20MFB,50,20,M,FB,KCB--50x20.step
|
||||||
|
KCB50-20MCA,50,20,M,CA,KCB--50x20.step
|
||||||
|
KCB50-20MCB,50,20,M,CB,KCB--50x20.step
|
||||||
|
KCB50-20MLB,50,20,M,LB,KCB--50x20.step
|
||||||
|
KCB50-20MYB,50,20,M,YB,KCB--50x20.step
|
||||||
|
KCB50-30,50,30,,,KCB--50x30.step
|
||||||
|
KCB50-30FA,50,30,,FA,KCB--50x30.step
|
||||||
|
KCB50-30FB,50,30,,FB,KCB--50x30.step
|
||||||
|
KCB50-30CA,50,30,,CA,KCB--50x30.step
|
||||||
|
KCB50-30CB,50,30,,CB,KCB--50x30.step
|
||||||
|
KCB50-30LB,50,30,,LB,KCB--50x30.step
|
||||||
|
KCB50-30YB,50,30,,YB,KCB--50x30.step
|
||||||
|
KCB50-30M,50,30,M,,KCB--50x30.step
|
||||||
|
KCB50-30MFA,50,30,M,FA,KCB--50x30.step
|
||||||
|
KCB50-30MFB,50,30,M,FB,KCB--50x30.step
|
||||||
|
KCB50-30MCA,50,30,M,CA,KCB--50x30.step
|
||||||
|
KCB50-30MCB,50,30,M,CB,KCB--50x30.step
|
||||||
|
KCB50-30MLB,50,30,M,LB,KCB--50x30.step
|
||||||
|
KCB50-30MYB,50,30,M,YB,KCB--50x30.step
|
||||||
|
KCB50-50,50,50,,,KCB--50x50.step
|
||||||
|
KCB50-50FA,50,50,,FA,KCB--50x50.step
|
||||||
|
KCB50-50FB,50,50,,FB,KCB--50x50.step
|
||||||
|
KCB50-50CA,50,50,,CA,KCB--50x50.step
|
||||||
|
KCB50-50CB,50,50,,CB,KCB--50x50.step
|
||||||
|
KCB50-50LB,50,50,,LB,KCB--50x50.step
|
||||||
|
KCB50-50YB,50,50,,YB,KCB--50x50.step
|
||||||
|
KCB50-50M,50,50,M,,KCB--50x50.step
|
||||||
|
KCB50-50MFA,50,50,M,FA,KCB--50x50.step
|
||||||
|
KCB50-50MFB,50,50,M,FB,KCB--50x50.step
|
||||||
|
KCB50-50MCA,50,50,M,CA,KCB--50x50.step
|
||||||
|
KCB50-50MCB,50,50,M,CB,KCB--50x50.step
|
||||||
|
KCB50-50MLB,50,50,M,LB,KCB--50x50.step
|
||||||
|
KCB50-50MYB,50,50,M,YB,KCB--50x50.step
|
||||||
|
KCB50-75,50,75,,,KCB--50x75.step
|
||||||
|
KCB50-75FA,50,75,,FA,KCB--50x75.step
|
||||||
|
KCB50-75FB,50,75,,FB,KCB--50x75.step
|
||||||
|
KCB50-75CA,50,75,,CA,KCB--50x75.step
|
||||||
|
KCB50-75CB,50,75,,CB,KCB--50x75.step
|
||||||
|
KCB50-75LB,50,75,,LB,KCB--50x75.step
|
||||||
|
KCB50-75YB,50,75,,YB,KCB--50x75.step
|
||||||
|
KCB50-75M,50,75,M,,KCB--50x75.step
|
||||||
|
KCB50-75MFA,50,75,M,FA,KCB--50x75.step
|
||||||
|
KCB50-75MFB,50,75,M,FB,KCB--50x75.step
|
||||||
|
KCB50-75MCA,50,75,M,CA,KCB--50x75.step
|
||||||
|
KCB50-75MCB,50,75,M,CB,KCB--50x75.step
|
||||||
|
KCB50-75MLB,50,75,M,LB,KCB--50x75.step
|
||||||
|
KCB50-75MYB,50,75,M,YB,KCB--50x75.step
|
||||||
|
KCB50-100,50,100,,,KCB--50x100.step
|
||||||
|
KCB50-100FA,50,100,,FA,KCB--50x100.step
|
||||||
|
KCB50-100FB,50,100,,FB,KCB--50x100.step
|
||||||
|
KCB50-100CA,50,100,,CA,KCB--50x100.step
|
||||||
|
KCB50-100CB,50,100,,CB,KCB--50x100.step
|
||||||
|
KCB50-100LB,50,100,,LB,KCB--50x100.step
|
||||||
|
KCB50-100YB,50,100,,YB,KCB--50x100.step
|
||||||
|
KCB50-100M,50,100,M,,KCB--50x100.step
|
||||||
|
KCB50-100MFA,50,100,M,FA,KCB--50x100.step
|
||||||
|
KCB50-100MFB,50,100,M,FB,KCB--50x100.step
|
||||||
|
KCB50-100MCA,50,100,M,CA,KCB--50x100.step
|
||||||
|
KCB50-100MCB,50,100,M,CB,KCB--50x100.step
|
||||||
|
KCB50-100MLB,50,100,M,LB,KCB--50x100.step
|
||||||
|
KCB50-100MYB,50,100,M,YB,KCB--50x100.step
|
||||||
|
KCB63-10,63,10,,,KCB--63x10.step
|
||||||
|
KCB63-10FA,63,10,,FA,KCB--63x10.step
|
||||||
|
KCB63-10FB,63,10,,FB,KCB--63x10.step
|
||||||
|
KCB63-10CA,63,10,,CA,KCB--63x10.step
|
||||||
|
KCB63-10CB,63,10,,CB,KCB--63x10.step
|
||||||
|
KCB63-10LB,63,10,,LB,KCB--63x10.step
|
||||||
|
KCB63-10YB,63,10,,YB,KCB--63x10.step
|
||||||
|
KCB63-10M,63,10,M,,KCB--63x10.step
|
||||||
|
KCB63-10MFA,63,10,M,FA,KCB--63x10.step
|
||||||
|
KCB63-10MFB,63,10,M,FB,KCB--63x10.step
|
||||||
|
KCB63-10MCA,63,10,M,CA,KCB--63x10.step
|
||||||
|
KCB63-10MCB,63,10,M,CB,KCB--63x10.step
|
||||||
|
KCB63-10MLB,63,10,M,LB,KCB--63x10.step
|
||||||
|
KCB63-10MYB,63,10,M,YB,KCB--63x10.step
|
||||||
|
KCB63-20,63,20,,,KCB--63x20.step
|
||||||
|
KCB63-20FA,63,20,,FA,KCB--63x20.step
|
||||||
|
KCB63-20FB,63,20,,FB,KCB--63x20.step
|
||||||
|
KCB63-20CA,63,20,,CA,KCB--63x20.step
|
||||||
|
KCB63-20CB,63,20,,CB,KCB--63x20.step
|
||||||
|
KCB63-20LB,63,20,,LB,KCB--63x20.step
|
||||||
|
KCB63-20YB,63,20,,YB,KCB--63x20.step
|
||||||
|
KCB63-20M,63,20,M,,KCB--63x20.step
|
||||||
|
KCB63-20MFA,63,20,M,FA,KCB--63x20.step
|
||||||
|
KCB63-20MFB,63,20,M,FB,KCB--63x20.step
|
||||||
|
KCB63-20MCA,63,20,M,CA,KCB--63x20.step
|
||||||
|
KCB63-20MCB,63,20,M,CB,KCB--63x20.step
|
||||||
|
KCB63-20MLB,63,20,M,LB,KCB--63x20.step
|
||||||
|
KCB63-20MYB,63,20,M,YB,KCB--63x20.step
|
||||||
|
KCB63-30,63,30,,,KCB--63x30.step
|
||||||
|
KCB63-30FA,63,30,,FA,KCB--63x30.step
|
||||||
|
KCB63-30FB,63,30,,FB,KCB--63x30.step
|
||||||
|
KCB63-30CA,63,30,,CA,KCB--63x30.step
|
||||||
|
KCB63-30CB,63,30,,CB,KCB--63x30.step
|
||||||
|
KCB63-30LB,63,30,,LB,KCB--63x30.step
|
||||||
|
KCB63-30YB,63,30,,YB,KCB--63x30.step
|
||||||
|
KCB63-30M,63,30,M,,KCB--63x30.step
|
||||||
|
KCB63-30MFA,63,30,M,FA,KCB--63x30.step
|
||||||
|
KCB63-30MFB,63,30,M,FB,KCB--63x30.step
|
||||||
|
KCB63-30MCA,63,30,M,CA,KCB--63x30.step
|
||||||
|
KCB63-30MCB,63,30,M,CB,KCB--63x30.step
|
||||||
|
KCB63-30MLB,63,30,M,LB,KCB--63x30.step
|
||||||
|
KCB63-30MYB,63,30,M,YB,KCB--63x30.step
|
||||||
|
KCB63-50,63,50,,,KCB--63x50.step
|
||||||
|
KCB63-50FA,63,50,,FA,KCB--63x50.step
|
||||||
|
KCB63-50FB,63,50,,FB,KCB--63x50.step
|
||||||
|
KCB63-50CA,63,50,,CA,KCB--63x50.step
|
||||||
|
KCB63-50CB,63,50,,CB,KCB--63x50.step
|
||||||
|
KCB63-50LB,63,50,,LB,KCB--63x50.step
|
||||||
|
KCB63-50YB,63,50,,YB,KCB--63x50.step
|
||||||
|
KCB63-50M,63,50,M,,KCB--63x50.step
|
||||||
|
KCB63-50MFA,63,50,M,FA,KCB--63x50.step
|
||||||
|
KCB63-50MFB,63,50,M,FB,KCB--63x50.step
|
||||||
|
KCB63-50MCA,63,50,M,CA,KCB--63x50.step
|
||||||
|
KCB63-50MCB,63,50,M,CB,KCB--63x50.step
|
||||||
|
KCB63-50MLB,63,50,M,LB,KCB--63x50.step
|
||||||
|
KCB63-50MYB,63,50,M,YB,KCB--63x50.step
|
||||||
|
KCB63-75,63,75,,,KCB--63x75.step
|
||||||
|
KCB63-75FA,63,75,,FA,KCB--63x75.step
|
||||||
|
KCB63-75FB,63,75,,FB,KCB--63x75.step
|
||||||
|
KCB63-75CA,63,75,,CA,KCB--63x75.step
|
||||||
|
KCB63-75CB,63,75,,CB,KCB--63x75.step
|
||||||
|
KCB63-75LB,63,75,,LB,KCB--63x75.step
|
||||||
|
KCB63-75YB,63,75,,YB,KCB--63x75.step
|
||||||
|
KCB63-75M,63,75,M,,KCB--63x75.step
|
||||||
|
KCB63-75MFA,63,75,M,FA,KCB--63x75.step
|
||||||
|
KCB63-75MFB,63,75,M,FB,KCB--63x75.step
|
||||||
|
KCB63-75MCA,63,75,M,CA,KCB--63x75.step
|
||||||
|
KCB63-75MCB,63,75,M,CB,KCB--63x75.step
|
||||||
|
KCB63-75MLB,63,75,M,LB,KCB--63x75.step
|
||||||
|
KCB63-75MYB,63,75,M,YB,KCB--63x75.step
|
||||||
|
KCB63-100,63,100,,,KCB--63x100.step
|
||||||
|
KCB63-100FA,63,100,,FA,KCB--63x100.step
|
||||||
|
KCB63-100FB,63,100,,FB,KCB--63x100.step
|
||||||
|
KCB63-100CA,63,100,,CA,KCB--63x100.step
|
||||||
|
KCB63-100CB,63,100,,CB,KCB--63x100.step
|
||||||
|
KCB63-100LB,63,100,,LB,KCB--63x100.step
|
||||||
|
KCB63-100YB,63,100,,YB,KCB--63x100.step
|
||||||
|
KCB63-100M,63,100,M,,KCB--63x100.step
|
||||||
|
KCB63-100MFA,63,100,M,FA,KCB--63x100.step
|
||||||
|
KCB63-100MFB,63,100,M,FB,KCB--63x100.step
|
||||||
|
KCB63-100MCA,63,100,M,CA,KCB--63x100.step
|
||||||
|
KCB63-100MCB,63,100,M,CB,KCB--63x100.step
|
||||||
|
KCB63-100MLB,63,100,M,LB,KCB--63x100.step
|
||||||
|
KCB63-100MYB,63,100,M,YB,KCB--63x100.step
|
||||||
|
KCB80-10,80,10,,,KCB--80x10.step
|
||||||
|
KCB80-10FA,80,10,,FA,KCB--80x10.step
|
||||||
|
KCB80-10FB,80,10,,FB,KCB--80x10.step
|
||||||
|
KCB80-10CA,80,10,,CA,KCB--80x10.step
|
||||||
|
KCB80-10CB,80,10,,CB,KCB--80x10.step
|
||||||
|
KCB80-10LB,80,10,,LB,KCB--80x10.step
|
||||||
|
KCB80-10YB,80,10,,YB,KCB--80x10.step
|
||||||
|
KCB80-10M,80,10,M,,KCB--80x10.step
|
||||||
|
KCB80-10MFA,80,10,M,FA,KCB--80x10.step
|
||||||
|
KCB80-10MFB,80,10,M,FB,KCB--80x10.step
|
||||||
|
KCB80-10MCA,80,10,M,CA,KCB--80x10.step
|
||||||
|
KCB80-10MCB,80,10,M,CB,KCB--80x10.step
|
||||||
|
KCB80-10MLB,80,10,M,LB,KCB--80x10.step
|
||||||
|
KCB80-10MYB,80,10,M,YB,KCB--80x10.step
|
||||||
|
KCB80-20,80,20,,,KCB--80x20.step
|
||||||
|
KCB80-20FA,80,20,,FA,KCB--80x20.step
|
||||||
|
KCB80-20FB,80,20,,FB,KCB--80x20.step
|
||||||
|
KCB80-20CA,80,20,,CA,KCB--80x20.step
|
||||||
|
KCB80-20CB,80,20,,CB,KCB--80x20.step
|
||||||
|
KCB80-20LB,80,20,,LB,KCB--80x20.step
|
||||||
|
KCB80-20YB,80,20,,YB,KCB--80x20.step
|
||||||
|
KCB80-20M,80,20,M,,KCB--80x20.step
|
||||||
|
KCB80-20MFA,80,20,M,FA,KCB--80x20.step
|
||||||
|
KCB80-20MFB,80,20,M,FB,KCB--80x20.step
|
||||||
|
KCB80-20MCA,80,20,M,CA,KCB--80x20.step
|
||||||
|
KCB80-20MCB,80,20,M,CB,KCB--80x20.step
|
||||||
|
KCB80-20MLB,80,20,M,LB,KCB--80x20.step
|
||||||
|
KCB80-20MYB,80,20,M,YB,KCB--80x20.step
|
||||||
|
KCB80-30,80,30,,,KCB--80x30.step
|
||||||
|
KCB80-30FA,80,30,,FA,KCB--80x30.step
|
||||||
|
KCB80-30FB,80,30,,FB,KCB--80x30.step
|
||||||
|
KCB80-30CA,80,30,,CA,KCB--80x30.step
|
||||||
|
KCB80-30CB,80,30,,CB,KCB--80x30.step
|
||||||
|
KCB80-30LB,80,30,,LB,KCB--80x30.step
|
||||||
|
KCB80-30YB,80,30,,YB,KCB--80x30.step
|
||||||
|
KCB80-30M,80,30,M,,KCB--80x30.step
|
||||||
|
KCB80-30MFA,80,30,M,FA,KCB--80x30.step
|
||||||
|
KCB80-30MFB,80,30,M,FB,KCB--80x30.step
|
||||||
|
KCB80-30MCA,80,30,M,CA,KCB--80x30.step
|
||||||
|
KCB80-30MCB,80,30,M,CB,KCB--80x30.step
|
||||||
|
KCB80-30MLB,80,30,M,LB,KCB--80x30.step
|
||||||
|
KCB80-30MYB,80,30,M,YB,KCB--80x30.step
|
||||||
|
KCB80-50,80,50,,,KCB--80x50.step
|
||||||
|
KCB80-50FA,80,50,,FA,KCB--80x50.step
|
||||||
|
KCB80-50FB,80,50,,FB,KCB--80x50.step
|
||||||
|
KCB80-50CA,80,50,,CA,KCB--80x50.step
|
||||||
|
KCB80-50CB,80,50,,CB,KCB--80x50.step
|
||||||
|
KCB80-50LB,80,50,,LB,KCB--80x50.step
|
||||||
|
KCB80-50YB,80,50,,YB,KCB--80x50.step
|
||||||
|
KCB80-50M,80,50,M,,KCB--80x50.step
|
||||||
|
KCB80-50MFA,80,50,M,FA,KCB--80x50.step
|
||||||
|
KCB80-50MFB,80,50,M,FB,KCB--80x50.step
|
||||||
|
KCB80-50MCA,80,50,M,CA,KCB--80x50.step
|
||||||
|
KCB80-50MCB,80,50,M,CB,KCB--80x50.step
|
||||||
|
KCB80-50MLB,80,50,M,LB,KCB--80x50.step
|
||||||
|
KCB80-50MYB,80,50,M,YB,KCB--80x50.step
|
||||||
|
KCB80-75,80,75,,,KCB--80x75.step
|
||||||
|
KCB80-75FA,80,75,,FA,KCB--80x75.step
|
||||||
|
KCB80-75FB,80,75,,FB,KCB--80x75.step
|
||||||
|
KCB80-75CA,80,75,,CA,KCB--80x75.step
|
||||||
|
KCB80-75CB,80,75,,CB,KCB--80x75.step
|
||||||
|
KCB80-75LB,80,75,,LB,KCB--80x75.step
|
||||||
|
KCB80-75YB,80,75,,YB,KCB--80x75.step
|
||||||
|
KCB80-75M,80,75,M,,KCB--80x75.step
|
||||||
|
KCB80-75MFA,80,75,M,FA,KCB--80x75.step
|
||||||
|
KCB80-75MFB,80,75,M,FB,KCB--80x75.step
|
||||||
|
KCB80-75MCA,80,75,M,CA,KCB--80x75.step
|
||||||
|
KCB80-75MCB,80,75,M,CB,KCB--80x75.step
|
||||||
|
KCB80-75MLB,80,75,M,LB,KCB--80x75.step
|
||||||
|
KCB80-75MYB,80,75,M,YB,KCB--80x75.step
|
||||||
|
KCB80-100,80,100,,,KCB--80x100.step
|
||||||
|
KCB80-100FA,80,100,,FA,KCB--80x100.step
|
||||||
|
KCB80-100FB,80,100,,FB,KCB--80x100.step
|
||||||
|
KCB80-100CA,80,100,,CA,KCB--80x100.step
|
||||||
|
KCB80-100CB,80,100,,CB,KCB--80x100.step
|
||||||
|
KCB80-100LB,80,100,,LB,KCB--80x100.step
|
||||||
|
KCB80-100YB,80,100,,YB,KCB--80x100.step
|
||||||
|
KCB80-100M,80,100,M,,KCB--80x100.step
|
||||||
|
KCB80-100MFA,80,100,M,FA,KCB--80x100.step
|
||||||
|
KCB80-100MFB,80,100,M,FB,KCB--80x100.step
|
||||||
|
KCB80-100MCA,80,100,M,CA,KCB--80x100.step
|
||||||
|
KCB80-100MCB,80,100,M,CB,KCB--80x100.step
|
||||||
|
KCB80-100MLB,80,100,M,LB,KCB--80x100.step
|
||||||
|
KCB80-100MYB,80,100,M,YB,KCB--80x100.step
|
||||||
|
KCB100-10,100,10,,,KCB--100x10.step
|
||||||
|
KCB100-10FA,100,10,,FA,KCB--100x10.step
|
||||||
|
KCB100-10FB,100,10,,FB,KCB--100x10.step
|
||||||
|
KCB100-10CA,100,10,,CA,KCB--100x10.step
|
||||||
|
KCB100-10CB,100,10,,CB,KCB--100x10.step
|
||||||
|
KCB100-10LB,100,10,,LB,KCB--100x10.step
|
||||||
|
KCB100-10YB,100,10,,YB,KCB--100x10.step
|
||||||
|
KCB100-10M,100,10,M,,KCB--100x10.step
|
||||||
|
KCB100-10MFA,100,10,M,FA,KCB--100x10.step
|
||||||
|
KCB100-10MFB,100,10,M,FB,KCB--100x10.step
|
||||||
|
KCB100-10MCA,100,10,M,CA,KCB--100x10.step
|
||||||
|
KCB100-10MCB,100,10,M,CB,KCB--100x10.step
|
||||||
|
KCB100-10MLB,100,10,M,LB,KCB--100x10.step
|
||||||
|
KCB100-10MYB,100,10,M,YB,KCB--100x10.step
|
||||||
|
KCB100-20,100,20,,,KCB--100x20.step
|
||||||
|
KCB100-20FA,100,20,,FA,KCB--100x20.step
|
||||||
|
KCB100-20FB,100,20,,FB,KCB--100x20.step
|
||||||
|
KCB100-20CA,100,20,,CA,KCB--100x20.step
|
||||||
|
KCB100-20CB,100,20,,CB,KCB--100x20.step
|
||||||
|
KCB100-20LB,100,20,,LB,KCB--100x20.step
|
||||||
|
KCB100-20YB,100,20,,YB,KCB--100x20.step
|
||||||
|
KCB100-20M,100,20,M,,KCB--100x20.step
|
||||||
|
KCB100-20MFA,100,20,M,FA,KCB--100x20.step
|
||||||
|
KCB100-20MFB,100,20,M,FB,KCB--100x20.step
|
||||||
|
KCB100-20MCA,100,20,M,CA,KCB--100x20.step
|
||||||
|
KCB100-20MCB,100,20,M,CB,KCB--100x20.step
|
||||||
|
KCB100-20MLB,100,20,M,LB,KCB--100x20.step
|
||||||
|
KCB100-20MYB,100,20,M,YB,KCB--100x20.step
|
||||||
|
KCB100-30,100,30,,,KCB--100x30.step
|
||||||
|
KCB100-30FA,100,30,,FA,KCB--100x30.step
|
||||||
|
KCB100-30FB,100,30,,FB,KCB--100x30.step
|
||||||
|
KCB100-30CA,100,30,,CA,KCB--100x30.step
|
||||||
|
KCB100-30CB,100,30,,CB,KCB--100x30.step
|
||||||
|
KCB100-30LB,100,30,,LB,KCB--100x30.step
|
||||||
|
KCB100-30YB,100,30,,YB,KCB--100x30.step
|
||||||
|
KCB100-30M,100,30,M,,KCB--100x30.step
|
||||||
|
KCB100-30MFA,100,30,M,FA,KCB--100x30.step
|
||||||
|
KCB100-30MFB,100,30,M,FB,KCB--100x30.step
|
||||||
|
KCB100-30MCA,100,30,M,CA,KCB--100x30.step
|
||||||
|
KCB100-30MCB,100,30,M,CB,KCB--100x30.step
|
||||||
|
KCB100-30MLB,100,30,M,LB,KCB--100x30.step
|
||||||
|
KCB100-30MYB,100,30,M,YB,KCB--100x30.step
|
||||||
|
KCB100-50,100,50,,,KCB--100x50.step
|
||||||
|
KCB100-50FA,100,50,,FA,KCB--100x50.step
|
||||||
|
KCB100-50FB,100,50,,FB,KCB--100x50.step
|
||||||
|
KCB100-50CA,100,50,,CA,KCB--100x50.step
|
||||||
|
KCB100-50CB,100,50,,CB,KCB--100x50.step
|
||||||
|
KCB100-50LB,100,50,,LB,KCB--100x50.step
|
||||||
|
KCB100-50YB,100,50,,YB,KCB--100x50.step
|
||||||
|
KCB100-50M,100,50,M,,KCB--100x50.step
|
||||||
|
KCB100-50MFA,100,50,M,FA,KCB--100x50.step
|
||||||
|
KCB100-50MFB,100,50,M,FB,KCB--100x50.step
|
||||||
|
KCB100-50MCA,100,50,M,CA,KCB--100x50.step
|
||||||
|
KCB100-50MCB,100,50,M,CB,KCB--100x50.step
|
||||||
|
KCB100-50MLB,100,50,M,LB,KCB--100x50.step
|
||||||
|
KCB100-50MYB,100,50,M,YB,KCB--100x50.step
|
||||||
|
KCB100-75,100,75,,,KCB--100x75.step
|
||||||
|
KCB100-75FA,100,75,,FA,KCB--100x75.step
|
||||||
|
KCB100-75FB,100,75,,FB,KCB--100x75.step
|
||||||
|
KCB100-75CA,100,75,,CA,KCB--100x75.step
|
||||||
|
KCB100-75CB,100,75,,CB,KCB--100x75.step
|
||||||
|
KCB100-75LB,100,75,,LB,KCB--100x75.step
|
||||||
|
KCB100-75YB,100,75,,YB,KCB--100x75.step
|
||||||
|
KCB100-75M,100,75,M,,KCB--100x75.step
|
||||||
|
KCB100-75MFA,100,75,M,FA,KCB--100x75.step
|
||||||
|
KCB100-75MFB,100,75,M,FB,KCB--100x75.step
|
||||||
|
KCB100-75MCA,100,75,M,CA,KCB--100x75.step
|
||||||
|
KCB100-75MCB,100,75,M,CB,KCB--100x75.step
|
||||||
|
KCB100-75MLB,100,75,M,LB,KCB--100x75.step
|
||||||
|
KCB100-75MYB,100,75,M,YB,KCB--100x75.step
|
||||||
|
KCB100-100,100,100,,,KCB--100x100.step
|
||||||
|
KCB100-100FA,100,100,,FA,KCB--100x100.step
|
||||||
|
KCB100-100FB,100,100,,FB,KCB--100x100.step
|
||||||
|
KCB100-100CA,100,100,,CA,KCB--100x100.step
|
||||||
|
KCB100-100CB,100,100,,CB,KCB--100x100.step
|
||||||
|
KCB100-100LB,100,100,,LB,KCB--100x100.step
|
||||||
|
KCB100-100YB,100,100,,YB,KCB--100x100.step
|
||||||
|
KCB100-100M,100,100,M,,KCB--100x100.step
|
||||||
|
KCB100-100MFA,100,100,M,FA,KCB--100x100.step
|
||||||
|
KCB100-100MFB,100,100,M,FB,KCB--100x100.step
|
||||||
|
KCB100-100MCA,100,100,M,CA,KCB--100x100.step
|
||||||
|
KCB100-100MCB,100,100,M,CB,KCB--100x100.step
|
||||||
|
KCB100-100MLB,100,100,M,LB,KCB--100x100.step
|
||||||
|
KCB100-100MYB,100,100,M,YB,KCB--100x100.step
|
||||||
|
KCB125-10,125,10,,,KCB--125x10.step
|
||||||
|
KCB125-10FA,125,10,,FA,KCB--125x10.step
|
||||||
|
KCB125-10FB,125,10,,FB,KCB--125x10.step
|
||||||
|
KCB125-10CA,125,10,,CA,KCB--125x10.step
|
||||||
|
KCB125-10CB,125,10,,CB,KCB--125x10.step
|
||||||
|
KCB125-10LB,125,10,,LB,KCB--125x10.step
|
||||||
|
KCB125-10YB,125,10,,YB,KCB--125x10.step
|
||||||
|
KCB125-10M,125,10,M,,KCB--125x10.step
|
||||||
|
KCB125-10MFA,125,10,M,FA,KCB--125x10.step
|
||||||
|
KCB125-10MFB,125,10,M,FB,KCB--125x10.step
|
||||||
|
KCB125-10MCA,125,10,M,CA,KCB--125x10.step
|
||||||
|
KCB125-10MCB,125,10,M,CB,KCB--125x10.step
|
||||||
|
KCB125-10MLB,125,10,M,LB,KCB--125x10.step
|
||||||
|
KCB125-10MYB,125,10,M,YB,KCB--125x10.step
|
||||||
|
KCB125-20,125,20,,,KCB--125x20.step
|
||||||
|
KCB125-20FA,125,20,,FA,KCB--125x20.step
|
||||||
|
KCB125-20FB,125,20,,FB,KCB--125x20.step
|
||||||
|
KCB125-20CA,125,20,,CA,KCB--125x20.step
|
||||||
|
KCB125-20CB,125,20,,CB,KCB--125x20.step
|
||||||
|
KCB125-20LB,125,20,,LB,KCB--125x20.step
|
||||||
|
KCB125-20YB,125,20,,YB,KCB--125x20.step
|
||||||
|
KCB125-20M,125,20,M,,KCB--125x20.step
|
||||||
|
KCB125-20MFA,125,20,M,FA,KCB--125x20.step
|
||||||
|
KCB125-20MFB,125,20,M,FB,KCB--125x20.step
|
||||||
|
KCB125-20MCA,125,20,M,CA,KCB--125x20.step
|
||||||
|
KCB125-20MCB,125,20,M,CB,KCB--125x20.step
|
||||||
|
KCB125-20MLB,125,20,M,LB,KCB--125x20.step
|
||||||
|
KCB125-20MYB,125,20,M,YB,KCB--125x20.step
|
||||||
|
KCB125-30,125,30,,,KCB--125x30.step
|
||||||
|
KCB125-30FA,125,30,,FA,KCB--125x30.step
|
||||||
|
KCB125-30FB,125,30,,FB,KCB--125x30.step
|
||||||
|
KCB125-30CA,125,30,,CA,KCB--125x30.step
|
||||||
|
KCB125-30CB,125,30,,CB,KCB--125x30.step
|
||||||
|
KCB125-30LB,125,30,,LB,KCB--125x30.step
|
||||||
|
KCB125-30YB,125,30,,YB,KCB--125x30.step
|
||||||
|
KCB125-30M,125,30,M,,KCB--125x30.step
|
||||||
|
KCB125-30MFA,125,30,M,FA,KCB--125x30.step
|
||||||
|
KCB125-30MFB,125,30,M,FB,KCB--125x30.step
|
||||||
|
KCB125-30MCA,125,30,M,CA,KCB--125x30.step
|
||||||
|
KCB125-30MCB,125,30,M,CB,KCB--125x30.step
|
||||||
|
KCB125-30MLB,125,30,M,LB,KCB--125x30.step
|
||||||
|
KCB125-30MYB,125,30,M,YB,KCB--125x30.step
|
||||||
|
KCB125-50,125,50,,,KCB--125x50.step
|
||||||
|
KCB125-50FA,125,50,,FA,KCB--125x50.step
|
||||||
|
KCB125-50FB,125,50,,FB,KCB--125x50.step
|
||||||
|
KCB125-50CA,125,50,,CA,KCB--125x50.step
|
||||||
|
KCB125-50CB,125,50,,CB,KCB--125x50.step
|
||||||
|
KCB125-50LB,125,50,,LB,KCB--125x50.step
|
||||||
|
KCB125-50YB,125,50,,YB,KCB--125x50.step
|
||||||
|
KCB125-50M,125,50,M,,KCB--125x50.step
|
||||||
|
KCB125-50MFA,125,50,M,FA,KCB--125x50.step
|
||||||
|
KCB125-50MFB,125,50,M,FB,KCB--125x50.step
|
||||||
|
KCB125-50MCA,125,50,M,CA,KCB--125x50.step
|
||||||
|
KCB125-50MCB,125,50,M,CB,KCB--125x50.step
|
||||||
|
KCB125-50MLB,125,50,M,LB,KCB--125x50.step
|
||||||
|
KCB125-50MYB,125,50,M,YB,KCB--125x50.step
|
||||||
|
KCB125-75,125,75,,,KCB--125x75.step
|
||||||
|
KCB125-75FA,125,75,,FA,KCB--125x75.step
|
||||||
|
KCB125-75FB,125,75,,FB,KCB--125x75.step
|
||||||
|
KCB125-75CA,125,75,,CA,KCB--125x75.step
|
||||||
|
KCB125-75CB,125,75,,CB,KCB--125x75.step
|
||||||
|
KCB125-75LB,125,75,,LB,KCB--125x75.step
|
||||||
|
KCB125-75YB,125,75,,YB,KCB--125x75.step
|
||||||
|
KCB125-75M,125,75,M,,KCB--125x75.step
|
||||||
|
KCB125-75MFA,125,75,M,FA,KCB--125x75.step
|
||||||
|
KCB125-75MFB,125,75,M,FB,KCB--125x75.step
|
||||||
|
KCB125-75MCA,125,75,M,CA,KCB--125x75.step
|
||||||
|
KCB125-75MCB,125,75,M,CB,KCB--125x75.step
|
||||||
|
KCB125-75MLB,125,75,M,LB,KCB--125x75.step
|
||||||
|
KCB125-75MYB,125,75,M,YB,KCB--125x75.step
|
||||||
|
KCB125-100,125,100,,,KCB--125x100.step
|
||||||
|
KCB125-100FA,125,100,,FA,KCB--125x100.step
|
||||||
|
KCB125-100FB,125,100,,FB,KCB--125x100.step
|
||||||
|
KCB125-100CA,125,100,,CA,KCB--125x100.step
|
||||||
|
KCB125-100CB,125,100,,CB,KCB--125x100.step
|
||||||
|
KCB125-100LB,125,100,,LB,KCB--125x100.step
|
||||||
|
KCB125-100YB,125,100,,YB,KCB--125x100.step
|
||||||
|
KCB125-100M,125,100,M,,KCB--125x100.step
|
||||||
|
KCB125-100MFA,125,100,M,FA,KCB--125x100.step
|
||||||
|
KCB125-100MFB,125,100,M,FB,KCB--125x100.step
|
||||||
|
KCB125-100MCA,125,100,M,CA,KCB--125x100.step
|
||||||
|
KCB125-100MCB,125,100,M,CB,KCB--125x100.step
|
||||||
|
KCB125-100MLB,125,100,M,LB,KCB--125x100.step
|
||||||
|
KCB125-100MYB,125,100,M,YB,KCB--125x100.step
|
||||||
|
1513
onebot-data/catalog/csv/KCS.csv
Normal file
1513
onebot-data/catalog/csv/KCS.csv
Normal file
File diff suppressed because it is too large
Load Diff
1513
onebot-data/catalog/csv/KS.csv
Normal file
1513
onebot-data/catalog/csv/KS.csv
Normal file
File diff suppressed because it is too large
Load Diff
4803
onebot-data/catalog/csv/KSB.csv
Normal file
4803
onebot-data/catalog/csv/KSB.csv
Normal file
File diff suppressed because it is too large
Load Diff
1513
onebot-data/catalog/csv/KSU.csv
Normal file
1513
onebot-data/catalog/csv/KSU.csv
Normal file
File diff suppressed because it is too large
Load Diff
4
onebot-data/catalog/csv/LAE.csv
Normal file
4
onebot-data/catalog/csv/LAE.csv
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
model_code,size,step_file
|
||||||
|
LAE140,140,LAE140.stp
|
||||||
|
LAE225,225,LAE225.stp
|
||||||
|
LAE350,350,LAE350.stp
|
||||||
|
14401
onebot-data/catalog/csv/M.csv
Normal file
14401
onebot-data/catalog/csv/M.csv
Normal file
File diff suppressed because it is too large
Load Diff
9001
onebot-data/catalog/csv/MAL.csv
Normal file
9001
onebot-data/catalog/csv/MAL.csv
Normal file
File diff suppressed because it is too large
Load Diff
5401
onebot-data/catalog/csv/MALC.csv
Normal file
5401
onebot-data/catalog/csv/MALC.csv
Normal file
File diff suppressed because it is too large
Load Diff
5401
onebot-data/catalog/csv/MS.csv
Normal file
5401
onebot-data/catalog/csv/MS.csv
Normal file
File diff suppressed because it is too large
Load Diff
5401
onebot-data/catalog/csv/MSC.csv
Normal file
5401
onebot-data/catalog/csv/MSC.csv
Normal file
File diff suppressed because it is too large
Load Diff
23
onebot-data/catalog/csv/UAGP.csv
Normal file
23
onebot-data/catalog/csv/UAGP.csv
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
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
|
||||||
|
7
onebot-data/catalog/csv/UCBM.csv
Normal file
7
onebot-data/catalog/csv/UCBM.csv
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
model_code,size,step_file
|
||||||
|
UCBM25,25,UCBM25.stp
|
||||||
|
UCBM32,32,UCBM32.stp
|
||||||
|
UCBM40,40,UCBM40.stp
|
||||||
|
UCBM50,50,UCBM50.stp
|
||||||
|
UCBM63,63,UCBM63.stp
|
||||||
|
UCBM80,80,UCBM80.stp
|
||||||
|
3
onebot-data/catalog/csv/UGP.csv
Normal file
3
onebot-data/catalog/csv/UGP.csv
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
model_code,size,type,step_file
|
||||||
|
UGP40,40,,UGP40.stp
|
||||||
|
UGPS32D,32,SD,UGPS32D.stp
|
||||||
|
4
onebot-data/catalog/csv/ULP.csv
Normal file
4
onebot-data/catalog/csv/ULP.csv
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
model_code,size,step_file
|
||||||
|
ULP32,32,ULP32.stp
|
||||||
|
ULP50,50,ULP50.stp
|
||||||
|
ULP63,63,ULP63.stp
|
||||||
|
4
onebot-data/catalog/csv/USP.csv
Normal file
4
onebot-data/catalog/csv/USP.csv
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
model_code,size,step_file
|
||||||
|
USP32,32,USP32.stp
|
||||||
|
USP50,50,USP50.stp
|
||||||
|
USP63,63,USP63.stp
|
||||||
|
12
onebot-data/catalog/parametric-vectors.json
Normal file
12
onebot-data/catalog/parametric-vectors.json
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"note": "参数化引擎双端对拍向量 (桌面 selftest 与网页无头 E2E 同源; 2026-08-25)。case 字段: series/params 必填; expectCode+expectStandard 或 expectError 二选一; expectNearest 可选。",
|
||||||
|
"cases": [
|
||||||
|
{"series": "KC", "params": {"type": "00", "bore": 32, "stroke": 10, "magnet": "", "mount": ""}, "expectCode": "KC0032-10", "expectStandard": true},
|
||||||
|
{"series": "KC", "params": {"type": "00", "bore": 32, "stroke": 10, "magnet": "M", "mount": "FA"}, "expectCode": "KC0032-10MFA", "expectStandard": true},
|
||||||
|
{"series": "KC", "params": {"type": "02", "bore": 63, "stroke": 100, "magnet": "", "mount": "CB"}, "expectCode": "KC0263-100CB", "expectStandard": true},
|
||||||
|
{"series": "KC", "params": {"type": "00", "bore": 32, "stroke": 87, "magnet": "", "mount": ""}, "expectCode": "KC0032-87", "expectStandard": false, "expectNearest": "KC0032-75"},
|
||||||
|
{"series": "KC", "params": {"type": "00", "bore": 32, "stroke": 90, "magnet": "", "mount": ""}, "expectCode": "KC0032-90", "expectStandard": false, "expectNearest": "KC0032-100"},
|
||||||
|
{"series": "KC", "params": {"type": "00", "bore": 160, "stroke": 50, "magnet": "", "mount": "YB"}, "expectError": "rule"},
|
||||||
|
{"series": "KC", "params": {"type": "00", "bore": 32, "stroke": 999, "magnet": "", "mount": ""}, "expectError": "domain"}
|
||||||
|
]
|
||||||
|
}
|
||||||
1
onebot-data/catalog/series/KC.meta.json
Normal file
1
onebot-data/catalog/series/KC.meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"series": {"code": "KC", "mode": "parametric", "modelCodeTemplate": "KC{type}{bore}-{stroke}{magnet}{mount}", "nameZh": "KC 系列标准气缸 (ISO15552)", "nameEn": "KC Series Standard Cylinder (ISO15552)", "keywords": "kc iso15552 biaozhun qigang", "parameters": [{"code": "type", "nameZh": "型号", "nameEn": "Type", "keywords": "type", "unit": "", "type": "enum", "values": ["00", "02", "03"], "display": {}}, {"code": "bore", "nameZh": "缸径", "nameEn": "Bore", "keywords": "bore", "unit": "mm", "type": "number", "values": [32, 40, 50, 63, 80, 100, 125, 160, 200, 250, 320], "display": {}}, {"code": "stroke", "nameZh": "行程", "nameEn": "Stroke", "keywords": "stroke", "unit": "mm", "type": "range", "values": [10, 20, 30, 50, 75, 100], "min": 10, "max": 200, "step": 1, "gridValues": [10, 20, 30, 50, 75, 100], "display": {}}, {"code": "magnet", "nameZh": "磁石", "nameEn": "Magnet", "keywords": "magnet", "unit": "", "type": "enum", "values": ["", "M"], "display": {"": "不附磁石", "M": "附磁石 M"}}, {"code": "mount", "nameZh": "固定形式", "nameEn": "Mounting", "keywords": "mount", "unit": "", "type": "enum", "values": ["", "FA", "FB", "CA", "CB", "LB", "YB"], "display": {"FA": "前盖固定型 FA", "YB": "后盖支座固定型 YB", "TC": "中间摇摆式 TC", "CA": "后盖单耳固定型 CA", "LB": "前后固定型 LB", "CB": "后盖双耳固定型 CB", "TC-M": "摇摆式附脚座 TC-M", "FB": "后盖固定型 FB", "SDB": "后盖摇摆式 SDB", "": "基本型"}}], "rules": [{"If": {"Param": "mount", "Op": "eq", "Value": "YB"}, "Then": {"Param": "bore", "Op": "in", "Value": [32, 40, 50, 63, 80, 100, 125]}}], "naming": {"stepNameTemplate": "{model}.step"}, "attachments": [], "variants": []}, "attachments": [{"kind": "manual", "lang": "", "source": "manual/KC/p02.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/KC/p03.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/KC/p04.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/KC/p05.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/KC/p06.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/KC/p11.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/KC/p12.png", "model": null}, {"kind": "datasheet", "lang": "", "source": "manual/KC/KC_manual.pdf", "model": null}]}
|
||||||
1
onebot-data/catalog/series/KCB.meta.json
Normal file
1
onebot-data/catalog/series/KCB.meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"series": {"code": "KCB", "nameZh": "KCB 系列倍力气缸", "nameEn": "KCB Series Tandem Cylinder", "keywords": "kcb beili qigang tandem", "parameters": [{"code": "bore", "nameZh": "缸径", "nameEn": "Bore", "unit": "mm", "type": "number", "keywords": "bore", "values": [32, 40, 50, 63, 80, 100, 125]}, {"code": "stroke", "nameZh": "行程", "nameEn": "Stroke", "unit": "mm", "type": "number", "keywords": "stroke", "values": [10, 20, 30, 50, 75, 100]}, {"code": "magnet", "nameZh": "磁石", "nameEn": "Magnet", "unit": "", "type": "enum", "keywords": "magnet", "values": ["", "M"], "display": {"": "不附磁石", "M": "附磁石 M"}}, {"code": "mount", "nameZh": "固定形式", "nameEn": "Mounting", "unit": "", "type": "enum", "keywords": "mount", "values": ["", "FA", "FB", "CA", "CB", "LB", "YB"], "display": {"FA": "前盖固定型 FA", "YB": "后盖支座固定型 YB", "TC": "中间摇摆式 TC", "CA": "后盖单耳固定型 CA", "LB": "前后固定型 LB", "CB": "后盖双耳固定型 CB", "TC-M": "摇摆式附脚座 TC-M", "FB": "后盖固定型 FB", "SDB": "后盖摇摆式 SDB", "": "基本型"}}], "rules": [], "naming": {"stepNameTemplate": "{model}.step"}, "attachments": [], "variants": []}, "attachments": [{"kind": "manual", "lang": "", "source": "manual/KCB/p09.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/KCB/p10.png", "model": null}, {"kind": "datasheet", "lang": "", "source": "manual/KCB/KCB_manual.pdf", "model": null}]}
|
||||||
1
onebot-data/catalog/series/KCS.meta.json
Normal file
1
onebot-data/catalog/series/KCS.meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"series": {"code": "KCS", "nameZh": "KCS 系列超经济型标准气缸", "nameEn": "KCS Series Economy Standard Cylinder", "keywords": "kcs chaojingji economy", "parameters": [{"code": "type", "nameZh": "型号", "nameEn": "Type", "unit": "", "type": "enum", "keywords": "type", "values": ["00", "02", "03"]}, {"code": "bore", "nameZh": "缸径", "nameEn": "Bore", "unit": "mm", "type": "number", "keywords": "bore", "values": [32, 40, 50, 63, 80, 100]}, {"code": "stroke", "nameZh": "行程", "nameEn": "Stroke", "unit": "mm", "type": "number", "keywords": "stroke", "values": [10, 20, 30, 50, 75, 100]}, {"code": "magnet", "nameZh": "磁石", "nameEn": "Magnet", "unit": "", "type": "enum", "keywords": "magnet", "values": ["", "M"], "display": {"": "不附磁石", "M": "附磁石 M"}}, {"code": "mount", "nameZh": "固定形式", "nameEn": "Mounting", "unit": "", "type": "enum", "keywords": "mount", "values": ["", "FA", "FB", "CA", "CB", "LB", "YB"], "display": {"FA": "前盖固定型 FA", "YB": "后盖支座固定型 YB", "TC": "中间摇摆式 TC", "CA": "后盖单耳固定型 CA", "LB": "前后固定型 LB", "CB": "后盖双耳固定型 CB", "TC-M": "摇摆式附脚座 TC-M", "FB": "后盖固定型 FB", "SDB": "后盖摇摆式 SDB", "": "基本型"}}], "rules": [], "naming": {"stepNameTemplate": "{model}.step"}, "attachments": [], "variants": []}, "attachments": [{"kind": "manual", "lang": "", "source": "manual/KCS/p13.png", "model": null}, {"kind": "datasheet", "lang": "", "source": "manual/KCS/KCS_manual.pdf", "model": null}]}
|
||||||
1
onebot-data/catalog/series/KS.meta.json
Normal file
1
onebot-data/catalog/series/KS.meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"series": {"code": "KS", "nameZh": "KS 系列拉杆式标准气缸", "nameEn": "KS Series Tie-rod Standard Cylinder", "keywords": "ks lagan tie-rod", "parameters": [{"code": "type", "nameZh": "型号", "nameEn": "Type", "unit": "", "type": "enum", "keywords": "type", "values": ["00", "02", "03"]}, {"code": "bore", "nameZh": "缸径", "nameEn": "Bore", "unit": "mm", "type": "number", "keywords": "bore", "values": [32, 40, 50, 63, 80, 100, 125]}, {"code": "stroke", "nameZh": "行程", "nameEn": "Stroke", "unit": "mm", "type": "number", "keywords": "stroke", "values": [10, 20, 30, 50, 75, 100]}, {"code": "magnet", "nameZh": "磁石", "nameEn": "Magnet", "unit": "", "type": "enum", "keywords": "magnet", "values": ["", "M"], "display": {"": "不附磁石", "M": "附磁石 M"}}, {"code": "mount", "nameZh": "固定形式", "nameEn": "Mounting", "unit": "", "type": "enum", "keywords": "mount", "values": ["", "FA", "FB", "CA", "CB", "LB", "TC", "TC-M"], "display": {"FA": "前盖固定型 FA", "YB": "后盖支座固定型 YB", "TC": "中间摇摆式 TC", "CA": "后盖单耳固定型 CA", "LB": "前后固定型 LB", "CB": "后盖双耳固定型 CB", "TC-M": "摇摆式附脚座 TC-M", "FB": "后盖固定型 FB", "SDB": "后盖摇摆式 SDB", "": "基本型"}}], "rules": [{"If": {"Param": "type", "Op": "in", "Value": ["02", "03"]}, "Then": {"Param": "mount", "Op": "in", "Value": ["FA", "FB", "LB", "TC", "TC-M"]}}], "naming": {"stepNameTemplate": "{model}.step"}, "attachments": [], "variants": []}, "attachments": [{"kind": "manual", "lang": "", "source": "manual/KS/p14.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/KS/p15.png", "model": null}, {"kind": "datasheet", "lang": "", "source": "manual/KS/KS_manual.pdf", "model": null}]}
|
||||||
1
onebot-data/catalog/series/KSB.meta.json
Normal file
1
onebot-data/catalog/series/KSB.meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"series": {"code": "KSB", "nameZh": "KSB 系列多位置气缸", "nameEn": "KSB Series Multi-position Cylinder", "keywords": "ksb duoweizhi multi-position", "parameters": [{"code": "bore", "nameZh": "缸径", "nameEn": "Bore", "unit": "mm", "type": "number", "keywords": "bore", "values": [32, 40, 50, 63, 80, 100, 125]}, {"code": "stroke1", "nameZh": "行程1", "nameEn": "Stroke 1", "unit": "mm", "type": "number", "keywords": "stroke1", "values": [0, 10, 20, 30, 50, 75, 100]}, {"code": "stroke2", "nameZh": "行程2", "nameEn": "Stroke 2", "unit": "mm", "type": "number", "keywords": "stroke2", "values": [0, 10, 20, 30, 50, 75, 100]}, {"code": "magnet", "nameZh": "磁石", "nameEn": "Magnet", "unit": "", "type": "enum", "keywords": "magnet", "values": ["", "M"], "display": {"": "不附磁石", "M": "附磁石 M"}}, {"code": "mount", "nameZh": "固定形式", "nameEn": "Mounting", "unit": "", "type": "enum", "keywords": "mount", "values": ["", "FA", "FB", "CA", "CB", "LB", "YB"], "display": {"FA": "前盖固定型 FA", "YB": "后盖支座固定型 YB", "TC": "中间摇摆式 TC", "CA": "后盖单耳固定型 CA", "LB": "前后固定型 LB", "CB": "后盖双耳固定型 CB", "TC-M": "摇摆式附脚座 TC-M", "FB": "后盖固定型 FB", "SDB": "后盖摇摆式 SDB", "": "基本型"}}], "rules": [], "naming": {"stepNameTemplate": "{model}.step"}, "attachments": [], "variants": []}, "attachments": [{"kind": "manual", "lang": "", "source": "manual/KSB/p16.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/KSB/p17.png", "model": null}, {"kind": "datasheet", "lang": "", "source": "manual/KSB/KSB_manual.pdf", "model": null}]}
|
||||||
1
onebot-data/catalog/series/KSU.meta.json
Normal file
1
onebot-data/catalog/series/KSU.meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"series": {"code": "KSU", "nameZh": "KSU 系列拉杆内藏式标准气缸", "nameEn": "KSU Series Concealed Tie-rod Cylinder", "keywords": "ksu lagan neicang concealed", "parameters": [{"code": "type", "nameZh": "型号", "nameEn": "Type", "unit": "", "type": "enum", "keywords": "type", "values": ["00", "02", "03"]}, {"code": "bore", "nameZh": "缸径", "nameEn": "Bore", "unit": "mm", "type": "number", "keywords": "bore", "values": [32, 40, 50, 63, 80, 100, 125]}, {"code": "stroke", "nameZh": "行程", "nameEn": "Stroke", "unit": "mm", "type": "number", "keywords": "stroke", "values": [10, 20, 30, 50, 75, 100]}, {"code": "magnet", "nameZh": "磁石", "nameEn": "Magnet", "unit": "", "type": "enum", "keywords": "magnet", "values": ["", "M"], "display": {"": "不附磁石", "M": "附磁石 M"}}, {"code": "mount", "nameZh": "固定形式", "nameEn": "Mounting", "unit": "", "type": "enum", "keywords": "mount", "values": ["", "FA", "FB", "CA", "CB", "LB", "TC", "TC-M"], "display": {"FA": "前盖固定型 FA", "YB": "后盖支座固定型 YB", "TC": "中间摇摆式 TC", "CA": "后盖单耳固定型 CA", "LB": "前后固定型 LB", "CB": "后盖双耳固定型 CB", "TC-M": "摇摆式附脚座 TC-M", "FB": "后盖固定型 FB", "SDB": "后盖摇摆式 SDB", "": "基本型"}}], "rules": [{"If": {"Param": "type", "Op": "in", "Value": ["02", "03"]}, "Then": {"Param": "mount", "Op": "in", "Value": ["FA", "FB", "LB", "TC", "TC-M"]}}], "naming": {"stepNameTemplate": "{model}.step"}, "attachments": [], "variants": []}, "attachments": [{"kind": "manual", "lang": "", "source": "manual/KSU/p14.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/KSU/p15.png", "model": null}, {"kind": "datasheet", "lang": "", "source": "manual/KSU/KSU_manual.pdf", "model": null}]}
|
||||||
1
onebot-data/catalog/series/LAE.meta.json
Normal file
1
onebot-data/catalog/series/LAE.meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"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}]}
|
||||||
1
onebot-data/catalog/series/M.meta.json
Normal file
1
onebot-data/catalog/series/M.meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"series": {"code": "M", "nameZh": "M 系列不锈钢迷你缸 (ISO6432)", "nameEn": "M Series Stainless Mini Cylinder (ISO6432)", "keywords": "m iso6432 minigang stainless mini", "parameters": [{"code": "action", "nameZh": "动作形式", "nameEn": "Action", "unit": "", "type": "enum", "keywords": "action", "values": ["N", "S", "T", "ND", "NJ"]}, {"code": "bore", "nameZh": "缸径", "nameEn": "Bore", "unit": "mm", "type": "number", "keywords": "bore", "values": [8, 10, 12, 16, 20, 25, 32, 40]}, {"code": "stroke", "nameZh": "行程", "nameEn": "Stroke", "unit": "mm", "type": "number", "keywords": "stroke", "values": [10, 20, 30, 50, 75, 100]}, {"code": "magnet", "nameZh": "磁石", "nameEn": "Magnet", "unit": "", "type": "enum", "keywords": "magnet", "values": ["", "M"], "display": {"": "不附磁石", "M": "附磁石 M"}}, {"code": "rod", "nameZh": "活塞杆材质", "nameEn": "Rod Material", "unit": "", "type": "enum", "keywords": "rod", "values": ["E", ""], "display": {"": "碳钢", "E": "不锈钢 E"}}, {"code": "mount", "nameZh": "固定形式", "nameEn": "Mounting", "unit": "", "type": "enum", "keywords": "mount", "values": ["", "LB", "FA", "FB", "SDB"], "display": {"FA": "前盖固定型 FA", "YB": "后盖支座固定型 YB", "TC": "中间摇摆式 TC", "CA": "后盖单耳固定型 CA", "LB": "前后固定型 LB", "CB": "后盖双耳固定型 CB", "TC-M": "摇摆式附脚座 TC-M", "FB": "后盖固定型 FB", "SDB": "后盖摇摆式 SDB", "": "基本型"}}, {"code": "cap", "nameZh": "后盖形式", "nameEn": "Cap Type", "unit": "", "type": "enum", "keywords": "cap", "values": ["", "U", "CM"], "display": {"": "标准摆尾型", "U": "标准平尾型 U", "CM": "标准圆尾型 CM"}}], "rules": [], "naming": {"stepNameTemplate": "{model}.step"}, "attachments": [], "variants": []}, "attachments": [{"kind": "manual", "lang": "", "source": "manual/M/p22.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/M/p23.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/M/p24.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/M/p25.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/M/p26.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/M/p27.png", "model": null}, {"kind": "datasheet", "lang": "", "source": "manual/M/M_manual.pdf", "model": null}]}
|
||||||
1
onebot-data/catalog/series/MAL.meta.json
Normal file
1
onebot-data/catalog/series/MAL.meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"series": {"code": "MAL", "nameZh": "MAL 系列铝合金迷你缸", "nameEn": "MAL Series Aluminium Mini Cylinder", "keywords": "mal lvhejin minigang aluminium mini", "parameters": [{"code": "type", "nameZh": "型号", "nameEn": "Type", "unit": "", "type": "enum", "keywords": "type", "values": ["MAL", "MSAL", "MTAL", "MALD", "MALJ"]}, {"code": "bore", "nameZh": "缸径", "nameEn": "Bore", "unit": "mm", "type": "number", "keywords": "bore", "values": [16, 20, 25, 32, 40]}, {"code": "stroke", "nameZh": "行程", "nameEn": "Stroke", "unit": "mm", "type": "number", "keywords": "stroke", "values": [10, 20, 30, 50, 75, 100]}, {"code": "magnet", "nameZh": "磁石", "nameEn": "Magnet", "unit": "", "type": "enum", "keywords": "magnet", "values": ["", "M"], "display": {"": "不附磁石", "M": "附磁石 M"}}, {"code": "rod", "nameZh": "活塞杆材质", "nameEn": "Rod Material", "unit": "", "type": "enum", "keywords": "rod", "values": ["E", ""], "display": {"": "碳钢", "E": "不锈钢 E"}}, {"code": "mount", "nameZh": "固定形式", "nameEn": "Mounting", "unit": "", "type": "enum", "keywords": "mount", "values": ["", "LB", "FA", "FB", "SDB"], "display": {"FA": "前盖固定型 FA", "YB": "后盖支座固定型 YB", "TC": "中间摇摆式 TC", "CA": "后盖单耳固定型 CA", "LB": "前后固定型 LB", "CB": "后盖双耳固定型 CB", "TC-M": "摇摆式附脚座 TC-M", "FB": "后盖固定型 FB", "SDB": "后盖摇摆式 SDB", "": "基本型"}}, {"code": "cap", "nameZh": "后盖形式", "nameEn": "Cap Type", "unit": "", "type": "enum", "keywords": "cap", "values": ["", "U", "CM"], "display": {"": "标准摆尾型", "U": "标准平尾型 U", "CM": "标准圆尾型 CM"}}], "rules": [], "naming": {"stepNameTemplate": "{model}.step"}, "attachments": [], "variants": []}, "attachments": [{"kind": "manual", "lang": "", "source": "manual/MAL/p36.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/MAL/p37.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/MAL/p38.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/MAL/p39.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/MAL/p40.png", "model": null}, {"kind": "datasheet", "lang": "", "source": "manual/MAL/MAL_manual.pdf", "model": null}]}
|
||||||
1
onebot-data/catalog/series/MALC.meta.json
Normal file
1
onebot-data/catalog/series/MALC.meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"series": {"code": "MALC", "nameZh": "MALC 系列铝合金迷你缸", "nameEn": "MALC Series Aluminium Mini Cylinder", "keywords": "malc lvhejin minigang aluminium mini", "parameters": [{"code": "type", "nameZh": "型号", "nameEn": "Type", "unit": "", "type": "enum", "keywords": "type", "values": ["MALC", "MALCD", "MALCJ"]}, {"code": "bore", "nameZh": "缸径", "nameEn": "Bore", "unit": "mm", "type": "number", "keywords": "bore", "values": [16, 20, 25, 32, 40]}, {"code": "stroke", "nameZh": "行程", "nameEn": "Stroke", "unit": "mm", "type": "number", "keywords": "stroke", "values": [10, 20, 30, 50, 75, 100]}, {"code": "magnet", "nameZh": "磁石", "nameEn": "Magnet", "unit": "", "type": "enum", "keywords": "magnet", "values": ["", "M"], "display": {"": "不附磁石", "M": "附磁石 M"}}, {"code": "rod", "nameZh": "活塞杆材质", "nameEn": "Rod Material", "unit": "", "type": "enum", "keywords": "rod", "values": ["E", ""], "display": {"": "碳钢", "E": "不锈钢 E"}}, {"code": "mount", "nameZh": "固定形式", "nameEn": "Mounting", "unit": "", "type": "enum", "keywords": "mount", "values": ["", "LB", "FA", "FB", "SDB"], "display": {"FA": "前盖固定型 FA", "YB": "后盖支座固定型 YB", "TC": "中间摇摆式 TC", "CA": "后盖单耳固定型 CA", "LB": "前后固定型 LB", "CB": "后盖双耳固定型 CB", "TC-M": "摇摆式附脚座 TC-M", "FB": "后盖固定型 FB", "SDB": "后盖摇摆式 SDB", "": "基本型"}}, {"code": "cap", "nameZh": "后盖形式", "nameEn": "Cap Type", "unit": "", "type": "enum", "keywords": "cap", "values": ["", "U", "CM"], "display": {"": "标准摆尾型", "U": "标准平尾型 U", "CM": "标准圆尾型 CM"}}], "rules": [], "naming": {"stepNameTemplate": "{model}.step"}, "attachments": [], "variants": []}, "attachments": [{"kind": "manual", "lang": "", "source": "manual/MALC/p41.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/MALC/p42.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/MALC/p43.png", "model": null}, {"kind": "datasheet", "lang": "", "source": "manual/MALC/MALC_manual.pdf", "model": null}]}
|
||||||
1
onebot-data/catalog/series/MS.meta.json
Normal file
1
onebot-data/catalog/series/MS.meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"series": {"code": "MS", "nameZh": "MS 系列不锈钢迷你缸 (ISO6432)", "nameEn": "MS Series Stainless Mini Cylinder (ISO6432)", "keywords": "ms iso6432 minigang stainless mini", "parameters": [{"code": "action", "nameZh": "动作形式", "nameEn": "Action", "unit": "", "type": "enum", "keywords": "action", "values": ["N", "D", "J"]}, {"code": "bore", "nameZh": "缸径", "nameEn": "Bore", "unit": "mm", "type": "number", "keywords": "bore", "values": [16, 20, 25, 32, 40]}, {"code": "stroke", "nameZh": "行程", "nameEn": "Stroke", "unit": "mm", "type": "number", "keywords": "stroke", "values": [10, 20, 30, 50, 75, 100]}, {"code": "magnet", "nameZh": "磁石", "nameEn": "Magnet", "unit": "", "type": "enum", "keywords": "magnet", "values": ["", "M"], "display": {"": "不附磁石", "M": "附磁石 M"}}, {"code": "rod", "nameZh": "活塞杆材质", "nameEn": "Rod Material", "unit": "", "type": "enum", "keywords": "rod", "values": ["E", ""], "display": {"": "碳钢", "E": "不锈钢 E"}}, {"code": "mount", "nameZh": "固定形式", "nameEn": "Mounting", "unit": "", "type": "enum", "keywords": "mount", "values": ["", "LB", "FA", "FB", "SDB"], "display": {"FA": "前盖固定型 FA", "YB": "后盖支座固定型 YB", "TC": "中间摇摆式 TC", "CA": "后盖单耳固定型 CA", "LB": "前后固定型 LB", "CB": "后盖双耳固定型 CB", "TC-M": "摇摆式附脚座 TC-M", "FB": "后盖固定型 FB", "SDB": "后盖摇摆式 SDB", "": "基本型"}}, {"code": "cap", "nameZh": "后盖形式", "nameEn": "Cap Type", "unit": "", "type": "enum", "keywords": "cap", "values": ["", "U", "CM"], "display": {"": "标准摆尾型", "U": "标准平尾型 U", "CM": "标准圆尾型 CM"}}], "rules": [], "naming": {"stepNameTemplate": "{model}.step"}, "attachments": [], "variants": []}, "attachments": [{"kind": "manual", "lang": "", "source": "manual/MS/p28.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/MS/p29.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/MS/p30.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/MS/p31.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/MS/p32.png", "model": null}, {"kind": "datasheet", "lang": "", "source": "manual/MS/MS_manual.pdf", "model": null}]}
|
||||||
1
onebot-data/catalog/series/MSC.meta.json
Normal file
1
onebot-data/catalog/series/MSC.meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"series": {"code": "MSC", "nameZh": "MSC 系列不锈钢迷你缸 (ISO6432)", "nameEn": "MSC Series Stainless Mini Cylinder (ISO6432)", "keywords": "msc iso6432 minigang stainless mini", "parameters": [{"code": "action", "nameZh": "动作形式", "nameEn": "Action", "unit": "", "type": "enum", "keywords": "action", "values": ["C", "D", "J"]}, {"code": "bore", "nameZh": "缸径", "nameEn": "Bore", "unit": "mm", "type": "number", "keywords": "bore", "values": [16, 20, 25, 32, 40]}, {"code": "stroke", "nameZh": "行程", "nameEn": "Stroke", "unit": "mm", "type": "number", "keywords": "stroke", "values": [10, 20, 30, 50, 75, 100]}, {"code": "magnet", "nameZh": "磁石", "nameEn": "Magnet", "unit": "", "type": "enum", "keywords": "magnet", "values": ["", "M"], "display": {"": "不附磁石", "M": "附磁石 M"}}, {"code": "rod", "nameZh": "活塞杆材质", "nameEn": "Rod Material", "unit": "", "type": "enum", "keywords": "rod", "values": ["E", ""], "display": {"": "碳钢", "E": "不锈钢 E"}}, {"code": "mount", "nameZh": "固定形式", "nameEn": "Mounting", "unit": "", "type": "enum", "keywords": "mount", "values": ["", "LB", "FA", "FB", "SDB"], "display": {"FA": "前盖固定型 FA", "YB": "后盖支座固定型 YB", "TC": "中间摇摆式 TC", "CA": "后盖单耳固定型 CA", "LB": "前后固定型 LB", "CB": "后盖双耳固定型 CB", "TC-M": "摇摆式附脚座 TC-M", "FB": "后盖固定型 FB", "SDB": "后盖摇摆式 SDB", "": "基本型"}}, {"code": "cap", "nameZh": "后盖形式", "nameEn": "Cap Type", "unit": "", "type": "enum", "keywords": "cap", "values": ["", "U", "CM"], "display": {"": "标准摆尾型", "U": "标准平尾型 U", "CM": "标准圆尾型 CM"}}], "rules": [], "naming": {"stepNameTemplate": "{model}.step"}, "attachments": [], "variants": []}, "attachments": [{"kind": "manual", "lang": "", "source": "manual/MSC/p33.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/MSC/p34.png", "model": null}, {"kind": "manual", "lang": "", "source": "manual/MSC/p35.png", "model": null}, {"kind": "datasheet", "lang": "", "source": "manual/MSC/MSC_manual.pdf", "model": null}]}
|
||||||
1
onebot-data/catalog/series/UAGP.meta.json
Normal file
1
onebot-data/catalog/series/UAGP.meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"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}]}
|
||||||
1
onebot-data/catalog/series/UCBM.meta.json
Normal file
1
onebot-data/catalog/series/UCBM.meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"series": {"code": "UCBM", "nameZh": "UCBM 系列气动夹紧缸", "nameEn": "UCBM Series Pneumatic Clamping Cylinder", "keywords": "ucbm jiajin jingang clamping", "parameters": [{"code": "size", "nameZh": "规格", "nameEn": "Size", "keywords": "size guige", "unit": "", "type": "number", "values": [25, 32, 40, 50, 63, 80], "display": {}}], "rules": [], "naming": {"stepNameTemplate": "{model}.step"}, "attachments": [], "variants": []}, "attachments": [{"kind": "manual", "lang": "", "source": "manual/UCBM/p01.png", "model": null}, {"kind": "datasheet", "lang": "", "source": "manual/UCBM/UCBM_manual.pdf", "model": null}]}
|
||||||
1
onebot-data/catalog/series/UGP.meta.json
Normal file
1
onebot-data/catalog/series/UGP.meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"series": {"code": "UGP", "nameZh": "UGP 系列气动夹爪缸", "nameEn": "UGP Series Pneumatic Gripper Cylinder", "keywords": "ugp jiazhua gripper", "parameters": [{"code": "size", "nameZh": "规格", "nameEn": "Size", "keywords": "size guige", "unit": "", "type": "number", "values": [40, 32], "display": {}}, {"code": "type", "nameZh": "型式", "nameEn": "Type", "keywords": "type xingshi", "unit": "", "type": "enum", "values": ["", "SD"], "display": {"": "标准型", "SD": "特殊型 SD"}}], "rules": [{"If": {"Param": "type", "Op": "eq", "Value": ""}, "Then": {"Param": "size", "Op": "in", "Value": [40]}}, {"If": {"Param": "type", "Op": "eq", "Value": "SD"}, "Then": {"Param": "size", "Op": "in", "Value": [32]}}], "naming": {"stepNameTemplate": "{model}.step"}, "attachments": [], "variants": []}, "attachments": [{"kind": "manual", "lang": "", "source": "manual/UGP/p01.png", "model": null}, {"kind": "datasheet", "lang": "", "source": "manual/UGP/UGP_manual.pdf", "model": null}]}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user