ezdxfで二つのDXFを重ね合わせる

PythonのパッケージにDXFを扱うezdxfというものがあります。
まず、このパッケージをつかって、簡単な線を描画してDXFを保存します。

import ezdxf

dwg = ezdxf.new('R2010')

msp = dwg.modelspace()  
msp.add_line((0, 0), (10, 0))  
dwg.saveas('line.dxf')

次に、この「line.dxf」を読み込んで新しく「test」というレイヤーを作成し、このレイヤーにもう一つ線を描画します。

import ezdxf

dwg = ezdxf.readfile("line.dxf")
msp = dwg.modelspace()

dwg.layers.new('test')
msp.add_line((0,-10), (10, 10), dxfattribs={'layer': 'test'})

dwg.saveas('line2.dxf')

「test」というレイヤーが作成され、それぞれのレイヤーに線が描画されています。

このやり方で、既存の図面に解析結果などを重ねるといったことが可能になります。

netDxfでDXFを操る

netDxfはDXFの.net用の読書きライブラリです。
https://github.com/haplokuon/netDxf

DXFはHEADERやCLASSES、図の本体部分のENTITIESなどの各セクションを真面目に記載しようとすると結構面倒。
そうした面倒な部分を意識することなく、C#やVB.NETでDXFを読書きできるライブラリがnetDxfです。

使い方はこんな感じになります。

using System;
using netDxf;
using netDxf.Entities;

namespace netdxftest
{
    class MainClass
    {
        public static void Main(string[] args)
        {

            string file = "sample.dxf";
            DxfDocument dxf = new DxfDocument();
            Line entity = new Line(new Vector2(5, 5), new Vector2(10, 5));
            dxf.AddEntity(entity);
            dxf.Save(file);
        }
    }
}


上記は x=2,y=5 の点から x=10,y=5 まで線を描き、sample.dxf に保存するプログラムです。

ところで、MacOSXのVS2017で上記のプログラムをコンパイルして動作させる為にはmonoフレームワークから実行する必要があります。

手元の環境では以下の方法で実行できました。

/Library/Frameworks/Mono.framework/Versions/5.18.1/bin/mono32 netdxftest.exe

そして、出来上がったDXFをWeb上で描画するサービスをAutodeskが提供していて、以下のサイトにDXFをアップロードするとWeb上で描画することができます。
https://viewer.autodesk.com

利用にはアカウント登録が必要です。