62 wxFFile file( dxfPath, wxT(
"rb" ) );
65 wxFileOffset len = file.Length();
66 BOOST_REQUIRE_GT( len, 0 );
69 buffer.resize(
static_cast<size_t>( len ) );
70 BOOST_REQUIRE_EQUAL( file.Read( buffer.data(), len ),
static_cast<size_t>( len ) );
75 BOOST_CHECK_MESSAGE( buffer.find(
"$ACADVER\n 1\nAC1018\n" ) != std::string::npos,
76 "Expected $ACADVER = AC1018 in DXF header" );
77 BOOST_CHECK_MESSAGE( buffer.find(
"$HANDSEED\n" ) != std::string::npos,
78 "Expected $HANDSEED in DXF header" );
81 BOOST_CHECK_MESSAGE( buffer.find(
"TABLE\n 2\nAPPID\n" ) != std::string::npos,
82 "Expected APPID table in TABLES section" );
83 BOOST_CHECK_MESSAGE( buffer.find(
"APPID\n" ) != std::string::npos
84 && buffer.find(
"\n 2\nACAD\n" ) != std::string::npos,
85 "Expected ACAD entry in APPID table" );
88 BOOST_CHECK_MESSAGE( buffer.find(
"TABLE\n 2\nBLOCK_RECORD\n" ) != std::string::npos,
89 "Expected BLOCK_RECORD table" );
90 BOOST_CHECK_MESSAGE( buffer.find(
"*Model_Space" ) != std::string::npos,
91 "Expected *Model_Space layout block" );
92 BOOST_CHECK_MESSAGE( buffer.find(
"SECTION\n 2\nBLOCKS\n" ) != std::string::npos,
93 "Expected BLOCKS section" );
97 BOOST_CHECK_MESSAGE( buffer.find(
"0\nLINE\n" ) != std::string::npos,
98 "Expected LINE entity in output" );
99 BOOST_CHECK_MESSAGE( buffer.find(
"100\nAcDbEntity\n" ) != std::string::npos,
100 "Expected AcDbEntity subclass marker on entities" );
101 BOOST_CHECK_MESSAGE( buffer.find(
"100\nAcDbLine\n" ) != std::string::npos,
102 "Expected AcDbLine subclass marker on LINE entity" );
103 BOOST_CHECK_MESSAGE( buffer.find(
"100\nAcDbCircle\n" ) != std::string::npos,
104 "Expected AcDbCircle subclass marker on CIRCLE entity" );
107 BOOST_CHECK_MESSAGE( buffer.find(
" 49\n1.25\n 74\n0\n" ) != std::string::npos,
108 "Expected 74 group code following 49 in DASHDOT pattern" );
112 BOOST_CHECK_MESSAGE( buffer.find(
"\n*Paper_Space0\n" ) != std::string::npos,
113 "Expected *Paper_Space0 layout (spec mandates three empty blocks)" );
114 BOOST_CHECK_MESSAGE( buffer.find(
"100\nAcDbBlockTableRecord\n 2\n*Paper_Space0\n340\n" )
115 != std::string::npos,
116 "Expected 340 LAYOUT pointer in *Paper_Space0 BLOCK_RECORD" );
120 BOOST_CHECK_MESSAGE( buffer.find(
"SECTION\n 2\nOBJECTS\n" ) != std::string::npos,
121 "Expected OBJECTS section" );
122 BOOST_CHECK_MESSAGE( buffer.find(
"ACAD_LAYOUT\n350\n" ) != std::string::npos,
123 "Expected ACAD_LAYOUT entry in root dictionary" );
124 BOOST_CHECK_MESSAGE( buffer.find(
"ACAD_GROUP\n350\n" ) != std::string::npos,
125 "Expected ACAD_GROUP entry in root dictionary" );
126 BOOST_CHECK_MESSAGE( buffer.find(
"0\nLAYOUT\n" ) != std::string::npos,
127 "Expected LAYOUT objects in OBJECTS section" );
128 BOOST_CHECK_MESSAGE( buffer.find(
"100\nAcDbLayout\n 1\nModel\n" ) != std::string::npos,
129 "Expected Model layout object" );
130 BOOST_CHECK_MESSAGE( buffer.find(
"100\nAcDbLayout\n 1\nLayout1\n" ) != std::string::npos,
131 "Expected Layout1 (Paper_Space) layout object" );
132 BOOST_CHECK_MESSAGE( buffer.find(
"100\nAcDbLayout\n 1\nLayout2\n" ) != std::string::npos,
133 "Expected Layout2 (Paper_Space0) layout object" );
137 BOOST_CHECK_MESSAGE( buffer.find(
"ACAD_PLOTSTYLENAME\n350\n" ) != std::string::npos,
138 "Expected ACAD_PLOTSTYLENAME entry in root dictionary" );
139 BOOST_CHECK_MESSAGE( buffer.find(
"ACDBDICTIONARYWDFLT\n" ) != std::string::npos,
140 "Expected ACDBDICTIONARYWDFLT for ACAD_PLOTSTYLENAME" );
141 BOOST_CHECK_MESSAGE( buffer.find(
"ACDBPLACEHOLDER\n" ) != std::string::npos,
142 "Expected ACDBPLACEHOLDER (the 'Normal' plot style)" );
143 BOOST_CHECK_MESSAGE( buffer.find(
" 6\nCONTINUOUS\n390\n" ) != std::string::npos,
144 "Expected 390 plot-style handle on every LAYER record" );
148 BOOST_CHECK_MESSAGE( buffer.find(
"TABLE\n 2\nVPORT\n" ) != std::string::npos,
149 "Expected VPORT table" );
150 BOOST_CHECK_MESSAGE( buffer.find(
"TABLE\n 2\nVIEW\n" ) != std::string::npos,
151 "Expected VIEW table" );
152 BOOST_CHECK_MESSAGE( buffer.find(
"TABLE\n 2\nUCS\n" ) != std::string::npos,
153 "Expected UCS table" );
154 BOOST_CHECK_MESSAGE( buffer.find(
"TABLE\n 2\nDIMSTYLE\n" ) != std::string::npos,
155 "Expected DIMSTYLE table" );
156 BOOST_CHECK_MESSAGE( buffer.find(
" 0\nDIMSTYLE\n105\n" ) != std::string::npos,
157 "Expected DIMSTYLE record handle on group code 105 (not 5)" );
158 BOOST_CHECK_MESSAGE( buffer.find(
"AcDbDimStyleTableRecord\n 2\nStandard\n" )
159 != std::string::npos,
160 "Expected Standard DIMSTYLE entry" );
163 BOOST_CHECK_MESSAGE( buffer.find(
"AcDbLayerTableRecord\n 2\n0\n" ) != std::string::npos,
164 "Expected default layer \"0\" entry in LAYER table" );
167 BOOST_CHECK_MESSAGE( buffer.find(
"AcDbLinetypeTableRecord\n 2\nByBlock\n" )
168 != std::string::npos,
169 "Expected ByBlock linetype entry" );
170 BOOST_CHECK_MESSAGE( buffer.find(
"AcDbLinetypeTableRecord\n 2\nByLayer\n" )
171 != std::string::npos,
172 "Expected ByLayer linetype entry" );
176 BOOST_CHECK_MESSAGE( buffer.find(
"AcDbPlotSettings\n 1\n\n 2\nnone_device\n" )
177 != std::string::npos,
178 "Expected group 2 (none_device) in AcDbPlotSettings" );
181 BOOST_CHECK_MESSAGE( buffer.find(
"AcDbLayout\n 1\nModel\n" ) != std::string::npos,
182 "Expected Model layout (precondition for the next check)" );
183 BOOST_CHECK_MESSAGE( buffer.find(
" 70\n1024\n" ) != std::string::npos,
184 "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...