Composer没有统一坐标系规则:世界坐标(mm)用于零件运动与枢轴定位,Canvas像素坐标(左上原点)仅限UI绘图,标签锚点分Viewport(屏幕像素)和Model(零件局部mm)两种,三者互不兼容且需手动转换。

Composer 没有统一的坐标系统规则——你看到的“坐标行为”,完全取决于当前操作对象类型和所处上下文。世界坐标(mm)、Canvas 像素坐标、标签锚点坐标系,三者互不兼容,也不能自动转换。
世界坐标系(零件移动/枢轴定位唯一基准)
所有零件平移、旋转、Move 行为、枢轴位置(Pivot X/Y/Z)都基于这个三维世界坐标系,单位默认为 mm,原点在装配体中心(或导入时 CAD 定义的原点)。它不可切换、不可缩放、不随相机变化。
- 输入
Pivot值必须带单位意识:500是 500 mm,不是像素也不是英寸;若原始 CAD 是米制,却按-500设飞入起点,实际飞了半米,极易误判为“不动” -
Move行为的起点/终点坐标必须手动输入,且必须与世界坐标对齐;拖拽时若未开启几何吸附,坐标会带0.0003级浮点偏移,导致循环路径首尾无法严丝合缝 - 父子链接(
Link Type = Pivot)的运动传递,依赖子件枢轴与父件局部坐标系原点的重合度;二者偏差哪怕0.1 mm,多级连杆动画就会累积漂移
Canvas 坐标系(仅用于 DrawScope 绘图)
这是 Jetpack Compose 的 UI 层坐标系,和 SOLIDWORKS Composer 没有任何关系。如果你在自定义 Compose UI 中画动画(比如叠加状态指示器),DrawScope 的 (0f, 0f) 在左上角,x 向右增,y 向下增,单位是逻辑像素。它不参与任何 3D 零件定位。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
-
graphicsLayer { translationX / translationY }移动的是 UI 元素,不是模型零件;别指望它让电池盖沿斜面滑动 - 想把 Canvas 动画和零件位置联动?必须手动把世界坐标(mm)转成屏幕坐标(px):需通过投影矩阵 + 视口尺寸计算,Compose 本身不提供
worldToScreen()这类 API - 用
drawLine()手动画参考线时,坐标是像素值;若误用零件的世界坐标(如drawLine(0f, 0f, 100f, 0f)),线会缩在左上角一个点里,因为100 mm ≈ 378 px,但没考虑缩放和偏移
标签锚点坐标系(决定“跟不跟零件走”)
标签(Label)有两种锚定模式:Viewport(固定在屏幕某像素位置)和 Model(绑定到零件表面,随其变换)。选错就等于选错坐标系,直接导致“飘走”“穿模”“爆炸后消失”。
- 设为
Viewport锚点时,标签坐标是相对视口左上角的像素偏移(如Offset(20f, 100f)),旋转相机它不动,剖切它也不动 - 设为
Model锚点时,坐标是相对于零件局部坐标系的偏移(单位仍是 mm),随零件平移/旋转/缩放而同步变化 - 切换锚点类型后,原有坐标值不会自动转换——
Model下的(0f, 0f)和Viewport下的(0f, 0f)指向完全不同的物理位置
为什么“精确定位”总出错?关键盲区在这儿
多数精度问题不是参数输错了,而是坐标系被混用了。最常被忽略的是:世界坐标系没有“自动对齐”机制,所有转换都得手动算;Canvas 坐标系不感知 3D 深度;标签锚点一旦设错,后期很难逆向排查——因为视觉漂移往往在播放动画时才暴露,而时间轴上看不到坐标系切换痕迹。

















