Creates a new AcDbBlockTable instance.
The database this block table belongs to
Protected_recordsMap of records indexed by object ID
Protected_recordsMap of records indexed by name
Gets the attributes object for this AcDbObject.
The AcCmObject instance containing all attributes
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.
The database this object belongs to
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.
The database to associate with this object
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().
The extension dictionary objectId, or undefined
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.
The extension dictionary objectId, or undefined
Gets the MODEL_SPACE block table record.
This method returns the model space block table record, creating it if it doesn't exist. Model space is the primary drawing area where most entities are created and stored.
The MODEL_SPACE block table record
Gets the number of entries in the table.
The number of entries in the table
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.
The object ID as a string
Sets the object ID.
The new object ID
Gets the object ID of the owner of this object.
The owner object ID
Sets the object ID of the owner of this object.
The new owner object ID
Adds a record to both the database containing the table and the table itself.
The record to add to the table
Creates the extension dictionary for this object if it does not already exist.
This method closely mirrors the behavior of
AcDbObject::createExtensionDictionary() in ObjectARX.
The objectId of the extension dictionary
Searches the table for a record with the specified name.
The name to search for
The record with the specified name, or undefined if not found
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.
The name of the attribute to retrieve
The value of the specified attribute
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.
The name of the attribute to retrieve
The value of the specified attribute, or undefined if it doesn't exist
Searches for an entity in all of block table records with the specified ID.
The entity ID to search for
The entity with the specified ID, or undefined if not found
Searches the table for a record with the specified ID.
The ID to search for
The record with the specified ID, or undefined if not found
Gets the owner ID of a record with the specified ID.
The ID to search for
The record with the specified ID, or undefined if not found
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.
The application ID (registered AppId name) that owns the XData
The AcDbResultBuffer associated with the AppId, or undefined
if no XData exists for that AppId
Creates an iterator object that can be used to iterate over the records in the table.
An iterator object that can be used to iterate over the records
ProtectednormalizeRemoves the specified entity or entities from the block table.
Notes: Please call method AcDbEntity.erase to remove one entity instead of calling this function.
AutoCAD ObjectARX API doesn't provide such one method to remove entities from the block table. I guess it is done by friend class or function feature in C++. However, there are no similar feature in TypeScript. So we have to expose such one public method in AcDbBlockTable.
The object id or ids of entities to remove from this block table
— true if an entity in the block table existed and has been removed, or false if the entity does not exist.
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.
The application ID whose XData should be removed
Sets the value of an attribute.
The name of the attribute to set
Optionalval: AcDbObjectAttrs[A]The value to assign to the attribute
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:
This method is conceptually similar to AcDbObject::setXData() in ObjectARX.
The result buffer containing the XData to attach
Symbol table for block table records.
This class manages block table records which represent block definitions within a drawing database. Blocks are reusable collections of entities that can be inserted multiple times into a drawing.
Example