![]() |
PK_BODY_apply_knit_pattern |
PK_ERROR_code_t PK_BODY_apply_knit_pattern ( --- received arguments --- const PK_BODY_t body, --- target body const PK_BODY_knit_pattern_t *knit_pattern, --- knitting pattern --- to be applied const PK_BODY_apply_knit_pattern_o_t *options, --- options --- returned arguments --- PK_BODY_knit_result_t *const knit_result --- status, edges not knit ) This function assembles a composite sheet or solid body by merging paired edge in the knit pattern This function does not support facet geometry [NF] Specific Errors: PK_ERROR_corrupt_body Corrupted target body PK_ERROR_bad_type bad type PK_ERROR_wire_body An edge in the pattern is from a wire body PK_ERROR_no_eds_from_target No edges in the pattern are from target body PK_ERROR_instanced_tools An edge is from an instanced (non-target) body PK_ERROR_duplicate_array_item The same edge appears in both lists or twice in one of the lists PK_ERROR_not_in_same_partition Edges are not all in the same partition PK_ERROR_general_body One of the edges is owned by a general body This function joins a number of faces or bodies together by fusing coincident edge topology. This process is henceforth referred to simply as "knitting"; it should be noted that it is a purely topological operation which will NOT perform any geometric checks whatsoever. See Knitting sheets together for more information. See Applying connectivity information for information specific to this function. 'body' is the 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 edges held in the knitting pattern supplied in 'knit_pattern'. 'body' must be a solid or sheet body, and all edges in the knitting pattern must be edges of solids and/or sheets. All bodies except 'body' involved in the knit will be destroyed. The edges in the 'edges' array within the knitting pattern will survive the knit while those in 'matches' array of the same pattern will be destroyed. The outer shell of 'body' will also be the outer shell of the result. The two edge arrays of the knitting pattern specify matching edge pairs to be fused together. These must not contain duplicate entries. In addition, at least one edge from the target 'body' must appear in the pattern and any edge not in that target body must not come from an instanced body. Pairs of edges in corresponding positions in the 'edges' and 'matches' arrays of the knitting pattern will be knitted together, provided that these corresponding edges satisfy the following: (1) they match up 1:1, i.e. every edge in 'edges' has ONE partner in 'matches' (2) they have the same number of distinct vertices. (3) an edge in sheet body has only one adjacent face and a face in a solid body has one adjacent face with a surface attached and one without. The 1:1 matching is done automatically by other routines in the most common uses of PK_BODY_apply_knit_pattern. In Partial Booleans the pattern edge lists are made up by PK_BODY_imprint_body and then further filtered by PK_BODY_identify_facesets. PK_BODY_find_knit_pattern can also be used to infer the connectivity of an assemblage of sheets. The application can, of course, create a knitting pattern itself, though it then runs the risk of creating an inconsistent body if geometric tolerance requirements are not met. The option field 'body_type' enables the application to force the type (PK_BODY_sewing_solid_c or PK_BODY_sewing_sheet_c) of the result body. If the token PK_BODY_sewing_any_c is supplied then a solid will be created if possible (i.e. if the knitting operation encloses a volume) and a sheet will be created otherwise. The option field 'sort_face_shells' enables the application to control whether PK_BODY_apply_knit_pattern attempts to sort the resulting faces into their respective shells. This operation will not need to be done when PK_BODY_apply_knit_pattern is used within a partial Boolean. The returned structure 'knit_result' holds information about the edges that were not knitted together, and the level of success in applying the knitting pattern. Within 'knit_result' the array 'unknit_edges' contains all those edges from the 'edges' array within 'knit_pattern' which did not knit together because of a failure to meet the conditions described above. In the cases where a solid body was required ('type' PK_BODY_sewing_solid_c) the 'unknit_edges' array will additionally contain all edges in the result body which have only one adjacent face with a surface attached. The presence of such edges in a knitted solid is a consequence of the received knitting pattern being incomplete (i.e. edges were omitted from the knitting pattern which were necessary in order to successfully enclose a volume). The 'status' field of 'knit_result' will be set to PK_BODY_knit_not_completed_c in such cases, though all edges not in 'unknit_edges' will still have been knitted successfully. The 'status' field of 'knit_result' will normally be set to PK_BODY_knit_completed_c on a successful knit. Note that the error PK_ERROR_corrupt_body should never be returned in normal operation, and indicates either an internal failure or a corrupt input body. This function is not supported for general bodies.Generated on: Fri, 04 Oct 2024 12:16:35 GMT