What's new

V22 Assembly Material Bug

Hi All,
Ran into this bug a couple of days into using V22. Submitted it to support and they acknowledge it as a bug but at this point its not important enough to warrant a hot-fix release (I suspect if there are enough people that it is an issue for it will get moved up the list) so we need to wait till V23 (Feb) for a fix for it.

The Bug:
The new material system does not work in assemblies and you cannot override the "Material" field manually on the Part Data page.
That in itself is able to be worked around but a NEW (Opening existing files keeps the existing material) file defaults to "Aluminum - cast hammered"

Wondering if anyone else has run into this and if not how are you handling materials on assemblies differently?

One of the main places we use the material on an assembly would be a weldment.

Also we have the Material showing on our title block and use the same title block for all our drawings right now. Do you run different title blocks for parts and assemblies?

For now we have rolled back to V21 but V22 has some nice improvements (except for the files that we have saved in the new version).
 
The new material system does not work in assemblies and you cannot override the "Material" field manually on the Part Data page.
Hi Daniel -- Then you do not understand, Material Values are assigned to Parts and not to Assemblies (which are made up of Parts). -- Lew
 

JST

Alibre Super User
Hi Daniel -- Then you do not understand, Material Values are assigned to Parts and not to Assemblies (which are made up of Parts). -- Lew

Perhaps neither of you understand.....

A hypothetical: You have an assembly which holds a fuel tank assembly (tank, valve,cap, etc). Now you have a mass that is not terribly easy to model, as the fuel fills the tank, which may be odd shaped. You would need to define "fuel" material, and then do a boolean (perhaps not that easy due to the thin walled tank) to fill it.

Now, I do think that is the "proper" procedure, giving the answers to a number of questions that you need answers for (volume, cg, etc), but I can see why a person might want to change properties on the fuel tank assembly instead, to do a quick and dirty sanity check. Not every quick check during the design process needs an exhaustive and academically correct analysis of every part involved.

yes, there are other ways to do a quick check, of course, and not all of them even need the fuel tank present to do the check. But it is a reasonable thing to want.

There is a conflict here in "CAD land".... The academics want to say that CAD is a DOCUMENTATION tool only, while practical designers claim (with very good reason) that CAD is a DESIGN tool. This is a case where the academic definition clashes with the practical design usage.
 
Last edited:
Lew/JST,
I think that you both make good points.
Hi Daniel -- Then you do not understand, Material Values are assigned to Parts and not to Assemblies (which are made up of Parts). -- Lew
Lew I agree with this, looking at it again weldment's are a bad example they really should be treated as you said.

Another example that one of my colleges pointed out would be a pneumatic cylinder. We currently break the piston and shaft from the body and make an extended and retracted configuration. In this case the "Assembly" is actually a "Part".
We use the Material field for the part number so that when it is used in another assembly we do not need to have an additional BOM table column for vendor part number when it is a mix of manufactured and purchased parts.
Maybe there is a better way of doing this.

A hypothetical: You have an assembly which holds a fuel tank assembly (tank, valve,cap, etc). Now you have a mass that is not terribly easy to model, as the fuel fills the tank, which may be odd shaped. You would need to define "fuel" material, and then do a boolean (perhaps not that easy due to the thin walled tank) to fill it.
We have not been using the analysis part of materials, so this did not really come to mind. But is a cool example. Before V22 we just manually entered the material into the field (not saying this is the ideal, just how we were using it)

---

With all that in mind, even if you say we are never using materials in an assembly. If you use the Material property in your BOM on every assembly created with V22 it will show up not blank but with "Aluminium - cast hammered". If all you could do would be to clear it to blank that would cover the vast majority of the situations.

Thanks for your input it's nice to hear how others approach these things.

Thanks,
Daniel
 

idslk

Alibre Super User
Hello Daniel,

if you only want to have a "self set name" in the material property text field for use in your BOM or text field on a drawing, it could be done with a little script.
It will not set any density or things like that, only the "material text".
Code:
Your_Material_for_title_block = 'Good_Steel'
try:
  ca = CurrentAssembly()
except:
  sys.exit('No assembly')
import clr
clr.AddReferenceToFileAndPath(r'C:\Program Files\Alibre Design\Program\AlibreX.dll')
from AlibreX import ADExtendedDesignProperty
Global.Root.TopmostSession.DesignProperties.ExtendedDesignProperty(ADExtendedDesignProperty.AD_MATERIAL,Your_Material_for_title_block)
print ca.Material

If you are in an assembly you can run this script and it will put "Good_Steel" in your material field...
To change edit the variable in the first script line:
Your_Material_for_title_block = "Your own material name..."

As ever: use the script at your own risk!

Regards
Stefan
 
Hello Daniel,

if you only want to have a "self set name" in the material property text field for use in your BOM or text field on a drawing, it could be done with a little script.
It will not set any density or things like that, only the "material text".
Code:
Your_Material_for_title_block = 'Good_Steel'
try:
  ca = CurrentAssembly()
