Revit Python Wrapper - PullRequest
       31

Revit Python Wrapper

1 голос
/ 22 июня 2019

Я вхожу в оболочку revit python / оболочку revit python, и у меня возникают проблемы с очень простой задачей.

У меня есть одна стена в моем проекте, и я просто пытаюсь изменить верхнее смещение от 0'- 0 "до 4'-0".Мне удалось изменить комментарии в свойствах, но это все.

Вот мой код:

import rpw
from rpw import revit, db, ui, DB, UI

element = db.Element.from_int(352690)
with db.Transaction('Change height'):
    element.parameters['Top Offset'].value = 10 

Вот моя ошибка:

[ERROR] Error in Transaction Context: has rolled back.
Exception : System.Exception: Parameter is Read Only: Top Offset
   at Microsoft.Scripting.Interpreter.ThrowInstruction.Run(InterpretedFrame frame)
   at Microsoft.Scripting.Interpreter.Interpreter.HandleException(InterpretedFrame frame, Exception exception)
   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 Microsoft.Scripting.Hosting.ScriptSource.Execute(ScriptScope scope)
   at Microsoft.Scripting.Hosting.ScriptSource.ExecuteAndWrap(ScriptScope scope, ObjectHandle& exception)

Любойи вся помощь приветствуется.Я прочитал документы, но они не читают статьи, доступные только для чтения.

Я в редакции 2019. RPS использует python 2.7.7

1 Ответ

1 голос
/ 23 июня 2019

Я думаю, что это вопрос «Revit Python Wrapper» (RPW), а не «RevitPythonShell» (RPS). Я знаком с тем, как обрабатываются транзакции в RPS, но документация для RPW кажется совершенно другой.

Вот как будет выглядеть ваш код в RevitPythonShell:

import clr
clr.AddReference('RevitAPI') 
clr.AddReference('RevitAPIUI') 
from Autodesk.Revit.DB import * 
from Autodesk.Revit.UI import *
app = __revit__.Application
doc = __revit__.ActiveUIDocument.Document
ui = __revit__.ActiveUIDocument

element = doc.GetElement(ElementId(352690))

t = Transaction (doc, 'Change Height')
t.Start()
parameter = element.GetParameters('Top Offset')[0]
parameter.Set(10)   
t.Commit()
...