【DXF】文字列の出力

DXF

文字の定義

TEXTは、以下のように記述されます。

  • ①の座標は、グループコード10,20,30が文字に始点のX,Y,Zを表します。
  • ➁の座標は、グループコード11,21,31 文字の中心を表します。
  • グループコード40で、回転角度(90)を表します。角度は右回り、左回りがありますが HEADER セクション の $ANGDIRで定義されています。
TEXT
  5
73B2
330
1F
100
AcDbEntity
  8
DIM
100
AcDbText
 10      ➀の座標
-965665
 20
-309981
 30
0.0
 40
90.0
  1
台池 ユーザー指定文字
 50
90.0 角度
  7
ゴシック
 72
     1
 11   ➁の座標
-965710
 21
-309864
 31
0.0
100
AcDbText
 73
     2
  0

文字列の回転

  • VB.netで記述すると文字の回転は、以下のようになります。
  • 先にグラフィックオブジェクトを平行移動、回転して原点に書き込みます。
 Public Sub Draw(ByRef canvas     As Bitmap,
                 ByRef boundBox    As BoundingBox,
                 ByVal xImageWidth  As Double,
                 ByVal yImagaHeight  As Double)

        'グラフィックオブジェクトの定義
        Dim g As Graphics = Graphics.FromImage(canvas)
        Dim width As Integer = canvas.Width
        Dim height As Integer = canvas.Height

        '出力文字列
        Dim message As String = "台池"

        'スクリーン座標へ変換
        Dim X = (mText.mPosition.mX - boundBox.mCoordMin.mX) / (boundBox.mCoordMax.mX - boundBox.mCoordMin.mX)
        X = xImageWidth * X
        Dim Y = (mText.mPosition.mY - boundBox.mCoordMin.mY) / (boundBox.mCoordMax.mY - boundBox.mCoordMin.mY)
        Y = yImagaHeight * (1.0 - Y)
      
        '画像を平行移動
        g.TranslateTransform(X, Y)
        '回転
        g.RotateTransform(-90)

        'フォントオブジェクトの作成
        Dim fnt As New Font("MS UI Gothic", 9)

        '文字列、フオント、黒色、位置、フォーマットで表示
        g.DrawString(message, fnt, Brushes.Black, 0, 0)

        'リソースを解放する
        fnt.Dispose()
        g.Dispose()

    End Sub

DXF
スポンサーリンク
Engineerをフォローする