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. Dynamo でのコーディング
  2. コード ブロックと DesignScript

省略表記

省略表記

Code Block にはデータ管理を 大幅に 容易にする基本的な省略表記方法がいくつかあります。ここでは基本の概要を示し、この省略表記をデータの作成とクエリーの両方に使用する方法を説明します。

データ タイプ

標準 Dynamo

Code Block の同等表記

数値

文字列

シーケンス

範囲

インデックスでの項目の取得

リストの作成

文字列の連結

条件ステートメント

その他の構文

ノード

Code Block の同等表記

注

演算子(+、&&、>=、Not など)

+、&&、>=、! など

「Not」は「!」になりますが、「Factorial」(階乗)と区別するためにノードは「Not」と呼ばれます

ブールの True

true;

小文字を使用します

ブールの False

false;

小文字を使用します

範囲とシーケンス

基本的な省略表記を組み合わせることで、範囲とシーケンスを設定することができます。下記の画像を「..」構文のガイドとして参照し、Code Block を使用して数値データのリストを設定してみましょう。この表記に慣れると、数値データを効率的に作成できるようになります。

  1. この例では、数値範囲を beginning..end..step-size; の基本的な Code Block 構文で置き換えて設定します。数値で表すと、0..10..1; になります。

  2. 構文 0..10..1; は 0..10; と同等です。ステップサイズの 1 は、省略表記の既定値です。つまり、0..10; はステップサイズが 1 であるシーケンス 0 から 10 を表しています。

  3. _シーケンス_の例も同様です。ただし、「#」を使用して、15 までの値を含むリストではなく、15 個の値を含むリストを指定しています。このケースでは、beginning..#ofSteps..step-size: を定義しています。シーケンスの実際の構文は 0..#15..2 です。

  4. 今度は前の手順の「#」を構文の step-size 部分に配置してみましょう。これで、_数値範囲_は beginning から end に設定され、これらの 2 つの間の値が step-size 表記に指定された値で均等に分割されます: beginning..end..#ofSteps

高度な範囲

高度な範囲を作成すると、リストのリストを簡単な方法で使用できます。次の例では、メイン範囲の表記から変数を分離して、このリストに別の範囲を作成します。

1.ネストされた範囲を作成して、「#」が指定されている表記と指定されていない表記とを比較してみましょう。ロジックは基本的な範囲と同じですが、多少複雑になります。

2.サブ範囲はメイン範囲内の任意の場所に設定できます。また、2 つのサブ範囲を設定することもできます。

3.範囲内の「end」値をコントロールすることにより、長さが異なる範囲を追加で作成できます。

ロジックの演習として上記の 2 つの省略表記を比較し、サブ範囲 と # 表記が出力をどのようにコントロールしているかを読み解いてください。

リストを作成してリストから項目を取得する

リストは省略表記を使用して作成できる他、すばやく作成することも可能です。これらのリストには幅広い要素タイプを含めることができ、クエリーを実行することも可能です(リストはリスト自体がオブジェクトです)。簡単に言うと、Code Block でブラケット(角括弧)を使用してリストを作成し、リスト内の項目のクエリーを実行します。

1.文字列を使用してリストをすばやく作成し、項目のインデックスを使用してクエリーを実行します。

2.変数を使用してリストを作成し、範囲の省略表記を使用してクエリーを実行します。

ネストされたリストを管理するプロセスは同様です。リストの順番に配慮し、複数の角括弧のセットを使用します。

1.リストのリストを設定します。

2.1 つの角括弧の表記を使用してクエリーを実行します。

3.2 つの角括弧の表記を使用して項目のクエリーを実行します。

演習: 正弦サーフェス

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

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

この演習では、新しい省略表記のスキルを使用して範囲と式を設定し、一風変わった卵型のサーフェスを作成します。この演習では、Code Block と既存の Dynamo ノードを並行して使用する方法を学習します。Dynamo ノードを視覚的に配置して設定を確認しながら、Code Block を使用して大きなデータを処理します。

