如何使用Revit API获取axis属性?

2024-05-16 21:49:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用Revit交互式Python Shell在Revit中旋转对象。我不知道如何指定旋转轴。我不知道如何用API创建一条线,然后在E中指定一个轴lementTransformUtils.RotateElement()

RotateElement()中的第三个参数是轴。我正在创建一条线,但我不确定是否在.RotateElement()的第三个参数中指定其轴

当我运行这段代码时,什么都没有发生。如果我选择了一面墙,这种情况也是如此。如果有什么需要澄清的,请告诉我。在

谢谢

import clr
import math
clr.AddReference('RevitAPI') 
clr.AddReference('RevitAPIUI') 
from Autodesk.Revit.DB import * 

def pickobject():
    from Autodesk.Revit.UI.Selection import ObjectType
    __window__.Hide()
    picked = uidoc.Selection.PickObject(ObjectType.Element)
    __window__.Show()
    __window__.Topmost = True
    return picked

#set the active Revit application and document
app = __revit__.Application
doc = __revit__.ActiveUIDocument.Document

#define a transaction variable and describe the transaction
t = Transaction(doc, 'This is my new transaction')

#start a transaction in the Revit database
t.Start()

#perform some action here...

el = pickobject()    

p1 = XYZ(0,0,0)
p2 = XYZ(0,0,1)
myLine = Line.CreateBound(p1, p2)

ElementTransformUtils.RotateElement(doc, el.ElementId, myLine, math.pi / 2)

#commit the transaction to the Revit database
t.Commit()

#close the script window
__window__.Close()

结果我没有正确地选择元素或者把度数转换成弧度。完成这些操作后,我可以使我选择的元素旋转90度。我现在面临的唯一问题是选择元素旋转的原点。在


Tags: thefromimport元素参数docmathwindow
2条回答

我觉得你做错的是角度。 这需要以弧度表示。在你的例子中是π/2。 见here

一旦90度被0.5 * pi弧度取代,我觉得你的Python脚本就完全可以了。您可以将它与用于Creative Workaround to Rotate Elevation Marker in Chunks的工作示例代码片段进行比较。在

相关问题 更多 >