Strategy for fixing issues after replacing component

davethomaspilot9V8SL
Advocate
Advocate

Strategy for fixing issues after replacing component

davethomaspilot9V8SL
Advocate
Advocate

I have a complicated design that has many dependencies on a component added early in the design.  That component is still being changed.

 

When I replace the component, it takes literally hours to go through and fix lost projections, objects that started or terminated extrusions, etc.

 

I'm looking for a way to make this less painful.  The best thing I've found is to remove the old model (not delete) and add in the new component.  Then, joining the updated component to the appropriate place in the parent model.

 

I just started doing this and it seems to work.  But, the component model is itself very complicated.  I think every time I do this, the parent model is getting bigger and bigger.

 

Is there a better way?

 

I'm not willing to go back and redo the parent model, but is there a strategy to prevent getting into this situation?  Should I break all the projection links or do something similar?

1 Like
Reply
Accepted solutions (1)
992 Views
20 Replies
Replies (20)

jhackney1972
Consultant
Consultant

You might want to try using External Components (linked) in your assembly.  Then when you need to replace one you can use the Replace Component command.  This command only works on external components but it normally maintains all Joints, that are relevant, without issue.  You have to be smart on the use of Joints so things can be replaced without issue. 

 

You also might consider Configurations, if you have a Subscription License.

John Hackney, Retired
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

EESignature

3 Likes

davethomaspilot9V8SL
Advocate
Advocate

That's exactly what I'm doing.  The component is a linked, external component.  But when I do the replace component, many things break.

 

All sketches that have projections from the replaced component have to be relinked.  That's not so bad.  But, extrudes to or starting from something in the replaced component also need to be redone.   

 

With the "profile missing" in a extrude feature "gone bad", I have trouble figuring out what the extrusion was doing originally.  I got most of them, but some I could never figure out.

 

 

 

 

0 Likes

davethomaspilot9V8SL
Advocate
Advocate

For joints, you said "Use common features between the two models".

 

Can you explain what you mean by this?

 

I typically do the joint on mounting holes.

0 Likes

jhackney1972
Consultant
Consultant

Joints can use features that do not change between component changes, in my video I use the case radii to apply the Joint, this will probably not change in my design where the bolt holes will.

 

You need to gather up one of your assembly models and attach it so the Forum users can determine your modeling style.  You need to explain a few of the problems, in this assembly, to direct those responding to your modeling methods and possible changes.  We blind to your modeling methods.  If you do not know how to attach your Fusion 360 model follow these easy steps. Open the model in Fusion 360, select the File menu, then Export and save as a F3D or F3Z file to your hard drive. Then use the Attachments section, of a forum post, to attach it.

 

 

John Hackney, Retired
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

EESignature

0 Likes

davethomaspilot9V8SL
Advocate
Advocate

The first issue that occurs is rigid groups become errors.

 

First thing I always need to to when bringing in a new component is to make it a rigid group.   If I don't do that, the subcomponents do not move with the rest of the component when I do a join.

 

After doing a replace component, the rigid group becomes an error with no way to fix it that I can see.

 

So,  I roll back the timeline to where the failed rigid group occurred,  and make the replaced component a rigid group.

 

Next, anywhere I did a projection from the old component needs to be relinked.  That's usually not a big deal, but in a few cases I can't figure out where original projection came from.

 

Redefining projection planes isn't too bad--but sometimes I pick the wrong reference face.

 

The worst is extrudes.  I don't have enough information to figure out what the original extrusion actually was, so I have no way to fix it.

 

I think posting the models won't be easy.  There are several levels of hierarchy in each component, with those sub-components each having linked references. 

 

I'm going to try bringing up an earlier version of the model (before the component replacement) and go it and the replaced component version "side by side".  I'll single step through the problematic areas of the timeline. 

 

That way I can figure out what each failing operation is.  

 

 

0 Likes

TrippyLighting
Consultant
Consultant

If you are using linked components and they are still being changed, why is there a need to use the replace component?

When the change to the linked component is changed, you'll get an update notification and simply update the assembly design.

