Save verified native IFC import and user validation evidence

Real IFC2X3/IFC4 import tested. Full BIM authoring/export remains out of scope; 349-second building import performance remains to optimize.
This commit is contained in:
2026-09-16 04:27:37 +08:00
parent 9a7c4f0335
commit 72152ef356
120 changed files with 3020296 additions and 114 deletions

View File

@@ -0,0 +1,101 @@
# IFC 原生导入修复与最终复测
日期:2026-09-16(报告中的批次文件名使用 UTC)。
## 结论
此前缺少真实 IFC 解析/几何绑定导致的 FILE-02 导入失败已解决。使用真实
IfcOpenShell 0.8.6 的 IfcParse、IfcGeom 和 OpenCASCADE 后端,静态链接进现有
Part WASM 宿主,以 `IfcOpenShellNative.open` 接入现有 Std_Open 文件流程。
没有将 `ifcopenshell` 声明替身改名冒充真实 API,也没有引入 CGAL、Assimp 或
Three.js 作为替代几何算法。
**解决范围是 IFC2X3/IFC4 原生导入与 FCStd 保存重开,不是完整 IfcOpenShell
Python 包、BIM 参数化编辑、IFC 导出或 IFC4X3。原 BIM 声明替身及其未接通的
完整 API 仍不应宣称完成。**
## 最终浏览器证据
[完整多格式执行记录](manual-2026-09-15T16-41-07-796Z/report.md)
[IFC 建筑视口截图](manual-2026-09-15T16-41-07-796Z/FILE-02-07-viewport.png)
[IFC 页面及文件结果截图](manual-2026-09-15T16-41-07-796Z/FILE-02-07.png)
| 项目 | 实测 |
|---|---|
| 样本 | AC14-FZK-Haus.ifc,本机已提供的 Qt/Assimp 测试数据 |
| 文件 SHA-256 | c8600fd63d1734d18f40fb1237533e9a3ec46c157489be7d501c166b99f21846 |
| 原生文档 | IfcImport,147 个对象 |
| 恢复错误 / 部分恢复 | 均为 false |
| 可见网格 | 110 |
| 可见三角形 | 36,716 |
| IFC 操作耗时 | 349.013 秒 |
| 完整 FILE-02 用例耗时 | 375.083 秒 |
| 多格式结果 | STEP、IGES、BREP、STL、DXF、OBJ、IFC 七步均通过 |
开洞体和空间分析体保留为原生对象但默认隐藏,不让开洞体重新填满墙洞。
空间分组不重复生成子对象的显示网格。IFC 初始视角为等轴测,已经保存的相机
状态仍优先。显示网格使用 2 mm 偏差,保存的原始 BRep 不因此简化。
## 持久化与属性测试
[FCStd 浏览器重开记录](manual-2026-09-15T16-24-54-253Z/report.md):恢复 134 个
Part 实体、12 个空间分组、146 个 IFC 身份属性和原始 IFC 附件。该批次使用隐藏
开洞设置前保存的文档,因此它的可见网格数与最终 IFC 导入不同。
[原生 IFC 建筑导入与 FCStd 保存](ifc-native-2026-09-15T15-50-07-990Z/summary.json)
[IFC4 属性集合与异常保护测试](ifc-contract-2026-09-15T16-41-55-308Z/summary.json):
- 官方 ColumnPSetsOfSets.ifc 的实体几何导入成功。
- 柱子包含 Pset_ColumnCommon 等属性集,IFC4 PropertySetDefinitionSet 中的
PSet_1、PSet_2 均展开保留,修复了最初错误地按普通实体读取而发生的越界。
- 无产品几何的 wall.ifc 类型库被拒绝,而不是返回空文档成功。
- 损坏 IFC 被拒绝,导入失败前后已有文档集合一致。
建筑样本没有 IfcPropertySet,因此属性映射由单独的真实 IFC4 样本验证,不能
根据建筑样本零属性集推断映射已通过。
## 修复与复用
1. 复用本机 OCCT 7.6.3、Boost 1.83、Python 3.12、FreeCAD Part 静态库和全部
Std_Open/Worker/Facade/OPFS/FCStd 流程。
2. 官方 IFC 依赖交叉编译完成 238 个步骤,使用 2 个编译任务,约 833 秒;后续
只增量重编或链接适配目标,没有重复编译现有 OCCT。
3. 新绑定保持 SI 米到 FreeCAD 毫米的转换、GlobalId/类型/STEP ID、空间关系、
属性集及源文件附件。错误回滚整个新建文档。
4. OCCT ShapeFix 修复后仍做有效性检查;不得静默省略失败几何。
5. 修复打开页面没有挂载 3D 视图的问题,并复用已返回的场景,避免第二次整栋
建筑网格化。
6. 原始超时、无效几何和 IFC4 越界失败批次均保留,未覆盖成通过。
[来源、构建方式、许可与缓存位置](../ifcopenshell-native-build-20260916.md)
依赖的真实源码和三个静态库已保存在 `freecad-source/build-web/ifcopenshell-native`,
不再仅存在于 /dev/shm。源码和构建依赖路径可通过 CMake 参数明确配置。
Web 发布目录加入了 LGPL/GPL 原文和 IfcOpenShell 归属说明。
## 仍须明确的限制
- 349 秒导入不能称为高吞吐或低延迟。家具对象 #92842、#180995 的几何修复是
已定位的主要耗时,不是模型请求等待。大型真实模型还需性能优化及容量测试。
- 只验证了本机 Chrome 软件 WebGL;不是全部浏览器、GPU 和所有 IFC 文件。
- 当前 IFC 结果保留为原生 Part 对象和空间分组,不承诺每个对象都是可参数化
Arch/BIM 对象。没有通过此绑定提供完整 IFC 作者/导出 API。
- 当前总表 21/21 是手册列出的样本与步骤累计覆盖,不是 1452 条登记命令的
全量验收,更不是自动授权上线。
- 当前工作区源码/产物已更新;本轮未再次推送 Gitea,先前快照仍是之前状态。
## 复测入口
```bash
node tools/run_user_repair_checks.mjs
timeout 120s node tools/test_ifc_native_contract.mjs
FREECAD_MANUAL_IDS=FILE-02 node tools/run_user_manual_tests.mjs
FREECAD_MANUAL_IDS=FIX-IFC-REOPEN node tools/run_user_manual_tests.mjs
node tools/summarize_user_manual_tests.mjs
```
正式构建(含 TypeScript 严格检查)和几何边界检查通过,见
[最终构建记录](repair-checks-2026-09-15T16-39-56-459Z/results.json)。

View File

@@ -1,5 +1,7 @@
# Web FreeCAD 用户测试工作区
2026-09-16 最新:[IFC 原生导入修复与复测](IFC-IMPORT-REPAIR-20260916.md)。FILE-02 的真实 IFC 导入现已通过,累计手册 21 项通过;完整 BIM 作者/IFC 导出 API 不在本次关闭范围。
最新授权修复结果见 [修复与复测记录](REPAIR-REPORT.md)。原始失败保留在旧时间戳目录,当前缺陷状态以 `defects.json` 和最新报告为准。
原剩余九项的后续结果见 [九项执行结果与 IFC 依赖缺口](REMAINING-NINE-REPORT.md):8 项通过、IFC 所在的多格式项失败,未以“已执行”冒充“已通过”。

View File

@@ -1,5 +1,7 @@
# 原剩余九项:修复、执行结果与未解决依赖
历史报告。2026-09-16 后续已接入真实 IFC 原生导入绑定并完成复测,详见 [IFC 修复记录](IFC-IMPORT-REPAIR-20260916.md)。以下保留当时的失败依据,不代表最新状态。
日期:2026-09-15。
## 结果

View File

@@ -1,14 +1,14 @@
# 用户手册测试总报告
生成时间:2026-09-15T12:58:29.845Z
生成时间:2026-09-15T16:48:28.857Z
手册 21 项:通过 20;失败 1;阻塞/覆盖不足 0;未运行 0。
手册 21 项:通过 21;失败 0;阻塞/覆盖不足 0;未运行 0。
实际工作台入口 32 个,通过 32 个。不得将路由登记 1452/1452 或独立演示页烟测作为上线验收。
## 上线结论
**当前不具备完整上线放行依据。** 登记缺陷 5 个,4 个已通过针对性复测。手册尚未通过:FILE-02 failed。本机性能样本通过不等于生产容量认证,入口可用不代表全部业务命令已经验收。
**当前不具备完整上线放行依据。** 登记缺陷 5 个,5 个已通过针对性复测。手册尚未通过:无。本机性能样本通过不等于生产容量认证,入口可用不代表全部业务命令已经验收。IFC 导入通过仅指 IfcOpenShellNative 真实导入绑定,不代表完整 BIM 编辑/导出 API。
## 手册逐项覆盖
@@ -23,7 +23,7 @@
| GEO-03 | 多对象与布尔 | passed | 仅限实际执行的步骤和断言 [过程](manual-2026-09-15T11-47-41-751Z/report.md) |
| GEO-04 | 选择与删除恢复 | passed | 仅限实际执行的步骤和断言 [过程](manual-2026-09-15T08-09-15-351Z/report.md) |
| FILE-01 | STEP 导入 | passed | 仅限实际执行的步骤和断言 [过程](manual-2026-09-15T08-09-15-351Z/report.md) |
| FILE-02 | 多格式导入 | failed | Error: IFC native import is not available: AC14-FZK-Haus.ifc: No native import handler is registered for .ifc [过程](manual-2026-09-15T12-53-49-351Z/report.md) |
| FILE-02 | 多格式导入 | passed | 仅限实际执行的步骤和断言 [过程](manual-2026-09-15T16-41-07-796Z/report.md) |
| FILE-03 | 保存与重开 | passed | 仅限实际执行的步骤和断言 [过程](manual-2026-09-15T12-53-49-351Z/report.md) |
| FILE-04 | OPFS 刷新恢复 | passed | 仅限实际执行的步骤和断言 [过程](manual-2026-09-15T11-47-41-751Z/report.md) |
| FILE-05 | STL 导出回读 | passed | 仅限实际执行的步骤和断言 [过程](manual-2026-09-15T12-53-49-351Z/report.md) |
@@ -44,6 +44,7 @@
原始问题:浏览器抛出 ReferenceError: WebMacroDebugTask is not defined;原生模块登记不能使 React 组件自动导入。
1. 打开首页。
2. 点击任一工作台导航,或访问 /workbench.html?module=Part。
3. 观察只有导航而无工作台业务界面,Console 抛出 ReferenceError。
@@ -153,6 +154,7 @@
原始问题:主工作区 Create group 返回 native_view_failed: No module named json。
1. 首页创建 Box。
2. 展开 New Group。
3. 点击 Create group。
@@ -169,6 +171,7 @@
原始问题:颜色编辑为 #cc3344 后保存 FCStd,重开显示默认 #73c6d4;Label 已保留。
1. 创建 Box 并修改 Label。
2. 将 Object Color 改为 #cc3344。
3. 保存 FCStd 到 OPFS。
@@ -191,6 +194,7 @@
原始问题:工作台能够渲染但窗口命令报 invalid_request / Native view command returned no result。窗口命令被套用几何契约,且原生处理函数未加入标准命令分发表。
1. 打开工作台并等待窗口工具栏初始化。
2. 检查顶部错误提示。
3. 展开面板菜单并切换工具栏锁定。
@@ -301,10 +305,11 @@
### UT-005 IFC 缺少真实 IfcOpenShell WASM 绑定 (P1)
当前状态:open
当前状态:resolved_by_retest
原始问题:真实 IFC 样本无法导入;当前 BIM 初始化仅有 declaration-only IfcOpenShell 替身,PartBox 无 IFC 原生导入器。不能将显式报错算作 IFC 支持。
IfcOpenShellNative real IFC2X3/IFC4 import and FCStd persistence only; full ifcopenshell Python authoring/export API remains outside this closure.
1. 打开 Web / Std_Open。
2. 选择本机 AC14-FZK-Haus.ifc。
3. 检查 file_open_failed 和 No native import handler is registered for .ifc。
@@ -317,13 +322,15 @@
[原始证据 6](manual-2026-09-15T12-47-40-067Z/FILE-02-06.png)
[原始证据 7](manual-2026-09-15T12-47-40-067Z/FILE-02-07.png)
[修复复测 1](manual-2026-09-15T12-53-49-351Z/FILE-02-01.png)
[修复复测 2](manual-2026-09-15T12-53-49-351Z/FILE-02-02.png)
[修复复测 3](manual-2026-09-15T12-53-49-351Z/FILE-02-03.png)
[修复复测 4](manual-2026-09-15T12-53-49-351Z/FILE-02-04.png)
[修复复测 5](manual-2026-09-15T12-53-49-351Z/FILE-02-05.png)
[修复复测 6](manual-2026-09-15T12-53-49-351Z/FILE-02-06.png)
[修复复测 7](manual-2026-09-15T12-53-49-351Z/FILE-02-07.png)
[修复复测 1](manual-2026-09-15T16-41-07-796Z/FILE-02-01.png)
[修复复测 2](manual-2026-09-15T16-41-07-796Z/FILE-02-02.png)
[修复复测 3](manual-2026-09-15T16-41-07-796Z/FILE-02-03.png)
[修复复测 4](manual-2026-09-15T16-41-07-796Z/FILE-02-04.png)
[修复复测 5](manual-2026-09-15T16-41-07-796Z/FILE-02-05.png)
[修复复测 6](manual-2026-09-15T16-41-07-796Z/FILE-02-06.png)
[修复复测 7](manual-2026-09-15T16-41-07-796Z/FILE-02-07.png)
[修复复测 8](manual-2026-09-15T16-24-54-253Z/FIX-IFC-REOPEN-01.png)
[修复复测 9](manual-2026-09-15T16-24-54-253Z/FIX-IFC-REOPEN-02.png)
## 批次与耗时
@@ -343,6 +350,9 @@
- [manual-2026-09-15T12-36-05-542Z](manual-2026-09-15T12-36-05-542Z/report.md):1 条案例记录,累计案例耗时 16.6 秒。
- [manual-2026-09-15T12-47-40-067Z](manual-2026-09-15T12-47-40-067Z/report.md):3 条案例记录,累计案例耗时 34.2 秒。
- [manual-2026-09-15T12-53-49-351Z](manual-2026-09-15T12-53-49-351Z/report.md):9 条案例记录,累计案例耗时 173.2 秒。
- [manual-2026-09-15T16-06-38-026Z](manual-2026-09-15T16-06-38-026Z/report.md):1 条案例记录,累计案例耗时 616.5 秒。
- [manual-2026-09-15T16-24-54-253Z](manual-2026-09-15T16-24-54-253Z/report.md):1 条案例记录,累计案例耗时 217.7 秒。
- [manual-2026-09-15T16-41-07-796Z](manual-2026-09-15T16-41-07-796Z/report.md):1 条案例记录,累计案例耗时 375.1 秒。
## 解释与限制

View File

@@ -388,18 +388,22 @@
"manual-2026-09-15T12-47-40-067Z/FILE-02-06.png",
"manual-2026-09-15T12-47-40-067Z/FILE-02-07.png"
],
"status": "open",
"status": "resolved_by_retest",
"retestCases": [
"FILE-02"
"FILE-02",
"FIX-IFC-REOPEN"
],
"resolutionScope": "IfcOpenShellNative real IFC2X3/IFC4 import and FCStd persistence only; full ifcopenshell Python authoring/export API remains outside this closure.",
"retestEvidence": [
"manual-2026-09-15T12-53-49-351Z/FILE-02-01.png",
"manual-2026-09-15T12-53-49-351Z/FILE-02-02.png",
"manual-2026-09-15T12-53-49-351Z/FILE-02-03.png",
"manual-2026-09-15T12-53-49-351Z/FILE-02-04.png",
"manual-2026-09-15T12-53-49-351Z/FILE-02-05.png",
"manual-2026-09-15T12-53-49-351Z/FILE-02-06.png",
"manual-2026-09-15T12-53-49-351Z/FILE-02-07.png"
"manual-2026-09-15T16-41-07-796Z/FILE-02-01.png",
"manual-2026-09-15T16-41-07-796Z/FILE-02-02.png",
"manual-2026-09-15T16-41-07-796Z/FILE-02-03.png",
"manual-2026-09-15T16-41-07-796Z/FILE-02-04.png",
"manual-2026-09-15T16-41-07-796Z/FILE-02-05.png",
"manual-2026-09-15T16-41-07-796Z/FILE-02-06.png",
"manual-2026-09-15T16-41-07-796Z/FILE-02-07.png",
"manual-2026-09-15T16-24-54-253Z/FIX-IFC-REOPEN-01.png",
"manual-2026-09-15T16-24-54-253Z/FIX-IFC-REOPEN-02.png"
],
"originalEvidence": [
"manual-2026-09-15T12-47-40-067Z/FILE-02-01.png",

View File

@@ -0,0 +1,3 @@
{
"error": "AssertionError [ERR_ASSERTION]: [{\"filename\":\"wall.ifc\",\"message\":\"IFC contains no convertible native geometry\"}]\n\n1 !== 0\n"
}

View File

@@ -0,0 +1,105 @@
[
{
"command": "Std_Open",
"reply": {
"command": "Std_Open",
"document": "Contract",
"ok": true,
"owner": "PartBox",
"result": {
"activeDocument": null,
"command": "Std_Open",
"documentId": "Contract",
"errors": [
{
"filename": "wall.ifc",
"message": "IFC contains no convertible native geometry"
}
],
"formats": [
{
"extension": "FCStd",
"modules": [
"FreeCAD"
]
},
{
"extension": "BREP",
"modules": [
"Part"
]
},
{
"extension": "BRP",
"modules": [
"Part"
]
},
{
"extension": "IFC",
"modules": [
"IfcOpenShellNative"
]
},
{
"extension": "IGES",
"modules": [
"Part"
]
},
{
"extension": "IGS",
"modules": [
"Part"
]
},
{
"extension": "OBJ",
"modules": [
"Mesh"
]
},
{
"extension": "brep",
"modules": [
"Part"
]
},
{
"extension": "brp",
"modules": [
"Part"
]
},
{
"extension": "ifc",
"modules": [
"IfcOpenShellNative"
]
},
{
"extension": "iges",
"modules": [
"Part"
]
},
{
"extension": "igs",
"modules": [
"Part"
]
},
{
"extension": "obj",
"modules": [
"Mesh"
]
}
],
"opened": [],
"operation": "open"
},
"schema": "freecad-web/document-view/v1"
}
}
]

View File

@@ -0,0 +1,3 @@
{
"error": "RuntimeError: memory access out of bounds"
}

View File

@@ -0,0 +1,28 @@
{
"count": 7,
"properties": [
[
"Ifc_32",
"[{\"Description\":null,\"GlobalId\":\"3U5dlTKgNpdXvGG_h1UB1e\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_BuildingCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Project Information')\",\"Unit\":null},{\"Description\":null,\"Name\":\"NumberOfStoreys\",\"NominalValue\":\"IfcCountMeasure(1)\",\"Unit\":null},{\"Description\":null,\"Name\":\"IsLandmarked\",\"NominalValue\":\"IfcLogical(.F.)\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"0qtiToowyEn_jqyPw36bkp\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_BuildingElementProxyCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Project Information')\",\"Unit\":null},{\"Description\":null,\"Name\":\"IsExternal\",\"NominalValue\":\"IfcBoolean(.F.)\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"2Xe4e_z6nyyQBfJ9yOJXYv\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_BuildingStoreyCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Project Information')\",\"Unit\":null},{\"Description\":null,\"Name\":\"AboveGround\",\"NominalValue\":\"IfcLogical(.F.)\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"07mSmCWmizAULxEjtjvEjg\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_BuildingSystemCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Project Information')\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"1GCWRxA7BU8FaVCiUcq6nY\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_SpaceCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Project Information')\",\"Unit\":null},{\"Description\":null,\"Name\":\"IsExternal\",\"NominalValue\":\"IfcBoolean(.F.)\",\"Unit\":null}]}]"
],
[
"Ifc_35",
"[{\"Description\":null,\"GlobalId\":\"2QFFSloDKLdASEirlNrsWG\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_BuildingStoreyCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Circle Head - Project Datum')\",\"Unit\":null},{\"Description\":null,\"Name\":\"AboveGround\",\"NominalValue\":\"IfcLogical(.F.)\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"2khPkDg4bBoX9QFSHYxSac\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_SpaceCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"IsExternal\",\"NominalValue\":\"IfcBoolean(.F.)\",\"Unit\":null},{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Circle Head - Project Datum')\",\"Unit\":null}]}]"
],
[
"Ifc_39",
"[{\"Description\":null,\"GlobalId\":\"2y6jqut2mGsxPM5c1zUPr2\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_BuildingStoreyCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Circle Head - Project Datum')\",\"Unit\":null},{\"Description\":null,\"Name\":\"AboveGround\",\"NominalValue\":\"IfcLogical(.F.)\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"0gGGxtUVcimZNbYugu0sB_\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_SpaceCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"IsExternal\",\"NominalValue\":\"IfcBoolean(.F.)\",\"Unit\":null},{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Circle Head - Project Datum')\",\"Unit\":null}]}]"
],
[
"Ifc_42",
"[{\"Description\":null,\"GlobalId\":\"2eqIbmOAscNen5$6huR8Xq\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_SiteCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Project Information')\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"23aMNsN69_fPNNwy7k03QC\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_SpaceCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Project Information')\",\"Unit\":null},{\"Description\":null,\"Name\":\"IsExternal\",\"NominalValue\":\"IfcBoolean(.F.)\",\"Unit\":null}]}]"
],
[
"Ifc_93",
"[{\"Description\":null,\"GlobalId\":\"2Kyssv$kPduAY5HpYkdCrw\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_ColumnCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"IsExternal\",\"NominalValue\":\"IfcBoolean(.F.)\",\"Unit\":null},{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('UC305x305x97')\",\"Unit\":null},{\"Description\":null,\"Name\":\"LoadBearing\",\"NominalValue\":\"IfcBoolean(.T.)\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"2E7Xcrf_DiKNFkQbRhLvWM\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_EnvironmentalImpactIndicators\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('UC305x305x97')\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"1sLpijh_wqTpS_F_2QKBAo\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_ReinforcementBarPitchOfColumn\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcLabel('UC305x305x97')\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"2n2HQdKqzYK7QnaOEEelxy\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"PSet_1\",\"OwnerHistory\":null,\"Values\":[{\"Description\":null,\"Name\":\"Label\",\"NominalValue\":\"IfcLabel('Pset 1')\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"2n2HQdKqzYK7QnaOEEelxz\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"PSet_2\",\"OwnerHistory\":null,\"Values\":[{\"Description\":null,\"Name\":\"Label\",\"NominalValue\":\"IfcLabel('Pset 2')\",\"Unit\":null}]}]"
]
],
"volumes": [
30862141.083286542
]
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
{
"status": "passed",
"fixtures": 2,
"invalidFileRejected": true,
"documentsPreserved": true
}

View File

@@ -0,0 +1,28 @@
{
"count": 7,
"properties": [
[
"Ifc_32",
"[{\"Description\":null,\"GlobalId\":\"3U5dlTKgNpdXvGG_h1UB1e\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_BuildingCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Project Information')\",\"Unit\":null},{\"Description\":null,\"Name\":\"NumberOfStoreys\",\"NominalValue\":\"IfcCountMeasure(1)\",\"Unit\":null},{\"Description\":null,\"Name\":\"IsLandmarked\",\"NominalValue\":\"IfcLogical(.F.)\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"0qtiToowyEn_jqyPw36bkp\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_BuildingElementProxyCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Project Information')\",\"Unit\":null},{\"Description\":null,\"Name\":\"IsExternal\",\"NominalValue\":\"IfcBoolean(.F.)\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"2Xe4e_z6nyyQBfJ9yOJXYv\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_BuildingStoreyCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Project Information')\",\"Unit\":null},{\"Description\":null,\"Name\":\"AboveGround\",\"NominalValue\":\"IfcLogical(.F.)\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"07mSmCWmizAULxEjtjvEjg\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_BuildingSystemCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Project Information')\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"1GCWRxA7BU8FaVCiUcq6nY\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_SpaceCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Project Information')\",\"Unit\":null},{\"Description\":null,\"Name\":\"IsExternal\",\"NominalValue\":\"IfcBoolean(.F.)\",\"Unit\":null}]}]"
],
[
"Ifc_35",
"[{\"Description\":null,\"GlobalId\":\"2QFFSloDKLdASEirlNrsWG\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_BuildingStoreyCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Circle Head - Project Datum')\",\"Unit\":null},{\"Description\":null,\"Name\":\"AboveGround\",\"NominalValue\":\"IfcLogical(.F.)\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"2khPkDg4bBoX9QFSHYxSac\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_SpaceCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"IsExternal\",\"NominalValue\":\"IfcBoolean(.F.)\",\"Unit\":null},{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Circle Head - Project Datum')\",\"Unit\":null}]}]"
],
[
"Ifc_39",
"[{\"Description\":null,\"GlobalId\":\"2y6jqut2mGsxPM5c1zUPr2\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_BuildingStoreyCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Circle Head - Project Datum')\",\"Unit\":null},{\"Description\":null,\"Name\":\"AboveGround\",\"NominalValue\":\"IfcLogical(.F.)\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"0gGGxtUVcimZNbYugu0sB_\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_SpaceCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"IsExternal\",\"NominalValue\":\"IfcBoolean(.F.)\",\"Unit\":null},{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Circle Head - Project Datum')\",\"Unit\":null}]}]"
],
[
"Ifc_42",
"[{\"Description\":null,\"GlobalId\":\"2eqIbmOAscNen5$6huR8Xq\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_SiteCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Project Information')\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"23aMNsN69_fPNNwy7k03QC\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_SpaceCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('Project Information')\",\"Unit\":null},{\"Description\":null,\"Name\":\"IsExternal\",\"NominalValue\":\"IfcBoolean(.F.)\",\"Unit\":null}]}]"
],
[
"Ifc_93",
"[{\"Description\":null,\"GlobalId\":\"2Kyssv$kPduAY5HpYkdCrw\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_ColumnCommon\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"IsExternal\",\"NominalValue\":\"IfcBoolean(.F.)\",\"Unit\":null},{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('UC305x305x97')\",\"Unit\":null},{\"Description\":null,\"Name\":\"LoadBearing\",\"NominalValue\":\"IfcBoolean(.T.)\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"2E7Xcrf_DiKNFkQbRhLvWM\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_EnvironmentalImpactIndicators\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcIdentifier('UC305x305x97')\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"1sLpijh_wqTpS_F_2QKBAo\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"Pset_ReinforcementBarPitchOfColumn\",\"OwnerHistory\":\"#18=IfcOwnerHistory(#17,#2,$,.NOCHANGE.,$,$,$,1741776819)\",\"Values\":[{\"Description\":null,\"Name\":\"Reference\",\"NominalValue\":\"IfcLabel('UC305x305x97')\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"2n2HQdKqzYK7QnaOEEelxy\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"PSet_1\",\"OwnerHistory\":null,\"Values\":[{\"Description\":null,\"Name\":\"Label\",\"NominalValue\":\"IfcLabel('Pset 1')\",\"Unit\":null}]},{\"Description\":null,\"GlobalId\":\"2n2HQdKqzYK7QnaOEEelxz\",\"HasProperties\":\"See embedded original IFC\",\"Name\":\"PSet_2\",\"OwnerHistory\":null,\"Values\":[{\"Description\":null,\"Name\":\"Label\",\"NominalValue\":\"IfcLabel('Pset 2')\",\"Unit\":null}]}]"
]
],
"volumes": [
30862141.083286542
]
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
{
"status": "passed",
"fixtures": 2,
"invalidFileRejected": true,
"documentsPreserved": true
}

