設計意図を “リレーション” で埋め込み

執筆者: 武田 淳
  • 11/2/2021
  • 読み込み時間 : 8min
creo-function-relation01-jp_600x280
Creo Parametric は 3D モデルの寸法パラメータを利用した関係式を計算させて、その結果によってサイズの寸法を変えることや繰返し形状の個数を変更したりなどをすることが可能です。この『関係式』作成は「リレーション」機能を使い、設計の意図をモデルやアセンブリに定義することができます。

・簡単な例でご紹介します。例えば、形状の縦横比を常に黄金比にする場合は、

creo-function-relation01-jp-001

となるよう、リレーションに

creo-function-relation01-jp-002

d2=d1*(1+sqrt(5))/2
( d〇 は寸法パラメータ、”sqrt” は平方根)を入力します。

creo-function-relation01-jp-003

d1 の値が変更されると、このリレーションに従って計算されて自動的に d2 の値が決まります。

creo-function-relation01-jp-004

非常に簡単な例を挙げましたが、多くの設計において寸法は常に定義されます。
Creo Parametric の寸法は全て「パラメータ」であり、このパラメータがあることから半自動的な設計や自動設計へつなげることが可能です。

ここで一旦、言葉の定義を確認します。
  • パラメータとは、数学で二つ以上の変数間の関数関係を間接に表すために用いる、補助の変数。
  • パラメトリックとは(ここではパラメトリックモデリングの意味で記載)、製品又はその部分について、形状を類型化し、寸法などを、パラメータで与えることによって、コンピュータ内部のモデルを簡易に生成する設計方法。

上記のうち ”パラメータ” については Oxford Languages より、”パラメトリック” については JIS より。
小難しい引用をしましたが平易な表現をすると、パラメータは「変数」でありパラメトリックは「変数(寸法)を変えれば形が変わること」です。
ドラフターの時代から 2D-CAD、3D-CAD など設計ツールに関わらず類似形状の部品や製品を設計する際に、「ある個所の寸法を変更して別形状(サイズ)の物を作り出す」ことをしています。ツールの進化に連れて形状やサイズ違いの物を作り出すことが容易になりました。類似形状はサイズが変わるだけでなく、バリエーション製品のようにある一定以上のサイズになったら穴個数やピッチが変わったり(例:直動機器のガイドレールなど)、アセンブリ品であれば取りつく部品のサイズや個数や型番が変わったりします。
特に、ある一定の設計意図や決まりの下に規則的な類似形状やサイズ違いなどを設計することがあります。このような場合にパラメトリック CAD の特徴を大いに生かすことができます。
それらは単純なあるサイズ以上になったら数が増えるような場合もあれば、関数計算によって求められる場合もあり、Creo Parametric のリレーションだけでは対応できない、もしくは対応できたとしても再利用時や他の設計者が見て式の理解が困難になる場合も考えられます。これは再利用性を下げる原因です。
そこで、PTC の工学計算ソリューションの「Mathcad」は、リレーションに記述するだけでは計算の説明が不完全な場合に使うことで、とても役に立つソリューションです。

Mathcad を介した連携
Creo Parametric は Mathcad との連携が可能です。Creo Parametric のモデル内にあるパラメータを、Mathcad と連携させて計算を行なうことができます。本記事では簡易説明に留めておきます。

creo-function-relation01-jp-005

creo-function-relation01-jp-006

さて、ここからはリレーションの利用について、寸法パラメータを関連付けて計算させるだけでなく、その値の制御を行って数値を丸める、あるいは文字列変数をリレーションで取り扱うことをご紹介します。
  1. 四捨五入
  2. 絶対値
  3. 文字抽出
  4. 整数の文字列変換

その1 「四捨五入」

  • 目的: Creo Parametric のリレーション計算値を四捨五入したい。
  • 概要: リレーションに「四捨五入」をする関数がないので、「四捨五入する小数の位を指定できる切り捨て関数切り上げ関数」を使い対処する。
    • 切り捨て関数=floor(値)
    • 切り上げ関数=ceil(値)
  • 前提条件: 特になし。
実行する内容を説明します。
  1. 値を定義(ここはパラメータ値利用も可能)
  2. 切り捨て関数を利用して計算
  3. 切り上げ関数を利用して計算
