Represents a leader entity in AutoCAD.

A leader is a dimension-like entity that consists of a line or spline with an arrowhead pointing to a specific object or location, and an annotation (text, block, or feature control frame) at the other end. Leaders are controlled by dimension variable settings and dimension styles.

// Create a leader entity
const leader = new AcDbLeader();
leader.appendVertex(new AcGePoint3d(0, 0, 0));
leader.appendVertex(new AcGePoint3d(5, 5, 0));
leader.appendVertex(new AcGePoint3d(10, 5, 0));
leader.hasArrowHead = true;
leader.hasHookLine = true;
leader.annoType = AcDbLeaderAnnotationType.MText;

// Access leader properties
console.log(`Number of vertices: ${leader.numVertices}`);
console.log(`Has arrow head: ${leader.hasArrowHead}`);
console.log(`Has hook line: ${leader.hasHookLine}`);

Hierarchy (View Summary)

Constructors

  • Creates a new leader entity.

    This constructor initializes a leader with default values. The leader is not spline-fit, has no arrowhead, no hook line, and no annotation type.

    Returns AcDbLeader

    const leader = new AcDbLeader();
    leader.appendVertex(new AcGePoint3d(0, 0, 0));
    leader.appendVertex(new AcGePoint3d(5, 5, 0));

