Interface Changes   

<<< Functional Enhancements Chapters Environment >>>

Contents

[back to top]


7.1 Introduction

This chapter describes changes that have been made to the PK interface for Parasolid V13.0. This information is structured as follows:

[back to top]


7.2 PK functions and typedefs with changes in behavior

This section describes enhancements made to existing PK functions and typedefs since Parasolid V12.1, resulting in a change to the function interface or a change in behavior.

We recommend that you review the use of these functions in your applications.

[back to top]

7.2.1 Specifying blend radius during face change operations

Changed structure

PK_FACE_change_blend_o_t

If the operation PK_FACE_change_type_blend_c is requested in PK_FACE_change, you can now specify the radius of the blend when it is reapplied. If no blend radius is specified the radius used when the blend is reapplied is that of the original blend.

[back to top]

7.2.2 Errors during face change operations

Changed function

PK_FACE_change

PK_FACE_change can now return the errors

If such an error is returned at least one of the requested operations has failed.

[back to top]

7.2.3 Changes to blending algorithms

New structure

PK_blend_edge_update_t

Changed structure

PK_BODY_fix_blends_o_t

The new update option enables or disables some changes to the blending algorithms that might cause differences in model updates between different versions of Parasolid.

[back to top]

7.2.4 Errors during outline curves operations

Changed function

PK_BODY_make_curves_outline

PK_BODY_make_curves_outline may return:

[back to top]

7.2.5 Invalid matched regions

Changed functions

PK_BODY_boolean
PK_BODY_boolean_2

These functions now return PK_ERROR_invalid_match_region if the topologies in the matched region are not in the target or tools for the boolean operation.

[back to top]

7.2.6 Control of coincident edges in booleans or sectioning

Changed structures

PK_BODY_boolean_o_t
PK_FACE_boolean_o_t
PK_BODY_section_o_t
PK_FACE_section_o_t

There is a new keep_target_edges option that controls which edge survives when two edges are coincident in a boolean or section operation.

[back to top]

7.2.7 Clashing faces

Changed function

PK_TOPOL_clash

PK_TOPOL_clash has been modified to allow individual faces to be clashed together. Previously, it was only possible to clash entire bodies.

[back to top]

7.2.8 Attaching curve copies when sharing not possible

Changed function

PK_EDGE_attach_curve_nmnl

Previously, PK_EDGE_attach_curve_nmnl shared curves that were already attached to edges, fins or nominal geometry, and failed if sharing was not possible. This behavour has now changed, so that if sharing is not possible a copy of the curve is made and attached to the edge.

[back to top]

7.2.9 Creating bodies with curves in different partitions

Changed function

PK_CURVE_make_wire_body_2

When making a body with PK_CURVE_make_wire_body_2, any input curves in a partition other than the current partition will be duplicated. The resultant body will always be in the current partition.

[back to top]

7.2.10 Creating periodic B-curves

Changed structure

PK_knot_type_t

A new value, PK_knot_do_wraparound_c, allows you to create periodic B-curves using the same data as in the KI function CRBSPC.

[back to top]

7.2.11 Removing duplicate sheets when sewing

Changed function

PK_BODY_sew_bodies

Changed structure

PK_BODY_sewing_removal_t

Identification and removal of duplicate sheets within PK_BODY_sew_bodies has been extended. You can now use the duplicate_removal option to request that sheets are removed if they are duplicates to within the tolerance given as the gap_width_bound of the sewing operation.

[back to top]

7.2.12 Parameters for facet vertices and degeneracies

Changed structures

PK_facet_degen_t
PK_TOPOL_facet_mesh_o_t

PK_facet_degen_t can now take the value PK_facet_degen_average_parms_c, which allows multiple vertices to be output at singularities in the same way as PK_facet_degen_multiple_vxs_c.

In this case when a facet vertex occurs at a degeneracy, the value of the degenerate parameter at the degenerate vertex is the average of the values of that parameter at the two facet vertices at the other ends of the facet edges which meet at the degenerate vertex. The normals and derivatives at the degenerate vertex are evaluated using this average value for the degenerate parameter.

[back to top]

7.2.13 Adding change events to bodies to the bulletin board

Changed structure

PK_BB_sf_t

