C#ATIA

↑タイトル詐欺 主にCATIA V5 の VBA

CATIAで3次ベジェ曲線が描けたよ

何となく?こちらの続きです。

CATIAでベジェ曲線(2次・3次)を描きたい - C#ATIA


以前、「R2013のGSDの新コマンド "方程式の曲線を定義" で、ベジェ曲線が
描けないかな? でも、コマンドの使い方がわからないなぁ」
のような事を書いたのですが、やっぱり描けたので記載しておきます。

2次でも3次でもやることは類似しているので、とりあえず3次ベジェ曲線を
作成してみます。
(当方HD2パッケージで作成しています。 MD2辺りだと出来ないかも知れません)

  • 4つの点を作成

とりあえず、敷居を低くしたいのでXY平面上に作成してみる事にします。
4つの点は "始点" "終点" と2つの "制御点" を想定しています。
f:id:kandennti:20160511180218p:plain

  • ローの作成

"方程式の曲線を定義" コマンド実行中でもローの作成は可能ですが、結構
手間取ったので、予めローを作成します。
必要となるローは、XYZそれぞれの変化量を示す為3つ必要になります。
f:id:kandennti:20160511180233p:plain
今回はXY平面上に作成する為、Zの値は常に "0" なのですが、それでも
コマンドの関係上、"常に Z=0" を示すローが必要っぽいです。


それぞれの値の計算式は、こちらを参考にしました。

3次ベジェ曲線の数式


ローエディタで X用のローは、こんな感じで作ります。
f:id:kandennti:20160511180245p:plain

`x` = `t`*`t`*`t`*`形状セット.1\点.4\H`
+ 3*`t`*`t`*(1-`t`)*`形状セット.1\点.3\H`
+ 3*`t`*(1-`t`)*(1-`t`)*`形状セット.1\点.2\H` 
+ (1-`t`)*(1-`t`)*(1-`t`)*`形状セット.1\点.1\H` 

念の為、最後にサンプルデータをUpしたリンク先を付けておきますので
ちょっとだけ興味のある方は、サラッと流してください。

Y用のローです。

`y` = `t`*`t`*`t`*`形状セット.1\点.4\V`
+ 3*`t`*`t`*(1-`t`)*`形状セット.1\点.3\V`
+ 3*`t`*(1-`t`)*(1-`t`)*`形状セット.1\点.2\V`
+ (1-`t`)*(1-`t`)*(1-`t`)*`形状セット.1\点.1\V` 

Z用のローは "常に Z=0" のローです。

`z`=`t`*0mm
  • "方程式の曲線を定義" コマンド

先程の3つのローを、それぞれの値に指定してやれば3次ベジェ曲線
の完成です。
f:id:kandennti:20160511180256p:plain


サンプルデータはこちらです。

GrabCAD - CAD library

4つの点を3Dの座標指定した、3Dな3次ベジェ曲線のサンプルも
合わせてUpしております。

正直に書くと、出来上がった曲線が本当に3次ベジェ曲線として
成立しているかどうかは、未確認です・・・間違いがあったら
指摘してもらえると助かります。



"方程式の曲線を定義" コマンドに限らず、新しい機能にはサンプルデータを
ヘルプに付けて欲しいのですけどねぇ。