リレーションを下記に記載しますが、左辺のパラメータ名は任意です。なお、例の記載順は「リレーション UI 内に書き込む内容」→「各行ごとの解説」です。リレーション UI 内では、行頭に ”/* “ を入れるとコメント行となり計算から除外されます。

/* floorceil の単純な違いをみる計算
X=456.123
x1=floor(X)
x2=ceil(X)
計算結果:
X1 実数 456.000000
X2 実数 457.000000

リレーション各行解説:
  1. X=456.123
    • X 値定義
  2. x1=floor(X)
    • X の値の小数点を切り捨て
  3. x2=ceil(X)
    • X の値の小数点を切り上げ
続いて、X の値は前の式からそのまま利用します。
/* X を 1000 で除して、小数点部分の切り捨て/切り上げをする計算
XA=X/1000
XAF=floor(XA, 2)
XAC=ceil(XA, 2)
XX= XAF *1000
計算結果
XAF 実数 0.450000
XAC 実数 0.4650000

XX 実数 450.000000

リレーション各行解説:
  1. XA=X/1000
    • 小数点よりも前の値 (X=456.123) を計算させるために X を 1000 で除する。
  2. XAF=floor(XA, 2)
    • XA の小数点 桁めで切り捨てる
    • 計算結果は、0.450000
  3. XAC=ceil(XA, 2)
    • XA の小数点 桁めで切り上げる
    • 計算結果は、0.460000
  4. XX= XAF *1000
    • 特定小数点で切り捨てた計算値に 1000 を乗じて元の桁数に戻す
      計算結果は、450

その2 「絶対値」

リレーションに用意されている絶対値の関数「abs()」を使えば、括弧内の値やパラメータ値は絶対値になります。
X=-43
x1=abs(X) ・・・ x1=43

と、この短い記述で終わってしまうので、今回はこの関数の使い方について PTC のグローバルサポート・ナレッジベースから一つだけご紹介します。(アクセスするためには、有効な契約が有り、かつ PTC.com へログインが必要)
"実行可能性/最適化" における設計拘束の値をパラメータによって駆動できますか? (Creo Parametric)


その3 「文字抽出」

  • 目的: Creo Parametric のファイル名から抽出した値をパラメータとしたい。
  • 概要: モデル名の終わりから 3 文字を取り出し、パラメータ値としたい。
    (何文字とりこむかは変更可能)
  • 前提条件: モデル名は取込む文字数以上のこと。
実行する内容を説明します。
  1. モデル名を取得
  2. 文字数カウントし、変数値(数)を得る
  3. 取り込む文字の頭の位置を導くために「何文字目」を指定させる変数値(数)を得る
  4. 文字を取り出す
リレーションを下記に記載します。なお、左辺のパラメータ名は任意です。
model_name=rel_model_name()
name_count=string_length(model_name)
pos_num=name_count-2
ex_pn=extract(model_name,pos_num,3)

リレーション各行解説:
  1. model_name=rel_model_name()
    • rel_model_name() は、モデル名を返す(取り込む)ものです。()内は空です。
    • 例: モデル名が「20040807-101.prt」なら「20040807-101」です。
  2. name_count=string_length(model_name)
    • string_length()は、パラメータの文字数を返します。
    • 例: 変数 model_name が「20040807-101」なら、「12」文字です。
  3. pos_num=name_count-2
    • 下 3 桁目の位置を特定するために、文字数から 2 を引きます。
    • 例: 12-2=10。これにより、「20040807-101」の頭から「10」個めの"1"が下 3桁目と特定できます。
  4. ex_pn=extract(model_name,pos_num,3)
    • extract(文字列,位置,文字数)は、文字列を抽出します。
    • 例: この場合、下 3桁目位置から 3 文字分の文字列「101」を抽出します。

creo-function-relation01-jp-007

creo-function-relation01-jp-008


その4 「整数の文字列変換」

  • 目的: Creo Parametric のリレーションで、モデル名の後に番号付加して任意の名前を生成したい。
  • 概要: 文字列パラメータと整数値パラメータの値を組み合わせて、新しい文字列パラメータを作成するが、整数のままでは文字列に追加できないので、文字列へ変換させてから扱います。
    • itos(int): 整数の文字列変換関数
      int は数字でも定義式でも可。非整数値は、四捨五入されます。
    • rel_model_name(): モデル名を取得する関数。括弧内は空のまま
  • 前提条件: 部品固有の任意番号のパラメータを作成しておきます。
実行する内容を説明します。
  1. モデル名を自動取得
  2. 文字列を組み合わせる
リレーションを下記に記載します。なお、左辺のパラメータ名は任意です。

注意: "CHARACTERISTIC_NO"(名前は任意)は事前に整数パラメータとして作成しておきます。

/* モデル名自動取得
model_name=rel_model_name()

/* 文字列を組み合わせます
/* [モデル名]+[ハイフン]+[部品固有の任意番号]
partname=model_name+"-"+itos(CHARACTERISTIC_NO)

計算結果例:
CHARACTERISTIC_NO=103
model_name=PART01
partname=PART01-103

creo-function-relation01-jp-009

creo-function-relation01-jp-010

3D モデルのファイル名+管理番号、のような運用をしたい、などに対応可能です。

リレーションは、ここに上げた 4 つ以外にも様々な関数を備えており、IF 文を使った条件文の論理分岐、寸法値などをある制限値以上や以下に制御したり、連立方程式を用いたり可能です。


お問い合わせ

この記事を読まれて、詳しい説明のご希望やご質問がございましたら、下記へお問い合わせください。
https://www.ptc.com/ja/contact-us


ご参考

Tags:
  • CAD
  • Creo
  • Aerospace and Defense
  • Automotive
  • Electronics and High-Tech
  • Industrial Equipment
  • Life Sciences
  • Digital Transformation
  • Digital Twin

執筆者について

武田 淳

製品事業部 CAD セグメント シニアアプリケーションスペシャリスト

超音波洗浄機、液晶製造装置等の機械設計を 2D & 3D 共に経験し1997 年に入社。機械設計分野以外に樹脂・板金金型、CAM の担当エンジニア。