You can now specify that change events to bodies should appear on the bulletin board. If this is specified in the PK_BB_sf_t argument to PK_BB_create, then the first change to a body after the bulletin board was created or emptied, will result in a change event on the bulletin board.

[back to top]


7.3 New Parasolid functionality

This section describes new PK functions and typedefs that have been added to Parasolid V13.0. These interface changes have been made to provide access to new functionality in Parasolid.

[back to top]

7.3.1 Improvements to face-face blending

Changed function

PK_FACE_make_blend

Changed structures

PK_FACE_make_blend_o_t
PK_blend_shape_t

New structures

PK_blend_xs_shape_t
PK_blend_xs_plane_t

The capabilities of face-face blending have been expanded so that you can now choose the cross-sectional shape of any blend directly.

Any face-face blend may now be a chamfer, a curvature continuous blend or a conic blend. This is controlled by setting xs_shape in the PK_blend_shape_t substructure of the option structure.

You can now create constant radius blends with disc and isoparameter cross-section planes, using the xsection option. Previously, these were only possible with rolling-ball cross-section planes.

[back to top]

7.3.2 Identifying blend faces

New function

PK_FACE_identify_blends

New structures

PK_FACE_identify_blends_o_t
PK_FACE_identify_blends_r_f
PK_FACE_identify_blends_r_t
PK_comparison_t

It is now possible to identify any constant radius blend faces in a supplied array of faces, together with their radii and convexities.

[back to top]

7.3.3 Identifying facesets

New function:

PK_BODY_find_facesets

New structures:

PK_BODY_find_facesets_o_t
PK_BODY_find_facesets_r_t
PK_BODY_find_facesets_r_f

You can use PK_BODY_find_facesets to divide a body into a series of facesets bounded by a given array of edges.

[back to top]

7.3.4 Identifying and deleting model details

New functions:

PK_BODY_identify_details
PK_FACE_delete_facesets

New structures:

PK_BODY_identify_details_o_t
PK_FACE_delete_facesets_o_t
PK_detail_t
PK_identify_details_r_t
PK_identify_details_r_f

You can use PK_BODY_identify_details to return facesets in a body that correspond to specified types of detail. You can use PK_FACE_delete_facesets to remove as many of its given facesets as possible. These two functions can be used in conjunction to provide a robust method of identifying and removing certain types of detail from a body.

[back to top]

7.3.5 Double-sided tapering

New function

PK_BODY_taper

New structure

PK_BODY_taper_o_t

Parasolid's tapering functionality has been extended to provide single-pass double-sided tapering of a body. This function is particularly useful for mold design applications that implement parted casting design.

 

Note: It is not currently possible to omit a chain of references either above or below a parting line. This will be made possible in a future release of V13.

[back to top]

7.3.6 Creating step offsets

Changed structures

PK_BODY_offset_o_t
PK_FACE_offset_o_t

A new option, offset_step , has been added to these options structures. This option creates step faces along any smooth boundaries between offset and non-offset faces when calling PK_BODY_offset_2 or PK_FACE_offset_2.

[back to top]

7.3.7 Controlling face merging when replacing faces

Changed structure

PK_FACE_replace_surfs_o_t
PK_FACE_change_replace_o_t

New structure

PK_replace_merge_t

It is now possible to replace the surfaces of multiple faces with a single surface by passing the replacement surface only once. Previously, it needed to be passed for every face being replaced.

A new datatype in PK_FACE_replace_surfs_o_t lets you control the required level of merging when adjacent faces become mergable as a result of a face replace operation. No merging is performed for edges for which replacement curves have been provided. Merging is recommended when adjacent faces are to acquire identical surfaces.

[back to top]

7.3.8 Generating patches for filling holes in sheets

Changed function

PK_BODY_fill_hole

Changed structures

PK_BODY_fill_hole_o_t
PK_fill_hole_fault_t
PK_fill_hole_method_t

Parasolid can now generate suitable faces to fill a hole using PK_BODY_fill_hole, rather than require that your application supplies a suitable sheet body. The boundary of the hole is maintained, and the filling geometry meets the surrounding faces on the hole smoothly where possible.

[back to top]

7.3.9 Improvements to sweep

Changed function

PK_BODY_make_swept_body

Changed structure

PK_BODY_make_swept_body_o_t

New structure

