Updating to Version 20
Except as discussed below, your v19 code should continue to work without change with v20. As always, header files have changed so you must completely recompile all code with the new headers. The AP242e3 and AP238e3 EXPRESS definitions used by the v20 release introduces new definitions that you may want to writing new code for.
The face_or_surface and edge_or_curve select types used by tesselated models were changed slightly. The face type was tightened to the face_surface subtype and edge to edge_curve. Code using the early-bound access methods must change to the function names matching the new types. Code using rose_get_nested_object() or rose_put_nested_object() should not require any changes.
We have added some behind-the-scenes improvements that make it possible to ship new add-on class libraries for incrementally testing new extensions to the STEP models. An extension for GUID assignments has already been defined and others may appear over coming months.
The STEP faceter has had many internal improvements, but these do not change any of the programming APIs. The extension functions for AP context, product contexts, and product definition contexts now use appropriate string values for each of the different supported schemas.
Updating to Version 19
The AP242e2 EXPRESS definitions in v19 require a few changes to
code written for v18 and earlier. We also renamed many functions in
the stix
library. This makes things easier to find, but
we have #defines
for the old names so you can update at
your leisure. Finally, we simplified the meshing API and merged it
into the stix
library, which will require some code and
compile/link changes to applications that were using the mesher.
v19 EXPRESS Changes
AP242e2 revised some entity attributes and select types in a way that is transparent in data files, but may require some programming adjustments.
One such change was made to representation_relationship, which is found in most geometry. The rep_1 and rep_2 fields now refer to a select type rather than directly to a representation. The following functions will simplify adjusting your code:
stix_asm_get_reprel_1(rel) --> replaces rel->rep_1() stix_asm_get_reprel_2(rel) --> replaces rel->rep_2() stix_asm_put_reprel_1(rel,rep) --> replaces rel->rep_1(rep) stix_asm_put_reprel_2(rel,rep) --> replaces rel->rep_2(rep)
v19 Name Changes
The stix
library functions simplify working with STEP
data, but many names lacked structure, making them difficult to find.
We revised the function and class names so that they are grouped
topically, along a three level naming pattern. All of the STEP
extensions begin with stix
, followed by a short topic area, like
asm
, product
, rep
, or tol
. Finally, the
action, like make
, or other distinguishing aspect.
The headers have #defines
for all of the original
names, so you do not need to change existing code. To see what needs
to change, just disable the old names by defining
STIX_NO_DEPRECATED_NAMES on the compile line or in your code.
#define STIX_NO_DEPRECATED_NAMES
The original and new names are listed below:
Deprecated Name Current Name stix_get_ap_context() stix_apcontext_find() stix_make_ap_context() stix_apcontext_make() stix_merge_ap_contexts() stix_apcontext_merge() stix_find_root_products() stix_asm_find_root_products() stix_find_root_shapes() stix_asm_find_root_shapes() stix_find_shapes_wo_product() stix_asm_find_shapes_wo_product() stix_get_related_pdef() stix_asm_get_related_pdef() stix_get_relating_pdef() stix_asm_get_relating_pdef() stix_get_reprel_1() stix_asm_get_reprel_1() stix_get_reprel_2() stix_asm_get_reprel_2() stix_put_related_pdef() stix_asm_put_related_pdef() stix_put_relating_pdef() stix_asm_put_relating_pdef() stix_put_reprel_1() stix_asm_put_reprel_1() stix_put_reprel_2() stix_asm_put_reprel_2() stix_tag_asms() stix_asm_tag() stix_get_cone_angle() stix_cone_get_angle() stix_get_edge_end() stix_edge_get_end() stix_get_edge_start() stix_edge_get_start() stix_get_angle_value() stix_measure_get_angle() stix_get_count_value() stix_measure_get_count() stix_get_descriptive_value() stix_measure_get_descriptive() stix_get_feedrate_value() stix_measure_get_feedrate() stix_get_length_value() stix_measure_get_length() stix_get_measure_current_value() stix_measure_get_current() stix_get_measure_lower_limit_value() stix_measure_get_lower_limit() stix_get_measure_precision_value() stix_measure_get_precision() stix_get_measure_std_uncertainty() stix_measure_get_std_uncertainty() stix_get_measure_upper_limit_value() stix_measure_get_upper_limit() stix_get_measure_value() stix_measure_get_value() stix_get_pressure_value() stix_measure_get_pressure() stix_get_ratio_value() stix_measure_get_ratio() stix_get_spinrate_value() stix_measure_get_spinrate() stix_get_time_value() stix_measure_get_time() stix_make_angle_measure() stix_measure_make_angle() stix_make_angle_measure_item() stix_measure_make_angle_item() stix_make_length_measure() stix_measure_make_length() stix_make_length_measure_item() stix_measure_make_length_item() stix_make_measure() stix_measure_make() stix_make_measure_item() stix_measure_make_item() stix_make_measure_value() stix_measure_make_value() stix_make_qualified_measure_item() stix_measure_make_qualified_item() stix_make_ratio_measure() stix_measure_make_ratio() stix_make_ratio_measure_item() stix_measure_make_ratio_item() stix_make_time_measure() stix_measure_make_time() stix_make_time_measure_item() stix_measure_make_time_item() stix_put_measure_lower_limit_value() stix_measure_put_lower_limit() stix_put_measure_precision_value() stix_measure_put_precision() stix_put_measure_std_uncertainty() stix_measure_put_std_uncertainty() stix_put_measure_upper_limit_value() stix_measure_put_upper_limit() stix_get_polyline_point() stix_polyline_get_point() stix_get_polyline_size() stix_polyline_get_size() stixmesh_make_pdef_context() stix_pdef_make_context() stixmesh_create_ap242_product_definition_for_shape_rep() stix_pdef_make_for_shape() stix_merge_product_contexts() stix_product_merge_contexts() stixmesh_make_product_context() stix_product_make_context stixmesh_create_ap242_product_definition_for_shape_rep() stix_product_make_for_shape() stix_get_property_owner() stix_property_get_owner() stix_get_property_owner_as_pdef() stix_property_get_owner_as_pdef() stix_get_shape_property() stix_property_get_shape() stix_has_properties() stix_property_has() stix_tag_props() stix_property_tag() stix_get_context_angle_unit() stix_rep_angle_unit() stix_get_context_length_unit() stix_rep_length_unit() stix_get_context_solid_angle_unit() stix_rep_solid_angle_unit() stix_get_context_uncertainty() stix_rep_uncertainty_item() stix_get_context_uncertainty_value() stix_rep_uncertainty() stix_get_context_unit() stix_rep_find_unit() stix_make_geometry_context() stix_rep_make_context() stix_merge_rep_contexts() stix_rep_merge_contexts() stix_find_nested_repitems() stix_rep_find_nested_items() stix_get_angle_item() stix_rep_find_angle_item() stix_get_count_item() stix_rep_find_count_item() stix_get_descriptive_item() stix_rep_find_descriptive_item() stix_get_feedrate_item() stix_rep_find_feedrate_item() stix_get_length_item() stix_rep_find_length_item() stix_get_measure_item() stix_rep_find_measure_item() stix_get_pressure_item() stix_rep_find_pressure_item() stix_get_ratio_item() stix_rep_find_ratio_item() stix_get_rep_item() stix_rep_find_item() stix_get_spinrate_item() stix_rep_find_spinrate_item() stix_get_time_item() stix_rep_find_time_item() stix_translate_geometry_units() stix_rep_translate_geometry_units() stix_get_styled_rep() stix_style_get_rep() stix_get_styled_repitem() stix_style_get_repitem() stix_put_styled_rep() stix_style_put_rep() stix_put_styled_repitem() stix_style_put_repitem() stixmesh_create_tessellated_solid stix_tess_make_solid stixmesh_create_tessellated_shape_rep stix_tess_make_shape_rep stix_make_tolerance() stix_tol_make() stix_make_datum() stix_tol_make_datum() stix_make_datum_system() stix_tol_make_datum_system() (all other tolerance functions already follow this pattern) stix_trim_get_point() stix_get_trimming_point() stix_get_const_unit() stix_unit_get_const() stix_get_measure_type() stix_unit_get_measure_type() stix_get_unit_fullname() stix_unit_get_fullname() stix_get_unit_name() stix_unit_get_name() stix_get_unit_type() stix_unit_get_type() stix_make_named_unit() stix_unit_make_named() stix_make_unit() stix_unit_make() stix_merge_units() stix_unit_merge() stix_put_const_unit() stix_unit_put_const() stix_tag_units() stix_unit_tag() stix_make_direction() stix_vec_make_direction() stix_make_cartesian_point() stix_vec_make_point() stix_get_direction_ijk() stix_vec_put_as_direction() stix_get_point_xyz() stix_vec_put_as_unit() stix_make_ap3d() stix_xform_make_ap3d() stix_make_cto3d() stix_xform_make_cto3d()
v19 Meshing Changes
The STEP meshing API has been simplified and merged into the
stix
library, which requires changes as described below.
Remove the stixmesh
library and include directory from
project settings. The setup
instructions have the current project settings.
The stix_mesh_make() and stix_mesh_make_all() functions create meshes, using backround threads for speed, and automatically cache the results with the source STEP object. The StixMeshStpAsyncMaker, StixMeshStp and StixMeshStpBuilder classes were retired.
The RoseMeshFacetSet has been renamed RoseMesh and a subtype called StixMesh is used, with extra functions to return the STEP source objects for faces and edges.
// OLD CODE StixMeshStpAsyncMaker mesher; loop over all renderable things { if (!StixMeshStpBuilder::canMake(rep, it)) mesher-> startMesh(rep, it); } StixMeshStp * mesh; while ((mesh = mesher.getResult(1))) { // connect results back to source data } // NEW CODE stix_mesh_make_all(design); // does all in parallel loop over all renderable things { // call stix_mesh_find to get mesh if one exists }
Specific before and after details are listed in the table below. The mesh documentation has a complete example of the new functions. The STEP assembly functions now also make it easy to find the shape representations and fully resolved final placement for each item in an assembly.
Old Definition | New Definition | Notes |
---|---|---|
#include <stixmesh.h> | #include <stix.h> | |
RoseMeshFacetSet | RoseMesh | This is the core class of the meshing API. |
rose_mesh_bounds() | RoseMesh::applyMeshBounds() or RoseMesh::applyFacetBounds() |
One function, clear box before calling. |
rose_mesh_update_bounds() | Same as above | |
rose_mesh_get_color() | RoseMesh::getFaceColor() or RoseMeshFace::getColor() |
Integrated value into face. |
rose_mesh_set_color() | RoseMesh::setFaceColor() or RoseMeshFace::setColor() |
Integrated value into face. |
StixMeshStp | StixMesh | Now a subtype of RoseMesh. |
StixMeshStp::getFace() | StixMesh::getStpFace() | |
StixMeshStp::getFaceInfo() | StixMesh::getFaceInfoFromStp() | |
StixMeshStp::getFacetSet() | none, use object directly | StixMeshStp was was a stand-alone object with a reference to mesh data, now StixMesh is a mesh that can be used directly. |
StixMeshStp::getNormal() | StixMesh::getNormal() | Now fills double[3]. Old double* return deprecated as _getNormal() |
StixMeshStp::getVertex() | StixMesh::getVertex() | Now fills double[3]. Old double* return deprecated as _getVertex() |
StixMeshStpAsyncMaker | stix_mesh_make(), stix_mesh_make_all() |
Associates mesh with STEP object,
stixmesh_cache no longer needed. |
StixMeshStpBuilder | StixMesh | Mesh has lock()/unlock() functions, separate builder not needed. |
StixMeshStpBuilder::getCompleteStpMesh() | this (now a StixMesh) |
No need for separate builder class. |
StixMeshStpBuilder::getNormalUnsync() | RoseMesh::getNormal() | Call lock/unlock for thread-safety |
StixMeshStpBuilder::getVertexUnsync() | RoseMesh::getVertex() | Call lock/unlock for thread-safety |
StixMeshStpBuilder::setTolerance() | getOptions()->getToleranceAbsolute() | A default will be calculated if not set |
StixMeshStpFace | RoseMeshFaceInfo | |
StixMeshOptions | RoseMeshOptions | |
stixmesh_cache_* functions | stix_mesh_find | Cache functions not needed, mesh associated with STEP object by "make". |
stixmesh_create() | stix_mesh_make() | |
stixmesh_get_stp_face() | StixMesh::getStpFace() | |
stixmesh_get_stp_faceinfo() | RoseMesh::getFaceInfo() | |
stixmesh_has_shell() | stix_mesh_can_make() |