一般的な特殊機器ファミリ内にボイド押し出しを含む面ホスト ファミリを挿入しようとしています。シナリオは次のとおりです。
「親」ファミリには、Z = 100 mm、高さ = 40 mm で配置された長方形の押し出しがあります。押し出しはプログラムで作成されます
私は単純なボイド シリンダーを持つ .rfa を持っています。この rfa はファミリであり、「 」を true に
Generic model
設定しましたCut with voids
押し出しを貫通するために、このボイド ファミリのインスタンスを親ファミリ内に挿入したいと考えています。
私が使用しているコードは次のとおりです。
Options opt = _commandData.Application.Application.Create.NewGeometryOptions();
opt.ComputeReferences = true;
var geo = shelf.get_Geometry(opt);//shelf is the extrusion
//location = 0,-800,100
//width = 1000
//depth = 800
//height = 140
//all measures are mm
PlanarFace pf = null;
foreach (GeometryObject obj in geo)
{
Solid solid = obj as Solid;
if (null != solid)
{
foreach (Face face in solid.Faces)
{
pf = face as PlanarFace;
if (null != pf)
{
XYZ normal = pf.Normal.Normalize();
if (0.0 < normal.Z && normal.X < 1 && normal.Y < 1)
{
break;
}
}
}
}
}
if (pf != null)
{
var location = new XYZ(50D.ToRevitMeasure(), -100D.ToRevitMeasure(), 140D.ToRevitMeasure());
var referenceDirection = XYZ.BasisX;
FamilySymbol symbol = null;
RevitBaseUtilities.DoSomethingInsideTransaction(() => familyDocument.LoadFamilySymbol(holeFileName, Path.GetFileNameWithoutExtension(holeFileName),
new FamilyLoadingDontOverwriteOption(), out symbol), familyDocument);
FamilyInstance inst;
RevitBaseUtilities.DoSomethingInsideTransaction(() => inst = familyDocument.FamilyCreate.NewFamilyInstance(pf, location, referenceDirection , symbol), familyDocument);
familyDocument.SaveAs(resultFileName);
familyDocument.Close(false);
問題は、円柱が常に Z=0 に配置されることです。必要に応じて、穴ファミリと結果プロジェクトを送信できます。