indent preformatted text by 4 spaces<img src="//cdck-file-uploads-us1.s3.dualstack.us-west-2.amazonaws.com/flex022/uploads/dynamobim/original/3X/f/f/ffb1428f3f4f804bd2c7e6772ab6f5bdd07de14e.png" width="690" height="395">
Hello
I’m trying to add a list of filters from one view onto the Active View. I’m having trouble getting it to work (see screenshot of nodes for exact error).
import clr
clr.AddReference(“RevitServices”)
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
clr.AddReference(“RevitAPI”)
import Autodesk
from Autodesk.Revit.DB import *
import System
from System.Collections.Generic import *
dataEnteringNode = IN
parameterFilterElements = IN[0]
view = UnwrapElement(IN[1])
TransactionManager.Instance.EnsureInTransaction(doc)
pfeList = []
for pfE in parameterFilterElements:
pfeList.append(ElementId(pfe.Id))
typedpfeList = ListElementId
filterlist = []
for i in filterName:
filterlist.append(i)
try:
for name in filterlist:
view.AddFilter(name.Id)
except:
pass
TransactionManager.Instance.TransactionTaskDone()
OUT = view
Hi @Ben_Veasey
Please try pasting your code again with the proper formatting:
Paste/Ctrl+V
, select all text, and press Ctrl+Shift+C
or press the Pre-formatted text button in the text formatting toolbar
This is a syntax error, so it could easily be triggered by something like an extra or missing space character, so it will be hard/impossible to spot it without the correct formatting
PS: this looks weird, but might be the formatting:
typedpfeList = ListElementId
Here’s my latest attempt:
indent preformatted text by 4 spaces
ParameterFilterElement Pasted Code.txt (1.2 KB)
import clr
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
import System
from System.Collections.Generic import *
dataEnteringNode = IN
parameterFilterElements = IN[0]
view = UnwrapElement(IN[1])
TransactionManager.Instance.EnsureInTransaction(doc)
# Iterate thru the parameterFilterElements and create a list of IDs
# pfeList = []
# for pfe in parameterFilterElements:
# pfeList.append(ElementId(pfe.Id))
# This part here might not be necesary. It would have been used for
# ParameterFilterElement.Create since the Revit would have only accepted a TypedList
# typedpfeList = List[ElementId](pfeList)
# Using a Try statement since the View might already contain the Filter and would throw an error
try:
for pfe in parameterFilterElements:
view.AddFilter(pfe.Id)
except:
pass
TransactionManager.Instance.TransactionTaskDone()
OUT = view
You need to fix your indentation.Python cares about indentation ad uses it define the flow
The only parts that should be indented is the try
block, and the for
loop.
code
code
code
try:
for pfe in parameterFilterElements:
view.AddFilter(pfe.Id)
except:
pass
restofcode
restofcode
You should go through some basic tutorials on python before attempting this:
http://www.diveintopython.net/getting_to_know_python/indenting_code.html
Hi Gui
I have removed the indents and the code runs fine now BUT the filters aren’t being copied across… I’ve been planning to try the Codecademy tutorials for a while…I also need to learn Lua for Stingray…eeek!
Here’s my code without the indents:
import clr
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
import System
from System.Collections.Generic import *
dataEnteringNode = IN
parameterFilterElements = IN[0]
view = UnwrapElement(IN[1])
TransactionManager.Instance.EnsureInTransaction(doc)
# Iterate thru the parameterFilterElements and create a list of IDs
# pfeList = []
# for pfe in parameterFilterElements:
# pfeList.append(ElementId(pfe.Id))
# This part here might not be necesary. It would have been used for
# ParameterFilterElement.Create since the Revit would have only accepted a TypedList
# typedpfeList = List[ElementId](pfeList)
# Using a Try statement since the View might already contain the Filter and would throw an error
try:
for pfe in parameterFilterElements:
view.AddFilter(pfe.Id)
except:
pass
TransactionManager.Instance.TransactionTaskDone()
OUT = view