Abstract base class for all CAD view implementations.

This class provides the foundation for rendering and interacting with CAD drawings. It manages:

  • Canvas and viewport dimensions
  • Mouse event handling and coordinate conversion
  • Entity selection and highlighting
  • View modes (selection, pan, etc.)
  • Spatial queries for entity picking
  • Hover/unhover detection with timing

Concrete implementations must provide specific rendering logic and coordinate transformations appropriate for their rendering technology (e.g., Three.js, SVG).

  • Input Management: Handles mouse events and user interactions
  • Selection: Manages selected entities and visual feedback
  • Coordinate Systems: Converts between screen and world coordinates
  • Spatial Queries: Finds entities at specific locations
  • View State: Tracks current position, zoom, and view mode
class MyView extends AcEdBaseView {
// Implement required abstract methods
get missedData() { return { fonts: {}, images: new Map() }; }
get mode() { return this._mode; }
set mode(value) { this._mode = value; }
// ... other abstract methods
}

const view = new MyView(canvasElement);
view.events.mouseMove.addEventListener(args => {
console.log('Mouse at world coords:', args.x, args.y);
});

Hierarchy (View Summary)

Constructors

Properties

_canvas: HTMLCanvasElement

The HTML canvas element for rendering

events: {
    hover: AcCmEventManager<AcEdViewHoverEventArgs>;
    mouseMove: AcCmEventManager<AcEdMouseEventArgs>;
    unhover: AcCmEventManager<AcEdViewHoverEventArgs>;
    viewResize: AcCmEventManager<AcEdViewResizedEventArgs>;
} = ...

Events fired by the view for various interactions

Type declaration

Accessors

Methods

  • Add the specified entity or entities in drawing database into the current scene and draw it or them

    Parameters

    • entity: AcDbEntity | AcDbEntity[]

      Input one or multiple entities to add into the current scene

    Returns void

  • Converts a point from client window coordinates to world coordinates.

    The client window coordinate system has its origin at the top-left corner of the canvas, with Y increasing downward. World coordinates use the CAD coordinate system with Y typically increasing upward.

    Parameters

    • point: AcGeVector2dLike

      Point in client window coordinates

    Returns AcGePoint2d

    Point in world coordinates

    const screenPoint = { x: 100, y: 200 }; // 100px right, 200px down
    const worldPoint = view.cwcs2Wcs(screenPoint);
    console.log('World coordinates:', worldPoint.x, worldPoint.y);
  • Picks entities that intersect a hit-region centered at the specified point in world coordinates.

    The hit-region is defined as a square (or bounding box) centered at the input point, whose half-size is determined by the hitRadius parameter. Only entities whose geometry intersects this region are returned.

    Parameters

    • Optionalpoint: AcGeVector2dLike

      The center point of the hit-region in world coordinates. If omitted, the current cursor position is used.

    • OptionalhitRadius: number

      The half-width (in pixel size) of the hit-region around the point. It will be converted on one value in the world coordinate 'wcsHitRadius' and creates a square bounding box: [point.x ± wcsHitRadius, point.y ± wcsHitRadius]. A larger value increases the pick sensitivity. If omitted, a reasonable default is used.

    Returns string[]

    An array of object IDs representing the entities that intersect the hit-region.

  • Select entities intersected with the specified bounding box in the world coordinate system, add them to the current selection set, and highlight them.

    Parameters

    • box: AcGeBox2d

      Input one bounding box in the world coordinate system.

    Returns void

  • Converts a point from world coordinates to client window coordinates.

    This is the inverse of cwcs2Wcs(), converting from the CAD world coordinate system to screen pixel coordinates.

    Parameters

    • point: AcGeVector2dLike

      Point in world coordinates

    Returns AcGePoint2d

    Point in client window coordinates

    const worldPoint = new AcGePoint2d(10, 20); // CAD coordinates
    const screenPoint = view.wcs2Cwcs(worldPoint);
    console.log('Screen position:', screenPoint.x, screenPoint.y);
  • Zooms the view to fit the specified bounding box with optional margin.

    This method adjusts the view's center and zoom level so that the entire specified bounding box is visible within the viewport. The margin parameter adds extra space around the bounding box to provide visual padding.

    Parameters

    • box: AcGeBox2d

      The bounding box to zoom to, in world coordinates

    • margin: number

      Additional margin around the bounding box (in world units)

    Returns void

  • Zooms the view to fit all visible entities in the current drawing.

    This method automatically calculates the bounding box of all entities currently displayed in the view and adjusts the view's center and zoom level to show the entire scene. This is useful for getting an overview of the entire drawing or after loading new content.

    This function takes effect only if the current view has finished rendering all entities. When opening a file, progressive Rendering is used to render entities incrementally. So this function will wait until all of entities rendered or a timeout occurs.

    Parameters

    • Optionaltimeout: number

      Maximum time (ms) to wait before executing zoom to fit action. Default: 0 (no timeout).

    Returns void

  • Zooms the view to fit all visible entities in the current scene.

    This method automatically calculates the bounding box of all entities currently displayed in the specified layer and adjusts the view's center and zoom level to show the entire layer. This is useful for getting an overview of the entire layer of one drawing or after loading new content.

    Parameters

    • layerName: string

      The layer name

    Returns boolean

    • Return true if zoomed to the layer successfully.