View File

@@ -0,0 +1,4 @@
{
"status": "failed",
"error": "AssertionError [ERR_ASSERTION]: [{\"filename\":\"AC14-FZK-Haus.ifc\",\"message\":\"IFC product has invalid OCCT geometry\"}]\n\n1 !== 0\n"
}

View File

@@ -0,0 +1,106 @@
[
{
"command": "Std_Open",
"seconds": 43.016129487,
"reply": {
"command": "Std_Open",
"document": "IfcValidation",
"ok": true,
"owner": "PartBox",
"result": {
"activeDocument": null,
"command": "Std_Open",
"documentId": "IfcValidation",
"errors": [
{
"filename": "AC14-FZK-Haus.ifc",
"message": "IFC product has invalid OCCT geometry"
}
],
"formats": [
{
"extension": "FCStd",
"modules": [
"FreeCAD"
]
},
{
"extension": "BREP",
"modules": [
"Part"
]
},
{
"extension": "BRP",
"modules": [
"Part"
]
},
{
"extension": "IFC",
"modules": [
"IfcOpenShellNative"
]
},
{
"extension": "IGES",
"modules": [
"Part"
]
},
{
"extension": "IGS",
"modules": [
"Part"
]
},
{
"extension": "OBJ",
"modules": [
"Mesh"
]
},
{
"extension": "brep",
"modules": [
"Part"
]
},
{
"extension": "brp",
"modules": [
"Part"
]
},
{
"extension": "ifc",
"modules": [
"IfcOpenShellNative"
]
},
{
"extension": "iges",
"modules": [
"Part"
]
},
{
"extension": "igs",
"modules": [
"Part"
]
},
{
"extension": "obj",
"modules": [
"Mesh"
]
}
],
"opened": [],
"operation": "open"
},
"schema": "freecad-web/document-view/v1"
}
}
]

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,11 @@
{
"status": "passed",
"state": {
"objects": 147,
"shapes": 146,
"groups": 12,
"properties": 0,
"volume": 4061286490859.3145
},
"scope": "Native IFC import and FCStd save; not browser acceptance"
}

View File

