What's new

Regenerate in Assembly?

TylerDurden

Alibre Super User
The Regenerate tool in the Assembly workspace does not do the same thing as Regenerate All tool in the part workspace... specifically, it does not update the reference geometry associated to features or sketches. The part needs to be directly edited to regenerate the reference geometry.

The example below has five semicircular parts constrained to five points in the disk part. The five points are associated to sketch nodes which should maintain the same distance to the edge of the disk.
2015-11-29_22-15-39.png



But, when the disk diameter is changed via global parameters, the regenerate button in the assembly does not update the associations.
2015-11-29_21-48-18.gif


The part must be edited and regenerated. :-(


This is not a Global Parameters specific issue, it goes back at least to V.2014. It becomes glaring in a Global Parameters setting, since part parameters can be modified without opening the part workspace.

I'm calling this broken. I'm glad I don't have hundreds of parts in my stuff, to regenerate or work around.


Files:
https://dl.dropbox.com/s/if87m4n3aglojz ... isk.AD_GLP
https://dl.dropbox.com/s/8ybtqnv4q2pnvu ... isk.AD_PKG
 

JST

Alibre Super User
Interesting... I have never had ANY "regenerate" function do anything I was interested in having happen. I have always wondered what it was supposed to be for.

I thought it would be good after editing a few subsidiary parts...... But apparently it does not go looking for new versions. It always just re-renders the whole thing with the same parts again, as far as I can tell. So I had to close and re-open the assembly, which I thought regenerate would avoid

Was it supposed to update to include new edits?

If not, then what is it actually for?
 

HaroldL

Alibre Super User
So, have you opened a Support ticket with this issue? That way they can put it on their list of things that might get fixed. Then if it does, they can come out with the fix and call it a version upgrade instead of just an update.
 

TylerDurden

Alibre Super User
I held off submitting a ticket and started this topic to ask the musical question: "Am I wrong to believe it should work the way I think it should?" (In my tiny brain, I figure "regenerate" means um, regenerate.)

I use associated sketches and geometry frequently and want to take the most advantage from Global Parameters; but if this issue is by design, I'll need to rethink my workflow.

I see a few folks having problems with assemblies and wonder if there is a deeper problem such as this.
 

Kyle

Senior Member
TylerDurden,

Thank you for the example files. I've taken a look and there is certainly an issue with regards to Sketch Point/Axis reference geometry. Essentially the issue is that a Sketch Point/Axis is being placed before the sketch itself in Design Explorer. This is why it is not regenerating as you would expect since the Points are regenerated prior to the sketch, and the change in diameter to the sketch does not properly change the location of the points.

I have logged the issue for development. In the meantime you should be able to resolve this by dragging sketch<2> in your part "Disk" above the points in the Design Explorer. This reordering allows the regeneration process to work as expected even in your example with the Global Parameters.
 

JST

Alibre Super User
My "EXPECTATION" is that "Regenerate" should go and get all the parts and *regenerate* the assembly using whatever the current configuration of the parts is. If a part has been edited, I would expect that edit to show up after regeneration.

HOWEVER..... I have never seen that happen.

So I really don't see what the function really does.

Here is what is SAID about it:


Assembly Performance



When editing a part in the context of an assembly the performance and speed of operations may be slightly slower than if it were being edited outside the context of the assembly as a stand-alone part. The reason this may happen is if a part has inter-part relationships then the assembly must re-evaluate these relationships each time a modification is made such as adding dimensions to a sketch, creating a new sketch, or creating a new feature. Inter-design relationships are dependencies that one part has on other parts. For example, when an edge of a feature is projected with the Maintain Associativity option enabled into another part to use it to create a feature in the second part, they will have an inter-design relationship. The more inter-design relationships that an assembly has, will increase the required time to fully evaluate a model.



The option to evaluate all of these relationships on-the-fly or all at once can be changed by using the Auto Regeneration tool.



If Auto Regeneration is enabled and when a component is edited using the Edit Here command, the assembly constraints will be evaluated immediately and any changes will be also immediately visible in the workspace. If a change to a component causes assembly constraints to fail then these failed constraints will be displayed when returning to the root assembly. The Assembly Constraint Error dialog box will not open in this situation.

When a component is edited using the Edit in Separate Window command, the assembly constraints will be evaluated immediately and the changes will be made in the workspace. If a change to a component causes any of the assembly constraints to fail then these failed constraints will be immediately shown in the Design Explorer. The Assembly Constraint Error dialog box will open in this situation, although it can be turned off if desired.



If Auto Regeneration is disabled when a component is edited using the Edit Here command, the assembly constraints and the inter-design constraints will only be reevaluated and displayed when returning to the root assembly.

When a component is edited using the Edit in Separate Window command, the assembly constraints and the inter-design constraints will only be re-evaluated when returning to the root assembly and after the assembly has been manually regenerated.


It looks as if the function only works if the edit is invoked inside the assembly, via edit here or edit in separate window. I am not quite certain what the "return to root assembly " stuff means.... but it seems that regenerate only occurs in reality when the assembly is closed and re-opened. That's not what I would have expected, but....
 

dwc

Alibre Super User
I think you are missing something fundimental JST.
If you open parts files, change them and save them while your assembly is open you will need to close the assembly and open it again to update the assembly.
If, however, you edit a part within an assembly, using edit here or edit in a separate window, the regenerate works as claimed.
If you have never seen the return to root assembly then you have never edited within the assembly as that is how you get back to your assmebly after editing the part.
In end effect I never edit a part itself but open the assembly and edit the part from there.
That is not always the way I want to work, but I know in that case that I will need to reopen the assembly otherwise.
Don
 

NateLiquidGravity

Alibre Super User
There is a hidden Super Regenerate feature accessible in assembly mode only by pressing Ctrl+Shift+F5 at the same time. I've been told this will fully regenerate all the parts in the open assembly and then the assembly. I've found it sometimes gets messed up on configurations - only updating the default/first configuration fully.

This currently will not - nor will any regen - reload parts/subassemblies/etc. from the filesystem or m-files/ vault. Also this currently will not - nor will any regen - bring in parts/subassemblies/etc. that were opened separately.
 

TylerDurden

Alibre Super User
Hi Kyle, thanks for taking a look and finding the workaround. I noticed that earlier placement of the points in the history, but it didn't occur to me that it would interfere with the regeneration.

Nate, thanks for the tip on the hidden option, I tried the two key combinations, but forgot to try the three key combinations. :oops:
 

JST

Alibre Super User
dwc said:
....
If you have never seen the return to root assembly then you have never edited within the assembly as that is how you get back to your assmebly after editing the part.
...


I "edit here" ALL THE TIME. I use the "project to sketch" from that to transfer locations. I don't usually edit the part from there, I just don't like that, I like to be SURE what window my commands are going to....... And I used to have enough issues with GMD crashing that I wanted to avoid overloading it with layers of operations. If it crashed in an "edit here" I didn't know what condition the parts would be left in.

Didn't notice that a function was called that, though. Don't know that I even use that command, since I always save it in the process, and IIRC that brings you back anyway.

They Should not call that a regenerate, though.... with it so limited in what it does, it is not much use , really, and is not a "real regen".

There should be no issue with having a regen that DOES bring in any parts with a more recent edit than what's open..... It would not have to re-create the editor, etc, just run through the parts and render. I believe other CAD systems do have that. It could be a bit shorter than a close and re-open cycle. What GMD has is only of limited use.

What GMD has is actually a "re-render" function, effectively.
 

JST

Alibre Super User
Yes, I checked my recollection, and if you save after editing, (and who would NOT do that?) you are automatically returned to the main/root assembly. I guess a command to do it is useful in certain cases, I just have not needed it.
 
Kyle said:
Essentially the issue is that a Sketch Point/Axis is being placed before the sketch itself in Design Explorer. This is why it is not regenerating as you would expect since the Points are regenerated prior to the sketch, and the change in diameter to the sketch does not properly change the location of the points.
This is an example of the precedence issue about which I have been "complaining" for several years. A Reference Point/Axis defined within a Sketch must take its definition from the Sketch (especially if one is using Equation Editor values to define it/them)! [In addition to Reference Point/Axis definition, we also need a (if you will) Drawing Point/Axis definition that will create said geometry as Drawing accessible geometry!] Such geometry has to "follow" the Sketch in which it is defined or the hierarchy of precedence is broken.
 

JST

Alibre Super User
dwc said:
I think you are missing something fundimental JST.
If you open parts files, change them and save them while your assembly is open you will need to close the assembly and open it again to update the assembly.
If, however, you edit a part within an assembly, using edit here or edit in a separate window, the regenerate works as claimed.
If you have never seen the return to root assembly then you have never edited within the assembly as that is how you get back to your assmebly after editing the part.
In end effect I never edit a part itself but open the assembly and edit the part from there.
That is not always the way I want to work, but I know in that case that I will need to reopen the assembly otherwise.
Don

I don't see that quite so black and white as you do.

Unless there is a system like "vault", "soucesafe" etc involved, there is, or should be no particular distinction between local and "stored".

What you are implying, and accepting, is that if I store something from a separate window, it goes some "other " place than if I store it from within the assembly session itself. In other words, it is NOT actually stored on the hard disk, or at least not where it came from, it is ONLY stored in "session space". That does not seem to be the case in reality, stores from within the session go to the normal directory.

It is intuitively obvious that UNTIL they are stored, they DO exist only in "session space", in RAM, and are volatile. That is certainly the case, as with virtually ANY other program ever written. No surprises there.

Now, it seems also obvious that if you edit something within the session, that it should immediately appear in that form. That is what you want, presumably, or why did you do that, unless you are trying to store it elsewhere in a changed form under a new name (a "save as" operation). In the case of a "save as", obviously the session ought not to update to the new form. (Assuming a save-as even works from that mode, I have never tried it as far as I know). And it would seem easier and less prone to errors to edit it in a completely separate window, independently.

Which leads to the question of exactly WHAT the regenerate is supposed to do?

In the old AutoCad, one may zoom and then one may re-generate for the purpose of getting better resolution in the view, eliminate polygon circles, etc, which is essentially a "re-render" operation. A re-generate operation in AutoCad has NO effect on the session contents, it ONLY affects the display. That may or may not happen in GMD, I have never seen any tendency to show me rough renders, probably because I don't turn off the automatic re-gen. Maybe if I did, it would zoom and show polygons, etc.

I find myself wondering where the re-generate in GMD has application? It would seem more important to have a "stop doing that" command, if you insist on doing a "save-as" on a part directly out of the session. Possibly also if you need to edit a couple things and want to delay the re-gen in case one obscures what you want to do. Otherwise it appears to do no more than what one would want done in any case. And in case of a save-as, one would expect the default to be NOT to re-generate the session in that modified form. It could be an option to re-gen in the new form rather than the existing, I suppose.

I would nearly always want it to re-gen, and a "Don't regen this time" checkbox would serve the need for those times when you for some reason did not want it to regen yet.

So, what is it FOR?
 

NateLiquidGravity

Alibre Super User
JST you are missing something fundamental. Autocad is not history based. Geomagic Design is. The Regenerate will go through the history of the current window 1 step at a time and recheck all the calculations. As I described below there is a hidden "Super" Regenerate for doing this to all the parts in an open assembly at once. Also note what I have in red.

NateLiqGrav said:
There is a hidden Super Regenerate feature accessible in assembly mode only by pressing Ctrl+Shift+F5 at the same time. I've been told this will fully regenerate all the parts in the open assembly and then the assembly. I've found it sometimes gets messed up on configurations - only updating the default/first configuration fully.

This currently will not - nor will any regen - reload parts/subassemblies/etc. from the filesystem or m-files/ vault. Also this currently will not - nor will any regen - bring in parts/subassemblies/etc. that were opened separately.
 

JST

Alibre Super User
NateLiqGrav said:
JST you are missing something fundamental. Autocad is not history based. Geomagic Design is. The Regenerate will go through the history of the current window 1 step at a time and recheck all the calculations. As I described below there is a hidden "Super" Regenerate for doing this to all the parts in an open assembly at once. Also note what I have in red.

NateLiqGrav said:
There is a hidden Super Regenerate feature accessible in assembly mode only by pressing Ctrl+Shift+F5 at the same time. I've been told this will fully regenerate all the parts in the open assembly and then the assembly. I've found it sometimes gets messed up on configurations - only updating the default/first configuration fully.

This currently will not - nor will any regen - reload parts/subassemblies/etc. from the filesystem or m-files/ vault. Also this currently will not - nor will any regen - bring in parts/subassemblies/etc. that were opened separately.

I understand the difference between them. I have been using one or the other for 30 years.

I understand the concept of "history based"....... that is obvious on the face of it.

And finally, I see what the regen does and does NOT do as presently configured.

What is not clear is why.... What it DOES do, is to me a necessity..... like being able to extrude a feature, or create a drawing. If you change something in the session, it obviously should appear in its changed form without closing and re-opening. You don't NEED a "special feature" to do that, it should happen unless you defer it for some reason.

The way I would EXPECT a "regenerate" function to work, is to be ABLE TO regenerate using the source data. That is essentially an abbreviated version of close and re-open. But unlike the close and re-open, it does not have to go through all the steps of establishing a new session, nor would it need to access any unchanged parts.

And, given the memory leaks that occur with the combo of GMD and Win7, it would not incur the memory penalty of a close and re-open.

As mentioned, the way it works treats session space as being something way different from data space, despite the fact that all saves and loads are direct from data space. There IS a distinction, but not much of one, it exists really in the MS file system.

There should be a re-gen capability that brings it all up to date with current files without needing to close out the program and re-open the assembly session. That outdated method is so "Microsoft"..... like the infamous "re-boot" MS has always required (and still does) with certain type OS changes.

By re-accessing ONLY the files that are not the same as the ones in use, the time penalty of opening a huge assembly is avoided. I have had assemblies that take several minutes to load, but not a lot of time to display. That is a productivity killer. Yes I could "edit here", but I am doggoned if I will do that on a large and complex assembly. I have been burned too many times "getting fancy" like that, and don't want to risk having to do it all over.
 

NateLiquidGravity

Alibre Super User
I agree that the software should better handle changes in the design when Auto Regenerate is enabled (which is default). There are uses to the Regenerate function especially when Auto Regenerate is disabled. It makes editing parts from the assembly much faster when you don't need it to update with your every move.

That being said you are wanting a new feature to Reload the files in the assembly - like the Reproject Views does for drawings. This is not the same topic.
 

JST

Alibre Super User
NateLiqGrav said:
...

That being said you are wanting a new feature to Reload the files in the assembly - like the Reproject Views does for drawings. This is not the same topic.

The topical relevance is simply that I assumed originally that the regenerate function WAS the thing which you complain is a different topic..... thinking that it would re-generate the rendering from the source files. Obviously it was not, and the explanation contrasted the reality with my assumption.
 

TylerDurden

Alibre Super User
I have another assembly that is working pretty well using global parameters and interdesign constraints, but it will not totally reconfigure until I save the assembly and parts.

I don't have a good example I can share publicly (yet), but I wonder if others have had this experience.
 

JST

Alibre Super User
Yes, I have had a number of functions refuse to work until I saved. I don't recall what, but I do know that it appeared to be a useful, if sometimes surprising, "safety" that made you save to avoid forgetting. In reality, it may be for another reason. I don't know the intent.

The one issue with things like that, and the fact that you may be locked out of some functions until you close pending operations in another window, is that they are are unfortunately not "announced". You have to figure out the root issue and do the appropriate thing by yourself.
 

JST

Alibre Super User
I remembered one of the "no function until a save" cases .... If you edit the affected parts for a section view, and stop editing, then you HAVE TO SAVE before you can do any further editing. The program, without comment, refuses to allow that edit function to work until you have saved the prior edit.
 
Top