Annotations: Annotation Features and Annotations
This section describes how to access annotation features for special customizations. It provides specific functions for creation, access, and modification of annotation features and elements.
Overview of Annotation Features
An annotation feature is a new feature available in Pro/ENGINEER Wildfire 2.0. It is composed of one or more "annotation elements". Each annotation element is composed of references, parameters and annotations (notes, symbols, geometric tolerances, surface finishes, reference dimensions, driven dimensions, and manufacturing template annotations). The annotation feature allows annotation information to have the same benefits as geometry in Creo Parametric models, that is, parameters can be assigned to these annotation elements, and missing geometric references can cause features to fail in some situations.
The feature type PRO_FEAT_ANNOTATION represents an annotation feature. Functions referring to annotation features use the structure ProAnnotationfeat, which is identical to ProFeature.
Functions referring to annotation elements use the structure ProAnnotationElem which is identical to the structure ProModelitem and is defined as
typedef struct pro_model_item 
{ 
   ProType type;
   int id;
   ProMdl owner;
}ProAnnotationElem
Like other ProModelitem derivatives, each annotation element has a unique id assigned to it in the model.
Annotation elements may belong to annotation features, or may also be found in data-sharing features (features like Copy Geometry, Publish Geometry, Merge, Cutout, and Shrinkwrap features).
Creo TOOLKIT does not expose the feature element tree for annotation features because some elements in the tree are used for non-standard purposes. Instead, Creo TOOLKIT provides specific functions for creating, redefining, and reading the properties of annotation features and annotation elements.
Creating Annotation Features
Functions Introduced:
The function ProAnnotationfeatCreate() creates a new annotation feature in the model. Specify the following as the input parameters for this function:
•  model—Specify the solid model on which the feature will be created. Specify the component path if the feature is created in an assembly context.
•  use_ui—Specifies a boolean flag that determines how the annotation features will be created. It can have the following values:
  FALSE—Indicates that the feature will be a new empty annotation feature with one general annotation element in it. Modify the new annotation element and add others using subsequent steps.
  TRUE—Indicates that Creo Parametric will invoke the annotation feature creation user interface.
The function ProDatumtargetAnnotationfeatureCreate() creates a new Datum Target Annotation Feature (DTAF) in the model. This function takes the same input arguments as the earlier function ProAnnotationfeatCreate().
Redefining Annotation Features
Redefining an annotation feature involves creation of new annotation elements, deletion of elements that are not required and modification of the feature properties.
Note
The functions in this section are shortcuts to redefining the feature containing the annotation elements. Because of this, Creo Parametric must regenerate the model after making the required changes to the annotation element. The functions include a flag to optionally allow the Fix Model User Interface to appear upon a regeneration failure.
Functions Introduced:
The function ProAnnotationfeatElementAdd() adds a new non-graphical annotation element to the feature.
The function ProAnnotationfeatElementArrayAdd() adds a series of new annotation elements to the feature. Each element may be created as non-graphical or may be assigned a pre-existing annotation.
Note
In case of Datum Target Annotation Features (DTAFs), you can add only one set datum tag annotation element using the function ProAnnotationfeatElementArrayAdd().
The function ProAnnotationfeatElementDelete() deletes an annotation element from the feature. The function deletes the annotation element, its annotations, parameters, references, and application data from the feature.
Note
In case of Datum Target Annotation Features (DTAFs), ProAnnotationfeatElementDelete() allows you to delete only a Datum Target Annotation Element (DTAE) from a DTAF. This function does not allow deletion of a set datum tag annotation element from the DTAF.
The function ProAnnotationfeatElementCopy() copies and adds an existing annotation element to the specified annotation feature.
Visiting Annotation Features
Functions Introduced:
Use the function ProSolidFeatVisit() to visit the annotation features in the specified model.
The function ProModelitemNameGet() returns the name of the annotation feature.
Creating Datum Targets
Functions Introduced:
The function ProMdlDatumTargetCreate() creates a new datum target. The input arguments are:
•  p_owner_mdl—Specifies the model in which the datum target will be created.
•  type—Specifies the type of target area using the enumerated data type ProDatumTargetType. The valid values are:
  PRO_DATUM_TARGET_NONE
  PRO_DATUM_TARGET_POINT
  PRO_DATUM_TARGET_CIRCLE
  PRO_DATUM_TARGET_RECTANGLE
•  annot_plane—Specifies the annotation plane.
•  attach_sels—Specifies the reference to which the datum target will be attached. To specify a single reference, pass ProSelection for index 0 and NULL for index 1.
For a pair of references, pass ProSelection for both indexes. In this case, the datum target is attached to the solid at the intersection point of the two references.
•  text_pnt—Specifies the location of the text in the datum target.
Visiting Annotation Elements
The functions described in this section enable you to visit all the annotation elements in a solid model.
Functions Introduced:
The function ProFeatureAnnotationelemsVisit() visits the annotation elements in the specified feature.
The function ProSolidAnnotationelemsVisit() visits the annotation elements in a solid model.
The filter function ProAnnotationelemFilterAction() and the visit function ProAnnotationelemVisitAction() are specified as input arguments for the above functions.
The function ProAnnotationelemFilterAction() is a generic function for filtering an annotation element. It returns the filter status of the specified annotation element. The filter status is passed as the input argument to the function ProAnnotationelemVisitAction() which is a generic function for visiting annotation elements.
Accessing Annotation Elements
The following functions provide access to the properties of an annotation element.
Functions Introduced:
The function ProAnnotationelemAnnotationGet() returns the annotation contained in an annotation element.
The function ProAnnotationelemCopyGet() returns the copy flag of the annotation elements. This property is not supported for elements in data sharing features.
The function ProAnnotationelemFeatureGet() returns the feature that owns the annotation element.
The function ProAnnotationelemIsDependent() returns the value of the dependency flag for the annotation element. This property is supported only for the elements in data sharing features.
The function ProAnnotationelemIsIncomplete() returns a true value if the annotation element has missing strong references.
The function ProAnnotationelemReferencesCollect() returns an array of references contained in the specified annotation element. The input arguments for this function are:
•  element—Specifies the annotation element.
•  ref_type—Specifies the type of references and can have one of the following values:
  PRO_ANNOTATION_REF_ALL—All references
  PRO_ANNOTATION_REF_WEAK—Weak references
  PRO_ANNOTATION_REF_STRONG—Strong references
•  source—Specifies the source of the references and can have one of the following values:
  PRO_ANNOTATION_REF_ALL—From both user and annotation.
  PRO_ANNOTATION_REF_FROM_ANNOTATION—From the annotation (or custom data) only.
  PRE_ANNOTATION_REF_FROM_USER—From the user only.
Annotation elements have special default behavior for propagation of datum points to features in other models. The flag that controls this behavior can automatically propagate datum points or any other applicable items to data sharing features after the user has selected all other strong references of the annotation elements.
Here, applicable items are items that are designated to auto-propagate, using a checkbox in the references collector, for specific annotation elements.
The function ProAnnotationelemQuiltreferenceSurfacesCollect() returns the surfaces which make up a quilt surface collection reference for the annotation element.
Note
All the surfaces made inactive by features occurring after the annotation element in the model regeneration are also returned.
The function ProAnnotationelemReferenceAutopropagateGet() gets the autopropagate flag of the specified annotation element reference.
The function ProAnnotationelemTypeGet() returns the type of the annotation contained in the annotation element. It can have one of the following values:
•  PRO_ANNOT_TYPE_NONE—Specifies a non-graphical annotation.
•  PRO_ANNOT_TYPE_NOTE—Specifies a note. Refer to the section Notes for details.
•  PRO_ANNOT_TYPE_GTOL—Specifies a geometric tolerance. Refer to the section Geometric Tolerances for details.
•  PRO_ANNOT_TYPE_SRFFIN—Specifies a surface finish. Refer to the section Surface Finish Annotations for details.
•  PRO_ANNOT_TYPE_SYMBOL—Specifies a symbol. Refer to the section Symbol Annotations for details.
•  PRO_ANNOT_TYPE_DRVDIM —Specifies a driven dimension. Refer to the section Accessing Reference and Driven Dimensions for details.
•  PRO_ANNOT_TYPE_REFDIM—Specifies a reference dimension. Refer to the section Accessing Reference and Driven Dimensions for details.
•  PRO_ANNOT_TYPE_CUSTOM—Specifies a manufacturing template annotation.
•  PRO_ANNOT_TYPE_SET_DATUM_TAG—Specifies a set datum tag. Refer to the section Accessing Set Datum Tags for details.
•  PRO_ANNOT_TYPE_DRIVINGDIM—Specifies a driving dimension annotation element. Refer to the section Driving Dimension Annotation Elements for details.
The function ProAnnotationelemReferenceDescriptionGet() gets the description property for a given annotation element reference.
Note
The description string is same as that of the tooltip text for the reference name in the Annotation Feature UI.
The function ProAnnotationelemReferenceIsStrong() identifies if a reference is weak or strong in a given annotation element.
The function ProAnnotationelemHasMissingrefs() enables you to identify if an annotation element has missing references. The input parameters of this function allow you to investigate specific types and sources of references, or check all references simultaneously.
Modification of Annotation Elements
The functions described in this section allow you to modify the properties of an annotation element.
Note
The functions in this section are shortcuts to redefining the feature containing the annotation elements. Because of this, Creo Parametric must regenerate the model after making the indicated changes to the annotation element. The functions include a flag to optionally allow the Fix Model User Interface to appear upon a regeneration failure.
Functions Introduced:
The function ProAnnotationelemAnnotationSet() allows you to modify the annotation contained in an annotation element. Specify the value for the input argument annotation as NULL to modify the annotation element to be a non-graphical annotation.
Note
The above function does not support Datum Target Annotation Elements (DTAEs).
If you modify the annotation contained in the annotation element, the original annotation is automatically removed from the element and is owned by the model.
The function ProAnnotationelemCopySet() provides write access to the copy flag of the annotation element. This property is not supported for annotations in data sharing features.
The function ProAnnotationelemDependencySet() sets the value for the dependency flag. This property is supported only for annotations in data sharing features.
The function ProAnnotationelemReferenceAdd() adds a strong user-defined reference to the annotation element.
The function ProAnnotationelemReferenceRemove() removes the user defined reference from the annotation element.
The function ProAnnotationelemReferenceStrengthen() converts a weak reference to a strong reference.
The function ProAnnotationelemReferenceWeaken() converts a strong reference to a weak reference.
The function ProAnnotationelemReferenceDescriptionSet() sets the description property for a given annotation element reference.
The function ProAnnotationelemReferenceAutopropagateSet() sets the autopropagate flag of the specified annotation element reference.
The function ProAnnotationelemReferencesSet() replaces all the user-defined references in the annotation element with a ProArray of references specified as the input argument.
The function ProAnnotationelemArrayReferencesSet() replaces all the user-defined references for a ProArray of annotation elements with the ProArray of reference sets specified as the input argument.
Note
All the annotation elements must belong to the same feature. The number of reference sets should match the number of annotation elements to be modified.
The function ProAnnotationreferencesetAlloc() allocates a set of user-defined references to be assigned to an annotation element.
The function ProAnnotationreferencesetReferenceAdd() adds a new reference to an existing set of user-defined annotation references.
The function ProAnnotationreferencesetFree() releases the set of user-defined references to be assigned to an annotation element.
The function ProAnnotationreferencesetProarrayFree() releases an array of reference sets to be assigned to an annotation element.
Example 1: Creating/ Adding Annotation Element Array Reference Set
The sample code in the file CreoTkAnnotationElemArrayReferencesSet.c located at <creo_toolkit_loadpoint>\protk_appls\pt_userguide\creotk_examples\creotk_annotations, shows how to add single or multiple references to an Annotation Element or Annotation Feature prior to single regeneration using ProAnnotationelemReferenceAdd().
Parameters Assigned to Annotation Elements
The functions described in this section allow you to access parameters assigned to the annotation element. Specify the annotation element as the parameter owner for these functions.
Functions Introduced:
The function ProParameterIsEnumerated() identifies an enumerated parameter and returns the available values assigned to it. The output of the function is PRO_B_TRUE if the parameter is enumerated and PRO_B_FALSE if it is not. The output argument also presents ProArray of values that can be assigned to the enumerated parameter.
The function ProParameterRangeGet() identifies whether a parameter is restricted to a range of values. It optionally provides the boundary conditions for the range.
For more information on functions that allow you to view, create, delete, and modify parameters, refer to Core: Parameters.
Automatic Propagation of Annotation Elements
Automatic local propagation of annotation elements can be done based on some specified conditions, using a Creo TOOLKIT application. A Creo TOOLKIT application can register the following notification event types (ProNotifyType):
•  PRO_FEATURE_CREATE_POST
•  PRO_FEATURE_REDEFINE_POST
When an appropriate event occurs during a Creo Parametric session, the associated notification function can invoke a local propagation.
Functions Introduced:
The function ProAnnotationelemAutopropagate() causes the local and automatic propagation of annotation elements to the currently selected feature within the same model, after a supported feature has either been created or modified. The propagation behavior is dependant on the standard Creo Parametric algorithm and on the current contents of the selection buffer.
Following are the list of supported features:
•  Draft
  Surface
  Solid
