Reputation: 169
Can someone help me understand this error. I'm still learning the Revit API (and python) and searching hasn't helped. I'm trying to get the xyz Location Point of an element.
here is my code:
elements= ui.Selection()
for d in elements:
for l in d.Parameters:
for x in d.Location.Point:
print x
here is the output, NOTE: it does return three values:
149.412934765
69.7704247908
-3.71628688979
here is the error message. I don't understand the reference to idx in the error message:
IronPython Traceback:
Traceback (most recent call last):
File "C\BTS-NY-BETA.extension\BTS-NY-BETA.tab\Beta Tools.panel\BETA3.pushbutton\Get linked docs_script.py", line 32, in
Exception: idx can be only 0, 1, 2.
Parameter name: idx
Script Executor Traceback:
Autodesk.Revit.Exceptions.ArgumentOutOfRangeException: idx can be only 0, 1, 2.
Parameter name: idx
at Autodesk.Revit.DB.XYZ.get_Item(Int32 idx)
at Microsoft.Scripting.Interpreter.FuncCallInstruction`3.Run(InterpretedFrame frame)
at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
at Microsoft.Scripting.Interpreter.LightLambda.Run4[T0,T1,T2,T3,TRet](T0 arg0, T1 arg1, T2 arg2, T3 arg3)
at IronPython.Runtime.ItemEnumerator.System.Collections.IEnumerator.MoveNext()
at Microsoft.Scripting.Interpreter.FuncCallInstruction`2.Run(InterpretedFrame frame)
at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
at Microsoft.Scripting.Interpreter.LightLambda.Run2[T0,T1,TRet](T0 arg0, T1 arg1)
at IronPython.Compiler.PythonScriptCode.RunWorker(CodeContext ctx)
at PyRevitBaseClasses.ScriptExecutor.ExecuteScript(PyRevitCommandRuntime& pyrvtCmd)
Upvotes: 0
Views: 337
Reputation: 1096
A Point is not an array of values, accessing X, Y, Z is the right way.
Upvotes: 2
Reputation: 169
While I still do not understand the error, I was able to eliminate the error message by editing my code as follows:
elements= ui.Selection()
for d in elements:
for l in d.Parameters:
for pt in d.Location.Point:
print pt.X
print pt.Y
print pt.Z
Upvotes: 0