We currently keep models clean by not allowing users to save models with failed features. This has led to people losing work so we're looking for a better solution. The Modelcheck gatekeeper seemed like the right functionality to use so I have this up and running with our dev server but I'm completely stuck on a couple of issues:
1) Running Model check on just saved components. According to PTC (https://support.ptc.com/appserver/cs/view/solution.jsp?n=CS5481), if I run Modelcheck on save or regenerate it only runs on the current model (top level or individual component that is saved). If I run it interactively I have the choice of the top level or all children. Is there really no way to run it on just modified components? How do you deal with this? If I have a large assembly with lots of library hardware parts, I really don't want to wait while it runs modelcheck on every single model especially since I'm never going to check in 99% of these. On the flip side if I modify several components in the context of a top level, I don't want to have to individually open and save these. And if I don't do this, it seems like I'll be able to check in models with failures since the changed components get saved but don't have modelcheck run.
2) ModelCheck performance. ModelCheck works really well for small to medium sized models. When I save a large assembly (~3500 components) running ModelCheck makes the save take over 5 minutes (it takes ~ 20 seconds without ModelCheck enabled). Is this normal? I went through our checks file and disabled everything but the failed features and regen errors so ModelCheck is doing the bare bones but it still takes this long.
Any advice on using Modelcheck in a large assembly environment would be highly appreciated!
One method to running ModelCheck on assemblies with lots of parts.
Use a parameter to force "MC" ModelCheck to skip that part.
If you have library parts that have passed "MC" and have been stamped by "MC" then you can skip these.
# Enable/Disable ModelUPDATE parameter added to the model
ADD_MU_STAMP YN Y
# Enable/Disable ModelUpdate
MU_ENABLED YN Y
With ADD_MU_STAMP set to Y (yes) models will get a parameter CALLED MODELUPDATE
In the file called condition.mcc
You add a line
IF (MODELUPDATE) NOCHECK
The above line will force "MC" to skip the models with the parameter MODELUPDATE
Essentially you can setup any parameter to get "MC" to skip the model.
Just edit the condition.mcc and use your own parameter setting.
This will speed up your ModelCheck process by 50% - 75%
Taken from the ModelCheck Manual
Edit your (config_init.mc)
Specifies whether ModelCHECK must skip the checking of models that have not changed after they were retrieved.
• Y - Skips checking the model irrespective of the value of the MC_ERRORS parameter if the model has not changed after retrieval.
• N - Skips checking the model only if the value of the MC_ERRORS parameter is 0 and the model has not changed after retrieval. This is the default.
Note: The SKIP_MODELS configuration option is ignored if the CHECK_ALL_MODELS configuration option is set to Y.
I had tried that. Unfortunately skip_models has no effect when using ModelCheck in save mode: https://support.ptc.com/appserver/cs/view/solution.jsp?n=CS5481
According the PTC tech support, there is no way in any mode for Model check to run on the top level and changed components only. It either runs only on the top level or on every file in the assembly. I'll have to start a product idea. But I first want to test out your first suggestion - just haven't had time yet.
Did you try Jeff's initial suggestion about using the Condition.mcc file? (I see from you prior reply the SKIP MODELS will not work).
With the condition.mcc file, you could concievably run modelcheck on all your data the once, and have it identify library components (I dont know if you have ways to designate or identify your library hardware based on naming or something else) and create a parameter e.g. HARDWARE.
Then, in the condition.mcc file, have a line called:
IF (HARDWARE) NOCHECK.
This should force Modelcheck to skip all models where it finds the HARDWARE parameter.
Also, you could try a combination of the following config.pro options:
Let me know if this helps.
We solved this by using Toolkit ...
There we use the function ProNotificationSet with the notification type PRO_MDL_SAVE_PRE.
Within the related notification function we execute ModelCHECK in interactive mode and the option SKIP_MODELS gets considered.
So the behaviour is like the ModelCHECK in save mode, but SKIP_MODELS work!
Your 2nd problem, the bad performance in (big) assemblies, is generated by ModelUPDATE.
You've enabled ModelUPDATE, haven't you?
ModelUPDATE forces a recalculation of the mass properties, even if you've set the config.pro option mass_property_calculate to by_request!
We've criticized this behaviour very insistent.
PTC agreed to fix this probably in Creo Parametric 4.0. There will come a new option to suppress the recalculation of the mass properties.
We did this a little differently. In our condition.mcc we added a line to remove all library files from our checks. If you have a common item/parameter in all of your library files then this will not be bad.
! Don't check Library Parts
IF ( PDM LIBRARY) NOCHECK
IF (LVL EQ L00) NOCHECK
Good news ...
PTC has fixed the problem of the forced recalculation of the mass properties in Creo Parametric 2.0 M200, 3.0 M080 and 4.0 F000! See PTC's document CS220409 for details.
A new option MU_MASS_RECOMPUTE has been introduced to deactivate the recalculation.