REVIT API:以3D方式拆分屋顶或地板

时间:2016-07-26 09:53:23

标签: c# api autodesk revit

我被要求将地板或屋顶分开。我能够以2D方式完成此操作,如Parts, Assemblies, PartUtils and DivideParts中所述。

这很好用。您可以基于面创建一个curveList,DivideParts会将对象分成几个部分。

      foreach( Face face in faceArray )
  {
    // find the center of the face
    BoundingBoxUV bbox = face.GetBoundingBox();
    // Some other code
  }
// Create the curves that will be used for the part division.
IList<Curve> curveList = new List<Curve>();
Curve curve1 = app.Create.NewLine( pointCenter, pointRight, true );
curveList.Add( curve1 );
Curve curve2 = app.Create.NewLine( pointRight, pointCorner, true );
curveList.Add( curve2 );
Curve curve3 = app.Create.NewLine( pointCorner, pointTop, true );
curveList.Add( curve3 );
Curve curve4 = app.Create.NewLine( pointTop, pointCenter, true );
curveList.Add( curve4 );

// intersectingReferenceIds will be empty for this example.
ICollection<ElementId> intersectingReferenceIds = new List<ElementId>();

// Divide the part
Transaction dividePartTransaction = new Transaction( doc, "Divide Part" );
dividePartTransaction.Start();
PartMaker maker = PartUtils.DivideParts( doc, elementIdsToDivide, intersectingReferenceIds, curveList, sketchPlane.Id );
dividePartTransaction.Commit();

我还希望能够以3D方式分割对象。因此,不仅在X和Y方向,而且在Z方向。

由于此方法基于Face和BoundingBoxUV(2维),我无法看到最佳方法。

为了弄清楚我想要完成什么,我包括了一个屋顶的图片,分为bij Revit。我还想拆掉红线所示的屋顶。

Roof divided in Parts

1 个答案:

答案 0 :(得分:0)

经过一些反复试验后,我将屋顶分成不同的部分(10厘米厚)然后,我将每个部分分开(1m x 1,20m)的较小部分。所以它必须是一个两阶段的过程。似乎不可能在1个阶段做同样的事情。

Roof split in parts of 10 cm thick

Each part split in parts of 1m by 1,2 m