•  Offset
  Surface
  With Draft
  Expand
•  Mirror Surface
•  Copy Surface
•  Move Surface
The Creo TOOLKIT application can be written so as to specify the condition for the automatic propagation, based on created feature-type, subtype or any other required properties.
The function propagates based on the current contents of the selection buffer.
For notification of type PRO_FEATURE_REDEFINE_POST, Creo Parametric does not automatically populate the selection buffer with the feature that was redefined. The Creo TOOLKIT application would be then required to populate the selection buffer with the feature using the appropriate functions. Refer to the section Selection Buffer in the section User Interface: Selection for more information on selection buffer.
Note
The function ProAnnotationelemAutopropagate() works regardless of the current value for the configuration option, auto_propagate_ae. PTC advises that the Creo TOOLKIT application respect the current value of this configuration option; otherwise, duplicate versions of the propagated annotations can result.
Detail Tree
Creo Parametric 1.0 onwards, when the 3D Annotation tab is active, you can view the active combination state of a model and the annotations assigned to it. This representation is called a Detail Tree. For more information on Detail Tree, see the Creo Parametric help. Use the following functions to refresh, expand, and collapse the detail tree:
Functions Introduced:
Use the function ProDetailtreeRefresh() to rebuild the detail tree in the Creo Parametric window that contains the model.
Use the function ProDetailtreeExpand() to expand the detail tree in the Creo Parametric window.
Use the function ProDetailtreeCollapse() to collapse all nodes of the detail tree in the Creo Parametric window and make its child nodes invisible.
The input arguments to these functions are:
•  solid—Handle to the model that contains the detail tree.
•  window_id—ID of the Creo Parametric window in which you want to refresh, expand, or collapse the detail tree.
Note
Use PRO_VALUE_UNUSED to refresh, expand, or collapse the detail tree in the active window.
Access to Annotations
The structure for the annotations is similar to the structure ProModelitem and is defined as
typedef struct pro_model_item
{ 
   ProType type;
   int id;
   ProMdl owner;
}ProAnnotation
The value of type for different annotations is as follows:
•  PRO_NOTE—Specifies a note. Functions specific to notes use the object type ProNote.
•  PRO_SYMBOL_INSTANCE—Specifies a symbol instance. Functions specific to symbols use the object ProDtlsyminst.
•  PRO_GTOL—Specifies a geometric tolerance. Functions specific to Gtols use the object ProGtol.
•  PRO_SURF_FIN—Specifies a surface finish. Functions specific to surface finish use the object ProSurfFinish.
•  PRO_REF_DIMENSION—Specifies a reference dimension.
•  PRO_DIMENSION—Specifies a driving or driven dimension. Reference, driven and driving dimension functions may use the object type ProDimension.
•  PRO_SET_DATUM_TAG—Specifies a set datum tag annotation. Functions specific to set datum tag use the object type ProSetdatumtag.
•  PRO_CUSTOM_ANNOTATION—Specifies a custom annotation type. Currently, used only for manufacturing template annotations.
Functions Introduced:
The function ProAnnotationElementGet() returns the annotation element that contains the annotation.
The function ProAnnotationByViewShow() displays the annotation of the specified type in the selected view.
The function ProAnnotationByFeatureShow() displays the annotation of the specified type for the selected feature.
The function ProAnnotationByComponentShow() displays the annotation of the specified type for the selected component.
From Creo Parametric 2.0 M060 onward, you can specify the view in which the annotations for the selected feature and component must be displayed. For the functions ProAnnotationByFeatureShow() and ProAnnotationByComponentShow(), specify the view where the annotations must be displayed. If you pass the input argument view as NULL, the annotations are displayed in all the views.
The following types of annotations are displayed for the functions ProAnnotationByViewShow(), ProAnnotationByFeatureShow(), and ProAnnotationByComponentShow():
•  PRO_DIMENSION
•  PRO_REF_DIMENSION
•  PRO_NOTE
•  PRO_GTOL
•  PRO_SURF_FIN
•  PRO_AXIS
•  PRO_SET_DATUM_TAG
•  PRO_SYMBOL_INSTANCE
•  PRO_DATUM_TARGET
If you want to display an annotation which is dependent on another annotation for its display in the drawing, then the Creo TOOLKIT application must first display the parent annotation. Only after the parent annotation is displayed, the application can display its dependent annotations. For example, if a geometric tolerance is placed on a dimension, then the application must call the function ProAnnotationByViewShow() for PRO_DIMENSION type. The dimension is displayed. To display the geometric tolerance, call the function ProAnnotationByViewShow() for PRO_GTOL. The same logic applies for the functions ProAnnotationByFeatureShow(), and ProAnnotationByComponentShow().
The function ProCombstateAnnotationErase() removes an annotation from the display for the specified combined state.
The function ProDrawingAnnotationErase() removes an annotation from the display for the specified drawing. The annotation is not shown in the specified drawing.
Note
The annotation which was removed from the display using the functions ProCombstateAnnotationErase() and ProDrawingAnnotationErase() will become visible again, only if the function ProAnnotationShow() is called to explicitly display the annotation.
The function ProAnnotationShow() shows the annotation in the current combined state. The annotation will be visible until it is explicitly erased from the combined state . The function also adds the specified annotation to the current combined state, if not added. If the specified annotation has been erased, then the function changes the display status of the erased annotation and makes it visible in the combined state, that is, it unerases the annotation.
This function is also capable of showing an annotation in a drawing view similar to the Creo Parametric command Show and Erase. This function supersedes the functions ProDimensionShow() and ProNoteDisplay().
The function ProAnnotationIsShown() returns the display status of the annotation in the current combined state or drawing.
Note
To get the display status of set datum tags in a drawing, use the function ProDrawingSetDatumTagIsShown().
The function ProAnnotationIsInactive() indicates whether the annotation can be shown or not. An annotation becomes inactive if all the weak references it points to have been lost or consumed.
The functions ProAnnotatonDisplay() and ProAnnotationUndisplay() temporarily display and remove an annotation from the display for the specified combined state or drawing. The functions ProAnnotatonDisplay() and ProAnnotationUndisplay() should be used together. To edit a shown annotation, it must be first removed temporarily from display using the function ProAnnotationUndisplay() followed by the editing function calls, and finally must be redisplayed using the function ProAnnotationDisplay(), so that the updated annotation is correctly visible to the user.
The function ProAnnotationUpdate() updates the display of an annotation, but does not actually display it. If the annotation is not currently displayed (because it is hidden by layer status or inactive geometry), the text extracted from the annotation with the mode PRODISPMODE_NUMERIC may include callout symbols, instead of the text shown to the user. ProAnnotationUpdate() informs Creo Parametric to update the contents of the annotation in order to cross-reference these callout values. This function supports 3D model notes of the type ProNote and detail notes of the type ProDtlnote.
When you want to force the display of dimensions or parameters, geometric tolerances (gtols), and so on on a single feature, use the function ProFeatureParamsDisplay().
Note
•  The function ProAnnotationDisplay() supersedes the functions ProDimensionShow() and ProGtolShow().
•  The function ProAnnotationUndisplay() supersedes the functions ProDimensionErase() and ProGtolErase().
•  The function ProDimensionDisplayUpdate() is superseded by a combination of ProAnnotationDisplay() and ProAnnotationUndisplay().
Converting Annotations to Latest Version
Functions Introduced:
The function ProAnnotationNeedsConversion() returns true in the following cases:
•  Annotations created in releases earlier than Creo Parametric 4.0 F000
•  Annotations created using the deprecated functions ProGtolCreate() or ProSetdatumtagCreate()
The input argument annotation can be a gtol, reference dimension, driven dimension, set datum tag, or datum tag which needs to be converted.
The function returns the following values for the output argument needs_conversion:
•  PRO_B_TRUE—When the annotation needs conversion.
•  PRO_B_FALSE—When the annotation is already converted.
The function ProAnnotationLegacyConvert() converts annotations to the latest Creo Parametric version.
You can call the function ProAnnotationLegacyConvert() only if the function ProAnnotationNeedsConversion() returns true.
Annotation Text Styles
Functions Introduced:
The function ProAnnotationTextstyleGet() retrieves the text style for the specified annotation. The input arguments are:
•  annotation—Specifies the annotation.
•  drawing—Specifies a drawing only when the annotation is owned by the solid, but is displayed in the drawing.
•  comp_path—Specifies the component path to the solid that owns the annotation.
Use the function ProTextStyleFree() to free the allocated data structure.
The method ProAnnotationTextstyleSet() sets the text style for the specified annotation.
Annotation Orientation
An Annotation Orientation refers to the annotation plane or the parallel plane in which the annotation lies, the viewing direction, and the text rotation. You can define the annotation orientation using a datum plane or flat surface, a named view, or as flat to screen. If the orientation is defined by a datum plane, you can set its reference to frozen or driven; where frozen indicates that the reference to the datum plane or named view has been removed.
Functions Introduced:
The function ProAnnotationplaneCreate() creates a new annotation plane from either a datum plane, a flat surface, or an existing annotation that already contains an annotation plane.
The function ProAnnotationplaneFromViewCreate() creates a new annotation plane from a saved model view.
The function ProAnnotationplaneFlatToScreenCreate() returns the annotation plane item representing a flat-to-screen annotation in the model. This function takes a ProBoolean input argument by_screen_point, which identifies whether the annotations on this plane are located by screen points, or by model units.
Note
You can only place notes, surface finishes, and symbols as flat to screen. Dimensions, geometric tolerances and set datum tags are not supported as flat-to-screen annotations.
Use the function ProAnnotationplaneTypeGet() to obtain the annotation plane type. It can have one of the following values:
•  PRO_ANNOTATIONPLANE_REFERENCE—The annotation plane is created from a datum plane or a flat surface, and can be frozen or be associative to the reference.
•  PRO_ANNOTATIONPLANE_NAMED_VIEW—The annotation plane is created from a named view or a view in the drawing.
•  PRO_ANNOTATIONPLANE_FLATTOSCREEN_BY_MODELPNT—The annotation plane is flat-to-screen and annotations are located by model units.
•  PRO_ANNOTATIONPLANE_FLATTOSCREEN_BY_SCREENPNT—The annotation plane is flat-to-screen and annotations are located by screen points.
•  PRO_ANNOTATIONPLANE_FLATTOSCREEN_LEGACY—The annotation uses a legacy flat-to-screen format (located in model space).
The function ProAnnotationplaneReferenceGet() returns the planar surface used as the annotation plane.
The function ProAnnotationplanePlaneGet() returns the geometry of the annotation plane in terms of the ProPlanedata object containing the origin and orientation of the annotation plane.
The functions ProAnnotationplaneFrozenGet() and ProAnnotationplaneFrozenSet() determine and assign, respectively, whether the annotation orientation is frozen or driven by reference to the plane geometry. These functions are applicable only for annotation planes governed by references.
The functions ProAnnotationplaneForcetoplaneflagGet() and ProAnnotationplaneForcetoplaneflagSet() return and assign, respectively, the value of the ProBoolean argument force_to_plane for an annotation plane. If this argument is set to PRO_B_TRUE, then the annotations that reference the annotation plane are placed on that plane. If the annotation orientation is not frozen, that is, driven by the reference plane, and if the reference plane is moved, then the annotations also move along with the plane.
The function ProAnnotationplaneViewnameGet() obtains the name of the view that was originally used to determine the orientation of the annotation plane.
Note
If the named view orientation has been changed after the annotation plane was created, the orientation of the plane will not match the current orientation of the view.
The function ProAnnotationplaneVectorGet() returns the normal vector that determines the viewing direction of the annotation plane.
The function ProAnnotationplaneAngleGet() returns the current rotation angle in degrees for a given annotation plane and the text orientation of all annotations on that plane.
The function ProAnnotationplaneActiveGet() returns the active annotation plane in the specified model.
The function ProMdlAnnotplanesFromGalleryCollect() collects the names of all the annotation planes in the gallery. The output argument names is a ProArray of names in the gallery. Use the function ProWstringArrayFree() to free the allocated memory. The function returns the error PRO_TK_EMPTY if there are no annotation planes in the gallery.
The function ProMdlAnnotationplanesCollect() collects the names of all the named annotation planes in the specified model. The function returns the error PRO_TK_EMPTY if there are no annotation planes in the model.
The function ProAnnotationplaneNamesGet() returns the names of the specified annotation plane.
The function ProAnnotationplaneByNameInit() finds and returns the annotation plane with the specified name. The function returns the error PRO_TK_E_NOT_FOUND if the annotation plane with the specified name does not exist.
The function ProAnnotationplaneNameAssign() assigns a name to the specified annotation plane. The function returns the error PRO_TK_E_NOT_FOUND if the specified annotation plane does not exist in the model. The function returns the error PRO_TK_E_FOUND if an annotation plane with the specified name already exists in the model.
Use the function ProAnnotationplaneAddToGallery() to add an annotation plane with the specified name to the gallery.
Use the function ProAnnotationplaneRemoveFromGallery() to remove the annotation plane with the specified name from the gallery.
The function ProAnnotationRotate() rotates a given annotation by the specified angle. This moves the annotation to a new annotation plane with the appropriate rotation assigned. Other annotations on the annotation’s current plane are unaffected by this function.
Note
You can only rotate annotations that belong to annotation elements using the above function.
Annotation Associativity
The functions described in this section allow you to ensure associativity between shown annotations in drawings and 3D models. You can independently control the position associativity and attachment associativity of a drawing annotation.
Note
•  Drawing annotations can have only uni-directional associativity, that is, changes to the position and attachment of the annotation in the 3D model are reflected for the annotation in the drawing view, but not vice-versa.
•  You cannot modify the position associativity and attachment associativity of a drawing annotation from the 3D model.
•  You cannot make free, flat-to-screen annotations in a drawing view associative to the annotations in the 3D model.
•  Annotation properties such as text, jogs, breaks, skew, witness line clippings, and flip arrow states are not associative.
Functions Introduced:
The function ProAnnotationIsAssociative() identifies if a given annotation in a drawing view is associative to the annotation in the 3D model. It has the following output arguments:
•  assoc_position—Specifies if the position of the annotation is associative.
•  assoc_attach—Specifies the attachment associativity. It takes one of the following values:
  PRO_ANNOTATTACH_ASSOCIATIVITY_PARTIAL—Specifies that the drawing annotation is partially associative.
  PRO_ANNOTATTACH_ASSOCIATIVITY_FULL—Specifies that the drawing annotation is fully associative.
