RevitServer¶
Python wrapper for Autodesk Revit Server.
Example
>>> name = '<server name>'
>>> version = '2017' # server version in XXXX format
>>> rserver = RevitServer(name, version)
>>> # listing all files, folders, and models in a server
>>> for parent, folders, files, models in rserver.walk():
... print(parent)
... for fd in folders:
... print('\t@d {}'.format(fd.path))
... for f in files:
... print('\t@f {}'.format(f.path))
... for m in models:
... print('\t@m {}'.format(m.path))
-
class
rpws.server.
RevitServer
(name, version, username=None, machine=None)¶ Handles all communication with Revit Server as initialized.
Parameters: - name (str) – Server name.
- version (str) – Server version.
- username (str, optional) – Username to be passed to in http calls. This is set to current user if not provided.
- machine (str, optional) – Machine name to be passed to in http calls Set to current machine if not provided.
-
name
¶ Server name.
Type: str
-
version
¶ Server version.
Type: str
-
_base_uri
¶ Base URI of the initialized server
Type: str, private
-
_huser
¶ Username of the initialized server.
Type: str, private
-
_hmachine
¶ Machine name of the initialized server
Type: str, private
Example
>>> rserver = RevitServer('server01', '2017') >>> print(rserver) <rpws.RevitServer name:server01 version:2017>
-
cancellock
(nodepath)¶ Cancel any in-progress locks on model.
Parameters: nodepath (str) – Path to a model on the server. Example
>>> rserver = RevitServer('server01', '2017') >>> for model in rserver.listmodels('/example/path'): ... rserver.cancellock(model.path)
-
copy
(nodepath, new_nodepath, overwrite=False)¶ Copy a file, folder, or model to new location.
Parameters: - nodepath (str) – Path to a file, folder, or model on the server.
- new_nodepath (str) – Full path to new location and name.
- overwrite (bool) – True to overwrite any existing entries.
Example
>>> rserver = RevitServer('server01', '2017') >>> rserver.copy('/example/model.rvt', '/example/newmodel.rvt')
-
delete
(nodepath)¶ Delete a file, folder, or model.
Parameters: nodepath (str) – Path to a file, folder, or model on the server. Example
>>> rserver = RevitServer('server01', '2017') >>> rserver.delete('/example/path/model.rvt')
-
deletedescendentlocks
(nodepath)¶ Delete the decendent locks.
- API command:
- /descendent/locks
Parameters: nodepath (str) – Path to a dirctory on the server. Returns: list of str for list of entries with failed locks Example
>>> rserver = RevitServer('server01', '2017') >>> for folder in rserver.listfolders('/example/path'): ... rserver.deletedescendentlocks(folder.path)
-
getdescendentlocks
(nodepath)¶ Return the decendent locks info.
- API command:
- /descendent/locks
Parameters: nodepath (str) – Path to a dirctory on the server. Returns: rpws.models.ChildrenLockInfo Example
>>> rserver = RevitServer('server01', '2017') >>> for folder in rserver.listfolders('/example/path'): ... clockinfo = rserver.getdescendentlocks(folder.path) ... for locked_model_path in clockinfo.items: ... print(locked_model_path)
-
getdriveinfo
()¶ Return server drive information.
- API command:
- /contents
- API keys:
- DriveFreeSpace and DriveSpace
Returns: rpws.models.ServerDriveInfo Example
>>> rserver = RevitServer('server01', '2017') >>> dinfo = rserver.getdriveinfo() >>> print(dinfo.drive_space)
-
getfolderinfo
(nodepath)¶ Return directory info for provided path.
- API command:
- /directoryinfo
Parameters: nodepath (str) – Path to an entry on the server. Returns: rpws.models.EntryDirInfo Example
>>> rserver = RevitServer('server01', '2017') >>> for folder in rserver.listfolders('/example/path'): ... finfo = rserver.getfolderinfo(folder.path) ... print(finfo.date_created)
-
getinfo
()¶ Return server properties.
- API command:
- /serverproperties
Returns: rpws.models.ServerInfo Example
>>> rserver = RevitServer('server01', '2017') >>> sinfo = rserver.getinfo()
-
getmodelhistory
(nodepath)¶ Return model info from provided model path.
- API command:
- /history
Parameters: nodepath (str) – Path to a model on the server. Returns: rpws.models.MHistoryInfo Example
>>> rserver = RevitServer('server01', '2017') >>> for model in rserver.listmodels('/example/path'): ... mhist = rserver.getmodelhistory(model.path) ... for hist in mhist.items: ... print(hist.comment, hist.user)
-
getmodelinfo
(nodepath)¶ Return model info from provided model path.
- API command:
- /modelinfo
Parameters: nodepath (str) – Path to a model on the server. Returns: rpws.models.ModelInfoEx Example
>>> rserver = RevitServer('server01', '2017') >>> for model in rserver.listmodels('/example/path'): ... minfo = rserver.getmodelinfo(model.path) ... print(minfo.size)
-
getprojectinfo
(nodepath)¶ Return project info from provided model path.
- API command:
- /projectinfo
Parameters: nodepath (str) – Path to an entry on the server. Returns: rpws.models.ProjectInfo Example
>>> rserver = RevitServer('server01', '2017') >>> for model in rserver.listmodels('/example/path'): ... pinfo = rserver.getprojectinfo(model.path) ... for pparam in pinfo.paramters: ... print(pparam.name, pparam.value)
-
listfiles
(nodepath=None)¶ Return files from root or provided path.
- API command:
- /contents
- API key:
- Files
Parameters: nodepath (str, optional) – Path to an entry on the server. Root if not provided. Returns: list of rpws.models.FileInfo Example
>>> rserver = RevitServer('server01', '2017') >>> for file in rserver.listfiles('/example/path'): ... print(file.path)
-
listfolders
(nodepath=None)¶ Return folders from root or provided path.
- API command:
- /contents
- API key:
- Folders
Parameters: nodepath (str, optional) – Path to an entry on the server. Root if not provided. Returns: list of rpws.models.FolderInfo Example
>>> rserver = RevitServer('server01', '2017') >>> for folder in rserver.listfolders('/example/path'): ... print(folder.path)
-
listmodels
(nodepath=None)¶ Return models from root or provided path.
- API command:
- /contents
- API key:
- Models
Parameters: nodepath (str, optional) – Path to an entry on the server. Root if not provided. Returns: list of rpws.models.ModelInfo Example
>>> rserver = RevitServer('server01', '2017') >>> for model in rserver.listmodels('/example/path'): ... print(model.path)
-
lock
(nodepath)¶ Lock model.
Parameters: nodepath (str) – Path to a model on the server. Example
>>> rserver = RevitServer('server01', '2017') >>> for model in rserver.listmodels('/example/path'): ... rserver.lock(model.path)
-
mkdir
(nodepath)¶ Create a new directory.
Parameters: nodepath (str) – Path to a dirctory on the server. Example
>>> rserver = RevitServer('server01', '2017') >>> rserver.mkdir('/example/path')
-
move
(nodepath, new_nodepath, overwrite=False)¶ Move a file, folder, or model to new location.
Parameters: - nodepath (str) – Path to a file, folder, or model on the server.
- new_nodepath (str) – Full path to new location and name.
- overwrite (bool) – True to overwrite any existing entries.
Example
>>> rserver = RevitServer('server01', '2017') >>> rserver.move('/example/model.rvt', '/example/newmodel.rvt')
-
path
¶ Root path of server.
Returns: Root path Return type: str
-
rename
(nodepath, new_nodename)¶ Rename a file, folder, or model.
Parameters: - nodepath (str) – Path to a file, folder, or model on the server.
- new_nodename (str) – New name for file, folder, or model
Example
>>> rserver = RevitServer('server01', '2017') >>> rserver.rename('/example/path', '/example/newpath')
-
rmdir
(nodepath)¶ Delete a file, folder, or model.
Parameters: nodepath (str) – Path to a file, folder, or model on the server. Example
>>> rserver = RevitServer('server01', '2017') >>> rserver.rmdir('/example/path')
-
scandir
(nodepath=None)¶ Return files, folders, and models from root or provided path.
- API command:
- /contents
Parameters: nodepath (str, optional) – Path to an entry on the server. Root if not provided. Returns: rpws.models.EntryContents Example
>>> rserver = RevitServer('server01', '2017') >>> for entry in rserver.scandir('/example/path'): ... print(entry.path)
-
unlock
(nodepath)¶ Unlock model.
Parameters: nodepath (str) – Path to a model on the server. Example
>>> rserver = RevitServer('server01', '2017') >>> for model in rserver.listmodels('/example/path'): ... rserver.unlock(model.path)
-
walk
(top=None, topdown=True, digmodels=False)¶ Walk the provided path or root.
Yields a 4-tuple of parent directory, folders, files, and models
Parameters: - top (str, optional) – Parent directory. Root if not provided.
- topdown (bool) – True to start from top and walk down
- digmodels (bool) – True to list entries under a model folder Revit models on Revit Server are actually folders with files, and other subfolders.
Returns: (parent, folders, files, models)
Return type: tuple
Example
>>> rserver = RevitServer('server01', '2017') >>> for parent, folders, files, models in rserver.walk(): ... print(parent) ... for fd in folders: ... print('\t@d {}'.format(fd.path)) ... for f in files: ... print('\t@f {}'.format(f.path)) ... for m in models: ... print('\t@m {}'.format(m.path))
Data Models¶
-
class
rpws.models.
ServerInfo
(name, version, machine_name, roles, access_level_types, max_path_length, max_name_length, servers)¶ namedtuple for server properties
-
name
¶ Server name
Type: str
-
version
¶ Revit Server version
Type: str
-
machine_name
¶ Revit Server machine name
Type: str
-
roles
¶ List of server roles
Type: list<ServerRole>
-
access_level_types
¶ List of access level types
Type: list<str>
-
max_path_length
¶ Maximum allowed length for server paths
Type: int
-
max_name_length
¶ Maximum allowed length for server entry names
Type: int
-
servers
¶ List of neighbour servers
Type: list<str>
-
-
class
rpws.models.
ServerRole
¶ Enum representing various server role codes.
-
Host = 0
-
Accelerator = 1
-
Admin = 2
-
-
class
rpws.models.
ServerDriveInfo
(drive_space, drive_freespace)¶ namedtuple for server drive info
-
drive_space
¶ Total drive space in bytes
Type: int
-
drive_freespace
¶ Free drive space in bytes
Type: int
-
-
class
rpws.models.
EntryContents
(path, drive_space, drive_freespace, files, folders, lock_context, lock_state, locks_inprogress, models)¶ namedtuple for server entry contents (Encapsulates result of /contents)
-
path
¶ Full path of this entry on server
Type: str
-
drive_space
¶ Total server drive space in bytes
Type: int
-
drive_freespace
¶ Free server drive space in bytes
Type: int
-
files
¶ List of all files under this entry
Type: list<FileInfo>
-
folders
¶ List of all folders under this entry
Type: list<FolderInfo>
-
lock_context
¶ Lock context on this entry
Type: str
-
locks_inprogress
¶ List of all in-progress locks
Type: list<IPLockInfo>
-
models
¶ List of all models under this entry
Type: list<ModelInfo>
-
-
class
rpws.models.
EntryDirInfo
(path, name, size, date_created, date_modified, exists, folder_count, is_folder, last_modified_by, lock_context, lock_state, model_count, model_size, locks_inprogress)¶ namedtuple for server entry directory info (Encapsulates result of /directoryinfo)
-
path
¶ Full path of this entry on server
Type: str
-
name
¶ Entry name including extension
Type: str
-
size
¶ Entry size in bytes
Type: int
-
exists
¶ True if entry exists
Type: bool
-
folder_count
¶ Number of sub folders
Type: int
-
is_folder
¶ True of this entry if a directory
Type: bool
-
last_modified_by
¶ Username of user who last modified the model
Type: str
-
lock_context
¶ Lock context on this entry
Type: str
-
model_count
¶ Number of models under this entry
Type: int
-
model_size
¶ If this entry is a model, size of model in bytes
Type: int
-
locks_inprogress
¶ List of all in-progress locks
Type: list<IPLockInfo>
-
-
class
rpws.models.
LockState
¶ Enum representing Revit Server lock states.
-
Unlocked = 0
-
Locked = 1
-
LockedParent = 2
-
LockedChild = 3
-
BeingUnlocked = 4
-
BeingLocked = 5
-
-
class
rpws.models.
LockOptions
¶ Enum representing Revit Server lock options.
-
NotSet = 0
-
Read = 1
-
Write = 2
-
NonExclusiveReadWrite = 128
-
ReadAndNonExclusiveReadWrite = 129
-
WriteAndNonExclusiveReadWrite = 130
-
ReadWriteAndNonExclusiveReadWrite = 130
-
-
class
rpws.models.
LockType
¶ Enum representing Revit Server lock type.
-
Data = 0
-
Permission = 1
-
-
class
rpws.models.
FileInfo
(path, name, size, is_text)¶ namedtuple for info on a server file
-
path
¶ Full path of this file on server
Type: str
-
name
¶ File name including extension
Type: str
-
size
¶ File size in bytes
Type: int
-
is_text
¶ True if text file
Type: bool
-
-
class
rpws.models.
FolderInfo
(path, name, size, has_contents, lock_context, lock_state, locks_inprogress)¶ namedtuple for info on a server folder
-
path
¶ Full path of this folder on server
Type: str
-
name
¶ File name including extension
Type: str
-
size
¶ File size in bytes
Type: int
-
has_contents
¶ True if folder has contents
Type: bool
-
lock_context
¶ Lock context on this entry
Type: str
-
locks_inprogress
¶ List of all in-progress locks
Type: list<IPLockInfo>
-
-
class
rpws.models.
ModelInfo
(path, name, size, support_size, product_version, lock_context, lock_state, locks_inprogress)¶ namedtuple for info on a server model
-
path
¶ Full path of this model on server
Type: str
-
name
¶ File name including extension
Type: str
-
size
¶ File size in bytes
Type: int
-
support_size
¶ Size of all support files in bytes
Type: int
-
product_version
¶ Revit version of this model
Type: int
-
lock_context
¶ Lock context on this entry
Type: str
-
locks_inprogress
¶ List of all in-progress locks
Type: list<IPLockInfo>
-
-
class
rpws.models.
ModelInfoEx
(path, name, size, guid, date_created, date_modified, last_modified_by, support_size)¶ namedtuple for extended info on a server model
-
path
¶ Full path of this model on server
Type: str
-
name
¶ File name including extension
Type: str
-
size
¶ File size in bytes
Type: int
-
guid
¶ GUID of the model
Type: str
-
last_modified_by
¶ Username of user who last modified the model
Type: str
-
support_size
¶ Size of all support files in bytes
Type: int
-
-
class
rpws.models.
ProjectInfo
(parameters)¶ namedtuple for project info of a hosted model
-
parameters
¶ List of project parameters in this model
Type: list<ProjParameter>
-
-
class
rpws.models.
ProjParameter
(name, value, id, category, type, datatype)¶ namedtuple for info project parameters in a hosted model
-
name
¶ Parameter display name
Type: str
-
value
¶ Parameter value
Type: str
-
id
¶ Parameter unique id
Type: str
-
category
¶ Parameter category name
Type: str
-
datatype
¶ Parameter storage type
Type: ParamDataType
-
-
class
rpws.models.
ParamType
¶ Enum representing parameter types.
-
System = 'system'
-
Custom = 'custom'
-
Shared = 'shared'
-
Unknown = 'unknown'
-
-
class
rpws.models.
ParamDataType
¶ Enum representing parameter storage types.
-
Length = 'length'
-
Number = 'number'
-
Material = 'material'
-
Text = 'text'
-
MultilineText = "multiline text"
-
YesNo = 'yes/no'
-
Unknown = 'unknown'
-
-
class
rpws.models.
MHistoryInfo
(path, items)¶ namedtuple for model history info
-
path
¶ Full path of the hosted model
Type: str
-
items
¶ List of history items
Type: list<MHistoryItemInfo>
-
-
class
rpws.models.
MHistoryItemInfo
(id, comment, date, model_size, overwrittenby, support_size, user)¶ namedtuple for model history item info
-
id
¶ History item id
Type: str
-
comment
¶ Comment recorded when syncing
Type: str
-
size
¶ File size in bytes
Type: int
-
overwrittenby
¶ Id of history item overwriting this item
Type: str
-
support_size
¶ Size of all support files in bytes
Type: int
-
user
¶ Username recording the history item (by syncing model)
Type: str
-
-
class
rpws.models.
IPLockInfo
(age, lock_options, lock_type, model_path, timestamp, username)¶ namedtuple for info on an in-progress entry lock
-
age
¶ Age of the lock
Type: str
-
lock_options
¶ Lock options
Type: int
-
lock_type
¶ Lock type
Type: int
-
model_path
¶ Full path of the model being locked
Type: str
-
username
¶ Username who initiated this lock
Type: str
-
-
class
rpws.models.
ChildrenLockInfo
(path, items, lock_context)¶ namedtuple for info locked children under an entry
-
path
¶ Full path of parent entry
Type: str
-
items
¶ List of paths of locked models under this entry
Type: list<str>
-
lock_context
¶ Lock context of parent entry
Type: str
-
-
class
rpws.models.
DateEntry
¶ Timestamp data type wrapping Revit Server string timestamps.
Wraps Revit Server string timestamps in a typical python datetime.datetime subclass.
Example
>>> ts = DateEntry.fromrsdatestring("/Date(1483465201000)/") DateEntry(2017, 1, 3, 17, 40, 1)
-
class
rpws.models.
TimeSpanEntry
¶ Timespan data type wrapping Revit Server timespan.
Wraps Revit Server string timespan in a typical python datetime.timedelta subclass
Example
>>> ts = TimeSpanEntry.fromrstimespanstring("PT11M42.5154811S") TimeSpanEntry(0, 5856, 811000)