PK_BODY_sweep_fair_t

A new PK_BODY_make_swept_body option has been introduced to allow internal improvement of "bad" sweep paths. This contains a single method that removes twists from regions of paths that have rapidly changing curvature.

[back to top]

7.3.10 Simplifying geometry

New function

PK_FACE_simplify_geom

New structure

PK_FACE_simplify_geom_o_t

You can now simplify the B-geometry for a supplied list of faces and their edges. Previously, it was only possible to simplify the B-geometry of an entire body.

[back to top]

7.3.11 Applying derivative constraints to guide wires

Changed structure

PK_BODY_make_lofted_body_o_t

Derivative constraints can now be applied to guide wires when constructing a lofted body using PK_BODY_make_lofted_body.

[back to top]

7.3.12 Multiple viewports

Changed structures

PK_TOPOL_render_line_o_t
PK_render_viewport_t

You can now use multiple viewports with PK_TOPOL_render_line. The existing single viewport functionality remains unchanged. An extra option is available to let you specify an array of multiple viewports.

[back to top]

7.3.13 Smoothness tolerance between rendered faces

Changed structure

PK_TOPOL_render_line_o_t

You can now specify a tolerance on the smoothness between faces when rendering edges. This is specified using the new options is_edge_smoothness_tol and edge_smoothness_tol in PK_TOPOL_render_line_o_t. If the angle between the normals of the relevant faces is below edge_smoothness_tol , the edge is considered smooth and indicated as such.

[back to top]

7.3.14 Support for Unicode part keys

Changed functions

PK_SESSION_ask_frustrum
PK_SESSION_register_frustrum
PK_SESSION_ask_applio
PK_SESSION_register_applio

New functions

PK_SESSION_ask_unicode
PK_SESSION_set_unicode

Changed structures

PK_UCOPRD_f_t
PK_UCOPWR_f_t
PK_SESSION_applio_t

Parasolid now supports part keys in 16-bit Unicode form as well as the native character set. To preserve runtime compatibility with older applications, the extra fields in various Frustrum structures must be explicitly enabled via PK_SESSION_set_unicode; otherwise the fields are ignored and the appropriate receive/transmit functions will fail.

[back to top]

7.3.15 Support for transmitting parts in XML format

Changed structure:

PK_transmit_format_t

To support embedding XT files in XML data, the new token PK_transmit_format_xml_c allows you to generate text part, partition, and session files in which the < and & characters are escaped with &lt; and &amp; respectively.

[back to top]

7.3.16 Setting the amount of memory requested by Parasolid

New functions

PK_MEMORY_ask_block_size
PK_MEMORY_set_block_size

A new function, PK_MEMORY_set_block_size, has been added which allows you to set the smallest block of contiguous space that Parasolid requests when acquiring workspace and modeling memory via FMALLO. PK_MEMORY_set_block_size lets you specify a minimum block size between 130,776 bytes (the default) and 16,736,280 bytes. It can be called at any time, whether or not the modeler is running.

PK_MEMORY_ask_block_size returns the current minimum block size.

The minimum block size can be returned to Parasolid's default by calling PK_MEMORY_set_block_size with an argument of zero. When the modeler is stopped the smallest block size is always returned to Parasolid's default block size.

 

Note: If the smallest block size is increased above the default of 130,776 bytes, then the amount of memory permanently retained by Parasolid increases accordingly.

[back to top]


7.4 New PK Interface tokens

PK_knot_type_t

PK_knot_smooth_seam_c

8506

PK_boolean_region_t

PK_boolean_off_c

15949

PK_FACE_heal_t

PK_FACE_heal_yes_c

18085

PK_transmit_format_t

PK_transmit_format_xml_c

18224

PK_blend_xs_plane_t

PK_blend_xs_rolling_ball_c

18490

PK_blend_xs_disc_c

18491

PK_blend_xs_isoparameter_c

18492

PK_render_viewport_t

PK_render_viewport_array_c

20422

PK_facet_degen_t

PK_facet_degen_average_parms_c

20582

PK_local_status_t

PK_local_status_not_supported_c

21465

PK_fill_hole_fault_t

PK_fill_hole_not_smooth_c

22093

PK_fill_hole_too_complex_c

22094

PK_fill_hole_method_t

PK_fill_hole_create_patch_c

