ファミリを新規に作成するのではなく、ジオメトリ要素をドキュメント上で直接作成するための DirectShape クラスを利用することができます。
DirectShape クラスは、Revit 2015から追加されたAPIで、これは外部で作成されたジオメトリ要素をストアするためのクラスです。
主な使用方法は、IFCなどの他のデータフォーマットからジオメトリをインポートすることですが、ジオメトリ要素を保存する入れ物として利用できます。また作成したDirectShape オブジェクトは、カテゴリを割り当てることができます。
DirectShape オブジェクトにストアできるジオメトリ要素は、IListを引数としてとり、TessellatedShapeBuilder クラスを使用して作成することができます。
TessellatedShapeBuilder は、TessellatedFace オブジェクトで作成された複数の平面からソリッド、ポリメッシュを作成するためのビルダークラスです。
下記にサンプルコードを記載いたします。
using (Transaction tx = new Transaction(doc))
{
tx.Start("Create DirectShape");
double length = 1;
try
{
do
{
length = length + 1;
Debug.Print(
"Creating DirectShape tetrahedron with side length {0}...",
length);
List args = new List(3);
TessellatedShapeBuilder builder = new TessellatedShapeBuilder();
builder.OpenConnectedFaceSet(false);
args.Add(XYZ.Zero);
args.Add(length * XYZ.BasisX);
args.Add(length * XYZ.BasisY);
builder.AddFace(new TessellatedFace(args, ElementId.InvalidElementId));
args.Clear();
args.Add(XYZ.Zero);
args.Add(length * XYZ.BasisX);
args.Add(length * XYZ.BasisZ);
builder.AddFace(new TessellatedFace(args, ElementId.InvalidElementId));
args.Clear();
args.Add(XYZ.Zero);
args.Add(length * XYZ.BasisY);
args.Add(length * XYZ.BasisZ);
builder.AddFace(new TessellatedFace(args, ElementId.InvalidElementId));
args.Clear();
args.Add(length * XYZ.BasisX);
args.Add(length * XYZ.BasisY);
args.Add(length * XYZ.BasisZ);
builder.AddFace(new TessellatedFace(args, ElementId.InvalidElementId));
builder.CloseConnectedFaceSet();
TessellatedShapeBuilderResult result
= builder.Build(
TessellatedShapeBuilderTarget.Solid,
TessellatedShapeBuilderFallback.Abort,
graphicsStyleId);
ElementId categoryId = new ElementId(
BuiltInCategory.OST_GenericModel);
DirectShape ds = DirectShape.CreateElement(
doc, categoryId, "A", "B");
ds.SetShape(result.GetGeometricalObjects());
ds.Name = "Test";
}
while (Iterate_until_crash && length < 100);
}
catch (Exception e)
{
Debug.Print(
"Creating DirectShape tetrahedron with side length {0} "
+ "threw exception '{1}'",
length, e.Message);
message = e.Message;
return Result.Failed;
}
tx.Commit();
}
詳細は Revit API 開発者用ガイドの下記ページをご参照ください。
Revit API 開発者用ガイド - DirectShape
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | Revit API Tips: 複数のファミリを組み合わせて(ネストして)新しいファミリを作成する方法 | 0 | 6.17 | 17-08-2026 |
| 2 | Revit API Tips: 壁プロファイルの取得方法 | 0 | 5.8 | 17-08-2026 |
| 3 | Visual Studioで「InventorViewCtrl.ocxの自己登録に失敗しました」エラーが発生して、Inventor ViewコントロールをWindowsフォームへ追加することが出来ない | 0 | 10.94 | 17-08-2026 |
| 4 | Managed .Net API でレイアウト空間のビューポート表示範囲のオブジェクトを取得する方法 | 0 | 15.24 | 17-08-2026 |
| 5 | .NET :Interaction.GetObject で起動中の AutoCAD COM オブジェクトを取得できない場合の対処方法 | 0 | 10.2 | 04-09-2026 |
| 6 | AutoCAD .NET API :最後に追加されたエンティティの取得 | 0 | 13.03 | 23-08-2026 |
| 7 | What's New: Informed Design for Dynamo — Public Beta | 0 | 13.16 | 08-09-2026 |
| 8 | InventorのAPIで図面のシートをコピーする方法 | 0 | 9.21 | 17-08-2026 |
| 9 | Revit API Tips: アドインでバッチ処理を実装する方法 | 0 | 4.51 | 17-08-2026 |
| 10 | What's New: Sample Content | 0 | 17.3 | 09-09-2026 |