ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
テンプレート
テンプレートがありません。
.NET SDK 入門
Revit のような .NET 製アプリのアドインから Speckle を扱うときに中心となるのが .NET SDK です。NuGet での導入から、認証・Base 作成・send / receive までを、概念を押さえながら整理します。
この記事の要点
- Speckle の .NET SDK は NuGet で配布され、近年
Speckle.Sdkへ再編された(旧Speckle.Core系) - C# から認証・データの作成(Base)・send / receive をプログラムで扱える
- Revit / Rhino など .NET ベースのホストアプリ向けアドイン開発と相性がよい
- 新世代の用語は Project / Model / Version、旧 v2 は Stream / Branch / Commit に対応する
本記事は Speckle カテゴリの一部として、Speckle の .NET SDK を C# 開発者向けに整理します。Revit のような .NET 製アプリのアドインから Speckle を扱う場面で中心になる SDK です。ホスト側の API と組み合わせる場合は Revit API概要 もあわせて参照してください。
1.NET SDK とは・パッケージの再編
Speckle の .NET SDK は、Speckle サーバーやローカルのデータ転送層を C# / .NET から操作するためのライブラリ群です。NuGet パッケージとして配布され、コンソールアプリ・サービス・各種 CAD/BIM アドインに組み込めます。
歴史的には Speckle.Core・Speckle.Objects といったパッケージ構成でしたが、近年は Speckle.Sdk を中心とした構成へ再編されています。名前空間やクラスの配置が版によって異なるため、サンプルコードを写す際は「どの世代の SDK か」を必ず確認してください。本記事のコードは概念を示すものであり、実際の型名・メソッド名は利用するバージョンの公式ドキュメントに合わせる必要があります。
Speckle.Sdk 中心。用語は Project / Model / VersionSpeckle.Core 中心。用語は Stream / Branch / Commit2導入(NuGet)
.NET プロジェクトに NuGet 経由で追加します。新世代では概ね次のようなパッケージを参照します(パッケージ名は版で変わり得ます)。
dotnet add package Speckle.Sdk
dotnet add package Speckle.Objects
対象フレームワークは、組み込み先のホストアプリに合わせます。Revit アドインであれば、その Revit バージョンが要求する .NET ランタイム(.NET Framework または .NET 8 系など、年次で異なる)に一致させる必要があります。ランタイム不一致は読み込み失敗の典型原因です。
3認証(アカウント・トークン)
Speckle サーバーへアクセスするには認証情報が必要です。多くの場合、デスクトップの Speckle Manager / Connector で追加済みのローカルアカウントを SDK から取得して使うか、Personal Access Token を明示的に渡します。概念的なコードは次のようになります。
// 既定アカウントの取得(概念例・型名は版に依存)
var account = AccountManager.GetDefaultAccount();
// もしくはトークンとサーバー URL を明示
// var account = new Account { token = "xxxxx", serverInfo = ... };
トークンはソースコードに直書きせず、環境変数・設定ファイル・シークレットストアから読み込む。権限(読み取り専用か書き込み可か)も用途に応じて最小限に絞る。
4Base オブジェクトの作成
Speckle のデータはすべて Base を基底とするオブジェクトで表現されます。任意のプロパティを動的に持たせられ、これがツール間でデータをやり取りする共通の器になります。データモデルの詳細は オブジェクトモデル を参照してください。
// 動的プロパティを持つ汎用オブジェクト
var obj = new Base();
obj["name"] = "Wall-01";
obj["height"] = 3000.0; // 単位は呼び出し側の取り決めに従う
obj["category"] = "Walls";
// 子要素を入れ子にできる
var child = new Base();
child["type"] = "Opening";
obj["@elements"] = new List<Base> { child };
@ で始まるプロパティは「分離して保存される(detach)」という Speckle の慣習を表し、大きな構造を効率よく保存・参照するために使われます。
5send / receive の基本
作成した Base をサーバーへ送る(send)と、その状態を指す Version(旧 Commit)が作られます。逆に受け取る(receive)と、指定した Version のオブジェクトツリーが復元されます。send / receive の概念は send/receive で詳しく扱います。
// 送信(概念例)
// 1) ローカルにシリアライズして保存
// 2) サーバーへ転送し Version を作成
var objectId = await Operations.Send(obj, transport);
// その後、Project(旧Stream) / Model(旧Branch) に対して Version を作成する API を呼ぶ
// 受信(概念例)
var received = await Operations.Receive(objectId, transport);
新世代の API では、転送(オブジェクトの保存・取得)と「プロジェクトへの Version 登録」は分けて扱われる傾向があります。ここでも具体的なメソッド名・引数は版に依存するため、利用バージョンの公式サンプルで確認してください。
6Revit アドインからの利用
Revit は .NET 上で動作するため、アドイン内から Speckle .NET SDK を直接呼び出せます。Revit 側 API の基礎は Revit API概要 を参照してください。典型的な流れは次のとおりです。
- Revit API で要素(壁・床など)の形状・パラメータを取得する
- 取得した情報を
Base(または Speckle.Objects の型)へ変換する - SDK で send し、Project / Model に Version を作成する
- 受信側で receive した
Baseをホスト側のジオメトリへ戻す - 属性をホスト要素のパラメータへ書き戻す
- 長時間の処理は UI スレッドをブロックしない設計にする
この「ホスト要素 ⇄ Base への双方向変換」を担うのが各コネクタの中心ロジックです。コネクタの考え方は コネクタ、Revit 連携の具体は Revit⇄Speckle で扱います。アドイン内では Revit の API 呼び出しが UI スレッド制約を持つ点に注意し、長時間の send / receive はトランザクションや実行コンテキストの扱いに気をつけてください。
つまずきやすい点
- パッケージ名・名前空間の世代差:
Speckle.Core時代のサンプルがそのまま動かないことがある - .NET ランタイムの不一致:ホストアプリの要求バージョンに合わせる
- 単位・座標系:
Baseは単位を強制しないため、送受信側で取り決めが必要 - 非同期処理:send / receive は
asyncで、UI スレッドをブロックしない設計にする
Python から扱いたい場合は specklepy が選択肢になります。.NET SDK はホストアプリ組み込み、specklepy はデータ処理・自動化、と役割で使い分けると整理しやすいでしょう。
→次に読む
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
テンプレート
テンプレートがありません。
子ページはありません
人気ページ
- 1 建築とは — 建築物の定義・建築と土木の違い・ライフサイクルをわかりやすく解説
- 2 建築・BIM 総合Wiki — 建築の基礎からBIM・Revit・Speckleまで体系的に解説
- 3 建築図面の縮尺と寸法表記 — 1/100・1/50 の使い分けと mm 基準・面積をやさしく解説
- 4 日本のBIM動向 — 国交省BIM/CIM・建築BIM推進会議・ガイドラインをわかりやすく整理
- 5 建築プロジェクトの登場人物|施主・設計事務所・ゼネコン・サブコンと発注方式
- 6 建築入門 — 分野・登場人物・設計から竣工までの流れをやさしく整理
- 7 建築の3分野とは|意匠・構造・設備(MEP)の役割分担とBIMの分野別モデル
- 8 Speckle Automateとは|Version公開トリガーで自動QA・命名規約チェックを走らせる仕組み
- 9 Revit フェーズとデザインオプション|既存・解体・新築の段階管理と設計案比較
- 10 Revit ワークシェアリング徹底解説|ワークセット・セントラルファイル・同期(SWC)・クラウド共同作業
最近更新/作成されたページ
- Dynamo入門|Revitビジュアルプログラミング・ノードとワイヤ・Pythonノード・Dynamo Player NEW 2026-06-29 15:23:47
- 建築の3分野とは|意匠・構造・設備(MEP)の役割分担とBIMの分野別モデル NEW 2026-06-29 15:23:47
- specklepy入門|Python SDKでSpeckleClient認証・operations.send/receive NEW 2026-06-29 15:23:47
- 建築図面の縮尺と寸法表記 — 1/100・1/50 の使い分けと mm 基準・面積をやさしく解説 NEW 2026-06-29 15:23:47
- Speckle Viewerとは|Web3D表示・プロパティ確認・iframe埋め込みと@speckle/viewer NEW 2026-06-29 15:05:23
- Speckle .NET SDK入門|NuGet導入・認証・Base作成・send/receiveとRevitアドイン連携 NEW 2026-06-29 15:05:23
- 日本のBIM動向 — 国交省BIM/CIM・建築BIM推進会議・ガイドラインをわかりやすく整理 NEW 2026-06-29 15:05:23
- Speckle Serverセルフホスト|docker-compose構成とデータ主権・運用設計 NEW 2026-06-29 15:03:33
- Speckle Automateとは|Version公開トリガーで自動QA・命名規約チェックを走らせる仕組み NEW 2026-06-29 15:03:33
- Speckleデータ連携の実務パターン|数量集計・Power BI・QA・他DB連携のパイプライン NEW 2026-06-29 15:03:33
- SpeckleとIFCの違い|標準ファイル交換とライブ連携の比較表と併用の現実解 NEW 2026-06-29 15:03:33
- Speckleのsend/receive|Version生成・選択フィルタ・差分とバージョン履歴 NEW 2026-06-29 15:03:32
- Speckleとは|OSSのAECデータプラットフォームをやさしく解説 NEW 2026-06-29 15:03:32
- Speckleのコネクタ|Revit/Rhino/Grasshopper/Blender等の連携とsend/receive NEW 2026-06-29 15:03:32
- Speckleオブジェクトモデル|Base・動的プロパティ・detach・ハッシュと重複排除 NEW 2026-06-29 15:03:32
コメントを削除してもよろしいでしょうか?