•  future_use—This argument is for future use.
The function ProAnnotationPositionUpdate() updates the position of the drawing annotation, and makes it associative to the position of the annotation in the 3D model.
Note
You can update the associative position only for drawing annotations that have their placement based on model coordinates.
The function ProAnnotationAttachmentUpdate() updates the attachment of the drawing annotation, and makes it associative to the attachment of the annotation in the 3D model. Associative attachment of an annotation refers to both – its references and its attachment point on its references.
Note
You can update the associative attachment only for drawing annotations that are attached to the geometry.
Annotation Security
The functions described in this section allow you to manage whether an annotation is designated as a security marking. You can independently control the security marking option of a drawing annotation. You cannot copy such annotations. Annotations designated as security markings have the following characteristics:
•  Always visible whenever the model is viewed in a product that supports the security markings.
•  Listed at the top of the detail tree in an active combined state.
•  Shown by an icon in the Detail Tree and Model Tree.
Functions Introduced:
Use the function ProAnnotationSecuritymarkingSet() to set the security marking option for notes and symbols. The input arguments follow:
•  a
•  annotation—Annotation must be flat to screen, unattached, and standalone note or symbol.
•  is_secure—Pass a ProBoolean value PRO_B_TRUE to designate security marking.
Use the function ProAnnotationSecuritymarkingGet() to retrieve the security marking option for notes and symbols.
Designate an Annotation
Functions introduced:
Use the function ProAnnotationDesignateSet() to set the annotation designate type.
The input arguments for the function ProAnnotationDesignateSet() are:
•  annotation— Specify an annotation
•  designate— Specify the designate type
Use the function ProAnnotationDesignateGet() to get the annotation designate type.
The input argument for this function is:
•  annotation— Specify an annotation
The function returns the value for the output argument designate that gets the designate type.
Interactive Selection
Annotation features, annotation elements, and annotations can be selected interactively using ProSelect() or can be obtained from the selection buffer using the function ProSelbufferSelectionsGet().
For more information on interactive selection refer to section User Interface: Selection.
Display Modes
Functions Introduced:
These functions specify whether the display of dimensions shows symbols or values, and enables you to switch the mode. This is the equivalent to the Creo Parametric command Switch Dimensions in the Relations dialog box.
Designating Dimensions and Symbols
Function Introduced:
The function ProSymbolDesignate() designates a dimension, dimension tolerance, geometric tolerance or surface finish symbol to the specified model.
The function ProSymbolUndesignate() undesignates the dimension, dimension tolerance, geometric tolerance or surface finish symbol from the specified model.
The function ProSymbolDesignationVerify() determines if a dimension, dimension tolerance, geometric tolerance or surface finish symbol has been designated to a model.
Dimensions
The ProDimension Object
The ProDimension object handle is a DHandle that is equivalent to ProModelitem. The owner field can be a solid or a drawing, depending upon where the dimension is stored. Dimensions created in drawing mode may be stored in the drawing or in the solid depending upon the setting of the config.pro option CREATE_DRAWING_DIMS_ONLY. The type field is either PRO_DIMENSION or PRO_REF_DIMENSION. The ID is the integer used to identify the dimension inside Creo Parametric. It corresponds to the numerical part of the default symbol assigned to the dimension when it is created.
The ProDimension object also inherits from ProModelitem, which means that functions such as ProModelitemInit() and ProSelectionModelitemGet() can be used for it (ProDimensionSymbolGet() and ProDimensionSymbolSet() are recommended for this purpose, instead of ProModelitemNameGet() and ProModelitemNameSet()).
Visiting Dimensions
Functions Introduced:
The two visit functions ProSolidDimensionVisit() and ProDrawingDimensionVisit() conform to the usual style of visit functions. (Refer to section Visit Functions in the section Fundamentals.) A dimension is stored in a solid if it is a “shown” dimension, that is, if it was created automatically by Creo Parametric as part of the feature definition. A dimension will also be stored in a solid if it was created in drawing mode while the config.pro option CREATE_DRAWING_DIMS_ONLY was set to NO.
The function ProDimensionSymbolGet() returns the symbol (the name) of the specified dimension.
The function ProDimensionValueGet() returns the value of the dimension.
Some feature dimensions are dependent on dimensions of other features. To modify the dependent dimension, you must get the parent dimension and modify it. Use the function ProDimensionParentGet() to get the parent dimension of the specified dependent dimension. For example, consider a sketch feature, which is used to create an extrude feature. In this case, the section dimensions of the extrude feature depend on the dimensions of the sketch feature. To modify the section dimensions of extrude feature, the dimensions of the sketch feature must be retrieved and modified.
Note
Multiple dimensions may depend on a single parent dimension.
The function ProDimensionTypeGet() returns the type of the dimension in terms of the following values:
•  PRODIMTYPE_LINEAR
•  PRODIMTYPE_RADIUS
•  PRODIMTYPE_DIAMETER
•  PRODIMTYPE_ANGLE
•  PRODIMTYPE_ARC_LENGTH
•  PRODIMTYPE_IPAR_INT
The function ProDimensionNomvalueGet() returns the nominal value of a dimension. The function returns the nominal value even if the dimension is set to the upper or lower bound. The nominal value is returned in degrees for an angular dimension and in the system of units for other types of dimensions.
Use the function ProDimensionIsDisplayRoundedValue() to determine whether the specified dimension is set to display its rounded off value.
In Creo TOOLKIT, a rounded off value is a decimal value that contains only the desired number of digits after the decimal point. For example, if a dimension has the stored value 10.34132 and you want to display only two digits after the decimal point, you must round off the stored value to two decimal places. Thus, rounding off converts 10.34132 to 10.34.
Use the function ProDimensionDisplayRoundedValueSet() to set the attribute of the given dimension to display either the rounded off value or the stored value. You can use this function for all dimensions, except angular dimensions created prior to Pro/ENGINEER Wildfire 4.0, ordinate baseline dimensions, and dimensions of type DIM_IPAR_INT. For these dimensions, the functions returns an error status PRO_TK_NOT_VALID.
If you choose to display the rounded off value, the function ProDimensionDisplayedValueGet() retrieves the displayed rounded value of the specified dimension. Otherwise, it retrieves the stored value.
The function ProDimensionOverridevalueGet() returns the override value for a dimension. The default override value is zero.
Note
The override value is available only for driven dimensions.
Use the function ProDimensionValuedisplayGet() to obtain the type of value displayed for a dimension. The valid types are:
•  PRO_DIMVALUEDISPLAY_NOMINAL—Displays the actual value of the dimension along with the tolerance value.
•  PRO_DIMVALUEDISPLAY_OVERRIDE—Displays the override value for the dimension along with the tolerance value.
•  PRO_DIMVALUEDISPLAY_HIDE—Displays only the tolerance value for the dimension.
The function ProDimensionIsFractional() returns whether the dimension is expressed in terms of a fraction rather than a decimal. If the dimension is decimal, the function ProDimensionDecimalsGet() outputs the number of decimals digits that are significant; if the dimension is fractional, the function ProDimensionDenominatorGet() returns the value of the largest possible denominator used to define the fractional value.
The function ProDimensionIsReldriven() returns whether the dimension is driven by a relation.
The function ProDimensionIsRegenednegative() returns whether the dimension really has a negative value in relation to its original definition. Dimensions are always displayed in Creo Parametric with positive values, and ProDimensionValueGet() will always return a positive value, so this function is needed to show whether a dimension has been “flipped” as a result of being assigned a negative value during the last regeneration.
The function ProDimensionBoundGet() returns the bound status of a dimension.
The function ProDimensionFeatureGet() has been deprecated. Use the function ProDimensionOwnerfeatureGet() instead.
The function ProDimensionOwnerfeatureGet() returns the feature that owns the specified dimension.
Note
For dimensions or reference dimensions in annotation elements, the function ProDimensionOwnerfeatureGet() returns the annotation feature that directly owns the annotation element.
The function ProDimensionIsAccessibleInModel() identifies if a specified dimension is owned by the model. By default, the dimension is accessible in the model.
When you set a negative value to a dimension, it will either change the dimension to this negative value, or flip the direction around its reference and show a positive value dimension instead. Use the function ProDimensionIsSignDriven() to check this. The function returns the following values for the output argument is_sign_driven:
•  PRO_B_TRUE—When the negative sign in the dimension value is used to flip the direction.
•  PRO_B_FALSE—When the negative sign is used to indicate a negative value, that is, the dimension is negative.
The configuration option show_dim_sign when set to yes allows you to display negative dimensions in the Creo Parametric user interface.
When the option is set no, the dimensions always show positive value. However, in this case, if you set a negative value for the dimension, the direction is flipped.
Note
Some feature types, such as, dimensions for coordinate systems and datum point offsets, always show negative or positive values, even if the option is set to no. These features do not depend on the configuration option.
The function ProDimensionDisplayFormatGet() retrieves the format in which the specified dimension is displayed. The enumerated data type ProDimensionDisplayFormat returns the following values:
•  PRO_DIM_DISPLAY_DECIMAL—Specifies that the dimension is displayed in decimal format.
•  PRO_DIM_DISPLAY_FRACTIONAL—Specifies that the dimension is displayed in fractional format.
For dimensions, sometimes it may be required to indicate the origin or start of measurement. The origin is indicated by placing the dimension origin symbol on the witness line. The function ProDimensionOriginSideGet() retrieves the witness line which is set as the origin for a dimension. The output argument dim_side returns the index of witness line. If dimension origin has not been set for the specified dimension, the argument returns -1.
You can place annotations such as, geometric tolerances and datum feature symbol, on the witness lines of dimensions. The function ProSelectionDimWitnessLineGet() gets information about the dimension which has an annotation attached to its witness line. You must get the input object ProSelection from the annotation which is attached to the witness line. For example, if the leader of a geometric tolerance is attached to the witness line of a dimension, the ProSelection object is returned by the function ProGtolAttachLeadersGet(). The output arguments are:
•  dimension—Specifies a pointer to the dimension which is associated with the selected witness line.
•  wline_side—Specifies the index of the witness line to which the annotation is attached.
•  location—Specifies the location on the witness line where the annotation is attached.
The function ProSelectionDimArrowGet() receives information from a selection of a dimension arrow. The input argument selection selects the dimension arrow. The output arguments are:
•  dimension—Specifies an arrow for the selected dimension.
•  wline_side—Specifies the side of the selected dimension.
•  location—Specifies the ProPoint3d location of the attached dimension, which may be offset from the dimension arrow.
The function ProSelectionDimArrowSet() fills the selection if the dimension arrow has an offset. The input arguments are as follows:
•  dimension—Specifies an arrow for the selected dimension.
•  wline_side—Specifies the side of the selected dimension.
•  location—Specifies the ProPoint3d location of the attached dimension, which may be offset from the dimension arrow.
The output argument selection selects the dimension arrow.
Example 2: Changing the Displayed Value of Selected Model Dimension to Rounded or Non-Rounded
The sample code in the file UgDimDisplayRounded.c located at <creo_toolkit_loadpoint>/protk_appls/pt_userguide/ptu_dims, shows the displayed value of a selected model dimension to rounded/non-rounded.
Modifying Dimensions
Functions Introduced:
The function ProDimensionSymbolSet() allows you to change the symbol (the name) of a dimension. You can use this function only with solid dimensions.
Note
The function will return the error PRO_TK_NO_CHANGE if the specified symbol already exists for another dimension in the model.
The function ProDimensionValueSet() changes the value of a dimension. It does not allow you to change the value of any dimension whose value is driven in some other way, for example, a driven or reference dimension or a dimension that is driven by a relation.
The function ProDimensionOverridevalueSet() assigns the override value for a dimension. This value is restricted to real numbers. The default override value is zero.
Note
You can set the override value only for driven dimensions.
The function ProDimensionValuedisplaySet() sets the type of value to be displayed for a dimension.
The function ProDimensionDecimalsSet() sets the number of decimal places for a decimal dimension.
When you call the function ProDimensionDecimalsSet() for a driving dimension:
•  If the number of decimal places required to display the stored value of the dimension is greater than the number of decimal places specified in the function ProDimensionDecimalsSet() and the Round Displayed Value attribute of the dimension is ON, the stored value is unchanged. Only the displayed number of decimal places is changed and the displayed value is updated accordingly.
For example, consider a dimension with its stored value as 12.12323 and the Round Displayed Value attribute of the dimension is set to ON. If the function ProDimensionDecimalsSet() sets the number of decimal places to 3, the stored value of the dimension is unchanged, that is, the stored value will be 12.12323. The displayed value of the dimension is rounded to 3 decimal places, that is, 12.123. The Round Displayed Value attribute is not changed.
•  If the number of decimal places required to display the stored value of the dimension is greater than the number of decimal places specified in the function ProDimensionDecimalsSet() and the Round Displayed Value attribute of the dimension is OFF, the number of decimal places of the dimension is modified and the stored value is rounded to the specified number of decimal places.
For example, consider a dimension with its stored value as 12.12323 and the Round Displayed Value attribute of the dimension is OFF. If the function ProDimensionDecimalsSet() sets the dimension to 3 decimal places, then the stored value of the dimension is rounded to 3 decimal places and is modified to 12.123. The dimension is displayed as 12.123.
•  If the number of decimal places required to display the stored value of the dimension is less than the number of decimal places specified in the function ProDimensionDecimalsSet(), the number of decimal places is set to the specified value. The status of the Round Displayed Value attribute is not considered, as no change or an increase to the number of decimal places will have no effect on the stored value.
For example, consider a dimension with its stored value as 12.12323. If the function ProDimensionDecimalsSet() sets the dimension to 8 decimal places and if trailing zeros are displayed, then the dimension is displayed as 12.12323000.
For a driven dimension:
•  If the number of decimal places set by the function is greater than or equal to the number of decimal places required to display the stored value of the dimension, the decimal places value is changed and no change to the Round Displayed Value attribute is made.
•  If the number of decimal places of the dimension is less than the number required to display the stored value of the dimension, the Round Displayed Value attribute is AUTOMATICALLY set to ON as it is not possible to change the stored value of a driven dimension.
Note
The value given for the input argument decimals of the function ProDimensionDecimalsSet() should be a non-negative number. It should be such that when you apply either the upper or the lower values of the tolerance to the given dimension, the total number of digits before and after the decimal point in the resulting values does not exceed 13.
The function ProDimensionDenominatorSet() sets the denominator for the fractional dimensions. When you call the function ProDimensionDenominatorSet():
•  The stored value remains unchanged if,
  it can be expressed as an exact fraction with the given denominator, regardless of whether the round-off attribute is set or not.
  the stored value cannot be expressed as an exact fraction, but the round-off attribute is set. In this case, the fraction is the approximate representation of the stored value.
