Adaptively used in what assembly?

torbjorn
Collaborator
Collaborator

Adaptively used in what assembly?

torbjorn
Collaborator
Collaborator

When a part have been adaptively used in some assembly, there is a checkbox in the document property that shows this. But how can I find out where it was used adaptively?

I can get an overview from Vault where it is used, but if used in several assemblies - which one controls the adaptvity?

I assume this info somehow is stored in the part, so if it isn't available directly - can I find it via API?

 

Torbjørn

Inventor 2017.4

0 Likes
Reply
Accepted solutions (1)
1,920 Views
19 Replies
Replies (19)

johnsonshiue
Community Manager
Community Manager

Hi! The adaptive part itself does not know where exact assembly it is adaptive to. Its document setting simply records it is adaptive somewhere and also where the associative geometry is associative to. The assembly which the adaptive relationship is established does know that the part is adaptive to another part.

I don't think you will be able to find where exactly the part is adaptive to without knowing the assembly.

Many thanks!

 



Johnson Shiue (johnson.shiue@autodesk.com)
Software Test Engineer
0 Likes

torbjorn
Collaborator
Collaborator

Thanks, then I know.

 

(Still, seems a bit strange that two components connected by adaptivity doesn't know about each other. Makes me wonder how an adaptive part knows where to adapt after a copy design is performed...)

 

Torbjørn

johnsonshiue
Community Manager
Community Manager

Hi! The adaptive part does know where the reference came from. But, it is in the context of the assembly where adaptive relationship is established. If you just open up the adaptive part by itself, it would not be able to tell which assembly it is in since there can be many.

Regarding Copy Design, it should work as long as the assembly and its components are all copied at the same time.

Many thanks!



Johnson Shiue (johnson.shiue@autodesk.com)
Software Test Engineer

tomasz.sztejka
Advocate
Advocate
Sorry for jumping in after so many ears, but this is also bothering me since I inherited projects with hell lot of adaptivity and have a hell lot of problems with finding from where the adaptivity comes from.

>(..)The adaptive part does know where the reference came from(..)

Really Johnson?

Then how it is possible that when You put an adaptive part in an ANOTHER assembly, create a sketch, turn it to "Adaptive" and try a projection You get an error:
"Cross-part projection failed because the sketch is in a part which is adaptive in another assembly"?

Notice, it happens even if initial assembly was deleted, so no, it can't look up for it. How can it know it?
0 Likes

tomasz.sztejka
Advocate
Advocate
It may be dumb to answering to onself, but after playing a bit I was able to set part to be adaptive in TWO DIFFERENT assemblies at the SAME moment, so yes, it does not save such an information and the error message is confusingly wrong. It is just saying, that "adaptive" flag stored in part WAS SET when part was put in an assembly.

Hopes for easily finding where is my adaptive assembly are gone...

0 Likes

ferrisb
Collaborator
Collaborator

I just add this as an external rule.

With more than 10 parts in an assembly, adaptivity never seems to work out well for me, good luck.

tomasz.sztejka
Advocate
Advocate
Accepted solution

>(...)adaptivity never seems to work out well for me(...)

For most my colleagues it also does not work. For me it works... mainly because I am a programmer who is doing mechanical design.

 

There is a rock hard fool proof work-flow with adaptivity which, in my experience, rarely breaks. I use it a lot in complex designs which really have to be adaptive and it can, altough with a lot manual "open - update - save" propagate complex design changes.

 

The primary idea is to make small, primitive "adaptor" assemblies in which just parts which must be adaptive do appear. Only ONE part in such assembly must be adaptive, and changes made on part may NOT touch any geometry which is used to form assembly relationships. The only exception from that rule I found working is to be able to dig holes in mated surfaces.

 

Once this "adaptor" is used to add some modifications to part You must NOT use this part directly in other assemblies. Instead create a derived part and use it. The bonus is, that such a derived part may be adaptive too, but in an another "adaptor" assembly. And so on.

 

This way You build a chain "base part" -> "part with hole" -> "part with hole and rim" and etc, each geometry change having own "adaptor". If a reference part in "base part" changes, just open appropriate adaptor and update it. And propagate updates upwards (sadly Inventor does not see it).

 

Notice, with that approach both part which adapts and part to which it is adaptive to may grow in complexity, yet adaptivity is not broken because they mate in following manner:

 

in "Adaptor 0":

"base part A" ---> adapts to --> "base part B" -->produces--> "part A with hole"

in "Adaptor 1"

"base part B"--->derived-to->"part B with hole-mate ring"--> adapts to -->"part A with hole"-->produces-->"part B with hole-mate ring"

...

and so on, and so on.

 

At first glance looks like overkill, but it is easy and functional. In my case the end of part chain look like:
...->"part to be assembled"->"part with changes for milling" or
...->"part to be assembled"->"part with additions for 3Dprinting" what helps a lot with dealing with machining issues. For an example my 3D printer prints holes 0,2mm smaller than designed. With that approach I can fix it without altering base part seen in assembly.

 

In my opinion Inventor is really poorly designed when it comes to adaptivity.

 

There are two sources of problem. First, it is an inability to let u help it and give names to edges. With that it could just track edge by name, not by geometry. Second it is the inability to let us to make a joint/mate or project part geometry from the state other than last in part tree and name this state.

 

Using "derived parts" provides such a "named barriers" which solves 99% of adaptivity problems. At the cost of creating helper assemblies, which, I must admit is significant in work-hours. But not more expensive than broken adaptive part, which, obviously, breaks at the end of large project, or not using adaptivity at all and correcting all dimensions by hand.

 

For hunting "where part is adaptive" I did myself a macro, which is a conglomerate of many information found in this forum (but not in Autodesk manuals). I let myself to attach it, as zip, since this forum refuses to accept .bas files.

torbjorn
Collaborator
Collaborator

Just to be clear, I did not check this as a solution to the question raised. And I do not know who did.

This proposal is interesting, but I would rather call it a workaround that a solution.

 

Torbjørn

tomasz.sztejka
Advocate
Advocate
Exactly.
0 Likes

Tom.DiGregorio2DPCZ6
Contributor
Contributor

After about 1 hour of searching and analyzing an adaptive part, I have concluded that it IS NOT POSSIBLE to find the assembly where the adaptivity was created.

DO NOT USE adaptivity unless you have a storeroom full of aspirin when it is time to edit and resolve links later.

This has got to be the must frustrating functions ever created.

0 Likes

jtylerbc
Mentor
Mentor

@Tom.DiGregorio2DPCZ6 wrote:

After about 1 hour of searching and analyzing an adaptive part, I have concluded that it IS NOT POSSIBLE to find the assembly where the adaptivity was created.


 

Technically this is true.  However, you may be able to narrow it down.  Most often the adaptivity is going to be in the first assembly the part was used in.  If you have a "where used" list and can see creation dates for the assemblies, the oldest is the most likely one.  It won't be true 100% of the time - there is always the possibility that the part was created for a later assembly (and is adaptive in it), and was added to an older one in a revision.  But it's going to be the oldest one more often than not.

 


@Tom.DiGregorio2DPCZ6 wrote:

This has got to be the must frustrating functions ever created.


 

It can be frustrating, but much of that is self-inflicted by the users - mainly in the form of using adaptivity where they shouldn't have in the first place, but also in using it improperly.  Speaking as someone that probably uses it more than most, I would suggest the following:

 

  1. If you think you need adaptivity to create the geometry you want, consider using Multibody Modeling techniques instead.  These can get you the same kind of results without the issues that come with adaptivity.
  2. Avoid using adaptivity when parameter linking would accomplish the same thing.  Parameter links are much more stable, as well as being more easily traceable to the source file.
  3. If it is known that the part will be used in multiple assemblies, it may not be a great candidate for adaptivity.  My preference is to use adaptivity for things that are one-off use, such as plates and structural members in weldments.  That guideline alone prevents most instances of the problem being discussed here.
  4. If you are going to use adaptivity, use it as little as possible.  Don't try to make everything adaptive to everything else - pick particular important relationships to control adaptively.  If parts need to be adaptive to several sources, then probably the project should have been approached with a multibody strategy.

 

Another thing to keep in mind and check for - is it really adaptive, or does it just have the flag?  A huge percentage of adaptive models are made so accidentally (ex. projecting the wrong edge while editing in place in an assembly).  Or they were created intentionally, but the adaptive geometry was deleted at some point without clearing the flag.  Also, if you copy an adaptive part, the new part will have the adaptive flag even if you deleted the adaptive feature, unless you manually clear it in the Document Settings.  In short, sometimes the reason you can't figure out what the part is adaptive to is because it really isn't.

0 Likes

Frederick_Law
Mentor
Mentor

@Tom.DiGregorio2DPCZ6 wrote:

After about 1 hour of searching and analyzing an adaptive part, I have concluded that it IS NOT POSSIBLE to find the assembly where the adaptivity was created.

DO NOT USE adaptivity unless you have a storeroom full of aspirin when it is time to edit and resolve links later.

This has got to be the must frustrating functions ever created.


It is the most abused function by new users thinking it'll solve all their problem.

Make everything adaptive and the cat can be alive, dead, half dead, just born, in hell, in heaven at the same time.

Tom.DiGregorio2DPCZ6
Contributor
Contributor

I know no one at autodesk cares but I performed a test.

I created a two part assembly and made one of the parts adaptive.

Then from the adaptive part, I was able to open the other part, or the assembly.

At this point it is obvious that the adaptive part knows the path where the assembly is located.

Closed files and then renamed the assembly and all was broken.

Why can't the adaptive part tell me the last known location and name of the assembly where the adaptive link was located? If I knew the name, then it would be likely I find the original fails.

0 Likes

Frederick_Law
Mentor
Mentor

Maybe able to find it with iLogic or VB.

I've adaptive turned off for over 20 years.

And I don't try to fix someone else's adaptive.

If I need to, I'll redo the part.

 

Sometime, you can edit the sketch.  Remove the "projected" constrain and remove adaptive.

Tom.DiGregorio2DPCZ6
Contributor
Contributor

Did not think of trying VB, never used iLogic.

My project has a time constraint and no time for a science project. 

There was a hole in a part that was located using adaptivity and my goal was to determine what that hole was for to determine if I can delete it.

If I knew the name of the assembly, then I could find the file in our server.

I looked at the model file using notepad and found that the adaptive information is encoded. 

It is beyond incomprehensible that Inventor cannot tell me the name of the assembly and last known location.

If and when I have the time I will do Autodesk's job and try to find the file path with VB.

0 Likes

Frederick_Law
Mentor
Mentor

You don't really need a VBA program to find.

Make a program, set break point.

Just debug, break and look through the objects.

0 Likes

jearhart082
Explorer
Explorer

I was just dealing with the same issue of not knowing where an adaptive reference came from. 

I believe I found the solution.

 

Open a part or assembly that has adaptivity turned on, find the adaptive feature in the model tree (i.e. an extrusion), expand the feature drop down to show the sketch that was used to create the feature, then expand the drop down for the sketch that shows the adaptive references that were used to make the sketch. Right-click on any of the adaptive references to pull up a menu, from the right-click menu select the option that says "Open Parent Assembly". This will open the assembly that was used to create the adaptive part/assembly that is in question. From the right-click menu you can also select "Open References" this will open up the specific part that was referenced in the assembly to create the part/assembly in question.

0 Likes

NigelHay
Advisor
Advisor
Nice one, that works.
0 Likes

Tom.DiGregorio2DPCZ6
Contributor
Contributor

That does not work if the parent assembly no longer exists such as being moved from the original location, renamed, or deleted.

If Inventor told us what the file name was and were it was located then maybe it could be found and relinked.