Chem4Word / Version3

Version 3 of Chem4Word - A Chemistry Add-In for Microsoft Word
https://www.chem4word.co.uk
Other
51 stars 14 forks source link

Series does not contain a matching element in OoXml rendering #15

Closed MikeWilliams-UK closed 5 years ago

MikeWilliams-UK commented 5 years ago

We have determined that with certain structures the following exception can occur.

System.InvalidOperationException: Series does not contain a matching element
 at System.Linq.Enumerable.First[TSource](IEnumerable`1 source, Func`2 predicate)
 at Chem4Word.Model.Bond.VectorOnSideOfNonHAtomFromStartLigands(Atom startAtom, Atom endAtom, IEnumerable`1 startLigands) in C:\Dev\vsts\chem4word\Version3\src\Chemistry\Chem4Word.Model\Bond.cs:line 686
 at Chem4Word.Model.Bond.GetPrettyDoubleBondVector() in C:\Dev\vsts\chem4word\Version3\src\Chemistry\Chem4Word.Model\Bond.cs:line 559
 at Chem4Word.Model.Bond.GetPlacement() in C:\Dev\vsts\chem4word\Version3\src\Chemistry\Chem4Word.Model\Bond.cs:line 424
 at Chem4Word.Model.Bond.get_ImplicitPlacement() in C:\Dev\vsts\chem4word\Version3\src\Chemistry\Chem4Word.Model\Bond.cs:line 406
 at Chem4Word.Model.Bond.get_Placement() in C:\Dev\vsts\chem4word\Version3\src\Chemistry\Chem4Word.Model\Bond.cs:line 374
 at Chem4Word.Renderer.OoXmlV3.OOXML.Bonds.BondLinePositioner.CreateLines(Bond bond) in C:\Dev\vsts\chem4word\Version3\src\PlugIns\Renderers\OoXmlV3\OOXML\Bonds\BondLinePositioner.cs:line 152
 at Chem4Word.Renderer.OoXmlV3.OOXML.OoXmlRenderer.ProcessBonds(Molecule mol, Progress pb, Int32 moleculeNo) in C:\Dev\vsts\chem4word\Version3\src\PlugIns\Renderers\OoXmlV3\OOXML\OoXmlRenderer.cs:line 633
 at Chem4Word.Renderer.OoXmlV3.OOXML.OoXmlRenderer.GenerateRun() in C:\Dev\vsts\chem4word\Version3\src\PlugIns\Renderers\OoXmlV3\OOXML\OoXmlRenderer.cs:line 169
 at Chem4Word.Renderer.OoXmlV3.OOXML.OoXmlFile.AddPictureFromModel(Body docbody, Model model, String bookmarkName, Options options, IChem4WordTelemetry telemetry, Point topLeft) in C:\Dev\vsts\chem4word\Version3\src\PlugIns\Renderers\OoXmlV3\OOXML\OoXmlFile.cs:line 106
 at Chem4Word.Renderer.OoXmlV3.OOXML.OoXmlFile.CreateFromCml(String cml, String guid, Options options, IChem4WordTelemetry telemetry, Point topLeft) in C:\Dev\vsts\chem4word\Version3\src\PlugIns\Renderers\OoXmlV3\OOXML\OoXmlFile.cs:line 69
 at Chem4Word.Renderer.OoXmlV3.Renderer.Render() in C:\Dev\vsts\chem4word\Version3\src\PlugIns\Renderers\OoXmlV3\Renderer.cs:line 130

This has been narrowed down to an error in the Linq used. .First(...) has been changed to .FirstOrDefault(...) with the possibility of null handled