Refer to DXF manual on Hatch / MPolygon entity and Bounadry Path Data

Relevant Dxf codes are as follows:

91 is the number of loops for the entire Mpolygon. You have 1 'loop'. Note Mpolygon is very similar to hatch, can have separate 'loops' or 'regions' or holes, or holes with islands.

92 is the boundary type (2=polyline)

93 is number of edges

10 are transformed coordinates

The orientation of the DXF 10 coordinates determine if the molygon boundary is an Outer boundary (counter-clockwise, normal acad/cartesian angular measurement) or Inner (Clockwise). caution - this sometimes isn't true!?!

11 is the basepoint coordinate (or 'offset vector'). Add this vector to each of the DXF 10 coordinates to calculate the 'real' WCS coordinate.

Having this coordinate permits the DXF 10 values to be smaller numbers. Reducing memory can be a big deal for hatch pattern fills (and mpolygons with hatch pattern) where each pattern line segment must be stored.

72 'has bulge' >0 indicates that polyarcs are present.

73 > 0 indicated polyline used to create mpolygon is closed (vs. force closed, where last coordinate = first coordinate). Mpolygons are always closed by default (unlike polylines)

70 is solid fill (1 = solid fill)

76 is hatch style (1 = predefined)

63 is pattern fill colour as Acad Colour Index (1 = red)

Also note that mpoly can have arc segments similar to a polyline. If this is the case, a DXF code 42 (bulge) follows each DXF 10 coordinate (even for the straight line segments)

eg.

10 x y z

42 bulge or 0.0

10 x y z

42 bulge or 0.0

etc...

partial DXF extract of your triangular shaped mpolygon is as follows:

`(71 . 1)`

(91 . 1)

(92 . 2)

(73 . 0)

(72 . 0)

(93 . 3)

(10 -169.233 -15.2715 0.0)

(10 169.233 -253.277 0.0)

(10 157.309 253.277 0.0)

(76 . 1)

(63 . 1)

(11 -27170.6 305.577 0.0)

Unfortunately, unlike Region entities, Boolean operations (Union, Intersect, Subtract) will not work with Mpolygons.