diff --git a/src/structure/parallel_structure.ts b/src/structure/parallel_structure.ts index 77c571014c60186edc24533e4b5288b5f2c19914..f65c03b527867e837a1d9517183789bd3e749c67 100644 --- a/src/structure/parallel_structure.ts +++ b/src/structure/parallel_structure.ts @@ -6,6 +6,8 @@ import { ParallelStructureParams } from "./parallel_structure_params"; import { Structure } from "./structure"; import { IParamDefinitionIterator, ParamsEquation, ParamsEquationArrayIterator } from "../param/params-equation"; import { ParamValues } from "../param/param-values"; +import { NamedIterableValues } from "../param/param-value-iterator"; +import { BaseParam } from "../param/param-base"; /** * Interface pour mémoriser le n° d'ouvrage et le paramètre à calculer @@ -275,14 +277,34 @@ export class ParallelStructure extends Nub { // interface IReferencedNub + public getReferencedObject(desc: string): NamedIterableValues { + try { + // analyse n.X + const i: IStructureVarCalc = this.getStructureVarCalc(desc); + return this.structures[i.index].getParameter(i.prm); + } + catch (e) { + try { + // analyse ouvrage[n].X + const i: IStructureVarCalc = this.getStructureVarCalc2(desc); + return this.structures[i.index].result.getExtraResult(i.prm); + } + catch (e) { + } + } + // pas de la forme n.X ou ouvrage[n].X ou erreur sur n ou X + return super.getReferencedObject(desc); + } + public getReferencedParamValues(desc: string): ParamValues { try { - // analyse ouvrage[n].X - const i: IStructureVarCalc = this.getStructureVarCalc2(desc); - return this.structures[i.index].getParameter(i.prm).paramValues; + const ro = this.getReferencedObject(desc); + if (ro instanceof BaseParam) + return ro.paramValues; + return undefined; } catch (e) { - // pas de la forme ouvrage[n].X ou erreur sur n ou X + // pas de la forme n.X ou ouvrage[n].X ou erreur sur n ou X const param = this.getParameter(desc); if (param === undefined) return undefined;