diff --git a/src/Aardvark.Data.Photometry/IESParser.cs b/src/Aardvark.Data.Photometry/IESParser.cs index 2ad11c9..aa0db3c 100644 --- a/src/Aardvark.Data.Photometry/IESParser.cs +++ b/src/Aardvark.Data.Photometry/IESParser.cs @@ -15,6 +15,9 @@ public static IESData Parse(String filePath) } } + /// + /// Read everything expect the luminous intensity distribution values. + /// public IESData ParseMeta(String filePath) { using (var stream = new FileStream(filePath, FileMode.Open)) diff --git a/src/Aardvark.Data.Photometry/LDTData.cs b/src/Aardvark.Data.Photometry/LDTData.cs index db1d1fc..bf8e0ae 100644 --- a/src/Aardvark.Data.Photometry/LDTData.cs +++ b/src/Aardvark.Data.Photometry/LDTData.cs @@ -70,7 +70,8 @@ public enum LDTItype /// /// Holds the data represented in an EULUMDATA luminaire data file - /// http://www.helios32.com/Eulumdat.htm + /// https://docs.agi32.com/PhotometricToolbox/Content/Open_Tool/eulumdat_file_format.htm + /// https://paulbourke.net/dataformats/ldt/ /// public class LDTData { @@ -90,6 +91,9 @@ public static LDTData FromString(string data) return FromStream(stream); } + /// + /// Read everything expect the luminous intensity distribution values. + /// public static LDTData ParseMeta(string filename) { return new LDTParser().ParseMeta(filename); diff --git a/src/Aardvark.Data.Photometry/LDTParser.cs b/src/Aardvark.Data.Photometry/LDTParser.cs index 727bd07..cfecd7e 100644 --- a/src/Aardvark.Data.Photometry/LDTParser.cs +++ b/src/Aardvark.Data.Photometry/LDTParser.cs @@ -43,17 +43,17 @@ private LDTData ReadMeta(StreamReader sr) // 11-15 ldt.FileName = sr.ReadLine(); ldt.DateUser = sr.ReadLine(); - ldt.LengthLuminaire = ReadIntLine(sr); - ldt.WidthLuminaire = ReadIntLine(sr); - ldt.HeightLuminare = ReadIntLine(sr); + ldt.LengthLuminaire = (int)ReadDoubleLine(sr); // NOTE: allow decimal value, but take integer + ldt.WidthLuminaire = (int)ReadDoubleLine(sr); // NOTE: allow decimal points, but take integer + ldt.HeightLuminare = (int)ReadDoubleLine(sr); // NOTE: allow decimal points, but take integer // 16-20 - ldt.LengthLuminousArea = ReadIntLine(sr); - ldt.WidthLuminousArea = ReadIntLine(sr); - ldt.HeightLuminousAreaC0 = ReadIntLine(sr); - ldt.HeightLuminousAreaC90 = ReadIntLine(sr); - ldt.HeightLuminousAreaC180 = ReadIntLine(sr); + ldt.LengthLuminousArea = (int)ReadDoubleLine(sr); // NOTE: allow decimal points, but take integer + ldt.WidthLuminousArea = (int)ReadDoubleLine(sr); // NOTE: allow decimal points, but take integer + ldt.HeightLuminousAreaC0 = (int)ReadDoubleLine(sr); // NOTE: allow decimal points, but take integer + ldt.HeightLuminousAreaC90 = (int)ReadDoubleLine(sr); // NOTE: allow decimal points, but take integer + ldt.HeightLuminousAreaC180 = (int)ReadDoubleLine(sr); // NOTE: allow decimal points, but take integer // 21-25 - ldt.HeightLuminousAreaC270 = ReadIntLine(sr); + ldt.HeightLuminousAreaC270 = (int)ReadDoubleLine(sr); // NOTE: allow decimal points, but take integer ldt.DownwardFluxFraction = ReadDoubleLine(sr); ldt.LightOutputRatioLuminaire = ReadDoubleLine(sr); ldt.ConversionIntensity = ReadDoubleLine(sr); diff --git a/src/Aardvark.Data.Photometry/RELEASE_NOTES.md b/src/Aardvark.Data.Photometry/RELEASE_NOTES.md index 53b3c10..003e70f 100644 --- a/src/Aardvark.Data.Photometry/RELEASE_NOTES.md +++ b/src/Aardvark.Data.Photometry/RELEASE_NOTES.md @@ -1,3 +1,6 @@ +### 5.3.11 +- Improved robustness of parsing attributes that might have decimal points + ### 5.3.10 - Updated to NET 8 and Aardvark.Base 5.3 - Fixed BuildEquidistantMatrix in case there is full 360° measurement data (#4855) diff --git a/src/Aardvark.Data.Photometry/TextParser.cs b/src/Aardvark.Data.Photometry/TextParser.cs index cee5fa2..e28bbfc 100644 --- a/src/Aardvark.Data.Photometry/TextParser.cs +++ b/src/Aardvark.Data.Photometry/TextParser.cs @@ -29,7 +29,7 @@ protected static double ParseDouble(String s) protected static int ParseInt(String s) { - return (int)Decimal.Parse(s); // NOTE use decimal parsing to not crash with floating point values (could report warning) + return int.Parse(s); } protected String[] StringSplit(String s)