possible PolyConnectivity::split_edge_copy() bug
I would like to report a possible bug/design limitation in PolyConnectivity::split_edge_copy(). Apologies if it has been resolved recently, I have not checked the most recent version.
PolyConnectivity::split_edge_copy() does not copy built-in properties, and it does not offer the option to do so. This is undesirable, since it forces us to write the following unwieldy code on the caller side to propagate the status property for instance (e.g. to propagate the feature status when splitting).
quad_mesh_->split_edge_copy(eh, rfn_ehs[eh]); // does not copy status...?! // .... hence we need to copy the status on our own! const auto new_eh = quad_mesh_->edge_handle( quad_mesh_->next_halfedge_handle(quad_mesh_->halfedge_handle(eh, 1))); quad_mesh_->status(new_eh) = quad_mesh_->status(eh);
In addition to being unwieldy, this code relies on internal knowledge of how the new edge is allocated and is prone to breakage if internal behaviour changes. Maybe the best option here is to add and propagate the bool _copyBuildIn = false parameter from the void copy_all_properties(FaceHandle _fh_from, FaceHandle _fh_to, bool _copyBuildIn = false) to PolyConnectivity::split_edge_copy(). This is a binary in-compatible change, so you might want to leave this to version 7 (that is if you are using semver).