44 wxString dxfPath = wxFileName::CreateTempFileName( wxT(
"kicad_dxf_r2000" ) );
59 wxFFile file( dxfPath, wxT(
"rb" ) );
62 wxFileOffset len = file.Length();
63 BOOST_REQUIRE_GT( len, 0 );
66 buffer.resize(
static_cast<size_t>( len ) );
67 BOOST_REQUIRE_EQUAL( file.Read( buffer.data(), len ),
static_cast<size_t>( len ) );
72 BOOST_CHECK_MESSAGE( buffer.find(
"$ACADVER\n 1\nAC1018\n" ) != std::string::npos,
73 "Expected $ACADVER = AC1018 in DXF header" );
74 BOOST_CHECK_MESSAGE( buffer.find(
"$HANDSEED\n" ) != std::string::npos,
75 "Expected $HANDSEED in DXF header" );
78 BOOST_CHECK_MESSAGE( buffer.find(
"TABLE\n 2\nAPPID\n" ) != std::string::npos,
79 "Expected APPID table in TABLES section" );
80 BOOST_CHECK_MESSAGE( buffer.find(
"APPID\n" ) != std::string::npos
81 && buffer.find(
"\n 2\nACAD\n" ) != std::string::npos,
82 "Expected ACAD entry in APPID table" );
85 BOOST_CHECK_MESSAGE( buffer.find(
"TABLE\n 2\nBLOCK_RECORD\n" ) != std::string::npos,
86 "Expected BLOCK_RECORD table" );
87 BOOST_CHECK_MESSAGE( buffer.find(
"*Model_Space" ) != std::string::npos,
88 "Expected *Model_Space layout block" );
89 BOOST_CHECK_MESSAGE( buffer.find(
"SECTION\n 2\nBLOCKS\n" ) != std::string::npos,
90 "Expected BLOCKS section" );
94 BOOST_CHECK_MESSAGE( buffer.find(
"0\nLINE\n" ) != std::string::npos,
95 "Expected LINE entity in output" );
96 BOOST_CHECK_MESSAGE( buffer.find(
"100\nAcDbEntity\n" ) != std::string::npos,
97 "Expected AcDbEntity subclass marker on entities" );
98 BOOST_CHECK_MESSAGE( buffer.find(
"100\nAcDbLine\n" ) != std::string::npos,
99 "Expected AcDbLine subclass marker on LINE entity" );
100 BOOST_CHECK_MESSAGE( buffer.find(
"100\nAcDbCircle\n" ) != std::string::npos,
101 "Expected AcDbCircle subclass marker on CIRCLE entity" );
104 BOOST_CHECK_MESSAGE( buffer.find(
" 49\n1.25\n 74\n0\n" ) != std::string::npos,
105 "Expected 74 group code following 49 in DASHDOT pattern" );
109 BOOST_CHECK_MESSAGE( buffer.find(
"\n*Paper_Space0\n" ) != std::string::npos,
110 "Expected *Paper_Space0 layout (spec mandates three empty blocks)" );
111 BOOST_CHECK_MESSAGE( buffer.find(
"100\nAcDbBlockTableRecord\n 2\n*Paper_Space0\n340\n" )
112 != std::string::npos,
113 "Expected 340 LAYOUT pointer in *Paper_Space0 BLOCK_RECORD" );
117 BOOST_CHECK_MESSAGE( buffer.find(
"SECTION\n 2\nOBJECTS\n" ) != std::string::npos,
118 "Expected OBJECTS section" );
119 BOOST_CHECK_MESSAGE( buffer.find(
"ACAD_LAYOUT\n350\n" ) != std::string::npos,
120 "Expected ACAD_LAYOUT entry in root dictionary" );
121 BOOST_CHECK_MESSAGE( buffer.find(
"ACAD_GROUP\n350\n" ) != std::string::npos,
122 "Expected ACAD_GROUP entry in root dictionary" );
123 BOOST_CHECK_MESSAGE( buffer.find(
"0\nLAYOUT\n" ) != std::string::npos,
124 "Expected LAYOUT objects in OBJECTS section" );
125 BOOST_CHECK_MESSAGE( buffer.find(
"100\nAcDbLayout\n 1\nModel\n" ) != std::string::npos,
126 "Expected Model layout object" );
127 BOOST_CHECK_MESSAGE( buffer.find(
"100\nAcDbLayout\n 1\nLayout1\n" ) != std::string::npos,
128 "Expected Layout1 (Paper_Space) layout object" );
129 BOOST_CHECK_MESSAGE( buffer.find(
"100\nAcDbLayout\n 1\nLayout2\n" ) != std::string::npos,
130 "Expected Layout2 (Paper_Space0) layout object" );
134 BOOST_CHECK_MESSAGE( buffer.find(
"ACAD_PLOTSTYLENAME\n350\n" ) != std::string::npos,
135 "Expected ACAD_PLOTSTYLENAME entry in root dictionary" );
136 BOOST_CHECK_MESSAGE( buffer.find(
"ACDBDICTIONARYWDFLT\n" ) != std::string::npos,
137 "Expected ACDBDICTIONARYWDFLT for ACAD_PLOTSTYLENAME" );
138 BOOST_CHECK_MESSAGE( buffer.find(
"ACDBPLACEHOLDER\n" ) != std::string::npos,
139 "Expected ACDBPLACEHOLDER (the 'Normal' plot style)" );
140 BOOST_CHECK_MESSAGE( buffer.find(
" 6\nCONTINUOUS\n390\n" ) != std::string::npos,
141 "Expected 390 plot-style handle on every LAYER record" );
145 BOOST_CHECK_MESSAGE( buffer.find(
"TABLE\n 2\nVPORT\n" ) != std::string::npos,
146 "Expected VPORT table" );
147 BOOST_CHECK_MESSAGE( buffer.find(
"TABLE\n 2\nVIEW\n" ) != std::string::npos,
148 "Expected VIEW table" );
149 BOOST_CHECK_MESSAGE( buffer.find(
"TABLE\n 2\nUCS\n" ) != std::string::npos,
150 "Expected UCS table" );
151 BOOST_CHECK_MESSAGE( buffer.find(
"TABLE\n 2\nDIMSTYLE\n" ) != std::string::npos,
152 "Expected DIMSTYLE table" );
153 BOOST_CHECK_MESSAGE( buffer.find(
" 0\nDIMSTYLE\n105\n" ) != std::string::npos,
154 "Expected DIMSTYLE record handle on group code 105 (not 5)" );
155 BOOST_CHECK_MESSAGE( buffer.find(
"AcDbDimStyleTableRecord\n 2\nStandard\n" )
156 != std::string::npos,
157 "Expected Standard DIMSTYLE entry" );
160 BOOST_CHECK_MESSAGE( buffer.find(
"AcDbLayerTableRecord\n 2\n0\n" ) != std::string::npos,
161 "Expected default layer \"0\" entry in LAYER table" );
164 BOOST_CHECK_MESSAGE( buffer.find(
"AcDbLinetypeTableRecord\n 2\nByBlock\n" )
165 != std::string::npos,
166 "Expected ByBlock linetype entry" );
167 BOOST_CHECK_MESSAGE( buffer.find(
"AcDbLinetypeTableRecord\n 2\nByLayer\n" )
168 != std::string::npos,
169 "Expected ByLayer linetype entry" );
173 BOOST_CHECK_MESSAGE( buffer.find(
"AcDbPlotSettings\n 1\n\n 2\nnone_device\n" )
174 != std::string::npos,
175 "Expected group 2 (none_device) in AcDbPlotSettings" );
178 BOOST_CHECK_MESSAGE( buffer.find(
"AcDbLayout\n 1\nModel\n" ) != std::string::npos,
179 "Expected Model layout (precondition for the next check)" );
180 BOOST_CHECK_MESSAGE( buffer.find(
" 70\n1024\n" ) != std::string::npos,
181 "Expected ModelType (1024) flag on the Model layout" );
virtual void Circle(const VECTOR2I &pos, int diametre, FILL_T fill, int width) override
DXF circle: full functionality; it even does 'fills' drawing a circle with a dual-arc polyline wide a...