trans を使用して、点または変位を、ある座標系から別の座標系に変換することができます。
trans 関数には、3 つの引数を指定します。4 番目の引数は省略可能です。最初の引数 pt は 3D 点または 3D 変位ベクトルで、disp という省略可能な変位引数によって区別されます。pt を変位ベクトルとして扱う場合、disp 引数は 0(ゼロ)以外でなくてはならず、そうでない場合、pt は点として扱われます。from 引数には pt を表している座標系を指定し、to 引数には目的の座標系を指定します。
trans 関数の構文は、次のとおりです。
(trans pt from to [disp])
from と to 引数には両方とも、次の方法で座標系を指定できます。
次の表に、from 引数と to 引数に使用できる有効な整数コードを示します。
座標系コード |
|
---|---|
コード |
座標系 |
0(ゼロ) |
ワールド(WCS) |
1 |
ユーザ(現在の UCS) |
2 |
ディスプレイ。コード 0(ゼロ)または 1 と組み合わせて使用する場合、現在のビューポートの DCS、コード 3 と組み合わせて使用する場合、現在のモデル空間ビューポートの DCS |
3 |
ペーパー空間 DCS、PSDCS(コード 2 専用) |
次のサンプル コードは、点を WCS から現在の UCS に変換します。
(setq pt '(1.0 2.0 3.0)) (setq cs_from 0) ; WCS (setq cs_to 1) ; UCS (trans pt cs_from cs_to 0) ; disp = 0 indicates that pt is a point
現在の UCS がワールド Z 軸を中心にして反時計回りに 90 度回転している場合、trans を呼び出すと点 (2.0,-1.0,3.0) が返されます。しかし次のコードに示すように、to と from の値を入れ替えると、異なる結果になります。
(trans pt cs_to cs_from 0) ; the result is (-2.0,1.0,3.0)
ワールド座標系。これは、基準座標系です。その他のすべての座標系は、決して変わることのない WCS を基準にして定義されます。WCS を基準にして計測した値は、他の座標系が変更されても一定です。
ユーザ座標系。作図作業を容易にするためにユーザが定義した作業用の座標系。AutoLISP のルーチンや外部関数から返される点など、AutoCAD のコマンドに渡されるすべての点は、現在の UCS における点です(ただし、ユーザが AutoCAD のコマンド プロンプトに対して頭に * を付けた場合を除く)。アプリケーションが AutoCAD のコマンドに WCS、OCS、または DCS の座標を送る場合は、まず trans 関数を呼び出して座標を UCS に変換しなければなりません。
オブジェクト座標系。entget が返す点の値は、オブジェクトそのものを基準にした座標系で表されます。 通常、これらの点はオブジェクトの用途に応じて WCS、現在の UCS、または現在の DCS に変換されます。逆に、entmod や entmake 関数を使用してデータベースに書き込む場合は、その前に点を OCS に変換しなければなりません。OCSは、図形座標系(ECS)とも呼ばれます。
ディスプレイ座標系。表示前にオブジェクトを変換する先の座標系。DCS の原点は AutoCAD のシステム変数 TARGET に格納されている点で、その Z 軸は視線方向です。言い換えれば、ビューポートは常にその DCS のプラン ビューということです。これらの座標を使用すると、AutoCAD ユーザに対する表示位置を決めることができます。
from と to の整数コードが 2 と 3 の場合(順序はどちらでもかまいません)、2 は現在のモデル空間のビューポートを表し、3 はペーパー空間の DCS(PSDCS)を表します。コード 2 を 3 以外の整数コードと一緒に使用すると(または座標系を指定する別の方法を使用すると)、ペーパー空間であれモデル空間であれ、現在の空間の DCS を表すものと仮定されます。もう 1 つの引数も、現在の空間における座標系を表すものとみなされます。
ペーパー空間 DCS。この座標系は、現在アクティブなモデル空間ビューポートの DCS との間のみで変換されます。 これは基本的に 2D 変換で、disp 引数が 0(ゼロ)の場合、X と Y の各座標の尺度は常に変更され、オフセットされます。Z 座標の尺度は変更されますが、変換されることはありません。したがって、Z 座標を使用すると、2 種類の座標系の間の尺度係数を検出できます。PSDCS (整数コード 2)は現在のモデル空間のビューポートだけに変換できます。from 引数が 3 の場合、to 引数は 2 でなくてはならず、その逆も同じです。