Dynamo
Primer for v2.0
日本語
日本語
  • この Web サイトについて
  • はじめに
    • Dynamo とは、その動作の仕組みとは
    • Primer ユーザ ガイド、Dynamo コミュニティ、プラットフォーム
  • Dynamo のセットアップ
  • ユーザ インタフェース
    • ワークスペース
    • ライブラリ
  • ノードとワイヤ
  • 基本ノードと概念
    • ノードの索引
    • 計算設計用のジオメトリ
      • ジオメトリの概要
      • ベクトル、平面、座標系
      • 点群
      • 曲線
      • サーフェス
      • 立体
      • メッシュ
    • プログラムの構成要素
      • データ
      • 数学的方法
      • ロジック
      • 文字列
      • 色
    • リストを使用した設計
      • リストの概要
      • リストの操作
      • リストのリスト
      • N 次元のリスト
    • Dynamo のディクショナリ
      • ディクショナリとは
      • [Dictionary]カテゴリのノード
      • コード ブロックにおけるディクショナリ
      • Revit での使用例
  • カスタム ノードとパッケージ
    • カスタム ノード
      • カスタム ノードの概要
      • カスタム ノードを作成する
      • ライブラリへのパブリッシュ
    • パッケージ
      • パッケージの概要
      • パッケージのケース スタディ - Mesh Toolkit
      • パッケージを開発する
      • パッケージをパブリッシュする
      • Zero-Touch Importing
  • Revit 用の Dynamo
    • Revit との連携
    • 選択
    • 編集
    • 作成
    • カスタマイズ
    • 設計図書の作成
  • Dynamo for Civil 3D
    • Civil 3D の接続
    • スタートアップ
    • ノード ライブラリ
    • サンプル ワークフロー
      • 道路
        • 照明柱の配置
      • 土地
        • サービスの配置
      • ユーティリティ
        • 構造物の名前を変更する
      • 軌道
        • クリアランスのエンベロープ
      • 測量
        • ポイント グループ管理
    • 高度なトピック
      • オブジェクト バインド
      • Python と Civil 3D
    • Dynamo プレーヤ
    • 便利なパッケージ
    • リソース
  • Dynamo in Forma Beta
    • Forma で Dynamo Player を設定する
    • Dynamo Player でグラフを追加、共有する
    • Dynamo Player でグラフを実行する
    • Dynamo コンピューティング サービスとデスクトップ版 Dynamo の違い
  • Dynamo でのコーディング
    • コード ブロックと DesignScript
      • コード ブロックとは
      • DesignScript 構文
      • 省略表記
      • 関数
    • DesignScript を使用するジオメトリ
      • DesignScript ジオメトリの基本
      • ジオメトリ プリミティブ
      • ベクトル計算
      • 曲線: 補間および制御点
      • 移動、回転、およびその他の変換
      • サーフェス: 補間、制御点、ロフト、回転
      • ジオメトリのパラメータ化
      • 交差およびトリム
      • ジオメトリのブール演算
      • Python 点ジェネレータ
    • Python
      • Python Script ノード
      • Python と Revit
      • 独自の Python テンプレートを設定する
    • 言語の変更
  • ベスト プラクティス
    • 見やすいプログラムを作成するためのガイドライン
    • スクリプト作成のガイドライン
    • スクリプト リファレンス
    • プログラムを管理する
    • Dynamo で大規模なデータ セットを効率的に操作する
  • サンプル ワークフロー
    • スタートアップ ワークフロー
      • パラメータを使用する花瓶
      • アトラクタ ポイント
    • 概念インデックス
  • 開発者向け Primer
    • ソースから Dynamo をビルドする
      • ソースから DynamoRevit をビルドする
      • Dynamo での依存関係の管理と更新
    • Dynamo 向けの開発
      • スタートアップ
      • Zero-Touch ケース スタディ - グリッド ノード
      • Zero-Touch ノードで Python スクリプトを実行する(C#)
      • Zero-Touch の詳細を確認する
      • Dynamo ノードの高度なカスタマイズ
      • Dynamo パッケージで COM (相互運用)タイプを使用する
      • NodeModel ケース スタディ - カスタム UI
      • Dynamo 2.x 用のパッケージと Dynamo ライブラリを更新する
      • Dynamo 3.x 用のパッケージと Dynamo ライブラリを更新する
      • 拡張機能
      • Dynamo 2.0+ のカスタム パッケージ編成を定義する
      • Dynamo コマンド ライン インタフェース
      • Dynamo の統合
      • Dynamo for Revit 向けの開発
      • パッケージをパブリッシュする
      • Visual Studio からパッケージをビルドする
      • パッケージとしての拡張機能
    • プル リクエスト
    • テストによる期待
    • サンプル
  • 付録
    • よくある質問(FAQ)
    • ビジュアル プログラミングと Dynamo
    • リソース
    • リリース ノート
    • 便利なパッケージ
    • サンプル ファイル
    • ホスト統合マップ
    • PDF をダウンロード
    • Dynamo のキーボード ショートカット
Powered by GitBook
On this page
  • 点の位置
  • 太陽の向きの解析
  • 演習
  • 解析
Edit on GitHub
Export as PDF
  1. Revit 用の Dynamo

カスタマイズ

Previous作成Next設計図書の作成

Last updated 2 months ago

ここまで、基本的な建物のマスを編集する方法について紹介してきました。ここからは、多数の要素を一度に編集することで Dynamo と Revit のリンクについてより深く掘り下げていきましょう。カスタマイズする対象の規模が拡大すると、リストのデータ構造においてより高度な操作が要求されるので、カスタマイズの操作がより複雑になります。ただし、それを実行する背景で駆動している原理原則は、根本的にはこれまでと変わりありません。検討のために、アダプティブ コンポーネントのセットからいくつかの事例を取り上げてみましよう。

点の位置

アダプティブ コンポーネントを既に作成したという前提で、これからその点群の位置に基づいてパラメータを編集していくことにします。点群により、たとえば、要素の領域にかかわる厚みのパラメータをコントロールすることができます。また、太陽光の年間露光量にかかわる透過性のパラメータをコントロールすることもできます。Dynamo では、少ない手順で簡単に解析結果をパラメータに渡すことができます。次の演習でその基本的な手順を実践してみましょう。

AdaptiveComponent.Locations ノードを使用して、選択したアダプティブ コンポーネントのアダプティブ点のクエリーを実行します。これにより、Revit の要素を解析用に抽出したバージョンを使用して作業することができます。

アダプティブ コンポーネントを構成する点の位置を抽出することで、その要素に関するさまざまな解析を行うことができます。4 点構成のアダプティブ コンポーネントにより、たとえば指定したパネルにおける水平面からの偏差を検討することができます。

太陽の向きの解析

再マッピング機能を使用すると、一連のデータ セットを一定のパラメータ範囲にマッピングすることができます。これはパラメトリック モデリングで使用する基本的なツールです。これ以降の演習で実際に扱ってみることにします。

Dynamo を使用すると、アダプティブ コンポーネントを構成する点群の位置から、要素ごとに最も適した平面を作成することができます。さらに Revit ファイル内の太陽の位置を参照して、太陽に対するその平面の向きを、他のアダプティブ コンポーネントと比較しながら検討することもできます。これ以降の演習で、アルゴリズムに基づいて屋根の形状を生成することで、その設定を行っていきましょう。

演習

下のリンクをクリックして、サンプル ファイルをダウンロードします。

すべてのサンプル ファイルの一覧については、付録を参照してください。

この演習では、前のセクションで紹介したテクニックについて詳しく説明します。このケースでは、Revit の要素からパラメトリック サーフェスを設定して、4 点構成のアダプティブ コンポーネントをインスタンス化し、太陽に対する向きに基づいて編集します。

  1. まず、Select Edge ノードを使用して 2 本のエッジを選択します。2 本のエッジはアトリウムの長辺です。

  2. List.Create ノードを使用して、2 本のエッジを組み合わせて 1 つのリストを作成します。

  3. Surface.ByLoft ノードを使用して、2 本のエッジの間に 1 つのサーフェスを作成します。

  1. Code Block ノードを使用して、0 から 1 までの範囲を 10 等分した値 0..1..#10; に指定します。

  2. Code Block ノードから Surface.PointAtParameter ノードの *u * 入力と v 入力に接続し、Surface.ByLoft ノードを surface 入力に接続します。ノードを右クリックして、_レーシング_を[直積]に変更します。これで、サーフェス上の点群から構成されるグリッドを取得できるようになります。

この点群によるグリッドは、パラメータに基づいて設定されたサーフェスの制御点として機能します。これら各点の位置を u と v の値として抽出することで、その値をパラメータの式に代入し、同一のデータ構造を保持できます。これを行うには、先ほど作成した点群の位置のパラメータをクエリーする必要があります。

  1. Surface.ParameterAtPoint ノードをキャンバスに追加し、その入力を上図のように接続します。

  2. UV.U ノードを使用して、上記のパラメータの u の値をクエリーします。

  3. UV.V ノードを使用して、上記のパラメータの v の値をクエリーします。

  4. サーフェス上のすべての点に対応する u と v の値が出力されます。これで、適切なデータ構造で 0 から 1 までの範囲で各値を取得したので、パラメトリック アルゴリズムを適用する準備ができました。

  1. キャンバスに Code Block ノードを追加して、次のコードを入力します。Math.Sin(u*180)*Math.Sin(v*180)*w; これは、平坦なサーフェスから正弦波状の隆起を作成するパラメトリック関数です。

  2. UV.U を u 入力に、UV.V を v 入力に接続します。

  3. w 入力は形状の 振幅 を表します。そのため、ここには Number Slider を接続します。

  1. ここまでの手順で、アルゴリズムによって定義された値のリストを取得することができました。この値のリストを使用して、点群を Z の正の向きに動かしましょう。Geometry.Translate を使用して、Code Block ノードを zTranslation 入力に、Surface.PointAtParameter ノードを geometry 入力に接続します。Dynamo のプレビューに新しい点群が表示されるはずです。

  2. 最後に、前の手順から NurbsSurface.ByPoints ノードの points 入力に接続することで、サーフェスを作成します。こうしてパラメトリック サーフェスができあがりました。スライダを自由に動かして、隆起面が上下するのを確認してください。

パラメトリック サーフェスを使用して、その曲面を多数の小さなパネルから成る構造に変換する方法を設定し、4 点構成のアダプティブ コンポーネントを配列していきましょう。Dynamo で提供されている既定のノードには、サーフェスを多面構造に変換する機能をもつものはありません。そこで、コミュニティにアクセスして便利な Dynamo パッケージを入手しましょう。

  1. [パッケージ] > [パッケージの検索] に進みます。

  2. 「LunchBox」のキーワードで検索し、「LunchBox for Dynamo」をインストールします。このパッケージは、この種のジオメトリ操作にじつに役に立つツール セットです。

  1. ダウンロードすると、LunchBox スイートに完全にアクセスできるようになります。「Quad Grid」を検索し、LunchBox Quad Grid By Face ノードを選択します。このノードの surface 入力にパラメトリック サーフェスを接続し、U 区分と V 区分を 15 に設定します。複数の長方形のパネルから成るサーフェスが Dynamo のプレビューに表示されます。

構成の詳細については、Lunch Box ノードをダブルクリックして確認してください。

Revit に戻って、ここで使用しているアダプティブ コンポーネントを簡単に確認しておきましょう。必ずしも実際に確認する必要はありませんが、いずれにせよこれからインスタンス化する対象であるこのコンポーネントは屋根のパネルです。この 4 点構成のアダプティブ コンポーネントは、ETFE システムをおおまかに表現しています。中央の開口部は ApertureRatio というパラメータによってコントロールされています。

  1. これから Revit 内の多数のジオメトリをインスタンス化するので、必ず事前に Dynamo のソルバを[手動]に切り替えてください。

  2. Family Types ノードをキャンバスに追加し、[ROOF-PANEL-4PT]を選択します。

  3. AdaptiveComponent.ByPoints ノードをキャンバスに追加し、その points 入力に LunchBox Quad Grid by Face ノードの Panel Pts 出力を接続します。familySymbol 入力に Family Types ノードを接続します。

  4. [実行]をクリックします。Revit はジオメトリの作成中に計算に 少々時間をかける 必要があります。あまりにも時間がかかりすぎている場合、Code Block ノードの「15」の値を より小さな数に減らしてください。これを行うと、屋根の部分に使用されるパネルの数が減少します。

注: Dynamo でノードの計算に膨大な時間がかかる場合は、ノードをフリーズする機能を使用して、グラフの開発中に Revit 関連操作の実行を停止することができます。ノードをフリーズする操作の詳細については、「ソリッド」の章の「フリーズ」セクションを参照してください。

Revit に戻ると、屋根の上にバネルの配列が出現しています。

拡大表示すると、サーフェスの品質を詳細に確認できます。

解析

  1. 前の手順からさらに先へと進み、各パネルが太陽光を浴びている量に基づいてそれぞれのパネルの開き方をコントロールしてみましょう。Revit でビューを拡大表示して 1 つのパネルを選択すると、プロパティ バーに[開口率]というパラメータが表示されます。ファミリは、開口率の範囲が 0.05 ~ 0.45 になるように設定されています。

  1. 太陽の軌道の表示をオンにすると、Revit で現在の太陽の位置を確認することができます。

  1. SunSettings.Current ノードを使用すると、この太陽の位置を参照することができます。

  1. そのノードの SunSettings の出力を Sunsetting.SunDirection ノードの入力に接続し、太陽光のベクトルを取得します。

  2. アダプティブ コンポーネントの作成に使用した Panel Pts からの出力を、Plane.ByBestFitThroughPoints ノードを使用して、そのコンポーネントのために平面に近づけます。

  3. この平面の 法線 のクエリーを実行します。

  4. 内積 を使用して太陽の向きを計算します。内積に基づいて、2 つのベクトルが平行であるかどうかを判定することができます。つまり、各アダプティブ コンポーネントの平面法線を取得し、それと太陽光のベクトルを比較することで、太陽の向きをおおまかにシミュレートします。

  5. 結果の_絶対値_を取得します。これにより、平面法線が逆方向を向いている場合に正確な内積が算出されます。

  6. [実行]をクリックします。

  1. 内積 を確認すると、複数の数値が広範囲にわたって取得されています。これからその相対分布を使用するのですが、しかしそれらの数値を集約して[開口率]の適切な範囲に収めなければなりません。

  1. これにたいへん役立つツールが Math.RemapRange ノードです。そのノードにリストを入力し、その分布範囲を 2 つの目標値にマッピングし直します。

  2. 目標値を Code Block ノードで 0.15 と 0.45 として定義します。

  3. [実行]をクリックします。

  1. マッピングし直した値を Element.SetParameterByName ノードに接続します。

  1. そのノードの parameterName 入力に、「Aperture Ratio」という文字列を接続します。

  2. 同じノードの element 入力に、AdaptiveComponent.ByPoints ノードの Adaptive Components 出力を接続します。

  3. [実行]をクリックします。

Revit に戻って建物のマスを遠くから見てみると、ETFE パネルの開き方が太陽の向きによって変化していることが確認できます。

拡大表示すると、太陽により向き合っているパネルほどより閉じていることがわかります。太陽光の照射による過熱を抑えることがねらいです。太陽光をたくさん浴びている面ほどより多く採光するように設定するには、ただ Math.RemapRange ノードで範囲を逆に切り替えるだけで済みます。

5MB
Revit-Customizing.zip
archive