except:
  sys.exit('No assembly')
import clr
clr.AddReferenceToFileAndPath(r'C:\Program Files\Alibre Design\Program\AlibreX.dll')
from AlibreX import ADExtendedDesignProperty
Global.Root.TopmostSession.DesignProperties.ExtendedDesignProperty(ADExtendedDesignProperty.AD_MATERIAL,Your_Material_for_title_block)
print ca.Material

If you are in an assembly you can run this script and it will put "Good_Steel" in your material field...
To change edit the variable in the first script line:
Your_Material_for_title_block = "Your own material name..."

As ever: use the script at your own risk!

Regards
Stefan

I will try this, I'll spin up a VM with V22 in it to test.
I did try it using this code (C#), The API docs listed designProperties.Material as a Get/Set but it didn't work.
Code:
Console.WriteLine(session.Name);
IADDesignSession designSession = (IADDesignSession)session;
IADDesignProperties designProperties = designSession.DesignProperties;
Console.WriteLine(designProperties.Material);
designProperties.Material = "Welded Aluminum";
Console.WriteLine(designProperties.Material);
Thanks,
Daniel
 
Hello Daniel,

if you only want to have a "self set name" in the material property text field for use in your BOM or text field on a drawing, it could be done with a little script.
It will not set any density or things like that, only the "material text".
Code:
Your_Material_for_title_block = 'Good_Steel'
try:
  ca = CurrentAssembly()
except:
  sys.exit('No assembly')
import clr
clr.AddReferenceToFileAndPath(r'C:\Program Files\Alibre Design\Program\AlibreX.dll')
from AlibreX import ADExtendedDesignProperty
Global.Root.TopmostSession.DesignProperties.ExtendedDesignProperty(ADExtendedDesignProperty.AD_MATERIAL,Your_Material_for_title_block)
print ca.Material

If you are in an assembly you can run this script and it will put "Good_Steel" in your material field...
To change edit the variable in the first script line:
Your_Material_for_title_block = "Your own material name..."

As ever: use the script at your own risk!

Regards
Stefan
Stefan,
This code (converted to C#) worked for me. Might have to make a utility for us to use for now.
Thanks,
Daniel
 

bigseb

Alibre Super User
My understanding was that if you wanted to account for the mass of the fuel in the tank. The "fuel" would have to be part with a density defined and generating that part accurately could be complicated.
That I understood but not his method.
 

simonb65

Alibre Super User
generating that part accurately could be complicated.
Boolean operations are your friend here! Create a solid from the tank boundaries, then remove the tank from the tank boundaries (which leaves you with the contents), extrude cut off the top down to your tank fuel level, assign a density, save as a part. Bring that part into your assembly and constrain inside the tank!
 

bigseb

Alibre Super User
Boolean operations are your friend here! Create a solid from the tank boundaries, then remove the tank from the tank boundaries (which leaves you with the contents), extrude cut off the top down to your tank fuel level, assign a density, save as a part. Bring that part into your assembly and constrain inside the tank!
That's what I would do. And its pretty straightforward too. Thta's why I think I didn't understand what JST was talking about.
 

JST

Alibre Super User
Depends on your accuracy needed. I suppose you could boolean subtract the tank from a solid made from the tank. I thought more in terms of boolean subtracting the tank from a block and then clearing the outside piece.

I find booleans a nuisance. Very useful but clumsy in some ways.
 
Hello Daniel,

if you only want to have a "self set name" in the material property text field for use in your BOM or text field on a drawing, it could be done with a little script.
It will not set any density or things like that, only the "material text".

As ever: use the script at your own risk!

Regards
Stefan

Thank you Stefan! I use the material field in my title block, and having it set for an assembly is problematic. This fixed it until V23.

-TH
 

evandene

Member
Indeed we have an "assign/edit material" bug in V22.

An assembly gets build up with parts around your defined problem to solve, that's clear I hope. Doing so you iterate around geometry, strength, stiffness materials and material treatments, etc. A nice process we all understand. If we can't assign materials to the parts we create during the sometimes hundreds of iteration processes we need to do this sometimes weeks or moths later during the drawings creation process, what creates a 100% source of mistakes.

In previous releases there was 0,0 problems with that. You could assign materials as you go.

If you try to edit material properties in your assy by ==> edit part ==> edit material, you will run in troubles.... even part-names will change all of a sudden and materials are not assigned/changed.

A workaround is:
Do not edit part materials in your assy
Use in your assy the function "edit part in separate window" ==> now you can edit your material in custom materials or alibre materials. When done, kill that window and save your assy, a lot more work but you're.. done.

More work instead of more efficiency is the policy at Alibre I believe.

Have fun.
 

JST

Alibre Super User
So, the bug was "intentional", and has been "partly" undone.

Even in V21 there are some problems editing part entries, which makes doing a quick one-off BOM a bog complicated pain in the "chair interface". And, so now it is worse?

Things are going backward at a fast pace.
 
Top