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
  • リストの操作
  • Query
  • Action
  • 演習
  • リストの操作
  • List.Count
  • List.GetItemAtIndex
  • List.Reverse
  • List.ShiftIndices
  • List.FilterByBooleanMask
Edit on GitHub
Export as PDF
  1. 基本ノードと概念
  2. リストを使用した設計

リストの操作

Previousリストの概要Nextリストのリスト

Last updated 2 months ago

リストの操作

リストとは何かということを理解したところで、ここからは、リストに対して実行できる操作について見ていきます。ここでは、リストをトランプのカードだと考えてください。1 組のトランプがリストで、1 枚 1 枚のカードが 1 つの項目ということになります。

Query

リストに関する質問(クエリー)を作成する場合、次のような質問が考えられます。これにより、リストの特性(プロパティ)がわかります。

  • Q: カードの数は?A: 52 枚

  • Q: スートの数は?A: 4 つ

  • Q: 素材は?A: 紙

  • Q: 長さは?A: 89 ミリ

  • Q: 幅は?A: 64 ミリ

Action

リストに対して実行できる操作(アクション)としては、次のような操作が考えられます。この場合、実行する操作に応じてリストが変化します。

  • カードをシャッフルする。

  • 数字の順にカードを並べ替える。

  • スート別にカードを並べ替える。

  • カード全体をいくつかに分割する。

  • 各プレーヤにカードを配ることにより、カード全体をいくつかに分割する。

  • デッキから特定のカードを選ぶ。

Dynamo では、これらの操作に似た操作を実行することができます。その場合、Dynamo の各ノードを使用して、一般的なデータのリストを操作することになります。これ以降の各演習では、リストに対して実行できる基本的な操作をいくつか見ていきます。

演習

リストの操作

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

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

下の図は、2 つの円の間に線を引いて基本的なリスト操作を表しているベース グラフです。リスト内のデータを管理する方法を紹介し、次のリスト アクションを使用して視覚的な結果を示します。

  1. 最初に、500; という値が表示されている Code Block ノードを使用します。

  2. 上記の Code Block ノードを Point.ByCoordinates ノードの x 入力に接続します。

  3. 上記のノードを Plane.ByOriginNormal ノードの origin 入力に接続します。

  4. Plane.ByOriginNormal ノードを Circle.ByPlaneRadius ノードの plane 入力に接続します。

  5. Code Block ノードを使用して、radius の値を 50; に設定します。これは、最初に作成する円の半径です。

  6. Geometry.Translate ノードを使用して、上記の円を Z の正の向きに 100 単位移動します。

  7. Code Block ノードで 0..1..#10; というコードを指定して、0 から 1 までの範囲で 10 個の数字を定義します。

  8. 上記の Code Block ノードを 2 つの Curve.PointAtParameter ノードの param 入力に接続します。次に、上部に配置されている方の Curve.PointAtParameter ノードの curve 入力に Circle.ByPlaneRadius ノードを接続し、下部に配置されている方の Curve.PointAtParameter ノードの curve 入力に Geometry.Translate ノードを接続します。

  9. Line.ByStartPointEndPoint ノードを使用して、2 つの Curve.PointAtParameter ノードを接続します。

List.Count

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

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

List.Count ノードは、リスト内の値の数をカウントしてその数を返すという単純なノードです。「リストのリスト」を操作する場合は、このノードの使用方法も多少複雑になりますが、それについてはこれ以降のセクションで説明します。

  1. **List.Count ****** ノードは、Line.ByStartPointEndPoint ノード内の線分の数を返します。この場合は 10 という値が返されますが、これは、元の Code Block ノードで作成した点の数に対応しています。

List.GetItemAtIndex

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

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

List.GetItemAtIndex ノードは、リスト内の項目のクエリーを実行するための基本的な方法です。

  1. まず、Line.ByStartPointEndPoint ノードを右クリックして、プレビューをオフにします。

  2. List.GetItemAtIndex ノードを使用して、インデックス値「0」を選択するか、線分のリスト内の先頭の項目を選択します。

スライダの値を 0 から 9 の間で変更し、List.GetItemAtIndex ノードを使用して別の項目を選択します。

