Good Day, I’ve been trying to hide a specific column field (“Number”) on my room schedule. This should be applied to all room schedule. What I’m trying to do is to convert all ScheduleViewName into views so that it would work on the script. Please help, Thank you!
Can you show the source code of the Hide Column node?
Hi here it is
import clr
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
from Revit.Elements import *
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.GeometryReferences)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
uiapp=DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
view = doc.ActiveView
def U(elem):
a = UnwrapElement(elem)
return a
schedule = UnwrapElement(IN[0])
colName = IN[1]
definit = schedule.Definition
countParameters = definit.GetFieldCount()
# Parameter names
names = []
for i in range(countParameters):
Parname = definit.GetField(i).ColumnHeading # Parameter Column name
if Parname == colName:
index = i
field = schedule.Definition.GetField(index) # schedule field
TransactionManager.Instance.EnsureInTransaction(doc)
field.IsHidden = IN[2] # 1 = Hide, 0 = Show
TransactionManager.Instance.TransactionTaskDone()
OUT = schedule
Hi @kdelacruz11221004 , let’s try this:
import clr
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
from Revit.Elements import *
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.GeometryReferences)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
view = doc.ActiveView
def U(elem):
if isinstance(elem, list):
return [UnwrapElement(e) for e in elem]
else:
return UnwrapElement(elem)
schedules = U(IN[0])
colName = IN[1]
hide = IN[2]
results = []
for schedule in schedules:
if isinstance(schedule, Autodesk.Revit.DB.ViewSchedule):
definit = schedule.Definition
countParameters = definit.GetFieldCount()
# Parameter names
names = []
index = None
for i in range(countParameters):
Parname = definit.GetField(i).ColumnHeading # Parameter Column name
if Parname == colName:
index = i
break
if index is not None:
field = schedule.Definition.GetField(index) # schedule field
TransactionManager.Instance.EnsureInTransaction(doc)
field.IsHidden = hide # 1 = Hide, 0 = Show
TransactionManager.Instance.TransactionTaskDone()
results.append(schedule)
else:
results.append(None)
else:
results.append(None)
OUT = results
In your previous code, you forgot to pass each schedule into a loop so it didn’t work.
Hi @Luffy11, You are amazing thank you so much for this now it works!
I do have 1 question tho, What if I want a multiple number of fields what should I edit in the script?
@kdelacruz11221004 just a little modification with loop as shown in the image and you can get the expected result.
Here’s the modified code:
import clr
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
from Revit.Elements import *
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.GeometryReferences)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
view = doc.ActiveView
def U(elem):
if isinstance(elem, list):
return UnwrapElement(elem)
else:
return [UnwrapElement(elem)]
schedules = U(IN[0])
colName = IN[1]
hide = IN[2]
results = []
for schedule in schedules:
if isinstance(schedule, Autodesk.Revit.DB.ViewSchedule):
definit = schedule.Definition
countParameters = definit.GetFieldCount()
# Parameter names
index = None
for i in range(countParameters):
Parname = definit.GetField(i).ColumnHeading # Parameter Column name
for name in colName:
if Parname == name:
index = i
if index is not None:
field = schedule.Definition.GetField(index) # schedule field
TransactionManager.Instance.EnsureInTransaction(doc)
field.IsHidden = hide # 1 = Hide, 0 = Show
TransactionManager.Instance.TransactionTaskDone()
results.append(schedule)
else:
results.append(None)
OUT = results
And put the IN[1] in the def U like this so that it can work for one or more columns.
Hi @Luffy11 Now it works, thank you so much! you are a great of help!
@kdelacruz11221004 , you’re welcome. I’m glad to help.
1 Like