•  The stored value changes to the nearest fraction and triggers a regeneration of the model, if it cannot be expressed as an exact fraction with the given denominator and the round-off attribute is not set.
The functions ProDimensionBoundSet() sets the bound status of the dimension.
The function ProDimensionDimensionReset() sets the dimension to the value it had at the end of the last successful regeneration. You can use this function to recover from a failed regeneration.
The function ProDimensionBasicSet() and the function ProDimensionInspectionSet() set the basic and inspection notations of the dimension. These functions are applicable to both driven and driving dimensions.
Note
The basic and inspection notations of the dimension are not available when only the tolerance value for a dimension is displayed.
The function ProDimensionElbowSet() sets the length of the elbow for the specified dimension in a solid. The function can also be used to set the length of the elbow for a dimension in a drawing, where the dimension is created in a solid and is displayed in a drawing. To work with dimensions shown in a drawing, pass the name of the drawing in the input argument drawing.
The function ProDimensionSimpleBreakCreate() creates a simple break on an existing dimension witness line. The input arguments are:
•  dimension—Specifies a pointer to the dimension whose witness line is to be broken.
•  drawing—Specifies the drawing in which the dimension is present. You can specify a NULL value.
•  index—Specifies the index of the witness line. Depending on which side of the dimension the witness line lies, specify the value as 1 or 2. Use the method ProDimlocationWitnesslinesGet to get the location of the witness line end points for a dimension.
Note
This argument is not applicable for ordinate, radius, and diameter dimensions.
•  break_start—Specifies the start point of the break.
•  break_end—Specifies the end point of the break.
The function ProDimensionJogCreate() creates a jog on an existing dimension witness line. The input arguments are:
•  dimension—Specifies a pointer to the dimension where the jog will be created.
•  drawing—Specifies the drawing in which the dimension is present. You can specify a NULL value.
•  index—Specifies the index of the witness line. Depending on which side of the dimension the witness line lies, specify the value as 1 or 2. Use the method ProDimlocationWitnesslinesGet to get the location of the witness line end points for a dimension.
Note
This argument is not applicable for ordinate, radius, and diameter dimensions.
•  jog_points—Specifies an array of points to position the jog. If the specified witness line has no jog added to it, then you must specify minimum two points that is, the start point and end point of the jog.
Note
The functions ProDimensionSimpleBreakCreate() and ProDimensionJogCreate() return the error type PRO_TK_INVALID_TYPE when breaks and jogs are not supported for the specified dimension type, for example, diameter dimension.
The functions return the error type PRO_TK_ABORT when it is not possible to create breaks or jogs for the specified dimension witness line. For example, if you add a jog that is duplicate to an existing jog on the dimension witness line.
The function ProDimensionArrowtypeSet() sets the arrow type for the specified arrow in a dimension. The input arguments are:
•  dimension—Specifies the dimension.
•  drawing—Specifies the drawing in which the dimension is displayed. To set the arrow type in the owner model, specify the argument value as NULL.
•  arrow_index—Specifies the index of the witness line. Depending on which side of the dimension the witness line lies, specify the value as 1 or 2.
Note
The value of arrow_index is ignored for ordinate and radius dimensions.
•  arrow_type—Specifies the type of arrow and is defined using the enumerated data type ProLeaderType. The valid values are:
  PROLEADERTYPE_ARROWHEAD
  PROLEADERTYPE_DOT
  PROLEADERTYPE_FILLEDDOT
  PROLEADERTYPE_NOARROW
  PROLEADERTYPE_CROSS
  PROLEADERTYPE_SLASH
  PROLEADERTYPE_INTEGRAL
  PROLEADERTYPE_BOX
  PROLEADERTYPE_FILLEDBOX
  PROLEADERTYPE_DOUBLEARROW
  PROLEADERTYPE_CROSS_N_ARROW
  PROLEADERTYPE_TARGET
  PROLEADERTYPE_LEFTHALF
  PROLEADERTYPE_RIGHTHALF
  PROLEADERTYPE_TRIANGLE
  PROLEADERTYPE_AUTOMATIC
The function ProDimensionWitnesslineErase() erases a specified witness line from the dimension. The input arguments are:
•  dimension—Specifies the dimension whose witness line must be erased. This argument cannot be NULL.
•  drawing—Specifies the drawing in which the dimension is displayed. To erase a witness line from a solid, specify this argument as NULL.
•  WitnesslineIndex—Specifies the index of the witness line. Specify the value as 1 or 2 depending on which side of the dimension the witness line lies. Use the method ProDimlocationWitnesslinesGet() to get the location of the witness line end points for a dimension.
Use the function ProDimensionWitnesslineShow() to show the erased witness line for the specified dimension.
Note
The functions ProDimensionWitnesslineErase() and ProDimensionWitnesslineShow() erase and show the witness lines of dimensions and reference dimensions, respectively. These functions work with both drawings and solids.
The function ProDimensionDisplayFormatSet() sets the format in which the specified dimension must be displayed.
Use the function ProDimensionOriginSideSet() to set a witness line as the origin or start of measurement for the specified dimension. Specify the index of the witness line in the input argument dim_side. If a witness line is already set as origin, pass dim_side as -1 to remove the origin.
The function ProDimensionEnvelopeGet() returns the envelope of a line in the specified dimension. While retrieving coordinates of the dimension in a specified solid, if the dimension is displayed in the solid as well as in the drawing, the drawing must not be active. The input arguments follow:
•  dimension—Dimension
•  drawing—Drawing. The value for this input argument must be passed only if the solid dimension is shown in the drawing. Else, pass it as NULL.
•  line_number—The line number of the dimension. To get a full dimension envelope, pass this value as PRO_VALUE_UNUSED.
The output argument envelope is the envelope surrounding the text line in the model coordinate system. For drawing, the envelope surrounding the dimension is in the screen coordinates.
The function ProDimensionTangentAttachUpdate() sets the dimension to take the minimum, maximum, or center distance between the tangent lines of the arcs. The input arguments are:
•  dimension—Handle to input dimension.
•  tangent—First or second tangent specified using the enumerated data type ProDimArcTangent. The valid values are:
  PRO_DIM_TANGENT_FIRST
  PRO_DIM_TANGENT_SECOND
•  type—Type of tangent specified using the enumerated data type ProDimArcAttachType. The valid values are:
  PRO_DIM_TANGENT_MIN—Sets the dimension line at the minimum distance on the arc.
  PRO_DIM_TANGENT_MAX—Sets the dimension line at the maximum distance on the arc.
  PRO_DIM_TANGENT_CENTER—Sets the dimension line at the center of the arc.
Example 3: Modifying a Dimension
The sample code in the file UgDimsChange.c located at <creo_toolkit_loadpoint>/protk_appls/pt_userguide/ptu_dims demonstrates how to modify a dimension. The dimensions belonging to a given feature are displayed. You can choose the dimension you wish to modify.
Dimension References
The functions explained in this section enable you to work with semantic dimension references.
Function Introduced:
The function ProDimensionAdditionalRefsAdd() adds additional semantic references in the specified dimension. The input arguments are:
•  dim—Specifies a dimension.
•  type—Specifies the type of reference using the enumerated data type ProDimensionReferenceType. The type is classified based on the list to which the references are added. The valid values are:
  PRO_DIM_REF_FIRST—Adds the semantic references to the first list of references.
  PRO_DIM_REF_SECOND—Adds the semantic references to the second list of references.
  PRO_DIM_SRF_COLL—Adds the semantic references to the collection of surfaces.