Things still may break, but that is simply the result of changing inputs to references. 


EESignature

0 Likes

davethomaspilot9V8SL
Advocate
Advocate

I don't replace the component--should have said updated to the latest version.

 

My comments about having to do the rigid group were when the original component was first referenced.  That rigid group always breaks when I update to the latest.

 

Same with projected geometries and many extrusions.

 

One of the key purposes of doing the the 3d models is to make sure connectors align in three dimensions.  When they don't, I have to tweak the layout of a pcb, reload the model and update the top level model to see if the change fixed the issue.  

 

 

 

Also, iterating on connectors based on availability.  Substitutes are never exact mechanically.  Insulation height, pin lengths, etc.

 

Doing the fix takes a couple of minutes.  Fixing the model takes too long.  Hence, the workaround by adding the latest version of the component and keeping the stale one there.  Works, but I think it will become unmangeable.

 

As I'm going through the side by side (updated reference versus non update) comparison of the timeline operations I'm keeping track of all the issues.  Here's a typical one:

 

davethomaspilot9V8SL_0-1702062017813.png

 

I figured out what joint failed by looking at the timeline of the model before doing  the update.  It was a joint between connectors.   One connector is a  sub-component of the external component that was updated to the latest version.  The other connector is a also a subcomponent of another model that is externally referenced.  

 

