Creates a new AcDbBlockTableRecord instance.
Optionalattrs: Partial<AcDbBlockTableRecordAttrs>Input attribute values for this block table record
OptionaldefaultAttrs: Partial<AcDbBlockTableRecordAttrs>Default values for attributes of this block table record
StaticMODEL_Name constant for model space block table record
StaticPAPER_Name prefix for paper space block table records
Gets the attributes object for this AcDbObject.
The AcCmObject instance containing all attributes
Gets or sets the block insertion units.
This corresponds to DXF group code 70 in BLOCK_RECORD entries.
The insertion units value
Gets or sets the block scalability flag.
This corresponds to DXF group code 281 in BLOCK_RECORD entries.
The scalability value
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 or sets the block explodability flag.
This corresponds to DXF group code 280 in BLOCK_RECORD entries.
The explodability value
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 or sets block-type flags (DXF BLOCK group code 70).
Returns true if this is a model space block table record.
Model space is the primary drawing area where most entities are created.
True if this is a model space block table record
True when this block is an xref overlay (flag bit 8).
Returns true if this is a paper space block table record.
Paper space is used for creating layouts for printing and plotting.
True if this is a paper space block table record
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.
True when this is an xref whose content has not been loaded into the block.
File importers clear the Resolved bit via sanitizeImportedFlags because AutoCAD often writes Resolved even though web converters do not bind xref geometry. Runtime loaders (for example XATTACH) may set Resolved once an overlay session is available, even when the BTR stays empty.
True when this block is an external reference or an xref overlay.
Gets or sets the object ID of the associated AcDbLayout object in the Layouts dictionary.
This property links the block table record to its corresponding layout object, which defines the viewport configuration and display settings for the block. For model space blocks, this is typically empty, while paper space blocks have a corresponding layout ID.
The object ID of the associated layout
Gets or sets the name of the symbol table record.
This property corresponds to DXF group code 2 and is used for identifying and referencing the symbol table record.
The name of the symbol table record
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 or sets the base point of the block in WCS coordinates.
This point is the origin of the MCS (Model Coordinate System), which is the local WCS for the entities within the block table record.
The origin point of the block
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
Gets or sets the path of the externally referenced drawing.
Corresponds to DXF BLOCK group code 1. Empty when this is not an xref.
Gets or sets the PreviewIcon binary payload for this block definition.
Corresponds to AutoCAD .NET BlockTableRecord.PreviewIcon and DXF
BLOCK_RECORD group code 310. The payload is typically a DIB (BITMAPINFO +
bits), not a full BMP file. Stored as raw bytes to avoid hex doubling.
Preview icon bytes, or undefined when none exist
Appends the specified entity or entities to this block table record.
This method adds an entity to the block and sets up the necessary relationships between the entity and the block table record.
The entity or entities to append to this block table record
ProtectedassertProtectedassignAssociates this object with a database. Subclasses may override database
and call this helper to avoid super setter restrictions.
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
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.
ProtecteddxfConsumes a DXF group-102 control-string block that was already opened
(the opening 102 value is startValue, typically {ACAD_XDICTIONARY
or {ACAD_REACTORS).
For {ACAD_XDICTIONARY, the first soft-owner handle (360) is stored as
extensionDictionary. Other control strings are skipped until the
matching closing 102 / }.
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.
ProtecteddxfConsume XData pairs starting at group 1001 until end of object.
Writes the BLOCK entity that begins a block definition in the BLOCKS section.
DXF output writer.
The block table record instance (for chaining).
Writes the ENDBLK entity that terminates a block definition.
DXF output writer.
The block table record instance (for chaining).
Writes the BLOCK_RECORD table entry for this block table record.
DXF output writer.
The block table record instance (for chaining).
Writes DXF fields for this object.
DXF output writer.
The instance (for chaining).
ProtecteddxfEmit all attached XData buffers (DXF groups 1000–1071).
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 this block table record with the specified ID.
The entity ID to search for
The entity 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 entities in the block table record.
An iterator object that can be used to iterate over the entities
Removes the specified entity or entities from this block table record.
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 record. 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 AcDbBlockTableRecord.
The object id or ids of entities to remove from this block table record
??true if an entity in the block table record 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
Restores internal state from a detached clone while preserving identity fields.
Clone produced by clone or clonePreservingIdentity.
Sets an attribute after verifying the record is open for write.
Symbol table records follow ObjectARX semantics: existing database records must be opened with AcDbDatabase.openObjectForWrite before mutation.
Optionalval: AcDbBlockTableRecordAttrs[A]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
StaticisReturns true if the specified name is the name of the model space block table record.
Model space is the primary drawing area where most entities are created.
The name of one block table record.
True if the specified name is the name of the model space block table record.
StaticisReturns true if the specified name is the name of a paper space block table record.
Paper space is used for creating layouts for printing and plotting.
The name of one block table record.
True if the specified name is the name of a paper space block table record.
StaticsanitizeClears AutoCAD-internal xref status bits from BLOCK flags read from a file.
DXF group 70 bits 32 (AcDbBlockTableRecordFlag.Resolved) and 64 (AcDbBlockTableRecordFlag.Referenced) are documented as AutoCAD internal and ignored on input. Web converters do not bind xref geometry, so those bits must not suppress isUnresolvedXref. Runtime code (for example XATTACH overlay load) may set Resolved after content is available.
Raw block-type flags from DXF/DWG.
Flags with Resolved and Referenced cleared.
Base class for all symbol table records.
This class provides the fundamental functionality for all symbol table records, including name management and common attributes. Symbol table records represent entries in various symbol tables such as layer tables, linetype tables, text style tables, etc.
Example