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)