Class AcDbSymbolTable<RecordType>

Base class for all symbol tables in AutoCAD.

AcDbSymbolTable is the base class for all classes used to manage AutoCAD's built-in symbol tables. Symbol tables organize and store various types of records such as layers, linetypes, text styles, dimension styles, etc.

class MySymbolTable extends AcDbSymbolTable<MySymbolTableRecord> {
constructor(db: AcDbDatabase) {
super(db);
}
}

Type Parameters

Hierarchy (View Summary)

Constructors

Properties

_recordsById: Map<string, RecordType>

Map of records indexed by object ID

_recordsByName: Map<string, RecordType>

Map of records indexed by name

Accessors

  • 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 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';
    

Methods

  • Adds a record to both the database containing the table and the table itself.

    Parameters

    Returns void

    const record = new AcDbSymbolTableRecord({ name: 'MyRecord' });
    symbolTable.add(record);
  • 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();
    
  • Searches the table for a record with the specified name.

    Parameters

    • name: string

      The name to search for

    Returns undefined | RecordType

    The record with the specified name, or undefined if not found

    const record = symbolTable.getAt('MyRecord');
    if (record) {
    console.log('Found record:', record.name);
    }
  • 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
    }
  • Searches the table for a record with the specified ID.

    Parameters

    • id: string

      The ID to search for

    Returns undefined | RecordType

    The record with the specified ID, or undefined if not found

    const record = symbolTable.getIdAt('some-object-id');
    if (record) {
    console.log('Found record:', record.name);
    }
  • Gets the owner ID of a record with the specified ID.

    Parameters

    • id: string

      The ID to search for

    Returns undefined | RecordType

    The record with the specified ID, or undefined if not found

    const record = symbolTable.getOwnerIdAt('some-object-id');
    if (record) {
    console.log('Owner ID:', record.ownerId);
    }
  • Checks if the table contains a record with the specified name.

    Parameters

    • name: string

      The name to search for

    Returns boolean

    True if a record with the specified name exists, false otherwise

    if (symbolTable.has('MyRecord')) {
    console.log('Record exists');
    }
  • Checks if the table contains a record with the specified ID.

    Parameters

    • id: string

      The ID to search for

    Returns boolean

    True if a record with the specified ID exists, false otherwise

    if (symbolTable.hasId('some-object-id')) {
    console.log('Record exists');
    }
  • Removes the record with the specified name.

    Parameters

    • name: string

      The name of the record to remove

    Returns boolean

    True if the record was found and removed, false otherwise

    const removed = symbolTable.remove('MyRecord');
    if (removed) {
    console.log('Record removed successfully');
    }
  • Removes the record with the specified ID.

    Parameters

    • id: string

      The object ID of the record to remove

    Returns boolean

    True if the record was found and removed, false otherwise

    const removed = symbolTable.removeId('some-object-id');
    if (removed) {
    console.log('Record removed successfully');
    }