以编程方式移动点(管道指针位置)

时间:2016-02-01 05:05:10

标签: revit-api revit-2015

我想在从revit中绘制Pipe时以编程方式将指针从一个地方移动到另一个地方。

请参考下图。

enter image description here

从revit绘制管道时我可以更改偏移量(例如从15到16)。但无法以编程方式将创建管道指针位置从红点更改为橙色点(参考图像)。

这可能吗?

OR

我们可以在从Revit中绘制Pipe时以编程方式更改或访问Offset值。

参见下图

enter image description here

请建议..

此致

Namit Jain

1 个答案:

答案 0 :(得分:0)

通过Autodesk.Revit.DB.Plumbing命名空间:有一个功能:

public static Pipe Create(Document document, ElementId systemTypeId, ElementId pipeTypeId, ElementId levelId, XYZ startPoint, XYZ endPoint);

您可以在代码中使用它,例如:

XYZ fStartPoint = new XYZ(0.0, 0.0, 0.0);  //Modify these values to your desired coordinates
XYZ fEndPoint = new XYZ(0.0, 0.0, 0.0);    //Modify these values to your desired coordinates

ElementId pPipeTypeId = pPreviousPipe.PipeType.Id;
ElementId pPipeLevelId = pPreviousPipe.LevelId;
ElementId pSystemId = pPreviousPipe.MEPSystem.Id;

if (pPipeLevelId == ElementId.InvalidElementId)
{
    Level lLevel = null;
    using (Transaction pTrans = new Transaction(doc, "Get Level"))
    {
        pTrans.Start();
        lLevel = Level.Create(doc, pPreviousPipe.LevelOffset;
        pTrans.Commit();
    }

    pPipeLevelId = lLevel.Id;
}

Pipe.Create(doc, pSystemId, pPipeTypeId, pPipeLevelId, fStartPoint, fEndPoint);

Create(...)函数有重载,所以看一下。如果您要将PipeFamilyInstance连接起来,可以使用

public static Pipe Create(Document document, ElementId pipeTypeId, ElementId levelId, Connector startConnector, Connector endConnector);

将通过Connector直接连接它们。至于抵消管道,我上面所做的最适合你。祝你好运!

添加了注释(编辑)

第二张图片中的Offset指的是您飞机的Z轴。你想做更像

的事情
var fTemp = pPreviousPipe.Location as LocationCurve;
var fEnd = fTemp.Curve.GetEndPoint(1);    

//Index 0 is the beginning of the pipe (where user started drawing) 
//Index 1 is the end of the pipe (where user stopped drawing)

XYZ fStartPoint = new XYZ(fEnd.X, fEnd.Y - .5, fEnd.Z);
double dPipeLength = 10.0;
XYZ fEndPoint = new XYZ(fStartPoint.X + dPipeLength, fStartPoint.Y, fStartPoint.Z);