我被要求将地板或屋顶分开。我能够以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。我还想拆掉红线所示的屋顶。
答案 0 :(得分:0)
经过一些反复试验后,我将屋顶分成不同的部分(10厘米厚)然后,我将每个部分分开(1m x 1,20m)的较小部分。所以它必须是一个两阶段的过程。似乎不可能在1个阶段做同样的事情。