List.Reverse

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

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

List.Reverse ノードは、リスト内のすべての項目の順序を逆にします。

  1. 順序が逆になった線分のリストをわかりやすく表示するために、Code Block を 0..1..#50; に変更して線分の数を増やします。

  2. Line.ByStartPointEndPoint ノードを複製し、Curve.PointAtParameter ノードと 2 番目の Line.ByStartPointEndPoint ノードの間に List.Reverse ノードを挿入します。

  3. Watch3D ノードを使用して、2 つの異なる結果をプレビューします。一方のノードには、リストが反転されていない結果が表示されます。それぞれの線分が、対応する点に対して垂直に接続されています。もう一方のノードには、反転していないリストとは逆の順序で、すべての点が接続されます。

List.ShiftIndices

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

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

List.ShiftIndices ノードは、ねじれパターンやらせんパターンなどを作成する場合に便利なノードです。このノードは、指定されたインデックス値の分だけ、リスト内の項目を移動します。

  1. List.Reverse ノードの場合と同様に、List.ShiftIndices ノードを Curve.PointAtParameter ノードと Line.ByStartPointEndPoint ノードの間に挿入します。

  2. Code Block ノードを使用して、リストを移動するインデックス値として「1」を指定します。

  3. この場合の変化はわずかですが、下部に表示されている方の Watch3D ノード内のすべての線分が、インデックス 1 つ分だけ横にずれた点に接続されています。

Code Block ノードの値を「30」などの大きな値に変更すると、すべての線分が大きく変化することがわかります。元の円柱形状がこのように変化する動作は、カメラの絞りによく似ています。

List.FilterByBooleanMask

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

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

List.FilterByBooleanMask ノードは、ブール値のリストに基づいて、特定の項目を削除します。ブール値とは、「true」または「false」を読み取る値のことです。

「true」または「false」を読み取る値のリストを作成するには、次の手順を実行します。

  1. Code Block ノードを使用して、0..List.Count(list); という構文の式を作成します。次に、Curve.PointAtParameter ノードを list 入力に接続します。この設定については、Code Block の章で詳しく説明します。ここでは、上記の構文を使用すると、Curve.PointAtParameter ノードの各インデックス値を表すリストが作成されるということだけを覚えてください。

  2. 剰余演算を処理する「%」ノードを使用して、Code Block ノードの出力を x 入力に接続し、4 という値を y 入力に接続します。この操作により、インデックス値のリストを 4 で割った場合の余りが取得されます。剰余演算を処理する「%」ノードは、パターンを作成する場合に非常に便利なノードです。たとえば、整数を 4 で割った場合の余りは、0、1、2、3 のいずれかになります。

  3. 剰余演算を処理する「%」ノードの値が 0 になっている場合、インデックス値は 4 で割り切れる数値(0、4、8 など)であるということがわかります。「== 」ノードを使用して、インデックス値を「0」という値に対してテストすると、そのインデックス値が割り切れる数値であるかどうかを判断することができます。

  4. Watch ノードには、true,false,false,false... というパターンでテストの結果が表示されます。

  5. この true/false のパターンを使用して、2 つの List.FilterByBooleanMask ノードの mask 入力に接続します。

  6. Curve.PointAtParameter ノードを、2 つの List.FilterByBooleanMask ノードの list 入力に接続します。

  7. List.FilterByBooleanMask の出力が in と out から読み取られます。in は、「true」というマスク値を持つ値を表し、out は、「false」というマスク値を持つ値を表します。in 出力を Line.ByStartPointEndPoint ノードの startPoint 入力と endPoint 入力に接続すると、フィルタされた線分のリストが作成されます。

  8. 下部に表示されている方の Watch3D ノードに、線分の数が点の数よりも少ない円柱が表示されます。フィルタ処理で true の値だけに絞り込んだため、ノードの 25% だけが選択されました。

写真:

Christian Gidlöf
7KB
List-Operations.dyn
8KB
List-Count.dyn
8KB
List-GetItemAtIndex.dyn
8KB
List-Reverse.dyn
8KB
List-ShiftIndices.dyn
11KB
List-FilterByBooleanMask.dyn
カード
個数
演習
演習
演習
演習