Note
When a reference includes more than one collection, the function ProDimensionAdditionalRefsAdd() returns the error PRO_TK_MAX_LIMIT_REACHED and no reference is added.
•  refs —Specifies a ProArray of references that will be added to the specified dimension.
Note
Currently, the reference types PRO_ANNOT_REF_SINGLE and PRO_ANNOT_REF_SRF_COLLECTION are supported.
The function ProDimensionAdditionalRefsGet() returns a ProArray of references of the specified type for a dimension. In the input argument type, specify the type of reference using the enumerated data type ProDimensionReferenceType. Use the function ProAnnotationreferencearrayFree() to release the memory assigned to the ProArray of references.
Use the function ProDimensionAdditionalRefDelete() to delete the specified reference. The references are specified by their index number which start from 0. You can get existing references from ProDimensionAdditionalRefsGet(). The index is ignored if the type of reference is surface collection, as only one reference of the type PRO_DIM_SRF_COLL can exist.
The input argument for both the functions ProDimensionAdditionalRefsGet() and ProDimensionAdditionalRefDelete() specifies the type of reference using the enumerated data type ProDimensionReferenceType. The type is classified based on the list to which the references are added. The valid values are:
•  PRO_DIM_REF_FIRST—Adds the semantic references to the first list of references.
•  PRO_DIM_REF_SECOND—Adds the semantic references to the second list of references.
•  PRO_DIM_SRF_COLL—Adds the semantic references to the collection of surfaces.
Clean Up Dimensions
You can clean up the placement of dimensions in a drawing to meet the industry standards, and enable easier reading of your model detailing. You can adjust the location and display of dimensions by setting controls on the placement of a dimension. You can also set the cosmetic attributes, like flip the direction of arrow when the arrows do not fit between the witness lines and center the dimension text between two witness lines.
Function Introduced:
Use the function ProDrawingDimensionsCleanup() to clean up the dimensions in a drawing. The input arguments are:
•  draw—Specifies the drawing.
•  view—Specifies the view in which the dimensions must be cleaned. If you pass the value as NULL, the dimensions are cleaned for all the views in the specified drawing.
The dimensions are cleaned using the default values set in the Clean Dimensions dialog box in Creo Parametric user interface.
Dimension Tolerances
Functions Introduced:
The function ProToleranceDefaultGet() tells you the current default value for a given tolerance, that is, the value set in the configuration file to be used for new models. There is a separate tolerance for linear and angular dimensions (PROTOLERANCE_LINEAR and PROTOLERANCE_ANGULAR) and for each number of decimal places in the range 1 to 6 (12 tolerance settings in all).
If the round off attribute for the given dimension is set, the function ProDimensionDisplayedToleranceGet() retrieves the displayed rounded values of the upper and lower limits of the specified dimension. Otherwise, it retrieves the stored values of the tolerances as done by the function ProSolidToleranceGet(). For example, consider a dimension that is set to round off to two decimal places and has the upper and lower tolerances 0.123456. By default, the tolerance values displayed are also rounded off to two decimal places. In this case, the function ProDimensionDisplayedToleranceGet() retrieves the upper and lower values as 0.12.
The input argument of the function ProDimensionDisplayedToleranceGet() is a dimension handle. The output arguments of this function are pointers to the rounded values of the upper and lower limits of the specified dimension. You must allocate a memory location for each of the output arguments. Pass a NULL pointer if you do not want to use an output argument. You cannot pass a null for both the output arguments.
The functions ProSolidToleranceGet() and ProSolidToleranceSet() let you find and set the current value of the specified dimensional tolerance. The function ProDimensionIsToleranceDisplayed() tells you whether the tolerances of the specified dimension are currently being displayed. Refer to the Creo Parametric Detailed Drawings Help for more information.
The function ProDimensionToltypeGet() returns the display format for the specified dimension tolerance using the enumerated data type ProDimToleranceType. The valid values are:
•  PRO_TOL_DEFAULT—Displays dimensions without tolerances. Similar to the nominal option in Creo Parametric.
•  PRO_TOL_LIMITS—Displays dimension tolerances as upper and lower limits.
Note
This format is not available when only the tolerance value for a dimension is displayed.
•  PRO_TOL_PLUS_MINUS—Displays dimensions as nominal with plus-minus tolerances. The positive and negative values are independent.
•  PRO_TOL_PLUS_MINUS_SYM—Displays dimensions as nominal with a single value for both the positive and the negative tolerance.
•  PRO_DIM_TOL_SYM_SUPERSCRIPT—Displays dimensions as nominal with a single value for positive and negative tolerance. The text of the tolerance is displayed in a superscript format with respect to the dimension text.
•  PRO_DIM_TOL_BASIC—Displays dimensions as basic dimensions. Basic dimensions are displayed in an enclosed feature control frame . Tolerances are not displayed in basic dimensions, only the numerical part of the dimension value and its symbol are enclosed in the rectangular box. Any additional text in the dimension value is not included in the box.
Use the function ProDimensionToltypeSet() to set the display format for the specified dimension tolerance.
The function ProDimensionToleranceGet() reports the deviation of the upper and lower tolerances from the nominal value. The values are always reported as independent upper and lower tolerance values; the actual display of the tolerance is determined by ProDimensionToltypeGet(). Tolerances are not applicable for reference dimensions.
Note
If the upper tolerance value is negative, it will be displayed with a ‘-’ sign. But if the lower tolerance value is negative, it will be displayed with a ‘+’ sign.
The function ProDimensionToleranceSet() sets the upper and lower tolerance limits. The values are always accepted as independent upper and lower tolerance values; the actual display of the tolerance is determined by ProDimensionToltypeSet(). It is not applicable to reference dimensions.
The functions ProDimensionTolerancedecimalsGet() and ProDimensionTolerancedecimalsSet() obtain and assign the number of decimal places shown for the upper and lower values of the dimension tolerance. Thus, the decimals of the dimension tolerance can be set independent of the number of dimension decimals. By default, the number of decimal places for tolerance values is calculated based upon the “linear_tol” settings of the model.
Note
The input tolerance_decimals to the ProDimensionTolerancedecimalsSet() function should be a non-negative number and it should be such that when you apply either the upper or the lower values of the tolerance to the given dimension, the total number of digits before and after the decimal point in the resulting values does not exceed 13.
If the dimension tolerance value is a fraction, the functions ProDimensionTolerancedenominatorGet() and ProDimensiondenominatorSet() obtain and assign the value for the largest possible denominator for the upper and lower tolerance values. By default, this value is defined by the config.pro option, dim_fraction_denominator.
ISO/DIN Tolerance Table Use
Functions Introduced:
Creo TOOLKIT provides functions that programmatically set and return ISO/DIN tolerance table data. These functions allow changes to values before the label is set. For all other labels, use the ProDimensionTollabelSet() command.
The functions ProSolidModelclassGet() and ProSolidModelclassSet() respectively return or set the type of tolerance to use for a particular model. Valid settings are:
•  COARSE
•  FINE
•  MEDIUM
•  VERY_COARSE
The function ProSolidTolclassLoad() loads a hole or shaft ISO/DIN tolerance table into the current session memory.
The functions ProDimensionTollabelGet() and ProDimensionTollabelSet() respectively get or set the ISO/DIN tolerance table assigned to the specified dimension.
Dimension Text
Functions Introduced:
Superseded Functions:
The functions ProDimensionTextGet() and ProDimensionTextSet() have been deprecated. Use the functions ProDimensionTextWstringsGet() and ProDimensionTextWstringsSet() instead.
The function ProDimensionTextWstringsGet() retrieves the text of the specified dimension as a ProArray of wide character strings. Use the function ProWstringproarrayFree() to release the memory allocated for the ProArray.
The function ProDimensionTextWstringsSet() sets the text of the specified dimension using a ProArray of wide character strings. This is equivalent to editing dimensions in Creo Parametric.
Note
From Creo Parametric 2.0 onward, the functions ProDimensionTextWstringsGet() and ProDimensionTextGet() will always include the dimension value @D that appears in the Dimension Properties dialog box.
Dimension Text Style
Functions Introduced:
The function ProDimensionTextstyleGet() returns the text style assigned to a specified dimension or reference dimension.
The function ProDimensionTextstyleSet() sets the text style assigned to a specified dimension or reference dimension.
Note
Only some of the text style properties may be assigned to dimensions.
Dimension Prefix and Suffix
Functions Introduced:
The function ProDimensionPrefixGet() retrieves the prefix assigned to a specified dimension. Use the function ProDimensionPrefixSet() to set the prefix of the type ProLine for a dimension.
The function ProDimensionSuffixGet() retrieves the suffix assigned to a specified dimension. Use the function ProDimensionSuffixSet() to set the suffix of the type ProLine for a dimension.
Dimension Location
The functions described in this section extract the dimension location and geometry in 3D space for solid model dimensions.
Functions Introduced:
The function ProDimensionLocationGet() returns the location of the elements that make up a solid dimension or reference dimension.
This function optionally takes a view used to determine the orientation of the model when calculating the dimension locations. The orientation often determines the text location, presence or absence of elbows, and other dimension location properties.
Use the function ProDimlocationFree() to free the structure containing the dimension location data.
The function ProDimensionMove() enables you to move the specified dimension to the given location within its owner model.
Dimension Entity Location
The following functions extract the locations of geometric endpoints for the dimension. You can calculate the dimension location plane, witness line, and dimension orientation vectors from these points. The location of the points is specified in the same coordinate system as the solid model.
Functions Introduced:
The function ProDimlocationTextGet() returns the location of the dimension text in model coordinates. If the dimension contains an elbow, the function returns the location of the elbow joint and the length of the elbow in model coordinates.
The function ProDimlocationArrowsGet() returns the location of the arrow heads for the dimension.
The function ProDimlocationWitnesslinesGet() returns the location of the witness line ends for the dimension.
The function ProDimlocationArrowtypesGet() returns the type of arrows used for the leader of a specified 3D dimension. The dimension location obtained using the function ProDimensionLocationGet() serves as an input argument for this function.
Note
In case of radial dimensions where the arrow head type cannot be changed, the function ProDimlocationArrowtypesGet() always returns the “Arrow head” leader type.
The function ProDimlocationCenterleadertypeGet() obtains the type of center leader used for the dimension, if the dimension uses a center leader. The type of center leader is determined by the orientation of the dimension text. This function also returns the length and direction of the elbow used by the center leader and the leader end symbol.
•  PRO_DIM_CLEADER_CENTERED_ELBOW—Specifies that the dimension text is placed next to and centered about the elbow of the center leader.
•  PRO_DIM_CLEADER_ABOVE_ELBOW—Specifies that the dimension text is placed next to and above the elbow of the center leader.
•  PRO_DIM_CLEADER_ABOVE_EXT_ELBOW—Specifies that the dimension text is placed above the extended elbow of the center leader.
•  PRO_DIM_PARALLEL_ABOVE—Specifies that the dimension text is placed parallel to and above the center leader.
•  PRO_DIM_PARALLEL_BELOW—Specifies that the dimension text is placed parallel to and below the center leader.
Note
  A center leader type is available only for linear and diameter dimensions.
  The elbow length and direction is not available for PRO_DIM_PARALLEL_ABOVE and PRO_DIM_PARALLEL_BELOW center leader types.
