I'm creating a rather complicated (for me, at least) assembly, which is symmetrical about a central plane. A section of this assembly is a sub-assembly with a number of rigid joints and a revolute. The sub-assembly is attached to the main assembly by a pair of cylindrical joints which allow it to slide along a guide rail. I selected all the components of the sub-assembly and mirrored them about the central plane. Trouble is, the mirrored sub-assembly has lost all of it's joint definitions. I tried including the joints in the mirroring operation, but it didn't work.
Is there a way to achieve my objective of mirroring, joints and all?
Solved! Go to Solution.
Solved by jeff_strater. Go to Solution.
unfortunately, no, mirroring components does not mirror the joints. The reason for this is primarily that Fusion does not support a mirror transform in the joint/assembly world. The math gets all weird when you try to mix right and left handed coordinate systems together. So, today, the joints are not created on the mirrored copy. You'll have to go in and manually create them, picking the correct geometry to get the behavior you want. Sorry...
You would expect the mirrored component to simply follow the original. You know, because it's a mirror? No need for recreating all the joints, just recompute the mirror operation. This is another one of those things that baffles me about Fusion.
C|
@kb9ydn wrote:
You would expect the mirrored component to simply follow the original. You know, because it's a mirror? No need for recreating all the joints, just recompute the mirror operation. This is another one of those things that baffles me about Fusion.
C|
I think that is a baffling oversimplification.
@TrippyLighting wrote:
@kb9ydn wrote:
You would expect the mirrored component to simply follow the original. You know, because it's a mirror? No need for recreating all the joints, just recompute the mirror operation. This is another one of those things that baffles me about Fusion.
C|
I think that is a baffling oversimplification.
Perhaps. I will admit that comment was made somewhat flippantly.
But my point (simplistic as it may be) is that when you think about mirroring an "assembly", it is reasonable to expect that the mirror be persistent, such that if you move one of the original components later, the mirrored copy would also move in order to maintain the mirroring. It's exactly like what you see when you look in an actual mirror. But this is not what Fusion does. What Fusion does is to make opposite handed copies of the selected components at a specific point in time. And that's it. After that point moving any of the components will essentially break the mirror.
I'm not saying Fusion is doing it wrong. In some situations it might be useful or even preferred. It just feels less intuitive than the way a mirror work in real life.
C|
I accepted the limitation as a solution and then defined the required as-built joints to complete the mirroring. But I do consider it to be a surprising limitation.
I'm with kb9ydn on this one. I think it ought to be possible - and not seriously complex - to mirror the component's attributes, including Joints, etc. Clearly the operations were done on the original component and its sub-components, so it should be possible at least to re-play those operations onto the new components etc. created by the Mirror Component operation.
Obviously I don't know the internal technical details in F360's data structures and operations. As a maths graduate with 40+ years in IT, I suspect it's operations are often matrix based. But logically and analytically, if you can perform the operations on the original component (and its contents) then it ought to be possible to perform them on the new mirrored components too. Unless there's a 'constraint' of somekind that breaks an operation (e.g. a missing construction, etc.) - but that consequence could be flagged up at the time and the User given the choice of how to proceed - Revert(abort the mirroring) OR Skip the failed operation and continue.
I do have a suspicion (which I'll try to submit with evidence soon) that for Components the internal data structure and operations are flawed... That could prevent further enhancements to Component handling... But that's for a later post.
I can certainly appreciate the desire for this functionality, no argument there. But, regardless of how simple this seems, it is not. The main reason has to do with the nature of the transform used in a mirror operation. Joints in Fusion rely on an internal coordinate system (the Joint Origin object is really a little coordinate system) Including a mirror component in the transform results in a left-handed coordinate system, and the joint solver is just not prepared to handle such coordinate systems. It is not an unsolvable problem, definitely, but it is a bigger project to do this. At the moment, the priority of this large project just does not justify the amount of fundamental work that would be involved.
@jeff_strater wrote:I can certainly appreciate the desire for this functionality, no argument there. But, regardless of how simple this seems, it is not. The main reason has to do with the nature of the transform used in a mirror operation. Joints in Fusion rely on an internal coordinate system (the Joint Origin object is really a little coordinate system) Including a mirror component in the transform results in a left-handed coordinate system, and the joint solver is just not prepared to handle such coordinate systems. It is not an unsolvable problem, definitely, but it is a bigger project to do this. At the moment, the priority of this large project just does not justify the amount of fundamental work that would be involved.
So because I'm curious I have to ask: how does Inventor handle this? Unless I'm mistaken it uses a similar constraint system to Solidworks, where mirrored components always follow the originals in a mirrored fashion. Does that system also require left handed coordinate systems or does it operate in a different way?
C|
Hello @jeff.strater, and thanks for your reply and explanation.
I've no knowledge/experience of Inventor, so cannot address your "I'm curious" question.
Unfortunately I've no IT experience with the internals of CAD systems either, so don't know what's involved at depth. We'll have to live with the limitations of Mirror Component for now and do the missing bits manually in F360 after the bodies etc. have mirrored. But we can, and that works - presumably resulting in 'RH' expressed joints that F360 handles ok.
Best regards, Ian.
@kb9ydn - good point about Inventor. Because Inventor uses assembly constraints (they have joints as well, more on that in a minute), it is much easier to mirror those constraints. If you have a Mate constraint between two planes, it is very simple to copy that constraint to a mirrored version of the part, because a plane is still a plane in both. There is no coordinate system involved.
What I don't know is how Inventor works with mirroring of its own version of joints. I'll have to try that when I get back to the office next week.
It also could be that Inventor, as a 20 year old product, has just had time to solve the harder problems that Fusion has not yet been able to solve. It's not that this is an impossible problem to solve. As we say, this is an MMOP problem (mere matter of programming).
I would be interested in hearing from the community how much this comes up in their work. for me the answer is zero. If this is only an occasional problem, I can see why AD doesn't put a high priority on it. But maybe others are modeling things where this comes up with some regularity?
@laughingcreek wrote:
I would be interested in hearing from the community how much this comes up in their work. for me the answer is zero. If this is only an occasional problem, I can see why AD doesn't put a high priority on it. But maybe others are modeling things where this comes up with some regularity?
None.
My day job develop manufacturing automation concepts. I've never mirrored an assembly in production work. I've asked our Mechanical Engineers Engineers who detail design machinery with multiple thousand of components is SolidWorks every day.
In my quick-&-dirty concepts I can do that in Fusion 360 usually without penalty and because I know what I can get away with ... most of the time.
Mirroring components in Fusion 360 usually messes up the BOM instance counter
In my private and freelance work I never mirror a component to avoid unintended consequences. The timeline can be quite unforgiving if you figure out too late that mirroring caused a problem and then all your perceived efficiency gains are rather quickly out the door.
@laughingcreek wrote:I would be interested in hearing from the community how much this comes up in their work. for me the answer is zero. If this is only an occasional problem, I can see why AD doesn't put a high priority on it. But maybe others are modeling things where this comes up with some regularity?
In my 10 or so years of making custom built testing and production equipment, I would say the need to mirror assemblies comes up occasionally, but not quite frequently. Usually it's when I'm designing something that has a row of "stations" where something is happening and I want to have another row of stations next to it that are opposite handed. The majority of the time I'm not creating opposite handed parts, but just the same parts arranged in mirrored positions. Normally I prefer the mirrored parts to stay put, but honestly the most important things are having a correct visual representation of the model and accurate parts counts for BsOM.
There have been a handful of times when I've wanted to create mirrored assemblies with real opposite handed parts, and have them be independently functional. In those cases though I've not used mirror at the assembly level, but instead mirrored the individual components internally (using what are called "configurations" in Solidworks, which Fusion doesn't have an equivalent to) and assembled them into assemblies that have also have their own right and left "configurations". This way a subassembly can be either right or left handed by simply selecting which version you want. Managing the mates and configurations to do this can be quite an intense exercise in larger assemblies. Fortunately the simpler dumb mirror method above is usually good enough.
TL;DR: No, this is not something that is super important, at least for me. I'll admit that it's the semantics that bothers me as much as anything. Once the "mirrored" parts are out of position, they are no longer "mirrored", and for whatever reason that bugs me. 😁
C|
I've completed my "survey" of our 5 senior mechanical design engineers (all with 20+ years experience in 3D CAD) and in our company this is not a recommended workflow for a number of reasons.
@TrippyLighting wrote:I've completed my "survey" of our 5 senior mechanical design engineers (all with 20+ years experience in 3D CAD) and in our company this is not a recommended workflow for a number of reasons.
Hey @TrippyLighting ,
Would you mind elaborating on that a bit? What specifically is not recommended and why? That's fair amount of experience and I'm curious what they have to say.
C|
@kb9ydn - I did a bit of research. Onshape, which has a Joints model very similar to Fusions (for interesting reasons...), also does not copy Joints to mirrored components. Part of that is just the way Onshape is organized - the Mirror Components command is in the "Part Studio", but Joints are in the "Assembly" workspace. But, I also suspect that the coordinate system would also make it hard to mirror Joints as it does in Fusion.
Inventor does support mirroring Joints, so it is definitely possible to do this, FWIW
@jeff_strater wrote:
...Onshape, which has a Joints model very similar to Fusions (for interesting reasons)....
inquiring minds want to know!
@laughingcreek wrote:
@jeff_strater wrote:
...Onshape, which has a Joints model very similar to Fusions (for interesting reasons)....
inquiring minds want to know!
Same here!
Wherever you use a centric vise in your setup, you have a need for a mirror joint. I would say this happens VERY often in todays method of machining, when everything is going to 5 axis. I am a Solidworks expert, and I find the lack of this functionality in Fusion 360 very frustrating.
I recommend Fusion 360 developers to familiarize themselves with the QML language used by Qt for describing the GUI of applications. Roughly speaking, QML does the same thing as Fusion 360; it enables the creation of components, their parameterization, assembly into a whole, and allows for the assembly of interfaces both top-down and bottom-up. Creating relationships between elements, between their dimensions, basically everything Fusion 360 needs. However, I have the impression that someone had an idea in QML of how to do this in an incredibly simple way. I sincerely recommend familiarizing yourselves with it, as you may draw some interesting conclusions that might help improve your tool. I think what Fusion 360 most lacks is the ability to assign identifiers to components and the ability to easily create relationships between components using parameters, for example, x = element2.x. By entering something as simple as this in the x parameter of element1, it's very easy to create relationships in QML, and I really miss something like this in Fusion 360.
Can't find what you're looking for? Ask the community or share your knowledge.