I am working on a script to change detail numbers of views on sheets. I’m sick of rejigging them and feels like I’m wasting my time doing a repetitive task… So perfect for a little script. I’ve been trying to learn a bit of python so would like to try do it using Pythonically (purely for practice / learning purposes)
So i’ve got to picking the objects (I intend to add a filter for views later … )
enumerate (starting at 1)
I’m now a little stuck as I have the element ids. However when I try to SetParameterByName I’m getting an exception, “Element Id has no attribute SetParameterByName” - this makes sense i have an id not an object.
I’m sure its a super easy step, but how to i get the object from the id to then change the parameter?
Also before getting the ids i was getting an Autodesk.Revit.DB.Reference , i thought getting the ids would be a good idea, should i have got something else?
(also i realise i’ve imported way too much - i just wrote them all down one day and copy them in to begin with - not ideal, but convenient)
import clr clr.AddReference('ProtoGeometry') from Autodesk.DesignScript.Geometry import * clr.AddReference("RevitAPI") clr.AddReference("RevitAPIUI") from Autodesk.Revit.DB import * clr.AddReference("RevitServices") import RevitServices from RevitServices.Persistence import DocumentManager from RevitServices.Transactions import TransactionManager from Autodesk.Revit.UI.Selection import ObjectType doc = DocumentManager.Instance.CurrentDBDocument uiapp = DocumentManager.Instance.CurrentUIApplication app = uiapp.Application uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument picked = uidoc.Selection.PickObjects(ObjectType.Element) objects = [ el.ElementId for el in picked ] objects = list(enumerate(objects,1)) for object in objects: object.SetParameterByName("Detail Number", object) OUT = objects