22102

PK_blend_edge_update_t

PK_blend_edge_update_0_c

22190

PK_blend_edge_update_1_c

22191

PK_blend_xs_shape_t

PK_blend_xs_shape_unset_c

22200

PK_blend_xs_shape_conic_c

22201

PK_blend_xs_shape_g2_c

22202

PK_blend_xs_shape_chamfer_c

22203

PK_BODY_sweep_fair_t

PK_BODY_sweep_fair_no_c

22210

PK_BODY_sweep_fair_twist_c

22211

PK_comparison_t

PK_comparison_always_c

22220

PK_comparison_less_c

22221

PK_comparison_equal_c

22222

PK_comparison_greater_c

22223

PK_comparison_between_c

22224

PK_comparison_outside_c

22225

PK_comparison_never_c

22226

PK_blend_identify_t

PK_blend_identify_within_c

22240

PK_blend_identify_exc_chain_c

22241

PK_blend_identify_inc_chain_c

22242

PK_blend_identify_max_chain_c

22243

PK_blend_identify_dependent_c

22244

PK_detail_t

PK_detail_any_c

22250

PK_detail_rubber_c

22251

PK_detail_hole_cyl_c

22252

PK_detail_hole_cyl_through_c

22253

PK_detail_hole_cyl_blind_c

22254

PK_detail_hole_cyl_closed_c

22255

PK_detail_blend_rb_const_r_c

22256

PK_replace_merge_t

PK_replace_merge_no_c

22300

PK_replace_merge_in_c

22301

PK_replace_merge_out_c

22302

PK_offset_step_t

PK_offset_step_no_c

22310

PK_offset_step_yes_c

22311

[back to top]


7.5 New PK interface error codes

 

PK_ERROR_duplicate_name

5135

PK_ERROR_failed_to_make_outline

5136

PK_ERROR_failed_to_blend

5137

PK_ERROR_failed_to_offset

5138

PK_ERROR_failed_to_taper

5139

PK_ERROR_failed_to_transform

5140

PK_ERROR_journalling_on

5141

PK_ERROR_dbg_rprt_not_stopped

5142

PK_ERROR_dbg_rprt_not_started

5143

[back to top]


7.6 Undocumented changes

This section describes changes that may be made to Parasolid at any given release, but are not explicitly documented.

 

Warning: The following are not guaranteed to be consistent between different versions of Parasolid, and may change between releases without notice. Your application code should not rely on this behavior.

[back to top]


7.7 Changes to the Parasolid documentation

In addition to documentation covering the changes and additions to Parasolid functionality, the following changes have been made to the PK Interface documentation that do not affect any existing code.

[back to top]

7.7.1 New manuals in the documentation set

Three new manuals have been added to the documentation set for Parasolid V13.0. These are:

These manuals are all available from the home page of the Parasolid HTML documentation set, and are available in PDF format by following the PDF files link on the home page.

[back to top]

7.7.2 New face-face blending documentation

The documentation for Parasolid's face-face blending functionality has been completely rewritten. For more information, see Chapter 33, "Face-Face Blending", of the Functional Description.

[back to top]

7.7.3 Documentation for datatypes and structures

PK reference documentation is now available for all datatypes of the form PK_ CLASS_t and PK_ CLASS_array_t. This means you can now click on any Parasolid-typed function argument or option field in the HTML PK reference documentation to read more information.

[back to top]


7.8 Undocumented PK functions

[back to top]

7.8.1 Debug functionality

Parasolid includes a number of PK_DEBUG functions that you can use to obtain additional information when debugging calls to PK functionality. Documentation for these functions is provided in the PK Interface Programming Reference Manual, but there is no description of functionality in the accompanying Functional Description.

 

Note: You should not include calls to any PK_DEBUG functions in a released product.

[back to top]

7.8.2 Approximate evaluations on geometry

The following functions are present within Parasolid to support applications with legacy code. We do not recommend the use of these functions and as such, the functions have not been included in the documentation.

To obtain the documentation or information regarding these functions, contact Parasolid Technical Support.

[back to top]

7.8.3 Other undocumented functions

The following function is undocumented and should not be used in application code. It is provided only for backward compatibility.

 

[back to top]

<<< Functional Enhancements Chapters Environment >>>