Working with Multi-CAD Models Using Creo Unite
This section describes how to work with non-Creo parts and assemblies using Creo Unite.
Overview
Creo Unite enables you to open non-Creo parts and assemblies in Creo Parametric and other Creo applications, such as, Creo Simulate without creating separate Creo models. You can then assemble the part and assembly models that you opened as components of Creo assemblies to create multi-CAD assemblies of mixed content.
The non-Creo components of these heterogeneous assemblies retain their original names in Creo and continue to use their original source CAD applications as the design tool. They appear as foreign models and not as native Creo models.
You can open the part and assembly models of the following non-Creo file formats in Creo applications:
•  CATIA V5 (.CATPart, .CATProduct)
•  CATIA V5 CGR
•  CATIA V4 (.Model)
•  SolidWorks (.sldasm, .sldprt)
•  NX (.prt)
•  Autodesk Inventor (.ipt, .iam)
•  Creo Elements/Direct (.sdpc, .sdac, .sdcc, and .sdrc)
From Creo Parametric 4.0 F000 onward, the following Creo Elements/Direct files can be opened in Creo Parametric and other Creo applications, such as, Creo Simulate without creating separate Creo models:
  Part content file (.sdpc)
  Assembly content file (.sdac)
You can modify the non-Creo models in Creo applications, without altering the original design intent. For example, you can add annotations to the non-Creo models in a Creo application.
You can also make design changes to the non-Creo models in a multi-CAD assembly. Depending on the configuration options set in Creo, user confirmation may be required to apply the design changes. Refer to the Creo Parametric Data Exchange online help, for more information.
In applications where user confirmation cannot be obtained for design changes, for example, when Creo is running in batch mode, the appropriate functions such as, ProFeatureWithoptionsCreate(), return an error.
While working with a multi-CAD model, when you call the function ProFeatureWithoptionsCreate(), the output may vary depending on the value of the configuration option confirm_on_edit_foreign_models. The default value of the configuration option confirm_on_edit_foreign_models is yes. The following scenarios are possible depending on the value of the configuration option confirm_on_edit_foreign_models:
•  If the configuration option confirm_on_edit_foreign_models is set to no, the non-Creo model is modified without any notification.
•  If the configuration option confirm_on_edit_foreign_models is set to yes, or the option is not defined in the configuration file, then in batch mode the application returns the error PRO_TK_GENERAL_ERROR.
•  In some situations, you may need to provide input in the interactive mode with Creo. Refer to the Creo Parametric Data Exchange online help, for more information.
Support for File Names in Non-Creo Models
Creo applications support the original file names of non-Creo models. File name can contain a maximum of 80 characters and file paths can contain a maximum of 260 characters. The Creo TOOLKIT functions that work with multi-CAD models support file names with a maximum of 31 or 80 characters, depending on the type of function.
The functions that read information from Creo applications do not have any restriction on character length. These functions can read file names of any length. However, the functions that compute a result, or create or set features, item, properties, and so on, may have restrictions on character length. Refer to the Creo TOOLKIT header files, or the section Restrictions on Character Length for Multi-CAD Functions, for more information on functions that have restrictions on character length.
Character Support for File Names in Non-Creo Models
The following special characters are supported for file names in non-Creo models:
•  % (percent)
•  ^ (caret)
•  & (ampersand)
•  + (plus)
•  = (equal)
•  ' (apostrophe)
•  ` (grave accent)
•  , (comma)
•  ! (exclamation mark)
•  $ (dollar sign)
•  @ (at sign)
•  ; (semicolon)
•  # (hash)
•  - (dash, hyphen)
•  ~ (tilde)
•  ( ) (round brackets)
•  [ ] (square brackets)
•  { } (curly brackets)
•  . (period)
•  \ (backslash)
•  / (forward slash)
•  “ (quotation marks)
•  (space)
Note
Do not use space as the first character in file names for models.
Working with Multi-CAD Models in Creo Toolkit
Most of the Creo TOOLKIT functions support multi-CAD assemblies. The functions, which do not support assemblies with mixed content, return the error PRO_TK_UNSUPPORTED.
You can perform basic operations, such as, locating and retrieving non-Creo models from Windchill and opening them in Creo applications. However, you must use Windchill Workgroup Manager to initially check in the non-Creo models to Windchill. After checking out models from Windchill, you can work on them in Creo applications and then check in the models to Windchill.
Working with Notifications
Notifications allow the Creo TOOLKIT application to detect certain types of events in Creo Parametric. You can call functions before or after such events.
Notifications to all of the file management operations in Creo Parametric, such as save, retrieve, copy, rename, and so on, are supported for Creo assemblies with non-Creo components.
The following types of file management notifications are supported for multi-CAD assemblies:
•  File Management Events—Notifications that are called after successful file management operations in Creo Parametric.
  Pre-file Management Events—Your callback function is called before the file management event. The functions are called only for models that are the explicit objects of the file management operation.
  Pre-All File Management Events—Your callback function is called before all file management events on models, even if those models were not explicitly specified by the user.
  Post-file Management Events—Your callback function is called after the file management operation. The functions are called only for models that are the explicit objects of the file management operation.
  Post All File Management Events—Your callback function is called after all file management events on models, even if those models were not explicitly specified by the user.
•  File Management Failure Events—Notifications that are called after the file management operations in Creo Parametric fail.
The following events and callback functions are supported for multi-CAD assemblies:
New Event
New Signature
Pre-file Management Events
PRO_MODEL_RETRIEVE_PRE
(*ProModelRetrievePreAction)
PRO_MODEL_SAVE_PRE
(*ProModelSavePreAction)
PRO_MODEL_COPY_PRE
(*ProModelCopyPreAction)
PRO_MODEL_RENAME_PRE
(*ProModelRenamePreAction)
Pre-All File Management Events
PRO_MODEL_SAVE_PRE_ALL
(*ProModelSavePreAllAction)
Post File Management Events
PRO_MODEL_COPY_POST
(*ProModelCopyPostAction)
PRO_MODEL_RENAME_POST
(*ProModelRenamePostAction)
PRO_MODEL_ERASE_POST
(*ProModelErasePostAction)
PRO_MODEL_RETRIEVE_POST
(*ProModelRetrievePostAction)
PRO_MODEL_SAVE_POST
(*ProModelSavePostAction)
Post All File Management Events
 
PRO_MODEL_SAVE_POST_ALL
(*ProModelSavePostAllAction)
PRO_MODEL_ERASE_POST_ALL
(*ProModelErasePostAllAction)
PRO_MODEL_RETRIEVE_POST_ALL
(*ProModelRetrievePostAllAction)
PRO_MODEL_COPY_POST_ALL
(*ProModelCopyPostAllAction)
PRO_MODEL_RENAME_POST_ALL
(*ProModelRenamePostAllAction)
File Management Failed Events
PRO_MODEL_DBMS_FAILURE
(*ProModelDbmsFailureAction)
Working with Basic Graphics
You can create windows, which contain the specified multi-CAD assemblies. The functions ProObjectwindowMdlnameCreate(), ProAccessorywindowWithTreeMdlnameCreate(), and ProBarewindowMdlnameCreate() are used to create windows. To use these functions with non-Creo components, pass one of the following values as the input argument object_type, depending on the type of non-Creo model:
•  PRO_CATIA_PART
•  PRO_CATIA_PRODUCT
•  PRO_CATIA_CGR
•  PRO_CATIA_MODEL
•  PRO_UG
•  PRO_SW_PART
•  PRO_SW_ASSEM
•  PRO_CC_ASSEMBLY
•  PRO_CC_PART
Working with Simplified Representations
You can create simplified representations, that is, master, geometric, graphics, and user-defined representations, for multi-CAD assemblies. You can also retrieve these representations in the session using the Creo TOOLKIT functions. You can edit a simplified representation created in a Creo application for a non-Creo assembly.
Note
The function ProSolidSimprepVisit() visits only user-defined representations. Multi-CAD assemblies can have user-defined representations, but the non-Creo parts cannot have user-defined representations. Therefore, the function ProSolidSimprepVisit() returns PRO_TK_E_NOT_FOUND error for non-Creo parts.
Working with Constraints
You can retrieve the constraints of non-Creo models in multi-CAD assemblies. For retrieving the constraints, you must redefine the non-Creo models using the Edit Definition command in the Creo Parametric user interface. After redefinition, retrieve the constraints using the Creo TOOLKIT functions.
Working with User-Defined Features (UDF)
You can insert user-defined features created in Creo applications in a multi-CAD assembly, only if it does not alter the structure of the non-Creo models. You cannot create UDFs in a non-Creo model.
Functions that Support Multi-CAD Assemblies
For some of these functions, you may have to specify the type of the non-Creo CAD model using the data type ProMdlfileType. The valid values of ProMdlfileType are:
•  PRO_CATIA_PART
•  PRO_CATIA_PRODUCT
•  PRO_CATIA_CGR
•  PRO_CATIA_MODEL
•  PRO_UG
•  PRO_SW_PART
•  PRO_SW_ASSEM
•  PRO_INVENTOR_PART
•  PRO_INVENTOR_ASSEM
Superseded Functions
The following table lists the functions that have been superseded and the corresponding new functions to support multi-CAD assemblies:
Superseded Function
New Function
ProIntfimportModelWithOptionsCreate()
ProIntfimportModelWithOptionsMdlnameCreate()
ProMdlDependenciesList()
ProMdlDependenciesDataList()
ProMdlNameGet()
ProMdlMdlnameGet()
ProMdlfileCopy()
ProMdlfileMdlnameCopy()
ProMdlBackup()
ProMdlnameBackup()
ProMdlCopy()
ProMdlnameCopy()
ProMdlInit()
ProMdlnameInit()
ProMdlRename()
ProMdlnameRename()
ProMdlRetrieve()
ProMdlnameRetrieve()
ProMdlDataGet()
ProMdlOriginGet()
ProMdlMdlnameGet()
ProMdlExtensionGet()
ProFilenameParse()
ProMdlDeclaredList()
ProMdlDeclaredDataList()
ProMfgCreate()
ProMfgMdlCreate()
ProReferenceOriginalownernameGet()
ProReferenceOriginalownerMdlnameGet()
ProReferenceOwnernameGet()
ProReferenceOwnerMdlnameGet()
ProSolidShrinkwrapCreate()
ProSolidShrinkwrapMdlnameCreate()
ProAssemblySimprepRetrieve()
ProAssemblySimprepMdlnameRetrieve()
ProBoundaryBoxSimprepRetrieve()
ProSimprepMdlnameRetrieve()
ProDefaultEnvelopeSimprepRetrieve()
ProSimprepMdlnameRetrieve()
ProGraphicsSimprepRetrieve()
ProSimprepMdlnameRetrieve()
ProLightweightGraphicsSimprepRetrieve()
ProSimprepMdlnameRetrieve()
ProPartSimprepRetrieve()
ProSimprepMdlnameRetrieve()
ProSymbSimprepRetrieve()
ProSimprepMdlnameRetrieve()
ProGeomSimprepRetrieve()
ProSimprepMdlnameRetrieve()
ProAsmSkeletonCreate()
ProAsmSkeletonMdlnameCreate()
ProSolidCreate()
ProSolidMdlnameCreate()
ProSolidInit()
ProSolidMdlnameInit()
ProUdfmdlNamesAlloc()
ProUdfmdlMdlnamesAlloc()
ProFilenameParse()
ProFileMdlnameParse()
ProOutputFileWrite()
ProOutputFileMdlnameWrite()
ProFileOpen()
ProFileMdlnameOpen()
ProFileMdlfiletypeOpen()
ProFileSave()
ProFileMdlnameSave()
ProFileMdlfiletypeSave()
ProIntfSliceFileWithOptionsExport()
ProIntfSliceFileWithOptionsMdlnameExport()
Pro2dImportCreate()
Pro2dImportMdlnameCreate()
ProPathCreate()
ProPathMdlnameCreate()
ProProductviewFormattedExport()
ProProductviewFormattedMdlnameExport()
ProObjectwindowCreate()
ProObjectwindowMdlnameCreate()
ProAccessorywindowWithTreeCreate()
ProAccessorywindowWithTreeMdlnameCreate()
ProBarewindowCreate()
ProBarewindowMdlnameCreate()
ProATBVerify()
ProATBMdlnameVerify()
ProAsmcompMdlNameGet()
ProAsmcompMdlMdlnameGet()
ProAsmcompCreateCopy()
ProAsmcompMdlnameCreateCopy()
ProCavitylayoutLeaderSet()
ProCavitylayoutLeaderMdlnameSet()
ProCavitylayoutModelnamesGet()
ProCavitylayoutModelMdlnamesGet()
ProCavitylayoutModelnamesSet()
ProCavitylayoutModelMdlnamesSet()
ProMdlLoad()
ProMdlFiletypeLoad()
ProMdlRepresentationLoad()
ProMdlRepresentationFiletypeLoad()
(*ProMdlSavePreAction)
(*ProModelSavePreAction)
(*ProMdlCopyPreAction)
(*ProModelCopyPreAction)
(*ProMdlRenamePreAction)
(*ProModelRenamePreAction)
(*ProMdlRetrievePreAction)
(*ProModelRetrievePreAction)
(*ProMdlSavePostAction)
(*ProModelSavePostAction)
(*ProMdlCopyPostAction)
(*ProModelCopyPostAction)
(*ProMdlRenamePostAction)
(*ProModelRenamePostAction)
(*ProMdlErasePostAction)
(*ProModelErasePostAction)
(*ProMdlRetrievePostAction)
(*ProModelRetrievePostAction)
(*ProMdlSavePostAllAction)
(*ProModelSavePostAllAction)
(*ProMdlCopyPostAllAction)
(*ProModelCopyPostAllAction)
(*ProMdlErasePostAllAction)
(*ProModelErasePostAllAction)
(*ProMdlRetrievePostAllAction)
(*ProModelRetrievePostAllAction)
(*ProMdlDbmsFailureAction)
(*ProModelDbmsFailureAction)
Restrictions on Character Length for Multi-CAD Functions
This section describes the restriction on character lengths for Creo TOOLKIT functions that support Creo assemblies with mixed content.
The following table lists the maximum number of characters supported by these functions:
Function Name
Character Length Supported
Additional Comment
ProSolidShrinkwrapMdlnameCreate()
31 characters
 
ProSolidMdlnameCreate()
31 characters
 
ProSolidMdlnameInit()
80 characters
 
ProAssemblySimprepMdlnameRetrieve()
80 characters
 
ProSimprepMdlnameRetrieve()
80 characters
 
ProAsmSkeletonMdlnameCreate()
31 characters
 
ProOutputFileMdlnameWrite()
31 characters
 
ProFileMdlnameParse()
80 characters
 
ProFileMdlnameOpen()
80 characters
 
ProFileMdlnameSave()
80 characters
 
ProFileMdlfiletypeOpen()
80 characters
 
ProFileMdlfiletypeSave()
80 characters
 
ProMdlDependenciesDataList()
80 characters
 
ProMdlfileMdlnameCopy()
31 characters
In Creo Parametric 3.0, this API is functionally similar to the superseded function ProMdlfileCopy(). It returns an error for model names longer than 31 characters.
ProMdlnameBackup()
80 characters
 
ProMdlnameCopy()
31 characters
In Creo Parametric 3.0, this API is functionally similar to the superseded function ProMdlCopy(). It returns an error for model names longer than 31 characters.
Note
This function is not supported for non-Creo models and Creo assemblies with mixed content.
ProMdlnameInit()
80 characters
 
ProMdlnameRetrieve()
80 characters
 
ProMdlnameRename()
31 characters
In Creo Parametric 3.0, this API is functionally similar to the superseded function ProMdlRename(). It returns an error for model names longer than 31 characters.
Note
This function is not supported for non-Creo models and Creo assemblies with mixed content.
ProMdlDeclaredDataList()
80 characters
 
ProMfgMdlCreate()
31 characters
 
ProIntfimportModelWithOptionsMdlnameCreate()
31 characters
In Creo Parametric 3.0, this API is functionally similar to the superseded function ProIntfimportModelWithOptionsCreate(). It returns an error for model names longer than 31 characters.
ProIntfSliceFileWithOptionsMdlnameExport()
31 characters
 
Pro2dImportMdlnameCreate()
31 characters
 
ProProductviewFormattedMdlnameExport()
31 characters
 
ProObjectwindowMdlnameCreate()
80 characters
 
ProAccessorywindowWithTreeMdlnameCreate()
80 characters
 
ProBarewindowMdlnameCreate()
80 characters
 
ProATBMdlnameVerify()
80 characters
 
ProAsmcompMdlnameCreateCopy()
31 characters
 
ProCavitylayoutLeaderMdlnameSet()
31 characters
In Creo Parametric 3.0, this API is functionally similar to the superseded function ProCavitylayoutLeaderSet(). It returns an error for model names longer than 31 characters.
ProCavitylayoutModelMdlnamesSet()
31 characters
In Creo Parametric 3.0, this API is functionally similar to the superseded function ProCavitylayoutModelnamesSet(). It returns an error for model names longer than 31 characters.
ProUdfmdlMdlnamesAlloc()
31 characters
In Creo Parametric 3.0, this API is functionally similar to the superseded function ProUdfmdlNamesAlloc(). It returns an error for model names longer than 31 characters.
Note
This function is not supported for non-Creo models and Creo assemblies with mixed content.
ProPathMdlnameCreate()
 
No restriction on character length
ProCavitylayoutModelMdlnamesGet()
 
No restriction on character length
ProMdlDirectoryPathGet()
 
No restriction on character length
ProMdlFiletypeLoad()
 
No restriction on character length
ProMdlRepresentationFiletypeLoad()
 
No restriction on character length
ProMdlFileTypeGet()
 
No restriction on character length
ProMdlExtensionGet()
 
No restriction on character length
ProReferenceOriginalownerMdlnameGet()
 
No restriction on character length
ProReferenceOwnerMdlnameGet()
 
No restriction on character length
ProMdlMdlnameGet()
 
No restriction on character length
ProAsmcompMdlMdlnameGet()
 
No restriction on character length
Functional Areas in Creo that do not Support Multi-CAD Assemblies
You cannot work with multi-CAD assemblies in the following functional areas:
•  Family tables
•  Flexible components
•  Rename, delete, and copy operations for non-Creo models in a multi-CAD assembly
Note
When you save a copy, the non-Creo models are saved as Creo models.
•  Add, delete, replace, reorder, and supress components in a non-Creo assembly
•  Move components to a new subassembly in a non-Creo assembly
•  Creation of external references. However, you can create external references, only if you have set the external reference option in Creo Parametric user interface.
Sample Applications for Multi-CAD Assemblies
The sample applications provided with the Creo TOOLKIT 3.0 installation use the functions that support multi-CAD assemblies. The sample applications are available at <creo_loadpoint>\<version>\Common Files\protoolkit\protk_appls. See the sample examples for more information on how to migrate your existing applications to support multi-CAD assemblies using the Creo TOOLKIT 3.0 functions.
Migrating Applications Using Tools
PTC recommends migrating your applications to the new interfaces, which would support multi-CAD models in future releases.
A mapping table mcm_map.txt, provided with the Creo TOOLKIT 3.0 installation, lists all the functions that support multi-CAD assemblies and also lists the deprecated functions.
You can migrate the applications using the perl script mark_deprecated.pl, which is available at the location <creo_loadpoint>\<version>\Common Files\protoolkit\scripts. Refer to the section Tools Available for Migration in the section Migrating Older Applications, for more information on the script.