具体API可以查阅官方文档,这里提供剪切的关键词Void
在实际项目中,想要做一个族剪切构件,需要创建一个空心拉伸,然后执行剪切命令剪切掉我们希望剪切的模型构件
在算量的时候应用比较广执行连接/剪切命令,或者实际工程中的连接顺序
或是在精度要求高或者业主拖着不给结算的项目中也会出现一些稀奇古怪的要求,比如我遇到这个结构梁剪切建筑墙
这一步代替的实际操作就是 File ->New File -> Category的操作,我们获取到族文档才能在文档中绘制形状和修改参数
我这里创建的是一个公制常规模型的族
var app = commandData.Application.Application;
var rfaDoc = app
.NewFamilyDocument(@"C:\ProgramData\Autodesk\RVT 2019\Family Templates\Chinese\公制常规模型.rft");
var insert = BooleanOperationsUtils
.ExecuteBooleanOperation(wallSolid, solid, BooleanOperationsType.Intersect);
为了方便我们可以直接采用一个窗族,方便后期统计算量,但是窗族无法覆盖斜向的拉伸和弧形的交叉,所以暂时放弃窗族,采用统一的一个空心拉伸进行剪切
创建空心拉伸,bool值代表是实心还是空心
var z =Math.Abs( face1.Evaluate(new UV(0, 0)).Z - face2.Evaluate(new UV(0, 0)).Z);
// 创建空心模型
var extrusion = rfaDoc.FamilyCreate.NewExtrusion(false, arrA, SketchPlane.Create(rfaDoc, array0[0].GetPlane()), z);
加载时剪切的空心
这里我们需要先看一下族中每个数据代表的内容
rfaDoc.FamilyManager.NewType("111")
我们在族中做的标注想要连接到这里面可以使用
AssociateElementParameterToFamilyParameter(
Autodesk.Revit.DB.Parameter elementParameter,
FamilyParameter familyParameter)
连接到族参数中,这样就可以在项目文件中修改参数。
2. Family Parameters
此处族参数指的是上面Family Type的一些族参数,但是无法获取到我们希望修改的参数
var para = rfaDoc.OwnerFamily.get_Parameter(BuiltInParameter.FAMILY_ALLOW_CUT_WITH_VOIDS);
para.Set(1);
这样我们的族操作就完成了,下面需要将族载入到项目中,就完成空心族的创建
var family = rfaDoc.LoadFamily(doc);
InstanceVoidCutUtils
连接
JoinGeometryUtils
如果全项目遍历的话,没有相交的墙如果直接点剪切报错需要过滤一下这样的墙体。这里可以按照实际操作修改代码。
代码
using (Transaction trans = new Transaction(doc, "Modify"))
{
trans.Start();
BiMassUntil.Until.TaskDialog(walls.Count.ToString());
foreach (var wall in walls)
{
// BiMassUntil.Until.TaskDialog(can.ToString());
try
{
InstanceVoidCutUtils.AddInstanceVoidCut(doc, wall, instance);
}
catch (InvalidOperationException e)
{
Console.WriteLine(e);
continue;
}
}
trans.Commit();
}