Accessors

  • get closed(): boolean
  • Returns true if the curve is closed.

    A curve is considered closed if its start point is identical to its end point. This property is used by various operations that need to know if a curve forms a complete loop.

    Returns boolean

    True if the curve is closed, false otherwise

    const curve = new AcDbCircle();
    console.log('Is circle closed?', curve.closed); // true

    const line = new AcDbLine();
    console.log('Is line closed?', line.closed); // false
  • set closed(_value: boolean): void
  • Returns true if the curve is closed.

    A curve is considered closed if its start point is identical to its end point. This property is used by various operations that need to know if a curve forms a complete loop.

    Parameters

    • _value: boolean

    Returns void

    True if the curve is closed, false otherwise

    const curve = new AcDbCircle();
    console.log('Is circle closed?', curve.closed); // true

    const line = new AcDbLine();
    console.log('Is line closed?', line.closed); // false
  • get database(): AcDbDatabase
  • Gets the database in which this object is resident.

    When an object isn't added to a database, this property returns the current working database. After it is added to a database, it will be set automatically. You should never set this value manually.

    Returns AcDbDatabase

    The database this object belongs to

    const db = obj.database;
    
  • set database(db: AcDbDatabase): void
  • Sets the database for this object.

    This is typically set automatically when the object is added to a database. Manual setting should be avoided unless you know what you're doing.

    Parameters

    Returns void

    obj.database = myDatabase;
    
  • get dimensionStyle(): string
  • Gets the dimension style applied to this leader.

    Returns string

    The dimension style name

    const dimensionStyle = leader.dimensionStyle;
    console.log(`Dimension style: ${dimensionStyle}`);
  • set dimensionStyle(value: string): void
  • Sets the dimension style applied to this leader.

    Parameters

    • value: string

      The new dimension style name

    Returns void

    leader.dimensionStyle = "Standard";
    
  • get geometricExtents(): AcGeBox3d
  • Gets the geometric extents of this entity.

    This method should be implemented by subclasses to return the bounding box that encompasses the entire entity.

    Returns AcGeBox3d

    The geometric extents as a 3D bounding box

    const extents = entity.geometricExtents;
    console.log(`Min: ${extents.minPoint}, Max: ${extents.maxPoint}`);
  • get hasArrowHead(): boolean
  • Gets whether this leader has an arrowhead.

    Returns boolean

    True if the leader has an arrowhead, false otherwise

    const hasArrowHead = leader.hasArrowHead;
    console.log(`Leader has arrowhead: ${hasArrowHead}`);
  • set hasArrowHead(value: boolean): void
  • Sets whether this leader has an arrowhead.

    Parameters

    • value: boolean

      True to enable arrowhead, false to disable

    Returns void

    leader.hasArrowHead = true;
    
  • get hasHookLine(): boolean
  • Gets whether this leader has a hook line.

    The "hookline" is the small horizontal line at the end of the leader line just before the annotation.

    Returns boolean

    True if the leader has a hook line, false otherwise

    const hasHookLine = leader.hasHookLine;
    console.log(`Leader has hook line: ${hasHookLine}`);
  • set hasHookLine(value: boolean): void
  • Sets whether this leader has a hook line.

    Parameters

    • value: boolean

      True to enable hook line, false to disable

    Returns void

    leader.hasHookLine = true;
    
  • get isSplined(): boolean
  • Gets whether this leader is spline-fit.

    Returns boolean

    True if the leader is spline-fit, false otherwise

    const isSplined = leader.isSplined;
    console.log(`Leader is spline-fit: ${isSplined}`);
  • set isSplined(value: boolean): void
  • Sets whether this leader is spline-fit.

    Parameters

    • value: boolean

      True to make the leader spline-fit, false otherwise

    Returns void

    leader.isSplined = true;
    
  • get layer(): string
  • Gets the name of the layer referenced by this entity.

    Returns string

    The layer name

    const layerName = entity.layer;
    
  • set layer(value: string): void
  • Sets the name of the layer for this entity.

    Parameters

    • value: string

      The new layer name

    Returns void

    entity.layer = 'MyLayer';
    
  • get lineStyle(): AcGiLineStyle
  • Gets the line style for this entity.

    This method returns the line style based on the entity's linetype and other properties.

    Returns AcGiLineStyle

    The line style object

    const lineStyle = entity.lineStyle;
    
  • get lineType(): string
  • Gets the name of the line type referenced by this entity.

    Returns string

    The linetype name

    const lineType = entity.lineType;
    
  • set lineType(value: string): void
  • Sets the name of the line type for this entity.

    Parameters

    • value: string

      The new linetype name

    Returns void

    entity.lineType = 'DASHED';
    
  • get linetypeScale(): number
  • Gets the line type scale factor of this entity.

    When an entity is first instantiated, its line type scale is initialized to an invalid value. When the entity is added to the database, if a linetype scale has not been specified for the entity, it is set to the database's current line type scale value.

    Returns number

    The linetype scale factor

    const scale = entity.linetypeScale;
    
  • set linetypeScale(value: number): void
  • Sets the line type scale factor for this entity.

    Parameters

    • value: number

      The new linetype scale factor

    Returns void

    entity.linetypeScale = 2.0;
    
  • get lineWeight(): number
  • Gets the line weight used by this entity.

    Returns number

    The line weight value

    const weight = entity.lineWeight;
    
  • set lineWeight(value: number): void
  • Sets the line weight for this entity.

    Parameters

    • value: number

      The new line weight value

    Returns void

    entity.lineWeight = 2;
    
  • get numVertices(): number
  • Gets the number of vertices in the leader's vertex list.

    Returns number

    The number of vertices

    const numVertices = leader.numVertices;
    console.log(`Number of vertices: ${numVertices}`);
  • get objectId(): string
  • Gets the object ID.

    AutoCAD uses 64-bit integers to represent handles, which exceed the maximum integer value of JavaScript. Therefore, strings are used to represent object handles.

    Returns string

    The object ID as a string

    const id = obj.objectId;
    console.log(`Object ID: ${id}`);
  • set objectId(value: string): void
  • Sets the object ID.

    Parameters

    • value: string

      The new object ID

    Returns void

    obj.objectId = 'new-object-id';
    
  • get ownerId(): string
  • Gets the object ID of the owner of this object.

    Returns string

    The owner object ID

    const ownerId = obj.ownerId;
    
  • set ownerId(value: string): void
  • Sets the object ID of the owner of this object.

    Parameters

    • value: string

      The new owner object ID

    Returns void

    obj.ownerId = 'parent-object-id';
    
  • get rgbColor(): number
  • Gets the RGB color of this entity after converting color index.

    This method handles the conversion of color indices (including ByLayer and ByBlock) to actual RGB colors. It resolves layer colors and block colors as needed.

    Returns number

    The RGB color value as a number

    const rgbColor = entity.rgbColor;
    console.log(`RGB: ${rgbColor.toString(16)}`);
  • get transparency(): number
  • Gets the transparency level of this entity.

    Returns number

    The transparency value (0-1, where 0 is opaque and 1 is fully transparent)

    const transparency = entity.transparency;
    
  • set transparency(value: number): void
  • Sets the transparency level of this entity.

    Parameters

    • value: number

      The transparency value (0-1, where 0 is opaque and 1 is fully transparent)

    Returns void

    entity.transparency = 0.5; // 50% transparent
    
  • get type(): string
  • Gets the type name of this entity.

    This method returns the entity type by removing the "AcDb" prefix from the constructor name.

    Returns string

    The entity type name

    const entity = new AcDbLine();
    console.log(entity.type); // "Line"
  • get visibility(): boolean
  • Gets whether this entity is visible.

    Returns boolean

    True if the entity is visible, false otherwise

    const isVisible = entity.visibility;
    
  • set visibility(value: boolean): void
  • Sets whether this entity is visible.

    Parameters

    • value: boolean

      True to make the entity visible, false to hide it

    Returns void

    entity.visibility = false; // Hide the entity
    