まず上記のノードを接続してサーフェスを作成します。数値ノードを使用して幅と長さを設定する代わりに、キャンバスをダブルクリックして、Code Block に 100; と入力します。

  1. Code Block に 0..1..#50 と入力して、0 から 1 の範囲を 50 個に分割するように設定します。

  2. 範囲を Surface.PointAtParameter ノードに接続します。これは 0 から 1 の範囲内にある u と v の値を取得してサーフェス全体に設定します。Surface.PointAtParameter ノードを右クリックし、レーシングを[外積]に変更します。

この手順では、最初の関数を適用して、グリッドを Z の正の向きに移動します。このグリッドは基盤となる関数に基づいて生成されるサーフェスをコントロールします。下図に示すように、新しいノードを追加します。

  1. ここで、Code Block ノードで (0..Math.Sin(x*360)..#50)*5; という行を使用します。この式を簡単に分割して説明するために、式内に範囲を設定します。この式は正弦関数です。正弦関数は Dynamo で角度(度)入力を受け取ります。このため、完全な正弦波を取得するには、x 値(0 から 1 までの入力範囲)を 360 で乗算します。次に、各行のコントロール グリッドの点と同じ数だけ分割するため、#50 を指定して 50 個のサブディビジョンを設定します。最後に、Dynamo プレビューで効果を確認できるようにするため、累乗の指数に 5 を指定して変換の振幅を大きくします。

  1. 以前の Code Block は正常に動作しましたが、完全にパラメータではありませんでした。動的にパラメータをコントロールするため、前の手順の行を (0..Math.Sin(x*360*cycles)..#List.Count(x))*amp; に置き換えます。こうすることで、これらの値を入力に基づいて設定できるようになります。

スライダ(範囲 0 から 10)を変更して、どのような結果が生じるか確認します。

  1. 数値範囲を転置することにより、カーテン ウェーブの方向を反転します: transposeList = List.Transpose(sineList);。

  1. sineList と transposeList を追加すると、歪曲した卵型のサーフェスが生成されます: eggShellList = sineList+transposeList;

以下に指定するスライダの値を変更して、このアルゴリズムをなだらかにします。

最後に、Code Block を使用して、データの一部のクエリーを実行しましょう。特定の範囲の点を指定してサーフェスを再生成するには、Geometry.Translate ノードと NurbsSurface.ByPoints ノードの間に上記の Code Block ノードを追加します。sineStrips[0..15..1]; が指定されています。これにより、50 行の最初の 16 行の点が選択されます。サーフェスを再作成すると、点のグリッドの一部が分離されて生成されていることがわかります。

  1. 最後の手順では、この Code Block をよりパラメトリックなものにするため、範囲 0 から 1 のスライダを使用してクエリーをコントロールします。これは、次のコード行で行います。sineStrips[0..((List.Count(sineStrips)-1)*u)];わかりにくいかもしれませんが、このコード行により、リストの長さを乗数 0 から 1 の値を使用してすばやくスケールできます。

スライダに 0.53 の値を設定すると、グリッドの中央をわずかに超えるサーフェスが作成されます。

想定どおり、スライダを 1 に設定すると、すべての点のグリッドを使用してサーフェスが作成されます。

ビジュアル プログラムを参照する際、Code Block をハイライト表示して Code Block ノードの各関数を確認できます。

1.最初の Code Block ノードは Number ノードを置き換えます。

2.2 番目の Code Block ノードは Number Range ノードを置き換えます。

3.3 番目の Code Block ノードは、List.Transpose ノード、List.Count および Number Range ノードを置き換えます。

4.4 番目の Code Block ノードはリストのリストのクエリーを実行し、List.GetItemAtIndex ノードを置き換えます。

PreviousDesignScript 構文Next関数

Last updated 2 months ago

20KB
Obsolete-Nodes_Sine-Surface.dyn