To quote your own too early for the API reply (sorry, couldn’t help myself):
The only way to workaround API not being present is generally hacks that abuse other features. In the case of view titles I’m not familiar with any myself, although John’s workflow looks interesting despite its many noted limits.
This works for me, but you wont be able to control the viewport title beyond where the placement puts it I think:
# Made by Gavin Crump
# Free for use
# BIM Guru, www.bimguru.com.au
# Boilerplate text
import clr
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
# Current doc/app/ui
doc = DocumentManager.Instance.CurrentDBDocument
# Define list/unwrap list functions
def uwlist(input):
result = input if isinstance(input, list) else [input]
return UnwrapElement(result)
# Preparing input from dynamo to revit
viewports_ex = uwlist(IN[0])
viewports_new = []
vids = [vp.ViewId for vp in viewports_ex]
sids = [vp.SheetId for vp in viewports_ex]
bcts = [vp.GetBoxCenter() for vp in viewports_ex]
# Delete old viewports
TransactionManager.Instance.EnsureInTransaction(doc)
for vp in viewports_ex:
doc.Delete(vp.Id)
TransactionManager.Instance.TransactionTaskDone()
# Make new viewports
TransactionManager.Instance.EnsureInTransaction(doc)
for v,s,b in zip(vids,sids,bcts):
vp_new = Viewport.Create(doc,s,v,b)
viewports_new.append(vp_new)
TransactionManager.Instance.TransactionTaskDone()
# Preparing output to Dynamo
OUT = viewports_new