The function ProDimlocationZExtensionlinesGet() obtains the endpoints of the Z-extension line created for a specified dimension. Z-extension lines are automatically created whenever the dimension’s attachment does not intersect its reference in the Z-Direction. The Z-extension line is attached at the edge of the surface at the closest distance from the dimension witness line.
The function ProDimlocationNormalGet() returns the vector normal to the dimensioning plane for a radial or diameter dimension. This normal vector should correspond to the axis normal to the arc being measured by the radial or diameter dimension.
The following figures illustrate the potential location of the arrow heads and witness lines for different dimension types.
Linear and psuedo-linear dimensions
Image
For a linear type of dimension, there are typically two arrow locations A1 and A2 as shown in the above figure. w1 and w2 indicate the two witness line locations.
If the dimension type has an elbow joint indicated by E, the elbow length is the distance between the text and E. If the dimension does not have an elbow, the text occurs on the line between A1 and A2, and its position is returned by the function ProDimensionTextGet(). Pattern parameter dimensions and length-of-arc dimensions also typically return this dimension structure.
Angular dimensions
Image
For an angular type of dimension, there are two arrow locations A1 and A2 as shown in the above figure. w1 and w2 indicate the two witness line locations. For some angular dimensions the two witness line endpoints are coincident, but they are returned as independent locations. This dimension type does not have an elbow joint.
Diameter dimensions
Image
For a diameter type of dimension, there are two arrow locations A1 and A2 as shown in the above figure. The elbow joint for this dimension is indicated by E. The elbow length is the distance between the text and the elbow joint. This dimension type does not have any witness line locations.
Radius dimensions
Image
For a radius type dimension, there is one arrow location indicated by A1 and an elbow joint indicated by E. The elbow length is the distance between the text and the elbow joint.
The function ProDimlocationArrowsGet() returns a NULL value for the second arrow location. This dimension type does not have any witness line locations.
Example 4: Dimension Location Properties
The sample code in the file UgDimLocationUtils.c located at <creo_toolkit_loadpoint>/protk_appls/pt_userguide/ptu_dims demonstrates use of the dimension location properties. It finds linear dimensions that are oriented parallel to a specified direction vector. It shows these dimensions in the Creo Parametric user interface. The orientation of the dimension is determined from the coordinates of the two dimension arrowheads.
Dimension Orientation
Functions Introduced:
The function ProDimensionPlaneSet() assigns an annotation plane as the orientation of a specified dimension stored in an annotation element.
The function ProDimensionPlaneGet() obtains the orientation of a specified dimension stored in an annotation element.
Note
For dimensions that are not assigned a specific orientation, the orientation obtained includes PRO_ID_NO_ANNOTATION_PLANE as its ID.
Driving Dimension Annotation Elements
You can convert driving dimensions created by features into annotation elements and place them on annotation planes. However, you can create the driving dimension annotation elements only in the features that own the dimensions. These annotation elements cannot have any user defined or system references.
In Creo TOOLKIT, a driving dimension annotation element uses the ProModelitem handle with the type field PRO_DIMENSION and the appropriate dimension ID.
Functions such as ProSolidDimensionVisit() and ProFeatureDimensionVisit() can be used to find both edit dimensions and driving dimension annotation elements.
Functions Introduced:
The function ProDimensionAnnotationelemCreate() creates an annotation element for a specified driving dimension, based on the desired annotation orientation.
The function ProDimensionAnnotationelemDelete() removes the annotation element containing the driving dimension. It deletes all the parameters and relations associated with the annotation element.
Accessing Reference and Driven Dimensions
The functions described in this section provide additional access to reference and driven dimension annotations.
Many functions listed in the previous sections that are applicable for driving dimensions are also applicable for reference and driven dimensions.
Functions Introduced:
The function ProDimensionIsDriving() determines if a dimension is driving geometry or is driven by it. If a dimension drives geometry, its value can be modified and the model regenerated with the given change. If a dimension is driven by geometry, its value is fixed but it can be deleted and redefined as necessary. A driven dimension may also be included in an annotation element.
The function ProDimensionCreate() creates a new driven or reference dimension. Specify the geometric references and parameters required to construct the required dimension as the input parameters for this function. Once the reference dimension is created, use the function ProAnnotationShow() to display it. The input arguments of this function are as follows:
•  model—Specifies the solid model.
•  dimension_type—Specifies the type of dimension. This parameter can have the following values:
  PRO_REF_DIMENSION—Specifies a reference dimension.
  PRO_DIMENSION—Specifies a driven dimension.
•  annotation_plane—Specifies the annotation plane for the dimensions.
•  attachments_arr—Specifies the points on the model where you want to attach the dimension.
Note
The attachments structure is an array of two ProSelection entities. It is provided to support options such as intersect where two entities must be passed as input. From Creo Parametric 3.0 onward, you can create dimensions that have intersection type of reference. The intersection type of reference is a reference that is derived from the intersection of two entities. Refer to the Creo Parametric Detailed Drawings Help for more information on intersection type of reference.
•  dsense_arr—Specifies more information about how the dimension attaches to each attachment point of the model, that is, to what part of the entity
•  orient_hint—Specifies the orientation of the dimension and has one of the following values:
  PRO_DIM_ORNT_HORIZ—Specifies a horizontal dimension.
  PRO_DIM_ORNT_VERT—Specifies a vertical dimension.
  PRO_DIM_ORNT_SLANTED—Specifies the shortest distance between two attachment points (available only when the dimension is attached to points).
  PRO_DIM_ORNT_ELPS_RAD1—Specifies the start radius for a dimension on an ellipse.
  PRO_DIM_ORNT_ELPS_RAD2—Specifies the end radius for a dimension on an ellipse.
  PRO_DIM_ORNT_ARC_ANG—Specifies the angle of the arc for a dimension of an arc.
  PRO_DIM_ORNT_ARC_LENGTH—Specifies the length of the arc for a dimension of an arc.
  PRO_DIM_ORNT_LIN_TANCRV_ANG—Specifies the value to dimension the angle between the line and the tangent at a curve point (the point on the curve must be an endpoint).
  PRO_DIM_ORNT_RAD_DIFF—Specifies the linear dimension of the radial distance between two concentric arcs or circles.
  PRO_DIM_ORNT_NORMAL—Specifies the linear dimension between two points to be placed normal to the selected reference.
  PRO_DIM_ORNT_PARALLEL—Specifies the linear dimension between two points to be placed parallel to the selected reference.
