What's new

Constraints messed up, now I'm not sure how to fix it.

Konradjustimagine

Senior Member
Hi Everyone,
I was doing some brain storming in Cad and started this file. Everything seems to be constrained so far but Alibre is highlighting several constrains in red. Not sure what the problem is. I'm thinking it might have to do with some of the parts getting created from references to the Assembly ,but again not sure. Any hints at what's going on would be great!
 

Attachments

You can mix interdesign relations with regular constraints but if any fail (especially interdesign relations) it'll definitely create chaos. I think you're mixing too many reference conditions which is more prone to unrecoverable failures in Alibre. They start to conflict when updates happen causing features to fail.
 
You can mix interdesign relations with regular constraints but if any fail (especially interdesign relations) it'll definitely create chaos. I think you're mixing too many reference conditions which is more prone to unrecoverable failures in Alibre. They start to conflict when updates happen causing features to fail.
I see; at one point I did have some of the components inch their way to a new positions and distort in shape every time I would regenerate the design. Thanks for the info.

What would be the solution here then. I'm using the existing parts to draw new ones that fit in the odd compound angle openings but then it all starts breaking. What sort of workflow would fix this?

- I've thought about making a big loft of the "empty space", then building on top that that and then just hiding that working loft. Not sure this skirts the inter-design vs regular constraints problem.

- A colleague suggested using the three main projections (top and two sides) and pulling any true-dimension from that and just modeling a panel using those values. Then at least the constraints would just be at the assembly level.

- Wait for v29 and use the weldments feature, lol.
 
Don't anchor any parts, that can conflict with constraints. Anchoring or locking can mean different things in CAD. In Alibre anchored parts still influence constraint behavior. Creating reference geometry from an anchored part then building additional constraints and interdesign relations is what I've found to be the root cause of cascading failures. When something is referencing a locked or anchored part or edge that should be added to the list of constraints that are applied (globally) but it does not. We are allowed to create conditions that break constraints upstream. There should be safeguards that prevent those actions or tools to fix them. So, your assembly may have a working configuration, but Alibre is failing to resolve the constraints. In other CAD apps these issues are handled better through diagnostic tools or more robust constraint solving.

If you need the plywood to be anchored, then create a subassembly to isolate the two constraint results. It might seem like overkill but subassemblies work better in Alibre for reasons that are also beneficial to CAD in general. The plywood should not be included in the constraining of the other parts, that should avoid the over constrained/defined errors.
 
I redid some of the constraints that were failing and got them to resolve. I noticed that you have the base part Anchored rather than constrained. I normally do not anchor any parts since, in my experience, anchoring does cause some issues with later applied constraints.

Here is the repaired file to review how I reconstrained the part.
I am also uploading a script that @idslk created that can be used to constrain the first part of an assembly. It will give an error for not matching the Alibre revision level but I have used it successfully anyway. Maybe @idslk could update it to the latest version of AD.
 

Attachments

- Wait for v29 and use the weldments feature, lol.
Alibre does have part booleans and you can model everything in a single part, then turn that into an assembly. The key to this workflow is that all the math and reference geometry is inside a single part. You can use the part to constrain the individual parts and because everything is inside a single part it's much faster and more reliable vs assembly constraints. Global parameters is a good fit here as well.

Base sketch the system is based on:
1773981431263.png
1773981469786.png
1773981479884.png

To have separate pieces in the part that represent separate bodies or parts you need to add a small gap between features or use part boolean to remove features. The key is having the reference geometry contained inside one file. You could then use that part (FumeHoodWeldingPartReference.AD_PRT) to constrain the assembly parts to.

1773982123400.png

This doesn't address any additional constraint issues as more are made, but subassemblies are still useful there. As HaroldL mentioned there are discussions and workarounds that can help.

Turning that script into an addon is a good idea.
 

Attachments

Creating reference geometry from an anchored part then building additional constraints and interdesign relations is what I've found to be the root cause of cascading failures. When something is referencing a locked or anchored part or edge that should be added to the list of constraints that are applied (globally) but it does not. We are allowed to create conditions that break constraints upstream. There should be safeguards that prevent those actions or tools to fix them.
Thanks you for the insight. As I've been learning and using Alibre I've been discovering it has many quirks that aren't always obvious. I'll consider using sub-assemblies more, I just thought most of my stuff was basic enough not to warrant them.
 
I redid some of the constraints that were failing and got them to resolve. I noticed that you have the base part Anchored rather than constrained. I normally do not anchor any parts since, in my experience, anchoring does cause some issues with later applied constraints.

Thanks Harold,
I've reviewed your changes and see how your method differs. I was stuck on the idea that edge-A had to line up with edge-B as I would assembling the cut pieces I didn't really consider other strategies for doing it virtually. Its really invaluable to be able to see how other people approach problems, especially while learning; Thank you.

I'll check out the script and give it a whirl. :)
 
What sorcery is this?!?

Very interesting. I like this alot.

I'm not sure I follow on using the part Boolean to remove features if I wanted to break things into individual parts though. I tried looking it up in the help files HERE but its doesn't behave the way I need it to, or at least I don't know how you use it properly. I also found THIS but it required the use of a tool which doesn't make sense to me in this instance as everything is contained in one part file already.

Would you be able to elaborate a little more on this method or point me somewhere I can find more information? Many thanks in advance!
 
Last edited:
Assembly performance issues will be easier to fix once they update the codebase. Weldments may solve some of the issues.

A cutter can be used to remove geometry using the same base sketch from what will become the individual parts. This is reusable, you're building a system. I would create a template with everything required as the master then everything is driven by API programs or parameter updates. This all depends on what you need from the parts and assemblies.


1774052741334.png

1774052754430.png
 

Attachments

Assembly performance issues will be easier to fix once they update the codebase. Weldments may solve some of the issues.

A cutter can be used to remove geometry using the same base sketch from what will become the individual parts. This is reusable, you're building a system. I would create a template with everything required as the master then everything is driven by API programs or parameter updates. This all depends on what you need from the parts and assemblies.


View attachment 46677

View attachment 46678
Wow, that's amazing! This really opens up a lot of doors as far as workflow goes. Thanks so much for taking the time to explain your method, your time and effort are greatly appreciated!
 
Configurations can represent parts in assemblies or if you don't need an assembly, you can fake it with part unions. You can still use the part referenced in assemblies to reference individual parts.

1774057793834.png
1774057806642.png

I'm very interested in how weldments and multibodies will work. Will existing parts automatically have support or will that require a "Convert to Weldment" feature for bringing parts over.
 

Attachments

Last edited:
I'm very interested in how weldments and multibodies will work. Will existing parts automatically have support or will that require a "Convert to Weldment" feature for bringing parts over.
+1, also will Weldments have an API (sadly, I doubt it) ? I also know there is no currently discussed output of weldments (from the Live sessions), i.e to drawing and drawing mark-up, etc, but I guess we'll find out in time!
 
It took 3+ hours for @GIOV rewrite (Claude said 8x slower with C#) in C++ to create 500 points. It was running in the background I completely forgot about it, I thought it crashed. Without serious rewriting of core code what complexity will it allow for, combined with regular assemblies. I know C++ won't help with create methods going through COM. It was a test. Batches of 20-50 was faster up to 200 points in a clean file.

It's not COM I keep repeating that. It's Alibre's core code, their implementation on top of the kernel. When I use COM that's what I mean.
 
Back
Top