But, I have no way to know that without going back to the model without the updated reference.  I just do a new joint  and delete the original (there's no way to repair the original joint, as far as I can tell.

 

  Here's what the timeline looks like after refreshing the linked component:

 

davethomaspilot9V8SL_1-1702062422205.png

 

I've gone through the repair process several times.  Once I've figured out what each operation actual was, it didn't take long to fix.  First time was almost a full day to repair.  Now I can do it in a half hour.  But, I'm going with the work-around unless I get a better suggestion.

 

0 Likes

davethomaspilot9V8SL
Advocate
Advocate

I have a related issue on one of components that's externally referenced in the top level model.

 

That component (Battery Dock) has an external reference to a pcb assembly (regulator_card POE).   

 

I think its reasonable to attach this one--it only has the one external reference (the pcb).

 

This is a little different in that I have to replace the component, not update to a later version.  At least, I think that's the case.

 

I update the model in Kicad, export a step file, then upload that via F360.  So, while I have a component model with the same name as the external reference, F360 has no way to know this.

 

Is there a way I can make the newly generated 3d model (from the step file) look like an updated version?  If I could do that, would it make any difference wrt the issues I'm having?

 

Let me know if it makes sense to post the .f3z

0 Likes

davethomaspilot9V8SL
Advocate
Advocate

This component gets referenced in a higher level assembly.  It was joined to another component in that top level assembly.

 

The joint in the top assembly was on the pcb connector.  So, it makes sense that joint will fail when I refresh the external link in the top assembly.

 

I guess I could do the joint on something else--originally the pcb and joint came first.  Later, projections were used to design the covers that enclose it.  Hence all the dependencies that get broken when I replace the sub-component.

 

 

0 Likes

jeff_strater
Community Manager
Community Manager

"I don't replace the component--should have said updated to the latest version"

 

Important distinction, certainly.  But, knowing this helps.  In general, you should not see a huge number of failures from a simple edit/update cycle.  However, that will depend a lot on what goes into the edit process.  So, a question:

  • what kinds of edits are you doing in these cycles?  If you are getting this level of failure, you must be doing a LOT of editing.  Can you explain what sort of edits are going on? 

I have some recommendations for what to do/not to do to minimize this.  So, rather than try to to help you fix the errors, I'd rather try to help you prevent the errors in the first place.

 

@Phil.E and I did a class at Autodesk University in 2020 that included some of these tips:  Debugging-Your-Fusion-Design-Lets-Get-Rid-Red-and-Yellow-Features .  There is a video there, and the presentation and handout are also available.  It's an hour class, but only part of it focuses on this topic.  Of course, it is all valuable, IMO, but some areas less so for your question.  The relevant sections start around slide 16.  Some of the content here is intended to help you understand how geometric references are tracked and resolved.  Knowing that will help you make changes that will be less likely to cause downstream failures.

 

The number 1 rule, though is:  Always edit, never delete.  This gets back to how Fusion (or any CAD system - they all use the same basic mechanism) tracks these references.  Geometries all have some kind of identity.  Bodies have a body name, Sketch curves have just an integer that is assigned to them.  Components have a "path" through the hierarchy to help us determine which instance of a component you are referencing (it does matter).  Body geometry is identified with a set of data that can include the identity of its predecessor geometry.  So, for instance, if you draw a triangle, each sketch line will have an ID.  If you extrude that triangle into a prism, each side face of the the prism will have an ID that says "this face came from sketch line X, and was created from extrude Y".  If you then fillet an edge of the prism, that fillet face will have an ID that comes from the edge being filleted (which references the two adjacent faces' IDs), and also includes the ID of the fillet feature. So on, and so on.  So, say you want to make the triangle longer in the extrude direction.  You could delete the extrude and create a new one.  But, since the ID of the extrude is part of the identity of every face of the prism, those faces will all have brand new IDs.  So, any reference to those faces will fail.  Similarly, if you want to edit the triangle, you can edit the sketch.  You could delete one of the lines, and replace it with a longer one.  But, again, the IDs of faces are based on the IDs of sketch objects.  You've created a new one, so all faces from that line will have new IDs.  Instead, if your sketch has dimensions, you can make the triangle longer by just editing the dimension instead of deleting and re-creating parts of it.

 

That's just one example, there are others.  So, maybe if we understand your workflow better, we can help you prevent seeing these errors (or at least see fewer of them) with some improvements to those workflows.

 

Hope this helps


Jeff Strater
Engineering Director
1 Like

davethomaspilot9V8SL
Advocate
Advocate

Thanks for the detailed reply, Jeff.  I'll watch the video.

 

The typical thing I do is to create a step file for a pcb in Kicad.  Then, I upload that step filel into F360 to create a component.     

 

That component is then externally referenced in an (intermediat) parent model.  Projections from the pcb model (with offsets) are used to create an enclosure that will be 3d printed.  Projections of mounting hole locations, connector jack locations, are all used to design the enclosure. 

 

If I change the pcb mechanically (different connector or board outline , for example) I create another step file (as I mentioned above). 

 

In this case, there's no option to "update to latest version".  All I can do is replace component. 

 

But, maybe there's a trick to create a newer version of an existing design using a step file?

 

That's the first scenario.  But, this component that has a pcb as a subcomponent and lots of other stuff is referenced in a parent component.  In that case, I can "update to latest version" rather than replace a component. 

 

That's the case I discussed in the above, just to point out the issue isn't mitigated significantly by updating to latest versus replacing the component.  The core issue remains--the projected geometry for sketches and start/stop objects for extrusions just isn't there anymore.

 

Anyway, it's easy to understand why features break.  I don't know how to avoid it, other than not using any projections that might change.   But, that really "cramps my style'>

 

If I just had a way to figure out what each step that broke was trying to do, it would not be so time consuming.  My "side by side", "step by step" might work out.  

 

 

 

0 Likes

TrippyLighting
Consultant
Consultant

Have you considered changing from KiCad to Fusion Electronics?

In theory, that could make things easier.

If you have looked into it and even tried, how was your experience?


EESignature

1 Like

davethomaspilot9V8SL
Advocate
Advocate

I'm not willing to invest the time required to get skilled in a new set of PCB design tools.

 

Over the decades I've probably used a dozen and got skilled in a few.  It takes a while to really get proficient in using the tools.  Beyond having to always look up how to do this or that.

 

Really, I use Eagle for schematic entry and pcb design.   I mostly just use Kicad to get the step files.  I import the Eagle project into Kicad, then export a step file. 

0 Likes

davethomaspilot9V8SL
Advocate
Advocate

Is there a way to figure out where a projection came from?  

 

Geometry from a projection is highlighted when doing "manage lost projections".  But, it's sometimes hard to figure where the projection came from.

0 Likes

TrippyLighting
Consultant
Consultant

@davethomaspilot9V8SL wrote:

I'm not willing to invest the time required to get skilled in a new set of PCB design tools.

 

Over the decades I've probably used a dozen and got skilled in a few.  It takes a while to really get proficient in using the tools.  Beyond having to always look up how to do this or that.


Agreed, I was initially not trying to convince you to learn another PCB tool. In case you had tried it, I was interested in how it "felt".

 


@davethomaspilot9V8SL wrote:

....

Really, I use Eagle for schematic entry and pcb design.   I mostly just use Kicad to get the step files.  I import the Eagle project into Kicad, then export a step file. 


At this point is where I would recommend to look into Fusion 360 electronics. First, eagle is not being developed anymore and all the development efforts go into Fusion 360 electronics. At some point in time Eagle will be phased out! As you already are using Eagle, the transition should mostly be smooth.

The integration into Fusion 360, if it doesn't completely eliminate the amount of rework you have to do after changes to the PCB, then it will substantially reduce it!
 


EESignature

0 Likes

jeff_strater
Community Manager
Community Manager
Accepted solution

"The typical thing I do is to create a step file for a pcb in Kicad.  Then, I upload that step filel into F360 to create a component"

 

"If I change the pcb mechanically (different connector or board outline , for example) I create another step file (as I mentioned above)."

 

OK, more good information.  That is a much different workflow than I assumed.  I assumed that you were editing the referenced component yourself, in Fusion.  So, a lot of what I said above is not applicable.  If you are re-generating a new STEP file each time, there is a good chance that all of the geometry IDs will be wrong.  It depends a lot on how Kicad generates the STEP file.

 

Also, how are you using the updated STEP file?  Are you using "Upload new version" from the data panel?  I'm not sure exactly what that will do, but it might help (as opposed to merely translating the new STEP file, inserting it, and deleting the old one.

 

There is also a capability in Fusion called "AnyCAD":  How-to-use-AnyCAD-functionality-in-Fusion-360 .  The purpose of this system is to precent the exact kinds of failure you are seeing.  I know it works better with parametric file formats such as Solidworks, but there is at least an attempt to try to prevent reference failures that might be worth checking out.  I have never used this, so I can't really help you, but the documentation should point you in the right direction.

 

If none of that works, then there is nothing to really do but the hard work of repairing all the references, just like you are doing, sorry.

 

I guess the one thing you can do is to minimize your geometry reference, and to use the most stable and largest-grain references you can.  For instance, a face reference is more stable than an edge reference.  And, a body reference is more stable than a face reference, etc.  You can't always do that, but it is worth trying.  Also, only project what you need - I've seen lots of designs that over-project edges in sketching.  Turn off "Auto project edges on reference", because that can generate tons of unneeded and inintended projections without you even knowing it.

 


Jeff Strater
Engineering Director
1 Like

davethomaspilot9V8SL
Advocate
Advocate

Completely missed upload new version!  Maybe that will help.

 

But I think the key is to minimize linked projections and avoid using external objects for starting or ending extrusions.

 

I can do the projection, but then break the link and add dimensions to keep the projected geometry constrained.  When the previously referenced geometry changes, I'll have to fix it.  But I think that's a lot easier than dealing without the downstream issues that occur when the projections are linked.  

 

And, with using referenced objects to start and stop extrusions--I can do that first.  F360 conveniently provides the distance that it extruded.  Then, I can edit the extrusion to do it using offsets instead of maintain the reference to the linked object.

 

Anyway, that seems like it should really help and that's what I'll do going forward.

0 Likes

davethomaspilot9V8SL
Advocate
Advocate

Ok, here's a "BIGGIE" that's easy to do.

 

I start with the imported step file and grounded it.  But, when I replaced the component I forgot to do that.

 

I don't see a feature for "grounding" a component on the timeline.  That's why I missed it when comparing step by step older version versus new.

 

 

Probably, if I modify the external component an upload as later version this issue will go away.

0 Likes

davethomaspilot9V8SL
Advocate
Advocate

Ground was in the timeline, but the ground was done higher in the component hierarchy than I recalled.

0 Likes