@@ -0,0 +1,40 @@
{
"source": "https://github.com/IfcOpenShell/IfcOpenShell",
"observedCommit": "f8da61bf9249126c3ce41e7b995c68ae3ab520d9",
"version": "0.8.6",
"archiveSha256": "c4e1efb7910dede9fabb5003e6599b52528220bf8309c00c196741e7933176fc",
"compiler": "Emscripten system compiler (Clang 15), -pthread -fexceptions -O1",
"geometry": "provided OCCT 7.6.3 pthread static libraries",
"schemas": [
"IFC2X3",
"IFC4"
],
"license": "LGPL-3.0-or-later",
"artifacts": [
{
"path": "ifcparse/libIfcParse.a",
"bytes": 33318606,
"sha256": "9c5d832f68a99e571129afec79074f72fb058e05450131df6c98c4051ec9786f"
},
{
"path": "ifcgeom/libIfcGeom.a",
"bytes": 7008936,
"sha256": "08a110105004e5ff87ba296563b4da2b9cb1a3b302f382e24e6ac21811a9718a"
},
{
"path": "ifcgeom/kernels/libgeometry_kernel_opencascade.a",
"bytes": 3130670,
"sha256": "670e21a5e28b2560471fd7c9ce9c0f51e7d2ceab4383f57747293807d8c08d56"
}
],
"fixtureHashes": [
{
"name": "wall.ifc",
"sha256": "f3d8d6cd6b347d92a20242f2f64b3ec760ce3f20c114979dc534ac3854b2a7af"
},
{
"name": "ColumnPSetsOfSets.ifc",
"sha256": "99722c9a90c1d11d798c9ab96a3193b61f0a1350c9740d8e761acbad38b0868e"
}
]
}

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,477 @@
{
"url": "http://127.0.0.1:44077/",
"isolated": true,
"sharedArrayBuffer": "function",
"ready": "complete",
"text": "3D 视图\nDocument\n主链\n工程\n全线\n工作台\nPython\nAssembly\nBIM\nCAM\nCloud\nDraft\nFem\nHelp\nImport\nInspection\nJtReader\nMaterial\nMeasure\nMesh\nMeshPart\nOpenSCAD\nPart\nPartDesign\nPlot\nPoints\nReverseEngineering\nRobot\nSandbox\nShow\nSketcher\nSpreadsheet\nStart\nSurface\nTechDraw\nTemplatePyMod\nTest\nTux\nWeb\nFC\nFreeCAD 1.2 Web\nProject session\nDocuments\nproject-document-1\nrevision 1 · dirty\nproject-document-2\nrevision 0 · clean\n新建 Document\n关闭活动 Document\nObjects\nBox1.step\nNew Group\nproject-document-1\nView Tools \nNone\nDraw Style\nAlign to Selection\nBox Selection\nBox Element Selection\n轴十字\n转台\n速度\n停止\n选择重叠对象\n视图\n顶视图\n底视图\n前视图\n后视图\n左视图\n右视图\n等轴测\n正二轴测\n正三轴测\n\nImported Box1.step: 12 triangles\n\n导入 STEP / IGES / BREP / STL\n导出格式\nSTL\nSTEP\nIGES\nBREP\n适合全部对象\n创建长方体\n保存 FCStd 到 OPFS\n下载 native FCStd\nOPFS 文档\n选择文档\n打开 OPFS 文档\n刷新 OPFS 文档\n保存工程 checkpoint\n恢复工程 checkpoint\nQueue / recovery\njobs=0 pending=0 failures=0\nNo recovery failures\nReplay pendingQuarantine pending\nImported native mesh\n36 vertices · 12 triangles · 6 faces\nProperties\nLabel\nColor\nVisibility\nSource\nweb_project_document_1.FCStd\nFaces\n6\nTriangles\n12\n移除对象\n位置\nX\nY\nZ\n布尔运算\nBase\n选择对象\nBox1.step\nTool\n选择对象\nBox1.step\n创建\n重算\nBox dimensions\nLength\nWidth\nHeight\n应用尺寸并重算\n取消尺寸编辑\n原生实体\nRadius\nHeight\nAngle\n创建圆柱\n重算\nVolume\n24.000000\nBounds (mm)\nMin X: 0.000000\nMin Y: 0.000000\nMin Z: 0.000000\nMax X: 2.000000\nMax Y: 3.000000\nMax Z: 4.000000\nproject-document-1\n1 objects\nRecent files\n1\nCheckpoint\nlocalStorage metadata only",
"tabs": [
{
"text": "project-document-1\nrevision 1 · dirty",
"active": true
},
{
"text": "project-document-2\nrevision 0 · clean",
"active": false
}
],
"objects": [
{
"id": "native:Imported1",
"text": "Box1.step",
"selected": "true"
}
],
"status": [
"",
"Imported Box1.step: 12 triangles",
""
],
"controls": [
{
"tag": "BUTTON",
"label": "project-document-1revision 1 · dirty",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "project-document-2revision 0 · clean",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "新建 Document",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "关闭活动 Document",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Visible Box1.step",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "",
"value": "Group",
"disabled": false
},
{
"tag": "SELECT",
"label": "Document root",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Refresh groups",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Create group",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "NoneDraw StyleAlign to SelectionBox SelectionBox Element Selection",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "导出依赖图 (.gv)",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "撤销",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "重做",
"value": "",
"disabled": true
},
{
"tag": "INPUT",
"label": "Axis cross",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "Turntable",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "Turntable speed",
"value": "2",
"disabled": false
},
{
"tag": "BUTTON",
"label": "停止",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "选择重叠对象",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "标准视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "放大",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "缩小",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "适配全部",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "向左旋转视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "向右旋转视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "存储工作视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "恢复工作视图",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Import STEP files",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Native export format",
"value": "stl",
"disabled": false
},
{
"tag": "BUTTON",
"label": "导出选中对象",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "适合全部对象",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建长方体",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "保存 FCStd 到 OPFS",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "下载 native FCStd",
"value": "",
"disabled": true
},
{
"tag": "SELECT",
"label": "OPFS document",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "打开 OPFS 文档",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "刷新 OPFS 文档",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "保存工程 checkpoint",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "恢复工程 checkpoint",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Replay pending",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Quarantine pending",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Label",
"value": "Box1.step",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Color",
"value": "#73c6d4",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Visibility",
"value": "on",
"disabled": false
},
{
"tag": "BUTTON",
"label": "移除对象",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position X",
"value": "0",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position Y",
"value": "0",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position Z",
"value": "0",
"disabled": false
},
{
"tag": "BUTTON",
"label": "应用位置",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "并集",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "差集",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "交集",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Boolean Base",
"value": "Imported1",
"disabled": false
},
{
"tag": "BUTTON",
"label": "交换运算对象",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Boolean Tool",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "重算",
"value": "",
"disabled": true
},
{
"tag": "INPUT",
"label": "Length",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Width",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Height",
"value": "10",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Cube",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Box Fix 1",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Box Fix 2",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "应用尺寸并重算",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "取消尺寸编辑",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "圆柱",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "圆锥",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "球",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "圆环",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Radius",
"value": "5",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Height",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Angle",
"value": "360",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建圆柱",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "重算",
"value": "",
"disabled": true
}
],
"volume": "24.000000",
"workbench": null,
"canvases": [
{
"width": 817,
"height": 440
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,477 @@
{
"url": "http://127.0.0.1:44077/",
"isolated": true,
"sharedArrayBuffer": "function",
"ready": "complete",
"text": "3D 视图\nDocument\n主链\n工程\n全线\n工作台\nPython\nAssembly\nBIM\nCAM\nCloud\nDraft\nFem\nHelp\nImport\nInspection\nJtReader\nMaterial\nMeasure\nMesh\nMeshPart\nOpenSCAD\nPart\nPartDesign\nPlot\nPoints\nReverseEngineering\nRobot\nSandbox\nShow\nSketcher\nSpreadsheet\nStart\nSurface\nTechDraw\nTemplatePyMod\nTest\nTux\nWeb\nFC\nFreeCAD 1.2 Web\nProject session\nDocuments\nproject-document-1\nrevision 1 · dirty\nproject-document-2\nrevision 0 · clean\n新建 Document\n关闭活动 Document\nObjects\nBox1.iges\nNew Group\nproject-document-1\nView Tools \nNone\nDraw Style\nAlign to Selection\nBox Selection\nBox Element Selection\n轴十字\n转台\n速度\n停止\n选择重叠对象\n视图\n顶视图\n底视图\n前视图\n后视图\n左视图\n右视图\n等轴测\n正二轴测\n正三轴测\n\nImported Box1.iges: 12 triangles\n\n导入 STEP / IGES / BREP / STL\n导出格式\nSTL\nSTEP\nIGES\nBREP\n适合全部对象\n创建长方体\n保存 FCStd 到 OPFS\n下载 native FCStd\nOPFS 文档\n选择文档\n打开 OPFS 文档\n刷新 OPFS 文档\n保存工程 checkpoint\n恢复工程 checkpoint\nQueue / recovery\njobs=0 pending=0 failures=0\nNo recovery failures\nReplay pendingQuarantine pending\nImported native mesh\n36 vertices · 12 triangles · 6 faces\nProperties\nLabel\nColor\nVisibility\nSource\nweb_project_document_1.FCStd\nFaces\n6\nTriangles\n12\n移除对象\n位置\nX\nY\nZ\n布尔运算\nBase\n选择对象\nBox1.iges\nTool\n选择对象\nBox1.iges\n创建\n重算\nBox dimensions\nLength\nWidth\nHeight\n应用尺寸并重算\n取消尺寸编辑\n原生实体\nRadius\nHeight\nAngle\n创建圆柱\n重算\nVolume\n24.000000\nBounds (mm)\nMin X: 0.000000\nMin Y: 0.000000\nMin Z: 0.000000\nMax X: 2.000000\nMax Y: 3.000000\nMax Z: 4.000000\nproject-document-1\n1 objects\nRecent files\n1\nCheckpoint\nlocalStorage metadata only",
"tabs": [
{
"text": "project-document-1\nrevision 1 · dirty",
"active": true
},
{
"text": "project-document-2\nrevision 0 · clean",
"active": false
}
],
"objects": [
{
"id": "native:Imported1",
"text": "Box1.iges",
"selected": "true"
}
],
"status": [
"",
"Imported Box1.iges: 12 triangles",
""
],
"controls": [
{
"tag": "BUTTON",
"label": "project-document-1revision 1 · dirty",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "project-document-2revision 0 · clean",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "新建 Document",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "关闭活动 Document",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Visible Box1.iges",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "",
"value": "Group",
"disabled": false
},
{
"tag": "SELECT",
"label": "Document root",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Refresh groups",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Create group",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "NoneDraw StyleAlign to SelectionBox SelectionBox Element Selection",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "导出依赖图 (.gv)",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "撤销",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "重做",
"value": "",
"disabled": true
},
{
"tag": "INPUT",
"label": "Axis cross",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "Turntable",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "Turntable speed",
"value": "2",
"disabled": false
},
{
"tag": "BUTTON",
"label": "停止",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "选择重叠对象",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "标准视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "放大",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "缩小",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "适配全部",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "向左旋转视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "向右旋转视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "存储工作视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "恢复工作视图",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Import STEP files",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Native export format",
"value": "stl",
"disabled": false
},
{
"tag": "BUTTON",
"label": "导出选中对象",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "适合全部对象",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建长方体",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "保存 FCStd 到 OPFS",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "下载 native FCStd",
"value": "",
"disabled": true
},
{
"tag": "SELECT",
"label": "OPFS document",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "打开 OPFS 文档",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "刷新 OPFS 文档",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "保存工程 checkpoint",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "恢复工程 checkpoint",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Replay pending",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Quarantine pending",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Label",
"value": "Box1.iges",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Color",
"value": "#73c6d4",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Visibility",
"value": "on",
"disabled": false
},
{
"tag": "BUTTON",
"label": "移除对象",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position X",
"value": "0",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position Y",
"value": "0",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position Z",
"value": "0",
"disabled": false
},
{
"tag": "BUTTON",
"label": "应用位置",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "并集",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "差集",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "交集",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Boolean Base",
"value": "Imported1",
"disabled": false
},
{
"tag": "BUTTON",
"label": "交换运算对象",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Boolean Tool",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "重算",
"value": "",
"disabled": true
},
{
"tag": "INPUT",
"label": "Length",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Width",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Height",
"value": "10",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Cube",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Box Fix 1",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Box Fix 2",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "应用尺寸并重算",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "取消尺寸编辑",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "圆柱",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "圆锥",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "球",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "圆环",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Radius",
"value": "5",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Height",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Angle",
"value": "360",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建圆柱",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "重算",
"value": "",
"disabled": true
}
],
"volume": "24.000000",
"workbench": null,
"canvases": [
{
"width": 817,
"height": 440
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,477 @@
{
"url": "http://127.0.0.1:44077/",
"isolated": true,
"sharedArrayBuffer": "function",
"ready": "complete",
"text": "3D 视图\nDocument\n主链\n工程\n全线\n工作台\nPython\nAssembly\nBIM\nCAM\nCloud\nDraft\nFem\nHelp\nImport\nInspection\nJtReader\nMaterial\nMeasure\nMesh\nMeshPart\nOpenSCAD\nPart\nPartDesign\nPlot\nPoints\nReverseEngineering\nRobot\nSandbox\nShow\nSketcher\nSpreadsheet\nStart\nSurface\nTechDraw\nTemplatePyMod\nTest\nTux\nWeb\nFC\nFreeCAD 1.2 Web\nProject session\nDocuments\nproject-document-1\nrevision 1 · dirty\nproject-document-2\nrevision 0 · clean\n新建 Document\n关闭活动 Document\nObjects\nBox1.brep\nNew Group\nproject-document-1\nView Tools \nNone\nDraw Style\nAlign to Selection\nBox Selection\nBox Element Selection\n轴十字\n转台\n速度\n停止\n选择重叠对象\n视图\n顶视图\n底视图\n前视图\n后视图\n左视图\n右视图\n等轴测\n正二轴测\n正三轴测\n\nImported Box1.brep: 12 triangles\n\n导入 STEP / IGES / BREP / STL\n导出格式\nSTL\nSTEP\nIGES\nBREP\n适合全部对象\n创建长方体\n保存 FCStd 到 OPFS\n下载 native FCStd\nOPFS 文档\n选择文档\n打开 OPFS 文档\n刷新 OPFS 文档\n保存工程 checkpoint\n恢复工程 checkpoint\nQueue / recovery\njobs=0 pending=0 failures=0\nNo recovery failures\nReplay pendingQuarantine pending\nImported native mesh\n36 vertices · 12 triangles · 6 faces\nProperties\nLabel\nColor\nVisibility\nSource\nweb_project_document_1.FCStd\nFaces\n6\nTriangles\n12\n移除对象\n位置\nX\nY\nZ\n布尔运算\nBase\n选择对象\nBox1.brep\nTool\n选择对象\nBox1.brep\n创建\n重算\nBox dimensions\nLength\nWidth\nHeight\n应用尺寸并重算\n取消尺寸编辑\n原生实体\nRadius\nHeight\nAngle\n创建圆柱\n重算\nVolume\n24.000000\nBounds (mm)\nMin X: 0.000000\nMin Y: 0.000000\nMin Z: 0.000000\nMax X: 2.000000\nMax Y: 3.000000\nMax Z: 4.000000\nproject-document-1\n1 objects\nRecent files\n1\nCheckpoint\nlocalStorage metadata only",
"tabs": [
{
"text": "project-document-1\nrevision 1 · dirty",
"active": true
},
{
"text": "project-document-2\nrevision 0 · clean",
"active": false
}
],
"objects": [
{
"id": "native:Imported1",
"text": "Box1.brep",
"selected": "true"
}
],
"status": [
"",
"Imported Box1.brep: 12 triangles",
""
],
"controls": [
{
"tag": "BUTTON",
"label": "project-document-1revision 1 · dirty",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "project-document-2revision 0 · clean",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "新建 Document",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "关闭活动 Document",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Visible Box1.brep",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "",
"value": "Group",
"disabled": false
},
{
"tag": "SELECT",
"label": "Document root",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Refresh groups",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Create group",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "NoneDraw StyleAlign to SelectionBox SelectionBox Element Selection",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "导出依赖图 (.gv)",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "撤销",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "重做",
"value": "",
"disabled": true
},
{
"tag": "INPUT",
"label": "Axis cross",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "Turntable",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "Turntable speed",
"value": "2",
"disabled": false
},
{
"tag": "BUTTON",
"label": "停止",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "选择重叠对象",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "标准视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "放大",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "缩小",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "适配全部",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "向左旋转视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "向右旋转视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "存储工作视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "恢复工作视图",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Import STEP files",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Native export format",
"value": "stl",
"disabled": false
},
{
"tag": "BUTTON",
"label": "导出选中对象",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "适合全部对象",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建长方体",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "保存 FCStd 到 OPFS",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "下载 native FCStd",
"value": "",
"disabled": true
},
{
"tag": "SELECT",
"label": "OPFS document",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "打开 OPFS 文档",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "刷新 OPFS 文档",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "保存工程 checkpoint",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "恢复工程 checkpoint",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Replay pending",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Quarantine pending",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Label",
"value": "Box1.brep",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Color",
"value": "#73c6d4",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Visibility",
"value": "on",
"disabled": false
},
{
"tag": "BUTTON",
"label": "移除对象",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position X",
"value": "0",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position Y",
"value": "0",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position Z",
"value": "0",
"disabled": false
},
{
"tag": "BUTTON",
"label": "应用位置",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "并集",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "差集",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "交集",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Boolean Base",
"value": "Imported1",
"disabled": false
},
{
"tag": "BUTTON",
"label": "交换运算对象",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Boolean Tool",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "重算",
"value": "",
"disabled": true
},
{
"tag": "INPUT",
"label": "Length",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Width",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Height",
"value": "10",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Cube",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Box Fix 1",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Box Fix 2",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "应用尺寸并重算",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "取消尺寸编辑",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "圆柱",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "圆锥",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "球",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "圆环",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Radius",
"value": "5",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Height",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Angle",
"value": "360",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建圆柱",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "重算",
"value": "",
"disabled": true
}
],
"volume": "24.000000",
"workbench": null,
"canvases": [
{
"width": 817,
"height": 440
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,477 @@
{
"url": "http://127.0.0.1:44077/",
"isolated": true,
"sharedArrayBuffer": "function",
"ready": "complete",
"text": "3D 视图\nDocument\n主链\n工程\n全线\n工作台\nPython\nAssembly\nBIM\nCAM\nCloud\nDraft\nFem\nHelp\nImport\nInspection\nJtReader\nMaterial\nMeasure\nMesh\nMeshPart\nOpenSCAD\nPart\nPartDesign\nPlot\nPoints\nReverseEngineering\nRobot\nSandbox\nShow\nSketcher\nSpreadsheet\nStart\nSurface\nTechDraw\nTemplatePyMod\nTest\nTux\nWeb\nFC\nFreeCAD 1.2 Web\nProject session\nDocuments\nproject-document-1\nrevision 1 · dirty\nproject-document-2\nrevision 0 · clean\n新建 Document\n关闭活动 Document\nObjects\nBox1.stl\nNew Group\nproject-document-1\nView Tools \nNone\nDraw Style\nAlign to Selection\nBox Selection\nBox Element Selection\n轴十字\n转台\n速度\n停止\n选择重叠对象\n视图\n顶视图\n底视图\n前视图\n后视图\n左视图\n右视图\n等轴测\n正二轴测\n正三轴测\n\nImported Box1.stl: 12 triangles\n\n导入 STEP / IGES / BREP / STL\n导出格式\nSTL\nSTEP\nIGES\nBREP\n适合全部对象\n创建长方体\n保存 FCStd 到 OPFS\n下载 native FCStd\nOPFS 文档\n选择文档\n打开 OPFS 文档\n刷新 OPFS 文档\n保存工程 checkpoint\n恢复工程 checkpoint\nQueue / recovery\njobs=0 pending=0 failures=0\nNo recovery failures\nReplay pendingQuarantine pending\nImported native mesh\n36 vertices · 12 triangles · 12 faces\nProperties\nLabel\nColor\nVisibility\nSource\nweb_project_document_1.FCStd\nFaces\n12\nTriangles\n12\n移除对象\n位置\nX\nY\nZ\n布尔运算\nBase\n选择对象\nBox1.stl\nTool\n选择对象\nBox1.stl\n创建\n重算\nBox dimensions\nLength\nWidth\nHeight\n应用尺寸并重算\n取消尺寸编辑\n原生实体\nRadius\nHeight\nAngle\n创建圆柱\n重算\nVolume\n24.000000\nBounds (mm)\nMin X: 0.000000\nMin Y: 0.000000\nMin Z: 0.000000\nMax X: 2.000000\nMax Y: 3.000000\nMax Z: 4.000000\nproject-document-1\n1 objects\nRecent files\n1\nCheckpoint\nlocalStorage metadata only",
"tabs": [
{
"text": "project-document-1\nrevision 1 · dirty",
"active": true
},
{
"text": "project-document-2\nrevision 0 · clean",
"active": false
}
],
"objects": [
{
"id": "native:Imported1",
"text": "Box1.stl",
"selected": "true"
}
],
"status": [
"",
"Imported Box1.stl: 12 triangles",
""
],
"controls": [
{
"tag": "BUTTON",
"label": "project-document-1revision 1 · dirty",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "project-document-2revision 0 · clean",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "新建 Document",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "关闭活动 Document",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Visible Box1.stl",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "",
"value": "Group",
"disabled": false
},
{
"tag": "SELECT",
"label": "Document root",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Refresh groups",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Create group",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "NoneDraw StyleAlign to SelectionBox SelectionBox Element Selection",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "导出依赖图 (.gv)",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "撤销",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "重做",
"value": "",
"disabled": true
},
{
"tag": "INPUT",
"label": "Axis cross",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "Turntable",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "Turntable speed",
"value": "2",
"disabled": false
},
{
"tag": "BUTTON",
"label": "停止",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "选择重叠对象",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "标准视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "放大",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "缩小",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "适配全部",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "向左旋转视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "向右旋转视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "存储工作视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "恢复工作视图",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Import STEP files",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Native export format",
"value": "stl",
"disabled": false
},
{
"tag": "BUTTON",
"label": "导出选中对象",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "适合全部对象",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建长方体",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "保存 FCStd 到 OPFS",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "下载 native FCStd",
"value": "",
"disabled": true
},
{
"tag": "SELECT",
"label": "OPFS document",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "打开 OPFS 文档",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "刷新 OPFS 文档",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "保存工程 checkpoint",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "恢复工程 checkpoint",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Replay pending",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Quarantine pending",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Label",
"value": "Box1.stl",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Color",
"value": "#73c6d4",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Visibility",
"value": "on",
"disabled": false
},
{
"tag": "BUTTON",
"label": "移除对象",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position X",
"value": "0",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position Y",
"value": "0",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position Z",
"value": "0",
"disabled": false
},
{
"tag": "BUTTON",
"label": "应用位置",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "并集",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "差集",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "交集",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Boolean Base",
"value": "Imported1",
"disabled": false
},
{
"tag": "BUTTON",
"label": "交换运算对象",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Boolean Tool",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "重算",
"value": "",
"disabled": true
},
{
"tag": "INPUT",
"label": "Length",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Width",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Height",
"value": "10",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Cube",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Box Fix 1",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Box Fix 2",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "应用尺寸并重算",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "取消尺寸编辑",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "圆柱",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "圆锥",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "球",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "圆环",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Radius",
"value": "5",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Height",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Angle",
"value": "360",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建圆柱",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "重算",
"value": "",
"disabled": true
}
],
"volume": "24.000000",
"workbench": null,
"canvases": [
{
"width": 817,
"height": 440
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

View File

@@ -0,0 +1,286 @@
DBRep_DrawableShape
CASCADE Topology V1, (c) Matra-Datavision
Locations 1
1
1 0 0 0
0 1 0 0
0 0 1 0
Curve2ds 24
1 0 0 1 0
1 0 0 1 0
1 4 0 0 -1
1 0 0 0 1
1 0 -3 1 0
1 0 0 1 0
1 0 0 0 -1
1 0 0 0 1
1 0 0 1 0
1 0 2 1 0
1 4 0 0 -1
1 2 0 0 1
1 0 -3 1 0
1 0 2 1 0
1 0 0 0 -1
1 2 0 0 1
1 0 0 0 1
1 0 0 1 0
1 4 0 0 1
1 0 0 1 0
1 0 0 0 1
1 0 3 1 0
1 4 0 0 1
1 0 3 1 0
Curves 12
1 0 0 0 0 0 1
1 0 0 4 -0 1 0
1 0 3 0 0 0 1
1 0 0 0 -0 1 0
1 2 0 0 0 0 1
1 2 0 4 -0 1 0
1 2 3 0 0 0 1
1 2 0 0 -0 1 0
1 0 0 0 1 0 -0
1 0 0 4 1 0 -0
1 0 3 0 1 0 -0
1 0 3 4 1 0 -0
Polygon3D 0
PolygonOnTriangulations 0
Surfaces 6
1 0 0 0 1 0 -0 0 0 1 0 -1 0
1 0 0 0 -0 1 0 0 0 1 1 0 -0
1 0 0 4 0 0 1 1 0 -0 -0 1 0
1 0 3 0 -0 1 0 0 0 1 1 0 -0
1 0 0 0 0 0 1 1 0 -0 -0 1 0
1 2 0 0 1 0 -0 0 0 1 0 -1 0
Triangulations 0
TShapes 34
Ve
1e-07
0 0 4
0 0
0101101
*
Ve
1e-07
0 0 0
0 0
0101101
*
Ed
1e-07 1 1 0
1 1 0 0 4
2 1 1 0 0 4
2 2 2 0 0 4
0
0101000
-34 0 +33 0 *
Ve
1e-07
0 3 4
0 0
0101101
*
Ed
1e-07 1 1 0
1 2 0 0 3
2 3 1 0 0 3
2 4 3 0 0 3
0
0101000
-31 0 +34 0 *
Ve
1e-07
0 3 0
0 0
0101101
*
Ed
1e-07 1 1 0
1 3 0 0 4
2 5 1 0 0 4
2 6 4 0 0 4
0
0101000
-31 0 +29 0 *
Ed
1e-07 1 1 0
1 4 0 0 3
2 7 1 0 0 3
2 8 5 0 0 3
0
0101000
-29 0 +33 0 *
Wi
0101100
-32 0 -30 0 +28 0 +27 0 *
Fa
0 1e-07 1 0
0101000
+26 0 *
Ve
1e-07
2 0 4
0 0
0101101
*
Ve
1e-07
2 0 0
0 0
0101101
*
Ed
1e-07 1 1 0
1 5 0 0 4
2 9 6 0 0 4
2 10 2 0 0 4
0
0101000
-24 0 +23 0 *
Ve
1e-07
2 3 4
0 0
0101101
*
Ed
1e-07 1 1 0
1 6 0 0 3
2 11 6 0 0 3
2 12 3 0 0 3
0
0101000
-21 0 +24 0 *
Ve
1e-07
2 3 0
0 0
0101101
*
Ed
1e-07 1 1 0
1 7 0 0 4
2 13 6 0 0 4
2 14 4 0 0 4
0
0101000
-21 0 +19 0 *
Ed
1e-07 1 1 0
1 8 0 0 3
2 15 6 0 0 3
2 16 5 0 0 3
0
0101000
-19 0 +23 0 *
Wi
0101100
-22 0 -20 0 +18 0 +17 0 *
Fa
0 1e-07 6 0
0101000
+16 0 *
Ed
1e-07 1 1 0
1 9 0 0 2
2 17 2 0 0 2
2 18 5 0 0 2
0
0101000
-23 0 +33 0 *
Ed
1e-07 1 1 0
1 10 0 0 2
2 19 2 0 0 2
2 20 3 0 0 2
0
0101000
-24 0 +34 0 *
Wi
0101100
-14 0 -22 0 +13 0 +32 0 *
Fa
0 1e-07 2 0
0101000
+12 0 *
Ed
1e-07 1 1 0
1 11 0 0 2
2 21 4 0 0 2
2 22 5 0 0 2
0
0101000
-19 0 +29 0 *
Ed
1e-07 1 1 0
1 12 0 0 2
2 23 4 0 0 2
2 24 3 0 0 2
0
0101000
-21 0 +31 0 *
Wi
0101100
-10 0 -18 0 +9 0 +28 0 *
Fa
0 1e-07 4 0
0101000
+8 0 *
Wi
0101100
-27 0 -10 0 +17 0 +14 0 *
Fa
0 1e-07 5 0
0101000
+6 0 *
Wi
0101100
-30 0 -9 0 +20 0 +13 0 *
Fa
0 1e-07 3 0
0101000
+4 0 *
Sh
0101100
-25 0 +15 0 -11 0 +7 0 -5 0 +3 0 *
So
1100000
+2 0 *
+1 1

View File

@@ -0,0 +1,153 @@
S0000001
,,31HOpen CASCADE IGES processor 7.6,13HFilename.iges, G0000001
16HOpen CASCADE 7.6,31HOpen CASCADE IGES processor 7.6,32,308,15,308,15,G0000002
,1.,2,2HMM,1,0.01,15H20260916.000642,1E-07,4.,,,11,0,15H20260916.000642,G0000003
; G0000004
402 1 0 0 0 0 0 000000000D0000001
402 0 0 1 1 0D0000002
144 2 0 0 0 0 0 000020000D0000003
144 0 0 1 0 0D0000004
108 3 0 0 0 0 0 000010000D0000005
108 0 0 1 0 0D0000006
142 4 0 0 0 0 0 000010500D0000007
142 0 0 1 0 0D0000008
102 5 0 0 0 0 0 000010000D0000009
102 0 0 1 0 0D0000010
110 6 0 0 0 0 0 000010000D0000011
110 0 0 1 0 0D0000012
110 7 0 0 0 0 0 000010000D0000013
110 0 0 1 0 0D0000014
110 8 0 0 0 0 0 000010000D0000015
110 0 0 1 0 0D0000016
110 9 0 0 0 0 0 000010000D0000017
110 0 0 1 0 0D0000018
144 10 0 0 0 0 0 000020000D0000019
144 0 0 1 0 0D0000020
108 11 0 0 0 0 0 000010000D0000021
108 0 0 1 0 0D0000022
142 12 0 0 0 0 0 000010500D0000023
142 0 0 1 0 0D0000024
102 13 0 0 0 0 0 000010000D0000025
102 0 0 1 0 0D0000026
110 14 0 0 0 0 0 000010000D0000027
110 0 0 1 0 0D0000028
110 15 0 0 0 0 0 000010000D0000029
110 0 0 1 0 0D0000030
110 16 0 0 0 0 0 000010000D0000031
110 0 0 1 0 0D0000032
110 17 0 0 0 0 0 000010000D0000033
110 0 0 1 0 0D0000034
144 18 0 0 0 0 0 000020000D0000035
144 0 0 1 0 0D0000036
108 19 0 0 0 0 0 000010000D0000037
108 0 0 1 0 0D0000038
142 20 0 0 0 0 0 000010500D0000039
142 0 0 1 0 0D0000040
102 21 0 0 0 0 0 000010000D0000041
102 0 0 1 0 0D0000042
110 22 0 0 0 0 0 000010000D0000043
110 0 0 1 0 0D0000044
110 23 0 0 0 0 0 000010000D0000045
110 0 0 1 0 0D0000046
110 24 0 0 0 0 0 000010000D0000047
110 0 0 1 0 0D0000048
110 25 0 0 0 0 0 000010000D0000049
110 0 0 1 0 0D0000050
144 26 0 0 0 0 0 000020000D0000051
144 0 0 1 0 0D0000052
108 27 0 0 0 0 0 000010000D0000053
108 0 0 1 0 0D0000054
142 28 0 0 0 0 0 000010500D0000055
142 0 0 1 0 0D0000056
102 29 0 0 0 0 0 000010000D0000057
102 0 0 1 0 0D0000058
110 30 0 0 0 0 0 000010000D0000059
110 0 0 1 0 0D0000060
110 31 0 0 0 0 0 000010000D0000061
110 0 0 1 0 0D0000062
110 32 0 0 0 0 0 000010000D0000063
110 0 0 1 0 0D0000064
110 33 0 0 0 0 0 000010000D0000065
110 0 0 1 0 0D0000066
144 34 0 0 0 0 0 000020000D0000067
144 0 0 1 0 0D0000068
108 35 0 0 0 0 0 000010000D0000069
108 0 0 1 0 0D0000070
142 36 0 0 0 0 0 000010500D0000071
142 0 0 1 0 0D0000072
102 37 0 0 0 0 0 000010000D0000073
102 0 0 1 0 0D0000074
110 38 0 0 0 0 0 000010000D0000075
110 0 0 1 0 0D0000076
110 39 0 0 0 0 0 000010000D0000077
110 0 0 1 0 0D0000078
110 40 0 0 0 0 0 000010000D0000079
110 0 0 1 0 0D0000080
110 41 0 0 0 0 0 000010000D0000081
110 0 0 1 0 0D0000082
144 42 0 0 0 0 0 000020000D0000083
144 0 0 1 0 0D0000084
108 43 0 0 0 0 0 000010000D0000085
108 0 0 1 0 0D0000086
142 44 0 0 0 0 0 000010500D0000087
142 0 0 1 0 0D0000088
102 45 0 0 0 0 0 000010000D0000089
102 0 0 1 0 0D0000090
110 46 0 0 0 0 0 000010000D0000091
110 0 0 1 0 0D0000092
110 47 0 0 0 0 0 000010000D0000093
110 0 0 1 0 0D0000094
110 48 0 0 0 0 0 000010000D0000095
110 0 0 1 0 0D0000096
110 49 0 0 0 0 0 000010000D0000097
110 0 0 1 0 0D0000098
402,6,3,19,35,51,67,83; 0000001P0000001
144,5,1,0,7; 0000003P0000002
108,-1.,-0.,-0.,-0.,0,0.,0.,0.,0.; 0000005P0000003
142,0,5,0,9,2; 0000007P0000004
102,4,11,13,15,17; 0000009P0000005
110,0.,3.,0.,0.,0.,0.; 0000011P0000006
110,0.,0.,0.,0.,0.,4.; 0000013P0000007
110,0.,0.,4.,0.,3.,4.; 0000015P0000008
110,0.,3.,4.,0.,3.,0.; 0000017P0000009
144,21,1,0,23; 0000019P0000010
108,1.,0.,0.,2.,0,2.,0.,0.,0.; 0000021P0000011
142,0,21,0,25,2; 0000023P0000012
102,4,27,29,31,33; 0000025P0000013
110,2.,0.,4.,2.,0.,0.; 0000027P0000014
110,2.,0.,0.,2.,3.,0.; 0000029P0000015
110,2.,3.,0.,2.,3.,4.; 0000031P0000016
110,2.,3.,4.,2.,0.,4.; 0000033P0000017
144,37,1,0,39; 0000035P0000018
108,-0.,-1.,-0.,-0.,0,0.,0.,0.,0.; 0000037P0000019
142,0,37,0,41,2; 0000039P0000020
102,4,43,45,47,49; 0000041P0000021
110,0.,0.,4.,0.,0.,0.; 0000043P0000022
110,0.,0.,0.,2.,0.,0.; 0000045P0000023
110,2.,0.,0.,2.,0.,4.; 0000047P0000024
110,2.,0.,4.,0.,0.,4.; 0000049P0000025
144,53,1,0,55; 0000051P0000026
108,0.,1.,0.,3.,0,0.,3.,0.,0.; 0000053P0000027
142,0,53,0,57,2; 0000055P0000028
102,4,59,61,63,65; 0000057P0000029
110,2.,3.,0.,0.,3.,0.; 0000059P0000030
110,0.,3.,0.,0.,3.,4.; 0000061P0000031
110,0.,3.,4.,2.,3.,4.; 0000063P0000032
110,2.,3.,4.,2.,3.,0.; 0000065P0000033
144,69,1,0,71; 0000067P0000034
108,-0.,-0.,-1.,-0.,0,0.,0.,0.,0.; 0000069P0000035
142,0,69,0,73,2; 0000071P0000036
102,4,75,77,79,81; 0000073P0000037
110,2.,0.,0.,0.,0.,0.; 0000075P0000038
110,0.,0.,0.,0.,3.,0.; 0000077P0000039
110,0.,3.,0.,2.,3.,0.; 0000079P0000040
110,2.,3.,0.,2.,0.,0.; 0000081P0000041
144,85,1,0,87; 0000083P0000042
108,0.,0.,1.,4.,0,0.,0.,4.,0.; 0000085P0000043
142,0,85,0,89,2; 0000087P0000044
102,4,91,93,95,97; 0000089P0000045
110,0.,3.,4.,0.,0.,4.; 0000091P0000046
110,0.,0.,4.,2.,0.,4.; 0000093P0000047
110,2.,0.,4.,2.,3.,4.; 0000095P0000048
110,2.,3.,4.,0.,3.,4.; 0000097P0000049
S 1G 4D 98P 49 T0000001

View File

@@ -0,0 +1,187 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('FreeCAD Model'),'2;1');
FILE_NAME('Open CASCADE Shape Model','2026-09-16T00:06:40',('FreeCAD'),(
'FreeCAD'),'Open CASCADE STEP processor 7.6','FreeCAD','Unknown');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1 = APPLICATION_PROTOCOL_DEFINITION('international standard',
'automotive_design',2000,#2);
#2 = APPLICATION_CONTEXT(
'core data for automotive mechanical design processes');
#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10);
#4 = PRODUCT_DEFINITION_SHAPE('','',#5);
#5 = PRODUCT_DEFINITION('design','',#6,#9);
#6 = PRODUCT_DEFINITION_FORMATION('','',#7);
#7 = PRODUCT('Open CASCADE STEP translator 7.6 1',
'Open CASCADE STEP translator 7.6 1','',(#8));
#8 = PRODUCT_CONTEXT('',#2,'mechanical');
#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design');
#10 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#15),#165);
#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14);
#12 = CARTESIAN_POINT('',(0.,0.,0.));
#13 = DIRECTION('',(0.,0.,1.));
#14 = DIRECTION('',(1.,0.,-0.));
#15 = MANIFOLD_SOLID_BREP('',#16);
#16 = CLOSED_SHELL('',(#17,#57,#97,#119,#141,#153));
#17 = ADVANCED_FACE('',(#18),#52,.F.);
#18 = FACE_BOUND('',#19,.F.);
#19 = EDGE_LOOP('',(#20,#30,#38,#46));
#20 = ORIENTED_EDGE('',*,*,#21,.F.);
#21 = EDGE_CURVE('',#22,#24,#26,.T.);
#22 = VERTEX_POINT('',#23);
#23 = CARTESIAN_POINT('',(0.,0.,0.));
#24 = VERTEX_POINT('',#25);
#25 = CARTESIAN_POINT('',(0.,0.,4.));
#26 = LINE('',#27,#28);
#27 = CARTESIAN_POINT('',(0.,0.,0.));
#28 = VECTOR('',#29,1.);
#29 = DIRECTION('',(0.,0.,1.));
#30 = ORIENTED_EDGE('',*,*,#31,.T.);
#31 = EDGE_CURVE('',#22,#32,#34,.T.);
#32 = VERTEX_POINT('',#33);
#33 = CARTESIAN_POINT('',(0.,3.,0.));
#34 = LINE('',#35,#36);
#35 = CARTESIAN_POINT('',(0.,0.,0.));
#36 = VECTOR('',#37,1.);
#37 = DIRECTION('',(0.,1.,0.));
#38 = ORIENTED_EDGE('',*,*,#39,.T.);
#39 = EDGE_CURVE('',#32,#40,#42,.T.);
#40 = VERTEX_POINT('',#41);
#41 = CARTESIAN_POINT('',(0.,3.,4.));
#42 = LINE('',#43,#44);
#43 = CARTESIAN_POINT('',(0.,3.,0.));
#44 = VECTOR('',#45,1.);
#45 = DIRECTION('',(0.,0.,1.));
#46 = ORIENTED_EDGE('',*,*,#47,.F.);
#47 = EDGE_CURVE('',#24,#40,#48,.T.);
#48 = LINE('',#49,#50);
#49 = CARTESIAN_POINT('',(0.,0.,4.));
#50 = VECTOR('',#51,1.);
#51 = DIRECTION('',(0.,1.,0.));
#52 = PLANE('',#53);
#53 = AXIS2_PLACEMENT_3D('',#54,#55,#56);
#54 = CARTESIAN_POINT('',(0.,0.,0.));
#55 = DIRECTION('',(1.,0.,0.));
#56 = DIRECTION('',(0.,0.,1.));
#57 = ADVANCED_FACE('',(#58),#92,.T.);
#58 = FACE_BOUND('',#59,.T.);
#59 = EDGE_LOOP('',(#60,#70,#78,#86));
#60 = ORIENTED_EDGE('',*,*,#61,.F.);
#61 = EDGE_CURVE('',#62,#64,#66,.T.);
#62 = VERTEX_POINT('',#63);
#63 = CARTESIAN_POINT('',(2.,0.,0.));
#64 = VERTEX_POINT('',#65);
#65 = CARTESIAN_POINT('',(2.,0.,4.));
#66 = LINE('',#67,#68);
#67 = CARTESIAN_POINT('',(2.,0.,0.));
#68 = VECTOR('',#69,1.);
#69 = DIRECTION('',(0.,0.,1.));
#70 = ORIENTED_EDGE('',*,*,#71,.T.);
#71 = EDGE_CURVE('',#62,#72,#74,.T.);
#72 = VERTEX_POINT('',#73);
#73 = CARTESIAN_POINT('',(2.,3.,0.));
#74 = LINE('',#75,#76);
#75 = CARTESIAN_POINT('',(2.,0.,0.));
#76 = VECTOR('',#77,1.);
#77 = DIRECTION('',(0.,1.,0.));
#78 = ORIENTED_EDGE('',*,*,#79,.T.);
#79 = EDGE_CURVE('',#72,#80,#82,.T.);
#80 = VERTEX_POINT('',#81);
#81 = CARTESIAN_POINT('',(2.,3.,4.));
#82 = LINE('',#83,#84);
#83 = CARTESIAN_POINT('',(2.,3.,0.));
#84 = VECTOR('',#85,1.);
#85 = DIRECTION('',(0.,0.,1.));
#86 = ORIENTED_EDGE('',*,*,#87,.F.);
#87 = EDGE_CURVE('',#64,#80,#88,.T.);
#88 = LINE('',#89,#90);
#89 = CARTESIAN_POINT('',(2.,0.,4.));
#90 = VECTOR('',#91,1.);
#91 = DIRECTION('',(0.,1.,0.));
#92 = PLANE('',#93);
#93 = AXIS2_PLACEMENT_3D('',#94,#95,#96);
#94 = CARTESIAN_POINT('',(2.,0.,0.));
#95 = DIRECTION('',(1.,0.,0.));
#96 = DIRECTION('',(0.,0.,1.));
#97 = ADVANCED_FACE('',(#98),#114,.F.);
#98 = FACE_BOUND('',#99,.F.);
#99 = EDGE_LOOP('',(#100,#106,#107,#113));
#100 = ORIENTED_EDGE('',*,*,#101,.F.);
#101 = EDGE_CURVE('',#22,#62,#102,.T.);
#102 = LINE('',#103,#104);
#103 = CARTESIAN_POINT('',(0.,0.,0.));
#104 = VECTOR('',#105,1.);
#105 = DIRECTION('',(1.,0.,0.));
#106 = ORIENTED_EDGE('',*,*,#21,.T.);
#107 = ORIENTED_EDGE('',*,*,#108,.T.);
#108 = EDGE_CURVE('',#24,#64,#109,.T.);
#109 = LINE('',#110,#111);
#110 = CARTESIAN_POINT('',(0.,0.,4.));
#111 = VECTOR('',#112,1.);
#112 = DIRECTION('',(1.,0.,0.));
#113 = ORIENTED_EDGE('',*,*,#61,.F.);
#114 = PLANE('',#115);
#115 = AXIS2_PLACEMENT_3D('',#116,#117,#118);
#116 = CARTESIAN_POINT('',(0.,0.,0.));
#117 = DIRECTION('',(0.,1.,0.));
#118 = DIRECTION('',(0.,0.,1.));
#119 = ADVANCED_FACE('',(#120),#136,.T.);
#120 = FACE_BOUND('',#121,.T.);
#121 = EDGE_LOOP('',(#122,#128,#129,#135));
#122 = ORIENTED_EDGE('',*,*,#123,.F.);
#123 = EDGE_CURVE('',#32,#72,#124,.T.);
#124 = LINE('',#125,#126);
#125 = CARTESIAN_POINT('',(0.,3.,0.));
#126 = VECTOR('',#127,1.);
#127 = DIRECTION('',(1.,0.,0.));
#128 = ORIENTED_EDGE('',*,*,#39,.T.);
#129 = ORIENTED_EDGE('',*,*,#130,.T.);
#130 = EDGE_CURVE('',#40,#80,#131,.T.);
#131 = LINE('',#132,#133);
#132 = CARTESIAN_POINT('',(0.,3.,4.));
#133 = VECTOR('',#134,1.);
#134 = DIRECTION('',(1.,0.,0.));
#135 = ORIENTED_EDGE('',*,*,#79,.F.);
#136 = PLANE('',#137);
#137 = AXIS2_PLACEMENT_3D('',#138,#139,#140);
#138 = CARTESIAN_POINT('',(0.,3.,0.));
#139 = DIRECTION('',(0.,1.,0.));
#140 = DIRECTION('',(0.,0.,1.));
#141 = ADVANCED_FACE('',(#142),#148,.F.);
#142 = FACE_BOUND('',#143,.F.);
#143 = EDGE_LOOP('',(#144,#145,#146,#147));
#144 = ORIENTED_EDGE('',*,*,#31,.F.);
#145 = ORIENTED_EDGE('',*,*,#101,.T.);
#146 = ORIENTED_EDGE('',*,*,#71,.T.);
#147 = ORIENTED_EDGE('',*,*,#123,.F.);
#148 = PLANE('',#149);
#149 = AXIS2_PLACEMENT_3D('',#150,#151,#152);
#150 = CARTESIAN_POINT('',(0.,0.,0.));
#151 = DIRECTION('',(0.,0.,1.));
#152 = DIRECTION('',(1.,0.,0.));
#153 = ADVANCED_FACE('',(#154),#160,.T.);
#154 = FACE_BOUND('',#155,.T.);
#155 = EDGE_LOOP('',(#156,#157,#158,#159));
#156 = ORIENTED_EDGE('',*,*,#47,.F.);
#157 = ORIENTED_EDGE('',*,*,#108,.T.);
#158 = ORIENTED_EDGE('',*,*,#87,.T.);
#159 = ORIENTED_EDGE('',*,*,#130,.F.);
#160 = PLANE('',#161);
#161 = AXIS2_PLACEMENT_3D('',#162,#163,#164);
#162 = CARTESIAN_POINT('',(0.,0.,4.));
#163 = DIRECTION('',(0.,0.,1.));
#164 = DIRECTION('',(1.,0.,0.));
#165 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3)
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#169)) GLOBAL_UNIT_ASSIGNED_CONTEXT
((#166,#167,#168)) REPRESENTATION_CONTEXT('Context #1',
'3D Context with UNIT and UNCERTAINTY') );
#166 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#167 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#168 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#169 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#166,
'distance_accuracy_value','confusion accuracy');
#170 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7));
ENDSEC;
END-ISO-10303-21;

View File

@@ -0,0 +1,86 @@
solid
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
outer loop
vertex 0.000000e+00 0.000000e+00 4.000000e+00
vertex 0.000000e+00 3.000000e+00 0.000000e+00
vertex 0.000000e+00 0.000000e+00 0.000000e+00
endloop
endfacet
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
outer loop
vertex 0.000000e+00 0.000000e+00 4.000000e+00
vertex 0.000000e+00 3.000000e+00 4.000000e+00
vertex 0.000000e+00 3.000000e+00 0.000000e+00
endloop
endfacet
facet normal 1.000000e+00 0.000000e+00 0.000000e+00
outer loop
vertex 2.000000e+00 0.000000e+00 4.000000e+00
vertex 2.000000e+00 0.000000e+00 0.000000e+00
vertex 2.000000e+00 3.000000e+00 0.000000e+00
endloop
endfacet
facet normal 1.000000e+00 -0.000000e+00 0.000000e+00
outer loop
vertex 2.000000e+00 0.000000e+00 4.000000e+00
vertex 2.000000e+00 3.000000e+00 0.000000e+00
vertex 2.000000e+00 3.000000e+00 4.000000e+00
endloop
endfacet
facet normal 0.000000e+00 -1.000000e+00 -0.000000e+00
outer loop
vertex 2.000000e+00 0.000000e+00 4.000000e+00
vertex 0.000000e+00 0.000000e+00 0.000000e+00
vertex 2.000000e+00 0.000000e+00 0.000000e+00
endloop
endfacet
facet normal -0.000000e+00 -1.000000e+00 0.000000e+00
outer loop
vertex 2.000000e+00 0.000000e+00 4.000000e+00
vertex 0.000000e+00 0.000000e+00 4.000000e+00
vertex 0.000000e+00 0.000000e+00 0.000000e+00
endloop
endfacet
facet normal 0.000000e+00 1.000000e+00 0.000000e+00
outer loop
vertex 2.000000e+00 3.000000e+00 4.000000e+00
vertex 2.000000e+00 3.000000e+00 0.000000e+00
vertex 0.000000e+00 3.000000e+00 0.000000e+00
endloop
endfacet
facet normal 0.000000e+00 1.000000e+00 0.000000e+00
outer loop
vertex 2.000000e+00 3.000000e+00 4.000000e+00
vertex 0.000000e+00 3.000000e+00 0.000000e+00
vertex 0.000000e+00 3.000000e+00 4.000000e+00
endloop
endfacet
facet normal -0.000000e+00 0.000000e+00 -1.000000e+00
outer loop
vertex 2.000000e+00 3.000000e+00 0.000000e+00
vertex 0.000000e+00 0.000000e+00 0.000000e+00
vertex 0.000000e+00 3.000000e+00 0.000000e+00
endloop
endfacet
facet normal 0.000000e+00 -0.000000e+00 -1.000000e+00
outer loop
vertex 2.000000e+00 3.000000e+00 0.000000e+00
vertex 2.000000e+00 0.000000e+00 0.000000e+00
vertex 0.000000e+00 0.000000e+00 0.000000e+00
endloop
endfacet
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
outer loop
vertex 2.000000e+00 3.000000e+00 4.000000e+00
vertex 0.000000e+00 3.000000e+00 4.000000e+00
vertex 0.000000e+00 0.000000e+00 4.000000e+00
endloop
endfacet
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
outer loop
vertex 2.000000e+00 3.000000e+00 4.000000e+00
vertex 0.000000e+00 0.000000e+00 4.000000e+00
vertex 2.000000e+00 0.000000e+00 4.000000e+00
endloop
endfacet
endsolid

View File

@@ -0,0 +1,257 @@
[
{
"format": "step",
"file": "/home/mes123456/FreeCADWasmDev/working/FreeCAD/docs/current/user-tests-20260915/manual-2026-09-15T16-06-38-026Z/downloads/Box1.step",
"sha256": "a680fd5f37395a50fa26e442a75991b990c4d700fc209d282991adb13e43aabb",
"supported": true,
"imported": true,
"volume": 24,
"bounds": [
0,
0,
0,
2,
3,
4
]
},
{
"format": "iges",
"file": "/home/mes123456/FreeCADWasmDev/working/FreeCAD/docs/current/user-tests-20260915/manual-2026-09-15T16-06-38-026Z/downloads/Box1.iges",
"sha256": "8cfdbabf045b5af130aa99b45509ece9a129964ce1152484f991034e9f377f63",
"supported": true,
"imported": true,
"volume": 24,
"bounds": [
0,
0,
0,
2,
3,
4
]
},
{
"format": "brep",
"file": "/home/mes123456/FreeCADWasmDev/working/FreeCAD/docs/current/user-tests-20260915/manual-2026-09-15T16-06-38-026Z/downloads/Box1.brep",
"sha256": "4f6f1036d78a51fe3877703aee0262b7bdfc1c157079607d6588dc98a9bf5821",
"supported": true,
"imported": true,
"volume": 24,
"bounds": [
0,
0,
0,
2,
3,
4
]
},
{
"format": "stl",
"file": "/home/mes123456/FreeCADWasmDev/working/FreeCAD/docs/current/user-tests-20260915/manual-2026-09-15T16-06-38-026Z/downloads/Box1.stl",
"sha256": "548c0d4d290af2e202cf2745e70e4398b88c760f9a8fd6b22af66e4a6ec71ac7",
"supported": true,
"imported": true,
"volume": 24,
"bounds": [
0,
0,
0,
2,
3,
4
]
},
{
"format": "dxf",
"file": "/home/mes123456/FreeCADWasmDev/working/FreeCAD/freecad-source/src/Mod/OpenSCAD/OpenSCADTest/data/Square.dxf",
"sha256": "1d64c18cb383bdfd92cfd0528a66b0596e6e546a97a24ef6887a5d11eda9cd6a",
"supported": true,
"imported": true,
"result": {
"direction": "import",
"documentId": "DxfValidation",
"format": "dxf",
"objectCount": 8,
"objects": [
{
"label": "0",
"objectHandle": "Layer",
"objectType": "App::FeaturePython"
},
{
"label": "Layers",
"objectHandle": "LayerContainer",
"objectType": "App::DocumentObjectGroupPython"
},
{
"label": "none",
"objectHandle": "Layer001",
"objectType": "App::FeaturePython"
},
{
"label": "Sketch",
"objectHandle": "Layer002",
"objectType": "App::FeaturePython"
},
{
"area": 0,
"isNull": false,
"label": "Shape",
"length": 10,
"objectHandle": "Shape",
"objectType": "Part::Feature",
"volume": 0
},
{
"area": 0,
"isNull": false,
"label": "Shape001",
"length": 10,
"objectHandle": "Shape001",
"objectType": "Part::Feature",
"volume": 0
},
{
"area": 0,
"isNull": false,
"label": "Shape002",
"length": 10,
"objectHandle": "Shape002",
"objectType": "Part::Feature",
"volume": 0
},
{
"area": 0,
"isNull": false,
"label": "Shape003",
"length": 10,
"objectHandle": "Shape003",
"objectType": "Part::Feature",
"volume": 0
}
],
"payload": null,
"recomputed": true,
"resourceReleased": true
}
},
{
"format": "obj",
"file": "FreeCADBaseLib/sources/src/Qt-5.15.13/qt3d/src/3rdparty/assimp/src/test/models/OBJ/box_without_lineending.obj",
"sha256": "df2dc98bacc8cb65f8ec63a087342b803a2144693974c7336047daf6f69d6de4",
"supported": true,
"imported": true,
"result": {
"activeDocument": "Unnamed",
"command": "Std_Open",
"documentId": "workbench-document",
"errors": [],
"formats": [
{
"extension": "FCStd",
"modules": [
"FreeCAD"
]
},
{
"extension": "BREP",
"modules": [
"Part"
]
},
{
"extension": "BRP",
"modules": [
"Part"
]
},
{
"extension": "IFC",
"modules": [
"IfcOpenShellNative"
]
},
{
"extension": "IGES",
"modules": [
"Part"
]
},
{
"extension": "IGS",
"modules": [
"Part"
]
},
{
"extension": "OBJ",
"modules": [
"Mesh"
]
},
{
"extension": "brep",
"modules": [
"Part"
]
},
{
"extension": "brp",
"modules": [
"Part"
]
},
{
"extension": "ifc",
"modules": [
"IfcOpenShellNative"
]
},
{
"extension": "iges",
"modules": [
"Part"
]
},
{
"extension": "igs",
"modules": [
"Part"
]
},
{
"extension": "obj",
"modules": [
"Mesh"
]
}
],
"opened": [
{
"documents": [
{
"filename": "",
"label": "Unnamed",
"name": "Unnamed",
"objectCount": 1,
"partialRestore": false,
"restoreError": false
}
],
"filename": "box_without_lineending.obj",
"reused": false,
"sha256": "df2dc98bacc8cb65f8ec63a087342b803a2144693974c7336047daf6f69d6de4"
}
],
"operation": "open",
"storedFiles": [
{
"key": "df2dc98bacc8cb65f8ec63a087342b803a2144693974c7336047daf6f69d6de4/box_without_lineending.obj",
"filename": "box_without_lineending.obj"
}
]
}
}
]

View File

@@ -0,0 +1,223 @@
# Web FreeCAD 用户实际验证与上线手册
版本:1.0
日期:2026-09-15
适用对象:试用用户、业务验收人员、上线值守人员
## 1. 验证原则
本手册验证 Web FreeCAD 的实际可用性,不替代源码审查。几何算法必须由 OCCT WASM 完成,Three.js 只负责显示。验证人员应记录实际结果,不因界面显示正常而推断模型算法正确。
## 2. 环境与启动
1. 使用最新版 Chrome、Edge 或 Firefox,启用 WebAssembly、Web Worker、IndexedDB/OPFS。
2. 解压发布目录,确认 `index.html`、`kernel/FreeCADWebKernel.wasm`、`kernel/FreeCADWebKernel.js` 和 `modules/manifest.json` 存在。
3. 通过 HTTP(S) 服务访问,不要直接双击 `file://`。例如在 `web/dist` 执行 `python3 -m http.server 8080`,浏览器打开 `http://localhost:8080/`。
4. 打开开发者工具 Console,确认无启动异常;Network 中确认 WASM 和模块请求返回 200。
5. 记录浏览器版本、操作系统、屏幕分辨率和测试日期。
## 3. 启动与界面烟测
1. 首次打开应出现项目工作区、文档标签、模型树、属性区和 Three.js 视口。
2. 新建两个文档,切换标签,确认活动文档唯一且模型树互不串扰。
3. 刷新页面,确认应用可以重新启动;若存在恢复提示,记录提示内容。
4. 切换 Part、PartDesign、Sketcher、Draft、BIM、TechDraw、Mesh、FEM、CAM、Spreadsheet、Inspection、Robot、Assembly、Web、Python 等工作台入口,确认页面可进入且无白屏。
5. 改变视口尺寸,执行旋转、平移、缩放、适合视图,确认只影响显示,不改变模型数据。
## 4. 基础建模与 OCCT 几何验证
1. 新建文档,创建 Part Box,输入长度 2、宽度 3、高度 4,应用并重算。
2. 检查属性值和模型树对象名称;若界面提供体积信息,应为约 24。
3. 创建第二个基本体,移动或改变尺寸,确认两个对象同时显示且互不覆盖数据。
4. 执行撤销、重做,确认事务前后属性和模型树一致。
5. 选择对象并删除,再撤销删除;确认选择状态、树节点和视口同步。
6. 对可用的布尔、变换、复制、链接、分组命令各执行一次,确认结果来自 WASM 返回的几何/文档数据,而不是前端生成的替代几何。
## 5. 文档、属性与事务
1. 在模型树选择对象,逐项查看属性;修改长度、角度、颜色、可见性和标签。
2. 点击应用/重算,确认修改后的值保留;取消编辑,确认未提交值不污染文档。
3. 使用复制、剪切、粘贴、删除、选择全部、依赖关系、表达式(如界面提供)并记录结果。
4. 连续执行三次修改后逐级撤销,再逐级重做,确认事务顺序正确。
5. 在两个文档之间切换,确认属性面板始终对应当前活动文档。
## 6. 文件导入、导出、保存与重开
1. 导入示例 STEP 文件,等待 Worker 返回网格,确认模型树对象出现、视口有三角网格且无 NaN/空白。
2. 依次尝试项目支持的 FCStd、STEP、IGES、BREP、STL、OBJ、DXF、IFC 等格式;对不支持格式应显示明确错误,不得静默成功。
3. 保存为 FCStd,确认下载文件或 OPFS 文件列表出现。
4. 修改模型后再次保存,确认文件大小/修改时间变化;关闭文档并重新打开,确认对象数量、标签和关键属性恢复。
5. 导出 STL/网格格式后,用外部查看器检查文件可读;再次导入并比较包围盒、面数或体积(允许记录格式误差)。
6. 浏览器刷新后从 OPFS 选择文档打开,确认持久化恢复;清理站点数据后应明确提示文档已不存在。
## 7. 模型树、链接与结构
1. 创建 Part、VarSet 或等效结构对象,确认树层级、Tip 和选择分组正确。
2. 创建对象链接/子链接,替换链接目标,再解除链接;检查事务、树显示和视口结果。
3. 执行分组、解组、克隆/取消克隆(模块提供时),确认原对象和新对象的生命周期明确。
4. 在结构操作后保存、重开,确认链接关系没有变成空引用。
## 8. 各功能模块验证矩阵
对每个模块至少执行“进入—创建/读取—修改—保存/返回”一条链路,并记录不适用项:
| 模块 | 最低验证动作 |
|---|---|
| Part/PartDesign | 基本体、特征、重算、属性修改 |
| Sketcher | 创建草图/几何约束,退出编辑并保存 |
| Draft/BIM | 创建对象、层级/关系、可见性和窗口焦点 |
| TechDraw | 创建页面/视图,检查页面对象和导出入口 |
| Mesh/STL | 导入网格、显示、导出并重开 |
| Import/STEP/IGES | 导入、生成网格、保存 FCStd |
| FEM/CAM | 打开任务面板,创建可用任务或显示明确依赖提示 |
| Spreadsheet | 新建表格、编辑单元格、表达式/保存 |
| Inspection/Measure | 选择几何、执行测量、读取结果 |
| Assembly/Robot | 创建或读取装配/机器人对象,检查树和变换 |
| Surface/ReverseEngineering | 创建/读取曲面对象,检查属性和显示 |
| OpenSCAD/TemplatePyMod/Python | 执行支持的脚本/导入流程,记录依赖提示 |
| Web/Cloud/Sandbox | 初始化、请求、取消、错误恢复和持久化 |
| Std 命令 | 新建、打开、保存、撤销/重做、工作台和视图命令 |
源语义定义为空操作的 `Std_Test5/6` 等命令,应记录“按桌面语义无业务副作用”,不能判定为缺失。
## 9. Worker、取消与错误恢复
1. 发起一个导入或重算操作,操作未完成前点击取消;确认界面回到可操作状态。
2. 重复提交相同请求,确认不会产生重复对象或重复事务。
3. 输入空文件、损坏文件、无效尺寸和不存在路径,确认返回可理解错误码/消息。
4. 错误后立即执行一次正常 Box 创建或打开已有文档,确认 Worker 和 WASM 实例可继续工作。
5. 观察长任务期间页面仍可切换文档;若业务规定串行,应显示忙碌状态而非无限等待。
## 10. 显示与数据一致性
1. 改变颜色、透明度、可见性和视图模式,确认只改变 Three.js 显示对象。
2. 隐藏/显示对象后保存并重开,按产品定义检查可见性是否持久化。
3. 选中模型树节点,确认视口高亮对象与节点一致;删除后不得残留孤立网格。
4. 检查大模型加载时内存和帧率,记录浏览器 Console 的 WebGL/WASM 警告。
## 11. 上线前准入标准
- 启动、模块加载、WASM 内核烟测全部通过。
- 核心 Part Box、STEP 导入、FCStd 保存/重开、OPFS 恢复链路通过。
- 所有模块入口可达;不支持能力返回明确提示。
- 几何边界审计无发现,Three.js 未进入 Facade/Worker 算法层。
- 关键错误可恢复,无持续空转、重复请求或页面死锁。
- 所有失败项均有复现步骤、日志、截图和责任人;未验证项不得标记为“通过”。
## 12. 缺陷记录模板
记录:日期、浏览器/系统、URL、模块、命令、输入文件 SHA-256、操作步骤、预期、实际、错误消息、Console/Network 日志、截图、是否可重现、严重级别和处理结论。
严重级别:P0(无法启动/数据损坏)、P1(核心建模或保存失败)、P2(单模块功能异常)、P3(显示或文案问题)。P0/P1 未关闭不得上线。
## 13. 已完成自动烟测与用户验证边界
自动烟测已覆盖 WASM 版本、OCCT Box 体积/包围盒、STEP 网格生成与清理、几何边界审计和 Vite 生产打包。浏览器兼容性、真实业务数据、性能容量和最终验收必须由用户按本手册执行并签字确认。
## 14. 逐项执行记录规则
每项测试均按“准备—操作—观察—判定—记录”五步执行。预期结果全部满足记为通过;任一步骤异常记为失败,不得用“基本正常”代替。每项记录测试编号、开始/结束时间、文档名、输入文件、浏览器、实际结果和截图路径。
## 15. 启动与界面逐步测试
### UI-01 首次启动
准备:清空该站点缓存后打开根 URL。操作:等待首页完全加载,观察 Console 和 Network。预期:页面在 30 秒内显示工作区;`FreeCADWebKernel.js/wasm`、`modules/manifest.json` 返回 200;无未捕获异常。失败:白屏、循环加载、WASM 404 或未捕获异常。
### UI-02 文档标签隔离
操作:新建文档 A、B;在 A 创建 Box,在 B 创建不同尺寸 Box;来回切换标签。预期:模型树、属性和视口只显示当前文档内容,修改 A 不改变 B。失败:对象串文档、活动标签错误或切换后树为空。
### UI-03 工作台入口
操作:依次点击各工作台入口,等待每页首屏;返回首页后重复一次。预期:每个入口可达,无白屏;不可用功能显示明确依赖/能力提示。失败:路由 404、加载卡死或静默无响应。
### UI-04 视口交互
操作:在有模型文档中拖拽旋转、滚轮缩放、中键平移、点击适合视图,再调整浏览器窗口大小。预期:模型连续显示、无明显残影,模型数据和属性不变。失败:交互导致模型数据变化、视口崩溃或出现孤立网格。
## 16. 几何与建模逐步测试
### GEO-01 Box 参数与重算
操作:新建文档→Part→Box;输入 2、3、4→应用/重算;读取属性和体积。预期:体积约 24,包围盒约 `[0,0,0]-[2,3,4]`,树中只有一个对象。失败:数值错误、重算失败或体积为空。
### GEO-02 参数修改事务
操作:将长度改为 5→应用;再改为 7→取消;执行撤销、重做各一次。预期:取消后仍为 5;撤销回到 5 之前状态,重做恢复 5;事务顺序稳定。失败:取消仍写入、撤销越界或重做产生重复对象。
### GEO-03 多对象与布尔
操作:创建两个基本体→移动使其相交→执行可用布尔操作→重算。预期:结果对象可选、可见、可保存;原对象处理符合界面语义。失败:前端生成替代几何、结果无拓扑或保存后丢失。
### GEO-04 选择与删除恢复
操作:框选/树选对象→删除→撤销删除→再次删除。预期:树、属性、视口同步更新;撤销后对象完整恢复。失败:残留显示、空树节点或选择指向已删除对象。
## 17. 文件流程逐步测试
### FILE-01 STEP 导入
操作:打开示例 STEP→等待导入完成→检查树、面数/体积和视口→保存 FCStd。预期:树出现导入对象,视口有非空三角网格,保存成功。失败:导入超时、空网格、NaN 或保存文件为 0 字节。
### FILE-02 多格式导入
操作:分别导入项目支持的 IGES、BREP、STL、OBJ、DXF、IFC 文件;每次关闭当前文档后再测下一格式。预期:支持格式有明确对象和显示;不支持格式返回明确错误码。失败:格式错投、静默成功或错误后 Worker 无法继续。
### FILE-03 保存与重开
操作:创建并修改 Box→保存 FCStd→关闭→从文件选择器重开→核对对象数量、标签、尺寸。预期:数据与保存前一致。失败:标签丢失、尺寸回退或重开后空文档。
### FILE-04 OPFS 刷新恢复
操作:保存到 OPFS→刷新页面→在 OPFS 列表选择文件→打开。预期:文件仍在列表,文档和对象恢复;清除站点数据后文件消失并给出提示。失败:刷新后列表丢失、恢复串文档或无提示。
### FILE-05 STL 导出回读
操作:导出 STL→下载到本地→重新导入 STL→比较包围盒和面数。预期:文件可读,几何误差在业务容差内。失败:文件损坏、导入空网格或比例明显错误。
## 18. 文档树、属性和链接逐步测试
### DOC-01 属性编辑
操作:选择对象→依次修改标签、颜色、透明度、可见性和尺寸→应用→保存重开。预期:可编辑属性生效;持久化属性重开后保留。失败:界面值与模型值不一致。
### DOC-02 分组与层级
操作:创建 Part/VarSet→将对象加入/移出→设置 Tip→保存重开。预期:层级、Tip、选择范围一致。失败:树层级错乱或对象丢失。
### DOC-03 链接替换与解除
操作:建立对象链接→替换目标→解除链接→分别撤销/重做。预期:每一步事务可回退,解除后无空引用。失败:旧目标残留、链接指向 null 或重开失效。
## 19. 模块逐步测试通用模板
对表格中的每个模块执行:①进入模块;②创建或打开一个最小对象;③修改一个属性;④执行应用/重算;⑤保存并返回;⑥重新进入检查对象。记录“模块、对象、命令、输入、预期、实际、截图”。模块没有对应数据时,使用其自带示例,并将“依赖不可用”记录为环境结果而非通过。
## 20. Worker 与异常恢复逐步测试
### ERR-01 取消
操作:启动较大的导入或重算→立即点击取消→等待状态结束。预期:状态回到可操作,未产生半成品对象。失败:按钮永久忙碌、页面冻结或产生重复对象。
### ERR-02 非法输入
操作:输入空文件、损坏文件、零/负尺寸、不存在路径。预期:显示明确错误,随后可正常创建 Box。失败:崩溃、无限等待或错误后所有命令失效。
### ERR-03 重复请求
操作:连续双击保存/导入/应用按钮。预期:只生成一个事务和一个对象。失败:重复对象、重复文件或状态计数增长两次。
## 21. 性能和上线前逐步测试
### PERF-01 大文件加载
操作:使用小、中、大三组真实文件,分别记录从选择文件到首个可见网格的时间、峰值内存和浏览器帧率。预期:无崩溃、无持续空转;超出限制时给出提示。失败:浏览器无响应或 Worker 泄漏。
### PERF-02 长时间稳定性
操作:连续执行导入→修改→保存→重开循环 20 次,每 5 次刷新页面。预期:无累计错误、对象数不异常增长、OPFS 列表无重复。失败:错误率上升、内存持续增长或恢复失败。
## 22. 最终签署
完成全部编号后,验收人员填写:通过项数/总项数、失败项及 P0/P1 数量、未测项及原因、浏览器范围、测试数据清单、上线建议和签名日期。存在任何 P0/P1 或未解释的空转/阻塞,不得签署上线;P2/P3 须有明确修复计划和负责人。

View File

@@ -0,0 +1,59 @@
# 用户手册执行报告
开始:2026-09-15T16:06:38.034Z
结束:2026-09-15T16:16:55.147Z
结果:{"passed":0,"failed":1,"blocked":0,"running":0}
本轮测试不是全功能验收。通过仅表示本项已执行的断言成立;阻塞、未覆盖内容不能计入通过。32 个模块入口结果不代表 1452 个命令已经验证。
| 编号 | 项目 | 状态 | 秒 | 证据 / 原因 |
|---|---|---|---|---|
| FILE-02 | 多格式导入 | failed | 616.532 | [1](FILE-02-01.png) [2](FILE-02-02.png) [3](FILE-02-03.png) [4](FILE-02-04.png) [5](FILE-02-05.png) [6](FILE-02-06.png) [7](FILE-02-07.png) Error: File handled timeout (600000 ms): null |
## 按步骤执行过程
### FILE-02 多格式导入
1. STEP 原生文件导出及导入 (passed, 3.328s)
预期:有效文件由现有 OCCT 接口生成;导入非空几何,包围盒正确
实际:{"format":"step","file":"/home/mes123456/FreeCADWasmDev/working/FreeCAD/docs/current/user-tests-20260915/manual-2026-09-15T16-06-38-026Z/downloads/Box1.step","sha256":"a680fd5f37395a50fa26e442a75991b990c4d700fc209d282991adb13e43aabb","supported":true,"imported":true,"volume":24,"bounds":[0,0,0,2,3,4]}
[截图](FILE-02-01.png) / [状态](FILE-02-01.json)
2. IGES 原生文件导出及导入 (passed, 2.529s)
预期:有效文件由现有 OCCT 接口生成;导入非空几何,包围盒正确
实际:{"format":"iges","file":"/home/mes123456/FreeCADWasmDev/working/FreeCAD/docs/current/user-tests-20260915/manual-2026-09-15T16-06-38-026Z/downloads/Box1.iges","sha256":"8cfdbabf045b5af130aa99b45509ece9a129964ce1152484f991034e9f377f63","supported":true,"imported":true,"volume":24,"bounds":[0,0,0,2,3,4]}
[截图](FILE-02-02.png) / [状态](FILE-02-02.json)
3. BREP 原生文件导出及导入 (passed, 2.375s)
预期:有效文件由现有 OCCT 接口生成;导入非空几何,包围盒正确
实际:{"format":"brep","file":"/home/mes123456/FreeCADWasmDev/working/FreeCAD/docs/current/user-tests-20260915/manual-2026-09-15T16-06-38-026Z/downloads/Box1.brep","sha256":"4f6f1036d78a51fe3877703aee0262b7bdfc1c157079607d6588dc98a9bf5821","supported":true,"imported":true,"volume":24,"bounds":[0,0,0,2,3,4]}
[截图](FILE-02-03.png) / [状态](FILE-02-03.json)
4. STL 原生文件导出及导入 (passed, 2.52s)
预期:有效文件由现有 OCCT 接口生成;导入非空几何,包围盒正确
实际:{"format":"stl","file":"/home/mes123456/FreeCADWasmDev/working/FreeCAD/docs/current/user-tests-20260915/manual-2026-09-15T16-06-38-026Z/downloads/Box1.stl","sha256":"548c0d4d290af2e202cf2745e70e4398b88c760f9a8fd6b22af66e4a6ec71ac7","supported":true,"imported":true,"volume":24,"bounds":[0,0,0,2,3,4]}
[截图](FILE-02-04.png) / [状态](FILE-02-04.json)
5. DXF 本地桌面样本导入 (passed, 2.965s)
预期:复用桌面 DXF 导入链路,非空原生对象
实际:{"direction":"import","documentId":"DxfValidation","format":"dxf","objectCount":8,"objects":[{"label":"0","objectHandle":"Layer","objectType":"App::FeaturePython"},{"label":"Layers","objectHandle":"LayerContainer","objectType":"App::DocumentObjectGroupPython"},{"label":"none","objectHandle":"Layer001","objectType":"App::FeaturePython"},{"label":"Sketch","objectHandle":"Layer002","objectType":"App::FeaturePython"},{"area":0,"isNull":false,"label":"Shape","length":10,"objectHandle":"Shape","objectType":"Part::Feature","volume":0},{"area":0,"isNull":false,"label":"Shape001","length":10,"objectHandle":"Shape001","objectType":"Part::Feature","volume":0},{"area":0,"isNull":false,"label":"Shape002","length":10,"objectHandle":"Shape002","objectType":"Part::Feature","volume":0},{"area":0,"isNull":false,"label":"Shape003","length":10,"objectHandle":"Shape003","objectType":"Part::Feature","volume":0}],"payload":null,"recomputed":true,"resourceReleased":true}
[截图](FILE-02-05.png) / [状态](FILE-02-05.json)
6. OBJ 实际注册能力及文件处理 (passed, 1.055s)
预期:支持则完整导入;依赖或登记缺口记录失败,不伪装支持
实际:{"activeDocument":"Unnamed","command":"Std_Open","documentId":"workbench-document","errors":[],"formats":[{"extension":"FCStd","modules":["FreeCAD"]},{"extension":"BREP","modules":["Part"]},{"extension":"BRP","modules":["Part"]},{"extension":"IFC","modules":["IfcOpenShellNative"]},{"extension":"IGES","modules":["Part"]},{"extension":"IGS","modules":["Part"]},{"extension":"OBJ","modules":["Mesh"]},{"extension":"brep","modules":["Part"]},{"extension":"brp","modules":["Part"]},{"extension":"ifc","modules":["IfcOpenShellNative"]},{"extension":"iges","modules":["Part"]},{"extension":"igs","modules":["Part"]},{"extension":"obj","modules":["Mesh"]}],"opened":[{"documents":[{"filename":"","label":"Unnamed","name":"Unnamed","objectCount":1,"partialRestore":false,"restoreError":false}],"filename":"box_without_lineending.obj","reused":false,"sha256":"df2dc98bacc8cb65f8ec63a087342b803a2144693974c7336047daf6f69d6de4"}],"operation":"open","storedFiles":[{"key":"df2dc98bacc8cb65f8ec63a087342b803a2144693974c7336047daf6f69d6de4/box_without_lineending.obj","filename":"box_without_lineending.obj"}]}
[截图](FILE-02-06.png) / [状态](FILE-02-06.json)
7. IFC 实际注册能力及文件处理 (failed, 600.344s)
预期:支持则完整导入;依赖或登记缺口记录失败,不伪装支持
实际:"Error: File handled timeout (600000 ms): null"
[截图](FILE-02-07.png) / [状态](FILE-02-07.json)
## 管理与后续
输入手册快照:manual-snapshot.md;结构化结果:results.json;断点:checkpoint.json;浏览器与网络:events.json;环境指纹:environment.json。
隔离 Chrome 配置保留在 /tmp/freecad-user-manual-wO84Kf,仅含本次测试数据。没有清理真实用户站点。
运行同一脚本会创建新的时间戳目录,不覆盖历史证据。FREECAD_MANUAL_IDS 可按逗号指定需要复测的编号。测试中没有更改应用实现或验收登记。

View File

@@ -0,0 +1,357 @@
{
"startedAt": "2026-09-15T16:06:38.034Z",
"updatedAt": "2026-09-15T16:16:55.147Z",
"current": null,
"origin": "http://127.0.0.1:44077",
"profile": "/tmp/freecad-user-manual-wO84Kf",
"scope": "Manual browser tests, not proof of all 1452 registered commands",
"results": [
{
"id": "FILE-02",
"title": "多格式导入",
"status": "failed",
"steps": [
{
"number": 1,
"name": "STEP 原生文件导出及导入",
"expected": "有效文件由现有 OCCT 接口生成;导入非空几何,包围盒正确",
"status": "passed",
"startedAt": "2026-09-15T16:06:38.466Z",
"actual": {
"format": "step",
"file": "/home/mes123456/FreeCADWasmDev/working/FreeCAD/docs/current/user-tests-20260915/manual-2026-09-15T16-06-38-026Z/downloads/Box1.step",
"sha256": "a680fd5f37395a50fa26e442a75991b990c4d700fc209d282991adb13e43aabb",
"supported": true,
"imported": true,
"volume": 24,
"bounds": [
0,
0,
0,
2,
3,
4
]
},
"seconds": 3.328,
"evidence": {
"state": "FILE-02-01.json",
"screenshot": "FILE-02-01.png",
"viewportScreenshot": "FILE-02-01-viewport.png",
"screenshotSha256": "ed5e0939850ec9d203b2178bb4823c1c27f9ee6efa6073892f528e3e86301683"
}
},
{
"number": 2,
"name": "IGES 原生文件导出及导入",
"expected": "有效文件由现有 OCCT 接口生成;导入非空几何,包围盒正确",
"status": "passed",
"startedAt": "2026-09-15T16:06:42.064Z",
"actual": {
"format": "iges",
"file": "/home/mes123456/FreeCADWasmDev/working/FreeCAD/docs/current/user-tests-20260915/manual-2026-09-15T16-06-38-026Z/downloads/Box1.iges",
"sha256": "8cfdbabf045b5af130aa99b45509ece9a129964ce1152484f991034e9f377f63",
"supported": true,
"imported": true,
"volume": 24,
"bounds": [
0,
0,
0,
2,
3,
4
]
},
"seconds": 2.529,
"evidence": {
"state": "FILE-02-02.json",
"screenshot": "FILE-02-02.png",
"viewportScreenshot": "FILE-02-02-viewport.png",
"screenshotSha256": "723d028e943e1ef7727169b50519095a78eb85a2e784f19cad6de55089aa465b"
}
},
{
"number": 3,
"name": "BREP 原生文件导出及导入",
"expected": "有效文件由现有 OCCT 接口生成;导入非空几何,包围盒正确",
"status": "passed",
"startedAt": "2026-09-15T16:06:44.810Z",
"actual": {
"format": "brep",
"file": "/home/mes123456/FreeCADWasmDev/working/FreeCAD/docs/current/user-tests-20260915/manual-2026-09-15T16-06-38-026Z/downloads/Box1.brep",
"sha256": "4f6f1036d78a51fe3877703aee0262b7bdfc1c157079607d6588dc98a9bf5821",
"supported": true,
"imported": true,
"volume": 24,
"bounds": [
0,
0,
0,
2,
3,
4
]
},
"seconds": 2.375,
"evidence": {
"state": "FILE-02-03.json",
"screenshot": "FILE-02-03.png",
"viewportScreenshot": "FILE-02-03-viewport.png",
"screenshotSha256": "a1f487d9c7a279d7fbc155e3eb525f7461506ab4f78f3b014566e8d891037ea6"
}
},
{
"number": 4,
"name": "STL 原生文件导出及导入",
"expected": "有效文件由现有 OCCT 接口生成;导入非空几何,包围盒正确",
"status": "passed",
"startedAt": "2026-09-15T16:06:47.409Z",
"actual": {
"format": "stl",
"file": "/home/mes123456/FreeCADWasmDev/working/FreeCAD/docs/current/user-tests-20260915/manual-2026-09-15T16-06-38-026Z/downloads/Box1.stl",
"sha256": "548c0d4d290af2e202cf2745e70e4398b88c760f9a8fd6b22af66e4a6ec71ac7",
"supported": true,
"imported": true,
"volume": 24,
"bounds": [
0,
0,
0,
2,
3,
4
]
},
"seconds": 2.52,
"evidence": {
"state": "FILE-02-04.json",
"screenshot": "FILE-02-04.png",
"viewportScreenshot": "FILE-02-04-viewport.png",
"screenshotSha256": "d9ad43c55b0bb151c12977f02f731fd795b7d1540bbe7834106f275bc8d62bc2"
}
},
{
"number": 5,
"name": "DXF 本地桌面样本导入",
"expected": "复用桌面 DXF 导入链路,非空原生对象",
"status": "passed",
"startedAt": "2026-09-15T16:06:50.142Z",
"actual": {
"direction": "import",
"documentId": "DxfValidation",
"format": "dxf",
"objectCount": 8,
"objects": [
{
"label": "0",
"objectHandle": "Layer",
"objectType": "App::FeaturePython"
},
{
"label": "Layers",
"objectHandle": "LayerContainer",
"objectType": "App::DocumentObjectGroupPython"
},
{
"label": "none",
"objectHandle": "Layer001",
"objectType": "App::FeaturePython"
},
{
"label": "Sketch",
"objectHandle": "Layer002",
"objectType": "App::FeaturePython"
},
{
"area": 0,
"isNull": false,
"label": "Shape",
"length": 10,
"objectHandle": "Shape",
"objectType": "Part::Feature",
"volume": 0
},
{
"area": 0,
"isNull": false,
"label": "Shape001",
"length": 10,
"objectHandle": "Shape001",
"objectType": "Part::Feature",
"volume": 0
},
{
"area": 0,
"isNull": false,
"label": "Shape002",
"length": 10,
"objectHandle": "Shape002",
"objectType": "Part::Feature",
"volume": 0
},
{
"area": 0,
"isNull": false,
"label": "Shape003",
"length": 10,
"objectHandle": "Shape003",
"objectType": "Part::Feature",
"volume": 0
}
],
"payload": null,
"recomputed": true,
"resourceReleased": true
},
"seconds": 2.965,
"evidence": {
"state": "FILE-02-05.json",
"screenshot": "FILE-02-05.png",
"screenshotSha256": "aa75fe857d00aa1251d7b06b956bb8a06067f351fd22dd3f0fde2c3a24ce5f8d"
}
},
{
"number": 6,
"name": "OBJ 实际注册能力及文件处理",
"expected": "支持则完整导入;依赖或登记缺口记录失败,不伪装支持",
"status": "passed",
"startedAt": "2026-09-15T16:06:53.266Z",
"actual": {
"activeDocument": "Unnamed",
"command": "Std_Open",
"documentId": "workbench-document",
"errors": [],
"formats": [
{
"extension": "FCStd",
"modules": [
"FreeCAD"
]
},
{
"extension": "BREP",
"modules": [
"Part"
]
},
{
"extension": "BRP",
"modules": [
"Part"
]
},
{
"extension": "IFC",
"modules": [
"IfcOpenShellNative"
]
},
{
"extension": "IGES",
"modules": [
"Part"
]
},
{
"extension": "IGS",
"modules": [
"Part"
]
},
{
"extension": "OBJ",
"modules": [
"Mesh"
]
},
{
"extension": "brep",
"modules": [
"Part"
]
},
{
"extension": "brp",
"modules": [
"Part"
]
},
{
"extension": "ifc",
"modules": [
"IfcOpenShellNative"
]
},
{
"extension": "iges",
"modules": [
"Part"
]
},
{
"extension": "igs",
"modules": [
"Part"
]
},
{
"extension": "obj",
"modules": [
"Mesh"
]
}
],
"opened": [
{
"documents": [
{
"filename": "",
"label": "Unnamed",
"name": "Unnamed",
"objectCount": 1,
"partialRestore": false,
"restoreError": false
}
],
"filename": "box_without_lineending.obj",
"reused": false,
"sha256": "df2dc98bacc8cb65f8ec63a087342b803a2144693974c7336047daf6f69d6de4"
}
],
"operation": "open",
"storedFiles": [
{
"key": "df2dc98bacc8cb65f8ec63a087342b803a2144693974c7336047daf6f69d6de4/box_without_lineending.obj",
"filename": "box_without_lineending.obj"
}
]
},
"seconds": 1.055,
"evidence": {
"state": "FILE-02-06.json",
"screenshot": "FILE-02-06.png",
"screenshotSha256": "d6ded408ed92231229addfaf84dcdf214e2d4692b4fd82fd9029f4fba8dddba8"
}
},
{
"number": 7,
"name": "IFC 实际注册能力及文件处理",
"expected": "支持则完整导入;依赖或登记缺口记录失败,不伪装支持",
"status": "failed",
"startedAt": "2026-09-15T16:06:54.485Z",
"error": "Error: File handled timeout (600000 ms): null",
"seconds": 600.344,
"evidence": {
"state": "FILE-02-07.json",
"screenshot": "FILE-02-07.png",
"screenshotSha256": "92c368d821e35cfb22747f8cee35a1b7bd7971d39890b18e3712216cb1c48a2b"
}
}
],
"startedAt": "2026-09-15T16:06:38.466Z",
"error": "Error: File handled timeout (600000 ms): null",
"seconds": 616.532
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 KiB

View File

@@ -0,0 +1,223 @@
# Web FreeCAD 用户实际验证与上线手册
版本:1.0
日期:2026-09-15
适用对象:试用用户、业务验收人员、上线值守人员
## 1. 验证原则
本手册验证 Web FreeCAD 的实际可用性,不替代源码审查。几何算法必须由 OCCT WASM 完成,Three.js 只负责显示。验证人员应记录实际结果,不因界面显示正常而推断模型算法正确。
## 2. 环境与启动
1. 使用最新版 Chrome、Edge 或 Firefox,启用 WebAssembly、Web Worker、IndexedDB/OPFS。
2. 解压发布目录,确认 `index.html`、`kernel/FreeCADWebKernel.wasm`、`kernel/FreeCADWebKernel.js` 和 `modules/manifest.json` 存在。
3. 通过 HTTP(S) 服务访问,不要直接双击 `file://`。例如在 `web/dist` 执行 `python3 -m http.server 8080`,浏览器打开 `http://localhost:8080/`。
4. 打开开发者工具 Console,确认无启动异常;Network 中确认 WASM 和模块请求返回 200。
5. 记录浏览器版本、操作系统、屏幕分辨率和测试日期。
## 3. 启动与界面烟测
1. 首次打开应出现项目工作区、文档标签、模型树、属性区和 Three.js 视口。
2. 新建两个文档,切换标签,确认活动文档唯一且模型树互不串扰。
3. 刷新页面,确认应用可以重新启动;若存在恢复提示,记录提示内容。
4. 切换 Part、PartDesign、Sketcher、Draft、BIM、TechDraw、Mesh、FEM、CAM、Spreadsheet、Inspection、Robot、Assembly、Web、Python 等工作台入口,确认页面可进入且无白屏。
5. 改变视口尺寸,执行旋转、平移、缩放、适合视图,确认只影响显示,不改变模型数据。
## 4. 基础建模与 OCCT 几何验证
1. 新建文档,创建 Part Box,输入长度 2、宽度 3、高度 4,应用并重算。
2. 检查属性值和模型树对象名称;若界面提供体积信息,应为约 24。
3. 创建第二个基本体,移动或改变尺寸,确认两个对象同时显示且互不覆盖数据。
4. 执行撤销、重做,确认事务前后属性和模型树一致。
5. 选择对象并删除,再撤销删除;确认选择状态、树节点和视口同步。
6. 对可用的布尔、变换、复制、链接、分组命令各执行一次,确认结果来自 WASM 返回的几何/文档数据,而不是前端生成的替代几何。
## 5. 文档、属性与事务
1. 在模型树选择对象,逐项查看属性;修改长度、角度、颜色、可见性和标签。
2. 点击应用/重算,确认修改后的值保留;取消编辑,确认未提交值不污染文档。
3. 使用复制、剪切、粘贴、删除、选择全部、依赖关系、表达式(如界面提供)并记录结果。
4. 连续执行三次修改后逐级撤销,再逐级重做,确认事务顺序正确。
5. 在两个文档之间切换,确认属性面板始终对应当前活动文档。
## 6. 文件导入、导出、保存与重开
1. 导入示例 STEP 文件,等待 Worker 返回网格,确认模型树对象出现、视口有三角网格且无 NaN/空白。
2. 依次尝试项目支持的 FCStd、STEP、IGES、BREP、STL、OBJ、DXF、IFC 等格式;对不支持格式应显示明确错误,不得静默成功。
3. 保存为 FCStd,确认下载文件或 OPFS 文件列表出现。
4. 修改模型后再次保存,确认文件大小/修改时间变化;关闭文档并重新打开,确认对象数量、标签和关键属性恢复。
5. 导出 STL/网格格式后,用外部查看器检查文件可读;再次导入并比较包围盒、面数或体积(允许记录格式误差)。
6. 浏览器刷新后从 OPFS 选择文档打开,确认持久化恢复;清理站点数据后应明确提示文档已不存在。
## 7. 模型树、链接与结构
1. 创建 Part、VarSet 或等效结构对象,确认树层级、Tip 和选择分组正确。
2. 创建对象链接/子链接,替换链接目标,再解除链接;检查事务、树显示和视口结果。
3. 执行分组、解组、克隆/取消克隆(模块提供时),确认原对象和新对象的生命周期明确。
4. 在结构操作后保存、重开,确认链接关系没有变成空引用。
## 8. 各功能模块验证矩阵
对每个模块至少执行“进入—创建/读取—修改—保存/返回”一条链路,并记录不适用项:
| 模块 | 最低验证动作 |
|---|---|
| Part/PartDesign | 基本体、特征、重算、属性修改 |
| Sketcher | 创建草图/几何约束,退出编辑并保存 |
| Draft/BIM | 创建对象、层级/关系、可见性和窗口焦点 |
| TechDraw | 创建页面/视图,检查页面对象和导出入口 |
| Mesh/STL | 导入网格、显示、导出并重开 |
| Import/STEP/IGES | 导入、生成网格、保存 FCStd |
| FEM/CAM | 打开任务面板,创建可用任务或显示明确依赖提示 |
| Spreadsheet | 新建表格、编辑单元格、表达式/保存 |
| Inspection/Measure | 选择几何、执行测量、读取结果 |
| Assembly/Robot | 创建或读取装配/机器人对象,检查树和变换 |
| Surface/ReverseEngineering | 创建/读取曲面对象,检查属性和显示 |
| OpenSCAD/TemplatePyMod/Python | 执行支持的脚本/导入流程,记录依赖提示 |
| Web/Cloud/Sandbox | 初始化、请求、取消、错误恢复和持久化 |
| Std 命令 | 新建、打开、保存、撤销/重做、工作台和视图命令 |
源语义定义为空操作的 `Std_Test5/6` 等命令,应记录“按桌面语义无业务副作用”,不能判定为缺失。
## 9. Worker、取消与错误恢复
1. 发起一个导入或重算操作,操作未完成前点击取消;确认界面回到可操作状态。
2. 重复提交相同请求,确认不会产生重复对象或重复事务。
3. 输入空文件、损坏文件、无效尺寸和不存在路径,确认返回可理解错误码/消息。
4. 错误后立即执行一次正常 Box 创建或打开已有文档,确认 Worker 和 WASM 实例可继续工作。
5. 观察长任务期间页面仍可切换文档;若业务规定串行,应显示忙碌状态而非无限等待。
## 10. 显示与数据一致性
1. 改变颜色、透明度、可见性和视图模式,确认只改变 Three.js 显示对象。
2. 隐藏/显示对象后保存并重开,按产品定义检查可见性是否持久化。
3. 选中模型树节点,确认视口高亮对象与节点一致;删除后不得残留孤立网格。
4. 检查大模型加载时内存和帧率,记录浏览器 Console 的 WebGL/WASM 警告。
## 11. 上线前准入标准
- 启动、模块加载、WASM 内核烟测全部通过。
- 核心 Part Box、STEP 导入、FCStd 保存/重开、OPFS 恢复链路通过。
- 所有模块入口可达;不支持能力返回明确提示。
- 几何边界审计无发现,Three.js 未进入 Facade/Worker 算法层。
- 关键错误可恢复,无持续空转、重复请求或页面死锁。
- 所有失败项均有复现步骤、日志、截图和责任人;未验证项不得标记为“通过”。
## 12. 缺陷记录模板
记录:日期、浏览器/系统、URL、模块、命令、输入文件 SHA-256、操作步骤、预期、实际、错误消息、Console/Network 日志、截图、是否可重现、严重级别和处理结论。
严重级别:P0(无法启动/数据损坏)、P1(核心建模或保存失败)、P2(单模块功能异常)、P3(显示或文案问题)。P0/P1 未关闭不得上线。
## 13. 已完成自动烟测与用户验证边界
自动烟测已覆盖 WASM 版本、OCCT Box 体积/包围盒、STEP 网格生成与清理、几何边界审计和 Vite 生产打包。浏览器兼容性、真实业务数据、性能容量和最终验收必须由用户按本手册执行并签字确认。
## 14. 逐项执行记录规则
每项测试均按“准备—操作—观察—判定—记录”五步执行。预期结果全部满足记为通过;任一步骤异常记为失败,不得用“基本正常”代替。每项记录测试编号、开始/结束时间、文档名、输入文件、浏览器、实际结果和截图路径。
## 15. 启动与界面逐步测试
### UI-01 首次启动
准备:清空该站点缓存后打开根 URL。操作:等待首页完全加载,观察 Console 和 Network。预期:页面在 30 秒内显示工作区;`FreeCADWebKernel.js/wasm`、`modules/manifest.json` 返回 200;无未捕获异常。失败:白屏、循环加载、WASM 404 或未捕获异常。
### UI-02 文档标签隔离
操作:新建文档 A、B;在 A 创建 Box,在 B 创建不同尺寸 Box;来回切换标签。预期:模型树、属性和视口只显示当前文档内容,修改 A 不改变 B。失败:对象串文档、活动标签错误或切换后树为空。
### UI-03 工作台入口
操作:依次点击各工作台入口,等待每页首屏;返回首页后重复一次。预期:每个入口可达,无白屏;不可用功能显示明确依赖/能力提示。失败:路由 404、加载卡死或静默无响应。
### UI-04 视口交互
操作:在有模型文档中拖拽旋转、滚轮缩放、中键平移、点击适合视图,再调整浏览器窗口大小。预期:模型连续显示、无明显残影,模型数据和属性不变。失败:交互导致模型数据变化、视口崩溃或出现孤立网格。
## 16. 几何与建模逐步测试
### GEO-01 Box 参数与重算
操作:新建文档→Part→Box;输入 2、3、4→应用/重算;读取属性和体积。预期:体积约 24,包围盒约 `[0,0,0]-[2,3,4]`,树中只有一个对象。失败:数值错误、重算失败或体积为空。
### GEO-02 参数修改事务
操作:将长度改为 5→应用;再改为 7→取消;执行撤销、重做各一次。预期:取消后仍为 5;撤销回到 5 之前状态,重做恢复 5;事务顺序稳定。失败:取消仍写入、撤销越界或重做产生重复对象。
### GEO-03 多对象与布尔
操作:创建两个基本体→移动使其相交→执行可用布尔操作→重算。预期:结果对象可选、可见、可保存;原对象处理符合界面语义。失败:前端生成替代几何、结果无拓扑或保存后丢失。
### GEO-04 选择与删除恢复
操作:框选/树选对象→删除→撤销删除→再次删除。预期:树、属性、视口同步更新;撤销后对象完整恢复。失败:残留显示、空树节点或选择指向已删除对象。
## 17. 文件流程逐步测试
### FILE-01 STEP 导入
操作:打开示例 STEP→等待导入完成→检查树、面数/体积和视口→保存 FCStd。预期:树出现导入对象,视口有非空三角网格,保存成功。失败:导入超时、空网格、NaN 或保存文件为 0 字节。
### FILE-02 多格式导入
操作:分别导入项目支持的 IGES、BREP、STL、OBJ、DXF、IFC 文件;每次关闭当前文档后再测下一格式。预期:支持格式有明确对象和显示;不支持格式返回明确错误码。失败:格式错投、静默成功或错误后 Worker 无法继续。
### FILE-03 保存与重开
操作:创建并修改 Box→保存 FCStd→关闭→从文件选择器重开→核对对象数量、标签、尺寸。预期:数据与保存前一致。失败:标签丢失、尺寸回退或重开后空文档。
### FILE-04 OPFS 刷新恢复
操作:保存到 OPFS→刷新页面→在 OPFS 列表选择文件→打开。预期:文件仍在列表,文档和对象恢复;清除站点数据后文件消失并给出提示。失败:刷新后列表丢失、恢复串文档或无提示。
### FILE-05 STL 导出回读
操作:导出 STL→下载到本地→重新导入 STL→比较包围盒和面数。预期:文件可读,几何误差在业务容差内。失败:文件损坏、导入空网格或比例明显错误。
## 18. 文档树、属性和链接逐步测试
### DOC-01 属性编辑
操作:选择对象→依次修改标签、颜色、透明度、可见性和尺寸→应用→保存重开。预期:可编辑属性生效;持久化属性重开后保留。失败:界面值与模型值不一致。
### DOC-02 分组与层级
操作:创建 Part/VarSet→将对象加入/移出→设置 Tip→保存重开。预期:层级、Tip、选择范围一致。失败:树层级错乱或对象丢失。
### DOC-03 链接替换与解除
操作:建立对象链接→替换目标→解除链接→分别撤销/重做。预期:每一步事务可回退,解除后无空引用。失败:旧目标残留、链接指向 null 或重开失效。
## 19. 模块逐步测试通用模板
对表格中的每个模块执行:①进入模块;②创建或打开一个最小对象;③修改一个属性;④执行应用/重算;⑤保存并返回;⑥重新进入检查对象。记录“模块、对象、命令、输入、预期、实际、截图”。模块没有对应数据时,使用其自带示例,并将“依赖不可用”记录为环境结果而非通过。
## 20. Worker 与异常恢复逐步测试
### ERR-01 取消
操作:启动较大的导入或重算→立即点击取消→等待状态结束。预期:状态回到可操作,未产生半成品对象。失败:按钮永久忙碌、页面冻结或产生重复对象。
### ERR-02 非法输入
操作:输入空文件、损坏文件、零/负尺寸、不存在路径。预期:显示明确错误,随后可正常创建 Box。失败:崩溃、无限等待或错误后所有命令失效。
### ERR-03 重复请求
操作:连续双击保存/导入/应用按钮。预期:只生成一个事务和一个对象。失败:重复对象、重复文件或状态计数增长两次。
## 21. 性能和上线前逐步测试
### PERF-01 大文件加载
操作:使用小、中、大三组真实文件,分别记录从选择文件到首个可见网格的时间、峰值内存和浏览器帧率。预期:无崩溃、无持续空转;超出限制时给出提示。失败:浏览器无响应或 Worker 泄漏。
### PERF-02 长时间稳定性
操作:连续执行导入→修改→保存→重开循环 20 次,每 5 次刷新页面。预期:无累计错误、对象数不异常增长、OPFS 列表无重复。失败:错误率上升、内存持续增长或恢复失败。
## 22. 最终签署
完成全部编号后,验收人员填写:通过项数/总项数、失败项及 P0/P1 数量、未测项及原因、浏览器范围、测试数据清单、上线建议和签名日期。存在任何 P0/P1 或未解释的空转/阻塞,不得签署上线;P2/P3 须有明确修复计划和负责人。

View File

@@ -0,0 +1,34 @@
# 用户手册执行报告
开始:2026-09-15T16:24:54.261Z
结束:2026-09-15T16:28:32.432Z
结果:{"passed":1,"failed":0,"blocked":0,"running":0}
本轮测试不是全功能验收。通过仅表示本项已执行的断言成立;阻塞、未覆盖内容不能计入通过。32 个模块入口结果不代表 1452 个命令已经验证。
| 编号 | 项目 | 状态 | 秒 | 证据 / 原因 |
|---|---|---|---|---|
| FIX-IFC-REOPEN | IFC 原生文档保存重开回归 | passed | 217.656 | [1](FIX-IFC-REOPEN-01.png) [2](FIX-IFC-REOPEN-02.png) |
## 按步骤执行过程
### FIX-IFC-REOPEN IFC 原生文档保存重开回归
1. 打开实际 IFC 导入后保存的 FCStd (passed, 82.767s)
预期:147 个对象恢复,空间层级及原生几何仍存在,视口非空
实际:{"documentId":"IfcValidation","documents":[{"filename":"/home/web_user/.local/share/FreeCADWeb/v1-2/WebOpenFiles/3ecba28f150859a16685a8c2497076dd1802077c5c285233f0f5235605a6a552/IfcValidation.FCStd","label":"IfcValidation","name":"IfcValidation","objectCount":147,"partialRestore":false,"restoreError":false}],"meshCount":134}
[截图](FIX-IFC-REOPEN-01.png) / [状态](FIX-IFC-REOPEN-01.json)
2. 核对恢复后实体及原始 IFC 附件 (passed, 124.71s)
预期:实体、空间分组、IFC GlobalId 和内嵌源文件保留
实际:{"groups":12,"solids":134,"source":"/home/web_user/.cache/FreeCADWeb/Cache/FreeCADWeb_Doc_63e2369a-ade8-4439-9efb-d207b1019d8c_4a4dab_863658/original.ifc","ids":146}
[截图](FIX-IFC-REOPEN-02.png) / [状态](FIX-IFC-REOPEN-02.json)
## 管理与后续
输入手册快照:manual-snapshot.md;结构化结果:results.json;断点:checkpoint.json;浏览器与网络:events.json;环境指纹:environment.json。
隔离 Chrome 配置保留在 /tmp/freecad-user-manual-jbRpjP,仅含本次测试数据。没有清理真实用户站点。
运行同一脚本会创建新的时间戳目录,不覆盖历史证据。FREECAD_MANUAL_IDS 可按逗号指定需要复测的编号。测试中没有更改应用实现或验收登记。

View File

@@ -0,0 +1,67 @@
{
"startedAt": "2026-09-15T16:24:54.261Z",
"updatedAt": "2026-09-15T16:28:32.432Z",
"current": null,
"origin": "http://127.0.0.1:37245",
"profile": "/tmp/freecad-user-manual-jbRpjP",
"scope": "Manual browser tests, not proof of all 1452 registered commands",
"results": [
{
"id": "FIX-IFC-REOPEN",
"title": "IFC 原生文档保存重开回归",
"status": "passed",
"steps": [
{
"number": 1,
"name": "打开实际 IFC 导入后保存的 FCStd",
"expected": "147 个对象恢复,空间层级及原生几何仍存在,视口非空",
"status": "passed",
"startedAt": "2026-09-15T16:24:54.703Z",
"actual": {
"documentId": "IfcValidation",
"documents": [
{
"filename": "/home/web_user/.local/share/FreeCADWeb/v1-2/WebOpenFiles/3ecba28f150859a16685a8c2497076dd1802077c5c285233f0f5235605a6a552/IfcValidation.FCStd",
"label": "IfcValidation",
"name": "IfcValidation",
"objectCount": 147,
"partialRestore": false,
"restoreError": false
}
],
"meshCount": 134
},
"seconds": 82.767,
"evidence": {
"state": "FIX-IFC-REOPEN-01.json",
"screenshot": "FIX-IFC-REOPEN-01.png",
"viewportScreenshot": "FIX-IFC-REOPEN-01-viewport.png",
"screenshotSha256": "7229855f655f6aa30380081ea52f830bce8ca9db15d7160f4c8950fbcffdeb74"
}
},
{
"number": 2,
"name": "核对恢复后实体及原始 IFC 附件",
"expected": "实体、空间分组、IFC GlobalId 和内嵌源文件保留",
"status": "passed",
"startedAt": "2026-09-15T16:26:27.112Z",
"actual": {
"groups": 12,
"solids": 134,
"source": "/home/web_user/.cache/FreeCADWeb/Cache/FreeCADWeb_Doc_63e2369a-ade8-4439-9efb-d207b1019d8c_4a4dab_863658/original.ifc",
"ids": 146
},
"seconds": 124.71,
"evidence": {
"state": "FIX-IFC-REOPEN-02.json",
"screenshot": "FIX-IFC-REOPEN-02.png",
"viewportScreenshot": "FIX-IFC-REOPEN-02-viewport.png",
"screenshotSha256": "492dafbea949ef3e375aea3d71d8165fd3a28d595d805cf7a49b497bc902dacb"
}
}
],
"startedAt": "2026-09-15T16:24:54.702Z",
"seconds": 217.656
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,477 @@
{
"url": "http://127.0.0.1:35085/",
"isolated": true,
"sharedArrayBuffer": "function",
"ready": "complete",
"text": "3D 视图\nDocument\n主链\n工程\n全线\n工作台\nPython\nAssembly\nBIM\nCAM\nCloud\nDraft\nFem\nHelp\nImport\nInspection\nJtReader\nMaterial\nMeasure\nMesh\nMeshPart\nOpenSCAD\nPart\nPartDesign\nPlot\nPoints\nReverseEngineering\nRobot\nSandbox\nShow\nSketcher\nSpreadsheet\nStart\nSurface\nTechDraw\nTemplatePyMod\nTest\nTux\nWeb\nFC\nFreeCAD 1.2 Web\nProject session\nDocuments\nproject-document-1\nrevision 1 · dirty\nproject-document-2\nrevision 0 · clean\n新建 Document\n关闭活动 Document\nObjects\nBox1.step\nNew Group\nproject-document-1\nView Tools \nNone\nDraw Style\nAlign to Selection\nBox Selection\nBox Element Selection\n轴十字\n转台\n速度\n停止\n选择重叠对象\n视图\n顶视图\n底视图\n前视图\n后视图\n左视图\n右视图\n等轴测\n正二轴测\n正三轴测\n\nImported Box1.step: 12 triangles\n\n导入 STEP / IGES / BREP / STL\n导出格式\nSTL\nSTEP\nIGES\nBREP\n适合全部对象\n创建长方体\n保存 FCStd 到 OPFS\n下载 native FCStd\nOPFS 文档\n选择文档\n打开 OPFS 文档\n刷新 OPFS 文档\n保存工程 checkpoint\n恢复工程 checkpoint\nQueue / recovery\njobs=0 pending=0 failures=0\nNo recovery failures\nReplay pendingQuarantine pending\nImported native mesh\n36 vertices · 12 triangles · 6 faces\nProperties\nLabel\nColor\nVisibility\nSource\nweb_project_document_1.FCStd\nFaces\n6\nTriangles\n12\n移除对象\n位置\nX\nY\nZ\n布尔运算\nBase\n选择对象\nBox1.step\nTool\n选择对象\nBox1.step\n创建\n重算\nBox dimensions\nLength\nWidth\nHeight\n应用尺寸并重算\n取消尺寸编辑\n原生实体\nRadius\nHeight\nAngle\n创建圆柱\n重算\nVolume\n24.000000\nBounds (mm)\nMin X: 0.000000\nMin Y: 0.000000\nMin Z: 0.000000\nMax X: 2.000000\nMax Y: 3.000000\nMax Z: 4.000000\nproject-document-1\n1 objects\nRecent files\n1\nCheckpoint\nlocalStorage metadata only",
"tabs": [
{
"text": "project-document-1\nrevision 1 · dirty",
"active": true
},
{
"text": "project-document-2\nrevision 0 · clean",
"active": false
}
],
"objects": [
{
"id": "native:Imported1",
"text": "Box1.step",
"selected": "true"
}
],
"status": [
"",
"Imported Box1.step: 12 triangles",
""
],
"controls": [
{
"tag": "BUTTON",
"label": "project-document-1revision 1 · dirty",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "project-document-2revision 0 · clean",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "新建 Document",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "关闭活动 Document",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Visible Box1.step",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "",
"value": "Group",
"disabled": false
},
{
"tag": "SELECT",
"label": "Document root",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Refresh groups",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Create group",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "NoneDraw StyleAlign to SelectionBox SelectionBox Element Selection",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "导出依赖图 (.gv)",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "撤销",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "重做",
"value": "",
"disabled": true
},
{
"tag": "INPUT",
"label": "Axis cross",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "Turntable",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "Turntable speed",
"value": "2",
"disabled": false
},
{
"tag": "BUTTON",
"label": "停止",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "选择重叠对象",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "标准视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "放大",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "缩小",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "适配全部",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "向左旋转视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "向右旋转视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "存储工作视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "恢复工作视图",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Import STEP files",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Native export format",
"value": "stl",
"disabled": false
},
{
"tag": "BUTTON",
"label": "导出选中对象",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "适合全部对象",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建长方体",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "保存 FCStd 到 OPFS",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "下载 native FCStd",
"value": "",
"disabled": true
},
{
"tag": "SELECT",
"label": "OPFS document",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "打开 OPFS 文档",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "刷新 OPFS 文档",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "保存工程 checkpoint",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "恢复工程 checkpoint",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Replay pending",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Quarantine pending",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Label",
"value": "Box1.step",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Color",
"value": "#73c6d4",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Visibility",
"value": "on",
"disabled": false
},
{
"tag": "BUTTON",
"label": "移除对象",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position X",
"value": "0",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position Y",
"value": "0",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position Z",
"value": "0",
"disabled": false
},
{
"tag": "BUTTON",
"label": "应用位置",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "并集",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "差集",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "交集",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Boolean Base",
"value": "Imported1",
"disabled": false
},
{
"tag": "BUTTON",
"label": "交换运算对象",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Boolean Tool",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "重算",
"value": "",
"disabled": true
},
{
"tag": "INPUT",
"label": "Length",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Width",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Height",
"value": "10",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Cube",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Box Fix 1",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Box Fix 2",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "应用尺寸并重算",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "取消尺寸编辑",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "圆柱",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "圆锥",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "球",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "圆环",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Radius",
"value": "5",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Height",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Angle",
"value": "360",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建圆柱",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "重算",
"value": "",
"disabled": true
}
],
"volume": "24.000000",
"workbench": null,
"canvases": [
{
"width": 817,
"height": 440
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,477 @@
{
"url": "http://127.0.0.1:35085/",
"isolated": true,
"sharedArrayBuffer": "function",
"ready": "complete",
"text": "3D 视图\nDocument\n主链\n工程\n全线\n工作台\nPython\nAssembly\nBIM\nCAM\nCloud\nDraft\nFem\nHelp\nImport\nInspection\nJtReader\nMaterial\nMeasure\nMesh\nMeshPart\nOpenSCAD\nPart\nPartDesign\nPlot\nPoints\nReverseEngineering\nRobot\nSandbox\nShow\nSketcher\nSpreadsheet\nStart\nSurface\nTechDraw\nTemplatePyMod\nTest\nTux\nWeb\nFC\nFreeCAD 1.2 Web\nProject session\nDocuments\nproject-document-1\nrevision 1 · dirty\nproject-document-2\nrevision 0 · clean\n新建 Document\n关闭活动 Document\nObjects\nBox1.iges\nNew Group\nproject-document-1\nView Tools \nNone\nDraw Style\nAlign to Selection\nBox Selection\nBox Element Selection\n轴十字\n转台\n速度\n停止\n选择重叠对象\n视图\n顶视图\n底视图\n前视图\n后视图\n左视图\n右视图\n等轴测\n正二轴测\n正三轴测\n\nImported Box1.iges: 12 triangles\n\n导入 STEP / IGES / BREP / STL\n导出格式\nSTL\nSTEP\nIGES\nBREP\n适合全部对象\n创建长方体\n保存 FCStd 到 OPFS\n下载 native FCStd\nOPFS 文档\n选择文档\n打开 OPFS 文档\n刷新 OPFS 文档\n保存工程 checkpoint\n恢复工程 checkpoint\nQueue / recovery\njobs=0 pending=0 failures=0\nNo recovery failures\nReplay pendingQuarantine pending\nImported native mesh\n36 vertices · 12 triangles · 6 faces\nProperties\nLabel\nColor\nVisibility\nSource\nweb_project_document_1.FCStd\nFaces\n6\nTriangles\n12\n移除对象\n位置\nX\nY\nZ\n布尔运算\nBase\n选择对象\nBox1.iges\nTool\n选择对象\nBox1.iges\n创建\n重算\nBox dimensions\nLength\nWidth\nHeight\n应用尺寸并重算\n取消尺寸编辑\n原生实体\nRadius\nHeight\nAngle\n创建圆柱\n重算\nVolume\n24.000000\nBounds (mm)\nMin X: 0.000000\nMin Y: 0.000000\nMin Z: 0.000000\nMax X: 2.000000\nMax Y: 3.000000\nMax Z: 4.000000\nproject-document-1\n1 objects\nRecent files\n1\nCheckpoint\nlocalStorage metadata only",
"tabs": [
{
"text": "project-document-1\nrevision 1 · dirty",
"active": true
},
{
"text": "project-document-2\nrevision 0 · clean",
"active": false
}
],
"objects": [
{
"id": "native:Imported1",
"text": "Box1.iges",
"selected": "true"
}
],
"status": [
"",
"Imported Box1.iges: 12 triangles",
""
],
"controls": [
{
"tag": "BUTTON",
"label": "project-document-1revision 1 · dirty",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "project-document-2revision 0 · clean",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "新建 Document",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "关闭活动 Document",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Visible Box1.iges",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "",
"value": "Group",
"disabled": false
},
{
"tag": "SELECT",
"label": "Document root",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Refresh groups",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Create group",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "NoneDraw StyleAlign to SelectionBox SelectionBox Element Selection",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "导出依赖图 (.gv)",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "撤销",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "重做",
"value": "",
"disabled": true
},
{
"tag": "INPUT",
"label": "Axis cross",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "Turntable",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "Turntable speed",
"value": "2",
"disabled": false
},
{
"tag": "BUTTON",
"label": "停止",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "选择重叠对象",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "标准视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "放大",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "缩小",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "适配全部",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "向左旋转视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "向右旋转视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "存储工作视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "恢复工作视图",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Import STEP files",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Native export format",
"value": "stl",
"disabled": false
},
{
"tag": "BUTTON",
"label": "导出选中对象",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "适合全部对象",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建长方体",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "保存 FCStd 到 OPFS",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "下载 native FCStd",
"value": "",
"disabled": true
},
{
"tag": "SELECT",
"label": "OPFS document",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "打开 OPFS 文档",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "刷新 OPFS 文档",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "保存工程 checkpoint",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "恢复工程 checkpoint",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Replay pending",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Quarantine pending",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Label",
"value": "Box1.iges",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Color",
"value": "#73c6d4",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Visibility",
"value": "on",
"disabled": false
},
{
"tag": "BUTTON",
"label": "移除对象",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position X",
"value": "0",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position Y",
"value": "0",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position Z",
"value": "0",
"disabled": false
},
{
"tag": "BUTTON",
"label": "应用位置",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "并集",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "差集",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "交集",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Boolean Base",
"value": "Imported1",
"disabled": false
},
{
"tag": "BUTTON",
"label": "交换运算对象",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Boolean Tool",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "重算",
"value": "",
"disabled": true
},
{
"tag": "INPUT",
"label": "Length",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Width",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Height",
"value": "10",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Cube",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Box Fix 1",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Box Fix 2",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "应用尺寸并重算",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "取消尺寸编辑",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "圆柱",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "圆锥",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "球",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "圆环",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Radius",
"value": "5",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Height",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Angle",
"value": "360",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建圆柱",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "重算",
"value": "",
"disabled": true
}
],
"volume": "24.000000",
"workbench": null,
"canvases": [
{
"width": 817,
"height": 440
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,477 @@
{
"url": "http://127.0.0.1:35085/",
"isolated": true,
"sharedArrayBuffer": "function",
"ready": "complete",
"text": "3D 视图\nDocument\n主链\n工程\n全线\n工作台\nPython\nAssembly\nBIM\nCAM\nCloud\nDraft\nFem\nHelp\nImport\nInspection\nJtReader\nMaterial\nMeasure\nMesh\nMeshPart\nOpenSCAD\nPart\nPartDesign\nPlot\nPoints\nReverseEngineering\nRobot\nSandbox\nShow\nSketcher\nSpreadsheet\nStart\nSurface\nTechDraw\nTemplatePyMod\nTest\nTux\nWeb\nFC\nFreeCAD 1.2 Web\nProject session\nDocuments\nproject-document-1\nrevision 1 · dirty\nproject-document-2\nrevision 0 · clean\n新建 Document\n关闭活动 Document\nObjects\nBox1.brep\nNew Group\nproject-document-1\nView Tools \nNone\nDraw Style\nAlign to Selection\nBox Selection\nBox Element Selection\n轴十字\n转台\n速度\n停止\n选择重叠对象\n视图\n顶视图\n底视图\n前视图\n后视图\n左视图\n右视图\n等轴测\n正二轴测\n正三轴测\n\nImported Box1.brep: 12 triangles\n\n导入 STEP / IGES / BREP / STL\n导出格式\nSTL\nSTEP\nIGES\nBREP\n适合全部对象\n创建长方体\n保存 FCStd 到 OPFS\n下载 native FCStd\nOPFS 文档\n选择文档\n打开 OPFS 文档\n刷新 OPFS 文档\n保存工程 checkpoint\n恢复工程 checkpoint\nQueue / recovery\njobs=0 pending=0 failures=0\nNo recovery failures\nReplay pendingQuarantine pending\nImported native mesh\n36 vertices · 12 triangles · 6 faces\nProperties\nLabel\nColor\nVisibility\nSource\nweb_project_document_1.FCStd\nFaces\n6\nTriangles\n12\n移除对象\n位置\nX\nY\nZ\n布尔运算\nBase\n选择对象\nBox1.brep\nTool\n选择对象\nBox1.brep\n创建\n重算\nBox dimensions\nLength\nWidth\nHeight\n应用尺寸并重算\n取消尺寸编辑\n原生实体\nRadius\nHeight\nAngle\n创建圆柱\n重算\nVolume\n24.000000\nBounds (mm)\nMin X: 0.000000\nMin Y: 0.000000\nMin Z: 0.000000\nMax X: 2.000000\nMax Y: 3.000000\nMax Z: 4.000000\nproject-document-1\n1 objects\nRecent files\n1\nCheckpoint\nlocalStorage metadata only",
"tabs": [
{
"text": "project-document-1\nrevision 1 · dirty",
"active": true
},
{
"text": "project-document-2\nrevision 0 · clean",
"active": false
}
],
"objects": [
{
"id": "native:Imported1",
"text": "Box1.brep",
"selected": "true"
}
],
"status": [
"",
"Imported Box1.brep: 12 triangles",
""
],
"controls": [
{
"tag": "BUTTON",
"label": "project-document-1revision 1 · dirty",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "project-document-2revision 0 · clean",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "新建 Document",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "关闭活动 Document",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Visible Box1.brep",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "",
"value": "Group",
"disabled": false
},
{
"tag": "SELECT",
"label": "Document root",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Refresh groups",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Create group",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "NoneDraw StyleAlign to SelectionBox SelectionBox Element Selection",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "导出依赖图 (.gv)",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "撤销",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "重做",
"value": "",
"disabled": true
},
{
"tag": "INPUT",
"label": "Axis cross",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "Turntable",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "Turntable speed",
"value": "2",
"disabled": false
},
{
"tag": "BUTTON",
"label": "停止",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "选择重叠对象",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "标准视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "放大",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "缩小",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "适配全部",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "向左旋转视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "向右旋转视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "存储工作视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "恢复工作视图",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Import STEP files",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Native export format",
"value": "stl",
"disabled": false
},
{
"tag": "BUTTON",
"label": "导出选中对象",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "适合全部对象",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建长方体",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "保存 FCStd 到 OPFS",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "下载 native FCStd",
"value": "",
"disabled": true
},
{
"tag": "SELECT",
"label": "OPFS document",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "打开 OPFS 文档",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "刷新 OPFS 文档",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "保存工程 checkpoint",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "恢复工程 checkpoint",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Replay pending",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Quarantine pending",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Label",
"value": "Box1.brep",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Color",
"value": "#73c6d4",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Visibility",
"value": "on",
"disabled": false
},
{
"tag": "BUTTON",
"label": "移除对象",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position X",
"value": "0",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position Y",
"value": "0",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position Z",
"value": "0",
"disabled": false
},
{
"tag": "BUTTON",
"label": "应用位置",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "并集",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "差集",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "交集",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Boolean Base",
"value": "Imported1",
"disabled": false
},
{
"tag": "BUTTON",
"label": "交换运算对象",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Boolean Tool",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "重算",
"value": "",
"disabled": true
},
{
"tag": "INPUT",
"label": "Length",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Width",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Height",
"value": "10",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Cube",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Box Fix 1",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Box Fix 2",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "应用尺寸并重算",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "取消尺寸编辑",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "圆柱",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "圆锥",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "球",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "圆环",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Radius",
"value": "5",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Height",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Angle",
"value": "360",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建圆柱",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "重算",
"value": "",
"disabled": true
}
],
"volume": "24.000000",
"workbench": null,
"canvases": [
{
"width": 817,
"height": 440
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,477 @@
{
"url": "http://127.0.0.1:35085/",
"isolated": true,
"sharedArrayBuffer": "function",
"ready": "complete",
"text": "3D 视图\nDocument\n主链\n工程\n全线\n工作台\nPython\nAssembly\nBIM\nCAM\nCloud\nDraft\nFem\nHelp\nImport\nInspection\nJtReader\nMaterial\nMeasure\nMesh\nMeshPart\nOpenSCAD\nPart\nPartDesign\nPlot\nPoints\nReverseEngineering\nRobot\nSandbox\nShow\nSketcher\nSpreadsheet\nStart\nSurface\nTechDraw\nTemplatePyMod\nTest\nTux\nWeb\nFC\nFreeCAD 1.2 Web\nProject session\nDocuments\nproject-document-1\nrevision 1 · dirty\nproject-document-2\nrevision 0 · clean\n新建 Document\n关闭活动 Document\nObjects\nBox1.stl\nNew Group\nproject-document-1\nView Tools \nNone\nDraw Style\nAlign to Selection\nBox Selection\nBox Element Selection\n轴十字\n转台\n速度\n停止\n选择重叠对象\n视图\n顶视图\n底视图\n前视图\n后视图\n左视图\n右视图\n等轴测\n正二轴测\n正三轴测\n\nImported Box1.stl: 12 triangles\n\n导入 STEP / IGES / BREP / STL\n导出格式\nSTL\nSTEP\nIGES\nBREP\n适合全部对象\n创建长方体\n保存 FCStd 到 OPFS\n下载 native FCStd\nOPFS 文档\n选择文档\n打开 OPFS 文档\n刷新 OPFS 文档\n保存工程 checkpoint\n恢复工程 checkpoint\nQueue / recovery\njobs=0 pending=0 failures=0\nNo recovery failures\nReplay pendingQuarantine pending\nImported native mesh\n36 vertices · 12 triangles · 12 faces\nProperties\nLabel\nColor\nVisibility\nSource\nweb_project_document_1.FCStd\nFaces\n12\nTriangles\n12\n移除对象\n位置\nX\nY\nZ\n布尔运算\nBase\n选择对象\nBox1.stl\nTool\n选择对象\nBox1.stl\n创建\n重算\nBox dimensions\nLength\nWidth\nHeight\n应用尺寸并重算\n取消尺寸编辑\n原生实体\nRadius\nHeight\nAngle\n创建圆柱\n重算\nVolume\n24.000000\nBounds (mm)\nMin X: 0.000000\nMin Y: 0.000000\nMin Z: 0.000000\nMax X: 2.000000\nMax Y: 3.000000\nMax Z: 4.000000\nproject-document-1\n1 objects\nRecent files\n1\nCheckpoint\nlocalStorage metadata only",
"tabs": [
{
"text": "project-document-1\nrevision 1 · dirty",
"active": true
},
{
"text": "project-document-2\nrevision 0 · clean",
"active": false
}
],
"objects": [
{
"id": "native:Imported1",
"text": "Box1.stl",
"selected": "true"
}
],
"status": [
"",
"Imported Box1.stl: 12 triangles",
""
],
"controls": [
{
"tag": "BUTTON",
"label": "project-document-1revision 1 · dirty",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "project-document-2revision 0 · clean",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "新建 Document",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "关闭活动 Document",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Visible Box1.stl",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "",
"value": "Group",
"disabled": false
},
{
"tag": "SELECT",
"label": "Document root",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Refresh groups",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Create group",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "NoneDraw StyleAlign to SelectionBox SelectionBox Element Selection",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "导出依赖图 (.gv)",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "撤销",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "重做",
"value": "",
"disabled": true
},
{
"tag": "INPUT",
"label": "Axis cross",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "Turntable",
"value": "on",
"disabled": false
},
{
"tag": "INPUT",
"label": "Turntable speed",
"value": "2",
"disabled": false
},
{
"tag": "BUTTON",
"label": "停止",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "选择重叠对象",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "标准视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "放大",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "缩小",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "适配全部",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "向左旋转视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "向右旋转视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "存储工作视图",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "恢复工作视图",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Import STEP files",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Native export format",
"value": "stl",
"disabled": false
},
{
"tag": "BUTTON",
"label": "导出选中对象",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "适合全部对象",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建长方体",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "保存 FCStd 到 OPFS",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "下载 native FCStd",
"value": "",
"disabled": true
},
{
"tag": "SELECT",
"label": "OPFS document",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "打开 OPFS 文档",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "刷新 OPFS 文档",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "保存工程 checkpoint",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "恢复工程 checkpoint",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Replay pending",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Quarantine pending",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Label",
"value": "Box1.stl",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Color",
"value": "#73c6d4",
"disabled": false
},
{
"tag": "INPUT",
"label": "Object Visibility",
"value": "on",
"disabled": false
},
{
"tag": "BUTTON",
"label": "移除对象",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position X",
"value": "0",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position Y",
"value": "0",
"disabled": false
},
{
"tag": "INPUT",
"label": "Position Z",
"value": "0",
"disabled": false
},
{
"tag": "BUTTON",
"label": "应用位置",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "并集",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "差集",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "交集",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Boolean Base",
"value": "Imported1",
"disabled": false
},
{
"tag": "BUTTON",
"label": "交换运算对象",
"value": "",
"disabled": false
},
{
"tag": "SELECT",
"label": "Boolean Tool",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "重算",
"value": "",
"disabled": true
},
{
"tag": "INPUT",
"label": "Length",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Width",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Height",
"value": "10",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Cube",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Box Fix 1",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "Box Fix 2",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "应用尺寸并重算",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "取消尺寸编辑",
"value": "",
"disabled": true
},
{
"tag": "BUTTON",
"label": "圆柱",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "圆锥",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "球",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "圆环",
"value": "",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Radius",
"value": "5",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Height",
"value": "10",
"disabled": false
},
{
"tag": "INPUT",
"label": "Primitive Angle",
"value": "360",
"disabled": false
},
{
"tag": "BUTTON",
"label": "创建圆柱",
"value": "",
"disabled": false
},
{
"tag": "BUTTON",
"label": "重算",
"value": "",
"disabled": true
}
],
"volume": "24.000000",
"workbench": null,
"canvases": [
{
"width": 817,
"height": 440
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 KiB

View File

@@ -0,0 +1,286 @@
DBRep_DrawableShape
CASCADE Topology V1, (c) Matra-Datavision
Locations 1
1
1 0 0 0
0 1 0 0
0 0 1 0
Curve2ds 24
1 0 0 1 0
1 0 0 1 0
1 4 0 0 -1
1 0 0 0 1
1 0 -3 1 0
1 0 0 1 0
1 0 0 0 -1
1 0 0 0 1
1 0 0 1 0
1 0 2 1 0
1 4 0 0 -1
1 2 0 0 1
1 0 -3 1 0
1 0 2 1 0
1 0 0 0 -1
1 2 0 0 1
1 0 0 0 1
1 0 0 1 0
1 4 0 0 1
1 0 0 1 0
1 0 0 0 1
1 0 3 1 0
1 4 0 0 1
1 0 3 1 0
Curves 12
1 0 0 0 0 0 1
1 0 0 4 -0 1 0
1 0 3 0 0 0 1
1 0 0 0 -0 1 0
1 2 0 0 0 0 1
1 2 0 4 -0 1 0
1 2 3 0 0 0 1
1 2 0 0 -0 1 0
1 0 0 0 1 0 -0
1 0 0 4 1 0 -0
1 0 3 0 1 0 -0
1 0 3 4 1 0 -0
Polygon3D 0
PolygonOnTriangulations 0
Surfaces 6
1 0 0 0 1 0 -0 0 0 1 0 -1 0
1 0 0 0 -0 1 0 0 0 1 1 0 -0
1 0 0 4 0 0 1 1 0 -0 -0 1 0
1 0 3 0 -0 1 0 0 0 1 1 0 -0
1 0 0 0 0 0 1 1 0 -0 -0 1 0
1 2 0 0 1 0 -0 0 0 1 0 -1 0
Triangulations 0
TShapes 34
Ve
1e-07
0 0 4
0 0
0101101
*
Ve
1e-07
0 0 0
0 0
0101101
*
Ed
1e-07 1 1 0
1 1 0 0 4
2 1 1 0 0 4
2 2 2 0 0 4
0
0101000
-34 0 +33 0 *
Ve
1e-07
0 3 4
0 0
0101101
*
Ed
1e-07 1 1 0
1 2 0 0 3
2 3 1 0 0 3
2 4 3 0 0 3
0
0101000
-31 0 +34 0 *
Ve
1e-07
0 3 0
0 0
0101101
*
Ed
1e-07 1 1 0
1 3 0 0 4
2 5 1 0 0 4
2 6 4 0 0 4
0
0101000
-31 0 +29 0 *
Ed
1e-07 1 1 0
1 4 0 0 3
2 7 1 0 0 3
2 8 5 0 0 3
0
0101000
-29 0 +33 0 *
Wi
0101100
-32 0 -30 0 +28 0 +27 0 *
Fa
0 1e-07 1 0
0101000
+26 0 *
Ve
1e-07
2 0 4
0 0
0101101
*
Ve
1e-07
2 0 0
0 0
0101101
*
Ed
1e-07 1 1 0
1 5 0 0 4
2 9 6 0 0 4
2 10 2 0 0 4
0
0101000
-24 0 +23 0 *
Ve
1e-07
2 3 4
0 0
0101101
*
Ed
1e-07 1 1 0
1 6 0 0 3
2 11 6 0 0 3
2 12 3 0 0 3
0
0101000
-21 0 +24 0 *
Ve
1e-07
2 3 0
0 0
0101101
*
Ed
1e-07 1 1 0
1 7 0 0 4
2 13 6 0 0 4
2 14 4 0 0 4
0
0101000
-21 0 +19 0 *
Ed
1e-07 1 1 0
1 8 0 0 3
2 15 6 0 0 3
2 16 5 0 0 3
0
0101000
-19 0 +23 0 *
Wi
0101100
-22 0 -20 0 +18 0 +17 0 *
Fa
0 1e-07 6 0
0101000
+16 0 *
Ed
1e-07 1 1 0
1 9 0 0 2
2 17 2 0 0 2
2 18 5 0 0 2
0
0101000
-23 0 +33 0 *
Ed
1e-07 1 1 0
1 10 0 0 2
2 19 2 0 0 2
2 20 3 0 0 2
0
0101000
-24 0 +34 0 *
Wi
0101100
-14 0 -22 0 +13 0 +32 0 *
Fa
0 1e-07 2 0
0101000
+12 0 *
Ed
1e-07 1 1 0
1 11 0 0 2
2 21 4 0 0 2
2 22 5 0 0 2
0
0101000
-19 0 +29 0 *
Ed
1e-07 1 1 0
1 12 0 0 2
2 23 4 0 0 2
2 24 3 0 0 2
0
0101000
-21 0 +31 0 *
Wi
0101100
-10 0 -18 0 +9 0 +28 0 *
Fa
0 1e-07 4 0
0101000
+8 0 *
Wi
0101100
-27 0 -10 0 +17 0 +14 0 *
Fa
0 1e-07 5 0
0101000
+6 0 *
Wi
0101100
-30 0 -9 0 +20 0 +13 0 *
Fa
0 1e-07 3 0
0101000
+4 0 *
Sh
0101100
-25 0 +15 0 -11 0 +7 0 -5 0 +3 0 *
So
1100000
+2 0 *
+1 1

View File

@@ -0,0 +1,153 @@
S0000001
,,31HOpen CASCADE IGES processor 7.6,13HFilename.iges, G0000001
16HOpen CASCADE 7.6,31HOpen CASCADE IGES processor 7.6,32,308,15,308,15,G0000002
,1.,2,2HMM,1,0.01,15H20260916.004112,1E-07,4.,,,11,0,15H20260916.004112,G0000003
; G0000004
402 1 0 0 0 0 0 000000000D0000001
402 0 0 1 1 0D0000002
144 2 0 0 0 0 0 000020000D0000003
144 0 0 1 0 0D0000004
108 3 0 0 0 0 0 000010000D0000005
108 0 0 1 0 0D0000006
142 4 0 0 0 0 0 000010500D0000007
142 0 0 1 0 0D0000008
102 5 0 0 0 0 0 000010000D0000009
102 0 0 1 0 0D0000010
110 6 0 0 0 0 0 000010000D0000011
110 0 0 1 0 0D0000012
110 7 0 0 0 0 0 000010000D0000013
110 0 0 1 0 0D0000014
110 8 0 0 0 0 0 000010000D0000015
110 0 0 1 0 0D0000016
110 9 0 0 0 0 0 000010000D0000017
110 0 0 1 0 0D0000018
144 10 0 0 0 0 0 000020000D0000019
144 0 0 1 0 0D0000020
108 11 0 0 0 0 0 000010000D0000021
108 0 0 1 0 0D0000022
142 12 0 0 0 0 0 000010500D0000023
142 0 0 1 0 0D0000024
102 13 0 0 0 0 0 000010000D0000025
102 0 0 1 0 0D0000026
110 14 0 0 0 0 0 000010000D0000027
110 0 0 1 0 0D0000028
110 15 0 0 0 0 0 000010000D0000029
110 0 0 1 0 0D0000030
110 16 0 0 0 0 0 000010000D0000031
110 0 0 1 0 0D0000032
110 17 0 0 0 0 0 000010000D0000033
110 0 0 1 0 0D0000034
144 18 0 0 0 0 0 000020000D0000035
144 0 0 1 0 0D0000036
108 19 0 0 0 0 0 000010000D0000037
108 0 0 1 0 0D0000038
142 20 0 0 0 0 0 000010500D0000039
142 0 0 1 0 0D0000040
102 21 0 0 0 0 0 000010000D0000041
102 0 0 1 0 0D0000042
110 22 0 0 0 0 0 000010000D0000043
110 0 0 1 0 0D0000044
110 23 0 0 0 0 0 000010000D0000045
110 0 0 1 0 0D0000046
110 24 0 0 0 0 0 000010000D0000047
110 0 0 1 0 0D0000048
110 25 0 0 0 0 0 000010000D0000049
110 0 0 1 0 0D0000050
144 26 0 0 0 0 0 000020000D0000051
144 0 0 1 0 0D0000052
108 27 0 0 0 0 0 000010000D0000053
108 0 0 1 0 0D0000054
142 28 0 0 0 0 0 000010500D0000055
142 0 0 1 0 0D0000056
102 29 0 0 0 0 0 000010000D0000057
102 0 0 1 0 0D0000058
110 30 0 0 0 0 0 000010000D0000059
110 0 0 1 0 0D0000060
110 31 0 0 0 0 0 000010000D0000061
110 0 0 1 0 0D0000062
110 32 0 0 0 0 0 000010000D0000063
110 0 0 1 0 0D0000064
110 33 0 0 0 0 0 000010000D0000065
110 0 0 1 0 0D0000066
144 34 0 0 0 0 0 000020000D0000067
144 0 0 1 0 0D0000068
108 35 0 0 0 0 0 000010000D0000069
108 0 0 1 0 0D0000070
142 36 0 0 0 0 0 000010500D0000071
142 0 0 1 0 0D0000072
102 37 0 0 0 0 0 000010000D0000073
102 0 0 1 0 0D0000074
110 38 0 0 0 0 0 000010000D0000075
110 0 0 1 0 0D0000076
110 39 0 0 0 0 0 000010000D0000077
110 0 0 1 0 0D0000078
110 40 0 0 0 0 0 000010000D0000079
110 0 0 1 0 0D0000080
110 41 0 0 0 0 0 000010000D0000081
110 0 0 1 0 0D0000082
144 42 0 0 0 0 0 000020000D0000083
144 0 0 1 0 0D0000084
108 43 0 0 0 0 0 000010000D0000085
108 0 0 1 0 0D0000086
142 44 0 0 0 0 0 000010500D0000087
142 0 0 1 0 0D0000088
102 45 0 0 0 0 0 000010000D0000089
102 0 0 1 0 0D0000090
110 46 0 0 0 0 0 000010000D0000091
110 0 0 1 0 0D0000092
110 47 0 0 0 0 0 000010000D0000093
110 0 0 1 0 0D0000094
110 48 0 0 0 0 0 000010000D0000095
110 0 0 1 0 0D0000096
110 49 0 0 0 0 0 000010000D0000097
110 0 0 1 0 0D0000098
402,6,3,19,35,51,67,83; 0000001P0000001
144,5,1,0,7; 0000003P0000002
108,-1.,-0.,-0.,-0.,0,0.,0.,0.,0.; 0000005P0000003
142,0,5,0,9,2; 0000007P0000004
102,4,11,13,15,17; 0000009P0000005
110,0.,3.,0.,0.,0.,0.; 0000011P0000006
110,0.,0.,0.,0.,0.,4.; 0000013P0000007
110,0.,0.,4.,0.,3.,4.; 0000015P0000008
110,0.,3.,4.,0.,3.,0.; 0000017P0000009
144,21,1,0,23; 0000019P0000010
108,1.,0.,0.,2.,0,2.,0.,0.,0.; 0000021P0000011
142,0,21,0,25,2; 0000023P0000012
102,4,27,29,31,33; 0000025P0000013
110,2.,0.,4.,2.,0.,0.; 0000027P0000014
110,2.,0.,0.,2.,3.,0.; 0000029P0000015
110,2.,3.,0.,2.,3.,4.; 0000031P0000016
110,2.,3.,4.,2.,0.,4.; 0000033P0000017
144,37,1,0,39; 0000035P0000018
108,-0.,-1.,-0.,-0.,0,0.,0.,0.,0.; 0000037P0000019
142,0,37,0,41,2; 0000039P0000020
102,4,43,45,47,49; 0000041P0000021
110,0.,0.,4.,0.,0.,0.; 0000043P0000022
110,0.,0.,0.,2.,0.,0.; 0000045P0000023
110,2.,0.,0.,2.,0.,4.; 0000047P0000024
110,2.,0.,4.,0.,0.,4.; 0000049P0000025
144,53,1,0,55; 0000051P0000026
108,0.,1.,0.,3.,0,0.,3.,0.,0.; 0000053P0000027
142,0,53,0,57,2; 0000055P0000028
102,4,59,61,63,65; 0000057P0000029
110,2.,3.,0.,0.,3.,0.; 0000059P0000030
110,0.,3.,0.,0.,3.,4.; 0000061P0000031
110,0.,3.,4.,2.,3.,4.; 0000063P0000032
110,2.,3.,4.,2.,3.,0.; 0000065P0000033
144,69,1,0,71; 0000067P0000034
108,-0.,-0.,-1.,-0.,0,0.,0.,0.,0.; 0000069P0000035
142,0,69,0,73,2; 0000071P0000036
102,4,75,77,79,81; 0000073P0000037
110,2.,0.,0.,0.,0.,0.; 0000075P0000038
110,0.,0.,0.,0.,3.,0.; 0000077P0000039
110,0.,3.,0.,2.,3.,0.; 0000079P0000040
110,2.,3.,0.,2.,0.,0.; 0000081P0000041
144,85,1,0,87; 0000083P0000042
108,0.,0.,1.,4.,0,0.,0.,4.,0.; 0000085P0000043
142,0,85,0,89,2; 0000087P0000044
102,4,91,93,95,97; 0000089P0000045
110,0.,3.,4.,0.,0.,4.; 0000091P0000046
110,0.,0.,4.,2.,0.,4.; 0000093P0000047
110,2.,0.,4.,2.,3.,4.; 0000095P0000048
110,2.,3.,4.,0.,3.,4.; 0000097P0000049
S 1G 4D 98P 49 T0000001

View File

@@ -0,0 +1,187 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('FreeCAD Model'),'2;1');
FILE_NAME('Open CASCADE Shape Model','2026-09-16T00:41:10',('FreeCAD'),(
'FreeCAD'),'Open CASCADE STEP processor 7.6','FreeCAD','Unknown');
FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));
ENDSEC;
DATA;
#1 = APPLICATION_PROTOCOL_DEFINITION('international standard',
'automotive_design',2000,#2);
#2 = APPLICATION_CONTEXT(
'core data for automotive mechanical design processes');
#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10);
#4 = PRODUCT_DEFINITION_SHAPE('','',#5);
#5 = PRODUCT_DEFINITION('design','',#6,#9);
#6 = PRODUCT_DEFINITION_FORMATION('','',#7);
#7 = PRODUCT('Open CASCADE STEP translator 7.6 1',
'Open CASCADE STEP translator 7.6 1','',(#8));
#8 = PRODUCT_CONTEXT('',#2,'mechanical');
#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design');
#10 = ADVANCED_BREP_SHAPE_REPRESENTATION('',(#11,#15),#165);
#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14);
#12 = CARTESIAN_POINT('',(0.,0.,0.));
#13 = DIRECTION('',(0.,0.,1.));
#14 = DIRECTION('',(1.,0.,-0.));
#15 = MANIFOLD_SOLID_BREP('',#16);
#16 = CLOSED_SHELL('',(#17,#57,#97,#119,#141,#153));
#17 = ADVANCED_FACE('',(#18),#52,.F.);
#18 = FACE_BOUND('',#19,.F.);
#19 = EDGE_LOOP('',(#20,#30,#38,#46));
#20 = ORIENTED_EDGE('',*,*,#21,.F.);
#21 = EDGE_CURVE('',#22,#24,#26,.T.);
#22 = VERTEX_POINT('',#23);
#23 = CARTESIAN_POINT('',(0.,0.,0.));
#24 = VERTEX_POINT('',#25);
#25 = CARTESIAN_POINT('',(0.,0.,4.));
#26 = LINE('',#27,#28);
#27 = CARTESIAN_POINT('',(0.,0.,0.));
#28 = VECTOR('',#29,1.);
#29 = DIRECTION('',(0.,0.,1.));
#30 = ORIENTED_EDGE('',*,*,#31,.T.);
#31 = EDGE_CURVE('',#22,#32,#34,.T.);
#32 = VERTEX_POINT('',#33);
#33 = CARTESIAN_POINT('',(0.,3.,0.));
#34 = LINE('',#35,#36);
#35 = CARTESIAN_POINT('',(0.,0.,0.));
#36 = VECTOR('',#37,1.);
#37 = DIRECTION('',(0.,1.,0.));
#38 = ORIENTED_EDGE('',*,*,#39,.T.);
#39 = EDGE_CURVE('',#32,#40,#42,.T.);
#40 = VERTEX_POINT('',#41);
#41 = CARTESIAN_POINT('',(0.,3.,4.));
#42 = LINE('',#43,#44);
#43 = CARTESIAN_POINT('',(0.,3.,0.));
#44 = VECTOR('',#45,1.);
#45 = DIRECTION('',(0.,0.,1.));
#46 = ORIENTED_EDGE('',*,*,#47,.F.);
#47 = EDGE_CURVE('',#24,#40,#48,.T.);
#48 = LINE('',#49,#50);
#49 = CARTESIAN_POINT('',(0.,0.,4.));
#50 = VECTOR('',#51,1.);
#51 = DIRECTION('',(0.,1.,0.));
#52 = PLANE('',#53);
#53 = AXIS2_PLACEMENT_3D('',#54,#55,#56);
#54 = CARTESIAN_POINT('',(0.,0.,0.));
#55 = DIRECTION('',(1.,0.,0.));
#56 = DIRECTION('',(0.,0.,1.));
#57 = ADVANCED_FACE('',(#58),#92,.T.);
#58 = FACE_BOUND('',#59,.T.);
#59 = EDGE_LOOP('',(#60,#70,#78,#86));
#60 = ORIENTED_EDGE('',*,*,#61,.F.);
#61 = EDGE_CURVE('',#62,#64,#66,.T.);
#62 = VERTEX_POINT('',#63);
#63 = CARTESIAN_POINT('',(2.,0.,0.));
#64 = VERTEX_POINT('',#65);
#65 = CARTESIAN_POINT('',(2.,0.,4.));
#66 = LINE('',#67,#68);
#67 = CARTESIAN_POINT('',(2.,0.,0.));
#68 = VECTOR('',#69,1.);
#69 = DIRECTION('',(0.,0.,1.));
#70 = ORIENTED_EDGE('',*,*,#71,.T.);
#71 = EDGE_CURVE('',#62,#72,#74,.T.);
#72 = VERTEX_POINT('',#73);
#73 = CARTESIAN_POINT('',(2.,3.,0.));
#74 = LINE('',#75,#76);
#75 = CARTESIAN_POINT('',(2.,0.,0.));
#76 = VECTOR('',#77,1.);
#77 = DIRECTION('',(0.,1.,0.));
#78 = ORIENTED_EDGE('',*,*,#79,.T.);
#79 = EDGE_CURVE('',#72,#80,#82,.T.);
#80 = VERTEX_POINT('',#81);
#81 = CARTESIAN_POINT('',(2.,3.,4.));
#82 = LINE('',#83,#84);
#83 = CARTESIAN_POINT('',(2.,3.,0.));
#84 = VECTOR('',#85,1.);
#85 = DIRECTION('',(0.,0.,1.));
#86 = ORIENTED_EDGE('',*,*,#87,.F.);
#87 = EDGE_CURVE('',#64,#80,#88,.T.);
#88 = LINE('',#89,#90);
#89 = CARTESIAN_POINT('',(2.,0.,4.));
#90 = VECTOR('',#91,1.);
#91 = DIRECTION('',(0.,1.,0.));
#92 = PLANE('',#93);
#93 = AXIS2_PLACEMENT_3D('',#94,#95,#96);
#94 = CARTESIAN_POINT('',(2.,0.,0.));
#95 = DIRECTION('',(1.,0.,0.));
#96 = DIRECTION('',(0.,0.,1.));
#97 = ADVANCED_FACE('',(#98),#114,.F.);
#98 = FACE_BOUND('',#99,.F.);
#99 = EDGE_LOOP('',(#100,#106,#107,#113));
#100 = ORIENTED_EDGE('',*,*,#101,.F.);
#101 = EDGE_CURVE('',#22,#62,#102,.T.);
#102 = LINE('',#103,#104);
#103 = CARTESIAN_POINT('',(0.,0.,0.));
#104 = VECTOR('',#105,1.);
#105 = DIRECTION('',(1.,0.,0.));
#106 = ORIENTED_EDGE('',*,*,#21,.T.);
#107 = ORIENTED_EDGE('',*,*,#108,.T.);
#108 = EDGE_CURVE('',#24,#64,#109,.T.);
#109 = LINE('',#110,#111);
#110 = CARTESIAN_POINT('',(0.,0.,4.));
#111 = VECTOR('',#112,1.);
#112 = DIRECTION('',(1.,0.,0.));
#113 = ORIENTED_EDGE('',*,*,#61,.F.);
#114 = PLANE('',#115);
#115 = AXIS2_PLACEMENT_3D('',#116,#117,#118);
#116 = CARTESIAN_POINT('',(0.,0.,0.));
#117 = DIRECTION('',(0.,1.,0.));
#118 = DIRECTION('',(0.,0.,1.));
#119 = ADVANCED_FACE('',(#120),#136,.T.);
#120 = FACE_BOUND('',#121,.T.);
#121 = EDGE_LOOP('',(#122,#128,#129,#135));
#122 = ORIENTED_EDGE('',*,*,#123,.F.);
#123 = EDGE_CURVE('',#32,#72,#124,.T.);
#124 = LINE('',#125,#126);
#125 = CARTESIAN_POINT('',(0.,3.,0.));
#126 = VECTOR('',#127,1.);
#127 = DIRECTION('',(1.,0.,0.));
#128 = ORIENTED_EDGE('',*,*,#39,.T.);
#129 = ORIENTED_EDGE('',*,*,#130,.T.);
#130 = EDGE_CURVE('',#40,#80,#131,.T.);
#131 = LINE('',#132,#133);
#132 = CARTESIAN_POINT('',(0.,3.,4.));
#133 = VECTOR('',#134,1.);
#134 = DIRECTION('',(1.,0.,0.));
#135 = ORIENTED_EDGE('',*,*,#79,.F.);
#136 = PLANE('',#137);
#137 = AXIS2_PLACEMENT_3D('',#138,#139,#140);
#138 = CARTESIAN_POINT('',(0.,3.,0.));
#139 = DIRECTION('',(0.,1.,0.));
#140 = DIRECTION('',(0.,0.,1.));
#141 = ADVANCED_FACE('',(#142),#148,.F.);
#142 = FACE_BOUND('',#143,.F.);
#143 = EDGE_LOOP('',(#144,#145,#146,#147));
#144 = ORIENTED_EDGE('',*,*,#31,.F.);
#145 = ORIENTED_EDGE('',*,*,#101,.T.);
#146 = ORIENTED_EDGE('',*,*,#71,.T.);
#147 = ORIENTED_EDGE('',*,*,#123,.F.);
#148 = PLANE('',#149);
#149 = AXIS2_PLACEMENT_3D('',#150,#151,#152);
#150 = CARTESIAN_POINT('',(0.,0.,0.));
#151 = DIRECTION('',(0.,0.,1.));
#152 = DIRECTION('',(1.,0.,0.));
#153 = ADVANCED_FACE('',(#154),#160,.T.);
#154 = FACE_BOUND('',#155,.T.);
#155 = EDGE_LOOP('',(#156,#157,#158,#159));
#156 = ORIENTED_EDGE('',*,*,#47,.F.);
#157 = ORIENTED_EDGE('',*,*,#108,.T.);
#158 = ORIENTED_EDGE('',*,*,#87,.T.);
#159 = ORIENTED_EDGE('',*,*,#130,.F.);
#160 = PLANE('',#161);
#161 = AXIS2_PLACEMENT_3D('',#162,#163,#164);
#162 = CARTESIAN_POINT('',(0.,0.,4.));
#163 = DIRECTION('',(0.,0.,1.));
#164 = DIRECTION('',(1.,0.,0.));
#165 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3)
GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#169)) GLOBAL_UNIT_ASSIGNED_CONTEXT
((#166,#167,#168)) REPRESENTATION_CONTEXT('Context #1',
'3D Context with UNIT and UNCERTAINTY') );
#166 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) );
#167 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) );
#168 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() );
#169 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#166,
'distance_accuracy_value','confusion accuracy');
#170 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7));
ENDSEC;
END-ISO-10303-21;

View File

@@ -0,0 +1,86 @@
solid
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
outer loop
vertex 0.000000e+00 0.000000e+00 4.000000e+00
vertex 0.000000e+00 3.000000e+00 0.000000e+00
vertex 0.000000e+00 0.000000e+00 0.000000e+00
endloop
endfacet
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
outer loop
vertex 0.000000e+00 0.000000e+00 4.000000e+00
vertex 0.000000e+00 3.000000e+00 4.000000e+00
vertex 0.000000e+00 3.000000e+00 0.000000e+00
endloop
endfacet
facet normal 1.000000e+00 0.000000e+00 0.000000e+00
outer loop
vertex 2.000000e+00 0.000000e+00 4.000000e+00
vertex 2.000000e+00 0.000000e+00 0.000000e+00
vertex 2.000000e+00 3.000000e+00 0.000000e+00
endloop
endfacet
facet normal 1.000000e+00 -0.000000e+00 0.000000e+00
outer loop
vertex 2.000000e+00 0.000000e+00 4.000000e+00
vertex 2.000000e+00 3.000000e+00 0.000000e+00
vertex 2.000000e+00 3.000000e+00 4.000000e+00
endloop
endfacet
facet normal 0.000000e+00 -1.000000e+00 -0.000000e+00
outer loop
vertex 2.000000e+00 0.000000e+00 4.000000e+00
vertex 0.000000e+00 0.000000e+00 0.000000e+00
vertex 2.000000e+00 0.000000e+00 0.000000e+00
endloop
endfacet
facet normal -0.000000e+00 -1.000000e+00 0.000000e+00
outer loop
vertex 2.000000e+00 0.000000e+00 4.000000e+00
vertex 0.000000e+00 0.000000e+00 4.000000e+00
vertex 0.000000e+00 0.000000e+00 0.000000e+00
endloop
endfacet
facet normal 0.000000e+00 1.000000e+00 0.000000e+00
outer loop
vertex 2.000000e+00 3.000000e+00 4.000000e+00
vertex 2.000000e+00 3.000000e+00 0.000000e+00
vertex 0.000000e+00 3.000000e+00 0.000000e+00
endloop
endfacet
facet normal 0.000000e+00 1.000000e+00 0.000000e+00
outer loop
vertex 2.000000e+00 3.000000e+00 4.000000e+00
vertex 0.000000e+00 3.000000e+00 0.000000e+00
vertex 0.000000e+00 3.000000e+00 4.000000e+00
endloop
endfacet
facet normal -0.000000e+00 0.000000e+00 -1.000000e+00
outer loop
vertex 2.000000e+00 3.000000e+00 0.000000e+00
vertex 0.000000e+00 0.000000e+00 0.000000e+00
vertex 0.000000e+00 3.000000e+00 0.000000e+00
endloop
endfacet
facet normal 0.000000e+00 -0.000000e+00 -1.000000e+00
outer loop
vertex 2.000000e+00 3.000000e+00 0.000000e+00
vertex 2.000000e+00 0.000000e+00 0.000000e+00
vertex 0.000000e+00 0.000000e+00 0.000000e+00
endloop
endfacet
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
outer loop
vertex 2.000000e+00 3.000000e+00 4.000000e+00
vertex 0.000000e+00 3.000000e+00 4.000000e+00
vertex 0.000000e+00 0.000000e+00 4.000000e+00
endloop
endfacet
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
outer loop
vertex 2.000000e+00 3.000000e+00 4.000000e+00
vertex 0.000000e+00 0.000000e+00 4.000000e+00
vertex 2.000000e+00 0.000000e+00 4.000000e+00
endloop
endfacet
endsolid

View File

@@ -0,0 +1,223 @@
# Web FreeCAD 用户实际验证与上线手册
版本:1.0
日期:2026-09-15
适用对象:试用用户、业务验收人员、上线值守人员
## 1. 验证原则
本手册验证 Web FreeCAD 的实际可用性,不替代源码审查。几何算法必须由 OCCT WASM 完成,Three.js 只负责显示。验证人员应记录实际结果,不因界面显示正常而推断模型算法正确。
## 2. 环境与启动
1. 使用最新版 Chrome、Edge 或 Firefox,启用 WebAssembly、Web Worker、IndexedDB/OPFS。
2. 解压发布目录,确认 `index.html`、`kernel/FreeCADWebKernel.wasm`、`kernel/FreeCADWebKernel.js` 和 `modules/manifest.json` 存在。
3. 通过 HTTP(S) 服务访问,不要直接双击 `file://`。例如在 `web/dist` 执行 `python3 -m http.server 8080`,浏览器打开 `http://localhost:8080/`。
4. 打开开发者工具 Console,确认无启动异常;Network 中确认 WASM 和模块请求返回 200。
5. 记录浏览器版本、操作系统、屏幕分辨率和测试日期。
## 3. 启动与界面烟测
1. 首次打开应出现项目工作区、文档标签、模型树、属性区和 Three.js 视口。
2. 新建两个文档,切换标签,确认活动文档唯一且模型树互不串扰。
3. 刷新页面,确认应用可以重新启动;若存在恢复提示,记录提示内容。
4. 切换 Part、PartDesign、Sketcher、Draft、BIM、TechDraw、Mesh、FEM、CAM、Spreadsheet、Inspection、Robot、Assembly、Web、Python 等工作台入口,确认页面可进入且无白屏。
5. 改变视口尺寸,执行旋转、平移、缩放、适合视图,确认只影响显示,不改变模型数据。
## 4. 基础建模与 OCCT 几何验证
1. 新建文档,创建 Part Box,输入长度 2、宽度 3、高度 4,应用并重算。
2. 检查属性值和模型树对象名称;若界面提供体积信息,应为约 24。
3. 创建第二个基本体,移动或改变尺寸,确认两个对象同时显示且互不覆盖数据。
4. 执行撤销、重做,确认事务前后属性和模型树一致。
5. 选择对象并删除,再撤销删除;确认选择状态、树节点和视口同步。
6. 对可用的布尔、变换、复制、链接、分组命令各执行一次,确认结果来自 WASM 返回的几何/文档数据,而不是前端生成的替代几何。
## 5. 文档、属性与事务
1. 在模型树选择对象,逐项查看属性;修改长度、角度、颜色、可见性和标签。
2. 点击应用/重算,确认修改后的值保留;取消编辑,确认未提交值不污染文档。
3. 使用复制、剪切、粘贴、删除、选择全部、依赖关系、表达式(如界面提供)并记录结果。
4. 连续执行三次修改后逐级撤销,再逐级重做,确认事务顺序正确。
5. 在两个文档之间切换,确认属性面板始终对应当前活动文档。
## 6. 文件导入、导出、保存与重开
1. 导入示例 STEP 文件,等待 Worker 返回网格,确认模型树对象出现、视口有三角网格且无 NaN/空白。
2. 依次尝试项目支持的 FCStd、STEP、IGES、BREP、STL、OBJ、DXF、IFC 等格式;对不支持格式应显示明确错误,不得静默成功。
3. 保存为 FCStd,确认下载文件或 OPFS 文件列表出现。
4. 修改模型后再次保存,确认文件大小/修改时间变化;关闭文档并重新打开,确认对象数量、标签和关键属性恢复。
5. 导出 STL/网格格式后,用外部查看器检查文件可读;再次导入并比较包围盒、面数或体积(允许记录格式误差)。
6. 浏览器刷新后从 OPFS 选择文档打开,确认持久化恢复;清理站点数据后应明确提示文档已不存在。
## 7. 模型树、链接与结构
1. 创建 Part、VarSet 或等效结构对象,确认树层级、Tip 和选择分组正确。
2. 创建对象链接/子链接,替换链接目标,再解除链接;检查事务、树显示和视口结果。
3. 执行分组、解组、克隆/取消克隆(模块提供时),确认原对象和新对象的生命周期明确。
4. 在结构操作后保存、重开,确认链接关系没有变成空引用。
## 8. 各功能模块验证矩阵
对每个模块至少执行“进入—创建/读取—修改—保存/返回”一条链路,并记录不适用项:
| 模块 | 最低验证动作 |
|---|---|
| Part/PartDesign | 基本体、特征、重算、属性修改 |
| Sketcher | 创建草图/几何约束,退出编辑并保存 |
| Draft/BIM | 创建对象、层级/关系、可见性和窗口焦点 |
| TechDraw | 创建页面/视图,检查页面对象和导出入口 |
| Mesh/STL | 导入网格、显示、导出并重开 |
| Import/STEP/IGES | 导入、生成网格、保存 FCStd |
| FEM/CAM | 打开任务面板,创建可用任务或显示明确依赖提示 |
| Spreadsheet | 新建表格、编辑单元格、表达式/保存 |
| Inspection/Measure | 选择几何、执行测量、读取结果 |
| Assembly/Robot | 创建或读取装配/机器人对象,检查树和变换 |
| Surface/ReverseEngineering | 创建/读取曲面对象,检查属性和显示 |
| OpenSCAD/TemplatePyMod/Python | 执行支持的脚本/导入流程,记录依赖提示 |
| Web/Cloud/Sandbox | 初始化、请求、取消、错误恢复和持久化 |
| Std 命令 | 新建、打开、保存、撤销/重做、工作台和视图命令 |
源语义定义为空操作的 `Std_Test5/6` 等命令,应记录“按桌面语义无业务副作用”,不能判定为缺失。
## 9. Worker、取消与错误恢复
1. 发起一个导入或重算操作,操作未完成前点击取消;确认界面回到可操作状态。
2. 重复提交相同请求,确认不会产生重复对象或重复事务。
3. 输入空文件、损坏文件、无效尺寸和不存在路径,确认返回可理解错误码/消息。
4. 错误后立即执行一次正常 Box 创建或打开已有文档,确认 Worker 和 WASM 实例可继续工作。
5. 观察长任务期间页面仍可切换文档;若业务规定串行,应显示忙碌状态而非无限等待。
## 10. 显示与数据一致性
1. 改变颜色、透明度、可见性和视图模式,确认只改变 Three.js 显示对象。
2. 隐藏/显示对象后保存并重开,按产品定义检查可见性是否持久化。
3. 选中模型树节点,确认视口高亮对象与节点一致;删除后不得残留孤立网格。
4. 检查大模型加载时内存和帧率,记录浏览器 Console 的 WebGL/WASM 警告。
## 11. 上线前准入标准
- 启动、模块加载、WASM 内核烟测全部通过。
- 核心 Part Box、STEP 导入、FCStd 保存/重开、OPFS 恢复链路通过。
- 所有模块入口可达;不支持能力返回明确提示。
- 几何边界审计无发现,Three.js 未进入 Facade/Worker 算法层。
- 关键错误可恢复,无持续空转、重复请求或页面死锁。
- 所有失败项均有复现步骤、日志、截图和责任人;未验证项不得标记为“通过”。
## 12. 缺陷记录模板
记录:日期、浏览器/系统、URL、模块、命令、输入文件 SHA-256、操作步骤、预期、实际、错误消息、Console/Network 日志、截图、是否可重现、严重级别和处理结论。
严重级别:P0(无法启动/数据损坏)、P1(核心建模或保存失败)、P2(单模块功能异常)、P3(显示或文案问题)。P0/P1 未关闭不得上线。
## 13. 已完成自动烟测与用户验证边界
自动烟测已覆盖 WASM 版本、OCCT Box 体积/包围盒、STEP 网格生成与清理、几何边界审计和 Vite 生产打包。浏览器兼容性、真实业务数据、性能容量和最终验收必须由用户按本手册执行并签字确认。
## 14. 逐项执行记录规则
每项测试均按“准备—操作—观察—判定—记录”五步执行。预期结果全部满足记为通过;任一步骤异常记为失败,不得用“基本正常”代替。每项记录测试编号、开始/结束时间、文档名、输入文件、浏览器、实际结果和截图路径。
## 15. 启动与界面逐步测试
### UI-01 首次启动
准备:清空该站点缓存后打开根 URL。操作:等待首页完全加载,观察 Console 和 Network。预期:页面在 30 秒内显示工作区;`FreeCADWebKernel.js/wasm`、`modules/manifest.json` 返回 200;无未捕获异常。失败:白屏、循环加载、WASM 404 或未捕获异常。
### UI-02 文档标签隔离
操作:新建文档 A、B;在 A 创建 Box,在 B 创建不同尺寸 Box;来回切换标签。预期:模型树、属性和视口只显示当前文档内容,修改 A 不改变 B。失败:对象串文档、活动标签错误或切换后树为空。
### UI-03 工作台入口
操作:依次点击各工作台入口,等待每页首屏;返回首页后重复一次。预期:每个入口可达,无白屏;不可用功能显示明确依赖/能力提示。失败:路由 404、加载卡死或静默无响应。
### UI-04 视口交互
操作:在有模型文档中拖拽旋转、滚轮缩放、中键平移、点击适合视图,再调整浏览器窗口大小。预期:模型连续显示、无明显残影,模型数据和属性不变。失败:交互导致模型数据变化、视口崩溃或出现孤立网格。
## 16. 几何与建模逐步测试
### GEO-01 Box 参数与重算
操作:新建文档→Part→Box;输入 2、3、4→应用/重算;读取属性和体积。预期:体积约 24,包围盒约 `[0,0,0]-[2,3,4]`,树中只有一个对象。失败:数值错误、重算失败或体积为空。
### GEO-02 参数修改事务
操作:将长度改为 5→应用;再改为 7→取消;执行撤销、重做各一次。预期:取消后仍为 5;撤销回到 5 之前状态,重做恢复 5;事务顺序稳定。失败:取消仍写入、撤销越界或重做产生重复对象。
### GEO-03 多对象与布尔
操作:创建两个基本体→移动使其相交→执行可用布尔操作→重算。预期:结果对象可选、可见、可保存;原对象处理符合界面语义。失败:前端生成替代几何、结果无拓扑或保存后丢失。
### GEO-04 选择与删除恢复
操作:框选/树选对象→删除→撤销删除→再次删除。预期:树、属性、视口同步更新;撤销后对象完整恢复。失败:残留显示、空树节点或选择指向已删除对象。
## 17. 文件流程逐步测试
### FILE-01 STEP 导入
操作:打开示例 STEP→等待导入完成→检查树、面数/体积和视口→保存 FCStd。预期:树出现导入对象,视口有非空三角网格,保存成功。失败:导入超时、空网格、NaN 或保存文件为 0 字节。
### FILE-02 多格式导入
操作:分别导入项目支持的 IGES、BREP、STL、OBJ、DXF、IFC 文件;每次关闭当前文档后再测下一格式。预期:支持格式有明确对象和显示;不支持格式返回明确错误码。失败:格式错投、静默成功或错误后 Worker 无法继续。
### FILE-03 保存与重开
操作:创建并修改 Box→保存 FCStd→关闭→从文件选择器重开→核对对象数量、标签、尺寸。预期:数据与保存前一致。失败:标签丢失、尺寸回退或重开后空文档。
### FILE-04 OPFS 刷新恢复
操作:保存到 OPFS→刷新页面→在 OPFS 列表选择文件→打开。预期:文件仍在列表,文档和对象恢复;清除站点数据后文件消失并给出提示。失败:刷新后列表丢失、恢复串文档或无提示。
### FILE-05 STL 导出回读
操作:导出 STL→下载到本地→重新导入 STL→比较包围盒和面数。预期:文件可读,几何误差在业务容差内。失败:文件损坏、导入空网格或比例明显错误。
## 18. 文档树、属性和链接逐步测试
### DOC-01 属性编辑
操作:选择对象→依次修改标签、颜色、透明度、可见性和尺寸→应用→保存重开。预期:可编辑属性生效;持久化属性重开后保留。失败:界面值与模型值不一致。
### DOC-02 分组与层级
操作:创建 Part/VarSet→将对象加入/移出→设置 Tip→保存重开。预期:层级、Tip、选择范围一致。失败:树层级错乱或对象丢失。
### DOC-03 链接替换与解除
操作:建立对象链接→替换目标→解除链接→分别撤销/重做。预期:每一步事务可回退,解除后无空引用。失败:旧目标残留、链接指向 null 或重开失效。
## 19. 模块逐步测试通用模板
对表格中的每个模块执行:①进入模块;②创建或打开一个最小对象;③修改一个属性;④执行应用/重算;⑤保存并返回;⑥重新进入检查对象。记录“模块、对象、命令、输入、预期、实际、截图”。模块没有对应数据时,使用其自带示例,并将“依赖不可用”记录为环境结果而非通过。
## 20. Worker 与异常恢复逐步测试
### ERR-01 取消
操作:启动较大的导入或重算→立即点击取消→等待状态结束。预期:状态回到可操作,未产生半成品对象。失败:按钮永久忙碌、页面冻结或产生重复对象。
### ERR-02 非法输入
操作:输入空文件、损坏文件、零/负尺寸、不存在路径。预期:显示明确错误,随后可正常创建 Box。失败:崩溃、无限等待或错误后所有命令失效。
### ERR-03 重复请求
操作:连续双击保存/导入/应用按钮。预期:只生成一个事务和一个对象。失败:重复对象、重复文件或状态计数增长两次。
## 21. 性能和上线前逐步测试
### PERF-01 大文件加载
操作:使用小、中、大三组真实文件,分别记录从选择文件到首个可见网格的时间、峰值内存和浏览器帧率。预期:无崩溃、无持续空转;超出限制时给出提示。失败:浏览器无响应或 Worker 泄漏。
### PERF-02 长时间稳定性
操作:连续执行导入→修改→保存→重开循环 20 次,每 5 次刷新页面。预期:无累计错误、对象数不异常增长、OPFS 列表无重复。失败:错误率上升、内存持续增长或恢复失败。
## 22. 最终签署
完成全部编号后,验收人员填写:通过项数/总项数、失败项及 P0/P1 数量、未测项及原因、浏览器范围、测试数据清单、上线建议和签名日期。存在任何 P0/P1 或未解释的空转/阻塞,不得签署上线;P2/P3 须有明确修复计划和负责人。

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,8 @@
{
"scope": "21 manual items, not 1452 command acceptance",
"counts": {
"passed": 20,
"failed": 1,
"passed": 21,
"failed": 0,
"blocked": 0,
"not_run": 0
},
@@ -150,17 +150,17 @@
{
"id": "FILE-02",
"title": "多格式导入",
"status": "failed",
"detail": "Error: IFC native import is not available: AC14-FZK-Haus.ifc: No native import handler is registered for .ifc",
"status": "passed",
"detail": "仅限实际执行的步骤和断言",
"evidence": [
"manual-2026-09-15T12-53-49-351Z/report.md",
"manual-2026-09-15T12-53-49-351Z/FILE-02-01.png",
"manual-2026-09-15T12-53-49-351Z/FILE-02-02.png",
"manual-2026-09-15T12-53-49-351Z/FILE-02-03.png",
"manual-2026-09-15T12-53-49-351Z/FILE-02-04.png",
"manual-2026-09-15T12-53-49-351Z/FILE-02-05.png",
"manual-2026-09-15T12-53-49-351Z/FILE-02-06.png",
"manual-2026-09-15T12-53-49-351Z/FILE-02-07.png"
"manual-2026-09-15T16-41-07-796Z/report.md",
"manual-2026-09-15T16-41-07-796Z/FILE-02-01.png",
"manual-2026-09-15T16-41-07-796Z/FILE-02-02.png",
"manual-2026-09-15T16-41-07-796Z/FILE-02-03.png",
"manual-2026-09-15T16-41-07-796Z/FILE-02-04.png",
"manual-2026-09-15T16-41-07-796Z/FILE-02-05.png",
"manual-2026-09-15T16-41-07-796Z/FILE-02-06.png",
"manual-2026-09-15T16-41-07-796Z/FILE-02-07.png"
]
},
{

View File

@@ -0,0 +1,46 @@
[
{
"name": "display-contract",
"command": [
"node",
"--test",
"tools/test-document-display-persistence.mjs"
],
"exitCode": 0,
"timedOut": false,
"seconds": 0.466
},
{
"name": "window-contract",
"command": [
"node",
"--test",
"tools/test-window-host-contract.mjs"
],
"exitCode": 0,
"timedOut": false,
"seconds": 0.494
},
{
"name": "geometry-boundary",
"command": [
"npm",
"run",
"check:geometry-boundary"
],
"exitCode": 0,
"timedOut": false,
"seconds": 0.926
},
{
"name": "production-build",
"command": [
"npm",
"run",
"build"
],
"exitCode": 0,
"timedOut": false,
"seconds": 23.072
}
]

View File

@@ -0,0 +1,46 @@
[
{
"name": "display-contract",
"command": [
"node",
"--test",
"tools/test-document-display-persistence.mjs"
],
"exitCode": 0,
"timedOut": false,
"seconds": 0.462
},
{
"name": "window-contract",
"command": [
"node",
"--test",
"tools/test-window-host-contract.mjs"
],
"exitCode": 0,
"timedOut": false,
"seconds": 0.496
},
{
"name": "geometry-boundary",
"command": [
"npm",
"run",
"check:geometry-boundary"
],
"exitCode": 0,
"timedOut": false,
"seconds": 0.941
},
{
"name": "production-build",
"command": [
"npm",
"run",
"build"
],
"exitCode": 2,
"timedOut": false,
"seconds": 16.195
}
]

View File

@@ -0,0 +1,46 @@
[
{
"name": "display-contract",
"command": [
"node",
"--test",
"tools/test-document-display-persistence.mjs"
],
"exitCode": 0,
"timedOut": false,
"seconds": 0.463
},
{
"name": "window-contract",
"command": [
"node",
"--test",
"tools/test-window-host-contract.mjs"
],
"exitCode": 0,
"timedOut": false,
"seconds": 0.502
},
{
"name": "geometry-boundary",
"command": [
"npm",
"run",
"check:geometry-boundary"
],
"exitCode": 0,
"timedOut": false,
"seconds": 0.925
},
{
"name": "production-build",
"command": [
"npm",
"run",
"build"
],
"exitCode": 0,
"timedOut": false,
"seconds": 20.669
}
]

View File

@@ -0,0 +1,46 @@
[
{
"name": "display-contract",
"command": [
"node",
"--test",
"tools/test-document-display-persistence.mjs"
],
"exitCode": 0,
"timedOut": false,
"seconds": 0.463
},
{
"name": "window-contract",
"command": [
"node",
"--test",
"tools/test-window-host-contract.mjs"
],
"exitCode": 0,
"timedOut": false,
"seconds": 0.511
},
{
"name": "geometry-boundary",
"command": [
"npm",
"run",
"check:geometry-boundary"
],
"exitCode": 0,
"timedOut": false,
"seconds": 0.923
},
{
"name": "production-build",
"command": [
"npm",
"run",
"build"
],
"exitCode": 0,
"timedOut": false,
"seconds": 21.972
}
]

View File

@@ -0,0 +1,46 @@
[
{
"name": "display-contract",
"command": [
"node",
"--test",
"tools/test-document-display-persistence.mjs"
],
"exitCode": 0,
"timedOut": false,
"seconds": 0.491
},
{
"name": "window-contract",
"command": [
"node",
"--test",
"tools/test-window-host-contract.mjs"
],
"exitCode": 0,
"timedOut": false,
"seconds": 0.497
},
{
"name": "geometry-boundary",
"command": [
"npm",
"run",
"check:geometry-boundary"
],
"exitCode": 0,
"timedOut": false,
"seconds": 0.918
},
{
"name": "production-build",
"command": [
"npm",
"run",
"build"
],
"exitCode": 0,
"timedOut": false,
"seconds": 23.079
}
]