Clean up code for mass and CG overrides

For component assemblies, set CG to CG of children when overriding mass
Fix handling of "override for children"
This commit is contained in:
JoePfeiffer 2023-11-15 09:13:09 -07:00
parent 98562bcfa7
commit c0b0eab4e6

View File

@ -344,8 +344,6 @@ public class MassCalculation {
} }
} }
this.merge( children );
if (this.config.isComponentActive(component) ){ if (this.config.isComponentActive(component) ){
Coordinate compCM = component.getComponentCG(); Coordinate compCM = component.getComponentCG();
@ -355,27 +353,26 @@ public class MassCalculation {
// setting zero as the CG position means the top of the component, which is component.getPosition() // setting zero as the CG position means the top of the component, which is component.getPosition()
final Coordinate compZero = parentTransform.transform( component.getPosition() ); final Coordinate compZero = parentTransform.transform( component.getPosition() );
if (component.isSubcomponentsOverriddenMass() || component.isSubcomponentsOverriddenCG()) { if (component.isMassOverridden()) {
if (component.isMassive()) { if (!component.isMassive()) {
// if this component mass, merge it in before overriding: compCM = children.getCM();
this.addMass( compCM );
} }
if (component.isSubcomponentsOverriddenMass() && component.isMassOverridden()) { compCM = compCM.setWeight(component.getOverrideMass());
this.setCM( this.getCM().setWeight(component.getOverrideMass()) );
if (component.isSubcomponentsOverriddenMass()) {
children.setCM(children.getCM().setWeight(0));
} }
if (component.isSubcomponentsOverriddenCG() && component.isCGOverridden()) {
this.setCM( this.getCM().setX(compZero.x + component.getOverrideCGX()));
}
}else {
if (component.isMassOverridden()) {
compCM = compCM.setWeight( component.getOverrideMass() );
}
if (component.isCGOverridden()) {
compCM = compCM.setX( compZero.x + component.getOverrideCGX() );
}
this.addMass( compCM );
} }
if (component.isCGOverridden()) {
compCM = compCM.setX( compZero.x + component.getOverrideCGX() );
if (component.isSubcomponentsOverriddenCG()) {
children.setCM(children.getCM().setX(compCM.x));
}
}
this.addMass(compCM);
if(null != analysisMap){ if(null != analysisMap){
final CMAnalysisEntry entry = analysisMap.get(component.hashCode()); final CMAnalysisEntry entry = analysisMap.get(component.hashCode());
if( component instanceof ComponentAssembly) { if( component instanceof ComponentAssembly) {
@ -399,6 +396,8 @@ public class MassCalculation {
// } // }
} }
this.merge( children );
// // vvv DEBUG // // vvv DEBUG
// if( this.config.isComponentActive(component) && 0 < this.getMass() ) { // if( this.config.isComponentActive(component) && 0 < this.getMass() ) {
// System.err.println(String.format( "%s....<< return data @ %s: %s", prefix, component.getName(), this.toCMDebug() )); // System.err.println(String.format( "%s....<< return data @ %s: %s", prefix, component.getName(), this.toCMDebug() ));