2017年5月27日土曜日

条件式を使ったファミリ

条件式 IF

前回のファミリを引き続き題材にします。下の図を見てみると、面取距離(A)の値は取りうる値に制限があることがわかります。0より大きくないといけないし、またX、Yの値の半分より小さくないと押し出しフォームを作ることができません。
前回の面取りファミリ
まとめますと
  • 条件1: 面取距離>0
  • 条件2: 面取距離<0.5*X かつ  面取距離<0.5*Y
面取距離=面取長*sin(45°)ですから、二つの条件は
  • 条件1:面取長*sin(45°)>0
  • 条件2:面取長*sin(45°)<0.5*X かつ 面取長*sin(45°)<0.5*Y
となります。この二つの条件をすべて満たしたとき、Aの値を受け入れるようにしてみましょう。
条件式は if 文を使います。書式は

if(条件式, TRUEの場合の値, FALSEの場合の値)


となります。条件式は数字の判断が使えますが、文字列の判断は使えません。

入力用のパラメータを追加

ファミリを開いて、面取りの長さを入力するためのパラメータを追加します。

  1. 作成タブ>プロパティパネル>ファミリタイプ
  2. 新しいタイプ ボタンをクリック
  3. 名前を「面取長」とし、パラメータタイプを「長さ」、パラメータグループを「寸法」としOK
    パラメータ「面取長」を追加

条件を追加

条件1と条件2を評価するためのパラメータを追加します。

  1. 作成タブ>プロパティパネル>ファミリタイプ
  2. 新しいタイプボタンをクリック
  3. 名前を「条件1」としてパラメータタイプを「はい/いいえ」、パラメータグループを「その他」
  4. 同様に、「条件2」を追加
  5. 条件1の式を「面取長 * sin(45) > 0」
  6. 条件2の式を「and(面取長 * sin(45°) < 0.5 * X, 面取長 * sin(45°) < 0.5 * Y)」
    条件1と条件2を追加して式を設定する
    条件2の式は「面取長 * sin(45°) < 0.5 * X」, 「面取長 * sin(45°) < 0.5 * Y」の両方の式が満たされていればTRUE(☑)、そうでなければFALSE(□)を返します。

Lの値を制御する

Lの値をifを使った計算式で制御します。
  1. Lの計算式に「if(and(条件1, 条件2), 面取長, 0.1 * X)」と入力

これは 条件1と条件2がどちらもTRUEならば面取長にLの値をそうでなければXの0.1倍の値をLに設定する という意味です。なお、どちらかがTRUEの場合はandではなくorを使います。
Lの式を設定するとグレーになる

面取長の値をいろいろ変えて適用ボタンをおしてみてください。あまり大きな値を入力するとX*0.1の値になります。
安全なファミリ

これで安全な値しか入力できないようになります。