diff --git a/tool/sdg/src/main/java/org/openscience/cdk/layout/StructureDiagramGenerator.java b/tool/sdg/src/main/java/org/openscience/cdk/layout/StructureDiagramGenerator.java index bf0e25c236b..71f6968dbbf 100644 --- a/tool/sdg/src/main/java/org/openscience/cdk/layout/StructureDiagramGenerator.java +++ b/tool/sdg/src/main/java/org/openscience/cdk/layout/StructureDiagramGenerator.java @@ -825,13 +825,21 @@ private void generateFragmentCoordinates(IAtomContainer mol, List limits = new ArrayList<>(); final int numFragments = frags.size(); + // avoid overwriting our state + Set afixbackup = new HashSet<>(afix); + Set bfixbackup = new HashSet<>(bfix); + // generate the sub-layouts for (IAtomContainer fragment : frags) { - setMolecule(fragment, false); + setMolecule(fragment, false, afix, bfix); generateCoordinates(DEFAULT_BOND_VECTOR, true, true); limits.add(GeometryUtil.getMinMax(fragment)); } + // restore + afix = afixbackup; + bfix = bfixbackup; + final int nRow = (int) Math.floor(Math.sqrt(numFragments)); final int nCol = (int) Math.ceil(numFragments / (double) nRow);