ジオメトリ (「geom」幾何計算ジオメトリ オブジェクト操作)
|
LT VB-COMでは、図形に関連する様々なデータ(座標値、ベクトル、マトリクスなど)の計算をより簡単に、効率良くおこなえるように、幾何計算用のツールを用意してあります。この幾何計算用に用意したツールが、「ジオメトリ」です。
ジオメトリには様々な機能が用意してありますが、その基本的な使用方法は以下の方法1つだけです。
-------------------------------------------------------------------------
[準備するもの]
Dim
initData As Long '(ジオメトリの初期化に必要な「
初期データ」宣言)
Dim
setData As Long '(計算に必要な「
設定データ」宣言)
Dim
getData As Variant '(命令の実行結果を格納する「
取得データ」用変数宣言)
Dim
es As Boolean '(この命令を実行した結果を格納する「
エラー状況」)
Dim
obj As Object '(外部プログラムとの接続手続き保存用)
Set
obj = GetObject (
, "LT VBCOM.Application") '(外部プログラムとの接続手続き)
[書式]
ジオメトリ名 初期データ 命令名 設定データ
↓ ↓ ↓ ↓
es = obj.
geom ( "ジオメトリ名" , initData , "命令" , setData , getData )
↓ ↓
エラー状況 取得データ
<設定するデータ>
上記のように各ユーティリティを使用するには、4つの情報を設定します。
|
[情報] |
[内容] |
[型] |
1 |
ジオメトリ名 |
使用するジオメトリの名前を指定します。 |
文字列(String) |
2 |
初期データ
(initData) |
ジオメトリオブジェクト生成時に必要な初期値を設定します。ユーティリティの種類によっては初期データが無いものもあります。その場合は「Null」を設定します。 |
使用するユーティリティにより、異なります。 |
3 |
命令名 |
ジオメトリを利用した幾何計算を実行するための計算の命令の名前を指定します。 |
文字列(String) |
4 |
設定データ
(setData) |
幾何計算に必要なデータを設定します。幾何計算の種類によっては設定データが無いものもあります。その場合は「Null」を設定します。 |
使用するユーティリティにより、異なります。 |
参考:
ジオメトリ名には可能な限り日本語名を付けてありますが、命令の名前に関しては、適切な日本語名が付けられないものも多く存在するため、基本的には英語の名前になっています。ご了承ください。 |
<取得できるデータ>
|
[情報] |
[内容] |
[型] |
1 |
取得データ(getData) |
ジオメトリによる幾何計算を実行した結果として取得できる取得データが取り出せます。 |
使用するユーティリティにより、異なります。 |
[実行結果「es」の内容]
・この命令が正しく動作したかどうかを判断できます。
正しく動作した場合:
True
正しく動作しなかった場合:
False
実行結果の内容が「
False」(正しく動作しなかった)場合、
取得データの内容は無効となります。
この場合には、
取得データの内容を取り出して使用しないように注意してください。
-------------------------------------------------------------------------
以下に、使用することができるジオメトリの種類と方法を一覧表示します。
□ AcGePoint3d(3D点ジオメトリ)
□ AcGeVector3d(3Dベクトルジオメトリ)
□ AcGeMatrix3d(3Dマトリクスジオメトリ)
参考: ジオメトリの実行に必要なデータ
ジオメトリの実行に必要なデータ
ジオメトリの命令を実行するために、様々な形式のデータを事前に準備しなければいけません。ここでは様々な形式のデータを事前に準備するための手法をデータの種類別に紹介します
-------------------------------------------------------------------------
□
3D座標値を事前に用意
□
3Dベクトルを事前に用意
□
3Dマトリクスを事前に用意
□
平面を事前に用意
□ 線分を事前に用意
ジオメトリの実行に必要なデータ
3D座標値を事前に用意
|
[変数] |
[内容] |
[型] |
1. |
pt |
3D座標値 |
実数配列(Double 0 to 2) |
座標値は、XYZの3つの座標値を含む実数値の配列です。
通常「座標値」は1つのデータとして扱えます。
XYZの各成分にデータを設定する場合には以下のように代入します。
pt ( 0 ) = X座標値
pt ( 1 ) = Y座標値
pt ( 2 ) = Z座標値
Dim
pt( 0 to 2 ) As Double '(3D座標値データを宣言)
pt( 0 ) = 1.0 'X座標
pt( 1 ) = 2.0 'Y座標
pt( 2 ) = 0.0 'Z座標
ジオメトリの実行に必要なデータ
3Dベクトルを事前に用意
|
[変数] |
[内容] |
[型] |
1. |
vec |
ベクトル |
実数配列(Double 0 to 2) |
ベクトルは、XYZの3つの成分を含む実数値の配列です。
通常「ベクトル」は1つのデータとして扱えます。
XYZの各成分にデータを設定する場合には以下のように代入します。
vec ( 0 ) = X成分
vec ( 1 ) = Y成分
vec ( 2 ) = Z成分
Dim
vec( 0 to 2 ) As Double '(命令の実行に必要な「
設定データ」宣言)
vec( 0 ) = 1.0 'X成分
vec( 1 ) = 2.0 'Y成分
vec( 2 ) = 0.0 'Z成分
ジオメトリの実行に必要なデータ
3Dマトリクスを事前に用意
|
[変数] |
[内容] |
[型] |
1. |
mat |
3Dマトリクス |
実数配列( Double ( 0 To 3 , 0 To 3 )) |
3Dマトリクスは、以下のような4 X 4の配列(2次元配列)で表現されます。
1.0 |
0.0 |
0.0 |
0.0 |
0.0 |
1.0 |
0.0 |
0.0 |
0.0 |
0.0 |
1.0 |
0.0 |
0.0 |
0.0 |
0.0 |
1.0 |
通常「3Dマトリクス」は1つのデータとして扱えます。
3Dマトリクスの各成分を自分で設定する場合は以下のように指定できます。
mat ( 0 , 0 ) |
mat ( 0 , 1 ) |
mat ( 0 , 2 ) |
mat ( 0 , 3 ) |
mat ( 1 , 0 ) |
mat ( 1 , 1 ) |
mat ( 1 , 2 ) |
mat ( 1 , 3 ) |
mat ( 2 , 0 ) |
mat ( 2 , 1 ) |
mat ( 2 , 2 ) |
mat ( 2 , 3 ) |
mat ( 3 , 0 ) |
mat ( 3 , 1 ) |
mat ( 3 , 2 ) |
mat ( 3 , 3 ) |
3Dマトリクスのデータを別の命令の結果として事前に取得していれば、
そのまま1つのデータとして使用できますが、新規に3Dマトリクスを
自分で作成する場合は、以下のような作業が必要になります。
例1)マトリクスの初期値の成分を自分で設定する場合
Dim
mat( 0 to 3 , 0 to 3 ) As Double '(3Dマトリクス用データ宣言)
mat( 0,0 )=1.0:
mat( 0,1 )=0.0:
mat( 0,2 )=0.0:
mat( 0,3 )=0.0
mat( 1,0 )=0.0:
mat( 1,1 )=1.0:
mat( 1,2 )=0.0:
mat( 1,3 )=0.0
mat( 2,0 )=0.0:
mat( 2,1 )=0.0:
mat( 2,2 )=1.0:
mat( 2,3 )=0.0
mat( 3,0 )=0.0:
mat( 3,1 )=0.0:
mat( 3,2 )=0.0:
mat( 3,3 )=1.0
例2)「移動」の変換マトリクスの成分を自分で設定する場合
「移動」の変換を設定する場合は、以下のX,Y,Zの部分に移動変異を設定します。
1.0 |
0.0 |
0.0 |
X方向 |
0.0 |
1.0 |
0.0 |
Y方向 |
0.0 |
0.0 |
1.0 |
Z方向 |
0.0 |
0.0 |
0.0 |
1.0 |
Dim
mat( 0 to 3 , 0 to 3 ) As Double '(3Dマトリクス用データ宣言)
mat( 0,0 )=1.0:
mat( 0,1 )=0.0:
mat( 0,2 )=0.0:
mat( 0,3 )=5.0'←ここがX方向変位
mat( 1,0 )=0.0:
mat( 1,1 )=1.0:
mat( 1,2 )=0.0:
mat( 1,3 )=6.0'←ここがY方向変位
mat( 2,0 )=0.0:
mat( 2,1 )=0.0:
mat( 2,2 )=1.0:
mat( 2,3 )=7.0'←ここがZ方向変位
mat( 3,0 )=0.0:
mat( 3,1 )=0.0:
mat( 3,2 )=0.0:
mat( 3,3 )=1.0
例3)3Dマトリクスの初期値を幾何計算(ジオメトリ)を利用して設定する場合
3Dマトリクスの初期値(単位行列)
1.0 |
0.0 |
0.0 |
0.0 |
0.0 |
1.0 |
0.0 |
0.0 |
0.0 |
0.0 |
1.0 |
0.0 |
0.0 |
0.0 |
0.0 |
1.0 |
3Dマトリクスの各成分を自分で設定するのは面倒な作業です。
3Dマトリクス用幾何計算(ジオメトリ)オブジェクト(AcGeMatrix3d)
を利用すると、3Dマトリクスが簡単に利用できます。
Dim
mat As Variant '(3Dマトリクス用データ宣言)
Dim
es As Boolean '(この命令を実行した結果を格納する「
エラー状況」)
Dim
obj As Object '(外部プログラムとの接続手続き保存用)
Set
obj = GetObject (
, "LT VBCOM.Application") '(外部プログラムとの接続手続き)
'(変位のベクトルから3Dマトリクスを作成)
es =
obj.geom ( "3Dマトリクスジオメトリ" , Null , "単位行列設定" , Null ,
mat)
例4)「移動」の変換マトリクスを幾何計算(ジオメトリ)を利用して設定する場合
3Dマトリクスの各成分を自分で設定するのは面倒な作業です。
3Dマトリクス用幾何計算(ジオメトリ)オブジェクト(AcGeMatrix3d)
を利用すると、3Dマトリクスが簡単に利用できます。
Dim
mat As Variant '(3Dマトリクス用データ宣言)
Dim vec ( 0 to 2 ) As Double '(3次元ベクトル用データ)
Dim
es As Boolean '(この命令を実行した結果を格納する「
エラー状況」)
Dim
obj As Object '(外部プログラムとの接続手続き保存用)
Set
obj = GetObject (
, "LT VBCOM.Application") '(外部プログラムとの接続手続き)
vec ( 0 ) = 2.5: vec ( 1 ) = 5.5: vec ( 2 ) = 0.0 '(平行移動変位をベクトルで指定)
'(変位のベクトルから3Dマトリクスを作成)
es =
obj.geom ( "3Dマトリクスジオメトリ" , Null , "平行移動" , vec ,
mat)
ジオメトリの実行に必要なデータ
平面を事前に用意
幾何計算で使用する平面には、幾何計算用の特別な平面が用意されています。
幾何計算用「平面」: AcGePlane
平面「AcGePlane」を定義するためには、以下の3つの手法が用意されています。
各手法で平面を定義する場合、その定義の先頭には必ず「"AcGePlane"」という
文字列を付けなければいけません。
plane ( 0 ) = "AcGePlane"
手法@:3つの座標値から平面を定義
|
[変数] |
[内容] |
[型] |
1. |
plane ( 1 ) |
X方向上の3D座標値 |
実数配列(Double 0 To 2) |
2. |
plane ( 2 ) |
原点の3D座標値 |
実数配列(Double 0 To 2) |
3 |
plane ( 3 ) |
Y方向上の3D座標値 |
実数配列(Double 0 To 2) |
Dim
plane( 0 To 3 ) As Variant '(平面用のデータ宣言)
Dim pt ( 0 to 2 ) As Double '(3D座標値)
plane ( 0 ) =
"AcGePlane" '(平面定義の名前を忘れずに設定)
pt ( 0 ) = 0.0: pt ( 1 ) = 0.0: pt ( 2 ) = 0.0
plane ( 1 ) = pt '(X方向上の3D座標値)
pt ( 0 ) = 1.0: pt ( 1 ) = 0.0: pt ( 2 ) = 0.0
plane ( 2 ) = pt '(原点の3D座標値)
pt ( 0 ) = 0.0: pt ( 1 ) = 1.0: pt ( 2 ) = 1.0
plane ( 3 ) = pt '(Y方向上の3D座標値)
手法A:1つの座標値と1つのベクトルから平面を定義
|
[変数] |
[内容] |
[型] |
1. |
plane ( 1 ) |
原点の3D座標値 |
実数配列(Double 0 To 2) |
2. |
plane ( 2 ) |
平面の法線方向ベクトル |
実数配列(Double 0 To 2) |
Dim
plane( 0 To 2 ) As Variant '(平面用のデータ宣言)
Dim pt ( 0 to 2 ) As Double '(3D座標値)
Dim vec ( 0 to 2 ) As Double '(3Dベクトル)
pt ( 0 ) = 5.0: pt ( 1 ) = 5.0: pt ( 2 ) = 0.0
vec ( 0 ) = 0.0: vec ( 1 ) = -1.0: vec ( 2 ) = 1.0
plane ( 0 ) =
"AcGePlane" '(平面定義の名前を忘れずに設定)
plane ( 1 ) = pt '(原点の3D座標値)
plane ( 2 ) = vec '(平面の法線方向ベクトル)
手法B:1つの座標値と2つのベクトルから平面を定義
|
[変数] |
[内容] |
[型] |
1. |
plane ( 1 ) |
原点の3D座標値 |
実数配列(Double 0 To 2) |
2. |
plane ( 2 ) |
X方向ベクトル |
実数配列(Double 0 To 2) |
3 |
plane ( 3 ) |
Y方向ベクトル |
実数配列(Double 0 To 2) |
Dim
plane( 0 To 3 ) As Variant '(平面用のデータ宣言)
Dim pt ( 0 to 2 ) As Double '(3D座標値)
plane ( 0 ) =
"AcGePlane 2" '(平面定義の名前を忘れずに設定)
pt ( 0 ) = 0.0: pt ( 1 ) = 0.0: pt ( 2 ) = 0.0
plane ( 1 ) = pt '(X方向上の3D座標値)
pt ( 0 ) = 1.0: pt ( 1 ) = 0.0: pt ( 2 ) = 0.0
plane ( 2 ) = pt '(原点の3D座標値)
pt ( 0 ) = 0.0: pt ( 1 ) = 1.0: pt ( 2 ) = 1.0
plane ( 3 ) = pt '(Y方向上の3D座標値)
注意:
この手法Bの場合のみ「平面定義の名前」の部分が、「
AcGePlane」ではなく、
「
AcGePlane 2」となります。注意してください。
ジオメトリの実行に必要なデータ
線分を事前に用意
幾何計算で使用する線分には、幾何計算用の特別な線分が用意されています。
幾何計算用「線分」: AcGeLine3d
線分「AcGeLine3d」を定義するためには、以下の3つの手法が用意されています。
各手法で平面を定義する場合、その定義の先頭には必ず「"AcGeLine3d"」という
文字列を付けなければいけません。
geline ( 0 ) = "AcGeLine3d"
手法@:2つの座標値から線分を定義
|
[変数] |
[内容] |
[型] |
1. |
geline ( 1 ) |
1点目の3D座標値 |
実数配列(Double 0 To 2) |
2. |
geline ( 2 ) |
2点目の3D座標値 |
実数配列(Double 0 To 2) |
Dim
geline( 0 To 2 ) As Variant '(線分用のデータ宣言)
Dim pt ( 0 to 2 ) As Double '(3D座標値)
geline ( 0 ) =
"AcGeLine3d" '(平面定義の名前を忘れずに設定)
pt ( 0 ) = 0.0: pt ( 1 ) = 0.0: pt ( 2 ) = 0.0
geline ( 1 ) = pt '(1点目の3D座標値)
pt ( 0 ) = 1.0: pt ( 1 ) = 0.0: pt ( 2 ) = 0.0
geline ( 2 ) = pt '(2点目の3D座標値)
手法A:1つの座標値と1つのベクトルから線分を定義
|
[変数] |
[内容] |
[型] |
1. |
geline ( 1 ) |
1点目の3D座標値 |
実数配列(Double 0 To 2) |
2. |
geline ( 2 ) |
線分の方向ベクトル |
実数配列(Double 0 To 2) |
Dim
geline( 0 To 2 ) As Variant '(線分用のデータ宣言)
Dim pt ( 0 to 2 ) As Double '(3D座標値)
Dim vec ( 0 to 2 ) As Double '(3Dベクトル)
geline ( 0 ) =
"AcGeLine3d 2" '(線分定義の名前を忘れずに設定)
pt ( 0 ) = 0.0: pt ( 1 ) = 0.0: pt ( 2 ) = 0.0
geline ( 1 ) = pt '(1点目の3D座標値)
vec ( 0 ) = 1.0: vec ( 1 ) = 1.0: vec ( 2 ) = 0.0
geline ( 2 ) = pt '(2点目の3D座標値)
注意:
この手法Aの場合のみ「線分定義の名前」の部分が、「
AcGeLine3d」ではなく、
「
AcGeLine3d 2」となります。注意してください。
AcGePoint3d 日本語名:「3D点ジオメトリ」
|
es = obj.Geom ( "AcGePoint3d", initData, "命令", setData , getData)
es = obj.Geom ( "3D点ジオメトリ", initData, "命令", setData , getData)
(上記のどの手法でも使用できます)
基本的なジオメトリの書式の詳細は「ジオメトリ」を参照してください。
注意:上記赤の文字の部分は、この機能を使用する際には固定の文字です。
3D点ジオメトリを使用すると以下の様な幾何計算が可能です。
|
[初期設定(initData)]
初期設定は、どの命令を使用する際にも共通で設定できます。3D点ジオメトリは基本的に3次元座標値と同じ形なので、X、Y、Zの各成分を実数で設定するだけです。また初期設定に「Null」を設定した場合、XYZの各成分に「0.0」が設定されます。 |
Dim
initData( 0 to 2 ) As Variant '(初期値の「
初期データ」)
initData( 0 ) = 1.0 '(X座標)
initData( 1 ) = 1.0 '(Y座標)
initData( 2 ) = 0.0 '(Z座標)
[各種命令]
各命令には、その命令を実行するために必要な設定データ(setData)が必要です。この設定データ(setData)は命令毎に内容が異なります。以下に各命令とその命令に必要なデータの形式を示します。 |
参考: 基本的に以下の接続手続きと、
取得データ(setData)の宣言は共通です
Dim getData As Variant '(命令の実行結果を格納する「
取得データ」用変数宣言)
'外部プログラムとの接続手続き
Dim obj As Object '(外部プログラムとの接続手続き保存用)
Set obj = GetObject (
, "LT VBCOM.Application") '(外部プログラムとの接続手続き)
-------------------------------------------------------------------------
命令:transformBy(変換)
この3D点ジオメトリを指定の3Dマトリクスによって変換した座標値を取得します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= mat '(マトリクス)
es = obj.geom (
"3D点ジオメトリ" , initData ,
"変換" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
変換後の座標値 |
実数配列(Double 0 To 2) |
-------------------------------------------------------------------------
命令:rotateBy(回転)
この3D点ジオメトリを回転させた位置にある座標値を取得します。 |
設定データ(setData)
Dim
setData ( 0 To 2 ) As Variant '(命令に必要な「
設定データ」)
setData ( 0 )=3.14159265358979323846 / 2.0 '(回転角度 ラジアン)
setData ( 1 )= vec '(回転軸のベクトル)
setData ( 2 )= pt '(回転の中心)
es = obj.geom (
"3D点ジオメトリ" , initData ,
"回転" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
回転された座標値 |
実数配列(Double 0 To 2) |
-------------------------------------------------------------------------
命令:mirror(対称)
この3D点ジオメトリの指定の平面を挟んで対称の位置にある座標値を取得します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= plane '(対称平面)
es = obj.geom (
"3D点ジオメトリ" , initData ,
"対称" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
対称の座標値 |
実数配列(Double 0 To 2) |
-------------------------------------------------------------------------
命令:scaleBy(尺度変更)
この3D点ジオメトリに対して尺度変更を与えられた位置の座標値を取得します。 |
設定データ(setData)
Dim
setData ( 0 To 1 ) As Variant '(命令に必要な「
設定データ」)
setData ( 0 )=1.5 '(尺度の倍率)
setData ( 1 )= pt '(尺度変更の基点)
es = obj.geom (
"3D点ジオメトリ" , initData ,
"尺度変更" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
変換後の座標値 |
実数配列(Double 0 To 2) |
-------------------------------------------------------------------------
命令:*
この3D点ジオメトリの各成分に指定の実数を掛けます。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData=1.5
es = obj.geom (
"3D点ジオメトリ" , initData ,
"*" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
計算後の座標値 |
実数配列(Double 0 To 2) |
-------------------------------------------------------------------------
命令:/
この3D点ジオメトリの各成分を指定の実数で割ります。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData=2.0
es = obj.geom (
"3D点ジオメトリ" , initData ,
"/" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
計算後の座標値 |
実数配列(Double 0 To 2) |
-------------------------------------------------------------------------
命令:+
この3D点ジオメトリの各成分に指定の座標値の成分を足します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= pt '(足したい座標値)
es = obj.geom (
"3D点ジオメトリ" , initData ,
"+" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
計算後の座標値 |
実数配列(Double 0 To 2) |
-------------------------------------------------------------------------
命令:-
この3D点ジオメトリの各成分に指定の座標値の成分を引きます。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= pt '(引きたい座標値)
es = obj.geom (
"3D点ジオメトリ" , initData ,
"-" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
計算後の座標値 |
実数配列(Double 0 To 2) |
-------------------------------------------------------------------------
命令:distanceTo(距離測定)
この3D点ジオメトリと対象となる座標値との距離を取得します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= pt '(対象の座標値)
es = obj.geom (
"3D点ジオメトリ" , initData ,
"距離計測" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
2点間の距離 |
実数(Double) |
-------------------------------------------------------------------------
命令:==
この3D点ジオメトリが指定の座標値と等しいか比較します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= pt '(対象の座標値)
es = obj.geom (
"3D点ジオメトリ" , initData ,
"==" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
ブール値0 =等しくない1 =等しい |
整数(Integer) |
-------------------------------------------------------------------------
命令:)
この3D点ジオメトリが指定の座標値と等しくないか比較します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= pt '(対象の座標値)
es = obj.geom (
"3D点ジオメトリ" , initData ,
")" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
ブール値0 =等しい1 =等しくない |
整数(Integer) |
-------------------------------------------------------------------------
命令:isEqualTo(等しい?)
この3D点ジオメトリが指定の座標値と等しいか比較します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= pt '(対象の座標値)
es = obj.geom (
"3D点ジオメトリ" , initData ,
"等しい?" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
ブール値0 =等しくない1 =等しい |
整数(Integer) |
-------------------------------------------------------------------------
命令:project(平行投影)
設定データ(setData)
Dim
setData ( 0 To 1 ) As Variant '(命令に必要な「
設定データ」)
setData ( 0 )= vec '(投影方向)
setData ( 1 )= plane '(投影の対称平面)
es = obj.geom (
"3D点ジオメトリ" , initData ,
"変換" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
投影された座標値 |
実数配列(Double 0 To 2) |
-------------------------------------------------------------------------
命令:orthoProject(正投影)
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= plane '(投影の対称平面)
es = obj.geom (
"3D点ジオメトリ" , initData ,
"変換" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
投影された座標値 |
実数配列(Double 0 To 2) |
AcGeVector3d 日本語名:「3Dベクトルジオメトリ」
|
es = obj.Geom ( "AcGeVector3d", initData, "命令", setData , getData)
es = obj.Geom ( "3Dベクトルジオメトリ", initData, "命令", setData , getData)
(上記のどの手法でも使用できます)
基本的なジオメトリの書式の詳細は「ジオメトリ」を参照してください。
注意:上記赤の文字の部分は、この機能を使用する際には固定の文字です。
3Dベクトルジオメトリを使用すると以下の様な幾何計算が可能です。
|
[初期設定(initData)]
初期設定は、どの命令を使用する際にも共通で設定できます。3Dベクトルジオメトリは基本的に3次元座標値と同じ形なので、X、Y、Zの各成分を実数で設定するだけです。また初期設定に「Null」を設定した場合、XYZの各成分に「0.0」が設定されます。 |
Dim
initData( 0 to 2 ) As Variant '(初期値の「
初期データ」)
initData( 0 ) = 1.0 '(X座標)
initData( 1 ) = 1.0 '(Y座標)
initData( 2 ) = 0.0 '(Z座標)
[各種命令]
各命令には、その命令を実行するために必要な設定データ(setData)が必要です。この設定データ(setData)は命令毎に内容が異なります。以下に各命令とその命令に必要なデータの形式を示します。 |
参考: 基本的に以下の接続手続きと、
取得データ(setData)の宣言は共通です
Dim getData As Variant '(命令の実行結果を格納する「
取得データ」用変数宣言)
'外部プログラムとの接続手続き
Dim obj As Object '(外部プログラムとの接続手続き保存用)
Set obj = GetObject (
, "LT VBCOM.Application") '(外部プログラムとの接続手続き)
-------------------------------------------------------------------------
命令:transformBy(変換)
この3Dベクトルジオメトリを指定の3Dマトリクスによって変換したベクトルを取得します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= mat '(マトリクス)
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"変換" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
変換後のベクトル |
実数配列(Double 0 To 2) |
-------------------------------------------------------------------------
命令:rotateBy(回転)
この3Dベクトルジオメトリを指定の回転軸に沿って会い点させたベクトルを取得します。 |
設定データ(setData)
Dim
setData ( 0 To 2 ) As Variant '(命令に必要な「
設定データ」)
setData ( 0 )=3.14159265358979323846 / 2.0 '(回転角度 ラジアン)
setData ( 1 )= vec '(回転軸のベクトル)
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"回転" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
変換後のベクトル |
実数配列(Double 0 To 2) |
-------------------------------------------------------------------------
命令:mirror(対称)
この3Dベクトルジオメトリを指定の平面で挟んで反対側に定義できるベクトルを取得します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= plane '(対称平面)
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"対称" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
対称のベクトル |
実数配列(Double 0 To 2) |
-------------------------------------------------------------------------
命令:*
この3Dベクトルジオメトリの各成分に指定の実数を掛けたベクトルを取得します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= 1.5
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"*" ,
setData , getData )
または
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"*" ,
1.5 , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
計算後のベクトル |
実数配列(Double 0 To 2) |
-------------------------------------------------------------------------
命令:/
この3Dベクトルジオメトリの各成分を指定の実数値で割ったベクトルを取得します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= 1.5
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"/" ,
setData , getData )
または
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"/" ,
1.5 , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
計算後のベクトル |
実数配列(Double 0 To 2) |
-------------------------------------------------------------------------
命令:+
この3Dベクトルジオメトリの各成分に指定の実数値を足したベクトルを取得します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= 1.5
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"+" ,
setData , getData )
または
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"+" ,
1.5 , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
計算後のベクトル |
実数配列(Double 0 To 2) |
-------------------------------------------------------------------------
命令:-
この3Dベクトルジオメトリの各成分に指定の実数値を引いたベクトルを取得します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= 1.5
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"-" ,
setData , getData )
または
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"-" ,
1.5 , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
計算後のベクトル |
実数配列(Double 0 To 2) |
-------------------------------------------------------------------------
命令:perpVector(直交ベクトル)
この3Dベクトルジオメトリに直行するベクトルを取得します。 |
設定データ(setData)
この命令における
設定データは必要ありません。「
Null」を設定します。
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"直交ベクトル" ,
Null , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
直行するベクトル |
実数配列(Double 0 To 2) |
-------------------------------------------------------------------------
命令:angleTo(指定ベクトルとの角度)
この3Dベクトルジオメトリと指定のベクトルとの角度を取得します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= vec '(指定ベクトル)
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"指定ベクトルとの角度" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
角度(ラジアン) |
実数(Double) |
-------------------------------------------------------------------------
命令:angleOnPlane(平面上での角度)
この3Dベクトルジオメトリの指定の平面上における角度を取得します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= plane '(指定の平面)
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"平面上での角度" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
角度(ラジアン) |
実数(Double) |
-------------------------------------------------------------------------
命令:normal(単位ベクトル化)
この3Dベクトルジオメトリを単位ベクトルにしたベクトルを取得します。 |
設定データ(setData)
この命令における
設定データは必要ありません。「
Null」を設定します。
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"単位ベクトル化" ,
Null , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
単位ベクトル |
実数配列(Double 0 To 2) |
-------------------------------------------------------------------------
命令:length(長さ)
この3Dベクトルジオメトリのベクトルの長さを取得します。 |
設定データ(setData)
この命令における
設定データは必要ありません。「
Null」を設定します。
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"長さ" ,
Null , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
ベクトルの長さ |
実数(Double) |
-------------------------------------------------------------------------
命令:lengthSqrd(長さの2乗)
この3Dベクトルジオメトリの長さの2乗の値を取得します。 |
設定データ(setData)
この命令における
設定データは必要ありません。「
Null」を設定します。
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"長さの2乗" ,
Null , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
ベクトルの長さの2乗 |
実数(Double) |
-------------------------------------------------------------------------
命令:isUnitLength(単位長さ?)
この3Dベクトルジオメトリが単位ベクトルの長さかを確認します。 |
設定データ(setData)
この命令における
設定データは必要ありません。「
Null」を設定します。
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"長さ0?" ,
Null , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
ブール値0 =単位長さではない1 =単位長さ |
整数(Integer) |
-------------------------------------------------------------------------
命令:isZeroLength(長さ0?)
この3Dベクトルジオメトリの長さが0かを確認します。 |
設定データ(setData)
この命令における
設定データは必要ありません。「
Null」を設定します。
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"長さ0?" ,
Null , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
ブール値0 =長さ0ではない1 =長さ0 |
整数(Integer) |
-------------------------------------------------------------------------
命令:isParallelTo(平行?)
この3Dベクトルジオメトリと指定のベクトルが平行かを確認します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= vec '(指定のベクトル)
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"平行?" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
ブール値0 =平行ではない1 =平行 |
整数(Integer) |
-------------------------------------------------------------------------
命令:isCodirectionalTo(同一方向?)
この3Dベクトルジオメトリと指定のベクトルが同じ方向を向いているかを確認します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= vec '(指定のベクトル)
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"同一方向?" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
ブール値0 =同じ方向ではない1 =同じ方向 |
整数(Integer) |
-------------------------------------------------------------------------
命令:isPerpendicularTo(垂直?)
この3Dベクトルジオメトリと指定のベクトルが垂直かを確認します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= vec '(指定のベクトル)
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"垂直?" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
ブール値0 =垂直ではない1 =垂直 |
整数(Integer) |
-------------------------------------------------------------------------
命令:dotProduct(内積)
この3Dベクトルジオメトリと指定のベクトルとの内積を取得します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= vec '(指定のベクトル)
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"内積" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
内積 |
実数(Double) |
-------------------------------------------------------------------------
命令:crossProduct(外積)
この3Dベクトルジオメトリと指定のベクトルとの外積を取得します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= vec '(指定のベクトル)
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"外積" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
外積 |
実数(Double) |
-------------------------------------------------------------------------
命令:project(投影)
この3Dベクトルジオメトリを指定の平面に投影するときのマトリクスを取得します。 |
設定データ(setData)
Dim
setData ( 0 To 1 ) As Variant '(命令に必要な「
設定データ」)
setData ( 0 )= vec1 '(投影平面の法線ベクトル)
setData ( 1 )= vec2 '(投影方向のベクトル)
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"投影" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
3Dマトリクス |
実数配列(Double ( 0 to 3 , 0 to 3 )) |
-------------------------------------------------------------------------
命令:orthoProject(正投影)
この3Dベクトルジオメトリを指定の平面に投影したベクトルを取得します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= vec '(投影する平面の法線ベクトル)
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"正投影" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
投影されたベクトル |
実数配列(Double 0 To 2) |
-------------------------------------------------------------------------
命令:==
この3Dベクトルジオメトリと指定のベクトルが等しいかを確認します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= vec '(指定のベクトル)
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"==" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
ブール値0 =等しくない1 =等しい |
整数(Integer) |
-------------------------------------------------------------------------
命令:)
この3Dベクトルジオメトリと指定のベクトルが等しくないかを確認します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= vec '(指定のベクトル)
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
")" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
ブール値0 =等しい1 =等しくない |
整数(Integer) |
-------------------------------------------------------------------------
命令:isEqualTo(等しい?)
この3Dベクトルジオメトリと指定のベクトルが等しいかを確認します。 |
設定データ(setData)
Dim
setData As Variant '(命令に必要な「
設定データ」)
setData= vec '(指定のベクトル)
es = obj.geom (
"3Dベクトルジオメトリ" , initData ,
"等しい?" ,
setData , getData )
取得データ(setData)
|
[変数] |
[内容] |
[型] |
1. |
getData |
ブール値0 =等しくない1 =等しい |
整数(Integer) |