•  location—Specifies the initial location of the dimension text.
The function ProDimensionAttachmentsGet() and ProDimensionAttachmentSet() provide access to the geometric references and parameters of the driven or reference dimension. These functions support dimensions that are created with intersection type of reference.
The function ProDimensionDelete() deletes the driven or reference dimension. Dimensions stored in annotation elements should be deleted using ProAnnotationfeatElementDelete().
The function ProDimensionCanRegenerate() checks if a driven dimension can be regenerated. For driven dimensions created in drawing mode and owned by a solid, which can be displayed only in the context of that drawing, specify the name of the drawing in the input argument drawing.
45-degree Chamfer Dimensions
You can create 45-degree chamfer dimensions by referencing one of the following items:
•  Edges, including solid or surface edges, silhouette edges, curves, and sketches.
•  Surfaces
•  Revolve surfaces
The functions described in this section provide access to the display style of 45-degree chamfer dimensions in a solid. These functions can also be used to access the display style of the chamfer dimension in a drawing, where the dimension is created in a solid and is displayed in a drawing. To work with dimensions shown in a drawing, pass the name of the drawing in the input argument drawing in the functions.
Note
The default display of a 45-degree chamfer dimension depends upon the setting of the config.pro option, default_chamfer_text.
Functions Introduced:
The functions ProDimensionChamferLeaderGet() and ProDimensionChamferLeaderSet() retrieve and set the style of the leader for the specified 45-degree chamfer dimension. The valid values are as follows:
•  PRO_DIM_CHMFR_LEADER_STYLE_NORMAL—Specifies that the leader of a chamfer dimension is normal to the chamfer edge (ASME, ANSI, JIS, ISO Standard).
•  PRO_DIM_CHMFR_LEADER_STYLE_LINEAR—Specifies that the leader of a chamfer dimension has linear style of display.
•  PRO_DIM_CHMFR_LEADER_STYLE_DEFAULT—Specifies that the chamfer dimension leader style should be displayed using the default value set in the detail option default_chamfer_leader_style.
The functions ProDimensionChamferTextGet() and ProDimensionChamferTextSet() retrieve and set the dimension scheme for the specified 45-degree chamfer dimension. The valid values are as follows:
•  PRO_DIM_CHMFRSTYLE_CD = 0—Specifies that the chamfer dimension text should be displayed in the C(Dimension value) format (JIS/GB Standard).
•  PRO_DIM_CHMFRSTYLE_D_X_45= 1—Specifies that the chamfer dimension text should be displayed in the (Dimension value) x45 format (ISO/DIN Standards).
•  PRO_DIM_CHMFRSTYLE_CUSTOM = 3— Specifies that the chamfer dimension text should be displayed in a customized format.
•  PRO_DIM_CHMFRSTYLE_DEFAULT = 4—Specifies that the chamfer dimension text should be displayed using the default value set in the drawing detail option default_chamfer_text.
•  PRO_DIM_CHMFRSTYLE_45_X_D = 6—Specifies that the chamfer dimension text should be displayed in the 45 X (Dimension value) format (ASME/ANSI Standards).
•  PRO_DIM_CHMFRSTYLE_D = 9— Specifies that the chamfer dimension text should be displayed in the (Dimension value) format.
•  PRO_DIM_CHMFRSTYLE_D_X_45_ASME = 10— Specifies that the chamfer dimension text should be displayed in the (Dimension value) X 45 format.
The functions ProDimensionConfigGet() and ProDimensionConfigSet() retrieve and set the dimension configuration for chamfer dimensions. The dimension configuration defines the style in which the dimension must be displayed. The valid values are as follows:
•  PRO_DIMCONFIG_LEADER—Creates the dimension with a leader.
•  PRO_DIMCONFIG_LINEAR—Creates a linear dimension.
•  PRO_DIMCONFIG_CENTER_LEADER—Creates the dimension with the leader note attached to the center of the dimension leader line.
Accessing Ordinate and Baseline Dimensions
The functions described in this section enable you to create 3D ordinate driven dimensions in 3D models as model annotations or as annotation elements. They also provide the ability to define a baseline annotation element, and then define model ordinate dimension annotations and ordinate dimension annotation elements that reference the baseline annotation element.
Baseline Dimensions
Functions Introduced:
The function ProAnnotationfeatBaselineCreate() creates an ordinate baseline annotation element and corresponding dimension. Specify the feature reference geometry, text location, direction and annotation plane as input arguments for this function.
The function ProDimensionIsBaseline() identifies whether a dimension is a baseline dimension.
This function ProDimensionBaselinedirectionGet() retrieves the direction of an ordinate baseline dimension when it is not implied from the attachment reference returned by ProDimensionAttachmentsGet(). The output argument - dir_vec - is a ProVector and it gives the direction of the baseline ordinate dimension.
The function ProDimensionTangentAttachGet() retrieves the attachment of dimension to the arc or circle for the input tangent. The input arguments are:
•  dimension—The handle for the input dimension using the object ProDimension.
•  tangent—Specify the first or second tangent using the object ProDimArcTangent.
The output argument type—Specifies the type of attachment type to the arc as minimum, maximum, or center using the object ProDimArcAttachType.
Ordinate Dimensions
Function Introduced:
The function ProDimensionOrdinateCreate() creates a new model ordinate driven dimension or a model ordinate reference dimension in a solid model. It requires the input of a reference baseline annotation as well as a geometry reference. The annotation plane for the new dimension will be inherited from the baseline. Once the reference dimension is created, use the function ProAnnotationShow() to display it.
To create an ordinate driven dimension element or a model ordinate reference dimension pass the ordinate dimensions created by ProDimensionOrdinateCreate() to the function ProAnnotationelemAnnotationSet().
The function ProDimensionOrdinatestandardGet() returns the display standard for the ordinate dimensions in the drawing. The style of the ordinate dimension may be as follows:
•  PRO_DIM_ORDSTD_DEFAULT—Specifies the default style for the ordinate dimensions.
•  PRO_DIM_ORDSTD_ANSI—Specifies the American National Standard style for the ordinate dimension. It places the related ordinate dimensions without a connecting line.
•  PRO_DIM_ORDSTD_JIS—Specifies the Japanese Industrial Standard style for the ordinate dimension. It places the ordinate dimensions along a connecting line that is perpendicular to the baseline and starts with an open circle.
•  PRO_DIM_ORDSTD_ISO—Specifies the International Standard of Organization style for the ordinate dimension.
•  PRO_DIM_ORDSTD_DIN—Specifies the German Institute for Standardization style for the ordinate dimension.
•  PRO_DIM_ORDSTD_SAME_AS_3D—Specifies the ordinate dimension style for 2D drawings. Not used in 3D ordinate dimensions.
The function ProDimensionOrdinatestandardSet() sets the style for the specified ordinate dimension or a set of ordinate dimensions.
The function ProDimensionAttachmentsGet() returns the attachment geometry for the dimension.
In order to change the dimension's attachments you must use the function ProDimensionOrdinatereferencesSet().
The function ProDimensionMove() enables you to move the specified 3D ordinate dimension to the specified location within its owner model. For ordinate dimensions in the JIS or ISO/DIN style, all dimensions stay aligned during movement. For ordinate dimensions in the ANSI style, each dimension can be adjusted independent of the other dimensions. If the style is changed back to JIS or ISO/DIN, all the dimensions become aligned with the baseline.
The function ProDimensionIsOrdinate() identifies if a dimension is ordinate.
The function ProDimensionAutoOrdinateCreate() creates ordinate dimensions automatically for the selected surfaces. The function returns a ProArray of dimensions. The input arguments are:
•  drawing—Specifies the drawing where the ordinate dimensions must be automatically created.
•  surface_array—Specifies a set of parallel surfaces for which the ordinate dimensions must be created. This is a ProArray of selection handles. You can free this array using the function ProSelectionarrayFree().
•  baseline—Specifies a reference element used to create the baseline dimension. The reference element can be an edge, a curve, or a datum plane.
Notes
The functions in this section enable you to access the notes created in Creo Parametric .
Note
These functions are applicable to solids (parts and assemblies) only. However, when notes on a solid are viewed from Drawing mode, they can also be accessed using the ProDtlnote() functions described in the section Drawings.
A note is modeled in Creo TOOLKIT as an instance of ProModelitem with the type PRO_NOTE. You can select a note by supplying the selection option note_3d to ProSelect(). You can access the name of a note using the functions ProModelitemNameGet() and ProModelitemNameSet().
Creating and Deleting Notes
Functions Introduced:
The function ProSolidNoteCreate() takes as input a ProMdl for the solid (either a part or an assembly), a ProModelitem for the owner of the note, and an expandable array ProLineList for the note text. The function outputs a ProNote object for the created note. Once the note is created, use the function ProAnnotationShow() to display it.
The function ProNoteDelete() deletes the note specified by its ProNote object. Notes stored in annotation elements should be deleted using ProAnnotationfeatElementDelete().
Note Properties
Functions Introduced:
The function ProNoteTextGet() returns the text of a 3D model note. The function ProNoteTextSet() modifies the text of an exisitng 3D model note. You can also make symbols to be called out in the 3D notes using the function ProNoteTextSet().
Use the function ProNoteUndisplay() followed by ProNoteDisplay() to update the display status of the note.
The function ProNoteURLGet() retrieves the Uniform Resource Locator (URL) associated with the specified note, whereas ProNoteURLSet() sets the associated URL for the specified note. Specify the note and the URL wide string or the name of the valid combined state as input arguments to the function ProNoteURLWstringSet.
Note
The functions ProNoteURLGet() and ProNoteURLSet() have been deprecated. Instead, use the functions ProNoteURLWstringGet() and ProNoteURLWstringSet() that return and set, respectively, the Uniform Resource Locator (URL) associated with the specified note as a widestring.
The function ProNoteURLExtraInfoGet() retrieves the information of whether opening the URL for a specified note appends the extra information "?<model name>+<note id>".
The function ProNoteURLExtraInfoSet() sets whether opening the URL for a specified note should append the extra info "?<model name>+<note id>".
The input argument p_note_item to both the functions is the note for which the extra information needs to be appended.
The function ProNoteOwnerGet() retrieves the owner of the specified note. The owner can be the solid model, a user-chosen feature, or the feature that contains the note's annotation element.
The function ProNoteLeaderstyleGet() returns the leader style used for the note. It can be either standard or ISO. The function ProNoteLeaderstyleSet() sets the leader style of the note.
The function ProNoteElbowlengthGet() returns the elbow properties for the specified note.
The function ProNoteElbowlengthSet() sets the elbow properties of the note. This is equivalent to Move Text option in the Dimension Properties dialog box in Creo Parametric.
Note
The elbow properties can be retrieved and set for the flat-to-screen notes and the drawing notes.
The function ProNoteLineEnvelopeGet() returns the envelope of a line for a specified note.
The function ProNoteAttachNormtanleaderGet() returns the properties of a leadered note which is normal/tangent to specified note.
Note
Creo Parametric adds hard line breaks to the multiple lines drawing notes created in Creo Elements/Pro during retrieval. The hard line breaks display the text of the note on separate lines in the Note Properties dialog box as they actually appear in the drawing note.
The function ProNoteAttachScreenSet() sets the location of the note text at the screen location. The input arguments follow:
•  note_attach—Specifies the handle for ProNoteAttach.
•  p1—The parameter in the X direction.
•  p2—The parameter in the Y direction.
•  p3—The parameter in the Z direction.
The functions ProNoteWrapTextGet() and ProNoteWrapTextSet() get and set the wrap status of the text for a specified note in a solid. The function ProDtlnoteWrapTextSet() sets the text wrapping status to ON or OFF.
The input arguments are listed below:
•  note—Specifies the note for which the wrap status is to be set.
•  wrap—Specifies if the text is wrapped. To wrap the text specify the value as Pro_B_True.
•  wrapwidth—Specifies the width of the wrapped text line, if the input argument wrap is set to Pro_B_True.
The function ProNoteReferencesAdd() adds semantic references to a specified note in a solid. The input arguments are as follows:
•  note—Specifies the note to which the additional semantic references are to be added.
•  refs—Specifies the array of additional semantic references using the enumerated data type ProAnnotationReference.
Note
When a reference includes more than one collection, the function ProNoteReferencesAdd() returns the error PRO_TK_MAX_LIMIT_REACHED and no reference is added.
The function ProNoteReferencesGet() returns a ProArray of additional semantic references for a note.
The function ProNoteReferenceDelete() deletes the additional semantic references. The input arguments are as follows:
•  note —Specifies the note from which the additional semantic references are to be deleted.
•  index_ref—Specifies the index references. Indices start from 0.
Visiting Notes
Function introduced:
The function ProMdlNoteVisit() enables you to visit all the notes in the specified solid model.
Note Text Styles
Functions Introduced:
The function ProTextStyleAlloc() allocates the opaque handle for a ProTextStyle data structure. The function ProTextStyleFree() frees the allocated data structure.
The function ProNoteTextStyleGet() enables you to retrieve the text style of a specified note, whereas ProNoteTextStyleSet() enables you to set the text style of the note.
Text Style Properties
Functions introduced
These functions enable you to retrieve and set the properties of the specified text style. You can retrieve and set text properties such as the height, width factor, angle, slant angle, thickness, underline, mirror.
Note
The system uses the value –1.0 for properties that use default values, or that have not been set yet.
The function ProTextStyleJustificationGet() returns the horizontal justification for the text style object.
The function ProTextStyleJustificationSet() sets the horizontal justification for the text style object using the enumerated data type ProTextHrzJustification. The values defined by the enumerated type are as follows:
•  PRO_TEXT_HRZJUST_DEFAULT—Aligns the text using the default justification. The justification selected for the first note becomes the default for all successive notes added during the current session.
•  PRO_TEXT_HRZJUST_LEFT—Aligns the text style object to the left.
•  PRO_TEXT_HRZJUST_CENTER—Aligns the text style object in the centre.
•  PRO_TEXT_HRZJUST_RIGHT—Aligns the text style object to the right
The function ProTextStyleVertJustificationGet() returns the vertical justification for the text style object.
The function ProTextStyleVertJustificationSet() sets the vertical justification for the text style object using the enumerated data type ProVerticalJustification. The values defined by the enumerated type are as follows:
•  PRO_VERTJUST_DEFAULT—Aligns the text using the default justification. The justification selected for the first note becomes the default for all successive notes added during the current session.
•  PRO_VERTJUST_TOP—Aligns the text style object to the top.
•  PRO_VERTJUST_MIDDLE—Aligns the text style object to the middle.
•  PRO_VERTJUST_BOTTOM—Aligns the text style object to the bottom.
The function ProTextStyleColorGetWithDef() also supports default color. If the specified text style object is of default color, PRO_COLOR_METHOD_DEFAULT will be returned.
The function ProTextStyleColorSetWithDef() also supports default color and enables you to set the text style object to the default color.
The functions ProTextStyleIsHeightInModelUnits() and ProTextStyleHeightInModelUnitsSet() obtain and assign whether the text height is in relation to the model units, or a fraction of the screen size. These functions are applicable only for flat-to-screen annotations.
The function ProSolidDefaulttextheightGet() returns the default text height for annotations and dimensions for a given solid model.
Accessing the Note Placement
The functions described in this section provide access to the properties of a 3D note.
Functions Introduced:
The function ProNotePlacementGet() retrieves the a ProNoteAttach structure for the given note. The ProNoteAttach object is an opaque handle that describes the location of a note and the leaders attached to it. The functions in this section enable you to set up a ProNoteAttach object and assign it to a note, and to read the ProNoteAttach information on a note.
The function ProNoteAttachFreeGet() retrieves the location of the note text. The note text is stored in relative model coordinates, where {0.5, 0.5, 0.5} indicates the exact center of the model's display bounding box obtained from ProSolidDispoutlineGet(), and {0.0, 0.0, 0.0} and {1.0, 1.0, 1.0} represent the corners of the box.
The function ProSolidDispoutlineGet() provides you with the maximum and minimum values of X, Y, and Z occupied by the display outline of the solid, with respect to the default provided coordinate system.
The function ProNoteAttachLeadersGet() returns the attachment points and properties for the leaders stored in the specified note attachment data.
Note
The function ProNoteAttachLeadersGet() requires the owner of the note to be displayed.
The functions ProNoteAttachOnitemGet() provides the location of an "On Item" note attachment data.
The functions ProNoteAttachPlaneGet() returns the annotation plane assigned to the note attachment data.
The function ProNoteAttachRelease() releases the allocated opaque handle.
Modifying 3D Note Attachments
The actual note created in Creo Parametric will not be modified by the access functions until the note attachment is assigned to the note using the modification function ProNotePlacementSet().
Functions Introduced:
The function ProNoteAttachAlloc() allocates a ProNoteAttach object for a note attachment.
To set the location of an attachment point, call the function ProNoteAttachFreeSet(). See the description of ProNoteAttachFreeGet() for an explanation of the coordinates used by this function.
The function ProNoteAttachAddend() adds a leader to the specified attachment. The leader points to a location on the parent model specified by an argument of type ProSelection.
The attachment types are specified in ProNoteAttachAttr. The possible values are as follows:
•  PRO_NOTE_ATT_NONE
•  PRO_NOTE_ATT_NORMAL
•  PRO_NOTE_ATT_TANGENT
Use the function ProNoteAttachLeaderAdd() to specify the type of arrowhead for the leader. This function supersedes the function ProNoteAttachAddend().
The function ProNoteAttachLeaderAdd() adds a leader to the specified attachment. The leader points to a location on the parent model specified by an argument of type ProSelection. The selection UV parameters determine the precise attachment point for the note leader. The attachment types are specified by the parameter attr and can have one of the following values:
•  PRO_NOTE_ATT_NORMAL—Specifies a normal attachment.
•  PRO_NOTE_ATT_TANGENT—Specifies a tangent attachment.
The function ProNoteAttachLeaderRemove() removes a leader from the note attachment data.
The function ProNoteAttachOnitemSet() sets the location of an "On Item" note placement. Using this function removes any leaders currently assigned to the note attachment.
The function ProNoteAttachPlaneSet() sets the annotation plane of the notes. The annotation plane of a note in an annotation element may not be removed.
The function ProNotePlacementSet() assigns the a ProNoteAttach structure for the given note, thus defining or redefining the placement for the note.
Note
If modifying an existing note, the functions ProNoteAttach*Set() do not modify the note until the note attachment is reassigned to the note using the modification function ProNotePlacementSet().
Geometric Tolerances
For more information on Geometric Tolerances refer to the section Annotations: Geometric Tolerances.
Accessing Set Datum Tags
The functions described in this section provide the ability to access and display set datum tag annotations in 3D models.
Functions Introduced:
The function ProSolidSetdatumtagVisit() enables you to visit the set datum tag annotations in a solid model.
Use the function ProMdlSetdatumtagCreate() . The function ProMdlSetdatumtagCreate() creates a new set datum tag annotation. The input arguments are as follows:
•  reference—Specify a datum reference (plane or axis) from the model as the geometric reference for the set datum tag. If you want to make this tag reference model geometry, use Creo TOOLKIT to create a datum plane or axis referencing the geometry first, and then use that datum in this argument.
•  annotation_plane—Specify an Annotation Plane for the annotation.
•  attachment—Optionally, specify the location for placement of the set datum tag. The argument can contain:
  A dimension
  A gtol.
  A geometry selection to which the set datum will be attached.
Note
Once the set datum tag annotation is created, use the function ProAnnotationShow() to display it.
The function ProSetdatumtagAttachmentGet() returns the item on which the datum tag is placed.
The function ProSetdatumtagAttachmentSet() specifies the item on which the datum tag is placed.
Note
From Creo Parametric 2.0 M090 onward, to specify the datum plane or datum axis as the attachment option, pass the input argument attachment as NULL in the function ProSetdatumtagAttachmentSet(). The datum tag is attached to the datum axis at the default location.
The function ProSetdatumtagPlacementGet() returns the item type, id, and owner on which the set datum tag is placed. Use this function in cases where it is not possible to construct the selection. For example, when the solid owned datum feature symbol is attached to a solid owned dimension that is created in a drawing. The function returns the attachment item contained in the ProModelitem structure.
The function ProSetdatumtagPlaneGet() returns the annotation plane for the specified set datum tag.
The function ProSetdatumtagPlaneSet() sets the annotation plane for the set datum tag.
The function ProGeomitemSetdatumtagGet() returns the set datum tag that uses the specified geometric item as the reference, if available.
The function ProSetdatumtagReferenceGet() returns the datum specified as a reference for the set datum tag.
Note
The functions ProGeomitemSetdatumtagGet() and ProSetdatumtagReferenceGet() return information only for datum tags created in releases prior to Creo Parametric 4.0 F000.
The function ProSetdatumtagTextstyleGet() returns the text style details for the set datum tag. The function ProSetdatumtagTextstyleGet() is deprecated. Use the function ProAnnotationTextstyleGet() instead.
The function ProSetdatumtagTextstyleSet() sets the text style details for the set datum tag. The function ProSetdatumtagTextstyleSet() is deprecated. Use the function ProAnnotationTextstyleSet() instead.
The function ProMdlSetdatumtagCreate() creates a datum feature symbol in the specified drawing or solid. After creating a datum feature symbol, to display it, call the function ProAnnotationShow(). The input arguments are as follows:
•  p_mdl—Specifies a drawing or solid.
•  attachment—Specifies the location of the datum feature symbol on the geometry. The argument can contain:
  A dimension
  A gtol
  A geometry selection to which the set datum will be attached
