In ProE & Creo in the replace component dialog the default option (when not a Family Table) is to replace by "Reference Model". For some reason this seems not to work at all for merged parts and their parent assembly despite the error message erroneously specifying that it is not a merged component.
For example, I have a merged sub-assembly part and its parent part, and a tope level asm and lets call them:
In Top.asm I want to replace the child merge_SA.prt with the parent part merge_parent.asm. When I try the replacement fails and I receive the error message:
"Models merge_SA.prt and merge_parent.asmare not related by any shrinkwrap, merged or derived model."
This error does not make any sense because one is a merge of the other which also means they are derived models. The geometry between the models are exactly the same with the exception that merge_SA.prtis missing a couple of brazing rings (which are not even used for asm constraints).
Any idea why the replace is not working? Has anyone successfully used the replace command for merged parts and their parent assemblies? I have tried this in ProE wf4 and in Creo2 and both respond the same way. If this is a glitch in the program I can report it, but want to first check if I am not doing something correct or if others have had similar issues.
Thank you in advance for any help you can offer!
You say : "In Top.asm I want to replace the child merge_SA.prt with the parent part merge_parent.asm."
In order to use "Replace by Related Model" in case of Merge you should replace "base model" (say a.prt) with the "Target model" that has Merge Feature of "base model" (say b.prt that has Merge of a.prt).
It is also possible to replace b.prt with a.prt by the same method.
Merge feature can reside in a part only and can reference part geometry only - never an assembly (though reference may path through assembly). Same correct for Inheritance feature. So you got meslead here.
If you want to "Replace by Reference Model" part by assembly the only way is to have Shrinkwrap feature in that assembly that copes the desired part - then such replace will succeed.
I am not sure I entirely understand, but I think I am doing what you are saying so please correct me if I am wrong.
merge_SA.prt is an assembled component in merge_parent.asm.
Merge_SA.part is also an assembled component in Top.asm.
In Top.asm, I want to use the replace by reference command to replace merge_SA.prt with merge_parent.asm.
Thanks for your help.
You can not replace PART with ASSEMBLY "by merge" reference.
"By Reference Model" (with merge) you can only replace PART with another PART (one should have Merge feature of another, or both should have Merge feature from same 3rd part).
If you want to replace subassembly that contains some part with that part or vise versa the best way will be to create Interchange assembly, add there both your merge_SA.prt and merge_parent.asm and create tags to map similar geometries. TAGs can be created in several an automated ways so you do not need spend too much time on it. Then you will be able to Replace by Interchange.
I believe all this should be described in more details in "component replace" section of documentation.
Although I don't quite understand the scenario where the merge replace will work, I understand that (unfortunately) it is not intelligent to replace the part with the asm, even though the geometry and references are all common.
I am mostly unfamiliar with interchange asms so I took your suggestion and looked through the help documentation and some websites. Unfortunately, I still do not have a good handle on it. It seems like it takes more preparation than it would save time, so we probably won't pursue this method.
Thanks for your help. I hope PTC allows future Creo versions to replace related merge parts and asms, when they share all the same references.
What version of Pro/E or Creo are you using? Can you not just do a replace unrelated ? This is essentially the same functionality as creating an interchange group and using that as the basis for replacement. Using an interchange group you can pretty much swap anything... parts, shrinkwraps, assemblies, merges, imported features, etc. As long as you can specify the appropriate references, you can do an interchange.
That functionality can now be accessed "on the fly" using the Replace Unrelated tool. I'm not exactly sure why you're trying to replace a merge into an assembly. To me, that's a job for a functional simplified rep substitution, not an actual model replacement. However, if you need to do the actual replacement and you have the unrelated feature available, perhaps give that a try.
Thanks and best regards,
We only can use replace unrelated. The problem, is:
This would be acceptable if the merge part being replaced was not related to the merge asm. But they are, hence the frustration.
As a work around, your reply makes it sound like I am missing something where in the replace dialog you can designate surfaces and datums that are the same between the components being replaced and the one duing the replacing? What am I missing?
I am not sure what you mean by functional simplified rep substitiution. Can you direct me to more info on that method/feature? I tried using what I could figure out about simplified reps but ran into some problems:
I just noticed though that some users gave some suggestions on that thread about FT and envelopes that I some how missed. I will have to try doing those as well. Almost anything we do though we will have to replace the merged part with the parent merge asm, and we are back to having to reconstrain the model for constraints ProE should already be able to figure out.
Whether or not you have the ability to replace using the Unrelated Component feature depends upon which version of Pro/ENGINEER or Creo you're using. At Wildfire 5, the Unrelated option was expanded to allow an 'on-the-fly' interchange. The interface looks like this (click for a larger image)...
This is what I was talking about. You can designate surfaces, datums, and other references that are the same between two different components. This also goes for downstream components that may be assembled to the object being replaced. With this tool, you can swap out your two pieces without causing the failures you're speaking of.
Just from your last message I can tell you're probably not using a version of Pro/E or Creo with this new feature. If you're on Wildfire 3 or 4, you can mimic the same functionality using an Interchange assembly. This is basically an assembly containing the two pieces you wish to swap. You select references from each model and "tag" them (give them names). By tagging references, the system then understands that, for example, DTM1 in model "A" is the same as "FRONT_PLANE" in model "B". This allows the replace command to work much the same way as with instances in a family table.
As for the line about "functional" simplified rep... I really messed that up. I transposed terms from two different features. To correct myself- you can use interchange assemblies to create both functional interchanges and simplified interchanges. A functional interchange would be where you're swapping two objects that share a similar function. Perhaps you have an assembly requiring a simple motor. Suppose your company offers this assembly with two different options for the motor. This is an example of a 'functional' interchange where you'd swap one motor with another one even if they are completely unrelated components (perhaps from different vendors, etc). A simplified interchange might take a very complex assembly of parts and seek to swap it with a very basic "spaceclaim" part or envelope. You'd use this type of interchange in conjuction with a substitution simplified rep.
Now that I went back and looked at the link to your other thread I totally remember this discussion. I remember Frank S. suggesting a family table and someone else sugggesting a simplify and represent using envelopes. I actually tried this already and it still didn't update the way you need. I don't much like the family table idea. It seems to far off from the intent of a family table... and I try to avoid using techniques that require repurposing tools to solve problems for which they're not really intended. I mean, in some cases any solution is better than none. But in general I think you're asking for confusion and problems in the future if you use a family table approach to resolve this kind of issue. It seems like you'd be better off with an interchange until something better comes along.
I know PTC is working on inheritance assemblies (as opposed to just parts). Maybe this will offer some help. Also, I brought the entire issue of merges not automatically updating (from the other thread) to PTC at the face-to-face Technical Committee meetings in January. I requested a toggle switch or other option that would allow the merges to automatically update.
What version of Pro/E or Creo are you using?
I forgot to answer that: We are currently using ProE WF4 but since we are planning to upgrade to Creo2 later this year so I have been experimenting with it.
I just tried what you described by using the replace by unrelated component command in Creo and used the on the fly interchange and must say, that is a very nice enhancement!!! Thank you for pointing it out.
From what I can tell the feature limits the references to the references used in that particular assembly so down stream models may not update correctly if there is no way for the user to add references beyond those used in that model. That being said, maybe the "show optional pairing tags" would cover models where this one is used?
Since this has been a very long standing problem (many years), we can wait till we go to Creo2 if it helps correct these problems.
For now I have to run. I am going to have to re-read the rest of your post on envelopes, interchanges and simplified reps. It is still new to me and it has not yet 'clicked'. I will try to remember to write again once I re-read your post some more and do some experimenting.
The on-the-fly interchange is pretty much the same as a regular interchange. On the regular interchange, you can specify which upstream models might rely on your replacement object. The system will open those upstream models in the background, figure out which references are required, and prompt you to tag them.
I'm not sure if this same feature is available using the on-the-fly tool but it's worth a look. Maybe investigate a full interchange assembly and see what's different between the two tools. To start a regular interchange, simply select File->New. Select Assembly as the Type and Interchange as the Sub-Type (see below). Once the newe blank assembly opens, simply load in two models. They'll drop side-by-side rather than ask for constraints. From there you can probably hunt and peck for the commands. It's sort of self-explanatory especially if you've already used the Unrelated Component tool.
"...I'm not sure if this same feature is available using the on-the-fly tool but it's worth a look."
As ytou abs.correctly mentioned, both methods are almost similar. The two differences are :
1. Interchange assembly will provide auto-tagging only after user suggests context assembly for references collection. Pros : user can TAG a model in context of several assemblies. Cons : user has to know these assemblies upfront.
Same time "unrelated replace" pairing table will only analyse references in scope of top assembly in current window - not more and not less. If the only purpoce is "immediate usage" go with this one ; if you know you will need to Replace this model in other places as well - better go to Interchange Assembly.
2. Interchange assembly and its members create bi - directional dependency (in PDM) that many users see as problematic. Interchange assembly pulls its members with it, but members also pull Int Asm upon check out / in. Definitely no dependecies are created if "unrelated replace" is used.
3. I am not fully confident about this (need to check), but I think there is a way to convert "pairing table" to full blown Interchange object at any stage to allow its reuse.
In your latest post I noted one side note, that I wanted to ask some clarification about : "also, I brought the entire issue of merges not automatically updating (from the other thread) to PTC at the face-to-face Technical Committee meetings in January. I requested a toggle switch or other option that would allow the merges to automatically update."
Can you elaborate in which situation you get Merges not updating ? In general Merges and Inheritance Features always update when they "see" base model in session, so likely you get into some special case ...
Did you know if anything every come of your request to add a toggle switch for updating Merge components automatically (which would work when using PDMLInk and those components which make up the merges objects are not checkout)?