diff --git a/spec/EntitiesSpec.xml b/spec/EntitiesSpec.xml index 5aade74..fe5574b 100644 --- a/spec/EntitiesSpec.xml +++ b/spec/EntitiesSpec.xml @@ -493,7 +493,7 @@ - + diff --git a/src/entity.rs b/src/entity.rs index ff24a59..25b9166 100644 --- a/src/entity.rs +++ b/src/entity.rs @@ -1515,7 +1515,7 @@ impl Entity { } pairs.push(CodePair::new_i16(70, v.flags as i16)); pairs.push(CodePair::new_f64(50, v.curve_fit_tangent_direction)); - if version >= AcadVersion::R13 { + if version >= AcadVersion::R12 { if v.polyface_mesh_vertex_index1 != 0 { pairs.push(CodePair::new_i16(71, v.polyface_mesh_vertex_index1 as i16)); } @@ -1572,7 +1572,13 @@ impl Entity { for (v, vertex_handle) in &poly.__vertices_and_handles { let mut v = v.clone(); v.set_is_3d_polyline_vertex(poly.is_3d_polyline()); - v.set_is_3d_polygon_mesh(poly.is_3d_polygon_mesh()); + if v.polyface_mesh_vertex_index1 == 0 + && v.polyface_mesh_vertex_index2 == 0 + && v.polyface_mesh_vertex_index3 == 0 + && v.polyface_mesh_vertex_index4 == 0 + { + v.set_is_3d_polygon_mesh(poly.is_3d_polygon_mesh()); + } let v = Entity { common: EntityCommon { handle: *vertex_handle, @@ -2872,9 +2878,9 @@ mod tests { } #[test] - fn write_insert_no_extrusion_on_r12() { + fn write_insert_no_extrusion_on_r11() { let mut drawing = Drawing::new(); - drawing.header.version = AcadVersion::R12; + drawing.header.version = AcadVersion::R11; let ins = Insert { extrusion_direction: Vector::new(1.0, 2.0, 3.0), ..Default::default() @@ -2891,6 +2897,26 @@ mod tests { ); } + #[test] + fn write_insert_extrusion_on_r12() { + let mut drawing = Drawing::new(); + drawing.header.version = AcadVersion::R12; + let ins = Insert { + extrusion_direction: Vector::new(1.0, 2.0, 3.0), + ..Default::default() + }; + let ent = Entity::new(EntityType::Insert(ins)); + drawing.add_entity(ent); + assert_contains_pairs( + &drawing, + vec![ + CodePair::new_f64(210, 1.0), + CodePair::new_f64(220, 2.0), + CodePair::new_f64(230, 3.0), + ], + ); + } + #[test] fn write_insert_extrusion_on_r13() { let mut drawing = Drawing::new();