•  annotation_plane—Specifies an annotation plane for the annotation. If the datum feature symbol is attached to a dimension or gtol, the argument can be NULL. However, for a drawing, the argument must be passed as NULL.
•  label—Specifies the label for the datum feature symbol.
Use the function ProMdlSetdatumtagDelete() to delete the specified datum feature.
You can specify a string identifier as a label that will appear within the datum feature symbol frame. The functions ProSetdatumtagLabelGet() and ProSetdatumtagLabelSet() get and set the label for the specified datum feature symbol.
You can also specify additional text that appears along with the datum feature symbol instance. The label for the datum feature symbol and the additional text appear horizontally aligned to the screen. The functions ProSetdatumtagAdditionalTextGet() and ProSetdatumtagAdditionalTextSet() get and set the additional text for the specified datum feature symbol. The functions also enable you to get and set the position of the additional text around the frame of the datum feature symbol using the enumerated data type ProDtmFeatAddlTextPos. The valid values are:
•  PRO_DTM_FEAT_ADDL_TEXT_RIGHT
•  PRO_DTM_FEAT_ADDL_TEXT_BOTTOM
•  PRO_DTM_FEAT_ADDL_TEXT_LEFT
•  PRO_DTM_FEAT_ADDL_TEXT_TOP
•  PRO_DTM_FEAT_ADDL_TEXT_DEFAULT
It is possible to set the display style of the leader which attaches the datum feature symbol to the geometry. You can set the appearance of the leader as straight or have an elbow. The function ProSetdatumtagElbowSet() enables you set the display of the leader. Pass the input argument elbow as PRO_B_TRUE to set the leader with an elbow. The function ProSetdatumtagElbowGet() checks if the leader of the specified datum feature symbol has an elbow.
The function ProSetdatumtagASMEDisplaySet displays the datum feature symbol according to the ASME standard. Use the function ProSetdatumtagASMEDisplayGet() to check if the specified datum feature symbol is displayed as per ASME standard.
The function ProSetdatumtagReferencesAdd() adds semantic references to the specified datum feature symbol.
Note
When a reference includes more than one collection, the function ProSetdatumtagReferencesAdd() returns the error PRO_TK_MAX_LIMIT_REACHED and no reference is added.
The function ProSetdatumtagReferencesGet() returns a ProArray of semantic references that were used to place the specified datum feature symbol. Use the function ProAnnotationreferencearrayFree to free the allocated memory. Use the function ProSetdatumtagReferenceDelete() to delete semantic references in the specified datum feature symbol. The references are specified by their index number.
In Creo Parametric 7.0.0.0 and later, the function ProSetdatumtagTextLocationGet() is deprecated.
Use the function ProSetdatumtagTextPointGet() instead. The function ProSetdatumtagTextPointGet() retrieves the text point for the specified datum feature symbol.
The function ProSetdatumtagAdditionalTextLocationGet() retrieves the location of additional text for the specified datum feature symbol.
The function ProDrawingSetDatumTagIsShown() returns the display status of the set datum tag in the specified view of a drawing. The input arguments are:
•  set_datum_tag—Specifies the set datum tag.
•  drawing—Specifies the drawing that shows the annotation.
•  view—Specifies the drawing view.
The function returns PRO_B_TRUE if the set datum tag is shown in the specified drawing view, and PRO_B_FALSE if it is not shown in the drawing view.
The function ProDrawingSetDatumTagIsShown() returns the error PRO_TK_BAD_CONTEXT if the datum feature symbol cannot be shown in the specified drawing view.
Use the function ProDrawingSetdatumtagErase() to set a set datum tag to be erased from the specified view of a drawing. The annotation is not displayed until it is explicitly displayed using the function ProAnnotationShow().
The function ProDrawingSetdatumtagVisit() enables you to visit the set datum tag annotations in the specified drawing.
The function ProDrawingLegacySetdatumtagErase() sets the legacy set datum tag to be erased from drawing view. As a result, the drawing database does not show the annotation until it is explicitly
Use the function ProDrawingLegacySetdatumtagIsShown() to check if the legacy set datum tag is shown.
Note
The functions ProDrawingLegacySetdatumtagErase() and ProDrawingLegacySetdatumtagIsShown() are applicable for legacy set datum tags only.
The input arguments for both the functions ProDrawingLegacySetdatumtagErase() and ProDrawingLegacySetdatumtagIsShown() are:
•  drawing—The drawing where legacy set datum tag needs to be shown. or is already present.
•  view—Drawing view. The value should not be NULL.
•  path—Component path.
•  tag—Legacy set datum tag.
If the legacy set datum tag is shown, the function ProDrawingLegacySetdatumtagIsShown() returns a ProBoolean output argument with the value as PRO_B_TRUE, else it returns PRO_B_FALSE.
Accessing Set Datums for Datum Axes or Planes
The functions described in this section provide access to the “Set Datum” status of a datum axis or plane.
Note
These function support the “Set Datum” capability which existed before Set Datum Tag annotations.
Functions Introduced:
The function ProGeomitemSetdatumGet() specifies whether the datum plane or axis is a “Set Datum”. This function supersedes the function ProGeomitemIsGtolref().
The function ProGeomitemSetdatumSet() sets the datum plane or axis to be a “Set Datum”. This function supersedes the function ProGeomitemGtolrefSet().
The function ProGeomitemSetdatumClear() removes the “Set Datum” status of a datum plane or axis. This function supersedes the function ProGeomitemGtolrefClear().
Surface Finish Annotations
The functions described in this section provide read access to the properties of the surface finish object. They also allow you to create and modify surface finishes.
The style of surface finishes for releases previous to Pro/ENGINEER Wildfire 2.0 was a flat-to-screen symbol attached to a single surface. From Pro/ENGINEER Wildfire 2.0 onwards, the method for construction of surface finishes has been modified. The new style of surface finish is a symbol instance that may be attached on a surface or with a leader or offset to another surface finish, symbol, note, or gtol. The following functions support both the old and new surface finish annotations, except where specified.
Functions Introduced:
The function ProSolidSurffinishVisit() visits the surface finishes stored in the specified solid model. This function accepts a visit function ProSurfaceVisitAction() and a filter function ProSurfaceFilterAction() as the input arguments.
The function ProSurffinishCreate() creates a new symbol-based surface finish annotation. The function requires a symbol instance data structure for creation. Once the surface finish annotation is created, use the function ProAnnotationShow() to display it.
Note
The data must conform to the requirements for surface finishes, that is, attachment must be via leader to or on one or more surfaces.
You can use the standard surface finish symbol definitions from the symbol instance data structure. Use the function ProSolidDtlsymdefRetrieve() to retrieve the surface finish symbol definitions from the location PRO_DTLSYMDEF_SRC_SURF_FINISH_DIR. The surface finish value should be set using the variant text options for symbol instances.
The function ProSurffinishReferencesGet() returns the surface or surfaces referenced by the surface finish.
The function ProSurffinishSrfcollectionGet() obtains a surface collection which contains the references of the surface finish.
The function ProSurffinishSrfcollectionSet() assigns a surface collection to be the references of the surface finish. This overwrites all current surface finish references. The following types of surface collections are supported:
•  One by one surface set
•  Intent surface set
•  Excluded surface set
•  Seed and Boundary surface set
•  Loop surface set
•  Solid surface set
•  Quilt surface set
Note
Only those surface finishes that are contained within annotation elements may use a collection of references instead of a single surface reference.
The function ProSurffinishAdditionalReferencesAdd() adds references to the specified surface finish. The input arguments follow:
•  surf_finish—Surface finish to which the references are to be added.
•  refs—Array of references specified using the ProAnnotationReference structure. You can add only one reference if you select PRO_ANNOT_REF_SRF_COLLECTION.
Note
The function ProSurffinishAdditionalReferencesAdd() returns the error PRO_TK_MAX_LIMIT_REACHED when more than one reference from the type PRO_ANNOT_REF_SRF_COLLECTION is added
The function ProSurffinishAdditionalReferencesGet() returns a ProArray of references for a specified surface finish.
Use the function ProAnnotationreferencearrayFree() to release the memory assigned to the ProArray of references.
The function ProSurffinishAdditionalReferenceDelete() deletes the specified surface finish references. The input arguments follow:
•  surf_finish—Surface finish from which the references are to be deleted.
•  index_ref—Index of the references that must be deleted. Indices start from 0. Get existing references from the function ProDtlsyminstReferencesGet().
The function ProSurffinishDataGet() returns the symbol instance data for the surface finish. This function supports only new symbol-based surface finishes.
The function ProSurffinishModify() modifies the symbol instance data for the specified surface finish. This function supports only new symbol-based surface finishes.
The function ProSurffinishValueGet() retrieves the value of a surface finish annotation.
The function ProSurffinishValueSet() sets the value of a surface finish annotation.
The function ProSurffinishDelete() deletes the specified surface finish.
The functions described above supersede the Pro/Develop functions pro_surf_finish_number(), pro_get_surf_finish(), pro_delete_surface_finish() and pro_set_surface_finish().
Symbol Annotations
The functions described in this section provide support for 3D mode symbols. Creo TOOLKIT functions for symbol instances are used in both 2D and 3D modes. Symbols for a particular mode must conform to the requirements for that mode. Some ProDtlsyminst functions have been modified to accept a ProMdl object as the input instead of ProDrawing object to support 3D mode operations.
Creating, Reading and Modifying 3D Symbols
Functions Introduced:
The function ProDtlsyminstCreate() creates a symbol instance in the specified model. Once the symbol instance is created, use the function ProAnnotationShow() to display it. In Creo Parametric 10.0.0.0 and later, you can use the function ProDtlsyminstCreate() to place 3D symbols as offset to other symbol, dimension, note or a datum target.
The function ProDtlsyminstDataGet() returns the symbol instance data.
The function ProDtlsyminstModify() modifies the symbol instance.
For more information about creating, accessing and modifying symbols via the ProDtlsyminst and ProDtlsyminstdata structures, refer to the Drawings section.
The functions ProDtlsyminstdataPlaneGet() and ProDtlsyminstdataPlaneSet() provide access to the symbol annotation plane. Annotation planes are required for 3D symbol instances but are not applicable for 2D symbol instances.
Locating and Collecting 3D Symbols and Symbol Definitions
Functions Introduced:
The functions ProSolidDtlsymdefVisit() and ProSolidDtlsyminstVisit() allow traversal of symbol definitions and instances in a solid model.
The functions ProSolidDtlsymdefEntityVisit() and ProSolidDtlsymdefNoteVisit() allow traversal of items contained in a symbol definition stored in a solid model.
The function ProSolidDtlsymdefRetrieve() allows retrieval of a symbol definition into a given solid model. The input arguments for this function are as follows:
•  solid—Specifies a handle to the solid model.
•  location—Specifies the location of the symbol definition file. It can one of the following values:
  PRO_DTLSYMDEF_SRC_SYSTEM—Specifies the system symbol definition directory.
  PRO_DTLSTMDEF_SRC_SYMBOL_DIR—Specifies the system surface finish symbol definition directory.
  PRO_DTLSYMDEF_SRC_SYMBOL_DIR—Specifies the location controlled by the configuration option pro_symbol_dir.
  PRO_DTLSYMDEF_SRC_PATH—Specifies the absolute path to a directory containing the symbol definition.
•  filepath—Specifies the path to the file with a symbol definition. The path is relative to the location specified in the argument location.
•  filename—Specifies the name of the symbol definition file.
•  version—Specifies the version of the symbol definition file.
•  update—Specifies the update flag. If TRUE, the definition will be loaded even if a definition of that name already exists in the model. If FALSE, the retrieval will not take place if the definition exists in the model.
You can use symbol instances from different symbol definitions in a solid. The function ProSolidDtlsyminstsCollect() collects all the symbol instances used in the specified solid as a ProArray. The function ProSolidDtlsymdefsCollect() returns a ProArray of all the symbol definitions used in the specified solid. The function returns symbol definitions only for the symbol instances used in the solid. Use the function ProArrayFree() to release the memory assigned to the ProArray of symbol definitions and symbol instances.