情報 -INSERT-

トップページへ

情報へ

更新 2004年11月10日



オブジェクト座標系を求める方法   2004年11月10日

あるブロックにおいて、ブロック セクションにグループ コード (210, 220, 230) があらわれ、なおかつ、エンティティ セクションの項目「INSERT」にもグループ コード (210, 220, 230) があらわれる場合、次の方法でオブジェクト座標系を求めます。

最初に、ブロック セクションにあらわれるグループ コード (210, 220, 230) のデータからオブジェクト座標系のZ軸を得ます。 次に、「任意の軸のアルゴリズム」を使いX軸とY軸を求めます。
以上よりブロック セクションにおけるオブジェクト座標系のX軸、Y軸、Z軸が求まります。 ここで、ブロックセクションにおけるオブジェクト座標系のX軸、Y軸、Z軸を、それぞれ BlockXaxis, BlockYaxis, BlockZaxisとします。
BlockXaxis = (BXx, BXy, BXz)
BlockYaxis = (BYx, BYy, BYz)
BlockZaxis = (BZx, BZy, BZz)
BlockXaxis, BlockYaxis, BLockZaxis は単位ベクトル

次に、エンティティ セクションの項目「INSERT」にあらわれるグループ コード (210, 220, 230) のデータからオブジェクト座標系のZ軸を得ます。 次に、「任意の軸のアルゴリズム」を使いX軸とY軸を求めます。
以上よりエンティティ セクションの項目「INSERT」におけるオブジェクト座標系のX軸、Y軸、Z軸が求まります。 ここで、エンティティ セクションの項目「INSERT」におけるオブジェクト座標系のX軸、Y軸、Z軸を、それぞれ InsertXaxis, InsertYaxis, InsertZaxis とします。
InsertXaxis = (IXx, IXy, IXz)
InsertYaxis = (IYx, IYy, IYz)
InsertZaxis = (IZx, IZy, IZz)
InsertXaxis, InsertYaxis, InsertZaxis は単位ベクトル

図形を再現するための新しいオブジェクト座標系のX軸、Y軸、Z軸を、それぞれ NewXaxis, NewYaxis, NewZaxisとすると、次の関係が成り立ちます。

NewXaxis1

NewYaxis1

NewZaxis1
NewXaxis, NewYaxis, NewZaxis は単位ベクトル

以上から得た新しいオブジェクト座標系のX軸、Y軸、Z軸を基準として、ブロック セクションのデータから図形を再現します。

ただし、ブロック セクションにグループ コード (210, 220, 230) があらわれ、なおかつ、エンティティ セクションの項目「INSERT」にもグループ コード (210, 220, 230) があらわれ、なおかつ、項目「INSERT」にグループ コード「50」があらわれる場合、次のようになります。

NewXaxis2

NewYaxis2

NewZaxis2
NewXaxis, NewYaxis, NewZaxis は単位ベクトル

以上がオブジェクト座標系を求める方法です。



具体例 その1   2004年11月10日

具体例を使いオブジェクト座標系を求めます。
ブロック セクションに図のようなデータがあるとします。

block1     block2 

  0
BLOCK
  5
F5
330
F4
100
AcDbEntity
  8
0
100
AcDbBlockBegin
 
  2
block1
 70
     0
 10
0.0
 20
0.0
 30
0.0
  3
block1
  1

  0
LWPOLYLINE
  5
F7
330
F4
100
AcDbEntity
  8
0
100
AcDbPolyline

  90
        3
 70
     1
 43
0.0
 10
0.0
 20
0.0
 10
100.0
 20
0.0
 10
0.0
 20
200.0

210
-1.0
220
0.0
230
0.0


そして、エンティティ セクションの項目「INSERT」に、図のようなデータがあるとします。

INSERT1     INSERT2

  0
INSERT
  5
FE
330
1F
100
AcDbEntity
  8
layer1
100
AcDbBlockReference
  2
block1
 10
0.0
 20
0.0
 30
0.0
210
0.0
220
0.0
230
-1.0

  0
INSERT
  5
FF
330
1F
100
AcDbEntity
  8
layer2
100
AcDbBlockReference
  2
block1
 10
0.0
 20
0.0
 30
0.0
210
0.0
220
1.0
230
0.0

この例では、どちらの項目「INSERT」にもグループ コード「50」は、あらわれませんので、次の式により新しいオブジェクト座標系を得ます。

NewXaxis1

NewYaxis1

NewZaxis1


以上の式に、上記のデータを適用して計算します。
水色の場合、次のようになります。

INSERT1x


INSERT1y


INSERT1z 



赤紫色の場合、次のようになります。

INSERT2x


INSERT2y


INSERT2z



以上の方法で、あたらしいオブジェクト座標系が求まりました。 このオブジェクト座標系を使い、図形を再現します。



具体例 その2   2004年11月10日

別の具体例を使いオブジェクト座標系を求めます。
ブロック セクションに図のようなデータがあるとします。
BLOCK2

  0
BLOCK
  5
F5
330
F4
100
AcDbEntity
  8
0
100
AcDbBlockBegin
 
  2
block1
 70
     0
 10
0.0
 20
0.0
 30
0.0
  3
block1
  1

  0
LWPOLYLINE
  5
F7
330
F4
100
AcDbEntity
  8
0
100
AcDbPolyline

 90
        3
 70
     1
 43
0.0
 10
0.0
 20
0.0
 10
100.0
 20
0.0
 10
0.0
 20
200.0

210
0.0
220
-0.7071067811865476
230
0.7071067811865475


そして、エンティティ セクションの項目「INSERT」に、図のようなデータがあるとします。
INSERT3

  0
INSERT
  5
F8
330
1F
100
AcDbEntity
  8
layer1
100
AcDbBlockReference
  2
block1
 10
0.0
 20
0.0
 30
0.0
 50
180.0
210
0.0
220
0.7071067811865478
230
0.7071067811865474



この例では、項目「INSERT」にグループ コード「50」が、あらわれるので、次の式により新しいオブジェクト座標系を得ます。
NewXaxis2

NewYaxis2

NewZaxis2


以上の式に、上記のデータを適用して計算します。

INSERT3x

INSERT3y

INSERT3z


以上の方法で、あたらしいオブジェクト座標系が求まりました。 このオブジェクト座標系を使い、図形を再現します。 そして、グループ コード「50」があらわれていますので、図形を回転させます。





このホームページの情報にもとづいておこなった結果について、落合重紀は一切責任を負いません。

トップページへ
情報へ