Methods

  • Appends vertex to the end of the vertex list for this leader. If vertex is not in the plane of the leader, then it will be projected parallel the leader's normal onto the leader's plane and the projection will be appended to the leader's vertex list. If the new vertex is too close to the one next to it (that is, within 1.e-10 for X, Y, and Z), the new vertex will not be appended.

    Parameters

    • point: AcGeVector3dLike

      Input point (in WCS coordinates) to add to the vertex list

    Returns void

  • Closes the object.

    All changes made to the object since it was opened are committed to the database, and a "closed" notification is sent. This method can be overridden by subclasses to provide specific cleanup behavior.

    Returns void

    obj.close();
    
  • Gets the value of the specified attribute.

    This method will throw an exception if the specified attribute doesn't exist. Use getAttrWithoutException() if you want to handle missing attributes gracefully.

    Parameters

    • attrName: string

      The name of the attribute to retrieve

    Returns any

    The value of the specified attribute

    When the specified attribute doesn't exist

    try {
    const value = obj.getAttr('objectId');
    } catch (error) {
    console.error('Attribute not found');
    }
  • Gets the value of the specified attribute without throwing an exception.

    This method returns undefined if the specified attribute doesn't exist, making it safer for optional attributes.

    Parameters

    • attrName: string

      The name of the attribute to retrieve

    Returns any

    The value of the specified attribute, or undefined if it doesn't exist

    const value = obj.getAttrWithoutException('optionalAttribute');
    if (value !== undefined) {
    // Use the value
    }
  • Gets the color of the layer this entity belongs to.

    This method retrieves the color from the layer table for the layer this entity belongs to.

    Returns null | AcCmColor

    The layer color, or undefined if the layer doesn't exist

    const layerColor = entity.getLayerColor();
    
  • Reset the vertex at index to the point point projected (along the plane normal) onto the plane containing the leader. It doesn't reset the vertex if that would cause one of the segments to become zero length (within 1e-10).

    Parameters

    • index: number

      Input index number (0 based) of the vertex to change

    • point: AcGeVector3dLike

      Input new point value (in WCS) to use

    Returns void

  • Gets the grip points for this entity.

    Grip points are the control points that can be used to modify the entity. This method should be overridden by subclasses to provide entity-specific grip points.

    Returns AcGePoint3d[]

    Array of grip points as 3D points

    const gripPoints = entity.subGetGripPoints();
    
  • Gets the object snap points for this entity.

    Object snap points are the points that can be used for precise positioning when drawing or editing. This method should be overridden by subclasses to provide entity-specific snap points.

    Parameters

    Returns void

    const snapPoints: AcGePoint3d[] = [];
    entity.subGetOsnapPoints(AcDbOsnapMode.Endpoint, 0, pickPoint, lastPoint, snapPoints);
  • Transforms this entity by the specified matrix.

    This method applies a geometric transformation to the entity. Subclasses should override this method to provide entity-specific transformation behavior.

    Parameters

    Returns this

    This entity after transformation

    const matrix = AcGeMatrix3d.translation(10, 0, 0);
    entity.transformBy(matrix);
  • Get the point that is the vertex at the location index (0 based) in this leader's vertex array.

    Parameters

    • index: number

      Input index number (0 based) of the vertex desired

    Returns void