![]() |
PK_BODY_knit |
PK_ERROR_code_t PK_BODY_knit ( --- received arguments --- PK_BODY_t body, --- target body int n_topols, --- number of topols const PK_TOPOL_t topols[], --- topols const PK_TOPOL_t matches[], --- matched topols PK_BODY_knit_o_t *options, --- options --- returned arguments --- PK_TOPOL_track_r_t *const tracking --- tracking information ) This function assembles a body by merging paired topols from the 'topols' and 'matches' array. Specific Errors: PK_ERROR_general_body (MILD/SERIOUS) generalised topology not enabled and result would be a general body PK_ERROR_missing_geom (MILD) topol has no geometry PK_ERROR_inconsistent_geom (MILD) matching topols have inconsistent geometry PK_ERROR_duplicate_array_item (MILD) topol is duplicated in 'matches' array or appears in both arrays PK_ERROR_not_in_same_partition (MILD) topols are not all in the same Partition PK_ERROR_unsuitable_topology (MILD) matching topols are not vertex to vertex or edge to edge PK_ERROR_no_topols_from_target (MILD) no 'topols' or 'matches' are from the target body PK_ERROR_contradictory_request (MILD) the desired body type is general and session general topology is disabled Introduction This function joins a number of bodies together by fusing coincident topology. This process is henceforth referred to simply as "knitting". It should be noted that for classic bodies it is a purely topological operation which will perform limited geometric checks. The only topols permitted in the 'topols' and 'matches' arrays are vertices and edges. A vertex may only be matched with a different vertex, and an edge may only be matched with a different edge. PK_ERROR_unsuitable_topology is returned if this condition is not met. For classic bodies, the distance between each matched pair of topologies must be within the sum of their tolerances. PK_ERROR_inconsistent_geom is returned if this condition is not met by supplied vertex pairs, or any vertex pairs indirectly provided by the supplied edges. This function supports non-manifold bodies if session general topology is enabled (see PK_SESSION_ask_general_topology). For facet bodies, knitted topols will be accurate. Meshes may be adjusted to ensure they meet at knitted topols. For mixed bodies, matched pairs of edges featuring any facet geometry must produce a locally manifold result. PK_ERROR_general_body is returned if this condition is not met. There is a 1:1 matching between the two topol arrays such that an element in the 'topols' array will be knitted to the element in the 'matches' array with the same index. The two arrays should therefore be the same length defined by 'n_topols'. The 'matches' array must not contain duplicates and a topol in the 'matches' array is not allowed to also be contained in the 'topols' array. Duplicate topols are permitted in the 'topols' array e.g. to create non-manifold wire vertices. 'body' is the target body the application wishes to hold the final result of the knitting operation. All the other body topology to be joined onto 'body' is supplied indirectly in the two arrays of topols. All bodies except 'body' involved in the knit will be destroyed. The topols from the 'topols' array will survive the operation while those in 'matches' will be destroyed. Tracking Information The returned 'tracking' structure is for future enhancements. Currently, the structure will always be returned with empty arrays. Error Reporting When an error occurs the function will, where possible, make extra information related to the error available to the application via the Parasolid report stream. When PK_ERROR_inconsistent_geom is returned from the function a record of type PK_REPORT_record_type_1_c with a status of PK_REPORT_inconsistent_geom_c will be created for each pair of mismatched vertices. The vertices will be returned in the 'old_items' list. The 'new_items' list will be empty.Generated on: Fri, 04 Oct 2024 12:16:58 GMT