DxfReader
 

 


                                  

 

 

DXFファイル解析プログラム

 

Copyright 2011-2015年、佐々木芳

 

 

トップページへ戻る

 

 

はじめに

 

ここでは、DXFファイルを読み込み、解析するプログラムであるDxfReaderについて説明します。DXFとはオートデスク社が定めたCADの図面データを交換するために使われている形式ですDxfReaderは、DXFファイルのテキスト構造を解析するだけのプログラムですが、その結果をVisualBasicなどのオートメーション対応言語から利用できるようにします。そのため、DxfReaderWindowsオートメーションサーバとして動作するように実装しています。

 

参考文献

[1] DXFハンドブック 落合重紀著 オーム社

[2] AutoCAD 2011 ヘルプ(http://docs.autodesk.com/ACD/2011/JPN/landing.html

[2] マイクロソフト MSDN ライブラリ(http://msdn.microsoft.com/ja-jp/library/default.aspx )

 

 

©佐々木芳 2011

 


 

1    DXFファイルの概要

DXFファイルはテキスト形式のファイルです。

ファイル内は、セクションと呼ばれる領域で構成されています。セクションはファイルの先頭から以下のように並んでいます。しかし、すべてのセクションがあるわけではないようです。

 

l  HEADERセクション

l  CLASSESセクション

l  TABLESセクション

l  BLOCKSセクション

l  ENTITIESセクション

l  OBJECTSセクション

l  THUMBNAILIMAGEセクション

 

DXFファイル内のテキストは2行1組で解釈します。最初の行はグループコードと呼ばれる整数を表す4文字以内で構成されます。2行目は、グループコードに応じて、文字列、浮動小数点数、整数などを表します。例えば、以下のような行の構成でなっています。

線吹き出し 2: グループコード
 


1組

 

1組

 
  0

線吹き出し 2: グループコードSECTION

1組

 
  2

線吹き出し 2: グループコードHEADER

  9

$ACADVER

 

DXFファイルでは、この2行1組で表される情報が最小要素です。

 

セクションは、以下の2行から始まり、

  0

SECTION

 

以下の2行で終わります。

  0

ENDSEC

 

ファイルの最後は以下の2行です。

  0

EOF

 

2    DXFファイルの分析モデル

DXFファイルの構造をUMLでモデル化したものを以下に示します。

 

DXFファイル.jpg

 

念のためですが、これはDXFファイル内のテキスト構造をモデル化したもです。図形情報の意味的なモデルではありません。

 

3    オブジェクトモデル

DxfReaderDXFファイルを読み込み、以下のようなオブジェクトに展開します。DxfReaderはオートメーションサーバとしてこれらのオブジェクトをIDispatchインターフェースとして提示します。

DxfReaderでは、CLASSESOBJECTSTHUMBNAILIMAGEセクションは読み飛ばすので、これらは以下のモデルには含まれていません。

 

 

DxfReader.jpg

 

ここで、DxfReaderで定義しているステレオタイプの説明をします。

 

ステレオタイプ<<creatable>>の指定されたクラスは、クライアントアプリケーションからこのクラスのインスタンスを作成して使用することを意味します。VisualBasicから操作する場合New演算子を使ってインスタンスを作成できます。

 

ステレオタイプ<<collection>>はコレクションクラスを意味します。VisualBasicの場合は、このクラスのインスタンスをFor Each In ステートメントのInの直後に指定することができます。

 

4    インストール

4.1  V1.0.1のインストール

DxfReaderは、インプロセスのCOMサーバなので、32ビットWindowsでは32ビット版DxfReaderを、64ビット版Windowsでは64ビット版DXfReaderをインストールする必要があります。

ここからZIP形式の圧縮ファイルをダウンロードしてください。適当なフォルダに解凍すると以下の2つのファイルができます。

l  SetupDxfReader.msi            32ビット版インストーラ

l  SetupDxfReader64.msi          64ビット版インストーラ

l  Readme.txt

 

インストールする前にコントロールパネルから以前のバージョンのDxfReaderをアンインストールしてください。

 

SetupDxfReader.msiを実行すると、以下のファイルがインストールされます。

 

l  DxfReader.dll

l  TestDxfReader.exe

l  Interop.DxfReader.dll

l  DxfReader解説書.pdf

 

SetupDxfReader64.msiを実行すると、以下のファイルがインストールされます。

l  DxfReader64.dll

l  TestDxfReader.exe

l  Interop.DxfReader.dll

l  DxfReader解説書.pdf

 

スタートメニュに「DxfReader」が追加されます。このメニュ下にある「DXFファイルの解析」で

TestDxfReader.exeを実行します。TestDxfReader.exeは、DxfReaderを使用してDXFファイルの解析を行うサンプルプログラムです。これは、Visual Basic 2008 Express Editionで作成しているので実行するには、Microsoft .Net Framework 2.0が必要となります。

 

DXFファイルの解析」を選択後、以下のメッセージボックスが表示された場合は、WindowsUpdateからMicrosoft .Net Framework 2.0をインストールしてください。

 

mscoree.jpg

 

補足

DxfRader.dll32ビット版DLLです。したがってTestDxfReader.exe32ビットアプリケーションとして作成しています。64ビット版Windowsにもインストールできますが、TestDxfReader.exeが実行できません。

 

4.2  V1.0.2のインストール

DxfReaderは、インプロセスのCOMサーバなので、32ビットWindowsでは32ビット版DxfReaderを、64ビット版Windowsでは64ビット版DXfReaderをインストールする必要があります。

ここから、ZIP形式の圧縮ファイルDxfReaderV102.zipをダウンロードしてください。適当なフォルダに解凍すると以下の3つのファイルができます。

l  DxfReader86V102.zip     32ビット版インストーラ形式のファイル

l  DxfReader64V102.zip     64ビット版インストーラ形式のファイル

l  Readme.txt

 

インストールする前にコントロールパネルから以前のバージョンのDxfReaderをアンインストールしてください。

 

32ビットWindows64ビットWindowsに応じて上記のzip形式のファイルを適当なフォルダーに解凍してください。解凍後DxfReader.msiを実行してください。

以下のファイルがインストールされます。

 

DxfReader.dll(またはDxfReader64.dll)

DxfReader.tlb(またはDxfReader64.tlb)

TestDxfReader.exe

Interop.DxfReader.dll

DxfReader解説書.pdf

 

スタートメニュに「C-Machine」が追加され、その下に「DxfReader」が追加されます。

その下に

TestDxfReader.exe

DxfReader解説書.pdf

が追加されます。

TestDxfReader.exeを実行します。TestDxfReader.exeは、DxfReaderを使用してDXFファイルの解析を行うサンプルプログラムです。これは、Visual Basic (Visual Studio Community 2013 Update 4)で作成しているので実行するには、Microsoft .Net Framework 3.5が必要となります。

 

5    クライアントプログラム

DxfReader.dllCOMサーバであり、TestDxfReader.exeDxfReaderのクライアントプログラムとなります。クライアントプログラムはオートメーション対応言語(VisualBasic,C#など)で作成します。ここでは、VisualBasic 2008 ExpressEditionを例に説明します。

DxfReaderの公開するオブジェクトを操作するためには、参照を追加する必要があります。Visual Basic 2008 Express EditionIDEの「プロジェクト」メニュの「参照の追加」を開くと以下のウインドウが開きます。ここでCOMタブを開き、DxfReaderを選択し、OKボタンをクリックします。これでVisual BasicのプロジェクトにDxfReaderの参照が追加されます。

 

 

DxfReaderの参照が追加されると、VisualBasic2008のオブジェクトブラウザ(「表示」メニュの「オブジェクトブラウザ」で開く)でDxfReaderが公開するオブジェクト群を確認できます。

 

 

TestDxfReader.exe(V1.0.1)のソースファイル、プロジェクトファイルはこちらからダウンロードしてください。

TestDxfReader.exe(V1.0.2)のソースファイル、プロジェクトファイルはこちらからダウンロードしてください。

 

Visual Basic 2008 Express Edition はこちらから(http://www.microsoft.com/japan/msdn/vstudio/express/)ダウンロードできます。

 

新しくVisual Basicプロジェクトを作成する場合は、最初に参照を追加します。こうすると、エディターで自動コード補完機能が利用できるので、まず参照の追加を行うことをお勧めします。この参照を追加することを事前(アーリー)バインディングと呼びます。

 

補足

Visual Basic 2008 Express Editionの規定の動作は、32ビット版Windowsでは32ビットアプリケーションをビルドし、64ビット版Windowsでは64ビットアプリケーションをビルドします。したがって、Windowsに応じて適切なDxfReaderWindowsに応じて32ビット版か64ビット版のどちらか)をインストールしておく必要があります。

 

6    修正履歴

V1.0.0  2011,05,05      最初の公開

V1.0.1  2012,01,04      64ビット版を公開

V1.0.2  2015,01,04      DXFCLASSESOBJECTSセクションに対応

                        Microsoft Visual Studio Community 2013 Update 4を使って作成

 

 

©佐々木芳 2011-2015

 

トップページへ戻る