唯杰地图 logo唯杰地图
VJMAP
EN

overview

vjcad/references/view/overview.md 3.5 KB60 行
原文

本文回答:视图操作分四类:① 缩放(zoomExtents / zoomToEntities / zoomToFit,滚轮步进 ZOOMFACTOR);② 平移 + 重绘(render / redraw / regen / setCenter);③ 屏幕信息(getScreenBoundsWcs / getScreenEntities / 坐标系转换);④ UCS / 平面视图(UCSORG / UCSXANG / twistAngle)。

一、按子主题挑

想做的 子主题
zoomExtents / zoomToEntities / zoomToFit / 滚轮步进 ZOOMFACTOR zoom
render / redraw / regen / pan 三种刷新差异 pan-redraw
状态栏坐标显示 / coordsBar coordinate-display
设置画布背景色 setBgc background
取屏幕可见图纸范围 / 取屏幕内实体 screen-bounds
UCS(用户坐标系)原点 / 角度 ucs
平面视图(旋转图纸) plan-view

二、心智模型

┌────────────────────────────────────────────────┐
│ Canvas(屏幕坐标)                                │
│   ▲                                             │
│   │ Engine.canvasToWcs                          │
│   ▼                                             │
│ WCS(世界坐标)                                   │
│   ▲                                             │
│   │ Engine.wcsToUcs / ucsToWcs(受 UCSORG/      │
│   │  UCSXANG 影响)                              │
│   ▼                                             │
│ UCS(用户坐标)                                   │
│   ▲                                             │
│   │ Engine.wcsToDcs(视图旋转 twistAngle)       │
│   ▼                                             │
│ DCS(显示坐标)                                   │
└────────────────────────────────────────────────┘

⚠️ Engine 静态只暴露 canvasToWcs / wcsToUcs / ucsToWcs / wcsToDcs 四个单向转换。 反向(WcsToCanvas、DcsToWcs、UcsToCanvas、RcsToCanvas 等)在 CoordinateTransform 类上, 直接用 Engine.trans(= Engine.pcanvas.trans,onLoad 后可用)即可,例如 Engine.trans.WcsToCanvas(p)、Engine.trans.DcsToWcs(p),无需自己 new CoordinateTransform(...)(注意这些方法是大写开头)。

参见 core/coordinate。

三、最常用一组

Engine.zoomExtents();                                  // 缩放到全图
Engine.zoomToEntities([circle, line]);                 // 缩放到指定实体
Engine.setBgc(33);                                     // 设置背景灰度(0-255)
Engine.regen(true);                                    // 全量重生成

const bounds = Engine.getScreenBoundsWcs();           // 当前屏幕的 WCS 范围
const ents   = Engine.getScreenEntities(1.0);         // 当前屏幕内的实体

MCP 参考:vjcad/doc/view/index.md、vjcad/example/view/01zoomextents.js ~ 11planview.js。

参考(官方文档 MCP)

  • 文档:vjcad/doc/view/index.md、vjcad/doc/view/view-commands.md、vjcad/doc/core/coordinate.md(如有)
  • 示例:vjcad/example/view/01zoomextents.js ~ 11planview.js