Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

Revit API Tips: ソリッドやメッシュのジオメトリをプロジェクト上に作図する方法

Дата публикации: 17-08-2026 07:33:13


ファミリを新規に作成するのではなく、ジオメトリ要素をドキュメント上で直接作成するための 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

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1Revit API Tips: 複数のファミリを組み合わせて(ネストして)新しいファミリを作成する方法06.1717-08-2026
2Revit API Tips: 壁プロファイルの取得方法05.817-08-2026
3Visual Studioで「InventorViewCtrl.ocxの自己登録に失敗しました」エラーが発生して、Inventor ViewコントロールをWindowsフォームへ追加することが出来ない010.9417-08-2026
4Managed .Net API でレイアウト空間のビューポート表示範囲のオブジェクトを取得する方法015.2417-08-2026
5.NET :Interaction.GetObject で起動中の AutoCAD COM オブジェクトを取得できない場合の対処方法010.204-09-2026
6AutoCAD .NET API :最後に追加されたエンティティの取得013.0323-08-2026
7What's New: Informed Design for Dynamo — Public Beta013.1608-09-2026
8InventorのAPIで図面のシートをコピーする方法09.2117-08-2026
9Revit API Tips: アドインでバッチ処理を実装する方法04.5117-08-2026
10What's New: Sample Content017.309-09-2026

Классификация: . Схожих патентов: 0. Схожих новостей: 10. Тональность: 0. Информативность: 7.59. Источник: forums.autodesk.com.