An .rvt/.rfa file uses the Microsoft® Compound File Format to store its own data. Structurally it is similar to a hierarchical file system, and like a file system, it consists of two components:
Storage
— Analogous to a directory in a file system. It can have child components.
Its parent object should be a storage or root node.
Stream
— Analogous to a file in a file system. It can't have child nodes.
Its parent object should be a storage or root node.
The hierarchy is defined by a parent/child relationship. The Root storage is placed on the top of the hierarchy. This structure solves performance problems. If there is a new object that needs to be added or the existing one increases its size, it is not necessary to rewrite the whole file. New data is written to the next free location within the file, and each storage object updates its own structure. Each child object must have a unique name within the one parent object. The root storage object has no parent object and has no name.
The general structure of .rvt/.rfa files is described in the picture below (storage objects are in bold).
The root storage has the following streams:
BasicFileInfo
— Basic file information stream, which contains information such as
software name, version, file path, etc.
Contents
— File content stream.
PartAtom
— Part Atom stream (only for .rfa files), which contains an XML document with data
of family types and parameters.
ProjectInformation
— Project information stream.
RevitPreview
— File Preview stream, which contains preview class data and an image in PNG
format that can be used for early loading of a file preview.
TransmissionData
— Transmission Data stream, which contains information about the previous
state and the requested state of an external file reference.
The root storage has the following storage objects:
Formats
— Formats storage; it contains one stream - Latest
, which contains the file format
description of the file version.
Global
— Global storage, which contains five streams:
ContentDocuments
— Stream that contains content of documents.
DocumentIncrementTable
— Stream that contains information about every write
operation that was used during the current work session. For each write operation, a
new DocumentIncrement is added to this stream, which contains information about
the number of elements, time, username and other data of the moment when the write operation
was made.
ElemTable
— Stream that contains a list of all database elements.
History
— Stream that contains data about file upgrades.
Latest
— Stream that contains data of the database.
PartitionTable
— Stream that contains information for collaborative work with
the project.
Partitions
— Partitions storage, which contains one or more "partition" streams that store element data.
Copyright © 2002 – 2022. Open Design Alliance. All rights reserved.
|