summaryrefslogtreecommitdiff
path: root/pcbnew/import_dxf
diff options
context:
space:
mode:
authorsaurabhb172020-02-26 16:00:53 +0530
committerGitHub2020-02-26 16:00:53 +0530
commit886d9cb772e81d2e5262284bc3082664f084337f (patch)
tree6acee185a4dc19113fcbf0f9a3d6941085dedaf7 /pcbnew/import_dxf
parent0db48f6533517ecebfd9f0693f89deca28408b76 (diff)
parentaa35045840b78d3f48212db45da59a2e5c69b223 (diff)
downloadKiCad-eSim-886d9cb772e81d2e5262284bc3082664f084337f.tar.gz
KiCad-eSim-886d9cb772e81d2e5262284bc3082664f084337f.tar.bz2
KiCad-eSim-886d9cb772e81d2e5262284bc3082664f084337f.zip
Merge pull request #1 from saurabhb17/develop
Added main functions
Diffstat (limited to 'pcbnew/import_dxf')
-rw-r--r--pcbnew/import_dxf/dialog_dxf_import.cpp285
-rw-r--r--pcbnew/import_dxf/dialog_dxf_import.fbp1328
-rw-r--r--pcbnew/import_dxf/dialog_dxf_import.h64
-rw-r--r--pcbnew/import_dxf/dialog_dxf_import_base.cpp154
-rw-r--r--pcbnew/import_dxf/dialog_dxf_import_base.h77
-rw-r--r--pcbnew/import_dxf/dxf2brd_items.cpp824
-rw-r--r--pcbnew/import_dxf/dxf2brd_items.h192
-rw-r--r--pcbnew/import_dxf/examples/basic_ellipses.dxf2992
-rw-r--r--pcbnew/import_dxf/examples/test_outlines.dxf7264
9 files changed, 13180 insertions, 0 deletions
diff --git a/pcbnew/import_dxf/dialog_dxf_import.cpp b/pcbnew/import_dxf/dialog_dxf_import.cpp
new file mode 100644
index 0000000..caf0c77
--- /dev/null
+++ b/pcbnew/import_dxf/dialog_dxf_import.cpp
@@ -0,0 +1,285 @@
+/**
+ * @file dialog_dxf_import.cpp
+ * @brief Dialog to import a dxf file on a given board layer.
+ */
+
+/*
+ * This program source code file is part of KiCad, a free EDA CAD application.
+ *
+ * Copyright (C) 2013 Jean-Pierre Charras, jp.charras at wanadoo.fr
+ * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, you may find one here:
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ * or you may search the http://www.gnu.org website for the version 2 license,
+ * or you may write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <dialog_dxf_import.h>
+#include <kiface_i.h>
+#include <convert_from_iu.h>
+#include <class_pcb_layer_box_selector.h>
+
+#include <class_board.h>
+#include <class_module.h>
+#include <class_edge_mod.h>
+#include <class_text_mod.h>
+#include <class_pcb_text.h>
+
+// Keys to store setup in config
+#define DXF_IMPORT_LAYER_OPTION_KEY "DxfImportBrdLayer"
+#define DXF_IMPORT_COORD_ORIGIN_KEY "DxfImportCoordOrigin"
+#define DXF_IMPORT_LAST_FILE_KEY "DxfImportLastFile"
+#define DXF_IMPORT_GRID_UNITS_KEY "DxfImportGridUnits"
+#define DXF_IMPORT_GRID_OFFSET_X_KEY "DxfImportGridOffsetX"
+#define DXF_IMPORT_GRID_OFFSET_Y_KEY "DxfImportGridOffsetY"
+
+
+// Static members of DIALOG_DXF_IMPORT, to remember
+// the user's choices during the session
+wxString DIALOG_DXF_IMPORT::m_dxfFilename;
+int DIALOG_DXF_IMPORT::m_offsetSelection = 0;
+LAYER_NUM DIALOG_DXF_IMPORT::m_layer = Dwgs_User;
+
+
+DIALOG_DXF_IMPORT::DIALOG_DXF_IMPORT( PCB_BASE_FRAME* aParent, bool aUseModuleItems )
+ : DIALOG_DXF_IMPORT_BASE( aParent )
+{
+ m_parent = aParent;
+ m_dxfImporter.UseModuleItems( aUseModuleItems );
+ m_config = Kiface().KifaceSettings();
+ m_PCBGridUnits = 0;
+ m_PCBGridOffsetX = 0.0;
+ m_PCBGridOffsetY = 0.0;
+
+ if( m_config )
+ {
+ m_layer = m_config->Read( DXF_IMPORT_LAYER_OPTION_KEY, (long)Dwgs_User );
+ m_offsetSelection = m_config->Read( DXF_IMPORT_COORD_ORIGIN_KEY, (long)0 );
+ m_dxfFilename = m_config->Read( DXF_IMPORT_LAST_FILE_KEY, wxEmptyString );
+ m_config->Read( DXF_IMPORT_GRID_UNITS_KEY, &m_PCBGridUnits, 0 );
+ m_config->Read( DXF_IMPORT_GRID_OFFSET_X_KEY, &m_PCBGridOffsetX, 0.0 );
+ m_config->Read( DXF_IMPORT_GRID_OFFSET_Y_KEY, &m_PCBGridOffsetY, 0.0 );
+ }
+
+ m_DXFPCBGridUnits->SetSelection( m_PCBGridUnits );
+ wxString tmpStr;
+ tmpStr << m_PCBGridOffsetX;
+ m_DXFPCBXCoord->SetValue( tmpStr );
+ tmpStr = "";
+ tmpStr << m_PCBGridOffsetY;
+ m_DXFPCBYCoord->SetValue( tmpStr );
+
+ m_textCtrlFileName->SetValue( m_dxfFilename );
+ m_rbOffsetOption->SetSelection( m_offsetSelection );
+
+ // Configure the layers list selector
+ m_SelLayerBox->SetLayersHotkeys( false ); // Do not display hotkeys
+ m_SelLayerBox->SetLayerSet( LSET::AllCuMask() ); // Do not use copper layers
+ m_SelLayerBox->SetBoardFrame( m_parent );
+ m_SelLayerBox->Resync();
+
+ if( m_SelLayerBox->SetLayerSelection( m_layer ) < 0 )
+ {
+ m_layer = Dwgs_User;
+ m_SelLayerBox->SetLayerSelection( m_layer );
+ }
+
+ m_sdbSizer1OK->SetDefault();
+ GetSizer()->Fit( this );
+ GetSizer()->SetSizeHints( this );
+ Centre();
+}
+
+
+DIALOG_DXF_IMPORT::~DIALOG_DXF_IMPORT()
+{
+ m_offsetSelection = m_rbOffsetOption->GetSelection();
+ m_layer = m_SelLayerBox->GetLayerSelection();
+
+ if( m_config )
+ {
+ m_config->Write( DXF_IMPORT_LAYER_OPTION_KEY, (long)m_layer );
+ m_config->Write( DXF_IMPORT_COORD_ORIGIN_KEY, m_offsetSelection );
+ m_config->Write( DXF_IMPORT_LAST_FILE_KEY, m_dxfFilename );
+
+ m_config->Write( DXF_IMPORT_GRID_UNITS_KEY, GetPCBGridUnits() );
+ m_config->Write( DXF_IMPORT_GRID_OFFSET_X_KEY, m_DXFPCBXCoord->GetValue() );
+ m_config->Write( DXF_IMPORT_GRID_OFFSET_Y_KEY, m_DXFPCBYCoord->GetValue() );
+ }
+}
+
+
+void DIALOG_DXF_IMPORT::OnBrowseDxfFiles( wxCommandEvent& event )
+{
+ wxString path;
+ wxString filename;
+
+ if( !m_dxfFilename.IsEmpty() )
+ {
+ wxFileName fn( m_dxfFilename );
+ path = fn.GetPath();
+ filename = fn.GetFullName();
+ }
+
+ wxFileDialog dlg( m_parent,
+ _( "Open File" ),
+ path, filename,
+ "DXF Files (*.dxf)|*.dxf",
+ wxFD_OPEN|wxFD_FILE_MUST_EXIST );
+
+ if( dlg.ShowModal() != wxID_OK )
+ return;
+
+ wxString fileName = dlg.GetPath();
+
+ if( fileName.IsEmpty() )
+ return;
+
+ m_dxfFilename = fileName;
+ m_textCtrlFileName->SetValue( fileName );
+}
+
+
+void DIALOG_DXF_IMPORT::OnOKClick( wxCommandEvent& event )
+{
+ m_dxfFilename = m_textCtrlFileName->GetValue();
+
+ if( m_dxfFilename.IsEmpty() )
+ return;
+
+ double offsetX = 0;
+ double offsetY = 0;
+
+ m_offsetSelection = m_rbOffsetOption->GetSelection();
+
+ switch( m_offsetSelection )
+ {
+ case 0:
+ offsetX = m_parent->GetPageSizeIU().x * MM_PER_IU / 2;
+ offsetY = m_parent->GetPageSizeIU().y * MM_PER_IU / 2;
+ break;
+
+ case 1:
+ break;
+
+ case 2:
+ offsetY = m_parent->GetPageSizeIU().y * MM_PER_IU / 2;
+ break;
+
+ case 3:
+ offsetY = m_parent->GetPageSizeIU().y * MM_PER_IU;
+ break;
+
+ case 4:
+ GetPCBGridOffsets( offsetX, offsetY );
+
+ if( GetPCBGridUnits() )
+ {
+ offsetX *= 25.4;
+ offsetY *= 25.4;
+ }
+ break;
+ }
+
+ // Set coordinates offset for import (offset is given in mm)
+ m_dxfImporter.SetOffset( offsetX, offsetY );
+ m_layer = m_SelLayerBox->GetLayerSelection();
+ m_dxfImporter.SetBrdLayer( m_layer );
+
+ // Read dxf file:
+ m_dxfImporter.ImportDxfFile( m_dxfFilename );
+
+ EndModal( wxID_OK );
+}
+
+
+bool InvokeDXFDialogBoardImport( PCB_BASE_FRAME* aCaller )
+{
+ DIALOG_DXF_IMPORT dlg( aCaller );
+ bool success = ( dlg.ShowModal() == wxID_OK );
+
+ if( success )
+ {
+ const std::list<BOARD_ITEM*>& list = dlg.GetImportedItems();
+ PICKED_ITEMS_LIST picklist;
+ BOARD* board = aCaller->GetBoard();
+
+ std::list<BOARD_ITEM*>::const_iterator it, itEnd;
+ for( it = list.begin(), itEnd = list.end(); it != itEnd; ++it )
+ {
+ BOARD_ITEM* item = *it;
+ board->Add( item );
+
+ ITEM_PICKER itemWrapper( item, UR_NEW );
+ picklist.PushItem( itemWrapper );
+ }
+
+ aCaller->SaveCopyInUndoList( picklist, UR_NEW, wxPoint( 0, 0 ) );
+ aCaller->OnModify();
+ }
+
+ return success;
+}
+
+
+bool InvokeDXFDialogModuleImport( PCB_BASE_FRAME* aCaller, MODULE* aModule )
+{
+ wxASSERT( aModule );
+
+ DIALOG_DXF_IMPORT dlg( aCaller, true );
+ bool success = ( dlg.ShowModal() == wxID_OK );
+
+ if( success )
+ {
+ const std::list<BOARD_ITEM*>& list = dlg.GetImportedItems();
+
+ aCaller->SaveCopyInUndoList( aModule, UR_MODEDIT );
+ aCaller->OnModify();
+
+ std::list<BOARD_ITEM*>::const_iterator it, itEnd;
+
+ for( it = list.begin(), itEnd = list.end(); it != itEnd; ++it )
+ {
+ aModule->Add( *it );
+ }
+ }
+
+ return success;
+}
+
+
+void DIALOG_DXF_IMPORT::OriginOptionOnUpdateUI( wxUpdateUIEvent& event )
+{
+ bool enable = m_rbOffsetOption->GetSelection() == 4;
+
+ m_DXFPCBGridUnits->Enable( enable );
+ m_DXFPCBXCoord->Enable( enable );
+ m_DXFPCBYCoord->Enable( enable );
+}
+
+
+int DIALOG_DXF_IMPORT::GetPCBGridUnits( void )
+{
+ return m_DXFPCBGridUnits->GetSelection();
+}
+
+
+void DIALOG_DXF_IMPORT::GetPCBGridOffsets( double &aXOffset, double &aYOffset )
+{
+ aXOffset = DoubleValueFromString( UNSCALED_UNITS, m_DXFPCBXCoord->GetValue() );
+ aYOffset = DoubleValueFromString( UNSCALED_UNITS, m_DXFPCBYCoord->GetValue() );
+ return;
+}
diff --git a/pcbnew/import_dxf/dialog_dxf_import.fbp b/pcbnew/import_dxf/dialog_dxf_import.fbp
new file mode 100644
index 0000000..f2f699d
--- /dev/null
+++ b/pcbnew/import_dxf/dialog_dxf_import.fbp
@@ -0,0 +1,1328 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<wxFormBuilder_Project>
+ <FileVersion major="1" minor="13" />
+ <object class="Project" expanded="1">
+ <property name="class_decoration"></property>
+ <property name="code_generation">C++</property>
+ <property name="disconnect_events">1</property>
+ <property name="disconnect_mode">source_name</property>
+ <property name="disconnect_php_events">0</property>
+ <property name="disconnect_python_events">0</property>
+ <property name="embedded_files_path">res</property>
+ <property name="encoding">UTF-8</property>
+ <property name="event_generation">connect</property>
+ <property name="file">dialog_dxf_import_base</property>
+ <property name="first_id">1000</property>
+ <property name="help_provider">none</property>
+ <property name="internationalize">1</property>
+ <property name="name">dialog_dxf_import</property>
+ <property name="namespace"></property>
+ <property name="path">.</property>
+ <property name="precompiled_header"></property>
+ <property name="relative_path">1</property>
+ <property name="skip_lua_events">1</property>
+ <property name="skip_php_events">1</property>
+ <property name="skip_python_events">1</property>
+ <property name="ui_table">UI</property>
+ <property name="use_enum">0</property>
+ <property name="use_microsoft_bom">0</property>
+ <object class="Dialog" expanded="1">
+ <property name="aui_managed">0</property>
+ <property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
+ <property name="bg"></property>
+ <property name="center">wxBOTH</property>
+ <property name="context_help"></property>
+ <property name="context_menu">1</property>
+ <property name="enabled">1</property>
+ <property name="event_handler">impl_virtual</property>
+ <property name="extra_style"></property>
+ <property name="fg"></property>
+ <property name="font"></property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ANY</property>
+ <property name="maximum_size"></property>
+ <property name="minimum_size"></property>
+ <property name="name">DIALOG_DXF_IMPORT_BASE</property>
+ <property name="pos"></property>
+ <property name="size">-1,-1</property>
+ <property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
+ <property name="subclass">DIALOG_SHIM; dialog_shim.h</property>
+ <property name="title">Import DXF File</property>
+ <property name="tooltip"></property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style"></property>
+ <event name="OnActivate"></event>
+ <event name="OnActivateApp"></event>
+ <event name="OnAuiFindManager"></event>
+ <event name="OnAuiPaneButton"></event>
+ <event name="OnAuiPaneClose"></event>
+ <event name="OnAuiPaneMaximize"></event>
+ <event name="OnAuiPaneRestore"></event>
+ <event name="OnAuiRender"></event>
+ <event name="OnChar"></event>
+ <event name="OnClose"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnHibernate"></event>
+ <event name="OnIconize"></event>
+ <event name="OnIdle"></event>
+ <event name="OnInitDialog"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnUpdateUI"></event>
+ <object class="wxBoxSizer" expanded="1">
+ <property name="minimum_size"></property>
+ <property name="name">bSizerMain</property>
+ <property name="orient">wxVERTICAL</property>
+ <property name="permission">none</property>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxALL|wxEXPAND</property>
+ <property name="proportion">0</property>
+ <object class="wxBoxSizer" expanded="1">
+ <property name="minimum_size"></property>
+ <property name="name">bSizerFile</property>
+ <property name="orient">wxHORIZONTAL</property>
+ <property name="permission">none</property>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
+ <property name="proportion">0</property>
+ <object class="wxStaticText" expanded="1">
+ <property name="BottomDockable">1</property>
+ <property name="LeftDockable">1</property>
+ <property name="RightDockable">1</property>
+ <property name="TopDockable">1</property>
+ <property name="aui_layer"></property>
+ <property name="aui_name"></property>
+ <property name="aui_position"></property>
+ <property name="aui_row"></property>
+ <property name="best_size"></property>
+ <property name="bg"></property>
+ <property name="caption"></property>
+ <property name="caption_visible">1</property>
+ <property name="center_pane">0</property>
+ <property name="close_button">1</property>
+ <property name="context_help"></property>
+ <property name="context_menu">1</property>
+ <property name="default_pane">0</property>
+ <property name="dock">Dock</property>
+ <property name="dock_fixed">0</property>
+ <property name="docking">Left</property>
+ <property name="enabled">1</property>
+ <property name="fg"></property>
+ <property name="floatable">1</property>
+ <property name="font"></property>
+ <property name="gripper">0</property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ANY</property>
+ <property name="label">File:</property>
+ <property name="max_size"></property>
+ <property name="maximize_button">0</property>
+ <property name="maximum_size"></property>
+ <property name="min_size"></property>
+ <property name="minimize_button">0</property>
+ <property name="minimum_size"></property>
+ <property name="moveable">1</property>
+ <property name="name">m_staticText37</property>
+ <property name="pane_border">1</property>
+ <property name="pane_position"></property>
+ <property name="pane_size"></property>
+ <property name="permission">protected</property>
+ <property name="pin_button">1</property>
+ <property name="pos"></property>
+ <property name="resize">Resizable</property>
+ <property name="show">1</property>
+ <property name="size"></property>
+ <property name="style"></property>
+ <property name="subclass"></property>
+ <property name="toolbar_pane">0</property>
+ <property name="tooltip"></property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style"></property>
+ <property name="wrap">-1</property>
+ <event name="OnChar"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnUpdateUI"></event>
+ </object>
+ </object>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxTOP</property>
+ <property name="proportion">1</property>
+ <object class="wxTextCtrl" expanded="1">
+ <property name="BottomDockable">1</property>
+ <property name="LeftDockable">1</property>
+ <property name="RightDockable">1</property>
+ <property name="TopDockable">1</property>
+ <property name="aui_layer"></property>
+ <property name="aui_name"></property>
+ <property name="aui_position"></property>
+ <property name="aui_row"></property>
+ <property name="best_size"></property>
+ <property name="bg"></property>
+ <property name="caption"></property>
+ <property name="caption_visible">1</property>
+ <property name="center_pane">0</property>
+ <property name="close_button">1</property>
+ <property name="context_help"></property>
+ <property name="context_menu">1</property>
+ <property name="default_pane">0</property>
+ <property name="dock">Dock</property>
+ <property name="dock_fixed">0</property>
+ <property name="docking">Left</property>
+ <property name="enabled">1</property>
+ <property name="fg"></property>
+ <property name="floatable">1</property>
+ <property name="font"></property>
+ <property name="gripper">0</property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ANY</property>
+ <property name="max_size"></property>
+ <property name="maximize_button">0</property>
+ <property name="maximum_size"></property>
+ <property name="maxlength"></property>
+ <property name="min_size"></property>
+ <property name="minimize_button">0</property>
+ <property name="minimum_size">300,-1</property>
+ <property name="moveable">1</property>
+ <property name="name">m_textCtrlFileName</property>
+ <property name="pane_border">1</property>
+ <property name="pane_position"></property>
+ <property name="pane_size"></property>
+ <property name="permission">protected</property>
+ <property name="pin_button">1</property>
+ <property name="pos"></property>
+ <property name="resize">Resizable</property>
+ <property name="show">1</property>
+ <property name="size"></property>
+ <property name="style"></property>
+ <property name="subclass"></property>
+ <property name="toolbar_pane">0</property>
+ <property name="tooltip"></property>
+ <property name="validator_data_type"></property>
+ <property name="validator_style">wxFILTER_NONE</property>
+ <property name="validator_type">wxDefaultValidator</property>
+ <property name="validator_variable"></property>
+ <property name="value"></property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style"></property>
+ <event name="OnChar"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnText"></event>
+ <event name="OnTextEnter"></event>
+ <event name="OnTextMaxLen"></event>
+ <event name="OnTextURL"></event>
+ <event name="OnUpdateUI"></event>
+ </object>
+ </object>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxTOP</property>
+ <property name="proportion">0</property>
+ <object class="wxButton" expanded="1">
+ <property name="BottomDockable">1</property>
+ <property name="LeftDockable">1</property>
+ <property name="RightDockable">1</property>
+ <property name="TopDockable">1</property>
+ <property name="aui_layer"></property>
+ <property name="aui_name"></property>
+ <property name="aui_position"></property>
+ <property name="aui_row"></property>
+ <property name="best_size"></property>
+ <property name="bg"></property>
+ <property name="caption"></property>
+ <property name="caption_visible">1</property>
+ <property name="center_pane">0</property>
+ <property name="close_button">1</property>
+ <property name="context_help"></property>
+ <property name="context_menu">1</property>
+ <property name="default">0</property>
+ <property name="default_pane">0</property>
+ <property name="dock">Dock</property>
+ <property name="dock_fixed">0</property>
+ <property name="docking">Left</property>
+ <property name="enabled">1</property>
+ <property name="fg"></property>
+ <property name="floatable">1</property>
+ <property name="font"></property>
+ <property name="gripper">0</property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ANY</property>
+ <property name="label">Browse</property>
+ <property name="max_size"></property>
+ <property name="maximize_button">0</property>
+ <property name="maximum_size"></property>
+ <property name="min_size"></property>
+ <property name="minimize_button">0</property>
+ <property name="minimum_size"></property>
+ <property name="moveable">1</property>
+ <property name="name">m_buttonBrowse</property>
+ <property name="pane_border">1</property>
+ <property name="pane_position"></property>
+ <property name="pane_size"></property>
+ <property name="permission">protected</property>
+ <property name="pin_button">1</property>
+ <property name="pos"></property>
+ <property name="resize">Resizable</property>
+ <property name="show">1</property>
+ <property name="size"></property>
+ <property name="style"></property>
+ <property name="subclass"></property>
+ <property name="toolbar_pane">0</property>
+ <property name="tooltip"></property>
+ <property name="validator_data_type"></property>
+ <property name="validator_style">wxFILTER_NONE</property>
+ <property name="validator_type">wxDefaultValidator</property>
+ <property name="validator_variable"></property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style"></property>
+ <event name="OnButtonClick">OnBrowseDxfFiles</event>
+ <event name="OnChar"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnUpdateUI"></event>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxALL|wxEXPAND</property>
+ <property name="proportion">1</property>
+ <object class="wxBoxSizer" expanded="1">
+ <property name="minimum_size"></property>
+ <property name="name">bSizer3</property>
+ <property name="orient">wxHORIZONTAL</property>
+ <property name="permission">none</property>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxALL|wxEXPAND</property>
+ <property name="proportion">0</property>
+ <object class="wxRadioBox" expanded="1">
+ <property name="BottomDockable">1</property>
+ <property name="LeftDockable">1</property>
+ <property name="RightDockable">1</property>
+ <property name="TopDockable">1</property>
+ <property name="aui_layer"></property>
+ <property name="aui_name"></property>
+ <property name="aui_position"></property>
+ <property name="aui_row"></property>
+ <property name="best_size"></property>
+ <property name="bg"></property>
+ <property name="caption"></property>
+ <property name="caption_visible">1</property>
+ <property name="center_pane">0</property>
+ <property name="choices">&quot;Center of page&quot; &quot;Upper left corner of page&quot; &quot;Center left side of page&quot; &quot;Lower left corner of page&quot; &quot;User defined position&quot;</property>
+ <property name="close_button">1</property>
+ <property name="context_help"></property>
+ <property name="context_menu">1</property>
+ <property name="default_pane">0</property>
+ <property name="dock">Dock</property>
+ <property name="dock_fixed">0</property>
+ <property name="docking">Left</property>
+ <property name="enabled">1</property>
+ <property name="fg"></property>
+ <property name="floatable">1</property>
+ <property name="font"></property>
+ <property name="gripper">0</property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ORIGIN_SELECT</property>
+ <property name="label">Place DXF origin (0,0) point:</property>
+ <property name="majorDimension">1</property>
+ <property name="max_size"></property>
+ <property name="maximize_button">0</property>
+ <property name="maximum_size"></property>
+ <property name="min_size"></property>
+ <property name="minimize_button">0</property>
+ <property name="minimum_size"></property>
+ <property name="moveable">1</property>
+ <property name="name">m_rbOffsetOption</property>
+ <property name="pane_border">1</property>
+ <property name="pane_position"></property>
+ <property name="pane_size"></property>
+ <property name="permission">protected</property>
+ <property name="pin_button">1</property>
+ <property name="pos"></property>
+ <property name="resize">Resizable</property>
+ <property name="selection">0</property>
+ <property name="show">1</property>
+ <property name="size"></property>
+ <property name="style">wxRA_SPECIFY_COLS</property>
+ <property name="subclass"></property>
+ <property name="toolbar_pane">0</property>
+ <property name="tooltip"></property>
+ <property name="validator_data_type"></property>
+ <property name="validator_style">wxFILTER_NONE</property>
+ <property name="validator_type">wxDefaultValidator</property>
+ <property name="validator_variable"></property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style"></property>
+ <event name="OnChar"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRadioBox"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnUpdateUI">OriginOptionOnUpdateUI</event>
+ </object>
+ </object>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag"></property>
+ <property name="proportion">1</property>
+ <object class="wxBoxSizer" expanded="1">
+ <property name="minimum_size"></property>
+ <property name="name">bSizer4</property>
+ <property name="orient">wxVERTICAL</property>
+ <property name="permission">none</property>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxEXPAND</property>
+ <property name="proportion">1</property>
+ <object class="wxBoxSizer" expanded="1">
+ <property name="minimum_size"></property>
+ <property name="name">bSizer6</property>
+ <property name="orient">wxHORIZONTAL</property>
+ <property name="permission">none</property>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
+ <property name="proportion">0</property>
+ <object class="wxStaticText" expanded="1">
+ <property name="BottomDockable">1</property>
+ <property name="LeftDockable">1</property>
+ <property name="RightDockable">1</property>
+ <property name="TopDockable">1</property>
+ <property name="aui_layer"></property>
+ <property name="aui_name"></property>
+ <property name="aui_position"></property>
+ <property name="aui_row"></property>
+ <property name="best_size"></property>
+ <property name="bg"></property>
+ <property name="caption"></property>
+ <property name="caption_visible">1</property>
+ <property name="center_pane">0</property>
+ <property name="close_button">1</property>
+ <property name="context_help"></property>
+ <property name="context_menu">1</property>
+ <property name="default_pane">0</property>
+ <property name="dock">Dock</property>
+ <property name="dock_fixed">0</property>
+ <property name="docking">Left</property>
+ <property name="enabled">1</property>
+ <property name="fg"></property>
+ <property name="floatable">1</property>
+ <property name="font"></property>
+ <property name="gripper">0</property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ANY</property>
+ <property name="label">X Position:</property>
+ <property name="max_size"></property>
+ <property name="maximize_button">0</property>
+ <property name="maximum_size"></property>
+ <property name="min_size"></property>
+ <property name="minimize_button">0</property>
+ <property name="minimum_size"></property>
+ <property name="moveable">1</property>
+ <property name="name">m_staticText4</property>
+ <property name="pane_border">1</property>
+ <property name="pane_position"></property>
+ <property name="pane_size"></property>
+ <property name="permission">protected</property>
+ <property name="pin_button">1</property>
+ <property name="pos"></property>
+ <property name="resize">Resizable</property>
+ <property name="show">1</property>
+ <property name="size"></property>
+ <property name="style"></property>
+ <property name="subclass"></property>
+ <property name="toolbar_pane">0</property>
+ <property name="tooltip"></property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style"></property>
+ <property name="wrap">-1</property>
+ <event name="OnChar"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnUpdateUI"></event>
+ </object>
+ </object>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
+ <property name="proportion">0</property>
+ <object class="wxTextCtrl" expanded="1">
+ <property name="BottomDockable">1</property>
+ <property name="LeftDockable">1</property>
+ <property name="RightDockable">1</property>
+ <property name="TopDockable">1</property>
+ <property name="aui_layer"></property>
+ <property name="aui_name"></property>
+ <property name="aui_position"></property>
+ <property name="aui_row"></property>
+ <property name="best_size"></property>
+ <property name="bg"></property>
+ <property name="caption"></property>
+ <property name="caption_visible">1</property>
+ <property name="center_pane">0</property>
+ <property name="close_button">1</property>
+ <property name="context_help"></property>
+ <property name="context_menu">1</property>
+ <property name="default_pane">0</property>
+ <property name="dock">Dock</property>
+ <property name="dock_fixed">0</property>
+ <property name="docking">Left</property>
+ <property name="enabled">1</property>
+ <property name="fg"></property>
+ <property name="floatable">1</property>
+ <property name="font"></property>
+ <property name="gripper">0</property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ANY</property>
+ <property name="max_size"></property>
+ <property name="maximize_button">0</property>
+ <property name="maximum_size"></property>
+ <property name="maxlength">10</property>
+ <property name="min_size"></property>
+ <property name="minimize_button">0</property>
+ <property name="minimum_size"></property>
+ <property name="moveable">1</property>
+ <property name="name">m_DXFPCBXCoord</property>
+ <property name="pane_border">1</property>
+ <property name="pane_position"></property>
+ <property name="pane_size"></property>
+ <property name="permission">protected</property>
+ <property name="pin_button">1</property>
+ <property name="pos"></property>
+ <property name="resize">Resizable</property>
+ <property name="show">1</property>
+ <property name="size"></property>
+ <property name="style"></property>
+ <property name="subclass"></property>
+ <property name="toolbar_pane">0</property>
+ <property name="tooltip">DXF origin on PCB Grid, X Coordinate</property>
+ <property name="validator_data_type"></property>
+ <property name="validator_style">wxFILTER_NUMERIC</property>
+ <property name="validator_type">wxTextValidator</property>
+ <property name="validator_variable"></property>
+ <property name="value">0.0</property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style"></property>
+ <event name="OnChar"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnText"></event>
+ <event name="OnTextEnter"></event>
+ <event name="OnTextMaxLen"></event>
+ <event name="OnTextURL"></event>
+ <event name="OnUpdateUI"></event>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxEXPAND</property>
+ <property name="proportion">1</property>
+ <object class="wxBoxSizer" expanded="1">
+ <property name="minimum_size"></property>
+ <property name="name">bSizer7</property>
+ <property name="orient">wxHORIZONTAL</property>
+ <property name="permission">none</property>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
+ <property name="proportion">0</property>
+ <object class="wxStaticText" expanded="1">
+ <property name="BottomDockable">1</property>
+ <property name="LeftDockable">1</property>
+ <property name="RightDockable">1</property>
+ <property name="TopDockable">1</property>
+ <property name="aui_layer"></property>
+ <property name="aui_name"></property>
+ <property name="aui_position"></property>
+ <property name="aui_row"></property>
+ <property name="best_size"></property>
+ <property name="bg"></property>
+ <property name="caption"></property>
+ <property name="caption_visible">1</property>
+ <property name="center_pane">0</property>
+ <property name="close_button">1</property>
+ <property name="context_help"></property>
+ <property name="context_menu">1</property>
+ <property name="default_pane">0</property>
+ <property name="dock">Dock</property>
+ <property name="dock_fixed">0</property>
+ <property name="docking">Left</property>
+ <property name="enabled">1</property>
+ <property name="fg"></property>
+ <property name="floatable">1</property>
+ <property name="font"></property>
+ <property name="gripper">0</property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ANY</property>
+ <property name="label">Y Position:</property>
+ <property name="max_size"></property>
+ <property name="maximize_button">0</property>
+ <property name="maximum_size"></property>
+ <property name="min_size"></property>
+ <property name="minimize_button">0</property>
+ <property name="minimum_size"></property>
+ <property name="moveable">1</property>
+ <property name="name">m_staticText5</property>
+ <property name="pane_border">1</property>
+ <property name="pane_position"></property>
+ <property name="pane_size"></property>
+ <property name="permission">protected</property>
+ <property name="pin_button">1</property>
+ <property name="pos"></property>
+ <property name="resize">Resizable</property>
+ <property name="show">1</property>
+ <property name="size"></property>
+ <property name="style"></property>
+ <property name="subclass"></property>
+ <property name="toolbar_pane">0</property>
+ <property name="tooltip"></property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style"></property>
+ <property name="wrap">-1</property>
+ <event name="OnChar"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnUpdateUI"></event>
+ </object>
+ </object>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
+ <property name="proportion">0</property>
+ <object class="wxTextCtrl" expanded="1">
+ <property name="BottomDockable">1</property>
+ <property name="LeftDockable">1</property>
+ <property name="RightDockable">1</property>
+ <property name="TopDockable">1</property>
+ <property name="aui_layer"></property>
+ <property name="aui_name"></property>
+ <property name="aui_position"></property>
+ <property name="aui_row"></property>
+ <property name="best_size"></property>
+ <property name="bg"></property>
+ <property name="caption"></property>
+ <property name="caption_visible">1</property>
+ <property name="center_pane">0</property>
+ <property name="close_button">1</property>
+ <property name="context_help"></property>
+ <property name="context_menu">1</property>
+ <property name="default_pane">0</property>
+ <property name="dock">Dock</property>
+ <property name="dock_fixed">0</property>
+ <property name="docking">Left</property>
+ <property name="enabled">1</property>
+ <property name="fg"></property>
+ <property name="floatable">1</property>
+ <property name="font"></property>
+ <property name="gripper">0</property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ANY</property>
+ <property name="max_size"></property>
+ <property name="maximize_button">0</property>
+ <property name="maximum_size"></property>
+ <property name="maxlength">10</property>
+ <property name="min_size"></property>
+ <property name="minimize_button">0</property>
+ <property name="minimum_size"></property>
+ <property name="moveable">1</property>
+ <property name="name">m_DXFPCBYCoord</property>
+ <property name="pane_border">1</property>
+ <property name="pane_position"></property>
+ <property name="pane_size"></property>
+ <property name="permission">protected</property>
+ <property name="pin_button">1</property>
+ <property name="pos"></property>
+ <property name="resize">Resizable</property>
+ <property name="show">1</property>
+ <property name="size"></property>
+ <property name="style"></property>
+ <property name="subclass"></property>
+ <property name="toolbar_pane">0</property>
+ <property name="tooltip">DXF origin on PCB Grid, Y Coordinate</property>
+ <property name="validator_data_type"></property>
+ <property name="validator_style">wxFILTER_NUMERIC</property>
+ <property name="validator_type">wxTextValidator</property>
+ <property name="validator_variable"></property>
+ <property name="value">0.0</property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style"></property>
+ <event name="OnChar"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnText"></event>
+ <event name="OnTextEnter"></event>
+ <event name="OnTextMaxLen"></event>
+ <event name="OnTextURL"></event>
+ <event name="OnUpdateUI"></event>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxEXPAND</property>
+ <property name="proportion">1</property>
+ <object class="wxBoxSizer" expanded="1">
+ <property name="minimum_size"></property>
+ <property name="name">bSizer5</property>
+ <property name="orient">wxHORIZONTAL</property>
+ <property name="permission">none</property>
+ <object class="sizeritem" expanded="0">
+ <property name="border">5</property>
+ <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
+ <property name="proportion">0</property>
+ <object class="wxStaticText" expanded="0">
+ <property name="BottomDockable">1</property>
+ <property name="LeftDockable">1</property>
+ <property name="RightDockable">1</property>
+ <property name="TopDockable">1</property>
+ <property name="aui_layer"></property>
+ <property name="aui_name"></property>
+ <property name="aui_position"></property>
+ <property name="aui_row"></property>
+ <property name="best_size"></property>
+ <property name="bg"></property>
+ <property name="caption"></property>
+ <property name="caption_visible">1</property>
+ <property name="center_pane">0</property>
+ <property name="close_button">1</property>
+ <property name="context_help"></property>
+ <property name="context_menu">1</property>
+ <property name="default_pane">0</property>
+ <property name="dock">Dock</property>
+ <property name="dock_fixed">0</property>
+ <property name="docking">Left</property>
+ <property name="enabled">1</property>
+ <property name="fg"></property>
+ <property name="floatable">1</property>
+ <property name="font"></property>
+ <property name="gripper">0</property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ANY</property>
+ <property name="label">Units:</property>
+ <property name="max_size"></property>
+ <property name="maximize_button">0</property>
+ <property name="maximum_size"></property>
+ <property name="min_size"></property>
+ <property name="minimize_button">0</property>
+ <property name="minimum_size"></property>
+ <property name="moveable">1</property>
+ <property name="name">m_staticText3</property>
+ <property name="pane_border">1</property>
+ <property name="pane_position"></property>
+ <property name="pane_size"></property>
+ <property name="permission">protected</property>
+ <property name="pin_button">1</property>
+ <property name="pos"></property>
+ <property name="resize">Resizable</property>
+ <property name="show">1</property>
+ <property name="size"></property>
+ <property name="style"></property>
+ <property name="subclass"></property>
+ <property name="toolbar_pane">0</property>
+ <property name="tooltip"></property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style"></property>
+ <property name="wrap">-1</property>
+ <event name="OnChar"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnUpdateUI"></event>
+ </object>
+ </object>
+ <object class="sizeritem" expanded="0">
+ <property name="border">5</property>
+ <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
+ <property name="proportion">0</property>
+ <object class="wxChoice" expanded="0">
+ <property name="BottomDockable">1</property>
+ <property name="LeftDockable">1</property>
+ <property name="RightDockable">1</property>
+ <property name="TopDockable">1</property>
+ <property name="aui_layer"></property>
+ <property name="aui_name"></property>
+ <property name="aui_position"></property>
+ <property name="aui_row"></property>
+ <property name="best_size"></property>
+ <property name="bg"></property>
+ <property name="caption"></property>
+ <property name="caption_visible">1</property>
+ <property name="center_pane">0</property>
+ <property name="choices">&quot;mm&quot; &quot;inch&quot;</property>
+ <property name="close_button">1</property>
+ <property name="context_help"></property>
+ <property name="context_menu">1</property>
+ <property name="default_pane">0</property>
+ <property name="dock">Dock</property>
+ <property name="dock_fixed">0</property>
+ <property name="docking">Left</property>
+ <property name="enabled">1</property>
+ <property name="fg"></property>
+ <property name="floatable">1</property>
+ <property name="font"></property>
+ <property name="gripper">0</property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ANY</property>
+ <property name="max_size"></property>
+ <property name="maximize_button">0</property>
+ <property name="maximum_size"></property>
+ <property name="min_size"></property>
+ <property name="minimize_button">0</property>
+ <property name="minimum_size"></property>
+ <property name="moveable">1</property>
+ <property name="name">m_DXFPCBGridUnits</property>
+ <property name="pane_border">1</property>
+ <property name="pane_position"></property>
+ <property name="pane_size"></property>
+ <property name="permission">protected</property>
+ <property name="pin_button">1</property>
+ <property name="pos"></property>
+ <property name="resize">Resizable</property>
+ <property name="selection">0</property>
+ <property name="show">1</property>
+ <property name="size"></property>
+ <property name="style"></property>
+ <property name="subclass"></property>
+ <property name="toolbar_pane">0</property>
+ <property name="tooltip">Select PCB grid units</property>
+ <property name="validator_data_type"></property>
+ <property name="validator_style">wxFILTER_NONE</property>
+ <property name="validator_type">wxDefaultValidator</property>
+ <property name="validator_variable"></property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style"></property>
+ <event name="OnChar"></event>
+ <event name="OnChoice"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnUpdateUI"></event>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxALL|wxEXPAND</property>
+ <property name="proportion">0</property>
+ <object class="wxBoxSizer" expanded="1">
+ <property name="minimum_size"></property>
+ <property name="name">bSizer8</property>
+ <property name="orient">wxHORIZONTAL</property>
+ <property name="permission">none</property>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP</property>
+ <property name="proportion">0</property>
+ <object class="wxStaticText" expanded="1">
+ <property name="BottomDockable">1</property>
+ <property name="LeftDockable">1</property>
+ <property name="RightDockable">1</property>
+ <property name="TopDockable">1</property>
+ <property name="aui_layer"></property>
+ <property name="aui_name"></property>
+ <property name="aui_position"></property>
+ <property name="aui_row"></property>
+ <property name="best_size"></property>
+ <property name="bg"></property>
+ <property name="caption"></property>
+ <property name="caption_visible">1</property>
+ <property name="center_pane">0</property>
+ <property name="close_button">1</property>
+ <property name="context_help"></property>
+ <property name="context_menu">1</property>
+ <property name="default_pane">0</property>
+ <property name="dock">Dock</property>
+ <property name="dock_fixed">0</property>
+ <property name="docking">Left</property>
+ <property name="enabled">1</property>
+ <property name="fg"></property>
+ <property name="floatable">1</property>
+ <property name="font"></property>
+ <property name="gripper">0</property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ANY</property>
+ <property name="label">Layer:</property>
+ <property name="max_size"></property>
+ <property name="maximize_button">0</property>
+ <property name="maximum_size"></property>
+ <property name="min_size"></property>
+ <property name="minimize_button">0</property>
+ <property name="minimum_size"></property>
+ <property name="moveable">1</property>
+ <property name="name">m_staticTextBrdlayer</property>
+ <property name="pane_border">1</property>
+ <property name="pane_position"></property>
+ <property name="pane_size"></property>
+ <property name="permission">protected</property>
+ <property name="pin_button">1</property>
+ <property name="pos"></property>
+ <property name="resize">Resizable</property>
+ <property name="show">1</property>
+ <property name="size"></property>
+ <property name="style"></property>
+ <property name="subclass"></property>
+ <property name="toolbar_pane">0</property>
+ <property name="tooltip"></property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style"></property>
+ <property name="wrap">-1</property>
+ <event name="OnChar"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnUpdateUI"></event>
+ </object>
+ </object>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND</property>
+ <property name="proportion">1</property>
+ <object class="wxBitmapComboBox" expanded="1">
+ <property name="BottomDockable">1</property>
+ <property name="LeftDockable">1</property>
+ <property name="RightDockable">1</property>
+ <property name="TopDockable">1</property>
+ <property name="aui_layer"></property>
+ <property name="aui_name"></property>
+ <property name="aui_position"></property>
+ <property name="aui_row"></property>
+ <property name="best_size"></property>
+ <property name="bg"></property>
+ <property name="caption"></property>
+ <property name="caption_visible">1</property>
+ <property name="center_pane">0</property>
+ <property name="choices"></property>
+ <property name="close_button">1</property>
+ <property name="context_help"></property>
+ <property name="context_menu">1</property>
+ <property name="default_pane">0</property>
+ <property name="dock">Dock</property>
+ <property name="dock_fixed">0</property>
+ <property name="docking">Left</property>
+ <property name="enabled">1</property>
+ <property name="fg"></property>
+ <property name="floatable">1</property>
+ <property name="font"></property>
+ <property name="gripper">0</property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ANY</property>
+ <property name="max_size"></property>
+ <property name="maximize_button">0</property>
+ <property name="maximum_size"></property>
+ <property name="min_size"></property>
+ <property name="minimize_button">0</property>
+ <property name="minimum_size"></property>
+ <property name="moveable">1</property>
+ <property name="name">m_SelLayerBox</property>
+ <property name="pane_border">1</property>
+ <property name="pane_position"></property>
+ <property name="pane_size"></property>
+ <property name="permission">protected</property>
+ <property name="pin_button">1</property>
+ <property name="pos"></property>
+ <property name="resize">Resizable</property>
+ <property name="selection">-1</property>
+ <property name="show">1</property>
+ <property name="size"></property>
+ <property name="style"></property>
+ <property name="subclass">PCB_LAYER_BOX_SELECTOR; class_pcb_layer_box_selector.h</property>
+ <property name="toolbar_pane">0</property>
+ <property name="tooltip"></property>
+ <property name="validator_data_type"></property>
+ <property name="validator_style">wxFILTER_NONE</property>
+ <property name="validator_type">wxDefaultValidator</property>
+ <property name="validator_variable"></property>
+ <property name="value"></property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style"></property>
+ <event name="OnChar"></event>
+ <event name="OnCombobox"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnText"></event>
+ <event name="OnTextEnter"></event>
+ <event name="OnUpdateUI"></event>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxALL|wxEXPAND</property>
+ <property name="proportion">0</property>
+ <object class="wxStaticLine" expanded="1">
+ <property name="BottomDockable">1</property>
+ <property name="LeftDockable">1</property>
+ <property name="RightDockable">1</property>
+ <property name="TopDockable">1</property>
+ <property name="aui_layer"></property>
+ <property name="aui_name"></property>
+ <property name="aui_position"></property>
+ <property name="aui_row"></property>
+ <property name="best_size"></property>
+ <property name="bg"></property>
+ <property name="caption"></property>
+ <property name="caption_visible">1</property>
+ <property name="center_pane">0</property>
+ <property name="close_button">1</property>
+ <property name="context_help"></property>
+ <property name="context_menu">1</property>
+ <property name="default_pane">0</property>
+ <property name="dock">Dock</property>
+ <property name="dock_fixed">0</property>
+ <property name="docking">Left</property>
+ <property name="enabled">1</property>
+ <property name="fg"></property>
+ <property name="floatable">1</property>
+ <property name="font"></property>
+ <property name="gripper">0</property>
+ <property name="hidden">0</property>
+ <property name="id">wxID_ANY</property>
+ <property name="max_size"></property>
+ <property name="maximize_button">0</property>
+ <property name="maximum_size"></property>
+ <property name="min_size"></property>
+ <property name="minimize_button">0</property>
+ <property name="minimum_size"></property>
+ <property name="moveable">1</property>
+ <property name="name">m_staticline8</property>
+ <property name="pane_border">1</property>
+ <property name="pane_position"></property>
+ <property name="pane_size"></property>
+ <property name="permission">protected</property>
+ <property name="pin_button">1</property>
+ <property name="pos"></property>
+ <property name="resize">Resizable</property>
+ <property name="show">1</property>
+ <property name="size"></property>
+ <property name="style">wxLI_HORIZONTAL</property>
+ <property name="subclass"></property>
+ <property name="toolbar_pane">0</property>
+ <property name="tooltip"></property>
+ <property name="window_extra_style"></property>
+ <property name="window_name"></property>
+ <property name="window_style"></property>
+ <event name="OnChar"></event>
+ <event name="OnEnterWindow"></event>
+ <event name="OnEraseBackground"></event>
+ <event name="OnKeyDown"></event>
+ <event name="OnKeyUp"></event>
+ <event name="OnKillFocus"></event>
+ <event name="OnLeaveWindow"></event>
+ <event name="OnLeftDClick"></event>
+ <event name="OnLeftDown"></event>
+ <event name="OnLeftUp"></event>
+ <event name="OnMiddleDClick"></event>
+ <event name="OnMiddleDown"></event>
+ <event name="OnMiddleUp"></event>
+ <event name="OnMotion"></event>
+ <event name="OnMouseEvents"></event>
+ <event name="OnMouseWheel"></event>
+ <event name="OnPaint"></event>
+ <event name="OnRightDClick"></event>
+ <event name="OnRightDown"></event>
+ <event name="OnRightUp"></event>
+ <event name="OnSetFocus"></event>
+ <event name="OnSize"></event>
+ <event name="OnUpdateUI"></event>
+ </object>
+ </object>
+ <object class="sizeritem" expanded="1">
+ <property name="border">5</property>
+ <property name="flag">wxALIGN_RIGHT|wxBOTTOM|wxLEFT|wxRIGHT</property>
+ <property name="proportion">0</property>
+ <object class="wxStdDialogButtonSizer" expanded="1">
+ <property name="Apply">0</property>
+ <property name="Cancel">1</property>
+ <property name="ContextHelp">0</property>
+ <property name="Help">0</property>
+ <property name="No">0</property>
+ <property name="OK">1</property>
+ <property name="Save">0</property>
+ <property name="Yes">0</property>
+ <property name="minimum_size"></property>
+ <property name="name">m_sdbSizer1</property>
+ <property name="permission">protected</property>
+ <event name="OnApplyButtonClick"></event>
+ <event name="OnCancelButtonClick">OnCancelClick</event>
+ <event name="OnContextHelpButtonClick"></event>
+ <event name="OnHelpButtonClick"></event>
+ <event name="OnNoButtonClick"></event>
+ <event name="OnOKButtonClick">OnOKClick</event>
+ <event name="OnSaveButtonClick"></event>
+ <event name="OnYesButtonClick"></event>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+</wxFormBuilder_Project>
diff --git a/pcbnew/import_dxf/dialog_dxf_import.h b/pcbnew/import_dxf/dialog_dxf_import.h
new file mode 100644
index 0000000..91f87de
--- /dev/null
+++ b/pcbnew/import_dxf/dialog_dxf_import.h
@@ -0,0 +1,64 @@
+/*
+ * This program source code file is part of KiCad, a free EDA CAD application.
+ *
+ * Copyright (C) 2013 Jean-Pierre Charras, jp.charras at wanadoo.fr
+ * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, you may find one here:
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ * or you may search the http://www.gnu.org website for the version 2 license,
+ * or you may write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <dialog_dxf_import_base.h>
+#include <wxPcbStruct.h>
+#include <dxf2brd_items.h>
+
+class DIALOG_DXF_IMPORT : public DIALOG_DXF_IMPORT_BASE
+{
+public:
+ DIALOG_DXF_IMPORT( PCB_BASE_FRAME* aParent, bool aUseModuleItems = false );
+ ~DIALOG_DXF_IMPORT();
+
+ /**
+ * Function GetImportedItems()
+ *
+ * Returns a list of items imported from a DXF file.
+ */
+ const std::list<BOARD_ITEM*>& GetImportedItems() const
+ {
+ return m_dxfImporter.GetItemsList();
+ }
+
+private:
+ PCB_BASE_FRAME* m_parent;
+ wxConfigBase* m_config; // Current config
+ DXF2BRD_CONVERTER m_dxfImporter;
+ int m_PCBGridUnits;
+ double m_PCBGridOffsetX;
+ double m_PCBGridOffsetY;
+
+ static wxString m_dxfFilename;
+ static int m_offsetSelection;
+ static LAYER_NUM m_layer;
+
+ // Virtual event handlers
+ void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
+ void OnOKClick( wxCommandEvent& event );
+ void OnBrowseDxfFiles( wxCommandEvent& event );
+ void OriginOptionOnUpdateUI( wxUpdateUIEvent& event );
+ int GetPCBGridUnits( void );
+ void GetPCBGridOffsets( double &aXOffset, double &aYOffset );
+};
diff --git a/pcbnew/import_dxf/dialog_dxf_import_base.cpp b/pcbnew/import_dxf/dialog_dxf_import_base.cpp
new file mode 100644
index 0000000..f3ba8e3
--- /dev/null
+++ b/pcbnew/import_dxf/dialog_dxf_import_base.cpp
@@ -0,0 +1,154 @@
+///////////////////////////////////////////////////////////////////////////
+// C++ code generated with wxFormBuilder (version Jun 5 2014)
+// http://www.wxformbuilder.org/
+//
+// PLEASE DO "NOT" EDIT THIS FILE!
+///////////////////////////////////////////////////////////////////////////
+
+#include "class_pcb_layer_box_selector.h"
+
+#include "dialog_dxf_import_base.h"
+
+///////////////////////////////////////////////////////////////////////////
+
+DIALOG_DXF_IMPORT_BASE::DIALOG_DXF_IMPORT_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
+{
+ this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+
+ wxBoxSizer* bSizerMain;
+ bSizerMain = new wxBoxSizer( wxVERTICAL );
+
+ wxBoxSizer* bSizerFile;
+ bSizerFile = new wxBoxSizer( wxHORIZONTAL );
+
+ m_staticText37 = new wxStaticText( this, wxID_ANY, _("File:"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_staticText37->Wrap( -1 );
+ bSizerFile->Add( m_staticText37, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+
+ m_textCtrlFileName = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+ m_textCtrlFileName->SetMinSize( wxSize( 300,-1 ) );
+
+ bSizerFile->Add( m_textCtrlFileName, 1, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxTOP, 5 );
+
+ m_buttonBrowse = new wxButton( this, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 );
+ bSizerFile->Add( m_buttonBrowse, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxTOP, 5 );
+
+
+ bSizerMain->Add( bSizerFile, 0, wxALL|wxEXPAND, 5 );
+
+ wxBoxSizer* bSizer3;
+ bSizer3 = new wxBoxSizer( wxHORIZONTAL );
+
+ wxString m_rbOffsetOptionChoices[] = { _("Center of page"), _("Upper left corner of page"), _("Center left side of page"), _("Lower left corner of page"), _("User defined position") };
+ int m_rbOffsetOptionNChoices = sizeof( m_rbOffsetOptionChoices ) / sizeof( wxString );
+ m_rbOffsetOption = new wxRadioBox( this, wxID_ORIGIN_SELECT, _("Place DXF origin (0,0) point:"), wxDefaultPosition, wxDefaultSize, m_rbOffsetOptionNChoices, m_rbOffsetOptionChoices, 1, wxRA_SPECIFY_COLS );
+ m_rbOffsetOption->SetSelection( 0 );
+ bSizer3->Add( m_rbOffsetOption, 0, wxALL|wxEXPAND, 5 );
+
+ wxBoxSizer* bSizer4;
+ bSizer4 = new wxBoxSizer( wxVERTICAL );
+
+ wxBoxSizer* bSizer6;
+ bSizer6 = new wxBoxSizer( wxHORIZONTAL );
+
+ m_staticText4 = new wxStaticText( this, wxID_ANY, _("X Position:"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_staticText4->Wrap( -1 );
+ bSizer6->Add( m_staticText4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+
+ m_DXFPCBXCoord = new wxTextCtrl( this, wxID_ANY, _("0.0"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_DXFPCBXCoord->SetMaxLength( 10 );
+ m_DXFPCBXCoord->SetToolTip( _("DXF origin on PCB Grid, X Coordinate") );
+
+ bSizer6->Add( m_DXFPCBXCoord, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+
+
+ bSizer4->Add( bSizer6, 1, wxEXPAND, 5 );
+
+ wxBoxSizer* bSizer7;
+ bSizer7 = new wxBoxSizer( wxHORIZONTAL );
+
+ m_staticText5 = new wxStaticText( this, wxID_ANY, _("Y Position:"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_staticText5->Wrap( -1 );
+ bSizer7->Add( m_staticText5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+
+ m_DXFPCBYCoord = new wxTextCtrl( this, wxID_ANY, _("0.0"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_DXFPCBYCoord->SetMaxLength( 10 );
+ m_DXFPCBYCoord->SetToolTip( _("DXF origin on PCB Grid, Y Coordinate") );
+
+ bSizer7->Add( m_DXFPCBYCoord, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+
+
+ bSizer4->Add( bSizer7, 1, wxEXPAND, 5 );
+
+ wxBoxSizer* bSizer5;
+ bSizer5 = new wxBoxSizer( wxHORIZONTAL );
+
+ m_staticText3 = new wxStaticText( this, wxID_ANY, _("Units:"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_staticText3->Wrap( -1 );
+ bSizer5->Add( m_staticText3, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+
+ wxString m_DXFPCBGridUnitsChoices[] = { _("mm"), _("inch") };
+ int m_DXFPCBGridUnitsNChoices = sizeof( m_DXFPCBGridUnitsChoices ) / sizeof( wxString );
+ m_DXFPCBGridUnits = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_DXFPCBGridUnitsNChoices, m_DXFPCBGridUnitsChoices, 0 );
+ m_DXFPCBGridUnits->SetSelection( 0 );
+ m_DXFPCBGridUnits->SetToolTip( _("Select PCB grid units") );
+
+ bSizer5->Add( m_DXFPCBGridUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+
+
+ bSizer4->Add( bSizer5, 1, wxEXPAND, 5 );
+
+
+ bSizer3->Add( bSizer4, 1, 0, 5 );
+
+
+ bSizerMain->Add( bSizer3, 1, wxALL|wxEXPAND, 5 );
+
+ wxBoxSizer* bSizer8;
+ bSizer8 = new wxBoxSizer( wxHORIZONTAL );
+
+ m_staticTextBrdlayer = new wxStaticText( this, wxID_ANY, _("Layer:"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_staticTextBrdlayer->Wrap( -1 );
+ bSizer8->Add( m_staticTextBrdlayer, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxLEFT|wxTOP, 5 );
+
+ m_SelLayerBox = new PCB_LAYER_BOX_SELECTOR( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
+ bSizer8->Add( m_SelLayerBox, 1, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 );
+
+
+ bSizerMain->Add( bSizer8, 0, wxALL|wxEXPAND, 5 );
+
+ m_staticline8 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+ bSizerMain->Add( m_staticline8, 0, wxALL|wxEXPAND, 5 );
+
+ m_sdbSizer1 = new wxStdDialogButtonSizer();
+ m_sdbSizer1OK = new wxButton( this, wxID_OK );
+ m_sdbSizer1->AddButton( m_sdbSizer1OK );
+ m_sdbSizer1Cancel = new wxButton( this, wxID_CANCEL );
+ m_sdbSizer1->AddButton( m_sdbSizer1Cancel );
+ m_sdbSizer1->Realize();
+
+ bSizerMain->Add( m_sdbSizer1, 0, wxALIGN_RIGHT|wxBOTTOM|wxLEFT|wxRIGHT, 5 );
+
+
+ this->SetSizer( bSizerMain );
+ this->Layout();
+ bSizerMain->Fit( this );
+
+ this->Centre( wxBOTH );
+
+ // Connect Events
+ m_buttonBrowse->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DXF_IMPORT_BASE::OnBrowseDxfFiles ), NULL, this );
+ m_rbOffsetOption->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_DXF_IMPORT_BASE::OriginOptionOnUpdateUI ), NULL, this );
+ m_sdbSizer1Cancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DXF_IMPORT_BASE::OnCancelClick ), NULL, this );
+ m_sdbSizer1OK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DXF_IMPORT_BASE::OnOKClick ), NULL, this );
+}
+
+DIALOG_DXF_IMPORT_BASE::~DIALOG_DXF_IMPORT_BASE()
+{
+ // Disconnect Events
+ m_buttonBrowse->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DXF_IMPORT_BASE::OnBrowseDxfFiles ), NULL, this );
+ m_rbOffsetOption->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( DIALOG_DXF_IMPORT_BASE::OriginOptionOnUpdateUI ), NULL, this );
+ m_sdbSizer1Cancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DXF_IMPORT_BASE::OnCancelClick ), NULL, this );
+ m_sdbSizer1OK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DXF_IMPORT_BASE::OnOKClick ), NULL, this );
+
+}
diff --git a/pcbnew/import_dxf/dialog_dxf_import_base.h b/pcbnew/import_dxf/dialog_dxf_import_base.h
new file mode 100644
index 0000000..7592d9b
--- /dev/null
+++ b/pcbnew/import_dxf/dialog_dxf_import_base.h
@@ -0,0 +1,77 @@
+///////////////////////////////////////////////////////////////////////////
+// C++ code generated with wxFormBuilder (version Jun 5 2014)
+// http://www.wxformbuilder.org/
+//
+// PLEASE DO "NOT" EDIT THIS FILE!
+///////////////////////////////////////////////////////////////////////////
+
+#ifndef __DIALOG_DXF_IMPORT_BASE_H__
+#define __DIALOG_DXF_IMPORT_BASE_H__
+
+#include <wx/artprov.h>
+#include <wx/xrc/xmlres.h>
+#include <wx/intl.h>
+class DIALOG_SHIM;
+class PCB_LAYER_BOX_SELECTOR;
+
+#include "dialog_shim.h"
+#include <wx/string.h>
+#include <wx/stattext.h>
+#include <wx/gdicmn.h>
+#include <wx/font.h>
+#include <wx/colour.h>
+#include <wx/settings.h>
+#include <wx/textctrl.h>
+#include <wx/button.h>
+#include <wx/sizer.h>
+#include <wx/radiobox.h>
+#include <wx/valtext.h>
+#include <wx/choice.h>
+#include <wx/bmpcbox.h>
+#include <wx/statline.h>
+#include <wx/dialog.h>
+
+///////////////////////////////////////////////////////////////////////////
+
+#define wxID_ORIGIN_SELECT 1000
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class DIALOG_DXF_IMPORT_BASE
+///////////////////////////////////////////////////////////////////////////////
+class DIALOG_DXF_IMPORT_BASE : public DIALOG_SHIM
+{
+ private:
+
+ protected:
+ wxStaticText* m_staticText37;
+ wxTextCtrl* m_textCtrlFileName;
+ wxButton* m_buttonBrowse;
+ wxRadioBox* m_rbOffsetOption;
+ wxStaticText* m_staticText4;
+ wxTextCtrl* m_DXFPCBXCoord;
+ wxStaticText* m_staticText5;
+ wxTextCtrl* m_DXFPCBYCoord;
+ wxStaticText* m_staticText3;
+ wxChoice* m_DXFPCBGridUnits;
+ wxStaticText* m_staticTextBrdlayer;
+ PCB_LAYER_BOX_SELECTOR* m_SelLayerBox;
+ wxStaticLine* m_staticline8;
+ wxStdDialogButtonSizer* m_sdbSizer1;
+ wxButton* m_sdbSizer1OK;
+ wxButton* m_sdbSizer1Cancel;
+
+ // Virtual event handlers, overide them in your derived class
+ virtual void OnBrowseDxfFiles( wxCommandEvent& event ) { event.Skip(); }
+ virtual void OriginOptionOnUpdateUI( wxUpdateUIEvent& event ) { event.Skip(); }
+ virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
+ virtual void OnOKClick( wxCommandEvent& event ) { event.Skip(); }
+
+
+ public:
+
+ DIALOG_DXF_IMPORT_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Import DXF File"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
+ ~DIALOG_DXF_IMPORT_BASE();
+
+};
+
+#endif //__DIALOG_DXF_IMPORT_BASE_H__
diff --git a/pcbnew/import_dxf/dxf2brd_items.cpp b/pcbnew/import_dxf/dxf2brd_items.cpp
new file mode 100644
index 0000000..a48f591
--- /dev/null
+++ b/pcbnew/import_dxf/dxf2brd_items.cpp
@@ -0,0 +1,824 @@
+/*
+ * This program source code file is part of KiCad, a free EDA CAD application.
+ *
+ * Copyright (C) 2013 Jean-Pierre Charras, jp.charras at wanadoo.fr
+ * Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, you may find one here:
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+ * or you may search the http://www.gnu.org website for the version 2 license,
+ * or you may write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+// The DXF reader lib (libdxfrw) comes from LibreCAD project, a 2D CAD program
+// libdxfrw can be found on http://sourceforge.net/projects/libdxfrw/
+// or (latest sources) on
+// https://github.com/LibreCAD/LibreCAD/tree/master/libraries/libdxfrw/src
+//
+// There is no doc to use it, but have a look to
+// https://github.com/LibreCAD/LibreCAD/blob/master/librecad/src/lib/filters/rs_filterdxf.cpp
+// and https://github.com/LibreCAD/LibreCAD/blob/master/librecad/src/lib/filters/rs_filterdxf.h
+// Each time a dxf entity is read, a "call back" fuction is called
+// like void DXF2BRD_CONVERTER::addLine( const DRW_Line& data ) when a line is read.
+// this function just add the BOARD entity from dxf parameters (start and end point ...)
+
+
+#include "libdxfrw.h"
+#include "dxf2brd_items.h"
+#include <wx/arrstr.h>
+#include <wx/regex.h>
+
+#include <trigo.h>
+#include <macros.h>
+#include <class_board.h>
+#include <class_drawsegment.h>
+#include <class_edge_mod.h>
+#include <class_pcb_text.h>
+#include <convert_from_iu.h>
+#include <class_text_mod.h>
+#include <drw_base.h>
+
+// minimum bulge value before resorting to a line segment;
+// the value 0.0218 is equivalent to about 5 degrees arc,
+#define MIN_BULGE 0.0218
+
+DXF2BRD_CONVERTER::DXF2BRD_CONVERTER() : DRW_Interface()
+{
+ m_xOffset = 0.0; // X coord offset for conversion (in mm)
+ m_yOffset = 0.0; // Y coord offset for conversion (in mm)
+ m_DXF2mm = 1.0; // The scale factor to convert DXF units to mm
+ m_version = 0;
+ m_defaultThickness = 0.1;
+ m_brdLayer = Dwgs_User;
+}
+
+
+DXF2BRD_CONVERTER::~DXF2BRD_CONVERTER()
+{
+}
+
+
+// coordinate conversions from dxf to internal units
+int DXF2BRD_CONVERTER::mapX( double aDxfCoordX )
+{
+ return Millimeter2iu( m_xOffset + ( aDxfCoordX * m_DXF2mm ) );
+}
+
+
+int DXF2BRD_CONVERTER::mapY( double aDxfCoordY )
+{
+ return Millimeter2iu( m_yOffset - ( aDxfCoordY * m_DXF2mm ) );
+}
+
+
+int DXF2BRD_CONVERTER::mapDim( double aDxfValue )
+{
+ return Millimeter2iu( aDxfValue * m_DXF2mm );
+}
+
+
+bool DXF2BRD_CONVERTER::ImportDxfFile( const wxString& aFile )
+{
+ dxfRW* dxf = new dxfRW( aFile.ToUTF8() );
+ bool success = dxf->read( this, true );
+
+ delete dxf;
+
+ return success;
+}
+
+
+void DXF2BRD_CONVERTER::addLayer( const DRW_Layer& aData )
+{
+ // Not yet useful in Pcbnew.
+#if 0
+ wxString name = wxString::FromUTF8( aData.name.c_str() );
+ wxLogMessage( name );
+#endif
+}
+
+
+void DXF2BRD_CONVERTER::addLine( const DRW_Line& aData )
+{
+ DRAWSEGMENT* segm = ( m_useModuleItems ) ?
+ static_cast< DRAWSEGMENT* >( new EDGE_MODULE( NULL ) ) : new DRAWSEGMENT;
+
+ segm->SetLayer( ToLAYER_ID( m_brdLayer ) );
+ wxPoint start( mapX( aData.basePoint.x ), mapY( aData.basePoint.y ) );
+ segm->SetStart( start );
+ wxPoint end( mapX( aData.secPoint.x ), mapY( aData.secPoint.y ) );
+ segm->SetEnd( end );
+ segm->SetWidth( mapDim( aData.thickness == 0 ? m_defaultThickness / m_DXF2mm
+ : aData.thickness ) );
+ m_newItemsList.push_back( segm );
+}
+
+void DXF2BRD_CONVERTER::addPolyline(const DRW_Polyline& aData )
+{
+ // Currently, Pcbnew does not know polylines, for boards.
+ // So we have to convert a polyline to a set of segments.
+ // Obviously, the z coordinate is ignored
+
+ wxPoint polyline_startpoint;
+ wxPoint segment_startpoint;
+
+ for( unsigned ii = 0; ii < aData.vertlist.size(); ii++ )
+ {
+ DRW_Vertex* vertex = aData.vertlist[ii];
+
+ if( ii == 0 )
+ {
+ segment_startpoint.x = mapX( vertex->basePoint.x );
+ segment_startpoint.y = mapY( vertex->basePoint.y );
+ polyline_startpoint = segment_startpoint;
+ continue;
+ }
+
+ DRAWSEGMENT* segm = ( m_useModuleItems ) ?
+ static_cast< DRAWSEGMENT* >( new EDGE_MODULE( NULL ) ) :
+ new DRAWSEGMENT;
+
+ segm->SetLayer( ToLAYER_ID( m_brdLayer ) );
+ segm->SetStart( segment_startpoint );
+ wxPoint segment_endpoint( mapX( vertex->basePoint.x ), mapY( vertex->basePoint.y ) );
+ segm->SetEnd( segment_endpoint );
+ segm->SetWidth( mapDim( aData.thickness == 0 ? m_defaultThickness / m_DXF2mm
+ : aData.thickness ) );
+ m_newItemsList.push_back( segm );
+ segment_startpoint = segment_endpoint;
+ }
+
+ // Polyline flags bit 0 indicates closed (1) or open (0) polyline
+ if( aData.flags & 1 )
+ {
+ DRAWSEGMENT* closing_segm = ( m_useModuleItems ) ?
+ static_cast< DRAWSEGMENT* >( new EDGE_MODULE( NULL ) ) :
+ new DRAWSEGMENT;
+
+ closing_segm->SetLayer( ToLAYER_ID( m_brdLayer ) );
+ closing_segm->SetStart( segment_startpoint );
+ closing_segm->SetEnd( polyline_startpoint );
+ closing_segm->SetWidth( mapDim( aData.thickness == 0 ? m_defaultThickness / m_DXF2mm
+ : aData.thickness ) );
+ m_newItemsList.push_back( closing_segm );
+ }
+}
+
+
+void DXF2BRD_CONVERTER::addLWPolyline(const DRW_LWPolyline& aData )
+{
+ // Currently, Pcbnew does not know polylines, for boards.
+ // So we have to convert a polyline to a set of segments.
+ // The import is a simplified import: the width of segment is
+ // (obviously constant and is the width of the DRW_LWPolyline.
+ // the variable width of each vertex (when exists) is not used.
+ wxRealPoint seg_start;
+ wxRealPoint poly_start;
+ double bulge = 0.0;
+ int lineWidth = mapDim( aData.thickness == 0 ? m_defaultThickness / m_DXF2mm
+ : aData.thickness );
+
+ for( unsigned ii = 0; ii < aData.vertlist.size(); ii++ )
+ {
+ DRW_Vertex2D* vertex = aData.vertlist[ii];
+
+ if( ii == 0 )
+ {
+ seg_start.x = m_xOffset + vertex->x * m_DXF2mm;
+ seg_start.y = m_yOffset - vertex->y * m_DXF2mm;
+ bulge = vertex->bulge;
+ poly_start = seg_start;
+ continue;
+ }
+
+ wxRealPoint seg_end( m_xOffset + vertex->x * m_DXF2mm, m_yOffset - vertex->y * m_DXF2mm );
+
+ if( std::abs( bulge ) < MIN_BULGE )
+ insertLine( seg_start, seg_end, lineWidth );
+ else
+ insertArc( seg_start, seg_end, bulge, lineWidth );
+
+ bulge = vertex->bulge;
+ seg_start = seg_end;
+ }
+
+ // LWPolyline flags bit 0 indicates closed (1) or open (0) polyline
+ if( aData.flags & 1 )
+ {
+ if( std::abs( bulge ) < MIN_BULGE )
+ insertLine( seg_start, poly_start, lineWidth );
+ else
+ insertArc( seg_start, poly_start, bulge, lineWidth );
+ }
+}
+
+
+void DXF2BRD_CONVERTER::addCircle( const DRW_Circle& aData )
+{
+ DRAWSEGMENT* segm = ( m_useModuleItems ) ?
+ static_cast< DRAWSEGMENT* >( new EDGE_MODULE( NULL ) ) : new DRAWSEGMENT;
+
+ segm->SetLayer( ToLAYER_ID( m_brdLayer ) );
+ segm->SetShape( S_CIRCLE );
+ wxPoint center( mapX( aData.basePoint.x ), mapY( aData.basePoint.y ) );
+ segm->SetCenter( center );
+ wxPoint circle_start( mapX( aData.basePoint.x + aData.radious ), mapY( aData.basePoint.y ) );
+ segm->SetArcStart( circle_start );
+ segm->SetWidth( mapDim( aData.thickness == 0 ? m_defaultThickness / m_DXF2mm
+ : aData.thickness ) );
+ m_newItemsList.push_back( segm );
+}
+
+
+/*
+ * Import Arc entities.
+ */
+void DXF2BRD_CONVERTER::addArc( const DRW_Arc& data )
+{
+ DRAWSEGMENT* segm = ( m_useModuleItems ) ?
+ static_cast< DRAWSEGMENT* >( new EDGE_MODULE( NULL ) ) : new DRAWSEGMENT;
+
+ segm->SetLayer( ToLAYER_ID( m_brdLayer ) );
+ segm->SetShape( S_ARC );
+
+ // Init arc centre:
+ wxPoint center( mapX( data.basePoint.x ), mapY( data.basePoint.y ) );
+ segm->SetCenter( center );
+
+ // Init arc start point
+ double arcStartx = data.radious;
+ double arcStarty = 0;
+ double startangle = data.staangle;
+ double endangle = data.endangle;
+
+ RotatePoint( &arcStartx, &arcStarty, -RAD2DECIDEG( startangle ) );
+ wxPoint arcStart( mapX( arcStartx + data.basePoint.x ),
+ mapY( arcStarty + data.basePoint.y ) );
+ segm->SetArcStart( arcStart );
+
+ // calculate arc angle (arcs are CCW, and should be < 0 in Pcbnew)
+ double angle = -RAD2DECIDEG( endangle - startangle );
+
+ if( angle > 0.0 )
+ angle -= 3600.0;
+
+ segm->SetAngle( angle );
+
+ segm->SetWidth( mapDim( data.thickness == 0 ? m_defaultThickness / m_DXF2mm
+ : data.thickness ) );
+ m_newItemsList.push_back( segm );
+}
+
+
+void DXF2BRD_CONVERTER::addText( const DRW_Text& aData )
+{
+ BOARD_ITEM* brdItem;
+ EDA_TEXT* textItem;
+
+ if( m_useModuleItems )
+ {
+ TEXTE_MODULE* modText = new TEXTE_MODULE( NULL );
+ brdItem = static_cast< BOARD_ITEM* >( modText );
+ textItem = static_cast< EDA_TEXT* >( modText );
+ }
+ else
+ {
+ TEXTE_PCB* pcbText = new TEXTE_PCB( NULL );
+ brdItem = static_cast< BOARD_ITEM* >( pcbText );
+ textItem = static_cast< EDA_TEXT* >( pcbText );
+ }
+
+ brdItem->SetLayer( ToLAYER_ID( m_brdLayer ) );
+
+ wxPoint refPoint( mapX( aData.basePoint.x ), mapY( aData.basePoint.y ) );
+ wxPoint secPoint( mapX( aData.secPoint.x ), mapY( aData.secPoint.y ) );
+
+ if( aData.alignV != 0 || aData.alignH != 0 || aData.alignH == DRW_Text::HMiddle )
+ {
+ if( aData.alignH != DRW_Text::HAligned && aData.alignH != DRW_Text::HFit )
+ {
+ wxPoint tmp = secPoint;
+ secPoint = refPoint;
+ refPoint = tmp;
+ }
+ }
+
+ switch( aData.alignV )
+ {
+ case DRW_Text::VBaseLine:
+ textItem->SetVertJustify( GR_TEXT_VJUSTIFY_BOTTOM );
+ break;
+
+ case DRW_Text::VBottom:
+ textItem->SetVertJustify( GR_TEXT_VJUSTIFY_BOTTOM );
+ break;
+
+ case DRW_Text::VMiddle:
+ textItem->SetVertJustify( GR_TEXT_VJUSTIFY_CENTER );
+ break;
+
+ case DRW_Text::VTop:
+ textItem->SetVertJustify( GR_TEXT_VJUSTIFY_TOP );
+ break;
+ }
+
+ switch( aData.alignH )
+ {
+ case DRW_Text::HLeft:
+ textItem->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
+ break;
+
+ case DRW_Text::HCenter:
+ textItem->SetHorizJustify( GR_TEXT_HJUSTIFY_CENTER );
+ break;
+
+ case DRW_Text::HRight:
+ textItem->SetHorizJustify( GR_TEXT_HJUSTIFY_RIGHT );
+ break;
+
+ case DRW_Text::HAligned:
+ // no equivalent options in text pcb.
+ textItem->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
+ break;
+
+ case DRW_Text::HMiddle:
+ // no equivalent options in text pcb.
+ textItem->SetHorizJustify( GR_TEXT_HJUSTIFY_CENTER );
+ break;
+
+ case DRW_Text::HFit:
+ // no equivalent options in text pcb.
+ textItem->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
+ break;
+ }
+
+#if 0
+ wxString sty = wxString::FromUTF8( aData.style.c_str() );
+ sty = sty.ToLower();
+
+ if( aData.textgen == 2 )
+ {
+ // Text dir = left to right;
+ } else if( aData.textgen == 4 )
+ {
+ // Text dir = top to bottom;
+ } else
+ {
+ }
+#endif
+
+ wxString text = toNativeString( wxString::FromUTF8( aData.text.c_str() ) );
+
+ textItem->SetTextPosition( refPoint );
+ textItem->SetOrientation( aData.angle * 10 );
+
+ // The 0.8 factor gives a better height/width ratio with our font
+ textItem->SetWidth( mapDim( aData.height * 0.8 ) );
+ textItem->SetHeight( mapDim( aData.height ) );
+ textItem->SetThickness( mapDim( aData.thickness == 0 ? m_defaultThickness / m_DXF2mm
+ : aData.thickness ) );
+ textItem->SetText( text );
+
+ m_newItemsList.push_back( static_cast< BOARD_ITEM* >( brdItem ) );
+}
+
+
+void DXF2BRD_CONVERTER::addMText( const DRW_MText& aData )
+{
+ wxString text = toNativeString( wxString::FromUTF8( aData.text.c_str() ) );
+ wxString attrib, tmp;
+
+ /* Some texts start by '\' and have formating chars (font name, font option...)
+ * ending with ';'
+ * Here are some mtext formatting codes:
+ * Format code Purpose
+ * \0...\o Turns overline on and off
+ * \L...\l Turns underline on and off
+ * \~ Inserts a nonbreaking space
+ \\ Inserts a backslash
+ \\\{...\} Inserts an opening and closing brace
+ \\ \File name; Changes to the specified font file
+ \\ \Hvalue; Changes to the text height specified in drawing units
+ \\ \Hvaluex; Changes the text height to a multiple of the current text height
+ \\ \S...^...; Stacks the subsequent text at the \, #, or ^ symbol
+ \\ \Tvalue; Adjusts the space between characters, from.75 to 4 times
+ \\ \Qangle; Changes obliquing angle
+ \\ \Wvalue; Changes width factor to produce wide text
+ \\ \A Sets the alignment value; valid values: 0, 1, 2 (bottom, center, top) while( text.StartsWith( wxT("\\") ) )
+ */
+ while( text.StartsWith( wxT( "\\" ) ) )
+ {
+ attrib << text.BeforeFirst( ';' );
+ tmp = text.AfterFirst( ';' );
+ text = tmp;
+ }
+
+ BOARD_ITEM* brdItem;
+ EDA_TEXT* textItem;
+
+ if( m_useModuleItems )
+ {
+ TEXTE_MODULE* modText = new TEXTE_MODULE( NULL );
+ brdItem = static_cast< BOARD_ITEM* >( modText );
+ textItem = static_cast< EDA_TEXT* >( modText );
+ }
+ else
+ {
+ TEXTE_PCB* pcbText = new TEXTE_PCB( NULL );
+ brdItem = static_cast< BOARD_ITEM* >( pcbText );
+ textItem = static_cast< EDA_TEXT* >( pcbText );
+ }
+
+ brdItem->SetLayer( ToLAYER_ID( m_brdLayer ) );
+ wxPoint textpos( mapX( aData.basePoint.x ), mapY( aData.basePoint.y ) );
+
+ textItem->SetTextPosition( textpos );
+ textItem->SetOrientation( aData.angle * 10 );
+
+ // The 0.8 factor gives a better height/width ratio with our font
+ textItem->SetWidth( mapDim( aData.height * 0.8 ) );
+ textItem->SetHeight( mapDim( aData.height ) );
+ textItem->SetThickness( mapDim( aData.thickness == 0 ? m_defaultThickness / m_DXF2mm
+ : aData.thickness ) );
+ textItem->SetText( text );
+
+ // Initialize text justifications:
+ if( aData.textgen <= 3 )
+ {
+ textItem->SetVertJustify( GR_TEXT_VJUSTIFY_TOP );
+ }
+ else if( aData.textgen <= 6 )
+ {
+ textItem->SetVertJustify( GR_TEXT_VJUSTIFY_CENTER );
+ }
+ else
+ {
+ textItem->SetVertJustify( GR_TEXT_VJUSTIFY_BOTTOM );
+ }
+
+ if( aData.textgen % 3 == 1 )
+ {
+ textItem->SetHorizJustify( GR_TEXT_HJUSTIFY_LEFT );
+ }
+ else if( aData.textgen % 3 == 2 )
+ {
+ textItem->SetHorizJustify( GR_TEXT_HJUSTIFY_CENTER );
+ }
+ else
+ {
+ textItem->SetHorizJustify( GR_TEXT_HJUSTIFY_RIGHT );
+ }
+
+#if 0 // These setting have no mening in Pcbnew
+ if( data.alignH == 1 )
+ {
+ // Text is left to right;
+ }
+ else if( data.alignH == 3 )
+ {
+ // Text is top to bottom;
+ }
+ else
+ {
+ // use ByStyle;
+ }
+
+ if( aData.alignV == 1 )
+ {
+ // use AtLeast;
+ }
+ else
+ {
+ // useExact;
+ }
+#endif
+
+ m_newItemsList.push_back( static_cast< BOARD_ITEM* >( brdItem ) );
+}
+
+
+void DXF2BRD_CONVERTER::addHeader( const DRW_Header* data )
+{
+ std::map<std::string, DRW_Variant*>::const_iterator it;
+ m_DXF2mm = 1.0; // assume no scale factor
+
+ for( it = data->vars.begin(); it != data->vars.end(); ++it )
+ {
+ std::string key = ( (*it).first ).c_str();
+
+ if( key == "$DWGCODEPAGE" )
+ {
+ DRW_Variant* var = (*it).second;
+ m_codePage = ( *var->content.s );
+ }
+ else if( key == "$INSUNITS" )
+ {
+ DRW_Variant* var = (*it).second;
+
+ switch( var->content.i )
+ {
+ case 1: // inches
+ m_DXF2mm = 25.4;
+ break;
+
+ case 2: // feet
+ m_DXF2mm = 304.8;
+ break;
+
+ case 5: // centimeters
+ m_DXF2mm = 10.0;
+ break;
+
+ case 6: // meters
+ m_DXF2mm = 1000.0;
+ break;
+
+ case 8: // microinches
+ m_DXF2mm = 2.54e-5;
+ break;
+
+ case 9: // mils
+ m_DXF2mm = 0.0254;
+ break;
+
+ case 10: // yards
+ m_DXF2mm = 914.4;
+ break;
+
+ case 11: // Angstroms
+ m_DXF2mm = 1.0e-7;
+ break;
+
+ case 12: // nanometers
+ m_DXF2mm = 1.0e-6;
+ break;
+
+ case 13: // micrometers
+ m_DXF2mm = 1.0e-3;
+ break;
+
+ case 14: // decimeters
+ m_DXF2mm = 100.0;
+ break;
+
+ default:
+ // use the default of 1.0 for:
+ // 0: Unspecified Units
+ // 4: mm
+ // 3: miles
+ // 7: kilometers
+ // 15: decameters
+ // 16: hectometers
+ // 17: gigameters
+ // 18: AU
+ // 19: lightyears
+ // 20: parsecs
+ break;
+ }
+ }
+ }
+}
+
+
+wxString DXF2BRD_CONVERTER::toDxfString( const wxString& aStr )
+{
+ wxString res;
+ int j = 0;
+
+ for( unsigned i = 0; i<aStr.length(); ++i )
+ {
+ int c = aStr[i];
+
+ if( c > 175 || c < 11 )
+ {
+ res.append( aStr.Mid( j, i - j ) );
+ j = i;
+
+ switch( c )
+ {
+ case 0x0A:
+ res += wxT( "\\P" );
+ break;
+
+ // diameter:
+#ifdef __WINDOWS_
+ // windows, as always, is special.
+ case 0x00D8:
+#else
+ case 0x2205:
+#endif
+ res += wxT( "%%C" );
+ break;
+
+ // degree:
+ case 0x00B0:
+ res += wxT( "%%D" );
+ break;
+
+ // plus/minus
+ case 0x00B1:
+ res += wxT( "%%P" );
+ break;
+
+ default:
+ j--;
+ break;
+ }
+
+ j++;
+ }
+ }
+
+ res.append( aStr.Mid( j ) );
+ return res;
+}
+
+
+wxString DXF2BRD_CONVERTER::toNativeString( const wxString& aData )
+{
+ wxString res;
+
+ // Ignore font tags:
+ int j = 0;
+
+ for( unsigned i = 0; i < aData.length(); ++i )
+ {
+ if( aData[ i ] == 0x7B ) // is '{' ?
+ {
+ if( aData[ i + 1 ] == 0x5c && aData[ i + 2 ] == 0x66 ) // is "\f" ?
+ {
+ // found font tag, append parsed part
+ res.append( aData.Mid( j, i - j ) );
+
+ // skip to ';'
+ for( unsigned k = i + 3; k < aData.length(); ++k )
+ {
+ if( aData[ k ] == 0x3B )
+ {
+ i = j = ++k;
+ break;
+ }
+ }
+
+ // add to '}'
+ for( unsigned k = i; k < aData.length(); ++k )
+ {
+ if( aData[ k ] == 0x7D )
+ {
+ res.append( aData.Mid( i, k - i ) );
+ i = j = ++k;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ res.append( aData.Mid( j ) );
+
+#if 1
+ wxRegEx regexp;
+ // Line feed:
+ regexp.Compile( wxT( "\\\\P" ) );
+ regexp.Replace( &res, wxT( "\n" ) );
+
+ // Space:
+ regexp.Compile( wxT( "\\\\~" ) );
+ regexp.Replace( &res, wxT( " " ) );
+
+ // diameter:
+ regexp.Compile( wxT( "%%[cC]" ) );
+#ifdef __WINDOWS__
+ // windows, as always, is special.
+ regexp.Replace( &res, wxChar( 0xD8 ) );
+#else
+ // Empty_set, diameter is 0x2300
+ regexp.Replace( &res, wxChar( 0x2205 ) );
+#endif
+
+ // degree:
+ regexp.Compile( wxT( "%%[dD]" ) );
+ regexp.Replace( &res, wxChar( 0x00B0 ) );
+ // plus/minus
+ regexp.Compile( wxT( "%%[pP]" ) );
+ regexp.Replace( &res, wxChar( 0x00B1 ) );
+#endif
+
+ return res;
+}
+
+
+void DXF2BRD_CONVERTER::addTextStyle( const DRW_Textstyle& aData )
+{
+ // TODO
+}
+
+
+void DXF2BRD_CONVERTER::insertLine( const wxRealPoint& aSegStart,
+ const wxRealPoint& aSegEnd, int aWidth )
+{
+ DRAWSEGMENT* segm = ( m_useModuleItems ) ?
+ static_cast< DRAWSEGMENT* >( new EDGE_MODULE( NULL ) ) : new DRAWSEGMENT;
+ wxPoint segment_startpoint( Millimeter2iu( aSegStart.x ), Millimeter2iu( aSegStart.y ) );
+ wxPoint segment_endpoint( Millimeter2iu( aSegEnd.x ), Millimeter2iu( aSegEnd.y ) );
+
+ segm->SetLayer( ToLAYER_ID( m_brdLayer ) );
+ segm->SetStart( segment_startpoint );
+ segm->SetEnd( segment_endpoint );
+ segm->SetWidth( aWidth );
+
+ m_newItemsList.push_back( segm );
+ return;
+}
+
+
+void DXF2BRD_CONVERTER::insertArc( const wxRealPoint& aSegStart, const wxRealPoint& aSegEnd,
+ double aBulge, int aWidth )
+{
+ DRAWSEGMENT* segm = ( m_useModuleItems ) ?
+ static_cast< DRAWSEGMENT* >( new EDGE_MODULE( NULL ) ) : new DRAWSEGMENT;
+
+ wxPoint segment_startpoint( Millimeter2iu( aSegStart.x ), Millimeter2iu( aSegStart.y ) );
+ wxPoint segment_endpoint( Millimeter2iu( aSegEnd.x ), Millimeter2iu( aSegEnd.y ) );
+
+ // ensure aBulge represents an angle from +/- ( 0 .. approx 359.8 deg )
+ if( aBulge < -2000.0 )
+ aBulge = -2000.0;
+ else if( aBulge > 2000.0 )
+ aBulge = 2000.0;
+
+ double ang = 4.0 * atan( aBulge );
+
+ // reflect the Y values to put everything in a RHCS
+ wxRealPoint sp( aSegStart.x, -aSegStart.y );
+ wxRealPoint ep( aSegEnd.x, -aSegEnd.y );
+ // angle from end->start
+ double offAng = atan2( ep.y - sp.y, ep.x - sp.x );
+ // length of subtended segment = 1/2 distance between the 2 points
+ double d = 0.5 * sqrt( (sp.x - ep.x) * (sp.x - ep.x) + (sp.y - ep.y) * (sp.y - ep.y) );
+ // midpoint of the subtended segment
+ double xm = ( sp.x + ep.x ) * 0.5;
+ double ym = ( sp.y + ep.y ) * 0.5;
+ double radius = d / sin( ang * 0.5 );
+
+ if( radius < 0.0 )
+ radius = -radius;
+
+ // calculate the height of the triangle with base d and hypotenuse r
+ double dh2 = radius * radius - d * d;
+
+ // this should only ever happen due to rounding errors when r == d
+ if( dh2 < 0.0 )
+ dh2 = 0.0;
+
+ double h = sqrt( dh2 );
+
+ if( ang < 0.0 )
+ offAng -= M_PI_2;
+ else
+ offAng += M_PI_2;
+
+ // for angles greater than 180 deg we need to flip the
+ // direction in which the arc center is found relative
+ // to the midpoint of the subtended segment.
+ if( ang < -M_PI )
+ offAng += M_PI;
+ else if( ang > M_PI )
+ offAng -= M_PI;
+
+ // center point
+ double cx = h * cos( offAng ) + xm;
+ double cy = h * sin( offAng ) + ym;
+
+ segm->SetLayer( ToLAYER_ID( m_brdLayer ) );
+ segm->SetShape( S_ARC );
+ segm->SetCenter( wxPoint( Millimeter2iu( cx ), Millimeter2iu( -cy ) ) );
+
+ if( ang < 0.0 )
+ {
+ segm->SetArcStart( wxPoint( Millimeter2iu( ep.x ), Millimeter2iu( -ep.y ) ) );
+ segm->SetAngle( RAD2DECIDEG( ang ) );
+ }
+ else
+ {
+ segm->SetArcStart( wxPoint( Millimeter2iu( sp.x ), Millimeter2iu( -sp.y ) ) );
+ segm->SetAngle( RAD2DECIDEG( -ang ) );
+ }
+
+ segm->SetWidth( aWidth );
+
+ m_newItemsList.push_back( segm );
+ return;
+}
diff --git a/pcbnew/import_dxf/dxf2brd_items.h b/pcbnew/import_dxf/dxf2brd_items.h
new file mode 100644
index 0000000..7e4f7e9
--- /dev/null
+++ b/pcbnew/import_dxf/dxf2brd_items.h
@@ -0,0 +1,192 @@
+/****************************************************************************
+**
+** This file comes from the LibreCAD project, a 2D CAD program
+**
+** Copyright (C) 2011 Rallaz, rallazz@gmail.com
+** Copyright (C) 2010 R. van Twisk (librecad@rvt.dds.nl)
+**
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License as published by the Free Software
+** Foundation either version 2 of the License, or (at your option)
+** any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program; if not, write to the Free Software
+** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+**
+**********************************************************************/
+
+
+#ifndef FILTERDXFRW_H
+#define FILTERDXFRW_H
+
+#include "drw_interface.h"
+#include "wx/wx.h"
+#include <list>
+
+class BOARD;
+class BOARD_ITEM;
+
+/**
+ * This format filter class can import and export DXF files.
+ * It depends on the dxflib library.
+ *
+ * @author Rallaz
+ */
+class DXF2BRD_CONVERTER : public DRW_Interface
+{
+private:
+ std::list<BOARD_ITEM*> m_newItemsList; // The list of new items added to the board
+ double m_xOffset; // X coord offset for conversion (in mm)
+ double m_yOffset; // Y coord offset for conversion (in mm)
+ double m_defaultThickness; // default line thickness for conversion (in mm)
+ double m_DXF2mm; // The scale factor to convert DXF units to mm
+ int m_brdLayer; // The board layer to place imported DXF items
+ int m_version; // the dxf version, not used here
+ std::string m_codePage; // The code page, not used here
+ bool m_useModuleItems; // Use module items instead of board items when true.
+
+public:
+ DXF2BRD_CONVERTER();
+ ~DXF2BRD_CONVERTER();
+
+ bool IsUsingModuleItems() const { return m_useModuleItems; }
+ void UseModuleItems( bool aUseModuleItems = true ) { m_useModuleItems = aUseModuleItems; }
+
+ /**
+ * Set the coordinate offset between the importede dxf items
+ * and Pcbnew.
+ * because dxf files have the Y axis from bottom to top;
+ * aOffsetX = 0, and aOffsetY = - vertical page size to import a full page
+ * @param aOffsetX = the X offset in mm
+ * @param aOffsetY = the Y offset in mm
+ */
+ void SetOffset( double aOffsetX, double aOffsetY )
+ {
+ m_xOffset = aOffsetX;
+ m_yOffset = aOffsetY;
+ }
+
+ /**
+ * Set the layer number to import dxf items.
+ * the layer should be a techicanl layer, not a copper layer
+ */
+ void SetBrdLayer( int aBrdLayer ) { m_brdLayer = aBrdLayer; }
+
+ /**
+ * Implementation of the method used for communicate
+ * with this filter.
+ *
+ * @param aFile = the full filename.
+ */
+ bool ImportDxfFile( const wxString& aFile );
+
+ /**
+ * @return the list of new BOARD_ITEM
+ */
+ const std::list<BOARD_ITEM*>& GetItemsList() const
+ {
+ return m_newItemsList;
+ }
+
+private:
+ // coordinate conversions from dxf to internal units
+ int mapX( double aDxfCoordX );
+ int mapY( double aDxfCoordY );
+ int mapDim( double aDxfValue );
+
+ // Functions to aid in the creation of a LWPolyline
+ void insertLine( const wxRealPoint& aSegStart, const wxRealPoint& aSegEnd, int aWidth );
+ void insertArc( const wxRealPoint& aSegStart, const wxRealPoint& aSegEnd,
+ double aBulge, int aWidth );
+
+ // Methods from DRW_CreationInterface:
+ // They are "call back" fonctions, called when the corresponding object
+ // is read in dxf file
+ // Depending of the application, they can do something or not
+ virtual void addHeader( const DRW_Header* aData );
+ virtual void addLType( const DRW_LType& aData ) {}
+ virtual void addLayer( const DRW_Layer& aData );
+ virtual void addDimStyle( const DRW_Dimstyle& aData ) {}
+ virtual void addBlock( const DRW_Block& aData ) {}
+ virtual void endBlock() {}
+ virtual void addPoint( const DRW_Point& aData ) {}
+ virtual void addLine( const DRW_Line& aData);
+ virtual void addRay( const DRW_Ray& aData ) {}
+ virtual void addXline( const DRW_Xline& aData ) {}
+ virtual void addCircle( const DRW_Circle& aData );
+ virtual void addArc( const DRW_Arc& aData );
+ virtual void addEllipse( const DRW_Ellipse& aData ) {}
+ virtual void addLWPolyline( const DRW_LWPolyline& aData );
+ virtual void addText( const DRW_Text& aData );
+ virtual void addPolyline( const DRW_Polyline& aData );
+ virtual void addSpline( const DRW_Spline* aData ) {}
+ virtual void addKnot( const DRW_Entity&) {}
+ virtual void addInsert( const DRW_Insert& aData ){}
+ virtual void addTrace( const DRW_Trace& aData ){}
+ virtual void addSolid( const DRW_Solid& aData ){}
+ virtual void addMText( const DRW_MText& aData);
+ virtual void addDimAlign( const DRW_DimAligned* aData ) {}
+ virtual void addDimLinear( const DRW_DimLinear* aData ) {}
+ virtual void addDimRadial( const DRW_DimRadial* aData ) {}
+ virtual void addDimDiametric( const DRW_DimDiametric* aData ) {}
+ virtual void addDimAngular( const DRW_DimAngular* aData ) {}
+ virtual void addDimAngular3P( const DRW_DimAngular3p* aData ) {}
+ virtual void addDimOrdinate( const DRW_DimOrdinate* aData ) {}
+ virtual void addLeader( const DRW_Leader* aData ) {}
+ virtual void addHatch( const DRW_Hatch* aData ) {}
+ virtual void addImage( const DRW_Image* aData ) {}
+ virtual void linkImage( const DRW_ImageDef* aData ) {}
+
+ virtual void add3dFace( const DRW_3Dface& aData ) {}
+ virtual void addComment( const char*) {}
+
+ virtual void addVport( const DRW_Vport& aData ) {}
+
+ virtual void addTextStyle( const DRW_Textstyle& aData );
+
+ virtual void addViewport( const DRW_Viewport& aData ) {}
+
+ virtual void setBlock( const int aHandle ) {}
+
+ /**
+ * Converts a native unicode string into a DXF encoded string.
+ *
+ * DXF endoding includes the following special sequences:
+ * - %%%c for a diameter sign
+ * - %%%d for a degree sign
+ * - %%%p for a plus/minus sign
+ */
+ static wxString toDxfString( const wxString& aStr );
+
+ /**
+ * Converts a DXF encoded string into a native Unicode string.
+ */
+ static wxString toNativeString( const wxString& aData );
+
+ // These functions are not used in Kicad.
+ // But because they are virtual pure in DRW_Interface, they should be defined
+ virtual void writeTextstyles() {}
+ virtual void writeVports() {}
+ virtual void writeHeader( DRW_Header& aData ) {}
+ virtual void writeEntities() {}
+ virtual void writeLTypes() {}
+ virtual void writeLayers() {}
+ virtual void writeBlockRecords() {}
+ virtual void writeBlocks() {}
+ virtual void writeDimstyles() {}
+
+ void writeLine();
+ void writeMtext();
+
+ virtual void addAppId( const DRW_AppId& data ) {}
+ virtual void writeAppId() {}
+};
+
+#endif // FILTERDXFRW_H
diff --git a/pcbnew/import_dxf/examples/basic_ellipses.dxf b/pcbnew/import_dxf/examples/basic_ellipses.dxf
new file mode 100644
index 0000000..8b0bb14
--- /dev/null
+++ b/pcbnew/import_dxf/examples/basic_ellipses.dxf
@@ -0,0 +1,2992 @@
+999
+dxfrw 0.5.13
+0
+SECTION
+2
+HEADER
+9
+$ACADVER
+1
+AC1009
+9
+$DWGCODEPAGE
+3
+ANSI_1252
+9
+$INSBASE
+10
+0
+20
+0
+30
+0
+9
+$EXTMIN
+10
+0
+20
+0
+30
+0
+9
+$EXTMAX
+10
+286.021046008
+20
+141.572897408
+30
+0
+9
+$LIMMIN
+10
+0
+20
+0
+9
+$LIMMAX
+10
+420
+20
+297
+9
+$ORTHOMODE
+70
+0
+9
+$LTSCALE
+40
+1
+9
+$TEXTSTYLE
+7
+STANDARD
+9
+$CLAYER
+8
+0
+9
+$DIMASZ
+40
+2.5
+9
+$DIMLFAC
+40
+1
+9
+$DIMSCALE
+40
+1
+9
+$DIMEXO
+40
+0.625
+9
+$DIMEXE
+40
+1.25
+9
+$DIMTXT
+40
+2.5
+9
+$DIMTSZ
+40
+0
+9
+$DIMUNIT
+70
+2
+9
+$DIMSTYLE
+2
+STANDARD
+9
+$DIMGAP
+40
+0.625
+9
+$DIMTIH
+70
+0
+9
+$LUNITS
+70
+2
+9
+$LUPREC
+70
+4
+9
+$AUNITS
+70
+0
+9
+$AUPREC
+70
+2
+9
+$SNAPSTYLE
+70
+0
+9
+$PLIMMIN
+10
+0
+20
+0
+9
+$PLIMMAX
+10
+841
+20
+594
+0
+ENDSEC
+0
+SECTION
+2
+CLASSES
+0
+ENDSEC
+0
+SECTION
+2
+TABLES
+0
+TABLE
+2
+VPORT
+70
+1
+0
+VPORT
+2
+*ACTIVE
+70
+0
+10
+0
+20
+0
+11
+1
+21
+1
+12
+190.125
+22
+76.75
+13
+0
+23
+0
+14
+10
+24
+10
+15
+10
+25
+10
+16
+0
+26
+0
+36
+1
+17
+0
+27
+0
+37
+0
+40
+166
+41
+2.36596385542
+42
+50
+43
+0
+44
+0
+50
+0
+51
+0
+71
+0
+72
+100
+73
+1
+74
+3
+75
+0
+76
+1
+77
+0
+78
+0
+0
+ENDTAB
+0
+TABLE
+2
+LTYPE
+70
+4
+0
+LTYPE
+2
+BYBLOCK
+70
+0
+3
+
+72
+65
+73
+0
+40
+0
+0
+LTYPE
+2
+BYLAYER
+70
+0
+3
+
+72
+65
+73
+0
+40
+0
+0
+LTYPE
+2
+CONTINUOUS
+70
+0
+3
+Solid line
+72
+65
+73
+0
+40
+0
+0
+LTYPE
+2
+DOT
+70
+0
+3
+Dot . . . . . . . . . . . . . . . . . . . . . .
+72
+65
+73
+2
+40
+6.35
+49
+0
+49
+-6.35
+0
+LTYPE
+2
+DOT2
+70
+0
+3
+Dot (.5x) .....................................
+72
+65
+73
+2
+40
+3.175
+49
+0
+49
+-3.175
+0
+LTYPE
+2
+DOTX2
+70
+0
+3
+Dot (2x) . . . . . . . . . . . . .
+72
+65
+73
+2
+40
+12.7
+49
+0
+49
+-12.7
+0
+LTYPE
+2
+DASHED
+70
+0
+3
+Dot . . . . . . . . . . . . . . . . . . . . . .
+72
+65
+73
+2
+40
+19.05
+49
+12.7
+49
+-6.35
+0
+LTYPE
+2
+DASHED2
+70
+0
+3
+Dashed (.5x) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+72
+65
+73
+2
+40
+9.525
+49
+6.35
+49
+-3.175
+0
+LTYPE
+2
+DASHEDX2
+70
+0
+3
+Dashed (2x) ____ ____ ____ ____ ____ ___
+72
+65
+73
+2
+40
+38.1
+49
+25.4
+49
+-12.7
+0
+LTYPE
+2
+DASHDOT
+70
+0
+3
+Dash dot __ . __ . __ . __ . __ . __ . __ . __
+72
+65
+73
+4
+40
+25.4
+49
+12.7
+49
+-6.35
+49
+0
+49
+-6.35
+0
+LTYPE
+2
+DASHDOT2
+70
+0
+3
+Dash dot (.5x) _._._._._._._._._._._._._._._.
+72
+65
+73
+4
+40
+12.7
+49
+6.35
+49
+-3.175
+49
+0
+49
+-3.175
+0
+LTYPE
+2
+DASHDOTX2
+70
+0
+3
+Dash dot (2x) ____ . ____ . ____ . ___
+72
+65
+73
+4
+40
+50.8
+49
+25.4
+49
+-12.7
+49
+0
+49
+-12.7
+0
+LTYPE
+2
+DIVIDE
+70
+0
+3
+Divide ____ . . ____ . . ____ . . ____ . . ____
+72
+65
+73
+6
+40
+31.75
+49
+12.7
+49
+-6.35
+49
+0
+49
+-6.35
+49
+0
+49
+-6.35
+0
+LTYPE
+2
+DIVIDE2
+70
+0
+3
+Divide (.5x) __..__..__..__..__..__..__..__.._
+72
+65
+73
+6
+40
+15.875
+49
+6.35
+49
+-3.175
+49
+0
+49
+-3.175
+49
+0
+49
+-3.175
+0
+LTYPE
+2
+DIVIDEX2
+70
+0
+3
+Divide (2x) ________ . . ________ . . _
+72
+65
+73
+6
+40
+63.5
+49
+25.4
+49
+-12.7
+49
+0
+49
+-12.7
+49
+0
+49
+-12.7
+0
+LTYPE
+2
+BORDER
+70
+0
+3
+Border __ __ . __ __ . __ __ . __ __ . __ __ .
+72
+65
+73
+6
+40
+44.45
+49
+12.7
+49
+-6.35
+49
+12.7
+49
+-6.35
+49
+0
+49
+-6.35
+0
+LTYPE
+2
+BORDER2
+70
+0
+3
+Border (.5x) __.__.__.__.__.__.__.__.__.__.__.
+72
+65
+73
+6
+40
+22.225
+49
+6.35
+49
+-3.175
+49
+6.35
+49
+-3.175
+49
+0
+49
+-3.175
+0
+LTYPE
+2
+BORDERX2
+70
+0
+3
+Border (2x) ____ ____ . ____ ____ . ___
+72
+65
+73
+6
+40
+88.9
+49
+25.4
+49
+-12.7
+49
+25.4
+49
+-12.7
+49
+0
+49
+-12.7
+0
+LTYPE
+2
+CENTER
+70
+0
+3
+Center ____ _ ____ _ ____ _ ____ _ ____ _ ____
+72
+65
+73
+4
+40
+50.8
+49
+31.75
+49
+-6.35
+49
+6.35
+49
+-6.35
+0
+LTYPE
+2
+CENTER2
+70
+0
+3
+Center (.5x) ___ _ ___ _ ___ _ ___ _ ___ _ ___
+72
+65
+73
+4
+40
+28.575
+49
+19.05
+49
+-3.175
+49
+3.175
+49
+-3.175
+0
+LTYPE
+2
+CENTERX2
+70
+0
+3
+Center (2x) ________ __ ________ __ _____
+72
+65
+73
+4
+40
+101.6
+49
+63.5
+49
+-12.7
+49
+12.7
+49
+-12.7
+0
+ENDTAB
+0
+TABLE
+2
+LAYER
+70
+1
+0
+LAYER
+2
+0
+70
+0
+62
+7
+6
+CONTINUOUS
+0
+ENDTAB
+0
+TABLE
+2
+STYLE
+70
+3
+0
+STYLE
+2
+STANDARD
+70
+0
+40
+0
+41
+1
+50
+0
+71
+0
+42
+1
+3
+TXT
+4
+
+0
+ENDTAB
+0
+TABLE
+2
+VIEW
+70
+0
+0
+ENDTAB
+0
+TABLE
+2
+UCS
+70
+0
+0
+ENDTAB
+0
+TABLE
+2
+APPID
+70
+1
+0
+APPID
+2
+ACAD
+70
+0
+0
+APPID
+2
+LIBRECAD
+70
+0
+0
+ENDTAB
+0
+TABLE
+2
+DIMSTYLE
+70
+1
+0
+DIMSTYLE
+2
+STANDARD
+70
+0
+3
+
+4
+
+5
+
+6
+
+7
+
+40
+1
+41
+2.5
+42
+0.625
+43
+0.38
+44
+1.25
+45
+0
+46
+0
+47
+0
+48
+0
+140
+2.5
+141
+0.09
+142
+0
+143
+25.4
+144
+1
+145
+0
+146
+1
+147
+0.625
+71
+0
+72
+0
+73
+0
+74
+1
+75
+0
+76
+0
+77
+0
+78
+0
+170
+0
+171
+2
+172
+0
+173
+0
+174
+0
+175
+0
+176
+0
+177
+0
+178
+0
+0
+ENDTAB
+0
+ENDSEC
+0
+SECTION
+2
+BLOCKS
+0
+BLOCK
+8
+0
+2
+$MODEL_SPACE
+70
+0
+10
+0
+20
+0
+30
+0
+3
+$MODEL_SPACE
+1
+
+0
+ENDBLK
+8
+0
+0
+BLOCK
+8
+0
+2
+$PAPER_SPACE
+70
+0
+10
+0
+20
+0
+30
+0
+3
+$PAPER_SPACE
+1
+
+0
+ENDBLK
+8
+0
+0
+ENDSEC
+0
+SECTION
+2
+ENTITIES
+0
+POLYLINE
+5
+31
+8
+0
+6
+BYLAYER
+62
+256
+66
+1
+10
+0
+20
+0
+30
+0
+70
+1
+0
+VERTEX
+5
+32
+8
+0
+6
+BYLAYER
+62
+256
+10
+114.5
+20
+76.5
+30
+0
+0
+VERTEX
+5
+33
+8
+0
+6
+BYLAYER
+62
+256
+10
+115.06685415
+20
+74.8221771035
+30
+0
+0
+VERTEX
+5
+34
+8
+0
+6
+BYLAYER
+62
+256
+10
+115.838319688
+20
+73.2044075157
+30
+0
+0
+VERTEX
+5
+35
+8
+0
+6
+BYLAYER
+62
+256
+10
+116.812538085
+20
+71.6505885853
+30
+0
+0
+VERTEX
+5
+36
+8
+0
+6
+BYLAYER
+62
+256
+10
+117.987162364
+20
+70.1644635983
+30
+0
+0
+VERTEX
+5
+37
+8
+0
+6
+BYLAYER
+62
+256
+10
+119.359362753
+20
+68.7496127599
+30
+0
+0
+VERTEX
+5
+38
+8
+0
+6
+BYLAYER
+62
+256
+10
+120.9258335
+20
+67.4094445696
+30
+0
+0
+VERTEX
+5
+39
+8
+0
+6
+BYLAYER
+62
+256
+10
+122.68280084
+20
+66.14718761
+30
+0
+0
+VERTEX
+5
+3A
+8
+0
+6
+BYLAYER
+62
+256
+10
+124.626032085
+20
+64.9658827688
+30
+0
+0
+VERTEX
+5
+3B
+8
+0
+6
+BYLAYER
+62
+256
+10
+126.750845821
+20
+63.8683759127
+30
+0
+0
+VERTEX
+5
+3C
+8
+0
+6
+BYLAYER
+62
+256
+10
+129.052123185
+20
+62.8573110318
+30
+0
+0
+VERTEX
+5
+3D
+8
+0
+6
+BYLAYER
+62
+256
+10
+131.524320199
+20
+61.9351238702
+30
+0
+0
+VERTEX
+5
+3E
+8
+0
+6
+BYLAYER
+62
+256
+10
+134.161481123
+20
+61.1040360573
+30
+0
+0
+VERTEX
+5
+3F
+8
+0
+6
+BYLAYER
+62
+256
+10
+136.957252806
+20
+60.3660497565
+30
+0
+0
+VERTEX
+5
+40
+8
+0
+6
+BYLAYER
+62
+256
+10
+139.904899989
+20
+59.7229428415
+30
+0
+0
+VERTEX
+5
+41
+8
+0
+6
+BYLAYER
+62
+256
+10
+142.997321531
+20
+59.1762646132
+30
+0
+0
+VERTEX
+5
+42
+8
+0
+6
+BYLAYER
+62
+256
+10
+146.227067519
+20
+58.7273320672
+30
+0
+0
+VERTEX
+5
+43
+8
+0
+6
+BYLAYER
+62
+256
+10
+149.586357211
+20
+58.3772267214
+30
+0
+0
+VERTEX
+5
+44
+8
+0
+6
+BYLAYER
+62
+256
+10
+153.067097784
+20
+58.1267920103
+30
+0
+0
+VERTEX
+5
+45
+8
+0
+6
+BYLAYER
+62
+256
+10
+156.660903829
+20
+57.9766312531
+30
+0
+0
+VERTEX
+5
+46
+8
+0
+6
+BYLAYER
+62
+256
+10
+160.359117554
+20
+57.9271062
+30
+0
+0
+VERTEX
+5
+47
+8
+0
+6
+BYLAYER
+62
+256
+10
+164.152829636
+20
+57.9783361613
+30
+0
+0
+VERTEX
+5
+48
+8
+0
+6
+BYLAYER
+62
+256
+10
+168.032900691
+20
+58.1301977196
+30
+0
+0
+VERTEX
+5
+49
+8
+0
+6
+BYLAYER
+62
+256
+10
+171.989983289
+20
+58.3823250271
+30
+0
+0
+VERTEX
+5
+4A
+8
+0
+6
+BYLAYER
+62
+256
+10
+176.01454447
+20
+58.734110687
+30
+0
+0
+VERTEX
+5
+4B
+8
+0
+6
+BYLAYER
+62
+256
+10
+180.096888714
+20
+59.1847072167
+30
+0
+0
+VERTEX
+5
+4C
+8
+0
+6
+BYLAYER
+62
+256
+10
+184.227181297
+20
+59.7330290899
+30
+0
+0
+VERTEX
+5
+4D
+8
+0
+6
+BYLAYER
+62
+256
+10
+188.395471982
+20
+60.3777553511
+30
+0
+0
+VERTEX
+5
+4E
+8
+0
+6
+BYLAYER
+62
+256
+10
+192.591718991
+20
+61.1173327983
+30
+0
+0
+VERTEX
+5
+4F
+8
+0
+6
+BYLAYER
+62
+256
+10
+196.805813198
+20
+61.9499797245
+30
+0
+0
+VERTEX
+5
+50
+8
+0
+6
+BYLAYER
+62
+256
+10
+201.027602481
+20
+62.8736902105
+30
+0
+0
+VERTEX
+5
+51
+8
+0
+6
+BYLAYER
+62
+256
+10
+205.246916179
+20
+63.8862389568
+30
+0
+0
+VERTEX
+5
+52
+8
+0
+6
+BYLAYER
+62
+256
+10
+209.453589597
+20
+64.9851866447
+30
+0
+0
+VERTEX
+5
+53
+8
+0
+6
+BYLAYER
+62
+256
+10
+213.637488489
+20
+66.167885813
+30
+0
+0
+VERTEX
+5
+54
+8
+0
+6
+BYLAYER
+62
+256
+10
+217.788533477
+20
+67.4314872359
+30
+0
+0
+VERTEX
+5
+55
+8
+0
+6
+BYLAYER
+62
+256
+10
+221.89672433
+20
+68.7729467867
+30
+0
+0
+VERTEX
+5
+56
+8
+0
+6
+BYLAYER
+62
+256
+10
+225.952164056
+20
+70.189032772
+30
+0
+0
+VERTEX
+5
+57
+8
+0
+6
+BYLAYER
+62
+256
+10
+229.945082745
+20
+71.6763337166
+30
+0
+0
+VERTEX
+5
+58
+8
+0
+6
+BYLAYER
+62
+256
+10
+233.865861108
+20
+73.2312665823
+30
+0
+0
+VERTEX
+5
+59
+8
+0
+6
+BYLAYER
+62
+256
+10
+237.705053644
+20
+74.8500853995
+30
+0
+0
+VERTEX
+5
+5A
+8
+0
+6
+BYLAYER
+62
+256
+10
+241.453411404
+20
+76.5288902919
+30
+0
+0
+VERTEX
+5
+5B
+8
+0
+6
+BYLAYER
+62
+256
+10
+245.101904265
+20
+78.2636368716
+30
+0
+0
+VERTEX
+5
+5C
+8
+0
+6
+BYLAYER
+62
+256
+10
+248.641742688
+20
+80.0501459821
+30
+0
+0
+VERTEX
+5
+5D
+8
+0
+6
+BYLAYER
+62
+256
+10
+252.064398893
+20
+81.8841137663
+30
+0
+0
+VERTEX
+5
+5E
+8
+0
+6
+BYLAYER
+62
+256
+10
+255.3616274
+20
+83.7611220354
+30
+0
+0
+VERTEX
+5
+5F
+8
+0
+6
+BYLAYER
+62
+256
+10
+258.525484898
+20
+85.6766489119
+30
+0
+0
+VERTEX
+5
+60
+8
+0
+6
+BYLAYER
+62
+256
+10
+261.548349376
+20
+87.6260797239
+30
+0
+0
+VERTEX
+5
+61
+8
+0
+6
+BYLAYER
+62
+256
+10
+264.42293849
+20
+89.6047181218
+30
+0
+0
+VERTEX
+5
+62
+8
+0
+6
+BYLAYER
+62
+256
+10
+267.142327102
+20
+91.6077973924
+30
+0
+0
+VERTEX
+5
+63
+8
+0
+6
+BYLAYER
+62
+256
+10
+269.699963967
+20
+93.6304919422
+30
+0
+0
+VERTEX
+5
+64
+8
+0
+6
+BYLAYER
+62
+256
+10
+272.089687514
+20
+95.6679289229
+30
+0
+0
+VERTEX
+5
+65
+8
+0
+6
+BYLAYER
+62
+256
+10
+274.305740689
+20
+97.7151999704
+30
+0
+0
+VERTEX
+5
+66
+8
+0
+6
+BYLAYER
+62
+256
+10
+276.342784827
+20
+99.7673730293
+30
+0
+0
+VERTEX
+5
+67
+8
+0
+6
+BYLAYER
+62
+256
+10
+278.195912509
+20
+101.819504235
+30
+0
+0
+VERTEX
+5
+68
+8
+0
+6
+BYLAYER
+62
+256
+10
+279.860659389
+20
+103.866649824
+30
+0
+0
+VERTEX
+5
+69
+8
+0
+6
+BYLAYER
+62
+256
+10
+281.333014945
+20
+105.903878043
+30
+0
+0
+VERTEX
+5
+6A
+8
+0
+6
+BYLAYER
+62
+256
+10
+282.609432145
+20
+107.926281031
+30
+0
+0
+VERTEX
+5
+6B
+8
+0
+6
+BYLAYER
+62
+256
+10
+283.686835986
+20
+109.928986641
+30
+0
+0
+VERTEX
+5
+6C
+8
+0
+6
+BYLAYER
+62
+256
+10
+284.56263091
+20
+111.907170181
+30
+0
+0
+VERTEX
+5
+6D
+8
+0
+6
+BYLAYER
+62
+256
+10
+285.234707049
+20
+113.856066033
+30
+0
+0
+VERTEX
+5
+6E
+8
+0
+6
+BYLAYER
+62
+256
+10
+285.701445313
+20
+115.770979137
+30
+0
+0
+VERTEX
+5
+6F
+8
+0
+6
+BYLAYER
+62
+256
+10
+285.961721289
+20
+117.647296299
+30
+0
+0
+VERTEX
+5
+70
+8
+0
+6
+BYLAYER
+62
+256
+10
+286.014907949
+20
+119.480497306
+30
+0
+0
+VERTEX
+5
+71
+8
+0
+6
+BYLAYER
+62
+256
+10
+285.860877161
+20
+121.266165817
+30
+0
+0
+VERTEX
+5
+72
+8
+0
+6
+BYLAYER
+62
+256
+10
+285.5
+20
+123
+30
+0
+0
+VERTEX
+5
+73
+8
+0
+6
+BYLAYER
+62
+256
+10
+284.93314585
+20
+124.677822897
+30
+0
+0
+VERTEX
+5
+74
+8
+0
+6
+BYLAYER
+62
+256
+10
+284.161680312
+20
+126.295592484
+30
+0
+0
+VERTEX
+5
+75
+8
+0
+6
+BYLAYER
+62
+256
+10
+283.187461915
+20
+127.849411415
+30
+0
+0
+VERTEX
+5
+76
+8
+0
+6
+BYLAYER
+62
+256
+10
+282.012837636
+20
+129.335536402
+30
+0
+0
+VERTEX
+5
+77
+8
+0
+6
+BYLAYER
+62
+256
+10
+280.640637247
+20
+130.75038724
+30
+0
+0
+VERTEX
+5
+78
+8
+0
+6
+BYLAYER
+62
+256
+10
+279.0741665
+20
+132.09055543
+30
+0
+0
+VERTEX
+5
+79
+8
+0
+6
+BYLAYER
+62
+256
+10
+277.31719916
+20
+133.35281239
+30
+0
+0
+VERTEX
+5
+7A
+8
+0
+6
+BYLAYER
+62
+256
+10
+275.373967915
+20
+134.534117231
+30
+0
+0
+VERTEX
+5
+7B
+8
+0
+6
+BYLAYER
+62
+256
+10
+273.249154179
+20
+135.631624087
+30
+0
+0
+VERTEX
+5
+7C
+8
+0
+6
+BYLAYER
+62
+256
+10
+270.947876815
+20
+136.642688968
+30
+0
+0
+VERTEX
+5
+7D
+8
+0
+6
+BYLAYER
+62
+256
+10
+268.475679801
+20
+137.56487613
+30
+0
+0
+VERTEX
+5
+7E
+8
+0
+6
+BYLAYER
+62
+256
+10
+265.838518877
+20
+138.395963943
+30
+0
+0
+VERTEX
+5
+7F
+8
+0
+6
+BYLAYER
+62
+256
+10
+263.042747194
+20
+139.133950243
+30
+0
+0
+VERTEX
+5
+80
+8
+0
+6
+BYLAYER
+62
+256
+10
+260.095100011
+20
+139.777057158
+30
+0
+0
+VERTEX
+5
+81
+8
+0
+6
+BYLAYER
+62
+256
+10
+257.002678469
+20
+140.323735387
+30
+0
+0
+VERTEX
+5
+82
+8
+0
+6
+BYLAYER
+62
+256
+10
+253.772932481
+20
+140.772667933
+30
+0
+0
+VERTEX
+5
+83
+8
+0
+6
+BYLAYER
+62
+256
+10
+250.413642789
+20
+141.122773279
+30
+0
+0
+VERTEX
+5
+84
+8
+0
+6
+BYLAYER
+62
+256
+10
+246.932902216
+20
+141.37320799
+30
+0
+0
+VERTEX
+5
+85
+8
+0
+6
+BYLAYER
+62
+256
+10
+243.339096171
+20
+141.523368747
+30
+0
+0
+VERTEX
+5
+86
+8
+0
+6
+BYLAYER
+62
+256
+10
+239.640882446
+20
+141.5728938
+30
+0
+0
+VERTEX
+5
+87
+8
+0
+6
+BYLAYER
+62
+256
+10
+235.847170364
+20
+141.521663839
+30
+0
+0
+VERTEX
+5
+88
+8
+0
+6
+BYLAYER
+62
+256
+10
+231.967099309
+20
+141.36980228
+30
+0
+0
+VERTEX
+5
+89
+8
+0
+6
+BYLAYER
+62
+256
+10
+228.010016711
+20
+141.117674973
+30
+0
+0
+VERTEX
+5
+8A
+8
+0
+6
+BYLAYER
+62
+256
+10
+223.98545553
+20
+140.765889313
+30
+0
+0
+VERTEX
+5
+8B
+8
+0
+6
+BYLAYER
+62
+256
+10
+219.903111286
+20
+140.315292783
+30
+0
+0
+VERTEX
+5
+8C
+8
+0
+6
+BYLAYER
+62
+256
+10
+215.772818703
+20
+139.76697091
+30
+0
+0
+VERTEX
+5
+8D
+8
+0
+6
+BYLAYER
+62
+256
+10
+211.604528018
+20
+139.122244649
+30
+0
+0
+VERTEX
+5
+8E
+8
+0
+6
+BYLAYER
+62
+256
+10
+207.408281009
+20
+138.382667202
+30
+0
+0
+VERTEX
+5
+8F
+8
+0
+6
+BYLAYER
+62
+256
+10
+203.194186802
+20
+137.550020275
+30
+0
+0
+VERTEX
+5
+90
+8
+0
+6
+BYLAYER
+62
+256
+10
+198.972397519
+20
+136.626309789
+30
+0
+0
+VERTEX
+5
+91
+8
+0
+6
+BYLAYER
+62
+256
+10
+194.753083821
+20
+135.613761043
+30
+0
+0
+VERTEX
+5
+92
+8
+0
+6
+BYLAYER
+62
+256
+10
+190.546410403
+20
+134.514813355
+30
+0
+0
+VERTEX
+5
+93
+8
+0
+6
+BYLAYER
+62
+256
+10
+186.362511511
+20
+133.332114187
+30
+0
+0
+VERTEX
+5
+94
+8
+0
+6
+BYLAYER
+62
+256
+10
+182.211466523
+20
+132.068512764
+30
+0
+0
+VERTEX
+5
+95
+8
+0
+6
+BYLAYER
+62
+256
+10
+178.10327567
+20
+130.727053213
+30
+0
+0
+VERTEX
+5
+96
+8
+0
+6
+BYLAYER
+62
+256
+10
+174.047835944
+20
+129.310967228
+30
+0
+0
+VERTEX
+5
+97
+8
+0
+6
+BYLAYER
+62
+256
+10
+170.054917255
+20
+127.823666283
+30
+0
+0
+VERTEX
+5
+98
+8
+0
+6
+BYLAYER
+62
+256
+10
+166.134138892
+20
+126.268733418
+30
+0
+0
+VERTEX
+5
+99
+8
+0
+6
+BYLAYER
+62
+256
+10
+162.294946356
+20
+124.649914601
+30
+0
+0
+VERTEX
+5
+9A
+8
+0
+6
+BYLAYER
+62
+256
+10
+158.546588596
+20
+122.971109708
+30
+0
+0
+VERTEX
+5
+9B
+8
+0
+6
+BYLAYER
+62
+256
+10
+154.898095735
+20
+121.236363128
+30
+0
+0
+VERTEX
+5
+9C
+8
+0
+6
+BYLAYER
+62
+256
+10
+151.358257312
+20
+119.449854018
+30
+0
+0
+VERTEX
+5
+9D
+8
+0
+6
+BYLAYER
+62
+256
+10
+147.935601107
+20
+117.615886234
+30
+0
+0
+VERTEX
+5
+9E
+8
+0
+6
+BYLAYER
+62
+256
+10
+144.6383726
+20
+115.738877965
+30
+0
+0
+VERTEX
+5
+9F
+8
+0
+6
+BYLAYER
+62
+256
+10
+141.474515102
+20
+113.823351088
+30
+0
+0
+VERTEX
+5
+A0
+8
+0
+6
+BYLAYER
+62
+256
+10
+138.451650624
+20
+111.873920276
+30
+0
+0
+VERTEX
+5
+A1
+8
+0
+6
+BYLAYER
+62
+256
+10
+135.57706151
+20
+109.895281878
+30
+0
+0
+VERTEX
+5
+A2
+8
+0
+6
+BYLAYER
+62
+256
+10
+132.857672898
+20
+107.892202608
+30
+0
+0
+VERTEX
+5
+A3
+8
+0
+6
+BYLAYER
+62
+256
+10
+130.300036033
+20
+105.869508058
+30
+0
+0
+VERTEX
+5
+A4
+8
+0
+6
+BYLAYER
+62
+256
+10
+127.910312486
+20
+103.832071077
+30
+0
+0
+VERTEX
+5
+A5
+8
+0
+6
+BYLAYER
+62
+256
+10
+125.694259311
+20
+101.78480003
+30
+0
+0
+VERTEX
+5
+A6
+8
+0
+6
+BYLAYER
+62
+256
+10
+123.657215173
+20
+99.7326269707
+30
+0
+0
+VERTEX
+5
+A7
+8
+0
+6
+BYLAYER
+62
+256
+10
+121.804087491
+20
+97.6804957648
+30
+0
+0
+VERTEX
+5
+A8
+8
+0
+6
+BYLAYER
+62
+256
+10
+120.139340611
+20
+95.633350176
+30
+0
+0
+VERTEX
+5
+A9
+8
+0
+6
+BYLAYER
+62
+256
+10
+118.666985055
+20
+93.5961219571
+30
+0
+0
+VERTEX
+5
+AA
+8
+0
+6
+BYLAYER
+62
+256
+10
+117.390567855
+20
+91.5737189695
+30
+0
+0
+VERTEX
+5
+AB
+8
+0
+6
+BYLAYER
+62
+256
+10
+116.313164014
+20
+89.571013359
+30
+0
+0
+VERTEX
+5
+AC
+8
+0
+6
+BYLAYER
+62
+256
+10
+115.43736909
+20
+87.5928298189
+30
+0
+0
+VERTEX
+5
+AD
+8
+0
+6
+BYLAYER
+62
+256
+10
+114.765292951
+20
+85.6439339666
+30
+0
+0
+VERTEX
+5
+AE
+8
+0
+6
+BYLAYER
+62
+256
+10
+114.298554687
+20
+83.7290208629
+30
+0
+0
+VERTEX
+5
+AF
+8
+0
+6
+BYLAYER
+62
+256
+10
+114.038278711
+20
+81.8527037013
+30
+0
+0
+VERTEX
+5
+B0
+8
+0
+6
+BYLAYER
+62
+256
+10
+113.985092051
+20
+80.019502694
+30
+0
+0
+VERTEX
+5
+B1
+8
+0
+6
+BYLAYER
+62
+256
+10
+114.139122839
+20
+78.233834183
+30
+0
+0
+SEQEND
+5
+B2
+8
+0
+6
+BYLAYER
+62
+256
+0
+ENDSEC
+0
+EOF
diff --git a/pcbnew/import_dxf/examples/test_outlines.dxf b/pcbnew/import_dxf/examples/test_outlines.dxf
new file mode 100644
index 0000000..c5448b1
--- /dev/null
+++ b/pcbnew/import_dxf/examples/test_outlines.dxf
@@ -0,0 +1,7264 @@
+999
+dxfrw 0.5.10
+0
+SECTION
+2
+HEADER
+9
+$ACADVER
+1
+AC1021
+9
+$HANDSEED
+5
+20000
+9
+$DWGCODEPAGE
+3
+ANSI_1252
+9
+$INSBASE
+10
+0
+20
+0
+30
+0
+9
+$EXTMIN
+10
+8.01510349296
+20
+22.3703927791
+30
+0
+9
+$EXTMAX
+10
+160.415103493
+20
+173.677807569
+30
+0
+9
+$LIMMIN
+10
+0
+20
+0
+9
+$LIMMAX
+10
+210
+20
+297
+9
+$ORTHOMODE
+70
+0
+9
+$LTSCALE
+40
+1
+9
+$TEXTSTYLE
+7
+Standard
+9
+$DIMASZ
+40
+1.8
+9
+$DIMSCALE
+40
+1
+9
+$DIMEXO
+40
+0.0625
+9
+$DIMEXE
+40
+0.18
+9
+$DIMTXT
+40
+0.25
+9
+$DIMTSZ
+40
+0
+9
+$DIMAUNIT
+70
+0
+9
+$DIMADEC
+70
+0
+9
+$DIMLUNIT
+70
+2
+9
+$DIMSTYLE
+2
+Standard
+9
+$DIMGAP
+40
+0.09
+9
+$DIMTIH
+70
+1
+9
+$LUNITS
+70
+2
+9
+$LUPREC
+70
+4
+9
+$AUNITS
+70
+0
+9
+$AUPREC
+70
+0
+9
+$SPLINESEGS
+70
+8
+9
+$GRIDMODE
+70
+0
+9
+$SNAPSTYLE
+70
+0
+9
+$PINSBASE
+10
+0
+20
+0
+30
+0
+9
+$PLIMMIN
+10
+0
+20
+0
+9
+$PLIMMAX
+10
+210
+20
+297
+9
+$INSUNITS
+70
+4
+9
+$PSVPSCALE
+40
+0
+0
+ENDSEC
+0
+SECTION
+2
+CLASSES
+0
+ENDSEC
+0
+SECTION
+2
+TABLES
+0
+TABLE
+2
+VPORT
+5
+8
+330
+0
+100
+AcDbSymbolTable
+70
+1
+0
+VPORT
+5
+31
+330
+2
+100
+AcDbSymbolTableRecord
+100
+AcDbViewportTableRecord
+2
+*ACTIVE
+70
+0
+10
+0
+20
+0
+11
+1
+21
+1
+12
+103.477837818
+22
+82.10741479
+13
+0
+23
+0
+14
+10
+24
+10
+15
+10
+25
+10
+16
+0
+26
+0
+36
+1
+17
+0
+27
+0
+37
+0
+40
+368.920987002
+41
+0.976829268293
+42
+50
+43
+0
+44
+0
+50
+0
+51
+0
+71
+0
+72
+100
+73
+1
+74
+3
+75
+0
+76
+0
+77
+0
+78
+0
+281
+0
+65
+1
+110
+0
+120
+0
+130
+0
+111
+1
+121
+0
+131
+0
+112
+0
+122
+1
+132
+0
+79
+0
+146
+0
+348
+10020
+60
+7
+61
+5
+292
+1
+282
+1
+141
+0
+142
+0
+63
+250
+421
+3358443
+0
+ENDTAB
+0
+TABLE
+2
+LTYPE
+5
+5
+330
+0
+100
+AcDbSymbolTable
+70
+4
+0
+LTYPE
+5
+14
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+ByBlock
+70
+0
+3
+
+72
+65
+73
+0
+40
+0
+0
+LTYPE
+5
+15
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+ByLayer
+70
+0
+3
+
+72
+65
+73
+0
+40
+0
+0
+LTYPE
+5
+16
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+Continuous
+70
+0
+3
+Solid line
+72
+65
+73
+0
+40
+0
+0
+LTYPE
+5
+32
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+DOT
+70
+0
+3
+Dot . . . . . . . . . . . . . . . . . . . . . .
+72
+65
+73
+2
+40
+6.35
+49
+0
+74
+0
+49
+-6.35
+74
+0
+0
+LTYPE
+5
+33
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+DOT2
+70
+0
+3
+Dot (.5x) .....................................
+72
+65
+73
+2
+40
+3.175
+49
+0
+74
+0
+49
+-3.175
+74
+0
+0
+LTYPE
+5
+34
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+DOTX2
+70
+0
+3
+Dot (2x) . . . . . . . . . . . . .
+72
+65
+73
+2
+40
+12.7
+49
+0
+74
+0
+49
+-12.7
+74
+0
+0
+LTYPE
+5
+35
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+DASHED
+70
+0
+3
+Dot . . . . . . . . . . . . . . . . . . . . . .
+72
+65
+73
+2
+40
+19.05
+49
+12.7
+74
+0
+49
+-6.35
+74
+0
+0
+LTYPE
+5
+36
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+DASHED2
+70
+0
+3
+Dashed (.5x) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+72
+65
+73
+2
+40
+9.525
+49
+6.35
+74
+0
+49
+-3.175
+74
+0
+0
+LTYPE
+5
+37
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+DASHEDX2
+70
+0
+3
+Dashed (2x) ____ ____ ____ ____ ____ ___
+72
+65
+73
+2
+40
+38.1
+49
+25.4
+74
+0
+49
+-12.7
+74
+0
+0
+LTYPE
+5
+38
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+DASHDOT
+70
+0
+3
+Dash dot __ . __ . __ . __ . __ . __ . __ . __
+72
+65
+73
+4
+40
+25.4
+49
+12.7
+74
+0
+49
+-6.35
+74
+0
+49
+0
+74
+0
+49
+-6.35
+74
+0
+0
+LTYPE
+5
+39
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+DASHDOT2
+70
+0
+3
+Dash dot (.5x) _._._._._._._._._._._._._._._.
+72
+65
+73
+4
+40
+12.7
+49
+6.35
+74
+0
+49
+-3.175
+74
+0
+49
+0
+74
+0
+49
+-3.175
+74
+0
+0
+LTYPE
+5
+3A
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+DASHDOTX2
+70
+0
+3
+Dash dot (2x) ____ . ____ . ____ . ___
+72
+65
+73
+4
+40
+50.8
+49
+25.4
+74
+0
+49
+-12.7
+74
+0
+49
+0
+74
+0
+49
+-12.7
+74
+0
+0
+LTYPE
+5
+3B
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+DIVIDE
+70
+0
+3
+Divide ____ . . ____ . . ____ . . ____ . . ____
+72
+65
+73
+6
+40
+31.75
+49
+12.7
+74
+0
+49
+-6.35
+74
+0
+49
+0
+74
+0
+49
+-6.35
+74
+0
+49
+0
+74
+0
+49
+-6.35
+74
+0
+0
+LTYPE
+5
+3C
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+DIVIDE2
+70
+0
+3
+Divide (.5x) __..__..__..__..__..__..__..__.._
+72
+65
+73
+6
+40
+15.875
+49
+6.35
+74
+0
+49
+-3.175
+74
+0
+49
+0
+74
+0
+49
+-3.175
+74
+0
+49
+0
+74
+0
+49
+-3.175
+74
+0
+0
+LTYPE
+5
+3D
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+DIVIDEX2
+70
+0
+3
+Divide (2x) ________ . . ________ . . _
+72
+65
+73
+6
+40
+63.5
+49
+25.4
+74
+0
+49
+-12.7
+74
+0
+49
+0
+74
+0
+49
+-12.7
+74
+0
+49
+0
+74
+0
+49
+-12.7
+74
+0
+0
+LTYPE
+5
+3E
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+BORDER
+70
+0
+3
+Border __ __ . __ __ . __ __ . __ __ . __ __ .
+72
+65
+73
+6
+40
+44.45
+49
+12.7
+74
+0
+49
+-6.35
+74
+0
+49
+12.7
+74
+0
+49
+-6.35
+74
+0
+49
+0
+74
+0
+49
+-6.35
+74
+0
+0
+LTYPE
+5
+3F
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+BORDER2
+70
+0
+3
+Border (.5x) __.__.__.__.__.__.__.__.__.__.__.
+72
+65
+73
+6
+40
+22.225
+49
+6.35
+74
+0
+49
+-3.175
+74
+0
+49
+6.35
+74
+0
+49
+-3.175
+74
+0
+49
+0
+74
+0
+49
+-3.175
+74
+0
+0
+LTYPE
+5
+40
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+BORDERX2
+70
+0
+3
+Border (2x) ____ ____ . ____ ____ . ___
+72
+65
+73
+6
+40
+88.9
+49
+25.4
+74
+0
+49
+-12.7
+74
+0
+49
+25.4
+74
+0
+49
+-12.7
+74
+0
+49
+0
+74
+0
+49
+-12.7
+74
+0
+0
+LTYPE
+5
+41
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+CENTER
+70
+0
+3
+Center ____ _ ____ _ ____ _ ____ _ ____ _ ____
+72
+65
+73
+4
+40
+50.8
+49
+31.75
+74
+0
+49
+-6.35
+74
+0
+49
+6.35
+74
+0
+49
+-6.35
+74
+0
+0
+LTYPE
+5
+42
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+CENTER2
+70
+0
+3
+Center (.5x) ___ _ ___ _ ___ _ ___ _ ___ _ ___
+72
+65
+73
+4
+40
+28.575
+49
+19.05
+74
+0
+49
+-3.175
+74
+0
+49
+3.175
+74
+0
+49
+-3.175
+74
+0
+0
+LTYPE
+5
+43
+330
+5
+100
+AcDbSymbolTableRecord
+100
+AcDbLinetypeTableRecord
+2
+CENTERX2
+70
+0
+3
+Center (2x) ________ __ ________ __ _____
+72
+65
+73
+4
+40
+101.6
+49
+63.5
+74
+0
+49
+-12.7
+74
+0
+49
+12.7
+74
+0
+49
+-12.7
+74
+0
+0
+ENDTAB
+0
+TABLE
+2
+LAYER
+5
+2
+330
+0
+100
+AcDbSymbolTable
+70
+1
+0
+LAYER
+5
+10
+330
+2
+100
+AcDbSymbolTableRecord
+100
+AcDbLayerTableRecord
+2
+0
+70
+0
+62
+7
+6
+CONTINUOUS
+370
+-3
+390
+F
+0
+LAYER
+5
+44
+330
+2
+100
+AcDbSymbolTableRecord
+100
+AcDbLayerTableRecord
+2
+Visible Edges(PEC)
+70
+0
+62
+7
+6
+CONTINUOUS
+370
+50
+390
+F
+0
+ENDTAB
+0
+TABLE
+2
+STYLE
+5
+3
+330
+0
+100
+AcDbSymbolTable
+70
+3
+0
+STYLE
+5
+45
+330
+2
+100
+AcDbSymbolTableRecord
+100
+AcDbTextStyleTableRecord
+2
+Standard
+70
+0
+40
+0
+41
+1
+50
+0
+71
+0
+42
+1
+3
+txt
+4
+
+0
+ENDTAB
+0
+TABLE
+2
+VIEW
+5
+6
+330
+0
+100
+AcDbSymbolTable
+70
+0
+0
+ENDTAB
+0
+TABLE
+2
+UCS
+5
+7
+330
+0
+100
+AcDbSymbolTable
+70
+0
+0
+ENDTAB
+0
+TABLE
+2
+APPID
+5
+9
+330
+0
+100
+AcDbSymbolTable
+70
+1
+0
+APPID
+5
+12
+330
+9
+100
+AcDbSymbolTableRecord
+100
+AcDbRegAppTableRecord
+2
+ACAD
+70
+0
+0
+ENDTAB
+0
+TABLE
+2
+DIMSTYLE
+5
+A
+330
+0
+100
+AcDbSymbolTable
+70
+1
+100
+AcDbDimStyleTable
+71
+1
+0
+DIMSTYLE
+105
+46
+330
+A
+100
+AcDbSymbolTableRecord
+100
+AcDbDimStyleTableRecord
+2
+Standard
+70
+0
+40
+1
+41
+1.8
+42
+0.0625
+43
+0.38
+44
+0.18
+45
+0
+46
+0
+47
+0
+48
+0
+140
+0.25
+141
+0.09
+142
+0
+143
+25.4
+144
+1
+145
+0
+146
+1
+147
+0.09
+148
+0
+71
+0
+72
+0
+73
+0
+74
+1
+75
+0
+76
+0
+77
+0
+78
+0
+79
+0
+170
+0
+171
+2
+172
+0
+173
+0
+174
+0
+175
+0
+176
+0
+177
+0
+178
+0
+179
+0
+271
+4
+272
+4
+273
+2
+274
+2
+275
+0
+276
+0
+277
+2
+278
+46
+279
+0
+280
+0
+281
+0
+282
+0
+283
+1
+284
+0
+285
+0
+286
+0
+288
+0
+289
+3
+340
+Standard
+341
+
+371
+-2
+372
+-2
+0
+ENDTAB
+0
+TABLE
+2
+BLOCK_RECORD
+5
+1
+330
+0
+100
+AcDbSymbolTable
+70
+2
+0
+BLOCK_RECORD
+5
+1F
+330
+1
+100
+AcDbSymbolTableRecord
+100
+AcDbBlockTableRecord
+2
+*Model_Space
+70
+0
+280
+1
+281
+0
+0
+BLOCK_RECORD
+5
+1E
+330
+1
+100
+AcDbSymbolTableRecord
+100
+AcDbBlockTableRecord
+2
+*Paper_Space
+70
+0
+280
+1
+281
+0
+0
+ENDTAB
+0
+ENDSEC
+0
+SECTION
+2
+BLOCKS
+0
+BLOCK
+5
+20
+330
+1F
+100
+AcDbEntity
+8
+0
+100
+AcDbBlockBegin
+2
+*Model_Space
+70
+0
+10
+0
+20
+0
+30
+0
+3
+*Model_Space
+1
+
+0
+ENDBLK
+5
+21
+330
+1F
+100
+AcDbEntity
+8
+0
+100
+AcDbBlockEnd
+0
+BLOCK
+5
+1C
+330
+1B
+100
+AcDbEntity
+8
+0
+100
+AcDbBlockBegin
+2
+*Paper_Space
+70
+0
+10
+0
+20
+0
+30
+0
+3
+*Paper_Space
+1
+
+0
+ENDBLK
+5
+1D
+330
+1F
+100
+AcDbEntity
+8
+0
+100
+AcDbBlockEnd
+0
+ENDSEC
+0
+SECTION
+2
+ENTITIES
+0
+LINE
+5
+47
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+54.0015095768
+20
+145.07427149
+11
+57.9407405889
+21
+144.379678779
+0
+LINE
+5
+48
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+57.9407405889
+20
+144.379678779
+11
+55.9264217279
+21
+132.955908844
+0
+LINE
+5
+49
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+55.9264217279
+20
+132.955908844
+11
+51.9871907159
+21
+133.650501555
+0
+CIRCLE
+5
+4A
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+76.6151034931
+20
+128.870392779
+40
+2
+0
+CIRCLE
+5
+4B
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+62.3755750957
+20
+142.867767753
+40
+1.6
+0
+CIRCLE
+5
+4C
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+60.6112785469
+20
+132.861944812
+40
+1.6
+0
+CIRCLE
+5
+4D
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+76.9279747741
+20
+141.354399538
+40
+1.1
+0
+CIRCLE
+5
+4E
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+28.165103493
+20
+25.4703927791
+40
+0.7
+0
+CIRCLE
+5
+4F
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+44.265103493
+20
+25.4703927791
+40
+0.7
+0
+CIRCLE
+5
+50
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+36.965103493
+20
+25.4703927791
+40
+0.7
+0
+ARC
+5
+51
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+78.5610437151
+20
+131.847953136
+40
+0.4
+100
+AcDbArc
+50
+85.34
+51
+265.34
+0
+LINE
+5
+52
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+78.5935407971
+20
+132.246630875
+11
+79.4905657101
+21
+132.173512441
+0
+ARC
+5
+53
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+79.4580686281
+20
+131.774834702
+40
+0.4
+100
+AcDbArc
+50
+265.34
+51
+85.34
+0
+LINE
+5
+54
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+79.4255715461
+20
+131.376156963
+11
+78.5285466331
+21
+131.449275397
+0
+LINE
+5
+55
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+79.1866125401
+20
+139.522499614
+11
+80.0836374531
+21
+139.44938118
+0
+ARC
+5
+56
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+80.0511403711
+20
+139.050703441
+40
+0.4
+100
+AcDbArc
+50
+265.34
+51
+85.34
+0
+LINE
+5
+57
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+80.0186432901
+20
+138.652025702
+11
+79.1216183771
+21
+138.725144136
+0
+ARC
+5
+58
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+79.1541154581
+20
+139.123821875
+40
+0.4
+100
+AcDbArc
+50
+85.34
+51
+265.34
+0
+ARC
+5
+59
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+73.8716354151
+20
+139.554408209
+40
+0.4
+100
+AcDbArc
+50
+85.34
+51
+265.34
+0
+LINE
+5
+5A
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+73.9041324969
+20
+139.953085949
+11
+74.8011574099
+21
+139.879967514
+0
+ARC
+5
+5B
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+74.7686603281
+20
+139.481289775
+40
+0.4
+100
+AcDbArc
+50
+265.34
+51
+85.34
+0
+LINE
+5
+5C
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+74.7361632463
+20
+139.082612036
+11
+73.8391383333
+21
+139.15573047
+0
+ARC
+5
+5D
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+73.2785636718
+20
+132.27853947
+40
+0.4
+100
+AcDbArc
+50
+85.34
+51
+265.34
+0
+LINE
+5
+5E
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+73.3110607536
+20
+132.67721721
+11
+74.2080856666
+21
+132.604098775
+0
+ARC
+5
+5F
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+74.1755885848
+20
+132.205421036
+40
+0.4
+100
+AcDbArc
+50
+265.34
+51
+85.34
+0
+LINE
+5
+60
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+74.143091503
+20
+131.806743297
+11
+73.2460665899
+21
+131.879861731
+0
+LINE
+5
+61
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+56.8197279711
+20
+132.003859741
+11
+57.9030164994
+21
+131.812846746
+0
+ARC
+5
+62
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+57.8509220461
+20
+131.51740442
+40
+0.3
+100
+AcDbArc
+50
+260
+51
+80
+0
+LINE
+5
+63
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+57.7988275928
+20
+131.221962094
+11
+56.7155390645
+21
+131.412975089
+0
+ARC
+5
+64
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+56.7676335178
+20
+131.708417415
+40
+0.3
+100
+AcDbArc
+50
+80
+51
+260
+0
+LINE
+5
+65
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+59.2022229169
+20
+145.515660013
+11
+60.2855114452
+21
+145.324647017
+0
+ARC
+5
+66
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+60.2334169919
+20
+145.029204691
+40
+0.3
+100
+AcDbArc
+50
+260
+51
+80
+0
+LINE
+5
+67
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+60.1813225386
+20
+144.733762365
+11
+59.0980340103
+21
+144.924775361
+0
+ARC
+5
+68
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+59.1501284636
+20
+145.220217687
+40
+0.3
+100
+AcDbArc
+50
+80
+51
+260
+0
+CIRCLE
+5
+69
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+17.415103493
+20
+33.7103927791
+40
+0.5
+0
+CIRCLE
+5
+6A
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+17.415103493
+20
+36.2503927791
+40
+0.5
+0
+CIRCLE
+5
+6B
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+17.415103493
+20
+38.7903927791
+40
+0.5
+0
+CIRCLE
+5
+6C
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+17.415103493
+20
+41.3303927791
+40
+0.5
+0
+CIRCLE
+5
+6D
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+76.1591754285
+20
+137.461644322
+40
+0.45
+0
+CIRCLE
+5
+6E
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+75.8748259626
+20
+133.973214105
+40
+0.45
+0
+CIRCLE
+5
+6F
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+68.0851733401
+20
+138.680315907
+40
+0.45
+0
+CIRCLE
+5
+70
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+67.6440992029
+20
+136.178860171
+40
+0.45
+0
+CIRCLE
+5
+71
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+70.3686653354
+20
+137.003365518
+40
+0.45
+0
+CIRCLE
+5
+72
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+69.9275911982
+20
+134.501909782
+40
+0.45
+0
+LINE
+5
+73
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+54.388745013
+20
+147.270392779
+11
+54.0015095768
+21
+145.07427149
+0
+LINE
+5
+74
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+51.9871907159
+20
+133.650501555
+11
+50.7387765123
+21
+126.570392779
+0
+LINE
+5
+75
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+26.115103493
+20
+28.5703927791
+11
+26.115103493
+21
+22.3703927791
+0
+LINE
+5
+76
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+26.115103493
+20
+22.3703927791
+11
+46.315103493
+21
+22.3703927791
+0
+LINE
+5
+77
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+46.315103493
+20
+22.3703927791
+11
+46.315103493
+21
+28.5703927791
+0
+LINE
+5
+78
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+80.1469013801
+20
+126.070392779
+11
+81.4988185711
+21
+142.655860116
+0
+LINE
+5
+79
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+54.388745013
+20
+147.270392779
+11
+81.4988185711
+21
+142.655860116
+0
+CIRCLE
+5
+7A
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+38.615103493
+20
+36.0703927791
+40
+0.75
+0
+CIRCLE
+5
+7B
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+31.115103493
+20
+33.8203927791
+40
+0.75
+0
+CIRCLE
+5
+7C
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+141.915103493
+20
+109.820392779
+40
+0.75
+0
+CIRCLE
+5
+7D
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+149.415103493
+20
+112.070392779
+40
+0.75
+0
+CIRCLE
+5
+7E
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+139.665103493
+20
+71.8203927791
+40
+0.75
+0
+CIRCLE
+5
+7F
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+147.165103493
+20
+74.0703927791
+40
+0.75
+0
+CIRCLE
+5
+80
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+135.165103493
+20
+52.8203927791
+40
+0.75
+0
+CIRCLE
+5
+81
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+142.665103493
+20
+55.0703927791
+40
+0.75
+0
+CIRCLE
+5
+82
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+137.415103493
+20
+33.8203927791
+40
+0.75
+0
+CIRCLE
+5
+83
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+144.915103493
+20
+36.0703927791
+40
+0.75
+0
+CIRCLE
+5
+84
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+114.765103493
+20
+36.0703927791
+40
+0.75
+0
+CIRCLE
+5
+85
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+107.265103493
+20
+33.8203927791
+40
+0.75
+0
+CIRCLE
+5
+86
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+91.3651034931
+20
+36.0703927791
+40
+0.75
+0
+CIRCLE
+5
+87
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+83.8651034931
+20
+33.8203927791
+40
+0.75
+0
+CIRCLE
+5
+88
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+67.965103493
+20
+36.0703927791
+40
+0.75
+0
+CIRCLE
+5
+89
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+60.465103493
+20
+33.8203927791
+40
+0.75
+0
+CIRCLE
+5
+8A
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+104.715103493
+20
+52.8203927791
+40
+0.75
+0
+CIRCLE
+5
+8B
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+112.215103493
+20
+55.0703927791
+40
+0.75
+0
+CIRCLE
+5
+8C
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+85.5151034931
+20
+52.8203927791
+40
+0.75
+0
+CIRCLE
+5
+8D
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+93.0151034931
+20
+55.0703927791
+40
+0.75
+0
+CIRCLE
+5
+8E
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+66.315103493
+20
+52.8203927791
+40
+0.75
+0
+CIRCLE
+5
+8F
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+73.815103493
+20
+55.0703927791
+40
+0.75
+0
+CIRCLE
+5
+90
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+47.115103493
+20
+52.8203927791
+40
+0.75
+0
+CIRCLE
+5
+91
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+54.615103493
+20
+55.0703927791
+40
+0.75
+0
+CIRCLE
+5
+92
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+35.415103493
+20
+55.0703927791
+40
+0.75
+0
+CIRCLE
+5
+93
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+27.915103493
+20
+52.8203927791
+40
+0.75
+0
+CIRCLE
+5
+94
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+121.325103493
+20
+74.0703927791
+40
+0.75
+0
+CIRCLE
+5
+95
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+113.825103493
+20
+71.8203927791
+40
+0.75
+0
+CIRCLE
+5
+96
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+102.235103493
+20
+74.0703927791
+40
+0.75
+0
+CIRCLE
+5
+97
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+94.7351034931
+20
+71.8203927791
+40
+0.75
+0
+CIRCLE
+5
+98
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+83.1451034931
+20
+74.0703927791
+40
+0.75
+0
+CIRCLE
+5
+99
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+75.645103493
+20
+71.8203927791
+40
+0.75
+0
+CIRCLE
+5
+9A
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+64.055103493
+20
+74.0703927791
+40
+0.75
+0
+CIRCLE
+5
+9B
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+56.555103493
+20
+71.8203927791
+40
+0.75
+0
+CIRCLE
+5
+9C
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+44.965103493
+20
+74.0703927791
+40
+0.75
+0
+CIRCLE
+5
+9D
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+37.465103493
+20
+71.8203927791
+40
+0.75
+0
+CIRCLE
+5
+9E
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+18.375103493
+20
+71.8203927791
+40
+0.75
+0
+CIRCLE
+5
+9F
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+25.875103493
+20
+74.0703927791
+40
+0.75
+0
+CIRCLE
+5
+A0
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+146.415103493
+20
+90.8203927791
+40
+0.75
+0
+CIRCLE
+5
+A1
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+153.915103493
+20
+93.0703927791
+40
+0.75
+0
+CIRCLE
+5
+A2
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+127.415103493
+20
+90.8203927791
+40
+0.75
+0
+CIRCLE
+5
+A3
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+134.915103493
+20
+93.0703927791
+40
+0.75
+0
+CIRCLE
+5
+A4
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+108.415103493
+20
+90.8203927791
+40
+0.75
+0
+CIRCLE
+5
+A5
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+115.915103493
+20
+93.0703927791
+40
+0.75
+0
+CIRCLE
+5
+A6
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+89.4151034931
+20
+90.8203927791
+40
+0.75
+0
+CIRCLE
+5
+A7
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+96.9151034931
+20
+93.0703927791
+40
+0.75
+0
+CIRCLE
+5
+A8
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+70.415103493
+20
+90.8203927791
+40
+0.75
+0
+CIRCLE
+5
+A9
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+77.9151034931
+20
+93.0703927791
+40
+0.75
+0
+CIRCLE
+5
+AA
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+58.915103493
+20
+93.0703927791
+40
+0.75
+0
+CIRCLE
+5
+AB
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+32.415103493
+20
+90.8203927791
+40
+0.75
+0
+CIRCLE
+5
+AC
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+39.915103493
+20
+93.0703927791
+40
+0.75
+0
+CIRCLE
+5
+AD
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+13.415103493
+20
+90.8203927791
+40
+0.75
+0
+CIRCLE
+5
+AE
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+20.915103493
+20
+93.0703927791
+40
+0.75
+0
+CIRCLE
+5
+AF
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+118.415103493
+20
+109.820392779
+40
+0.75
+0
+CIRCLE
+5
+B0
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+125.915103493
+20
+112.070392779
+40
+0.75
+0
+CIRCLE
+5
+B1
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+99.4151034931
+20
+109.820392779
+40
+0.75
+0
+CIRCLE
+5
+B2
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+106.915103493
+20
+112.070392779
+40
+0.75
+0
+CIRCLE
+5
+B3
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+80.4151034931
+20
+109.820392779
+40
+0.75
+0
+CIRCLE
+5
+B4
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+87.9151034931
+20
+112.070392779
+40
+0.75
+0
+CIRCLE
+5
+B5
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+61.415103493
+20
+109.820392779
+40
+0.75
+0
+CIRCLE
+5
+B6
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+68.915103493
+20
+112.070392779
+40
+0.75
+0
+CIRCLE
+5
+B7
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+42.415103493
+20
+109.820392779
+40
+0.75
+0
+CIRCLE
+5
+B8
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+49.915103493
+20
+112.070392779
+40
+0.75
+0
+CIRCLE
+5
+B9
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+23.415103493
+20
+109.820392779
+40
+0.75
+0
+CIRCLE
+5
+BA
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+30.915103493
+20
+112.070392779
+40
+0.75
+0
+LINE
+5
+BB
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+19.215103493
+20
+114.070392779
+11
+19.215103493
+21
+110.070392779
+0
+LINE
+5
+BC
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+19.215103493
+20
+110.070392779
+11
+17.915103493
+21
+110.070392779
+0
+LINE
+5
+BD
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+17.915103493
+20
+114.070392779
+11
+19.215103493
+21
+114.070392779
+0
+LINE
+5
+BE
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+19.215103493
+20
+122.070392779
+11
+19.215103493
+21
+118.070392779
+0
+LINE
+5
+BF
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+19.215103493
+20
+118.070392779
+11
+17.915103493
+21
+118.070392779
+0
+LINE
+5
+C0
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+17.915103493
+20
+122.070392779
+11
+19.215103493
+21
+122.070392779
+0
+LINE
+5
+C1
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+23.815103493
+20
+64.0703927791
+11
+23.815103493
+21
+60.0703927791
+0
+LINE
+5
+C2
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+23.815103493
+20
+60.0703927791
+11
+22.515103493
+21
+60.0703927791
+0
+LINE
+5
+C3
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+22.515103493
+20
+64.0703927791
+11
+23.815103493
+21
+64.0703927791
+0
+LINE
+5
+C4
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+23.815103493
+20
+57.0703927791
+11
+23.815103493
+21
+53.0703927791
+0
+LINE
+5
+C5
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+23.815103493
+20
+53.0703927791
+11
+22.515103493
+21
+53.0703927791
+0
+LINE
+5
+C6
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+22.515103493
+20
+57.0703927791
+11
+23.815103493
+21
+57.0703927791
+0
+LINE
+5
+C7
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+14.315103493
+20
+76.0703927791
+11
+14.315103493
+21
+72.0703927791
+0
+LINE
+5
+C8
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+14.315103493
+20
+72.0703927791
+11
+13.015103493
+21
+72.0703927791
+0
+LINE
+5
+C9
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+13.015103493
+20
+76.0703927791
+11
+14.315103493
+21
+76.0703927791
+0
+LINE
+5
+CA
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+14.315103493
+20
+83.5703927791
+11
+14.315103493
+21
+79.5703927791
+0
+LINE
+5
+CB
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+14.315103493
+20
+79.5703927791
+11
+13.015103493
+21
+79.5703927791
+0
+LINE
+5
+CC
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+13.015103493
+20
+83.5703927791
+11
+14.315103493
+21
+83.5703927791
+0
+LINE
+5
+CD
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+9.31510349296
+20
+95.0703927791
+11
+9.31510349296
+21
+91.0703927791
+0
+LINE
+5
+CE
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+9.31510349296
+20
+91.0703927791
+11
+8.01510349296
+21
+91.0703927791
+0
+LINE
+5
+CF
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+8.01510349296
+20
+95.0703927791
+11
+9.31510349296
+21
+95.0703927791
+0
+LINE
+5
+D0
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+9.31510349296
+20
+102.070392779
+11
+9.31510349296
+21
+98.0703927791
+0
+LINE
+5
+D1
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+9.31510349296
+20
+98.0703927791
+11
+8.01510349296
+21
+98.0703927791
+0
+LINE
+5
+D2
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+8.01510349296
+20
+102.070392779
+11
+9.31510349296
+21
+102.070392779
+0
+LINE
+5
+D3
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+15.615103493
+20
+28.5703927791
+11
+26.115103493
+21
+28.5703927791
+0
+LINE
+5
+D4
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+46.315103493
+20
+28.5703927791
+11
+160.415103493
+21
+28.5703927791
+0
+LINE
+5
+D5
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+21.115103493
+20
+126.570392779
+11
+21.115103493
+21
+123.270392779
+0
+LINE
+5
+D6
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+21.115103493
+20
+123.270392779
+11
+17.915103493
+21
+123.270392779
+0
+LINE
+5
+D7
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+50.7387765123
+20
+126.570392779
+11
+21.115103493
+21
+126.570392779
+0
+LINE
+5
+D8
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+31.215103493
+20
+103.570392779
+11
+8.01510349296
+21
+103.570392779
+0
+LINE
+5
+D9
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+17.915103493
+20
+108.570392779
+11
+31.215103493
+21
+108.570392779
+0
+LINE
+5
+DA
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+31.215103493
+20
+108.570392779
+11
+31.215103493
+21
+103.570392779
+0
+LINE
+5
+DB
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+160.415103493
+20
+126.070392779
+11
+80.1469013801
+21
+126.070392779
+0
+LINE
+5
+DC
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+31.215103493
+20
+84.5703927791
+11
+13.015103493
+21
+84.5703927791
+0
+LINE
+5
+DD
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+31.215103493
+20
+89.5703927791
+11
+31.215103493
+21
+84.5703927791
+0
+LINE
+5
+DE
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+8.01510349296
+20
+89.5703927791
+11
+31.215103493
+21
+89.5703927791
+0
+LINE
+5
+DF
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+41.715103493
+20
+46.5703927791
+11
+15.615103493
+21
+46.5703927791
+0
+LINE
+5
+E0
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+41.715103493
+20
+51.5703927791
+11
+41.715103493
+21
+46.5703927791
+0
+LINE
+5
+E1
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+22.515103493
+20
+51.5703927791
+11
+41.715103493
+21
+51.5703927791
+0
+LINE
+5
+E2
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+41.715103493
+20
+65.5703927791
+11
+22.515103493
+21
+65.5703927791
+0
+LINE
+5
+E3
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+41.715103493
+20
+70.5703927791
+11
+41.715103493
+21
+65.5703927791
+0
+LINE
+5
+E4
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+13.015103493
+20
+70.5703927791
+11
+41.715103493
+21
+70.5703927791
+0
+LINE
+5
+E5
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+17.915103493
+20
+122.070392779
+11
+17.915103493
+21
+123.270392779
+0
+LINE
+5
+E6
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+17.915103493
+20
+108.570392779
+11
+17.915103493
+21
+110.070392779
+0
+LINE
+5
+E7
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+8.01510349296
+20
+102.070392779
+11
+8.01510349296
+21
+103.570392779
+0
+LINE
+5
+E8
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+8.01510349296
+20
+89.5703927791
+11
+8.01510349296
+21
+91.0703927791
+0
+LINE
+5
+E9
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+15.615103493
+20
+28.5703927791
+11
+15.615103493
+21
+46.5703927791
+0
+LINE
+5
+EA
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+17.915103493
+20
+114.070392779
+11
+17.915103493
+21
+118.070392779
+0
+LINE
+5
+EB
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+8.01510349296
+20
+95.0703927791
+11
+8.01510349296
+21
+98.0703927791
+0
+LINE
+5
+EC
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+13.015103493
+20
+83.5703927791
+11
+13.015103493
+21
+84.5703927791
+0
+LINE
+5
+ED
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+13.015103493
+20
+76.0703927791
+11
+13.015103493
+21
+79.5703927791
+0
+LINE
+5
+EE
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+13.015103493
+20
+70.5703927791
+11
+13.015103493
+21
+72.0703927791
+0
+LINE
+5
+EF
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+22.515103493
+20
+64.0703927791
+11
+22.515103493
+21
+65.5703927791
+0
+LINE
+5
+F0
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+22.515103493
+20
+57.0703927791
+11
+22.515103493
+21
+60.0703927791
+0
+LINE
+5
+F1
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+22.515103493
+20
+51.5703927791
+11
+22.515103493
+21
+53.0703927791
+0
+LINE
+5
+F2
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+160.415103493
+20
+126.070392779
+11
+160.415103493
+21
+28.5703927791
+0
+CIRCLE
+5
+F3
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+44.915103493
+20
+105.570392779
+40
+2.1
+0
+CIRCLE
+5
+F4
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+59.715103493
+20
+67.5703927791
+40
+2.1
+0
+CIRCLE
+5
+F5
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+98.1151034931
+20
+67.5703927791
+40
+2.1
+0
+CIRCLE
+5
+F6
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+155.415103493
+20
+77.5703927791
+40
+2.1
+0
+CIRCLE
+5
+F7
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+111.915103493
+20
+106.570392779
+40
+2.1
+0
+CIRCLE
+5
+F8
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+140.415103493
+20
+39.5703927791
+40
+2
+0
+CIRCLE
+5
+F9
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+110.265103493
+20
+39.5703927791
+40
+2
+0
+CIRCLE
+5
+FA
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+107.715103493
+20
+58.5703927791
+40
+2
+0
+CIRCLE
+5
+FB
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+138.165103493
+20
+58.5703927791
+40
+2
+0
+CIRCLE
+5
+FC
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+142.665103493
+20
+77.5703927791
+40
+2
+0
+CIRCLE
+5
+FD
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+116.825103493
+20
+77.5703927791
+40
+2
+0
+CIRCLE
+5
+FE
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+149.415103493
+20
+96.5703927791
+40
+2
+0
+CIRCLE
+5
+FF
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+144.915103493
+20
+115.570392779
+40
+2
+0
+CIRCLE
+5
+100
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+121.415103493
+20
+115.570392779
+40
+2
+0
+CIRCLE
+5
+101
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+102.415103493
+20
+115.570392779
+40
+2
+0
+CIRCLE
+5
+102
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+83.4151034931
+20
+115.570392779
+40
+2
+0
+CIRCLE
+5
+103
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+64.415103493
+20
+115.570392779
+40
+2
+0
+CIRCLE
+5
+104
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+45.415103493
+20
+115.570392779
+40
+2
+0
+CIRCLE
+5
+105
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+26.415103493
+20
+115.570392779
+40
+2
+0
+CIRCLE
+5
+106
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+130.415103493
+20
+96.5703927791
+40
+2
+0
+CIRCLE
+5
+107
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+111.415103493
+20
+96.5703927791
+40
+2
+0
+CIRCLE
+5
+108
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+92.4151034931
+20
+96.5703927791
+40
+2
+0
+CIRCLE
+5
+109
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+73.415103493
+20
+96.5703927791
+40
+2
+0
+CIRCLE
+5
+10A
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+54.415103493
+20
+96.5703927791
+40
+2
+0
+CIRCLE
+5
+10B
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+35.415103493
+20
+96.5703927791
+40
+2
+0
+CIRCLE
+5
+10C
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+16.415103493
+20
+96.5703927791
+40
+2
+0
+CIRCLE
+5
+10D
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+97.7351034931
+20
+77.5703927791
+40
+2
+0
+CIRCLE
+5
+10E
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+78.6451034931
+20
+77.5703927791
+40
+2
+0
+CIRCLE
+5
+10F
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+59.555103493
+20
+77.5703927791
+40
+2
+0
+CIRCLE
+5
+110
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+40.465103493
+20
+77.5703927791
+40
+2
+0
+CIRCLE
+5
+111
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+21.375103493
+20
+77.5703927791
+40
+2
+0
+CIRCLE
+5
+112
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+88.5151034931
+20
+58.5703927791
+40
+2
+0
+CIRCLE
+5
+113
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+69.315103493
+20
+58.5703927791
+40
+2
+0
+CIRCLE
+5
+114
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+50.115103493
+20
+58.5703927791
+40
+2
+0
+CIRCLE
+5
+115
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+30.915103493
+20
+58.5703927791
+40
+2
+0
+CIRCLE
+5
+116
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+34.115103493
+20
+39.5703927791
+40
+2
+0
+CIRCLE
+5
+117
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+86.8651034931
+20
+39.5703927791
+40
+2
+0
+CIRCLE
+5
+118
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+63.465103493
+20
+39.5703927791
+40
+2
+0
+ARC
+5
+119
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+124.426298668
+20
+54.6043548311
+40
+2.37170824513
+100
+AcDbArc
+50
+341.565051177
+51
+198.434948823
+0
+LINE
+5
+11A
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+122.176298668
+20
+53.8543548311
+11
+123.676298668
+21
+50.8543548311
+0
+LINE
+5
+11B
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+126.676298668
+20
+53.8543548311
+11
+125.176298668
+21
+50.8543548311
+0
+ARC
+5
+11C
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+124.426298668
+20
+51.2543548311
+40
+0.85
+100
+AcDbArc
+50
+208.072486936
+51
+331.927513064
+0
+ARC
+5
+11D
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+124.380058759
+20
+41.2642934551
+40
+2.37170824513
+100
+AcDbArc
+50
+161.565051177
+51
+18.4349488229
+0
+LINE
+5
+11E
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+126.630058759
+20
+42.0142934551
+11
+125.130058759
+21
+45.0142934551
+0
+LINE
+5
+11F
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+122.130058759
+20
+42.0142934551
+11
+123.630058759
+21
+45.0142934551
+0
+ARC
+5
+120
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+124.380058759
+20
+44.6142934551
+40
+0.85
+100
+AcDbArc
+50
+28.0724869359
+51
+151.927513064
+0
+ARC
+5
+121
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+117.630058759
+20
+48.1425852101
+40
+2.37170824513
+100
+AcDbArc
+50
+71.5650511771
+51
+288.434948823
+0
+LINE
+5
+122
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+118.380058759
+20
+45.8925852101
+11
+121.380058759
+21
+47.3925852101
+0
+LINE
+5
+123
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+118.380058759
+20
+50.3925852101
+11
+121.380058759
+21
+48.8925852101
+0
+ARC
+5
+124
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+120.980058759
+20
+48.1425852101
+40
+0.85
+100
+AcDbArc
+50
+298.072486936
+51
+61.9275130641
+0
+ARC
+5
+125
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+131.130058759
+20
+48.1425852101
+40
+2.37170824513
+100
+AcDbArc
+50
+251.565051177
+51
+108.434948823
+0
+LINE
+5
+126
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+130.380058759
+20
+50.3925852101
+11
+127.380058759
+21
+48.8925852101
+0
+LINE
+5
+127
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+130.380058759
+20
+45.8925852101
+11
+127.380058759
+21
+47.3925852101
+0
+ARC
+5
+128
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+127.780058759
+20
+48.1425852101
+40
+0.85
+100
+AcDbArc
+50
+118.072486936
+51
+241.927513064
+0
+ARC
+5
+129
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+53.1318556378
+20
+37.0101551811
+40
+0.85
+100
+AcDbArc
+50
+73.0724869359
+51
+196.927513064
+0
+ARC
+5
+12A
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+45.8640058389
+20
+34.7320634341
+40
+2.37170824513
+100
+AcDbArc
+50
+116.565051177
+51
+333.434948823
+0
+LINE
+5
+12B
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+47.9853261825
+20
+33.6714032621
+11
+49.0459863543
+21
+36.8533837771
+0
+LINE
+5
+12C
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+44.8033456672
+20
+36.8533837771
+11
+47.9853261825
+21
+37.9140439491
+0
+ARC
+5
+12D
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+48.2328135559
+20
+37.1008711511
+40
+0.85
+100
+AcDbArc
+50
+343.072486936
+51
+106.927513064
+0
+ARC
+5
+12E
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+55.4099473849
+20
+44.2780049801
+40
+2.37170824513
+100
+AcDbArc
+50
+296.565051177
+51
+153.434948823
+0
+LINE
+5
+12F
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+53.2886270414
+20
+45.3386651511
+11
+52.2279668696
+21
+42.1566846361
+0
+LINE
+5
+130
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+56.4706075567
+20
+42.1566846361
+11
+53.2886270414
+21
+41.0960244641
+0
+ARC
+5
+131
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+53.041139668
+20
+41.9091972631
+40
+0.85
+100
+AcDbArc
+50
+163.072486936
+51
+286.927513064
+0
+ARC
+5
+132
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+46.1005120477
+20
+44.1068918771
+40
+2.37170824513
+100
+AcDbArc
+50
+26.5650511771
+51
+243.434948823
+0
+LINE
+5
+133
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+45.0398518759
+20
+41.9855715331
+11
+48.2218323913
+21
+40.9249113611
+0
+LINE
+5
+134
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+48.2218323913
+20
+45.1675520491
+11
+49.282492563
+21
+41.9855715331
+0
+ARC
+5
+135
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+48.4693197647
+20
+41.7380841601
+40
+0.85
+100
+AcDbArc
+50
+253.072486936
+51
+16.9275130641
+0
+ARC
+5
+136
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+55.5006633548
+20
+34.6413474641
+40
+2.37170824513
+100
+AcDbArc
+50
+206.565051177
+51
+63.4349488229
+0
+LINE
+5
+137
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+56.5613235266
+20
+36.7626678071
+11
+53.3793430112
+21
+37.8233279791
+0
+LINE
+5
+138
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbLine
+10
+53.3793430112
+20
+33.5806872921
+11
+52.3186828395
+21
+36.7626678071
+0
+CIRCLE
+5
+139
+100
+AcDbEntity
+8
+Visible Edges(PEC)
+6
+ByLayer
+62
+256
+370
+-1
+100
+AcDbCircle
+10
+156.82650113
+20
+63.0606544828
+40
+0.75
+0
+ENDSEC
+0
+SECTION
+2
+OBJECTS
+0
+DICTIONARY
+5
+C
+330
+0
+100
+AcDbDictionary
+281
+1
+3
+ACAD_GROUP
+350
+D
+0
+DICTIONARY
+5
+D
+330
+C
+100
+AcDbDictionary
+281
+1
+0
+ENDSEC
+0
+EOF