trans (AutoLISP)

ある座標系から別の座標系に、点(または変位)を変換します。

サポートされているプラットフォーム: Windows および Mac OS

構文と要素

(trans pt from to [disp])
pt

タイプ: リスト

3D 点または 3D 変位(ベクトル)を表す 3 つの実数のリスト。

from

タイプ: 整数、リスト、ads_name

pt 引数の座標系を表す整数コード、項目名、または 3D 押し出しベクトル。整数コードには、次の値の 1 つを指定することができます。

0: ワールド(WCS)

1: ユーザ座標系(現在の UCS)

2: コード 0(ゼロ)または 1 と組み合わせて使用した場合、現在のビューポートのディスプレイ座標系(DCS)を表します。コード 3 と組み合わせて使用した場合、現在のモデル空間ビューポートの DCS を表します。

 3: ペーパー空間 DCS(コード 2 との組み合わせのみで使用します)

to

タイプ: 整数、リスト、ads_name

関数が返す点の座標系を表す整数コード、項目名、または 3D 押し出しベクトル。有効な整数コードのリストについては、from 引数を参照してください。

disp

タイプ: リスト

nil 以外の値を指定すると、pt 引数は点ではなく 3D 変位として扱われます。

戻り値

タイプ: リスト

指定された to 座標系での 3D 点(または変位)。

注意

from 引数 または to 引数に図形名を使用する場合、entnextentlastentselnentselssname 関数が返すのと同じ形式の値を渡さなければなりません。この形式を使用することによって、特定のオブジェクトのオブジェクト座標系(OCS)との間で点を変換できます。(オブジェクトによっては、OCS と WCS が等しいものもあります。このようなオブジェクトでは、OCS と WCS の間の変換で演算は行われません。)3D 押し出しベクトル(3 つの実数のリスト)でも、オブジェクトの OCS との間で変換できます。しかし、OCS と WCS が等しいオブジェクトの場合はその限りではありません。

trans 関数は、2D 点を変換することもできます。2D 点の変換は、Z 座標に適切な値を設定することによって行われます。使用される Z 座標は、指定された from 座標系と値を点として変換するか、変位として変換するかによって決定されます。値を変位として変換する場合、Z 座標は常に 0.0 です。値を点として変換する場合、Z 座標に設定する値は次の表に示すように決定されます。

変換する 2D 点の Z の値

from

Z に設定する値

WCS

0.0

UCS

現在の高度

OCS

0.0

DCS

現在の作図平面への投影 (UCS の XY 平面 + 現在の高度)

PSDCS

現在の作図平面への投影 (UCS の XY 平面 + 現在の高度)

次の例では、UCS を、WCS の Z 軸を中心に反時計回りに 90 度回転させています。

(trans '(1.0 2.0 3.0) 0 1)
(2.0 -1.0 3.0)

(trans '(1.0 2.0 3.0) 1 0)
(-2.0 1.0 3.0)

たとえば、文字の挿入点から(オブジェクト スナップを使用せずに)線分を描くには、文字オブジェクトの挿入点を文字オブジェクトの OCS から UCS に変換します。

(trans text-insert-point text-ename 1)

上記の変換を行うことにより、結果を、始点を求めるプロンプトに渡すことができます。

一方、点(または変位)の値を entmod 関数に渡すには、その前にその図形の OCS に変換しなければなりません。たとえば、UCS でのオフセット(1,2,3)で(AutoCAD の MOVE[移動]コマンドを使用せずに)円を移動したい場合、変位を UCS から円の OCS に変換しなければなりません。

(trans '(1 2 3) 1 circle-ename)

次に、結果の変位を円の中心点に加えます。

たとえば、ユーザが入力した点があり、線分のどちらの端がその点に近いかを調べる場合、ユーザが入力した点を UCS から DCS に変換します。

(trans user-point 1 2)

次に、線分の端点を OCS から DCS に変換します。

(trans endpoint line-ename 2)

これによって、ユーザの点と線分の両端の間の距離を計算することが可能になり(Z 座標は無視)、どちらの端が近いかを判別できます。