Layer filter object used with the AutoCAD index/filter scheme (INDEXCTL / block regeneration), not the Layer Properties Manager tree.

An AcDbLayerFilter stores a flat list of layer names that participate in a layer-based query against a block. It is the counterpart to AcDbLayerIndex; AcDbLayerFilter.indexClass returns the layer index class name.

Mirrors the ObjectARX AcDbLayerFilter class. For the Layer Manager property/group filter tree, see AcLyLayerFilter / AcLyLayerGroup under the ObjectARX AcLy* classes.

In DXF this object is written as type LAYER_FILTER with subclass markers AcDbFilter and AcDbLayerFilter, and repeated group code 8 entries for layer names.

const filter = new AcDbLayerFilter();
filter.add('Walls');
filter.add('Doors');
console.log(filter.layerCount()); // 2
console.log(filter.getAt(0)); // 'Walls'

Hierarchy (View Summary)

Constructors

Accessors

  • get backClippingDistance(): undefined | number
  • Gets the back clipping plane distance (DXF group 41).

    Returns undefined | number

  • set backClippingDistance(value: undefined | number): void
  • Sets the back clipping plane distance (DXF group 41).

    Parameters

    • value: undefined | number

    Returns void

  • get clipBoundaryDisplayEnabled(): boolean
  • Gets whether the clip boundary is displayed (DXF group 71).

    Returns boolean

  • set clipBoundaryDisplayEnabled(value: boolean): void
  • Sets whether the clip boundary is displayed (DXF group 71).

    Parameters

    • value: boolean

    Returns void

  • 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 extensionDictionary(): undefined | string
  • Gets the objectId of the extension dictionary owned by this object.

    If the object does not have an extension dictionary, this returns undefined.

    In ObjectARX terms, this is equivalent to AcDbObject::extensionDictionary().

    Returns undefined | string

    The extension dictionary objectId, or undefined

    const dictId = obj.extensionDictionary
    if (dictId) {
    console.log('Has extension dictionary:', dictId)
    }
  • set extensionDictionary(value: undefined | string): void
  • Sets the objectId of the extension dictionary owned by this object.

    This does not create or delete the dictionary object itself ??it only establishes or clears the ownership relationship.

    Passing undefined removes the association.

    Parameters

    • value: undefined | string

      The extension dictionary objectId, or undefined

    Returns void

    obj.extensionDictionary = dict.objectId
    
  • get frontClippingDistance(): undefined | number
  • Gets the front clipping plane distance (DXF group 40).

    Returns undefined | number

  • set frontClippingDistance(value: undefined | number): void
  • Sets the front clipping plane distance (DXF group 40).

    Parameters

    • value: undefined | number

    Returns void

  • get isTemp(): any
  • Returns true if this object is temporary and not yet committed to the database.

    A temporary object is identified by its objectId starting with the TEMP prefix.

    Returns any

  • 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 layer name to this filter.

    Parameters

    • layerName: string

      Layer name to include in the filter.

    Returns boolean

    true if the name was added; false if it was empty or already present.

    Mirrors ObjectARX AcDbLayerFilter::add. Duplicate names are ignored.

    filter.add('0');
    
  • 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();
    
  • Creates the extension dictionary for this object if it does not already exist.

    This method closely mirrors the behavior of AcDbObject::createExtensionDictionary() in ObjectARX.

    • If the object already owns an extension dictionary, no new dictionary is created and the existing dictionary's objectId is returned.
    • Otherwise, a new AcDbDictionary is created, added to the same database, owned by this object, and its objectId is stored on this object.

    Returns undefined | string

    The objectId of the extension dictionary

    const dictId = obj.createExtensionDictionary()
    
  • Reads this object from a DXF filer (ObjectARX dxfIn).

    Reads common handle/owner fields, then delegates to dxfInFields. XData (group 1001+) is consumed when present after object fields.

    Group-102 control strings ({ACAD_XDICTIONARY, {ACAD_REACTORS, …) are consumed here so subclass readers still see handle/owner/subclass markers that follow them. Many real DXF writers emit these blocks on LAYER and entity records; skipping them would leave name/layer unset.

    Parameters

    Returns this

  • Reads object-specific DXF fields (ObjectARX dxfInFields).

    Subclasses should override, call super.dxfInFields(filer) first when appropriate, then consume their subclass marker and fields in an order-independent loop.

    Per the AutoCAD DXF specification, readers must ignore undefined group codes and must not assume field order. Within a subclass loop the correct unknown-code behavior is break (skip and continue). Use pushBackItem only to hand a group-100 subclass marker (or XData) to another reader — never to abort on an unrecognized optional code.

    Parameters

    Returns this

  • Gets the layer name at the specified index.

    Parameters

    • index: number

      Zero-based index into the layer name list.

    Returns string

    The layer name at index.

    Mirrors ObjectARX AcDbLayerFilter::getAt.

    If index is out of range.

    const name = filter.getAt(0);
    
  • 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
    }
  • Retrieves the XData associated with this object for a given application ID.

    Extended Entity Data (XData) allows applications to attach arbitrary, application-specific data to an AcDbObject. Each XData entry is identified by a registered application name (AppId) and stored as an AcDbResultBuffer.

    This method is conceptually equivalent to AcDbObject::xData() in ObjectARX, but simplified to return the entire result buffer for the specified AppId.

    Parameters

    • appId: string

      The application ID (registered AppId name) that owns the XData

    Returns undefined | AcDbResultBuffer

    The AcDbResultBuffer associated with the AppId, or undefined if no XData exists for that AppId

    const xdata = obj.getXData('MY_APP')
    if (xdata) {
    // Read values from the result buffer
    }
  • Returns whether this filter is considered valid.

    Returns boolean

    true if the filter is valid; otherwise false.

    Mirrors ObjectARX AcDbLayerFilter::isValid. A filter is valid when it contains at least one non-empty layer name.

  • Returns the number of layer names in this filter.

    Returns number

    The number of layer names.

    Mirrors ObjectARX AcDbLayerFilter::layerCount.

    const count = filter.layerCount();
    
  • Removes a layer name from this filter.

    Parameters

    • layerName: string

      Layer name to remove.

    Returns boolean

    true if the name was removed; otherwise false.

    Mirrors ObjectARX AcDbLayerFilter::remove.

    filter.remove('Walls');
    
  • Removes the XData associated with the specified application ID.

    After removal, calls to getXData() for the same AppId will return undefined. If no XData exists for the given AppId, this method has no effect.

    This mirrors the behavior of clearing XData for a specific application in ObjectARX rather than removing all XData from the object.

    Parameters

    • appId: string

      The application ID whose XData should be removed

    Returns void

    obj.removeXData('MY_APP')
    
  • Attaches or replaces XData for this object.

    If XData already exists for the given AppId, it is replaced by the provided AcDbResultBuffer. The caller is responsible for ensuring that:

    • The AppId is registered in the database's AppId table
    • The result buffer follows valid DXF/XData conventions (e.g. starts with a 1001 group code for the AppId)

    This method is conceptually similar to AcDbObject::setXData() in ObjectARX.

    Parameters

    Returns void

    const rb = new AcDbResultBuffer([
    { code: AcDbDxfCode.ExtendedDataRegAppName, value: 'MY_APP' },
    { code: AcDbDxfCode.ExtendedDataAsciiString, value: 'custom value' }
    ])

    obj.setXData('MY_APP', rb)