LoginSignup
0
0

More than 1 year has passed since last update.

OpenModelicaでDXFファイルを読み込むときの注意点

Posted at

OpenModelicaには3D CADデータ(.dxf)を表示する機能があります。
(読み込み方法などの詳細はこちらを参照)

私はファイル形式やグラフィックスに詳しくありませんが、OpenModelicaでdfxファイルを読み込むときの注意点が経験的に分かってきたのでメモ代わりに記載致します。
補足として、dxfファイルはテキストエディタで開けるため、内部構造を確認することが出来ます。

dxfファイルの構造次第では読み込めない

詳しくは分かりませんがdxfには様々な構造があるようです。
FreeCAD0.14で出力した球体のdxfファイルは読み込めませんでした。
本記事の一番下にそのファイルのテキストデータを貼っておきます。
3DFACEというエンティティを使用していた場合、読み込めるようです。
詳しいフォーマットの解説は以下のサイト様が参考になりました。
https://www.hiramine.com/programming/3dmodelfileformat/dxffileformat.html

読み込んだdxfファイルが真っ黒で表示される

上記のサイト様の一番下にサンプルとして立方体形状のdxfファイル(cube.dxf)があります。
これを読み込むと形状は定義されていますがすべての面が真っ黒となってしまいます。
image.png
(OpenModelica1.17で表示)

これは面の色情報が定義されていないためで、色情報を定義することで任意の色にすることが出来ます。

  • 色情報付与前のdxfファイルの3DFACEエンティティの記述
cube.dxf
3DFACE
  8
0
 10
0
 20
0
 30
・
・
・

  • 色情報付与後のdxfファイルの3DFACEエンティティの記述
cube2.dxf
3DFACE
  8
default   ←追加
62        ←追加
3         ←追加
0
 10
0
 20
0
 30
・
・
・

「62」は色番号のグループコードで、この下に色番号を記載します。
dxfファイルの色情報はRGBに応じて番号が割り振られています。
詳細は以下のサイト様をご参照ください。
https://web2.official.jp/dxf-color

すべての3DFACEエンティティに対して上記のように色を付与することで各面に任意の色を指定することができます。
以下が各面に色を付与したアニメーション結果です。
image.png

その他のCADデータについて

OpenModelica1.14ではstl形式も読み込むことが出来ましたが、OpenModelica1.17などの近年のバージョンではstl形式では読み込めなくなっています。

サンプル - 読み込めなかった球体のdxfファイル

FreeCAD0.17からエクスポート

  0
SECTION
  2
HEADER
  9
$ACADVER
  1
AC1009
  9
$INSBASE
 10
0.0
 20
0.0
 30
0.0
  9
$EXTMIN
 10
0.0
 20
0.0
 30
0.0
  9
$EXTMAX
 10
0.0
 20
0.0
 30
0.0
  0
ENDSEC
  0
SECTION
  2
TABLES
  0
TABLE
  2
VPORT
 70
0
  0
ENDTAB
  0
TABLE
  2
LTYPE
 70
1
  0
LTYPE
  2
CONTINUOUS
 70
0
  3
Solid line
 72
65
 73
0
 40
0.0
  0
ENDTAB
  0
TABLE
  2
LAYER
 70
1
  0
LAYER
  2
0
 70
64
 62
7
  6
continuous
  0
ENDTAB
  0
TABLE
  2
STYLE
 70
1
  0
STYLE
  2
STANDARD
 70
0
 40
0
 41
1.0
 50
0.0
 71
0
 42
1
 3
ARIAL.TTF
 4

  0
ENDTAB
  0
TABLE
  2
VIEW
 70
0
  0
ENDTAB
  0
ENDSEC
  0
SECTION
  2
BLOCKS
  0
BLOCK
  8
0
  2
BODY
 70
0
 10
0.0
 20
0.0
 30
0.0
  3
BODY
  0
ARC
  8
0
 62
0
 10
-0.134419
 20
-0.0668745000002
 30
0.0
 40
10.1658212259
 50
-89.2423764243
 51
89.2423764243
  0
POLYLINE
  8
0
 62
0
 70
0
 66
1
 10
0.0
 20
0.0
 30
0.0
  0
VERTEX
  8
0
 10
7.46069872548e-14
 20
10.098058
 30
0.0
  0
VERTEX
  8
0
 10
-3.81688927076
 20
9.29961552308
 30
0.0
  0
VERTEX
  8
0
 10
-7.05237412277
 20
7.12297565149
 30
0.0
  0
VERTEX
  8
0
 10
-9.23039076573
 20
3.88841000452
 30
0.0
  0
VERTEX
  8
0
 10
-10.030456395
 20
0.0718542423694
 30
0.0
  0
VERTEX
  8
0
 10
-9.33484658239
 20
-3.76511048289
 30
0.0
  0
VERTEX
  8
0
 10
-6.83684534597
 20
-7.46589522669
 30
0.0
  0
VERTEX
  8
0
 10
-1.7763568394e-15
 20
-10.231807
 30
0.0
  0
SEQEND
  8
0
  0
ENDBLK
  0
ENDSEC
  0
SECTION
  2
ENTITIES
  0
INSERT
  2
BODY
  8
0
 62
0
 10
0.0
 20
0.0
 30
0.0
  0
ENDSEC
  0
EOF

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0