Skip to content

齿轮联动示例采用同轴大小齿轮实现两级传动 #231

Description

@vilicvane

已实现 assembleGears([pinion, [middleLarge, middleSmall], wheel]):Tuple 第一项接上游、第二项接下游,组装函数内部对齐 frame。作者通过 Origin 定义同轴齿轮层高;外部啮合按实际齿中心和名义齿宽计算。返回扁平 Gear[],pairs 只配置相邻轴位之间的啮合。首尾和连续 Tuple 均可使用,App 参数检查保留整个 Tuple 与单一成员的选择焦点。

采用用户确认的模型 Symbol 元数据字典与当前快照,不引入时间线。Core 提供 readonly metadata / withMetadata(),写入浅拷贝字典,普通复制与几何派生继承主输入,组合自有元数据与成员分开。已删除外部 WeakMap 和 setModelData/getModelData。元数据不进入渲染快照或 Worker 消息。Gears 保存齿数、螺旋角、模数/齿宽比例,暴露精确的名义齿宽轴线与齿中心;从当前轴长解析缩放后的尺寸,Origin 编辑和统一缩放后仍可组装。Core 不解释齿轮业务,几何引用由 expose 负责变换。

传动示例为 20 → 30/18 → 40 齿,一次 Tuple 装配,只有 Drive angle 一个输入。小齿轮齿宽 14 mm、大齿轮齿宽 10 mm,中心相距 12 mm,上下端面在 Y=5 mm 贴合。中间两齿轮转角为输入的 −2/3,输出为 +3/10。各支撑轴下端等高。

外观已按用户确认调整:移除底板和中间黄色轴上没有把手的横条。两端横杆宽 8 mm、厚 3 mm,胶囊形端部半径 4 mm;竖轴和手柄分别对齐两端圆心,共用 crankReach=21 mm。横杆覆盖两侧圆形连接面,竖轴、横杆和手柄端面贴合且无体积重叠。整体实体数量为 11。

新增独立 frame(name?),返回非几何 Frame,支持直接 align、origin 点引用及值语义 relate。group(parts, {frame, name}) 显式以参考的完整已求解位姿作为组合坐标,包含 exposed frame 的局部变换;省略 frame 时仍继承首成员。名称统一使用 options.name,仓库调用、源码字符串、文档示例与图库焦点已同步迁移,不保留字符串名称兼容分支。

传动示例的 base 现为 frame('Assembly frame'),最终组合通过 {frame: base} 固定自身坐标,children 只包含 7 个真实零件条目,不再使用空 group 作为基准。参考在组合内保留 occurrence,随嵌套、旋转和原点编辑重表达。App 沿既有锚点/Worker/响应式预览链消费;选中 group 的 frame 参数显示坐标架并保留成员作为上下文,无新增镜像状态。

此前发现的空组检查错误也已修复:快照按自身及后代的实际几何决定是否生成方向边界。嵌套空组可正常检查,显式查询其 bounds 仍报错,零尺寸 point 保留真实几何边界。

Core/Gears API、包 README、坐标文档、公开 agent 指南、内部模型架构、坐标技能及受影响的网站来源已同步。

验证:

  • 本轮 43 个 Core 坐标架、组原点、公开 API、快照和旋转耦合测试通过。
  • 67 个 App 源码检查/导出测试、130 个源码编译测试、2 个示例/目录测试通过。编译大组首次触及 180 秒运行时限,按已完成用例拆分后补完全部余项;未增加内存预算。
  • 2 个 host Chrome 回归通过:逐个成员及 frame 参数检查正确,滑块按住拖动和 359/360/361/−720° 联动正常,无页面或 MobX 错误。截图 /tmp/code3d-231-transmission.png 已查看。
  • 全 workspace 类型检查、packages/App/Web 构建、格式与 diff 检查通过;129 个 HTML/Markdown 页面的链接、锚点与资源检查通过。
  • 此前 Core 元数据与完整 Gears 几何回归已通过,覆盖 Origin、缩放、奇数齿轮、内齿、斜齿与 Tuple 装配。

用户已验收复合齿轮、元数据快照、独立 Frame 及其后续空间引用重构,并授权提交合并。功能提交为 98132ab7a54e5e320e7626dfad555e23c1f7c619,空间引用重构提交为 e8843e109cb86d5dcfee6e28859625a22921372d

后续内部重构已完成并提交:用户明确暂不整理元数据继承,现有 metadata / withMetadata 语义及传递代码保持原样。

  • RelationObject 统一关系派生、操作追踪及操作快照。模型、Frame、Sketch 的 relate 都记录原值为 source、本次新增约束参与者为 reference;继承关系继续参与求解。ReferenceObject 共用非几何值继承及快照,Frame/Sketch 保留各自的引用元素和显示语义。
  • 检查引用由独立 Frame 承载,删除非几何对象的空 group 适配;真实模型仍使用保留成员位姿的组装容器。检查身份与调用时已求解位置按既有生命周期保存,后续关系不改变先前测量。dimension 的 owner 支持 Model 或 Frame,纯参考坐标架可正常测距、显示和导出标注。
  • App 通过统一 modelOperationObject 解析模型、Frame 和 Sketch,统一操作追踪及注解坐标归属。未新增镜像状态、目录或包,沿用既有 Worker 与响应式预览链。内部架构及公开注解文档同步。

本轮验证:55 个 Core 关系/坐标架/草图/组原点/快照测试、74 个 App 源码检查/测距/导出测试、6 个 host Chrome 回归通过。浏览器覆盖齿轮拖动及跨整圈联动、隐含 self、草图编辑/撤销/空草图、纯 Frame 测距与图片导出,无页面或 MobX 错误。另补查新增派生来源用例通过。全 workspace 类型检查、packages/App/Web 构建、129 页网站链接与资源检查、格式和 diff 检查通过。测试驱动在 3 GiB / 无 swap 的受限进程组内运行,已运行的 host Chrome 不属于该内存上限。截图 /tmp/code3d-231-reference-measurement.png/tmp/code3d-231-transmission.png 已查看。

已本地合并到 main:4510ccf3db597382d48dff779f1a56e9dc98ec81core: merge compound gears and spatial reference refactor),合并父提交为 38e2d27086686c55ef0d6fe744b89014eb01468fe8843e109cb86d5dcfee6e28859625a22921372d。合并无冲突,最终树与任务提交完全一致;主区与任务 worktree 均 clean。

主区集成验证:重新构建全部 packages,全 workspace 类型检查通过;15 个 Core Frame/metadata/snapshot、9 个 App 坐标架/齿轮/草图检查、3 个 Gears 缩放与 Origin/分层 Tuple/把手联动测试全部通过。既有完整浏览器与网站验收在相同代码树上已通过,因此不重复运行。测试使用 3 GiB、无 swap 及强制终止时限。

交付状态:用户已验收并授权推送。2026-09-23 随主分支 36ba351b363c85f8de3c12e69733a86f5d6bb805 正常推送,已核实远端 main 包含最终交付 4510ccf3db597382d48dff779f1a56e9dc98ec81,GitHub 已通过 closes #231 自动关闭;工作状态标签已清理。本次未推送版本 tag 或发包。

此次远端 网站构建 已成功:95 页源码核对、326 个 HTML/Markdown 页面的链接/锚点/资源检查和 code3d-www artifact 上传通过。部署 job 按既有条件跳过,本次没有线上发布。CI 的 4 个浏览器示例分片、全 workspace 类型/测试、npm 包安装与示例验证、App 构建均通过,网站图片生成仍在运行,最终结果待更新。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions