我想在从revit中绘制Pipe时以编程方式将指针从一个地方移动到另一个地方。
请参考下图。
从revit绘制管道时我可以更改偏移量(例如从15到16)。但无法以编程方式将创建管道指针位置从红点更改为橙色点(参考图像)。
这可能吗?
OR
我们可以在从Revit中绘制Pipe时以编程方式更改或访问Offset值。
参见下图
请建议..
此致
Namit Jain
答案 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(...)
函数有重载,所以看一下。如果您要将Pipe
和FamilyInstance
连接起来,可以使用
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);